arkitekt-next 0.9.3__tar.gz → 0.10.1__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.10.1/.gitignore +148 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/PKG-INFO +39 -39
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/README.md +2 -2
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/__blok__.py +2 -2
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/__init__.py +38 -37
- arkitekt_next-0.10.1/arkitekt_next/apps/__init__.py +3 -0
- arkitekt_next-0.9.3/arkitekt_next/apps/types.py → arkitekt_next-0.10.1/arkitekt_next/apps/protocols.py +22 -9
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/apps/service/fakts_next.py +15 -30
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/base_models.py +3 -3
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/admin.py +0 -2
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/base.py +2 -0
- arkitekt_next-0.10.1/arkitekt_next/bloks/channel.py +27 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/minio.py +1 -1
- arkitekt_next-0.10.1/arkitekt_next/bloks/services/channel.py +12 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/builders.py +9 -8
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/call/main.py +2 -1
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/call/remote.py +4 -1
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/inspect/requirements.py +3 -8
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/inspect/templates.py +6 -9
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/run/dev.py +3 -4
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/run/utils.py +1 -1
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/ui.py +2 -4
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/utils.py +1 -1
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/constants.py +0 -2
- arkitekt_next-0.10.1/arkitekt_next/init_registry.py +102 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/qt/builders.py +2 -2
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/qt/magic_bar.py +1 -1
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/qt/types.py +1 -1
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/service_registry.py +52 -46
- arkitekt_next-0.10.1/arkitekt_next/tqdm.py +106 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/utils.py +7 -6
- arkitekt_next-0.10.1/pyproject.toml +136 -0
- arkitekt_next-0.9.3/arkitekt_next/apps/__init__.py +0 -3
- arkitekt_next-0.9.3/arkitekt_next/cli/configs/base.yaml +0 -867
- arkitekt_next-0.9.3/arkitekt_next/init_registry.py +0 -178
- arkitekt_next-0.9.3/arkitekt_next/tqdm.py +0 -45
- arkitekt_next-0.9.3/pyproject.toml +0 -134
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/LICENSE +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/apps/service/__init__.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/apps/service/fakts_qt.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/apps/service/grant_registry.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/apps/service/herre.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/apps/service/herre_qt.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/apps/service/local_fakts.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/__init__.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/alpaka.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/arkitekt.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/config.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/elektro.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/fluss.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/gateway.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/internal_docker.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/kabinet.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/kraph.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/livekit.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/local_sign.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/lok.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/mikro.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/mount.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/namegen.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/ollama.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/orkestrator.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/postgres.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/redis.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/rekuest.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/secret.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/self_signed.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/services/__init__.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/services/admin.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/services/certer.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/services/config.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/services/db.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/services/gateway.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/services/livekit.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/services/lok.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/services/mount.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/services/name.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/services/ollama.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/services/redis.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/services/s3.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/services/secret.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/services/socket.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/socket.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/bloks/tailscale.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/__init__.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/call/__init__.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/call/local.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/gen/__init__.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/gen/compile.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/gen/init.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/gen/main.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/gen/watch.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/init/__init__.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/init/main.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/inspect/__init__.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/inspect/main.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/inspect/variables.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/kabinet/__init__.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/kabinet/build.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/kabinet/init.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/kabinet/io.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/kabinet/main.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/kabinet/publish.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/kabinet/stage.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/kabinet/types.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/kabinet/utils.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/kabinet/validate.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/manifest/__init__.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/manifest/inspect.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/manifest/main.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/manifest/scopes.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/manifest/version.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/run/__init__.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/run/main.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/commands/run/prod.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/constants.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/dockerfiles/vanilla.dockerfile +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/errors.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/inspect.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/io.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/main.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/options.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/schemas/fluss.schema.graphql +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/schemas/gucker.schema.graphql +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/schemas/kabinet.schema.graphql +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/schemas/kluster.schema.graphql +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/schemas/konviktion.schema.graphql +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/schemas/kuay.schema.graphql +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/schemas/mikro.schema.graphql +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/schemas/mikro_next.schema.graphql +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/schemas/napari.schema.graphql +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/schemas/omero_ark.schema.graphql +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/schemas/port.schema.graphql +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/schemas/rekuest.schema.graphql +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/schemas/rekuest_next.schema.graphql +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/schemas/unlok.schema.graphql +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/templates/filter.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/templates/simple.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/texts.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/types.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/validators.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/vars.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/cli/versions/v1.yaml +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/qt/__init__.py +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/qt/assets/dark/gear.png +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/qt/assets/dark/green pulse.gif +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/qt/assets/dark/orange pulse.gif +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/qt/assets/dark/pink pulse.gif +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/qt/assets/dark/red pulse.gif +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/qt/assets/light/gear.png +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/qt/assets/light/green pulse.gif +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/qt/assets/light/orange pulse.gif +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/qt/assets/light/pink pulse.gif +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/qt/assets/light/red pulse.gif +0 -0
- {arkitekt_next-0.9.3 → arkitekt_next-0.10.1}/arkitekt_next/qt/utils.py +0 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
**/__pycache__
|
|
4
|
+
*.py[cod]
|
|
5
|
+
*$py.class
|
|
6
|
+
*.pyc
|
|
7
|
+
*.DS_Store
|
|
8
|
+
|
|
9
|
+
# C extensions
|
|
10
|
+
*.so
|
|
11
|
+
|
|
12
|
+
# Distribution / packaging
|
|
13
|
+
.Python
|
|
14
|
+
build/
|
|
15
|
+
develop-eggs/
|
|
16
|
+
dist/
|
|
17
|
+
downloads/
|
|
18
|
+
eggs/
|
|
19
|
+
.eggs/
|
|
20
|
+
lib/
|
|
21
|
+
lib64/
|
|
22
|
+
parts/
|
|
23
|
+
sdist/
|
|
24
|
+
var/
|
|
25
|
+
wheels/
|
|
26
|
+
pip-wheel-metadata/
|
|
27
|
+
share/python-wheels/
|
|
28
|
+
*.egg-info/
|
|
29
|
+
.installed.cfg
|
|
30
|
+
*.egg
|
|
31
|
+
|
|
32
|
+
# PyInstaller
|
|
33
|
+
# Usually these files are written by a python script from a template
|
|
34
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
35
|
+
|
|
36
|
+
*.spec
|
|
37
|
+
|
|
38
|
+
# Installer logs
|
|
39
|
+
pip-log.txt
|
|
40
|
+
pip-delete-this-directory.txt
|
|
41
|
+
|
|
42
|
+
# Unit test / coverage reports
|
|
43
|
+
htmlcov/
|
|
44
|
+
.tox/
|
|
45
|
+
.nox/
|
|
46
|
+
.coverage
|
|
47
|
+
.coverage.*
|
|
48
|
+
.cache
|
|
49
|
+
nosetests.xml
|
|
50
|
+
coverage.xml
|
|
51
|
+
*.cover
|
|
52
|
+
*.py,cover
|
|
53
|
+
.hypothesis/
|
|
54
|
+
.pytest_cache/
|
|
55
|
+
cover/
|
|
56
|
+
|
|
57
|
+
# Translations
|
|
58
|
+
*.mo
|
|
59
|
+
*.pot
|
|
60
|
+
|
|
61
|
+
# Django stuff:
|
|
62
|
+
*.log
|
|
63
|
+
local_settings.py
|
|
64
|
+
db.sqlite3
|
|
65
|
+
db.sqlite3-journal
|
|
66
|
+
|
|
67
|
+
# Flask stuff:
|
|
68
|
+
instance/
|
|
69
|
+
.webassets-cache
|
|
70
|
+
|
|
71
|
+
# Scrapy stuff:
|
|
72
|
+
.scrapy
|
|
73
|
+
|
|
74
|
+
# Sphinx documentation
|
|
75
|
+
docs/_build/
|
|
76
|
+
|
|
77
|
+
# PyBuilder
|
|
78
|
+
.pybuilder/
|
|
79
|
+
target/
|
|
80
|
+
|
|
81
|
+
# Jupyter Notebook
|
|
82
|
+
.ipynb_checkpoints
|
|
83
|
+
|
|
84
|
+
# IPython
|
|
85
|
+
profile_default/
|
|
86
|
+
ipython_config.py
|
|
87
|
+
|
|
88
|
+
# pyenv
|
|
89
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
90
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
91
|
+
# .python-version
|
|
92
|
+
|
|
93
|
+
# pipenv
|
|
94
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
95
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
96
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
97
|
+
# install all needed dependencies.
|
|
98
|
+
#Pipfile.lock
|
|
99
|
+
|
|
100
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
|
101
|
+
__pypackages__/
|
|
102
|
+
|
|
103
|
+
# Celery stuff
|
|
104
|
+
celerybeat-schedule
|
|
105
|
+
celerybeat.pid
|
|
106
|
+
|
|
107
|
+
# SageMath parsed files
|
|
108
|
+
*.sage.py
|
|
109
|
+
|
|
110
|
+
# Environments
|
|
111
|
+
.env
|
|
112
|
+
.venv
|
|
113
|
+
env/
|
|
114
|
+
venv/
|
|
115
|
+
ENV/
|
|
116
|
+
env.bak/
|
|
117
|
+
venv.bak/
|
|
118
|
+
|
|
119
|
+
# Spyder project settings
|
|
120
|
+
.spyderproject
|
|
121
|
+
.spyproject
|
|
122
|
+
|
|
123
|
+
# Rope project settings
|
|
124
|
+
.ropeproject
|
|
125
|
+
|
|
126
|
+
# mkdocs documentation
|
|
127
|
+
/site
|
|
128
|
+
|
|
129
|
+
# mypy
|
|
130
|
+
.mypy_cache/
|
|
131
|
+
.dmypy.json
|
|
132
|
+
dmypy.json
|
|
133
|
+
|
|
134
|
+
# Pyre type checker
|
|
135
|
+
.pyre/
|
|
136
|
+
|
|
137
|
+
# pytype static type analyzer
|
|
138
|
+
.pytype/
|
|
139
|
+
|
|
140
|
+
# Cython debug symbols
|
|
141
|
+
cython_debug/
|
|
142
|
+
|
|
143
|
+
# static files generated from Django application using `collectstatic`
|
|
144
|
+
media
|
|
145
|
+
export
|
|
146
|
+
static_collected
|
|
147
|
+
data
|
|
148
|
+
token.temp
|
|
@@ -1,58 +1,59 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: arkitekt-next
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.10.1
|
|
4
4
|
Summary: client for the arkitekt_next platform
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Requires-Python:
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
Author-email: jhnnsrs <jhnnsrs@gmail.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Requires-Python: <4,>=3.11
|
|
9
|
+
Requires-Dist: click>=8.2.0
|
|
10
|
+
Requires-Dist: dokker>=2.1.2
|
|
11
|
+
Requires-Dist: fakts-next>=1.2.2
|
|
12
|
+
Requires-Dist: herre-next>=1.2.0
|
|
13
|
+
Requires-Dist: koil>=2.0.4
|
|
14
|
+
Requires-Dist: rath>=3.4
|
|
15
15
|
Provides-Extra: all
|
|
16
|
+
Requires-Dist: fluss-next>=0.2.0; extra == 'all'
|
|
17
|
+
Requires-Dist: kabinet>=0.2.0; extra == 'all'
|
|
18
|
+
Requires-Dist: mikro-next>=0.2.0; extra == 'all'
|
|
19
|
+
Requires-Dist: reaktion-next>=0.2.0; extra == 'all'
|
|
20
|
+
Requires-Dist: rekuest-next>=0.3.1; extra == 'all'
|
|
21
|
+
Requires-Dist: rich-click>=1.6.1; extra == 'all'
|
|
22
|
+
Requires-Dist: semver>=3.0.1; extra == 'all'
|
|
23
|
+
Requires-Dist: turms>=0.8.2; extra == 'all'
|
|
24
|
+
Requires-Dist: unlok-next>=0.2.0; extra == 'all'
|
|
25
|
+
Requires-Dist: watchfiles>=0.18.1; extra == 'all'
|
|
16
26
|
Provides-Extra: alpaka
|
|
27
|
+
Requires-Dist: alpaka>=0.2.0; extra == 'alpaka'
|
|
17
28
|
Provides-Extra: blok
|
|
29
|
+
Requires-Dist: blok>=0.1.0; extra == 'blok'
|
|
18
30
|
Provides-Extra: cli
|
|
31
|
+
Requires-Dist: rekuest-next>=0.3.1; extra == 'cli'
|
|
32
|
+
Requires-Dist: turms>=0.8.2; extra == 'cli'
|
|
19
33
|
Provides-Extra: elektro
|
|
34
|
+
Requires-Dist: elektro>=0.5.0; extra == 'elektro'
|
|
20
35
|
Provides-Extra: extended
|
|
36
|
+
Requires-Dist: alpaka>=0.2.0; extra == 'extended'
|
|
37
|
+
Requires-Dist: kraph>=0.2.0; extra == 'extended'
|
|
21
38
|
Provides-Extra: fluss
|
|
39
|
+
Requires-Dist: fluss-next>=0.2.0; extra == 'fluss'
|
|
22
40
|
Provides-Extra: kabinet
|
|
41
|
+
Requires-Dist: kabinet>=0.4.0; extra == 'kabinet'
|
|
23
42
|
Provides-Extra: kraph
|
|
43
|
+
Requires-Dist: kraph>=0.2.0; extra == 'kraph'
|
|
24
44
|
Provides-Extra: lovekit
|
|
45
|
+
Requires-Dist: lovekit>=0.2.0; extra == 'lovekit'
|
|
25
46
|
Provides-Extra: mikro
|
|
47
|
+
Requires-Dist: mikro-next>=0.3.1; extra == 'mikro'
|
|
26
48
|
Provides-Extra: reaktion
|
|
49
|
+
Requires-Dist: reaktion-next>=0.2.0; extra == 'reaktion'
|
|
27
50
|
Provides-Extra: rekuest
|
|
28
|
-
|
|
51
|
+
Requires-Dist: rekuest-next>=0.6.0; extra == 'rekuest'
|
|
29
52
|
Provides-Extra: unlok
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist: blok (>=0.1.0) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "blok")
|
|
32
|
-
Requires-Dist: cryptography (>=40.0.8) ; (python_version >= "3.9") and (extra == "blok")
|
|
33
|
-
Requires-Dist: dokker (>=1.0.0)
|
|
34
|
-
Requires-Dist: elektro (>=0.5.0) ; (python_version >= "3.9") and (extra == "elektro")
|
|
35
|
-
Requires-Dist: fakts-next (>=1.1.0)
|
|
36
|
-
Requires-Dist: fluss-next (>=0.2.0) ; (python_version >= "3.9") and (extra == "fluss" or extra == "all")
|
|
37
|
-
Requires-Dist: herre-next (>=1.1.0)
|
|
38
|
-
Requires-Dist: kabinet (>=0.2.0) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "kabinet" or extra == "all")
|
|
39
|
-
Requires-Dist: koil (>=1.0.3)
|
|
40
|
-
Requires-Dist: kraph (>=0.2.0) ; (python_version >= "3.9") and (extra == "kraph" or extra == "extended")
|
|
41
|
-
Requires-Dist: lovekit (>=0.2.0) ; (python_version >= "3.10") and (extra == "lovekit" or extra == "stream")
|
|
42
|
-
Requires-Dist: mikro-next (>=0.2.0) ; (python_version >= "3.11" and python_version < "4.0") and (extra == "mikro" or extra == "all")
|
|
43
|
-
Requires-Dist: namegenerator (>=1.0.6) ; (python_version >= "3.9") and (extra == "blok")
|
|
44
|
-
Requires-Dist: netifaces (>=0.11.0) ; (python_version >= "3.9") and (extra == "blok")
|
|
45
|
-
Requires-Dist: rath (>=1.1.1)
|
|
46
|
-
Requires-Dist: reaktion-next (>=0.2.0) ; (python_version >= "3.9") and (extra == "reaktion" or extra == "all")
|
|
47
|
-
Requires-Dist: rekuest-next (>=0.3.1) ; (python_version >= "3.9") and (extra == "cli" or extra == "rekuest" or extra == "all")
|
|
48
|
-
Requires-Dist: rich-click (>=1.6.1) ; extra == "cli" or extra == "all" or extra == "blok"
|
|
49
|
-
Requires-Dist: semver (>=3.0.1) ; extra == "cli" or extra == "all"
|
|
50
|
-
Requires-Dist: turms (>=0.8.2) ; (python_version >= "3.9") and (extra == "cli" or extra == "all")
|
|
51
|
-
Requires-Dist: unlok-next (>=0.2.0) ; (python_version >= "3.9") and (extra == "unlok" or extra == "all")
|
|
52
|
-
Requires-Dist: watchfiles (>=0.18.1) ; extra == "cli" or extra == "all"
|
|
53
|
+
Requires-Dist: unlok-next>=0.2.0; extra == 'unlok'
|
|
53
54
|
Description-Content-Type: text/markdown
|
|
54
55
|
|
|
55
|
-
#
|
|
56
|
+
# arkitekt-next
|
|
56
57
|
|
|
57
58
|
[](https://codecov.io/gh/jhnnsrs/arkitekt_next)
|
|
58
59
|
[](https://pypi.org/project/arkitekt_next/)
|
|
@@ -65,7 +66,7 @@ streaming analysis for mikroscopy
|
|
|
65
66
|
|
|
66
67
|
## Idea
|
|
67
68
|
|
|
68
|
-
|
|
69
|
+
arkitekt-next is the python client for the arkitekt_next platform. It allows you to utilize the full extent of the platform from your python code.
|
|
69
70
|
To understand the idea behind arkitekt_next, you need to understand the idea behind the arkitekt_next platform.
|
|
70
71
|
(More on this in the [documentation](https://arkitekt.live))
|
|
71
72
|
|
|
@@ -169,4 +170,3 @@ def complex_call(x: ComplexStrucuture) -> int:
|
|
|
169
170
|
```
|
|
170
171
|
|
|
171
172
|
Check out the arkitekt_next [documentation](https://arkitekt.live) for usage of this libary
|
|
172
|
-
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# arkitekt-next
|
|
2
2
|
|
|
3
3
|
[](https://codecov.io/gh/jhnnsrs/arkitekt_next)
|
|
4
4
|
[](https://pypi.org/project/arkitekt_next/)
|
|
@@ -11,7 +11,7 @@ streaming analysis for mikroscopy
|
|
|
11
11
|
|
|
12
12
|
## Idea
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
arkitekt-next is the python client for the arkitekt_next platform. It allows you to utilize the full extent of the platform from your python code.
|
|
15
15
|
To understand the idea behind arkitekt_next, you need to understand the idea behind the arkitekt_next platform.
|
|
16
16
|
(More on this in the [documentation](https://arkitekt.live))
|
|
17
17
|
|
|
@@ -23,9 +23,10 @@ from arkitekt_next.bloks.self_signed import SelfSignedBlok
|
|
|
23
23
|
from arkitekt_next.bloks.kraph import KraphBlok
|
|
24
24
|
from arkitekt_next.bloks.local_sign import LocalSignBlok
|
|
25
25
|
from arkitekt_next.bloks.elektro import ElektroBlok
|
|
26
|
+
from blok.blok import Blok
|
|
26
27
|
|
|
27
28
|
|
|
28
|
-
def get_bloks():
|
|
29
|
+
def get_bloks() -> list[Blok]:
|
|
29
30
|
return [
|
|
30
31
|
AdminBlok(),
|
|
31
32
|
ArkitektBlok(),
|
|
@@ -53,4 +54,3 @@ def get_bloks():
|
|
|
53
54
|
LocalSignBlok(),
|
|
54
55
|
ElektroBlok(),
|
|
55
56
|
]
|
|
56
|
-
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
from .builders import easy, interactive
|
|
2
|
+
from .apps.protocols import App
|
|
3
|
+
from fakts_next.helpers import afakt, fakt
|
|
4
|
+
from .init_registry import init, InitHookRegisty, get_current_init_hook_registry
|
|
5
|
+
from .service_registry import (
|
|
6
|
+
require,
|
|
7
|
+
ServiceBuilderRegistry,
|
|
8
|
+
get_default_service_registry,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
|
|
1
12
|
def missing_install(name: str, error: Exception):
|
|
2
13
|
def real_missing_install(*args, **kwargs):
|
|
3
14
|
raise ImportError(
|
|
@@ -8,27 +19,34 @@ def missing_install(name: str, error: Exception):
|
|
|
8
19
|
|
|
9
20
|
|
|
10
21
|
try:
|
|
11
|
-
from rekuest_next.register import register
|
|
12
|
-
from rekuest_next.agents.hooks import background
|
|
13
|
-
from rekuest_next.agents.hooks import startup
|
|
22
|
+
from rekuest_next.register import register
|
|
23
|
+
from rekuest_next.agents.hooks.background import background
|
|
24
|
+
from rekuest_next.agents.hooks.startup import startup
|
|
14
25
|
from rekuest_next.agents.context import context
|
|
15
|
-
from rekuest_next.state.
|
|
16
|
-
from rekuest_next.actors.
|
|
17
|
-
from rekuest_next.actors.
|
|
18
|
-
from rekuest_next.actors.
|
|
19
|
-
from rekuest_next.register import test, benchmark
|
|
26
|
+
from rekuest_next.state.decorator import state
|
|
27
|
+
from rekuest_next.actors.context import abreakpoint, breakpoint
|
|
28
|
+
from rekuest_next.actors.context import progress, aprogress
|
|
29
|
+
from rekuest_next.actors.context import log, alog
|
|
20
30
|
from rekuest_next.structures.model import model
|
|
21
|
-
from rekuest_next.
|
|
22
|
-
|
|
31
|
+
from rekuest_next.remote import (
|
|
32
|
+
call,
|
|
33
|
+
acall,
|
|
34
|
+
acall_raw,
|
|
35
|
+
iterate,
|
|
36
|
+
aiterate,
|
|
37
|
+
aiterate_raw,
|
|
38
|
+
find,
|
|
39
|
+
)
|
|
23
40
|
except ImportError as e:
|
|
24
41
|
raise e
|
|
25
|
-
|
|
42
|
+
structure = missing_install("rekuest_next", e)
|
|
26
43
|
register = missing_install("rekuest_next", e)
|
|
27
44
|
background = missing_install("rekuest_next", e)
|
|
28
45
|
abreakpoint = missing_install("rekuest_next", e)
|
|
29
46
|
breakpoint = missing_install("rekuest_next", e)
|
|
30
47
|
startup = missing_install("rekuest_next", e)
|
|
31
48
|
context = missing_install("rekuest_next", e)
|
|
49
|
+
find = missing_install("rekuest_next", e)
|
|
32
50
|
state = missing_install("rekuest_next", e)
|
|
33
51
|
progress = missing_install("rekuest_next", e)
|
|
34
52
|
aprogress = missing_install("rekuest_next", e)
|
|
@@ -40,16 +58,9 @@ except ImportError as e:
|
|
|
40
58
|
acall_raw = missing_install("rekuest_next", e)
|
|
41
59
|
find = missing_install("rekuest_next", e)
|
|
42
60
|
afind = missing_install("rekuest_next", e)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
from fakts_next.helpers import afakt, fakt
|
|
47
|
-
from .init_registry import init, InitHookRegisty, get_current_init_hook_registry
|
|
48
|
-
from .service_registry import (
|
|
49
|
-
require,
|
|
50
|
-
ServiceBuilderRegistry,
|
|
51
|
-
get_current_service_registry,
|
|
52
|
-
)
|
|
61
|
+
aiterate_raw = missing_install("rekuest_next", e)
|
|
62
|
+
aiterate = missing_install("rekuest_next", e)
|
|
63
|
+
iterate = missing_install("rekuest_next", e)
|
|
53
64
|
|
|
54
65
|
|
|
55
66
|
__all__ = [
|
|
@@ -57,39 +68,29 @@ __all__ = [
|
|
|
57
68
|
"require",
|
|
58
69
|
"easy",
|
|
59
70
|
"interactive",
|
|
60
|
-
"publicqt",
|
|
61
|
-
"jupy",
|
|
62
71
|
"log",
|
|
63
72
|
"alog",
|
|
64
73
|
"afakt",
|
|
65
74
|
"fakt",
|
|
66
75
|
"progress",
|
|
67
76
|
"aprogress",
|
|
68
|
-
"scheduler",
|
|
69
|
-
"register_structure",
|
|
70
|
-
"requirement",
|
|
71
77
|
"ServiceBuilderRegistry",
|
|
72
|
-
"
|
|
78
|
+
"get_default_service_registry",
|
|
73
79
|
"register",
|
|
74
|
-
"group",
|
|
75
|
-
"useGuardian",
|
|
76
|
-
"useInstanceID",
|
|
77
80
|
"find",
|
|
78
|
-
"
|
|
81
|
+
"breakpoint",
|
|
82
|
+
"abreakpoint",
|
|
83
|
+
"aiterate",
|
|
84
|
+
"iterate",
|
|
85
|
+
"aiterate_raw",
|
|
79
86
|
"call",
|
|
80
|
-
"call_raw",
|
|
81
87
|
"acall",
|
|
82
88
|
"acall_raw",
|
|
83
89
|
"model",
|
|
84
|
-
"test",
|
|
85
|
-
"benchmark",
|
|
86
|
-
"useUser",
|
|
87
|
-
"next",
|
|
88
90
|
"state",
|
|
89
91
|
"context",
|
|
90
92
|
"background",
|
|
91
93
|
"startup",
|
|
92
|
-
"register_next",
|
|
93
94
|
"init",
|
|
94
95
|
"InitHookRegisty",
|
|
95
96
|
"get_current_init_hook_registry",
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"""
|
|
2
2
|
This module contains the types for the apps
|
|
3
3
|
depending on the builder used.
|
|
4
|
-
|
|
5
4
|
This module imports all the apps and their types
|
|
6
5
|
and sets them as attributes on the App class, if they are available.
|
|
7
6
|
If they are not available, they are set to Any, so that we can add
|
|
@@ -11,12 +10,17 @@ an import exception to the app.
|
|
|
11
10
|
"""
|
|
12
11
|
|
|
13
12
|
import logging
|
|
14
|
-
from typing import
|
|
13
|
+
from typing import Any, Dict, TYPE_CHECKING
|
|
14
|
+
from koil import unkoil
|
|
15
15
|
from arkitekt_next.base_models import Manifest
|
|
16
16
|
from koil.composition import Composition
|
|
17
17
|
from fakts_next import Fakts
|
|
18
18
|
from herre_next import Herre
|
|
19
|
-
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
if TYPE_CHECKING:
|
|
22
|
+
from rekuest_next.rekuest import RekuestNext
|
|
23
|
+
|
|
20
24
|
|
|
21
25
|
logger = logging.getLogger(__name__)
|
|
22
26
|
|
|
@@ -29,18 +33,27 @@ class App(Composition):
|
|
|
29
33
|
manifest: Manifest
|
|
30
34
|
services: Dict[str, Any]
|
|
31
35
|
|
|
36
|
+
@property
|
|
37
|
+
def rekuest(self) -> "RekuestNext":
|
|
38
|
+
"""Get the rekuest service"""
|
|
39
|
+
if "rekuest" not in self.services:
|
|
40
|
+
raise ValueError("Rekuest service is not available")
|
|
41
|
+
return self.services["rekuest"]
|
|
42
|
+
|
|
32
43
|
def run(self):
|
|
33
|
-
|
|
34
|
-
return self.services["rekuest"].run()
|
|
44
|
+
return unkoil(self.rekuest.arun)
|
|
35
45
|
|
|
36
|
-
def
|
|
37
|
-
|
|
46
|
+
async def arun(self):
|
|
47
|
+
return await self.rekuest.arun()
|
|
38
48
|
|
|
39
|
-
|
|
49
|
+
def run_detached(self):
|
|
50
|
+
"""Run the app detached"""
|
|
51
|
+
return self.rekuest.run_detached()
|
|
40
52
|
|
|
41
53
|
def register(self, *args, **kwargs):
|
|
42
54
|
"""Register a service"""
|
|
43
|
-
|
|
55
|
+
|
|
56
|
+
self.rekuest.register(*args, **kwargs)
|
|
44
57
|
|
|
45
58
|
async def __aenter__(self):
|
|
46
59
|
await super().__aenter__()
|
|
@@ -4,41 +4,35 @@ from fakts_next.fakts import Fakts
|
|
|
4
4
|
from fakts_next.grants.hard import HardFakts
|
|
5
5
|
from fakts_next.grants.remote import RemoteGrant
|
|
6
6
|
from fakts_next.grants.remote.discovery.well_known import WellKnownDiscovery
|
|
7
|
-
from fakts_next.grants.remote import RemoteGrant
|
|
8
7
|
from fakts_next.grants.remote.demanders.static import StaticDemander
|
|
9
|
-
from fakts_next.grants.remote.demanders.device_code import
|
|
8
|
+
from fakts_next.grants.remote.demanders.device_code import (
|
|
9
|
+
ClientKind,
|
|
10
|
+
DeviceCodeDemander,
|
|
11
|
+
)
|
|
10
12
|
from fakts_next.grants.remote.claimers.post import ClaimEndpointClaimer
|
|
11
13
|
from fakts_next.grants.remote.demanders.redeem import RedeemDemander
|
|
12
14
|
from fakts_next.cache.file import FileCache
|
|
13
15
|
from arkitekt_next.base_models import Manifest
|
|
14
16
|
|
|
15
17
|
|
|
16
|
-
class ArkitektNextFaktsQt(Fakts):
|
|
17
|
-
grant: RemoteGrant
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class ArkitektNextFaktsNext(Fakts):
|
|
21
|
-
pass
|
|
22
|
-
|
|
23
|
-
|
|
24
18
|
def build_arkitekt_next_fakts_next(
|
|
25
19
|
manifest: Manifest,
|
|
26
20
|
url: Optional[str] = None,
|
|
27
21
|
no_cache: bool = False,
|
|
28
22
|
headless: bool = False,
|
|
29
|
-
|
|
30
|
-
) -> ArkitektNextFaktsNext:
|
|
23
|
+
) -> Fakts:
|
|
31
24
|
identifier = manifest.identifier
|
|
32
25
|
version = manifest.version
|
|
26
|
+
if url is None:
|
|
27
|
+
raise ValueError("URL must be provided")
|
|
33
28
|
|
|
34
29
|
demander = DeviceCodeDemander(
|
|
35
30
|
manifest=manifest,
|
|
36
|
-
redirect_uri="http://127.0.0.1:6767",
|
|
37
31
|
open_browser=not headless,
|
|
38
|
-
requested_client_kind=
|
|
32
|
+
requested_client_kind=ClientKind.DEVELOPMENT,
|
|
39
33
|
)
|
|
40
34
|
|
|
41
|
-
return
|
|
35
|
+
return Fakts(
|
|
42
36
|
grant=RemoteGrant(
|
|
43
37
|
demander=demander,
|
|
44
38
|
discovery=WellKnownDiscovery(url=url, auto_protocols=["https", "http"]),
|
|
@@ -47,22 +41,15 @@ def build_arkitekt_next_fakts_next(
|
|
|
47
41
|
cache=FileCache(
|
|
48
42
|
cache_file=f".arkitekt_next/cache/{identifier}-{version}_fakts_cache.json",
|
|
49
43
|
hash=manifest.hash() + url,
|
|
50
|
-
skip_cache=no_cache,
|
|
51
44
|
),
|
|
52
45
|
)
|
|
53
46
|
|
|
54
47
|
|
|
55
|
-
def build_arkitekt_next_redeem_fakts_next(
|
|
56
|
-
manifest: Manifest,
|
|
57
|
-
redeem_token: str,
|
|
58
|
-
url,
|
|
59
|
-
no_cache: Optional[bool] = False,
|
|
60
|
-
headless=False,
|
|
61
|
-
):
|
|
48
|
+
def build_arkitekt_next_redeem_fakts_next(manifest: Manifest, redeem_token: str, url):
|
|
62
49
|
identifier = manifest.identifier
|
|
63
50
|
version = manifest.version
|
|
64
51
|
|
|
65
|
-
return
|
|
52
|
+
return Fakts(
|
|
66
53
|
grant=RemoteGrant(
|
|
67
54
|
demander=RedeemDemander(token=redeem_token, manifest=manifest),
|
|
68
55
|
discovery=WellKnownDiscovery(url=url, auto_protocols=["https", "http"]),
|
|
@@ -83,9 +70,9 @@ def build_arkitekt_next_token_fakts_next(
|
|
|
83
70
|
identifier = manifest.identifier
|
|
84
71
|
version = manifest.version
|
|
85
72
|
|
|
86
|
-
return
|
|
73
|
+
return Fakts(
|
|
87
74
|
grant=RemoteGrant(
|
|
88
|
-
demander=StaticDemander(token=token),
|
|
75
|
+
demander=StaticDemander(token=token), # type: ignore
|
|
89
76
|
discovery=WellKnownDiscovery(url=url, auto_protocols=["https", "http"]),
|
|
90
77
|
claimer=ClaimEndpointClaimer(),
|
|
91
78
|
),
|
|
@@ -97,11 +84,9 @@ def build_arkitekt_next_token_fakts_next(
|
|
|
97
84
|
|
|
98
85
|
|
|
99
86
|
def build_local_fakts(manifest, fakts):
|
|
100
|
-
|
|
101
87
|
identifier = manifest.identifier
|
|
102
88
|
version = manifest.version
|
|
103
89
|
|
|
104
|
-
return
|
|
90
|
+
return Fakts(
|
|
105
91
|
grant=HardFakts(fakts=fakts),
|
|
106
|
-
|
|
107
|
-
)
|
|
92
|
+
)
|
|
@@ -43,7 +43,7 @@ class Manifest(BaseModel):
|
|
|
43
43
|
requirements: Optional[List[Requirement]] = Field(default_factory=list)
|
|
44
44
|
""" Requirements that this app has TODO: What are the requirements? """
|
|
45
45
|
model_config = ConfigDict(extra="forbid")
|
|
46
|
-
|
|
46
|
+
|
|
47
47
|
description: Optional[str] = None
|
|
48
48
|
""" A human readable description of the app """
|
|
49
49
|
|
|
@@ -74,8 +74,8 @@ class Manifest(BaseModel):
|
|
|
74
74
|
# Hash the JSON encoded dictionary
|
|
75
75
|
return sha256(json_dd.encode()).hexdigest()
|
|
76
76
|
|
|
77
|
-
@field_validator("identifier")
|
|
78
|
-
def check_identifier(cls, v):
|
|
77
|
+
@field_validator("identifier", mode="after")
|
|
78
|
+
def check_identifier(cls, v: str) -> str:
|
|
79
79
|
assert "/" not in v, "The identifier should not contain a /"
|
|
80
80
|
assert len(v) > 0, "The identifier should not be empty"
|
|
81
81
|
assert len(v) < 256, "The identifier should not be longer than 256 characters"
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from arkitekt_next.bloks.services.channel import ChannelService
|
|
1
2
|
from blok import blok, InitContext, Option
|
|
2
3
|
from blok.tree import YamlFile, Repo
|
|
3
4
|
from typing import Any, Optional, Protocol
|
|
@@ -62,6 +63,7 @@ class BaseArkitektService:
|
|
|
62
63
|
redis: RedisService,
|
|
63
64
|
s3: S3Service,
|
|
64
65
|
config: ConfigService,
|
|
66
|
+
channel: ChannelService,
|
|
65
67
|
mount: MountService,
|
|
66
68
|
admin: AdminService,
|
|
67
69
|
secret: SecretService,
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from pydantic import BaseModel
|
|
2
|
+
from typing import Dict, Any
|
|
3
|
+
from blok import blok, InitContext, Option
|
|
4
|
+
from arkitekt_next.bloks.services.channel import ChannelService
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@blok(ChannelService, description="The current channel of the application")
|
|
8
|
+
class ChannelBlok:
|
|
9
|
+
def __init__(self) -> None:
|
|
10
|
+
self.name = "default"
|
|
11
|
+
|
|
12
|
+
def preflight(self, init: InitContext):
|
|
13
|
+
for key, value in init.kwargs.items():
|
|
14
|
+
setattr(self, key, value)
|
|
15
|
+
|
|
16
|
+
def retrieve(self):
|
|
17
|
+
return self.name
|
|
18
|
+
|
|
19
|
+
def get_options(self):
|
|
20
|
+
with_name = Option(
|
|
21
|
+
subcommand="name",
|
|
22
|
+
help="Which channel name to use",
|
|
23
|
+
default=self.name,
|
|
24
|
+
show_default=True,
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
return [with_name]
|
|
@@ -49,7 +49,7 @@ class MinioBlok:
|
|
|
49
49
|
self.port = 9000
|
|
50
50
|
self.skip = False
|
|
51
51
|
self.scopes = {}
|
|
52
|
-
self.init_image = "jhnnsrs/init:
|
|
52
|
+
self.init_image = "jhnnsrs/init:nightly"
|
|
53
53
|
self.minio_image = "minio/minio:RELEASE.2025-02-18T16-25-55Z"
|
|
54
54
|
self.buckets = []
|
|
55
55
|
self.registered_clients = []
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from typing import Dict, Any, Protocol
|
|
2
|
+
from blok import blok, InitContext, Option
|
|
3
|
+
from blok import service
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@service("live.arkitekt.channel")
|
|
9
|
+
class ChannelService(Protocol):
|
|
10
|
+
|
|
11
|
+
def retrieve_channel(self) -> str:
|
|
12
|
+
return str
|