zrb 0.23.2__py3-none-any.whl → 0.23.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/README.md +84 -8
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/src/routes/+layout.svelte +1 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/vite.config.ts +7 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/__init__.py +0 -0
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/{app.py → app/app.py} +2 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/{app_lifespan.py → app/app_lifespan.py} +1 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/main.py +1 -3
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/register_module.py +1 -1
- zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/register_module.py +1 -1
- zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/register_module.py +1 -1
- zrb/task/base_remote_cmd_task.py +5 -1
- zrb/task/cmd_task.py +11 -3
- zrb/task/docker_compose_task.py +3 -1
- {zrb-0.23.2.dist-info → zrb-0.23.3.dist-info}/METADATA +2 -2
- {zrb-0.23.2.dist-info → zrb-0.23.3.dist-info}/RECORD +19 -18
- /zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/{app_state.py → app/app_state.py} +0 -0
- {zrb-0.23.2.dist-info → zrb-0.23.3.dist-info}/LICENSE +0 -0
- {zrb-0.23.2.dist-info → zrb-0.23.3.dist-info}/WHEEL +0 -0
- {zrb-0.23.2.dist-info → zrb-0.23.3.dist-info}/entry_points.txt +0 -0
@@ -132,12 +132,81 @@ If you want to run PascalZrbAppName on containers, you will also need `Docker` w
|
|
132
132
|
|
133
133
|
You will also need `Pulumi` if you want to deploy PascalZrbAppName into your Kubernetes cluster.
|
134
134
|
|
135
|
+
# High Level Architecture
|
136
|
+
|
137
|
+
PascalZrbAppName heavily uses dependency inversion and avoids dependency injection on the same time.
|
138
|
+
|
139
|
+
This architecture aims to let the developers define and choose new implementations without breaking any existing part.
|
140
|
+
|
141
|
+
To achieve this, we use two elements:
|
142
|
+
|
143
|
+
- __Component__: Containing interface and implementation
|
144
|
+
- __Integration__: Instantiation of the components. Here is where you choose which component implementation to use and how we tailor the implementations.
|
145
|
+
|
146
|
+
Let's see the following example.
|
147
|
+
|
148
|
+
```
|
149
|
+
┌────────────────────────────────────────────┐
|
150
|
+
│ Component │
|
151
|
+
│ ┌───────────────┐ ┌────────────────┐ │
|
152
|
+
│ │ Messagebus │ │ RPC Caller │ │
|
153
|
+
│ │ ┌────────┐ │ │ ┌──────────┐ │ │
|
154
|
+
│ │ │Kafka │ ├─────┼──►│Messagebus├─┼─┼────┐
|
155
|
+
│ │ └────────┘ │ │ └──────────┘ │ │ │
|
156
|
+
│ │ ┌────────┐ │ │ ┌──────────┐ │ │ │
|
157
|
+
┌──┼───┼───┤Rabbitmq│ │ │ │Grpc │ │ │ │
|
158
|
+
│ │ │ └────────┘ │ │ └──────────┘ │ │ │
|
159
|
+
│ │ │ ┌────────┐ │ └────────────────┘ │ │
|
160
|
+
│ │ │ │Other │ ├──┐ │ │
|
161
|
+
│ │ │ └────────┘ │ │ ┌────────────────┐ │ │
|
162
|
+
│ │ └───────────────┘ │ │ RPC Server │ │ │
|
163
|
+
│ │ │ │ ┌──────────┐ │ │ │
|
164
|
+
│ │ └──┼──►│Messagebus├─┼─┼─┐ │
|
165
|
+
│ │ │ └──────────┘ │ │ │ │
|
166
|
+
│ │ │ ┌──────────┐ │ │ │ │
|
167
|
+
│ │ │ │Grpc │ │ │ │ │
|
168
|
+
│ │ │ └──────────┘ │ │ │ │
|
169
|
+
│ │ └────────────────┘ │ │ │
|
170
|
+
│ └────────────────────────────────────────────┘ │ │
|
171
|
+
│ │ │
|
172
|
+
│ ┌────────────────────────────────────────────┐ │ │
|
173
|
+
│ │ Integration │ │ │
|
174
|
+
│ │ ┌──────────┐ │ │ │
|
175
|
+
└──┼─►│Messagebus├───────┬──────────────┐ │ │ │
|
176
|
+
│ └──────────┘ │ │ │ │ │
|
177
|
+
│ ┌────▼─────┐ ┌─────▼────┐ │ │ │
|
178
|
+
│ │RPC Caller│ │RPC Server│◄─┼─┘ │
|
179
|
+
│ └────▲─────┘ └──────────┘ │ │
|
180
|
+
└─────────────────────┼──────────────────────┘ │
|
181
|
+
└───────────────────────────┘
|
182
|
+
```
|
183
|
+
|
184
|
+
__Components__
|
185
|
+
|
186
|
+
In the example, there are three component interfaces:
|
187
|
+
- `Messagebus`
|
188
|
+
- `RPC Caller`
|
189
|
+
- `RPC Server`
|
190
|
+
|
191
|
+
Each interface has several implementations, for example there are two implementation of `RPC Caller`:
|
192
|
+
- `RPCCaller.Messagebus`: RPC Caller implementation that need `Messagebus`.
|
193
|
+
- `RPCCaller.Grpc`: RPC Caller through GRPC, doesn't need any other component.
|
194
|
+
|
195
|
+
__Integration__
|
196
|
+
|
197
|
+
As for integration, we need to choose particular component implementations.
|
198
|
+
|
199
|
+
- `Messagebus`: For Messagebus, we choose `Messagebus.Rabbitmq` component.
|
200
|
+
- `RPC Caller`: For RPC Caller, we choose `RPCCaller.Messasgebus`. This implementation need a `Messagebus` interface.
|
201
|
+
- `RPC Server`: For RPC Server, we choose `RPCServer.Messasgebus`. This implementation need a `Messagebus` interface.
|
202
|
+
|
203
|
+
|
135
204
|
# Directory Structure
|
136
205
|
|
137
206
|
- `docker-compose.yml`: A multi-profile docker-compose file. This helps you to run your application as a monolith/microservices.
|
138
207
|
- `all-module-disabled.env`: Feature flags to be used when you deactivate all modules.
|
139
208
|
- `all-module-enabled.env`: Feature flags to be used when you activate all modules.
|
140
|
-
- `deployment/`: Deployment directory. By default, we put deployment along with the source code to make it easier to maintain/manage. You can later move your deployments to another repository if you
|
209
|
+
- `deployment/`: Deployment directory. By default, we put deployment along with the source code to make it easier to maintain/manage. You can later move your deployments to another repository if you need to do so.
|
141
210
|
- `/helm-charts`: Helm charts for Rabbitmq, Redpanda, and Postgre.
|
142
211
|
- `__main__.py`: Main Pulumi script.
|
143
212
|
- `template.env`: Default configuration for deployment
|
@@ -187,12 +256,19 @@ You will also need `Pulumi` if you want to deploy PascalZrbAppName into your Kub
|
|
187
256
|
|
188
257
|
# Decisions and Constraints
|
189
258
|
|
259
|
+
## Dependency Inversion without Dependency Injection
|
260
|
+
|
261
|
+
We tend to avoid magical dependency inversion unless necessary. We want PascalZrbEntityName to be as explicit as possible. We do this by providing two elements:
|
262
|
+
|
263
|
+
- Component: Containing all interfaces and implementations
|
264
|
+
- Integration: Instantiation of components. This is where we choose and tailor the component's implementation.
|
265
|
+
|
190
266
|
## Frontend
|
191
|
-
|
267
|
+
PascalZrbAppName's front end serves static files built before runtime (not SSR/Server Side Rendering). That's mean.
|
192
268
|
- The SEO is probably not good.
|
193
269
|
- The page load is sensibly good.
|
194
270
|
- We use Svelte for Frontend because it is easier to read/learn compared to React, Vue, or Angular.
|
195
|
-
- At the moment, the
|
271
|
+
- At the moment, the front end use:
|
196
272
|
- Sveltekit
|
197
273
|
- TailwindCSS
|
198
274
|
- DaisyUI
|
@@ -203,7 +279,7 @@ You will also need `Pulumi` if you want to deploy PascalZrbAppName into your Kub
|
|
203
279
|
- Database connection
|
204
280
|
- Database migration
|
205
281
|
- Data manipulation
|
206
|
-
- To create a custom database implementation, you
|
282
|
+
- To create a custom database implementation, you must create one that complies with `core.repo.Repo`.
|
207
283
|
|
208
284
|
## Messaging
|
209
285
|
|
@@ -215,11 +291,11 @@ You will also need `Pulumi` if you want to deploy PascalZrbAppName into your Kub
|
|
215
291
|
- No messaging platform, a.k.a: in memory. This will only work properly if you run PascalZrbAppName as a monolith.
|
216
292
|
- `APP_BROKER_TYPE=mock`
|
217
293
|
- To create custom event handlers, you need to implement two interfaces:
|
218
|
-
- `
|
219
|
-
- `
|
294
|
+
- `component.messagebus.Publisher`
|
295
|
+
- `component.messagebus.Server`
|
220
296
|
|
221
297
|
## RPC
|
222
298
|
|
223
299
|
- Currently, RPC implementation depends on the messaging platforms. It is possible to override this behavior by creating you custom implementation. There are two interfaces you need to override:
|
224
|
-
- `
|
225
|
-
- `
|
300
|
+
- `component.rpc.Caller`
|
301
|
+
- `component.rpc.Server`
|
@@ -3,7 +3,7 @@
|
|
3
3
|
import Navigation from '$lib/components/navigation/Navigation.svelte';
|
4
4
|
import { navData } from '$lib/config/navData';
|
5
5
|
import { getBrand, getTitle } from '$lib/config/app';
|
6
|
-
import logo from '
|
6
|
+
import logo from '@static/logo.png';
|
7
7
|
import "../app.css";
|
8
8
|
|
9
9
|
let appBrand = '';
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/vite.config.ts
CHANGED
@@ -1,9 +1,15 @@
|
|
1
1
|
import { sveltekit } from '@sveltejs/kit/vite';
|
2
2
|
import { defineConfig } from 'vitest/config';
|
3
|
+
import path from 'path';
|
3
4
|
|
4
5
|
export default defineConfig({
|
5
6
|
plugins: [sveltekit()],
|
6
7
|
test: {
|
7
8
|
include: ['src/**/*.{test,spec}.{js,ts}']
|
8
|
-
}
|
9
|
+
},
|
10
|
+
resolve: {
|
11
|
+
alias: {
|
12
|
+
'@static': path.resolve(__dirname, 'static'),
|
13
|
+
},
|
14
|
+
},
|
9
15
|
});
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/__init__.py
ADDED
File without changes
|
@@ -16,7 +16,8 @@ from config import (
|
|
16
16
|
from fastapi import FastAPI, status
|
17
17
|
from fastapi.middleware.cors import CORSMiddleware
|
18
18
|
from fastapi.responses import JSONResponse
|
19
|
-
from integration.app_lifespan import app_lifespan
|
19
|
+
from integration.app.app_lifespan import app_lifespan
|
20
|
+
from integration.app.app_state import app_state
|
20
21
|
from integration.frontend_index import frontend_index_response
|
21
22
|
from schema.frontend_config import FrontendConfig
|
22
23
|
|
@@ -12,7 +12,7 @@ from config import (
|
|
12
12
|
from fastapi import FastAPI
|
13
13
|
from fastapi.staticfiles import StaticFiles
|
14
14
|
from helper.async_task import create_task
|
15
|
-
from integration.app_state import app_state, set_not_ready_on_error
|
15
|
+
from integration.app.app_state import app_state, set_not_ready_on_error
|
16
16
|
from integration.log import logger
|
17
17
|
from integration.messagebus import consumer
|
18
18
|
from integration.rpc import rpc_server
|
@@ -1,9 +1,7 @@
|
|
1
|
-
from integration.app import app
|
1
|
+
from integration.app.app import app
|
2
2
|
from module.auth.register_module import register_auth
|
3
3
|
from module.log.register_module import register_log
|
4
4
|
|
5
|
-
# Make sure app is loaded.
|
6
|
-
# Uvicorn or adny ASGII server you use will pick it up and run the app.
|
7
5
|
assert app
|
8
6
|
register_auth()
|
9
7
|
register_log()
|
@@ -4,7 +4,7 @@ from config import (
|
|
4
4
|
app_enable_event_handler,
|
5
5
|
app_enable_rpc_server,
|
6
6
|
)
|
7
|
-
from integration.app import app
|
7
|
+
from integration.app.app import app
|
8
8
|
from integration.log import logger
|
9
9
|
from integration.messagebus import consumer, publisher
|
10
10
|
from integration.rpc import rpc_caller, rpc_server
|
@@ -4,7 +4,7 @@ from config import (
|
|
4
4
|
app_enable_log_module,
|
5
5
|
app_enable_rpc_server,
|
6
6
|
)
|
7
|
-
from integration.app import app
|
7
|
+
from integration.app.app import app
|
8
8
|
from integration.log import logger
|
9
9
|
from integration.messagebus import consumer, publisher
|
10
10
|
from integration.rpc import rpc_caller, rpc_server
|
@@ -4,7 +4,7 @@ from config import (
|
|
4
4
|
app_enable_rpc_server,
|
5
5
|
app_enable_snake_zrb_module_name_module,
|
6
6
|
)
|
7
|
-
from integration.app import app
|
7
|
+
from integration.app.app import app
|
8
8
|
from integration.log import logger
|
9
9
|
from integration.messagebus import consumer, publisher
|
10
10
|
from integration.rpc import rpc_caller, rpc_server
|
zrb/task/base_remote_cmd_task.py
CHANGED
@@ -82,6 +82,7 @@ class SingleBaseRemoteCmdTask(CmdTask):
|
|
82
82
|
post_cmd: CmdVal = "",
|
83
83
|
post_cmd_path: CmdVal = "",
|
84
84
|
cwd: Optional[Union[str, pathlib.Path]] = None,
|
85
|
+
should_render_cwd: bool = True,
|
85
86
|
upstreams: Iterable[AnyTask] = [],
|
86
87
|
fallbacks: Iterable[AnyTask] = [],
|
87
88
|
on_triggered: Optional[OnTriggered] = None,
|
@@ -118,6 +119,7 @@ class SingleBaseRemoteCmdTask(CmdTask):
|
|
118
119
|
cmd=cmd,
|
119
120
|
cmd_path=cmd_path,
|
120
121
|
cwd=cwd,
|
122
|
+
should_render_cwd=should_render_cwd,
|
121
123
|
upstreams=upstreams,
|
122
124
|
fallbacks=fallbacks,
|
123
125
|
on_triggered=on_triggered,
|
@@ -226,7 +228,8 @@ class BaseRemoteCmdTask(BaseTask):
|
|
226
228
|
cmd_path: CmdVal = "",
|
227
229
|
post_cmd: CmdVal = "",
|
228
230
|
post_cmd_path: CmdVal = "",
|
229
|
-
cwd: Optional[Union[
|
231
|
+
cwd: Optional[Union[JinjaTemplate, pathlib.Path]] = None,
|
232
|
+
should_render_cwd: bool = True,
|
230
233
|
upstreams: Iterable[AnyTask] = [],
|
231
234
|
fallbacks: Iterable[AnyTask] = [],
|
232
235
|
on_triggered: Optional[OnTriggered] = None,
|
@@ -266,6 +269,7 @@ class BaseRemoteCmdTask(BaseTask):
|
|
266
269
|
post_cmd=post_cmd,
|
267
270
|
post_cmd_path=post_cmd_path,
|
268
271
|
cwd=cwd,
|
272
|
+
should_render_cwd=should_render_cwd,
|
269
273
|
upstreams=upstreams,
|
270
274
|
fallbacks=fallbacks,
|
271
275
|
on_triggered=on_triggered,
|
zrb/task/cmd_task.py
CHANGED
@@ -127,7 +127,8 @@ class CmdTask(BaseTask):
|
|
127
127
|
executable: Optional[str] = None,
|
128
128
|
cmd: CmdVal = "",
|
129
129
|
cmd_path: CmdVal = "",
|
130
|
-
cwd: Optional[Union[
|
130
|
+
cwd: Optional[Union[JinjaTemplate, pathlib.Path]] = None,
|
131
|
+
should_render_cwd: bool = True,
|
131
132
|
upstreams: Iterable[AnyTask] = [],
|
132
133
|
fallbacks: Iterable[AnyTask] = [],
|
133
134
|
on_triggered: Optional[OnTriggered] = None,
|
@@ -181,6 +182,7 @@ class CmdTask(BaseTask):
|
|
181
182
|
self._cmd = cmd
|
182
183
|
self._cmd_path = cmd_path
|
183
184
|
self.__set_cwd(cwd)
|
185
|
+
self._should_render_cwd = should_render_cwd
|
184
186
|
self._max_output_size = max_output_line
|
185
187
|
self._max_error_size = max_error_line
|
186
188
|
self._output_buffer: Iterable[str] = []
|
@@ -233,13 +235,14 @@ class CmdTask(BaseTask):
|
|
233
235
|
cmd = self.get_cmd_script(*args, **kwargs)
|
234
236
|
if self._should_show_cmd:
|
235
237
|
self.print_out_dark("Run script: " + self.__get_multiline_repr(cmd))
|
238
|
+
cwd = self._get_cwd()
|
236
239
|
if self._should_show_working_directory:
|
237
|
-
self.print_out_dark("Working directory: " +
|
240
|
+
self.print_out_dark("Working directory: " + cwd)
|
238
241
|
self._output_buffer = []
|
239
242
|
self._error_buffer = []
|
240
243
|
process = await asyncio.create_subprocess_shell(
|
241
244
|
cmd,
|
242
|
-
cwd=
|
245
|
+
cwd=cwd,
|
243
246
|
stdout=asyncio.subprocess.PIPE,
|
244
247
|
stderr=asyncio.subprocess.PIPE,
|
245
248
|
env=self.get_env_map(),
|
@@ -272,6 +275,11 @@ class CmdTask(BaseTask):
|
|
272
275
|
self.set_task_xcom(key="error", value=error)
|
273
276
|
return CmdResult(output, error)
|
274
277
|
|
278
|
+
def _get_cwd(self) -> Union[str, pathlib.Path]:
|
279
|
+
if self._should_render_cwd and isinstance(self._cwd, str):
|
280
|
+
return self.render_str(self._cwd)
|
281
|
+
return self._cwd
|
282
|
+
|
275
283
|
def _should_attempt(self) -> bool:
|
276
284
|
if self._global_state.no_more_attempt:
|
277
285
|
return False
|
zrb/task/docker_compose_task.py
CHANGED
@@ -104,7 +104,8 @@ class DockerComposeTask(CmdTask):
|
|
104
104
|
compose_env_prefix: str = "",
|
105
105
|
setup_cmd: CmdVal = "",
|
106
106
|
setup_cmd_path: CmdVal = "",
|
107
|
-
cwd: Optional[Union[
|
107
|
+
cwd: Optional[Union[JinjaTemplate, pathlib.Path]] = None,
|
108
|
+
should_render_cwd: bool = True,
|
108
109
|
upstreams: Iterable[AnyTask] = [],
|
109
110
|
fallbacks: Iterable[AnyTask] = [],
|
110
111
|
on_triggered: Optional[OnTriggered] = None,
|
@@ -140,6 +141,7 @@ class DockerComposeTask(CmdTask):
|
|
140
141
|
description=description,
|
141
142
|
executable=executable,
|
142
143
|
cwd=cwd,
|
144
|
+
should_render_cwd=should_render_cwd,
|
143
145
|
upstreams=[ensure_zrb_network_task] + upstreams,
|
144
146
|
fallbacks=fallbacks,
|
145
147
|
on_triggered=on_triggered,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: zrb
|
3
|
-
Version: 0.23.
|
3
|
+
Version: 0.23.3
|
4
4
|
Summary: A Framework to Enhance Your Workflow
|
5
5
|
Home-page: https://github.com/state-alchemists/zrb
|
6
6
|
License: AGPL-3.0-or-later
|
@@ -63,7 +63,7 @@ pip install zrb
|
|
63
63
|
Alternatively, you can also use our installation script to install Zrb along with some prerequisites:
|
64
64
|
|
65
65
|
```bash
|
66
|
-
|
66
|
+
bash -c "$(curl -fsSL https://raw.githubusercontent.com/state-alchemists/zrb/main/install.sh)"
|
67
67
|
```
|
68
68
|
|
69
69
|
Check our [installation guide](https://github.com/state-alchemists/zrb/blob/main/docs/installation.md) for more information about the installation methods, including installation as a docker container.
|
@@ -270,7 +270,7 @@ zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/monoli
|
|
270
270
|
zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/test.py,sha256=RuZGmP2OTPZcDOuBX5p-j5TizakkDxEClWhB2Fg64M4,1826
|
271
271
|
zrb/builtin/project/add/fastapp/app/template/_automate/snake_zrb_app_name/test.sh,sha256=ibnoS4kV1p-3JREJKlX2UsziP009zHzP9miPxID1tpk,308
|
272
272
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/.gitignore,sha256=YFrq8n_0yn9FT0XqcPVftHmKj31DSh4ftIY8EvQm0ik,53
|
273
|
-
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/README.md,sha256=
|
273
|
+
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/README.md,sha256=mIE-CBlKzx_wEQdGIuiJbzDX_bCC13ckMnOYU8erHpI,15200
|
274
274
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/all-module-disabled.env,sha256=eIbYiufwRJ-artnA7Cw2y4YzGrPw2XtEb-ih_f4tCuw,56
|
275
275
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/all-module-enabled.env,sha256=gu-tRFyAuSNRZAsxKTvf4ILnI0jH3bLkMhq0YU_tiyc,54
|
276
276
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/deployment/.gitignore,sha256=zF-r8EJ_RaTVRxFpy1mapsxVQV6UAnNcK9q57ynRfig,12
|
@@ -1004,7 +1004,7 @@ zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend
|
|
1004
1004
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/src/lib/error/helper.ts,sha256=FCTH3-UC7AzlmG2QhuMX7-9ztprj3ne6LQ4neYl8xyM,350
|
1005
1005
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/src/routes/+error.svelte,sha256=xG4MQsDZos8yOtL5uXfhgPN5CKCbzVS11Hw9gY8Qj1Q,291
|
1006
1006
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/src/routes/+layout.js,sha256=IepBDK8VpfSwS_akOn9eRqRlv8erCF4VtsBXWvBUlH4,65
|
1007
|
-
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/src/routes/+layout.svelte,sha256=
|
1007
|
+
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/src/routes/+layout.svelte,sha256=WS3RLg3zc2_DxILj4LFhVtvDpIjRIYlvJaddEEt8NY4,584
|
1008
1008
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/src/routes/+page.svelte,sha256=KVlODA_W9yHLBcdDSrMyyWl-j6izvt3Au0X2IYZ9bSs,489
|
1009
1009
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/src/routes/auth/group/+page.svelte,sha256=smFqwX1tjaQLiyziJP8RjWicDFmk696MYkt1IjKzYFU,6285
|
1010
1010
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/src/routes/auth/group/delete/[id]/+page.svelte,sha256=kxMaJ9nCxUf3fZ93Z5nx2ehOo-vZhtL-NhSG26AeEPE,3763
|
@@ -1039,22 +1039,23 @@ zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend
|
|
1039
1039
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/tailwind.config.js,sha256=qj1dclGOmSgT8IBeBhclrKUY2Z_B5P6OSNSoX1lX_mw,203
|
1040
1040
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/tests/test.ts,sha256=Zn47gMooUsmXRYTuDvtVajL07cEwPMhL5pOXeolSnEg,224
|
1041
1041
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/tsconfig.json,sha256=sj7XMYCe4CrB-z91IlhC6-n6PHzM1khXzsAQcWmGR3c,532
|
1042
|
-
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/vite.config.ts,sha256=
|
1042
|
+
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/frontend/vite.config.ts,sha256=lxK3jXIMlMB9vjXRENS6Xz6JmUm8bTVpdIEQAvOvWQs,317
|
1043
1043
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/helper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1044
1044
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/helper/async_task.py,sha256=n3-UFRQKZRc0UbEBm7tibFrwH-Jasg0xZQKXtA6LzBk,490
|
1045
1045
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/helper/conversion.py,sha256=NnEF-Wtt7k4rc45KZRM4jY64B2GEk3v3X3nw058Urw8,763
|
1046
1046
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/helper/migration.py,sha256=LFGwMKRRc9ZzSPNG_pTRewZAzTbOAwdBvFTluzyU_mQ,1858
|
1047
1047
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/helper/value.py,sha256=YFqIswCCd3hbxYeo907UuY6l76OwJMimThYj8MjXE_I,103
|
1048
1048
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1049
|
-
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app.py,sha256=
|
1050
|
-
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/
|
1051
|
-
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/
|
1049
|
+
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1050
|
+
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/app.py,sha256=yRBTYxJkc2f4Q3tb0kZQz_x1dgwScdA1F2uvHbk3f44,3218
|
1051
|
+
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/app_lifespan.py,sha256=E5ng4FJj9Ccbp5cNM-mkbEA-s8ZYjsBhOr2u9f10aO4,1393
|
1052
|
+
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/app/app_state.py,sha256=7WJYWXaagK6_SxxuIFtQfhxJZsLFDUcYXFw3s0spNbs,870
|
1052
1053
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/db_connection.py,sha256=QxBl1qPX4Fb0t6oQJBmpD1tHGe8EYSu_XeDKDHVNPuo,1062
|
1053
1054
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/frontend_index.py,sha256=3mYLOH8Uuv_HshgnOK2QB2PeupV1K8DJKbv2UfTOdug,322
|
1054
1055
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/log.py,sha256=q4dVN43mu0u7u_1bhNwh1YXSR3VX1ZJmZ5tXRc0PZqQ,1838
|
1055
1056
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/messagebus.py,sha256=qSyO7yMuFVAG7kkQ4ZeY53YZ1ReEoDaZ-3CcdlU7tt8,3460
|
1056
1057
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/integration/rpc.py,sha256=ZTJip0Z0Xt6V9WOXm53uQIwA63c87yhr6FdGvqkTBGc,1410
|
1057
|
-
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/main.py,sha256=
|
1058
|
+
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/main.py,sha256=aduwm41KZ1RyxXrY5yi1YyhaGlBlBKjC7ObXeAIA5tA,185
|
1058
1059
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/migrate.py,sha256=M_y2Namnz1WphNEwzSMEzeT6Mf6xG3xCifPfj8oqyQc,232
|
1059
1060
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1060
1061
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1105,7 +1106,7 @@ zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/a
|
|
1105
1106
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/repo/user_repo.py,sha256=u_YWFpich41mGbPd2EiSNE7v2strIzTFhox9nfC2JkE,313
|
1106
1107
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/integration/user.py,sha256=F0PO4QUvZbLRQUiccM1GSgnkqnWdNpY03z4kT1zF8vk,805
|
1107
1108
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/migrate.py,sha256=iNRsDJZHdzmyYEQ0mPsV-yCbNRX8SOk6WbGRucge7pI,576
|
1108
|
-
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/register_module.py,sha256=
|
1109
|
+
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/register_module.py,sha256=dyzUT0TQDIH3o6I4JboaQ5OQF5isfM1tyMOxAbsXgVQ,1158
|
1109
1110
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/register_permission.py,sha256=HgxYbVxXGqiMpmBgwcR8RCeKIzRI7X5GfVrLWc4aZXM,1322
|
1110
1111
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/rpc.py,sha256=Jy-XBBsxAx6rHvz0a9CohQBQs2YF9LkNAIlVzCR6FrQ,711
|
1111
1112
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/auth/schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1133,7 +1134,7 @@ zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/l
|
|
1133
1134
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/integration/repo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1134
1135
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/integration/repo/activity_repo.py,sha256=5arwuyOVrmWs2pNjlpyyKcBpSOOinWIhEZZQBkjTJo0,229
|
1135
1136
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/migrate.py,sha256=0TYLh8WFaaDtBJIyQltw-Qc4ZI-YlgsOEcPQrwaFK8g,429
|
1136
|
-
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/register_module.py,sha256=
|
1137
|
+
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/register_module.py,sha256=cditSUV7duNrXRozHJnTpcoQnj6EmeQNZSabzG7PEBg,1151
|
1137
1138
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/rpc.py,sha256=Q1ClGIxzRij8oHrWKDtkb0fC_BeqCjKBi1xP962MGEc,445
|
1138
1139
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1139
1140
|
zrb/builtin/project/add/fastapp/app/template/src/kebab-zrb-app-name/src/module/log/schema/activity.py,sha256=1Wqitx-6-UjXeFhscrbIystLm-XY2FqbUkxwbJ3sgxA,338
|
@@ -1198,7 +1199,7 @@ zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/src/modul
|
|
1198
1199
|
zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/integration/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1199
1200
|
zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/integration/repo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1200
1201
|
zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/migrate.py,sha256=6gJK8aRNBs52IGdSv93-LcIg2O_03AQSCUJ6PIpNjpg,537
|
1201
|
-
zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/register_module.py,sha256=
|
1202
|
+
zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/register_module.py,sha256=_fBdv1aBLKPTk3rNBVUSlVVtx39EnMFLCvkJU6Zy7LU,1277
|
1202
1203
|
zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/rpc.py,sha256=bj2GMybNAkpauhJJhzG2evkHzckBz-cp600EVLFKBpg,313
|
1203
1204
|
zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1204
1205
|
zrb/builtin/project/add/fastapp/module/template/src/kebab-zrb-app-name/test/snake_zrb_module_name/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1358,7 +1359,7 @@ zrb/shell-scripts/ssh-util.sh,sha256=9lXDzw6oO8HuA4vdbfps_uQMMwKyNYX9fZkZgpK52g8
|
|
1358
1359
|
zrb/task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1359
1360
|
zrb/task/any_task.py,sha256=nKcCj_RbSC-MUSi4rxcIAC2eEFo7uKwODkgglxp3mj8,39346
|
1360
1361
|
zrb/task/any_task_event_handler.py,sha256=AjTC6lIcprutRusNBGl83EifQe4TbZzxdlVIR4ndWN4,524
|
1361
|
-
zrb/task/base_remote_cmd_task.py,sha256=
|
1362
|
+
zrb/task/base_remote_cmd_task.py,sha256=SO26Hu3l_chP03XfPF6b0PN3SVyklwSDYf0n5QOXrYA,12316
|
1362
1363
|
zrb/task/base_task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1363
1364
|
zrb/task/base_task/base_task.py,sha256=rPWMIBNnNtwn0q3VEUDw3HfbSPWtww_lyOA3rUh5aq0,20310
|
1364
1365
|
zrb/task/base_task/component/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1368,9 +1369,9 @@ zrb/task/base_task/component/pid_model.py,sha256=RjJIqOpavucDssnd3q3gT4q8QnP8I9S
|
|
1368
1369
|
zrb/task/base_task/component/renderer.py,sha256=9wP2IW811Ta81IoPWmeQ7yVc7eG-uaSnOVbEyeaOIuk,4439
|
1369
1370
|
zrb/task/base_task/component/trackers.py,sha256=c5xhZ6agICxKPI5Va1sn66_9OqC92ebF5CNhcwVUNUE,2074
|
1370
1371
|
zrb/task/checker.py,sha256=raYNBHgeyEqkyfBRsPPgSV7ukEfMlJOCUn97WQNl6mU,3384
|
1371
|
-
zrb/task/cmd_task.py,sha256=
|
1372
|
+
zrb/task/cmd_task.py,sha256=Q9PwVfltBDm2POdbgdxHp7QDrZCwfnINUFrM3b7QCzk,14837
|
1372
1373
|
zrb/task/decorator.py,sha256=stxrl6aXbuUDK83lVf8m8uni3Ii6egLl0TCR0vxslUQ,3064
|
1373
|
-
zrb/task/docker_compose_task.py,sha256=
|
1374
|
+
zrb/task/docker_compose_task.py,sha256=F5DRAh0p-K2Bsjavf3SxvQphOs_48AF440XVeRIU9Ko,15010
|
1374
1375
|
zrb/task/flow_task.py,sha256=QBOoyIrqc6ToSf3RF8xu8h4yxCWCerUAu2Ba0GxAqgg,5147
|
1375
1376
|
zrb/task/http_checker.py,sha256=y0cWa2t4YtGQr6FWno5sZ6Ej9gQiLDF-Z1kLU1rijRw,5693
|
1376
1377
|
zrb/task/looper.py,sha256=0eM3wEIC_RbThg60MRbK4Az16vt81O5p12cORAYTfnI,1430
|
@@ -1405,8 +1406,8 @@ zrb/task_input/multiline_input.py,sha256=kP2VQ4c42-d6P4RB3AA2eGTrFRLwvFlZxc7vGwj
|
|
1405
1406
|
zrb/task_input/password_input.py,sha256=3xxWHKJCDGbyl_5MmyyB2t_yRjwFKpIIbS10aq73ktk,4370
|
1406
1407
|
zrb/task_input/str_input.py,sha256=0BJP3SQ8y0TRYPrwEy5pYv4N7jq8KlmRSVwByIFqIvI,4360
|
1407
1408
|
zrb/task_input/task_input.py,sha256=WTj_qIQyRs-04-VotjNTcVyIuf6b2afInVoCQHoRmr0,2327
|
1408
|
-
zrb-0.23.
|
1409
|
-
zrb-0.23.
|
1410
|
-
zrb-0.23.
|
1411
|
-
zrb-0.23.
|
1412
|
-
zrb-0.23.
|
1409
|
+
zrb-0.23.3.dist-info/LICENSE,sha256=WfnGCl8G60EYOPAEkuc8C9m9pdXWDe08NsKj3TBbxsM,728
|
1410
|
+
zrb-0.23.3.dist-info/METADATA,sha256=eM9iGAL45HyOcyCDum97BFsMFAQ8NeZi_Y89jL8HFfI,17082
|
1411
|
+
zrb-0.23.3.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
1412
|
+
zrb-0.23.3.dist-info/entry_points.txt,sha256=xTgXc1kBKYhJHEujdaSPHUcJT3-hbyP1mLgwkv-5sSk,40
|
1413
|
+
zrb-0.23.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|