arkitekt-next 0.7.59__tar.gz → 0.8.0__tar.gz
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.
Potentially problematic release.
This version of arkitekt-next might be problematic. Click here for more details.
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/PKG-INFO +17 -17
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/README.md +3 -3
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/__init__.py +12 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/arkitekt.py +1 -11
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/postgres.py +14 -5
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/builders.py +20 -20
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/call/remote.py +1 -7
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/kabinet/utils.py +2 -1
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/types.py +1 -1
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/model.py +1 -1
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/qt/__init__.py +2 -2
- arkitekt_next-0.8.0/arkitekt_next/qt/builders.py +258 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/qt/magic_bar.py +1 -1
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/service_registry.py +2 -2
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/pyproject.toml +14 -20
- arkitekt_next-0.7.59/arkitekt_next/qt/builders.py +0 -95
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/LICENSE +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/__blok__.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/apps/__init__.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/apps/easy.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/apps/next.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/apps/qt.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/apps/service/__init__.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/apps/service/fakts.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/apps/service/fakts_next.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/apps/service/fakts_qt.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/apps/service/grant_registry.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/apps/service/herre.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/apps/service/herre_qt.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/apps/types.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/__init__.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/admin.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/base.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/config.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/fluss.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/gateway.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/internal_docker.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/kabinet.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/livekit.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/lok.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/mikro.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/minio.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/mount.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/namegen.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/orkestrator.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/redis.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/rekuest.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/secret.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/services/__init__.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/services/admin.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/services/config.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/services/db.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/services/gateway.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/services/livekit.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/services/lok.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/services/mount.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/services/name.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/services/redis.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/services/s3.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/services/secret.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/services/socket.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/socket.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/bloks/tailscale.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/__init__.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/call/__init__.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/call/local.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/call/main.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/gen/__init__.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/gen/compile.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/gen/init.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/gen/main.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/gen/watch.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/init/__init__.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/init/main.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/inspect/__init__.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/inspect/main.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/inspect/requirements.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/inspect/templates.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/inspect/variables.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/kabinet/__init__.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/kabinet/build.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/kabinet/init.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/kabinet/main.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/kabinet/publish.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/kabinet/stage.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/kabinet/validate.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/kabinet/wizard.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/manifest/__init__.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/manifest/inspect.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/manifest/main.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/manifest/scopes.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/manifest/version.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/manifest/wizard.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/run/__init__.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/run/dev.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/run/main.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/run/prod.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/commands/run/utils.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/configs/base.yaml +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/constants.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/dockerfiles/vanilla.dockerfile +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/errors.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/inspect.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/io.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/main.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/options.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/schemas/fluss.schema.graphql +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/schemas/gucker.schema.graphql +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/schemas/kabinet.schema.graphql +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/schemas/kluster.schema.graphql +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/schemas/konviktion.schema.graphql +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/schemas/kuay.schema.graphql +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/schemas/mikro.schema.graphql +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/schemas/mikro_next.schema.graphql +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/schemas/napari.schema.graphql +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/schemas/omero_ark.schema.graphql +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/schemas/port.schema.graphql +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/schemas/rekuest.schema.graphql +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/schemas/rekuest_next.schema.graphql +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/schemas/unlok.schema.graphql +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/templates/filter.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/templates/simple.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/texts.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/ui.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/utils.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/validators.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/vars.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/cli/versions/v1.yaml +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/constants.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/qt/assets/dark/gear.png +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/qt/assets/dark/green pulse.gif +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/qt/assets/dark/orange pulse.gif +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/qt/assets/dark/pink pulse.gif +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/qt/assets/dark/red pulse.gif +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/qt/assets/light/gear.png +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/qt/assets/light/green pulse.gif +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/qt/assets/light/orange pulse.gif +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/qt/assets/light/pink pulse.gif +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/qt/assets/light/red pulse.gif +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/qt/types.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/qt/utils.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/tqdm.py +0 -0
- {arkitekt_next-0.7.59 → arkitekt_next-0.8.0}/arkitekt_next/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: arkitekt-next
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.8.0
|
|
4
4
|
Summary: client for the arkitekt_next platform
|
|
5
5
|
License: MIT
|
|
6
6
|
Author: jhnnsrs
|
|
@@ -16,24 +16,24 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
16
16
|
Provides-Extra: all
|
|
17
17
|
Provides-Extra: blok
|
|
18
18
|
Provides-Extra: cli
|
|
19
|
-
Requires-Dist: blok (>=0.0.19) ; (python_version >= "3.
|
|
19
|
+
Requires-Dist: blok (>=0.0.19) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "blok")
|
|
20
20
|
Requires-Dist: cryptography (>=40.0.8) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
|
|
21
|
-
Requires-Dist: dokker (>=0.
|
|
22
|
-
Requires-Dist: fakts (>=0.
|
|
23
|
-
Requires-Dist: fluss-next (>=0.1.
|
|
24
|
-
Requires-Dist: herre (>=0.
|
|
25
|
-
Requires-Dist: kabinet (>=0.1.
|
|
26
|
-
Requires-Dist: koil (>=0.
|
|
27
|
-
Requires-Dist: lovekit (>=0.1.
|
|
28
|
-
Requires-Dist: mikro-next (>=0.1.
|
|
21
|
+
Requires-Dist: dokker (>=1.0.0)
|
|
22
|
+
Requires-Dist: fakts (>=1.0.0)
|
|
23
|
+
Requires-Dist: fluss-next (>=0.1.83) ; extra == "all"
|
|
24
|
+
Requires-Dist: herre (>=1.0.0)
|
|
25
|
+
Requires-Dist: kabinet (>=0.1.22) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "all")
|
|
26
|
+
Requires-Dist: koil (>=1.0.0)
|
|
27
|
+
Requires-Dist: lovekit (>=0.1.10) ; (python_version >= "3.10" and python_version < "4.0") and (extra == "all")
|
|
28
|
+
Requires-Dist: mikro-next (>=0.1.38) ; (python_version >= "3.10" and python_version < "4.0") and (extra == "all")
|
|
29
29
|
Requires-Dist: namegenerator (>=1.0.6) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
|
|
30
30
|
Requires-Dist: netifaces (>=0.11.0) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
|
|
31
|
-
Requires-Dist: reaktion-next (>=0.1.
|
|
32
|
-
Requires-Dist: rekuest-next (>=0.2.
|
|
31
|
+
Requires-Dist: reaktion-next (>=0.1.73) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "all")
|
|
32
|
+
Requires-Dist: rekuest-next (>=0.2.29) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "cli" or extra == "all")
|
|
33
33
|
Requires-Dist: rich-click (>=1.6.1) ; extra == "cli" or extra == "all"
|
|
34
34
|
Requires-Dist: semver (>=3.0.1) ; extra == "cli" or extra == "all"
|
|
35
|
-
Requires-Dist: turms (>=0.
|
|
36
|
-
Requires-Dist: unlok-next (>=0.1.
|
|
35
|
+
Requires-Dist: turms (>=0.6.0) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "cli" or extra == "all")
|
|
36
|
+
Requires-Dist: unlok-next (>=0.1.77) ; python_version >= "3.8" and python_version < "4.0"
|
|
37
37
|
Requires-Dist: watchfiles (>=0.18.1) ; extra == "cli" or extra == "all"
|
|
38
38
|
Description-Content-Type: text/markdown
|
|
39
39
|
|
|
@@ -64,7 +64,7 @@ To understand the idea behind arkitekt_next, you need to understand the idea beh
|
|
|
64
64
|
## Install
|
|
65
65
|
|
|
66
66
|
```bash
|
|
67
|
-
pip install
|
|
67
|
+
pip install arkitekt-next[all]
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
This installs all dependencies for the arkitekt_next platform, inlcuding the arkitekt_next CLI, which can be used to develop and create apps, containerize them and deploy t
|
|
@@ -81,7 +81,7 @@ type annotations, orchestration of real-time (in memoery) workflows, data hostin
|
|
|
81
81
|
To get started create a directory and run
|
|
82
82
|
|
|
83
83
|
```bash
|
|
84
|
-
|
|
84
|
+
arkitekt-next init
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
Which will lead you throught an app creation process.
|
|
@@ -105,7 +105,7 @@ And then connected to a local or remote server by running
|
|
|
105
105
|
Run example:
|
|
106
106
|
|
|
107
107
|
```bash
|
|
108
|
-
|
|
108
|
+
arkitekt-next run dev
|
|
109
109
|
```
|
|
110
110
|
|
|
111
111
|
|
|
@@ -25,7 +25,7 @@ To understand the idea behind arkitekt_next, you need to understand the idea beh
|
|
|
25
25
|
## Install
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
pip install
|
|
28
|
+
pip install arkitekt-next[all]
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
This installs all dependencies for the arkitekt_next platform, inlcuding the arkitekt_next CLI, which can be used to develop and create apps, containerize them and deploy t
|
|
@@ -42,7 +42,7 @@ type annotations, orchestration of real-time (in memoery) workflows, data hostin
|
|
|
42
42
|
To get started create a directory and run
|
|
43
43
|
|
|
44
44
|
```bash
|
|
45
|
-
|
|
45
|
+
arkitekt-next init
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
Which will lead you throught an app creation process.
|
|
@@ -66,7 +66,7 @@ And then connected to a local or remote server by running
|
|
|
66
66
|
Run example:
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
|
-
|
|
69
|
+
arkitekt-next run dev
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
|
|
@@ -11,11 +11,21 @@ try:
|
|
|
11
11
|
from rekuest_next.register import register
|
|
12
12
|
from rekuest_next.agents.hooks import background
|
|
13
13
|
from rekuest_next.agents.hooks import startup
|
|
14
|
+
from rekuest_next.agents.context import context
|
|
15
|
+
from rekuest_next.state.state import state
|
|
16
|
+
from rekuest_next.actors.reactive.api import progress, aprogress
|
|
17
|
+
from rekuest_next.actors.reactive.api import log, alog
|
|
14
18
|
except ImportError as e:
|
|
15
19
|
raise e
|
|
16
20
|
register = missing_install("rekuest_next", e)
|
|
17
21
|
background = missing_install("rekuest_next", e)
|
|
18
22
|
startup = missing_install("rekuest_next", e)
|
|
23
|
+
context = missing_install("rekuest_next", e)
|
|
24
|
+
state = missing_install("rekuest_next", e)
|
|
25
|
+
progress = missing_install("rekuest_next", e)
|
|
26
|
+
aprogress = missing_install("rekuest_next", e)
|
|
27
|
+
log = missing_install("rekuest_next", e)
|
|
28
|
+
alog = missing_install("rekuest_next", e)
|
|
19
29
|
|
|
20
30
|
from .builders import easy, interactive
|
|
21
31
|
from .apps.types import App
|
|
@@ -38,6 +48,8 @@ __all__ = [
|
|
|
38
48
|
"useInstanceID",
|
|
39
49
|
"useUser",
|
|
40
50
|
"next",
|
|
51
|
+
"state",
|
|
52
|
+
"context",
|
|
41
53
|
"background",
|
|
42
54
|
"startup",
|
|
43
55
|
"register_next",
|
|
@@ -43,17 +43,7 @@ class ArkitektBlok:
|
|
|
43
43
|
scale: Optional[TailscaleBlok] = None,
|
|
44
44
|
orkestrator: Optional[OrkestratorBlok] = None,
|
|
45
45
|
):
|
|
46
|
-
|
|
47
|
-
gateway,
|
|
48
|
-
mikro,
|
|
49
|
-
kabinet,
|
|
50
|
-
rekuest,
|
|
51
|
-
fluss,
|
|
52
|
-
gateway,
|
|
53
|
-
internal_engine,
|
|
54
|
-
scale,
|
|
55
|
-
orkestrator,
|
|
56
|
-
)
|
|
46
|
+
pass
|
|
57
47
|
|
|
58
48
|
def build(self, cwd):
|
|
59
49
|
pass
|
|
@@ -64,20 +64,20 @@ class PostgresBlok(BaseModel):
|
|
|
64
64
|
"labels": ["fakts.service=live.arkitekt.postgres"],
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
|
|
68
67
|
if self.build_repo or self.dev:
|
|
69
|
-
mount = init.get_service(MountService).register_mount(
|
|
68
|
+
mount = init.get_service(MountService).register_mount(
|
|
69
|
+
self.host, Repo(self.repo)
|
|
70
|
+
)
|
|
70
71
|
self.build_image["build"] = mount
|
|
71
72
|
else:
|
|
72
73
|
self.build_image["image"] = self.image
|
|
73
74
|
|
|
74
|
-
|
|
75
75
|
def build(self, context: ExecutionContext):
|
|
76
76
|
|
|
77
77
|
self.build_image["environment"]["POSTGRES_MULTIPLE_DATABASES"] = ",".join(
|
|
78
78
|
self.registered_dbs.keys()
|
|
79
79
|
)
|
|
80
|
-
|
|
80
|
+
|
|
81
81
|
context.docker_compose.set_nested(f"services", self.host, self.build_image)
|
|
82
82
|
|
|
83
83
|
def get_options(self):
|
|
@@ -124,4 +124,13 @@ class PostgresBlok(BaseModel):
|
|
|
124
124
|
default=self.dev,
|
|
125
125
|
)
|
|
126
126
|
|
|
127
|
-
return [
|
|
127
|
+
return [
|
|
128
|
+
with_postgres_password,
|
|
129
|
+
skip_build,
|
|
130
|
+
with_user_password,
|
|
131
|
+
with_image,
|
|
132
|
+
with_repo,
|
|
133
|
+
build_repo,
|
|
134
|
+
mount_repo,
|
|
135
|
+
dev,
|
|
136
|
+
]
|
|
@@ -109,7 +109,6 @@ def easy(
|
|
|
109
109
|
requirements=registry.get_requirements(),
|
|
110
110
|
)
|
|
111
111
|
if token:
|
|
112
|
-
print("Using token")
|
|
113
112
|
fakts = build_arkitekt_next_token_fakts(
|
|
114
113
|
manifest=manifest,
|
|
115
114
|
token=token,
|
|
@@ -117,7 +116,6 @@ def easy(
|
|
|
117
116
|
)
|
|
118
117
|
|
|
119
118
|
elif redeem_token:
|
|
120
|
-
print("Using redeem token")
|
|
121
119
|
fakts = build_arkitekt_next_redeem_fakts_next(
|
|
122
120
|
manifest=manifest,
|
|
123
121
|
redeem_token=redeem_token,
|
|
@@ -126,7 +124,6 @@ def easy(
|
|
|
126
124
|
headless=headless,
|
|
127
125
|
)
|
|
128
126
|
else:
|
|
129
|
-
print("Using normal fakts")
|
|
130
127
|
fakts = build_arkitekt_next_fakts_next(
|
|
131
128
|
manifest=manifest,
|
|
132
129
|
url=url,
|
|
@@ -160,8 +157,8 @@ def easy(
|
|
|
160
157
|
return app
|
|
161
158
|
|
|
162
159
|
|
|
163
|
-
|
|
164
|
-
|
|
160
|
+
def interactive(
|
|
161
|
+
identifier: str,
|
|
165
162
|
version: str = "0.0.1",
|
|
166
163
|
logo: Optional[str] = None,
|
|
167
164
|
scopes: Optional[List[str]] = None,
|
|
@@ -174,23 +171,26 @@ def interactive(identifier: str,
|
|
|
174
171
|
app_kind: str = "development",
|
|
175
172
|
registry: Optional[ServiceBuilderRegistry] = None,
|
|
176
173
|
sync_mode: bool = True,
|
|
177
|
-
**kwargs
|
|
174
|
+
**kwargs,
|
|
175
|
+
):
|
|
178
176
|
"""Creates an interactive jupyter app"""
|
|
179
177
|
|
|
180
|
-
app =
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
178
|
+
app = easy(
|
|
179
|
+
identifier=identifier,
|
|
180
|
+
version=version,
|
|
181
|
+
logo=logo,
|
|
182
|
+
scopes=scopes,
|
|
183
|
+
url=url,
|
|
184
|
+
headless=headless,
|
|
185
|
+
log_level=log_level,
|
|
186
|
+
token=token,
|
|
187
|
+
no_cache=no_cache,
|
|
188
|
+
redeem_token=redeem_token,
|
|
189
|
+
app_kind=app_kind,
|
|
190
|
+
registry=registry,
|
|
191
|
+
**kwargs,
|
|
192
|
+
)
|
|
193
|
+
|
|
194
194
|
if sync_mode:
|
|
195
195
|
# When running in an interactive async enironvment, just like
|
|
196
196
|
# in a jupyter notebook, we can opt to run the app in sync mode
|
|
@@ -3,7 +3,6 @@ from arkitekt_next.cli.options import *
|
|
|
3
3
|
import asyncio
|
|
4
4
|
from arkitekt_next.cli.ui import construct_run_panel
|
|
5
5
|
from importlib import import_module
|
|
6
|
-
from rekuest.postmans.utils import arkiuse
|
|
7
6
|
import rich_click as click
|
|
8
7
|
from arkitekt_next.cli.options import *
|
|
9
8
|
import asyncio
|
|
@@ -19,12 +18,7 @@ async def call_app(
|
|
|
19
18
|
arg,
|
|
20
19
|
):
|
|
21
20
|
async with app:
|
|
22
|
-
|
|
23
|
-
hash=hash,
|
|
24
|
-
postman=app.rekuest.postman,
|
|
25
|
-
) as a:
|
|
26
|
-
print(arg)
|
|
27
|
-
print(await a.aassign(kwargs=arg))
|
|
21
|
+
raise NotImplementedError("This is not implemented yet")
|
|
28
22
|
|
|
29
23
|
|
|
30
24
|
@click.command("prod")
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import logging
|
|
1
2
|
from typing import Optional
|
|
2
3
|
import os
|
|
3
4
|
import yaml
|
|
@@ -42,6 +43,6 @@ def validate_flavours(flavours_folder: str, only: Optional[str]):
|
|
|
42
43
|
)
|
|
43
44
|
|
|
44
45
|
else:
|
|
45
|
-
|
|
46
|
+
logging.info(
|
|
46
47
|
f"Found file {dir_name} in flavours folder. Not a valid flavour. Ignoring"
|
|
47
48
|
)
|
|
@@ -9,7 +9,7 @@ to ArkitektNext, and configure settings.
|
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
11
|
from .magic_bar import MagicBar
|
|
12
|
-
from .builders import publicqt
|
|
12
|
+
from .builders import publicqt, devqt
|
|
13
13
|
from .types import *
|
|
14
14
|
|
|
15
|
-
__all__ = ["MagicBar", "publicqt", "QtApp"]
|
|
15
|
+
__all__ = ["MagicBar", "publicqt", "devqt", "QtApp"]
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
from arkitekt_next.apps.service.fakts_next import (
|
|
2
|
+
build_arkitekt_next_redeem_fakts_next,
|
|
3
|
+
)
|
|
4
|
+
from arkitekt_next.apps.service.fakts_qt import build_arkitekt_next_qt_fakts
|
|
5
|
+
from arkitekt_next.apps.service.herre_qt import build_arkitekt_next_qt_herre
|
|
6
|
+
from arkitekt_next.utils import create_arkitekt_next_folder
|
|
7
|
+
from arkitekt_next.model import Manifest
|
|
8
|
+
from arkitekt_next.apps.types import App
|
|
9
|
+
from arkitekt_next.service_registry import (
|
|
10
|
+
ServiceBuilderRegistry,
|
|
11
|
+
check_and_import_services,
|
|
12
|
+
)
|
|
13
|
+
from arkitekt_next.constants import DEFAULT_ARKITEKT_URL
|
|
14
|
+
from qtpy import QtWidgets, QtCore
|
|
15
|
+
from typing import List, Optional
|
|
16
|
+
import os
|
|
17
|
+
import logging
|
|
18
|
+
from typing import List, Optional
|
|
19
|
+
import logging
|
|
20
|
+
import os
|
|
21
|
+
|
|
22
|
+
from arkitekt_next.apps.service.fakts_next import (
|
|
23
|
+
build_arkitekt_next_fakts_next,
|
|
24
|
+
build_arkitekt_next_redeem_fakts_next,
|
|
25
|
+
build_arkitekt_next_token_fakts,
|
|
26
|
+
)
|
|
27
|
+
from arkitekt_next.apps.service.herre import build_arkitekt_next_herre
|
|
28
|
+
from arkitekt_next.utils import create_arkitekt_next_folder
|
|
29
|
+
from arkitekt_next.model import Manifest
|
|
30
|
+
from arkitekt_next.apps.types import App
|
|
31
|
+
from arkitekt_next.service_registry import (
|
|
32
|
+
ServiceBuilderRegistry,
|
|
33
|
+
check_and_import_services,
|
|
34
|
+
)
|
|
35
|
+
from arkitekt_next.constants import DEFAULT_ARKITEKT_URL
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def devqt(
|
|
39
|
+
identifier: str,
|
|
40
|
+
version: str = "0.0.1",
|
|
41
|
+
logo: Optional[str] = None,
|
|
42
|
+
scopes: Optional[List[str]] = None,
|
|
43
|
+
url: str = DEFAULT_ARKITEKT_URL,
|
|
44
|
+
headless: bool = False,
|
|
45
|
+
log_level: str = "ERROR",
|
|
46
|
+
parent: Optional[QtWidgets.QWidget] = None,
|
|
47
|
+
token: Optional[str] = None,
|
|
48
|
+
no_cache: bool = False,
|
|
49
|
+
redeem_token: Optional[str] = None,
|
|
50
|
+
app_kind: str = "development",
|
|
51
|
+
registry: Optional[ServiceBuilderRegistry] = None,
|
|
52
|
+
**kwargs,
|
|
53
|
+
) -> App:
|
|
54
|
+
"""Creates a next app
|
|
55
|
+
|
|
56
|
+
A simple way to create an ArkitektNext Next app, ArkitektNext next apps are
|
|
57
|
+
development apps by default, as they will try to register themselves
|
|
58
|
+
with services that are not yet available in production (such as the
|
|
59
|
+
rekuest_next and mikro_next services). They represent the next generation
|
|
60
|
+
of ArkitektNext apps, and will be the default way to create ArkitektNext apps
|
|
61
|
+
in the future. From here be dragons.
|
|
62
|
+
|
|
63
|
+
A few things to note:
|
|
64
|
+
- The Next builder closely mimics the easy builder, but will use the
|
|
65
|
+
next generation of services (such as rekuest_next and mikro_next)
|
|
66
|
+
and will therefore not be compatible with the current generation.
|
|
67
|
+
|
|
68
|
+
- Next apps will try to establish themselves a "development" apps, by default
|
|
69
|
+
which means that they will be authenticated with the ArkitektNext server on
|
|
70
|
+
a per user basis. If you want to create a "desktop" app, which multiple users
|
|
71
|
+
can use, you should set the `app_kind` to "desktop" TODO: Currently not implemented (use next app for this)
|
|
72
|
+
- The Next builder can also be used in plugin apps, and when provided with a fakts token
|
|
73
|
+
will be able to connect to the ArkitektNext server without any user interaction.
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
Parameters
|
|
77
|
+
----------
|
|
78
|
+
identifier : str
|
|
79
|
+
The apps identifier (should be globally unique, see Manifest for more info)
|
|
80
|
+
version : str, optional
|
|
81
|
+
The version of the app, by default "0.0.1"
|
|
82
|
+
logo : str, optional
|
|
83
|
+
The logo of the app as a public http url, by default None
|
|
84
|
+
scopes : List[str], optional
|
|
85
|
+
The scopes, that this apps requires, will default to standard scopes, by default None
|
|
86
|
+
url : str, optional
|
|
87
|
+
The fakts server that will be used to configure this app, in a default ArkitektNext deployment this
|
|
88
|
+
is the address of the "Lok Service" (which provides the Fakts API), by default DEFAULT_ARKITEKT_URL
|
|
89
|
+
Will be overwritten by the FAKTS_URL environment variable
|
|
90
|
+
headless : bool, optional
|
|
91
|
+
Should we run in headless, mode, e.g printing necessary interaction into the console (will forexample
|
|
92
|
+
stop opening browser windows), by default False
|
|
93
|
+
log_level : str, optional
|
|
94
|
+
The log-level to use, by default "ERROR"
|
|
95
|
+
token : str, optional
|
|
96
|
+
A fakts token to use, by default None
|
|
97
|
+
Will be overwritten by the FAKTS_TOKEN environment variable
|
|
98
|
+
no_cache : bool, optional
|
|
99
|
+
Should we skip caching token, acess-token, by default False
|
|
100
|
+
Attention: If this is set to True, the app will always have to be configured
|
|
101
|
+
and authenticated.
|
|
102
|
+
instance_id : str, optional
|
|
103
|
+
The instance_id to use, by default "main"
|
|
104
|
+
Can be set to a different value, if you want to run multiple intstances
|
|
105
|
+
of the same app by the same user.
|
|
106
|
+
Will be overwritten by the REKUEST_INSTANCE_ID environment variable
|
|
107
|
+
register_reaktion : bool, optional
|
|
108
|
+
Should we register the reaktion extension, by default True
|
|
109
|
+
If set to False, the app will not be able to use the reaktion extension
|
|
110
|
+
(which is necessary for scheduling in app` workflows from fluss)
|
|
111
|
+
app_kind : str, optional
|
|
112
|
+
The kind of app to create, by default "development"
|
|
113
|
+
Can be set to "desktop" to create a desktop app, that can be used by multiple users.
|
|
114
|
+
|
|
115
|
+
Returns
|
|
116
|
+
-------
|
|
117
|
+
NextApp
|
|
118
|
+
A built app, that can be used to interact with the ArkitektNext server
|
|
119
|
+
"""
|
|
120
|
+
registry = registry or check_and_import_services()
|
|
121
|
+
|
|
122
|
+
url = os.getenv("FAKTS_URL", url)
|
|
123
|
+
token = os.getenv("FAKTS_TOKEN", token)
|
|
124
|
+
|
|
125
|
+
manifest = Manifest(
|
|
126
|
+
version=version,
|
|
127
|
+
identifier=identifier,
|
|
128
|
+
scopes=scopes if scopes else ["openid"],
|
|
129
|
+
logo=logo,
|
|
130
|
+
requirements=registry.get_requirements(),
|
|
131
|
+
)
|
|
132
|
+
if token:
|
|
133
|
+
fakts = build_arkitekt_next_token_fakts(
|
|
134
|
+
manifest=manifest,
|
|
135
|
+
token=token,
|
|
136
|
+
url=url,
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
elif redeem_token:
|
|
140
|
+
fakts = build_arkitekt_next_redeem_fakts_next(
|
|
141
|
+
manifest=manifest,
|
|
142
|
+
redeem_token=redeem_token,
|
|
143
|
+
url=url,
|
|
144
|
+
no_cache=no_cache,
|
|
145
|
+
headless=headless,
|
|
146
|
+
)
|
|
147
|
+
else:
|
|
148
|
+
fakts = build_arkitekt_next_fakts_next(
|
|
149
|
+
manifest=manifest,
|
|
150
|
+
url=url,
|
|
151
|
+
no_cache=no_cache,
|
|
152
|
+
headless=headless,
|
|
153
|
+
client_kind=app_kind,
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
herre = build_arkitekt_next_herre(fakts=fakts)
|
|
157
|
+
|
|
158
|
+
params = kwargs
|
|
159
|
+
|
|
160
|
+
create_arkitekt_next_folder(with_cache=True)
|
|
161
|
+
|
|
162
|
+
try:
|
|
163
|
+
from rich.logging import RichHandler
|
|
164
|
+
|
|
165
|
+
logging.basicConfig(level=log_level, handlers=[RichHandler()])
|
|
166
|
+
except ImportError:
|
|
167
|
+
logging.basicConfig(level=log_level)
|
|
168
|
+
|
|
169
|
+
app = App(
|
|
170
|
+
fakts=fakts,
|
|
171
|
+
herre=herre,
|
|
172
|
+
manifest=manifest,
|
|
173
|
+
services=registry.build_service_map(
|
|
174
|
+
fakts=fakts, herre=herre, params=params, manifest=manifest
|
|
175
|
+
),
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
app.enter()
|
|
179
|
+
|
|
180
|
+
return app
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def publicqt(
|
|
184
|
+
identifier: str,
|
|
185
|
+
version: str = "latest",
|
|
186
|
+
logo: Optional[str] = None,
|
|
187
|
+
scopes: Optional[List[str]] = None,
|
|
188
|
+
log_level: str = "ERROR",
|
|
189
|
+
registry: Optional[ServiceBuilderRegistry] = None,
|
|
190
|
+
parent: Optional[QtWidgets.QWidget] = None,
|
|
191
|
+
beacon_widget: Optional[QtWidgets.QWidget] = None,
|
|
192
|
+
login_widget: Optional[QtWidgets.QWidget] = None,
|
|
193
|
+
settings: Optional[QtCore.QSettings] = None,
|
|
194
|
+
**kwargs,
|
|
195
|
+
) -> App:
|
|
196
|
+
"""Public QtApp creation
|
|
197
|
+
|
|
198
|
+
A simple way to create an Arkitekt app with a public grant (allowing users to sign
|
|
199
|
+
in with the application ) utlizing a retrieve grant (necessating a previous configuration
|
|
200
|
+
of the application on the server side)
|
|
201
|
+
|
|
202
|
+
Args:
|
|
203
|
+
identifier (str): The apps identifier
|
|
204
|
+
version (str, optional): The apps verion. Defaults to "latest".
|
|
205
|
+
parent (QtWidget, optional): The QtParent (for the login and server select widget). Defaults to None.
|
|
206
|
+
|
|
207
|
+
Returns:
|
|
208
|
+
Arkitekt: The Arkitekt app
|
|
209
|
+
"""
|
|
210
|
+
|
|
211
|
+
registry = registry or check_and_import_services()
|
|
212
|
+
|
|
213
|
+
settings = settings or QtCore.QSettings("arkitekt_next", f"{identifier}:{version}")
|
|
214
|
+
|
|
215
|
+
manifest = Manifest(
|
|
216
|
+
version=version,
|
|
217
|
+
identifier=identifier,
|
|
218
|
+
scopes=scopes if scopes else ["openid"],
|
|
219
|
+
logo=logo,
|
|
220
|
+
requirements=registry.get_requirements(),
|
|
221
|
+
)
|
|
222
|
+
|
|
223
|
+
fakts = build_arkitekt_next_qt_fakts(
|
|
224
|
+
manifest=manifest,
|
|
225
|
+
beacon_widget=beacon_widget,
|
|
226
|
+
parent=parent,
|
|
227
|
+
settings=settings,
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
herre = build_arkitekt_next_qt_herre(
|
|
231
|
+
manifest,
|
|
232
|
+
fakts=fakts,
|
|
233
|
+
login_widget=login_widget,
|
|
234
|
+
parent=parent,
|
|
235
|
+
settings=settings,
|
|
236
|
+
)
|
|
237
|
+
|
|
238
|
+
params = kwargs
|
|
239
|
+
|
|
240
|
+
try:
|
|
241
|
+
from rich.logging import RichHandler
|
|
242
|
+
|
|
243
|
+
logging.basicConfig(level=log_level, handlers=[RichHandler()])
|
|
244
|
+
except ImportError:
|
|
245
|
+
logging.basicConfig(level=log_level)
|
|
246
|
+
|
|
247
|
+
app = App(
|
|
248
|
+
fakts=fakts,
|
|
249
|
+
herre=herre,
|
|
250
|
+
manifest=manifest,
|
|
251
|
+
services=registry.build_service_map(
|
|
252
|
+
fakts=fakts, herre=herre, params=params, manifest=manifest
|
|
253
|
+
),
|
|
254
|
+
)
|
|
255
|
+
|
|
256
|
+
app.enter()
|
|
257
|
+
|
|
258
|
+
return app
|
|
@@ -76,9 +76,9 @@ def check_and_import_services() -> ServiceBuilderRegistry:
|
|
|
76
76
|
rekuest_module.init_services(service_builder_registry)
|
|
77
77
|
logging.info(f"Called init_service function from {module_name}")
|
|
78
78
|
else:
|
|
79
|
-
|
|
79
|
+
logging.debug(f"No init_services function in {module_name}.__arkitekt__. Skipping.")
|
|
80
80
|
except Exception as e:
|
|
81
|
-
|
|
81
|
+
logging.critical(f"Failed to call init_services for {module_name}: {e}")
|
|
82
82
|
traceback.print_exc()
|
|
83
83
|
|
|
84
84
|
# Check local modules in the current working directory
|