arkitekt-next 0.7.52__py3-none-any.whl → 0.7.53__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.

Potentially problematic release.


This version of arkitekt-next might be problematic. Click here for more details.

Files changed (40) hide show
  1. arkitekt_next/apps/easy.py +12 -4
  2. arkitekt_next/apps/next.py +0 -1
  3. arkitekt_next/apps/qt.py +9 -3
  4. arkitekt_next/apps/service/fakts.py +1 -0
  5. arkitekt_next/apps/service/fakts_qt.py +1 -1
  6. arkitekt_next/apps/types.py +0 -4
  7. arkitekt_next/bloks/__init__.py +0 -1
  8. arkitekt_next/bloks/config.py +1 -0
  9. arkitekt_next/bloks/mount.py +1 -1
  10. arkitekt_next/bloks/namegen.py +1 -1
  11. arkitekt_next/bloks/orkestrator.py +6 -1
  12. arkitekt_next/bloks/postgres.py +0 -2
  13. arkitekt_next/bloks/redis.py +1 -2
  14. arkitekt_next/bloks/secret.py +1 -2
  15. arkitekt_next/bloks/services/admin.py +1 -1
  16. arkitekt_next/bloks/services/config.py +1 -6
  17. arkitekt_next/bloks/services/livekit.py +3 -5
  18. arkitekt_next/bloks/services/mount.py +1 -7
  19. arkitekt_next/bloks/services/name.py +1 -2
  20. arkitekt_next/bloks/services/secret.py +2 -1
  21. arkitekt_next/builders.py +45 -6
  22. arkitekt_next/cli/commands/inspect/requirements.py +1 -2
  23. arkitekt_next/cli/commands/kabinet/build.py +12 -3
  24. arkitekt_next/cli/commands/kabinet/init.py +6 -3
  25. arkitekt_next/cli/commands/kabinet/stage.py +12 -4
  26. arkitekt_next/cli/constants.py +0 -1
  27. arkitekt_next/cli/texts.py +1 -3
  28. arkitekt_next/constants.py +2 -4
  29. arkitekt_next/model.py +1 -1
  30. arkitekt_next/qt/__init__.py +2 -1
  31. arkitekt_next/qt/builders.py +14 -6
  32. arkitekt_next/qt/types.py +2 -6
  33. arkitekt_next/service_registry.py +33 -21
  34. arkitekt_next/tqdm.py +3 -1
  35. arkitekt_next/utils.py +11 -12
  36. {arkitekt_next-0.7.52.dist-info → arkitekt_next-0.7.53.dist-info}/METADATA +1 -1
  37. {arkitekt_next-0.7.52.dist-info → arkitekt_next-0.7.53.dist-info}/RECORD +40 -40
  38. {arkitekt_next-0.7.52.dist-info → arkitekt_next-0.7.53.dist-info}/LICENSE +0 -0
  39. {arkitekt_next-0.7.52.dist-info → arkitekt_next-0.7.53.dist-info}/WHEEL +0 -0
  40. {arkitekt_next-0.7.52.dist-info → arkitekt_next-0.7.53.dist-info}/entry_points.txt +0 -0
@@ -32,7 +32,9 @@ def build_arkitekt_app(
32
32
  herre = build_arkitekt_next_herre(fakts=fakts)
33
33
 
34
34
  try:
35
- from arkitekt_next_next.apps.service.rekuest_next import build_arkitekt_next_rekuest_next
35
+ from arkitekt_next_next.apps.service.rekuest_next import (
36
+ build_arkitekt_next_rekuest_next,
37
+ )
36
38
 
37
39
  rekuest = build_arkitekt_next_rekuest_next(
38
40
  fakts=fakts, herre=herre, instance_id=instance_id
@@ -41,7 +43,9 @@ def build_arkitekt_app(
41
43
  rekuest = ImportException(import_exception=e, install_library="rekuest_next")
42
44
 
43
45
  try:
44
- from arkitekt_next_next.apps.service.mikro_next import build_arkitekt_next_mikro_next
46
+ from arkitekt_next_next.apps.service.mikro_next import (
47
+ build_arkitekt_next_mikro_next,
48
+ )
45
49
 
46
50
  mikro = build_arkitekt_next_mikro_next(fakts=fakts, herre=herre)
47
51
  except ImportError as e:
@@ -57,7 +61,9 @@ def build_arkitekt_app(
57
61
  fluss = ImportException(import_exception=e, install_library="fluss_next")
58
62
 
59
63
  try:
60
- from arkitekt_next_next.apps.service.unlok_next import build_arkitekt_next_unlok_next
64
+ from arkitekt_next_next.apps.service.unlok_next import (
65
+ build_arkitekt_next_unlok_next,
66
+ )
61
67
 
62
68
  unlok = build_arkitekt_next_unlok_next(herre=herre, fakts=fakts)
63
69
  except ImportError as e:
@@ -65,7 +71,9 @@ def build_arkitekt_app(
65
71
  fluss = ImportException(import_exception=e, install_library="fluss_next")
66
72
 
67
73
  try:
68
- from arkitekt_next_next.apps.service.omero_ark import build_arkitekt_next_omero_ark
74
+ from arkitekt_next_next.apps.service.omero_ark import (
75
+ build_arkitekt_next_omero_ark,
76
+ )
69
77
 
70
78
  omero_ark = build_arkitekt_next_omero_ark(herre=herre, fakts=fakts)
71
79
  except ImportError as e:
@@ -37,4 +37,3 @@ def build_next_app(
37
37
  )
38
38
 
39
39
  herre = build_arkitekt_next_herre(fakts=fakts)
40
-
arkitekt_next/apps/qt.py CHANGED
@@ -19,10 +19,14 @@ def build_arkitekt_next_qt_app(
19
19
 
20
20
  settings = settings or QtCore.QSettings()
21
21
  except ImportError as e:
22
- raise InstallModuleException("Please install qtpy to use arkitekt_next_qt") from e
22
+ raise InstallModuleException(
23
+ "Please install qtpy to use arkitekt_next_qt"
24
+ ) from e
23
25
 
24
26
  try:
25
- from arkitekt_next_next.apps.service.fakts_qt import build_arkitekt_next_qt_fakts
27
+ from arkitekt_next_next.apps.service.fakts_qt import (
28
+ build_arkitekt_next_qt_fakts,
29
+ )
26
30
 
27
31
  fakts = build_arkitekt_next_qt_fakts(
28
32
  manifest=manifest,
@@ -35,7 +39,9 @@ def build_arkitekt_next_qt_app(
35
39
  fakts = ImportException(import_exception=e, install_library="qtpy")
36
40
 
37
41
  try:
38
- from arkitekt_next_next.apps.service.herre_qt import build_arkitekt_next_qt_herre
42
+ from arkitekt_next_next.apps.service.herre_qt import (
43
+ build_arkitekt_next_qt_herre,
44
+ )
39
45
 
40
46
  herre = build_arkitekt_next_qt_herre(
41
47
  manifest=manifest,
@@ -72,6 +72,7 @@ def build_arkitekt_next_token_fakts(
72
72
  )
73
73
  )
74
74
 
75
+
75
76
  def build_arkitekt_next_redeem_fakts(
76
77
  manifest: Manifest,
77
78
  redeem_token: str,
@@ -78,7 +78,7 @@ def build_arkitekt_next_qt_fakts(
78
78
  settings=settings,
79
79
  allow_appending_slash=True,
80
80
  auto_protocols=["http", "https"],
81
- additional_beacons=["http://localhost"]
81
+ additional_beacons=["http://localhost"],
82
82
  ),
83
83
  ),
84
84
  claimer=ClaimEndpointClaimer(),
@@ -42,7 +42,3 @@ class App(Composition):
42
42
  async def __aexit__(self, exc_type, exc_value, traceback):
43
43
  for service in self.services.values():
44
44
  await service.__aexit__(exc_type, exc_value, traceback)
45
-
46
-
47
-
48
-
@@ -1,2 +1 @@
1
1
  from .admin import AdminBlok
2
-
@@ -4,6 +4,7 @@ from blok import blok, InitContext, Option, ExecutionContext
4
4
  from blok.tree import YamlFile
5
5
  from arkitekt_next.bloks.services.config import ConfigService
6
6
 
7
+
7
8
  class AdminCredentials(BaseModel):
8
9
  password: str
9
10
  username: str
@@ -14,7 +14,7 @@ class MountBlok:
14
14
  self.registered_configs = {}
15
15
 
16
16
  def preflight(self, mount_path: str):
17
- self.mount_path = mount_path
17
+ self.mount_path = mount_path
18
18
 
19
19
  def build(self, ex: ExecutionContext):
20
20
  for name, file in self.registered_configs.items():
@@ -7,6 +7,7 @@ from arkitekt_next.bloks.services.secret import SecretService
7
7
  import secrets
8
8
  import namegenerator
9
9
 
10
+
10
11
  @blok(NameService)
11
12
  class PreformedNamesBlok:
12
13
  def __init__(self) -> None:
@@ -22,7 +23,6 @@ class PreformedNamesBlok:
22
23
  self.used_names.append(name)
23
24
  return name
24
25
 
25
-
26
26
  def get_options(self):
27
27
  config_path = Option(
28
28
  subcommand="preformed_names",
@@ -15,7 +15,12 @@ class OrkestratorBlok:
15
15
  self.build_command = ["yarn"]
16
16
  self.up_command = ["yarn", "start"]
17
17
 
18
- def preflight(self, init: InitContext, mount: MountService, vscode: VsCodeService | None = None) :
18
+ def preflight(
19
+ self,
20
+ init: InitContext,
21
+ mount: MountService,
22
+ vscode: VsCodeService | None = None,
23
+ ):
19
24
  for key, value in init.kwargs.items():
20
25
  setattr(self, key, value)
21
26
 
@@ -10,8 +10,6 @@ import secrets
10
10
  from blok import blok, InitContext
11
11
 
12
12
 
13
-
14
-
15
13
  @blok(DBService)
16
14
  class PostgresBlok(BaseModel):
17
15
  host: str = "db"
@@ -9,7 +9,6 @@ from typing import Dict, Any, Optional
9
9
  from blok import blok, InitContext
10
10
 
11
11
 
12
-
13
12
  @blok(RedisService)
14
13
  class RedisBlok:
15
14
  def __init__(self) -> None:
@@ -65,7 +64,7 @@ class RedisBlok:
65
64
  with_skip = Option(
66
65
  subcommand="skip",
67
66
  help="Skip docker creation (if using external redis?)",
68
- type=bool,
67
+ type=bool,
69
68
  default=self.skip,
70
69
  )
71
70
  with_image = Option(
@@ -5,6 +5,7 @@ from blok.tree import YamlFile
5
5
  from arkitekt_next.bloks.services.secret import SecretService
6
6
  import secrets
7
7
 
8
+
8
9
  @blok(SecretService)
9
10
  class SecretBlok:
10
11
  def __init__(self) -> None:
@@ -19,8 +20,6 @@ class SecretBlok:
19
20
  self.registered_secrets.append(new_secret)
20
21
  return new_secret
21
22
 
22
-
23
-
24
23
  def get_options(self):
25
24
  config_path = Option(
26
25
  subcommand="preformed_secrets",
@@ -3,6 +3,7 @@ from blok import blok, InitContext, Option
3
3
  from blok import service
4
4
  from dataclasses import dataclass
5
5
 
6
+
6
7
  @dataclass
7
8
  class AdminCredentials:
8
9
  password: str
@@ -19,4 +20,3 @@ class AdminService(Protocol):
19
20
  username=self.username,
20
21
  email=self.email,
21
22
  )
22
-
@@ -3,16 +3,11 @@ from blok import blok, InitContext, Option, ExecutionContext, service
3
3
  from blok.tree import YamlFile
4
4
 
5
5
 
6
-
7
-
8
6
  @service("live.arkitekt.config")
9
7
  class ConfigService(Protocol):
10
8
 
11
- def register_config(self, name: str, file: YamlFile) -> str:
12
- ...
9
+ def register_config(self, name: str, file: YamlFile) -> str: ...
13
10
 
14
11
  def get_path(self, name: str) -> str:
15
12
  ...
16
13
  return f"./{self.config_path}/" + name
17
-
18
-
@@ -1,19 +1,17 @@
1
-
2
-
3
1
  from typing import Dict, Any, Protocol
4
2
  from blok import blok, InitContext, Option
5
3
  from blok import service
6
4
  from dataclasses import dataclass
7
5
 
6
+
8
7
  @dataclass
9
8
  class LivekitCredentials:
10
9
  api_key: str
11
10
  api_secret: str
12
11
  api_url: str
13
12
 
13
+
14
14
  @service("io.livekit.livekit")
15
15
  class LivekitService(Protocol):
16
16
 
17
- def retrieve_access(self) -> LivekitCredentials:
18
- ...
19
-
17
+ def retrieve_access(self) -> LivekitCredentials: ...
@@ -3,13 +3,7 @@ from blok import blok, InitContext, Option, ExecutionContext, service
3
3
  from blok.tree import YamlFile
4
4
 
5
5
 
6
-
7
-
8
6
  @service("live.arkitekt.mount")
9
7
  class MountService(Protocol):
10
8
 
11
- def register_mount(self, name: str, file: YamlFile) -> str:
12
- ...
13
-
14
-
15
-
9
+ def register_mount(self, name: str, file: YamlFile) -> str: ...
@@ -4,9 +4,8 @@ from blok import service
4
4
  from dataclasses import dataclass
5
5
 
6
6
 
7
-
8
7
  @service("live.arkitekt.names")
9
8
  class NameService(Protocol):
10
9
 
11
10
  def retrieve_name(self) -> str:
12
- pass
11
+ pass
@@ -3,6 +3,7 @@ from blok import blok, InitContext, Option
3
3
  from blok import service
4
4
  from dataclasses import dataclass
5
5
 
6
+
6
7
  @dataclass
7
8
  class AdminCredentials:
8
9
  password: str
@@ -14,4 +15,4 @@ class AdminCredentials:
14
15
  class SecretService(Protocol):
15
16
 
16
17
  def retrieve_secret() -> str:
17
- pass
18
+ pass
arkitekt_next/builders.py CHANGED
@@ -5,7 +5,7 @@ import os
5
5
  from arkitekt_next.apps.service.fakts_next import (
6
6
  build_arkitekt_next_fakts_next,
7
7
  build_arkitekt_next_redeem_fakts_next,
8
- build_arkitekt_next_token_fakts
8
+ build_arkitekt_next_token_fakts,
9
9
  )
10
10
  from arkitekt_next.apps.service.herre import build_arkitekt_next_herre
11
11
  from .utils import create_arkitekt_next_folder
@@ -15,7 +15,6 @@ from .service_registry import ServiceBuilderRegistry, check_and_import_services
15
15
  from arkitekt_next.constants import DEFAULT_ARKITEKT_URL
16
16
 
17
17
 
18
-
19
18
  def easy(
20
19
  identifier: str,
21
20
  version: str = "0.0.1",
@@ -99,11 +98,9 @@ def easy(
99
98
  """
100
99
  registry = registry or check_and_import_services()
101
100
 
102
-
103
101
  url = os.getenv("FAKTS_URL", url)
104
102
  token = os.getenv("FAKTS_TOKEN", token)
105
103
 
106
-
107
104
  manifest = Manifest(
108
105
  version=version,
109
106
  identifier=identifier,
@@ -155,10 +152,52 @@ def easy(
155
152
  fakts=fakts,
156
153
  herre=herre,
157
154
  manifest=manifest,
158
- services=registry.build_service_map(fakts=fakts, herre=herre, params=params, manifest=manifest),
155
+ services=registry.build_service_map(
156
+ fakts=fakts, herre=herre, params=params, manifest=manifest
157
+ ),
159
158
  )
160
159
 
161
-
162
160
  return app
163
161
 
164
162
 
163
+
164
+ def interactive(identifier: str,
165
+ version: str = "0.0.1",
166
+ logo: Optional[str] = None,
167
+ scopes: Optional[List[str]] = None,
168
+ url: str = DEFAULT_ARKITEKT_URL,
169
+ headless: bool = False,
170
+ log_level: str = "ERROR",
171
+ token: Optional[str] = None,
172
+ no_cache: bool = False,
173
+ redeem_token: Optional[str] = None,
174
+ app_kind: str = "development",
175
+ registry: Optional[ServiceBuilderRegistry] = None,
176
+ sync_mode: bool = True,
177
+ **kwargs):
178
+ """Creates an interactive jupyter app"""
179
+
180
+ app = easy(identifier=identifier,
181
+ version=version,
182
+ logo=logo,
183
+ scopes=scopes,
184
+ url=url,
185
+ headless=headless,
186
+ log_level=log_level,
187
+ token=token,
188
+ no_cache=no_cache,
189
+ redeem_token=redeem_token,
190
+ app_kind=app_kind,
191
+ registry=registry,
192
+ **kwargs)
193
+
194
+ if sync_mode:
195
+ # When running in an interactive async enironvment, just like
196
+ # in a jupyter notebook, we can opt to run the app in sync mode
197
+ # to avoid having to use await for every call. This is the default
198
+ # behaviour for the app, but can be overwritten by setting
199
+ # app.koil.sync_in_async = False
200
+ app.koil.sync_in_async = True
201
+ app.enter()
202
+
203
+ return app
@@ -70,8 +70,7 @@ def requirements(
70
70
  )
71
71
 
72
72
  x = {
73
- key: item.dict(by_alias=True)
74
- for key, item in app.manifest.requirements.items()
73
+ key: item.dict(by_alias=True) for key, item in app.manifest.requirements.items()
75
74
  }
76
75
  if machine_readable:
77
76
  print("--START_REQUIREMENTS--" + json.dumps(x) + "--END_REQUIREMENTS--")
@@ -126,12 +126,21 @@ def inspect_templates(build_id: str) -> list[TemplateInput]:
126
126
  )
127
127
 
128
128
  raise InspectionError(f"An error occurred: {e.stdout + e.stderr}") from e
129
-
129
+
130
+
130
131
  def inspect_requirements(build_id: str) -> Dict[str, Requirement]:
131
132
  try:
132
133
  # Run 'docker inspect' with the container ID or name
133
134
  result = subprocess.run(
134
- ["docker", "run", build_id, "arkitekt-next", "inspect", "requirements", "-mr"],
135
+ [
136
+ "docker",
137
+ "run",
138
+ build_id,
139
+ "arkitekt-next",
140
+ "inspect",
141
+ "requirements",
142
+ "-mr",
143
+ ],
135
144
  stdout=subprocess.PIPE,
136
145
  stderr=subprocess.PIPE,
137
146
  check=True,
@@ -169,7 +178,7 @@ def inspect_build(build_id: str) -> Inspection:
169
178
  templates = inspect_templates(build_id)
170
179
  requirements = inspect_requirements(build_id)
171
180
 
172
- return Inspection(size=size, templates=templates , requirements=requirements)
181
+ return Inspection(size=size, templates=templates, requirements=requirements)
173
182
 
174
183
 
175
184
  def get_flavours(ctx: Context, select: Optional[str] = None) -> Dict[str, Flavour]:
@@ -48,7 +48,12 @@ import os
48
48
  )
49
49
  @click.pass_context
50
50
  def init(
51
- ctx: Context, description: str, overwrite: bool, flavour: str, template: str, devcontainer: bool
51
+ ctx: Context,
52
+ description: str,
53
+ overwrite: bool,
54
+ flavour: str,
55
+ template: str,
56
+ devcontainer: bool,
52
57
  ) -> None:
53
58
  """Runs the port wizard to generate a dockerfile to be used with port"""
54
59
 
@@ -82,11 +87,9 @@ def init(
82
87
  with open(dockerfile, "w") as f:
83
88
  f.write(dockerfile_content)
84
89
 
85
-
86
90
  if devcontainer or click.confirm("Do you want to create a devcontainer.json file?"):
87
91
  create_devcontainer_file(manifest, flavour, dockerfile)
88
92
 
89
-
90
93
  panel = Panel(
91
94
  title=f"Created new flavour [bold]{flavour}[/bold]\n",
92
95
  renderable="You can now edit the Dockerfile and add selectors to the config.yaml file\n"
@@ -10,10 +10,17 @@ from arkitekt_next.constants import DEFAULT_ARKITEKT_URL
10
10
  @click.option("--build", help="The build to use", type=str, default=None)
11
11
  @click.option("--flavour", "-f", help="The flavour to use", default="vanilla")
12
12
  @click.option(
13
- "--url", "-u", help="The fakts server to use", type=str, default=DEFAULT_ARKITEKT_URL
13
+ "--url",
14
+ "-u",
15
+ help="The fakts server to use",
16
+ type=str,
17
+ default=DEFAULT_ARKITEKT_URL,
14
18
  )
15
19
  @click.option(
16
- "--builder", help="The builder to use", type=str, default="arkitekt_next.builders.easy"
20
+ "--builder",
21
+ help="The builder to use",
22
+ type=str,
23
+ default="arkitekt_next.builders.easy",
17
24
  )
18
25
  @click.pass_context
19
26
  def stage(ctx: Context, build: str, url: str, flavour: str, builder: str) -> None:
@@ -47,8 +54,9 @@ def stage(ctx: Context, build: str, url: str, flavour: str, builder: str) -> Non
47
54
  else:
48
55
  build_model = list(builds.values())[0]
49
56
 
50
- command = build_model.build_docker_command() + build_model.build_arkitekt_next_command(
51
- url
57
+ command = (
58
+ build_model.build_docker_command()
59
+ + build_model.build_arkitekt_next_command(url)
52
60
  )
53
61
 
54
62
  click.echo(f"Staging build {build} with flavour {flavour} against {url}")
@@ -9,7 +9,6 @@ def compile_scopes() -> List[str]:
9
9
  return ["read", "write"]
10
10
 
11
11
 
12
-
13
12
  def compile_builders():
14
13
  return ["arkitekt_next.builders.easy", "arkitekt_next.builders.port"]
15
14
 
@@ -15,6 +15,4 @@ LOGO = """
15
15
 
16
16
  """
17
17
 
18
- ERROR_EPILOGUE = (
19
- "To find out more, visit [link=https://arkitekt_next.live]https://arkitekt_next.live[/link]"
20
- )
18
+ ERROR_EPILOGUE = "To find out more, visit [link=https://arkitekt_next.live]https://arkitekt_next.live[/link]"
@@ -1,6 +1,4 @@
1
- REPO_URL = (
2
- "https://arkitekt_next.live/repo.json"
3
- )
1
+ REPO_URL = "https://arkitekt_next.live/repo.json"
4
2
 
5
3
 
6
- DEFAULT_ARKITEKT_URL = "http://127.0.0.1"
4
+ DEFAULT_ARKITEKT_URL = "http://127.0.0.1"
arkitekt_next/model.py CHANGED
@@ -83,11 +83,11 @@ class Manifest(BaseModel):
83
83
  class Config:
84
84
  extra = "forbid"
85
85
 
86
-
87
86
  def hash(self):
88
87
  """Hash the manifest"""
89
88
  return sha256(self.json(sort_keys=True).encode()).hexdigest()
90
89
 
90
+
91
91
  class User(BaseModel):
92
92
  """A user of ArkitektNext
93
93
 
@@ -7,8 +7,9 @@ The main component is the MagicBar, which is a widget that can be added
7
7
  to any Qt application. It will then allow the user to configure and connect
8
8
  to ArkitektNext, and configure settings.
9
9
  """
10
+
10
11
  from .magic_bar import MagicBar
11
12
  from .builders import publicqt
12
13
  from .types import *
13
14
 
14
- __all__ = ["MagicBar", "publicqt", "QtApp"]
15
+ __all__ = ["MagicBar", "publicqt", "QtApp"]
@@ -1,4 +1,3 @@
1
-
2
1
  from arkitekt_next.apps.service.fakts_next import (
3
2
  build_arkitekt_next_redeem_fakts_next,
4
3
  )
@@ -7,7 +6,10 @@ from arkitekt_next.apps.service.herre_qt import build_arkitekt_next_qt_herre
7
6
  from arkitekt_next.utils import create_arkitekt_next_folder
8
7
  from arkitekt_next.model import Manifest
9
8
  from arkitekt_next.apps.types import App
10
- from arkitekt_next.service_registry import ServiceBuilderRegistry, check_and_import_services
9
+ from arkitekt_next.service_registry import (
10
+ ServiceBuilderRegistry,
11
+ check_and_import_services,
12
+ )
11
13
  from arkitekt_next.constants import DEFAULT_ARKITEKT_URL
12
14
  from qtpy import QtWidgets, QtCore
13
15
  from typing import List, Optional
@@ -47,7 +49,6 @@ def publicqt(
47
49
 
48
50
  settings = settings or QtCore.QSettings("arkitekt_next", f"{identifier}:{version}")
49
51
 
50
-
51
52
  manifest = Manifest(
52
53
  version=version,
53
54
  identifier=identifier,
@@ -63,11 +64,16 @@ def publicqt(
63
64
  settings=settings,
64
65
  )
65
66
 
66
- herre = build_arkitekt_next_qt_herre(manifest, fakts=fakts, login_widget=login_widget, parent=parent, settings=settings)
67
+ herre = build_arkitekt_next_qt_herre(
68
+ manifest,
69
+ fakts=fakts,
70
+ login_widget=login_widget,
71
+ parent=parent,
72
+ settings=settings,
73
+ )
67
74
 
68
75
  params = kwargs
69
76
 
70
-
71
77
  try:
72
78
  from rich.logging import RichHandler
73
79
 
@@ -79,7 +85,9 @@ def publicqt(
79
85
  fakts=fakts,
80
86
  herre=herre,
81
87
  manifest=manifest,
82
- services=registry.build_service_map(fakts=fakts, herre=herre, params=params, manifest=manifest),
88
+ services=registry.build_service_map(
89
+ fakts=fakts, herre=herre, params=params, manifest=manifest
90
+ ),
83
91
  )
84
92
 
85
93
  app.enter()
arkitekt_next/qt/types.py CHANGED
@@ -1,6 +1,7 @@
1
1
  from arkitekt_next.apps.types import App, Fakts, Herre, Manifest
2
2
  from typing import List, Callable, Dict, Any
3
3
 
4
+
4
5
  class QtApp(App):
5
6
  """An app that is built with the easy builder"""
6
7
 
@@ -19,19 +20,14 @@ class QtApp(App):
19
20
  "on_enter": [],
20
21
  }
21
22
 
22
-
23
23
  def register_hook(self, hook_name: str, hook: Callable):
24
24
  """Register a hook"""
25
25
  self.hooks[hook_name].append(hook)
26
-
27
-
28
26
 
29
27
  def run(self):
30
28
  """Run the app"""
31
29
  self.services["rekuest"].run()
32
30
 
33
-
34
-
35
31
  async def __aenter__(self):
36
32
  await super().__aenter__()
37
33
  for service in self.services.values():
@@ -41,4 +37,4 @@ class QtApp(App):
41
37
 
42
38
  async def __aexit__(self, exc_type, exc_value, traceback):
43
39
  for service in self.services.values():
44
- await service.__aexit__(exc_type, exc_value, traceback)
40
+ await service.__aexit__(exc_type, exc_value, traceback)
@@ -21,9 +21,9 @@ class Registration(BaseModel):
21
21
 
22
22
  basic_requirements = {
23
23
  "lok": Requirement(
24
- service="live.arkitekt.lok",
25
- description="An instance of ArkitektNext Lok to authenticate the user",
26
- ),
24
+ service="live.arkitekt.lok",
25
+ description="An instance of ArkitektNext Lok to authenticate the user",
26
+ ),
27
27
  }
28
28
 
29
29
 
@@ -32,41 +32,47 @@ class ServiceBuilderRegistry:
32
32
  self.service_builders = {}
33
33
  self.requirements = basic_requirements
34
34
 
35
- def register(self, name: str, service_builder: Callable[[Herre, Fakts], object], requirement: Requirement):
35
+ def register(
36
+ self,
37
+ name: str,
38
+ service_builder: Callable[[Herre, Fakts], object],
39
+ requirement: Requirement,
40
+ ):
36
41
  self.service_builders[name] = service_builder
37
42
  self.requirements[name] = requirement
38
43
 
39
44
  def get(self, name):
40
45
  return self.services.get(name)
41
-
42
46
 
43
- def build_service_map(self, fakts: Fakts, herre: Herre, params: Params, manifest: Manifest):
44
- return {name: builder(fakts, herre, params, manifest) for name, builder in self.service_builders.items()}
45
-
47
+ def build_service_map(
48
+ self, fakts: Fakts, herre: Herre, params: Params, manifest: Manifest
49
+ ):
50
+ return {
51
+ name: builder(fakts, herre, params, manifest)
52
+ for name, builder in self.service_builders.items()
53
+ }
54
+
46
55
  def get_requirements(self):
47
56
  return self.requirements
48
-
49
-
50
-
51
-
52
57
 
53
58
 
54
59
  class SetupInfo:
55
60
  services: Dict[str, object]
56
61
 
57
62
 
58
-
59
63
  def check_and_import_services() -> ServiceBuilderRegistry:
60
64
 
61
- service_builder_registry = ServiceBuilderRegistry()
62
-
65
+ service_builder_registry = ServiceBuilderRegistry()
66
+
63
67
  # Function to load and call init_extensions from __rekuest__.py
64
68
  def load_and_call_init_extensions(module_name, rekuest_path):
65
69
  try:
66
- spec = importlib.util.spec_from_file_location(f"{module_name}.__arkitekt__", rekuest_path)
70
+ spec = importlib.util.spec_from_file_location(
71
+ f"{module_name}.__arkitekt__", rekuest_path
72
+ )
67
73
  rekuest_module = importlib.util.module_from_spec(spec)
68
74
  spec.loader.exec_module(rekuest_module)
69
- if hasattr(rekuest_module, 'init_services'):
75
+ if hasattr(rekuest_module, "init_services"):
70
76
  rekuest_module.init_services(service_builder_registry)
71
77
  logging.info(f"Called init_service function from {module_name}")
72
78
  else:
@@ -79,8 +85,10 @@ def check_and_import_services() -> ServiceBuilderRegistry:
79
85
  current_directory = os.getcwd()
80
86
  for item in os.listdir(current_directory):
81
87
  item_path = os.path.join(current_directory, item)
82
- if os.path.isdir(item_path) and os.path.isfile(os.path.join(item_path, '__init__.py')):
83
- rekuest_path = os.path.join(item_path, '__arkitekt__.py')
88
+ if os.path.isdir(item_path) and os.path.isfile(
89
+ os.path.join(item_path, "__init__.py")
90
+ ):
91
+ rekuest_path = os.path.join(item_path, "__arkitekt__.py")
84
92
  if os.path.isfile(rekuest_path):
85
93
  load_and_call_init_extensions(item, rekuest_path)
86
94
 
@@ -89,11 +97,15 @@ def check_and_import_services() -> ServiceBuilderRegistry:
89
97
  try:
90
98
  module_spec = importlib.util.find_spec(module_name)
91
99
  if module_spec and module_spec.origin:
92
- rekuest_path = os.path.join(os.path.dirname(module_spec.origin), '__arkitekt__.py')
100
+ rekuest_path = os.path.join(
101
+ os.path.dirname(module_spec.origin), "__arkitekt__.py"
102
+ )
93
103
  if os.path.isfile(rekuest_path):
94
104
  load_and_call_init_extensions(module_name, rekuest_path)
95
105
  except Exception as e:
96
- print(f"Failed to call init_extensions for installed package {module_name}: {e}")
106
+ print(
107
+ f"Failed to call init_extensions for installed package {module_name}: {e}"
108
+ )
97
109
  traceback.print_exc()
98
110
 
99
111
  return service_builder_registry
arkitekt_next/tqdm.py CHANGED
@@ -38,6 +38,8 @@ class tqdm(_tqdm):
38
38
  if self._assignationhelper:
39
39
  if self.last_arkitekt_next_perc + 0.05 < self.last_print_n / self.total:
40
40
  self.last_arkitekt_next_perc = self.last_print_n / self.total
41
- self._assignationhelper.progress(int(self.last_arkitekt_next_perc * 100))
41
+ self._assignationhelper.progress(
42
+ int(self.last_arkitekt_next_perc * 100)
43
+ )
42
44
 
43
45
  return z
arkitekt_next/utils.py CHANGED
@@ -1,6 +1,6 @@
1
1
  import os
2
2
  from arkitekt_next.model import Manifest
3
- import json
3
+ import json
4
4
 
5
5
 
6
6
  def create_arkitekt_next_folder(with_cache: bool = True) -> str:
@@ -40,8 +40,12 @@ def create_arkitekt_next_folder(with_cache: bool = True) -> str:
40
40
  return os.path.abspath(".arkitekt_next")
41
41
 
42
42
 
43
-
44
- def create_devcontainer_file(manifest: Manifest, flavour: str, docker_file_path, devcontainer_path=".devcontainer", ) -> None:
43
+ def create_devcontainer_file(
44
+ manifest: Manifest,
45
+ flavour: str,
46
+ docker_file_path,
47
+ devcontainer_path=".devcontainer",
48
+ ) -> None:
45
49
  """Creates a devcontainer.json file in the flavour folder.
46
50
 
47
51
  Parameters
@@ -55,20 +59,15 @@ def create_devcontainer_file(manifest: Manifest, flavour: str, docker_file_path,
55
59
  flavour_container = os.path.join(devcontainer_path, flavour)
56
60
  os.makedirs(os.path.join(devcontainer_path, flavour), exist_ok=True)
57
61
 
58
-
59
-
60
-
61
-
62
-
63
-
64
62
  devcontainer_file = os.path.join(flavour_container, "devcontainer.json")
65
63
 
66
-
67
64
  devcontainer_content = {}
68
65
  devcontainer_content["name"] = f"{manifest.identifier} {flavour} Devcontainer"
69
66
  devcontainer_content["build"] = {}
70
67
  devcontainer_content["build"]["dockerfile"] = os.path.join("..", docker_file_path)
71
- devcontainer_content["build"]["context"] = "../.." # This is the root of the project
68
+ devcontainer_content["build"][
69
+ "context"
70
+ ] = "../.." # This is the root of the project
72
71
  devcontainer_content["runArgs"] = ["--network=host"]
73
-
72
+
74
73
  json.dump(devcontainer_content, open(devcontainer_file, "w"), indent=4)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: arkitekt-next
3
- Version: 0.7.52
3
+ Version: 0.7.53
4
4
  Summary: client for the arkitekt_next platform
5
5
  License: MIT
6
6
  Author: jhnnsrs
@@ -1,22 +1,22 @@
1
1
  arkitekt_next/__blok__.py,sha256=gQqlPrUPSeB-b3XkvXRwDoRWMfG-vYN-3a2pWHNjz_E,1563
2
2
  arkitekt_next/__init__.py,sha256=KFM_HlnIQWX7hXSZnYba3rdmZrsBE69K58rwh8ewxoM,970
3
3
  arkitekt_next/apps/__init__.py,sha256=cx_5Y-RkJFkSQJH-hUEC_L3eW1jU2E426c4e6_csIyM,42
4
- arkitekt_next/apps/easy.py,sha256=8eu-0DCWit2Ok4SPw_QCyriBZHPnLc1oK9qxPUxnElg,3135
5
- arkitekt_next/apps/next.py,sha256=9Huduux5_11qvn3vTATsiGcZt_iJf_PstKIKK4QPyoE,1050
6
- arkitekt_next/apps/qt.py,sha256=4g2CXX4bnJQENJjz1yDQrAYcRTRghHZ11RwSG3WHyi4,3234
4
+ arkitekt_next/apps/easy.py,sha256=Nz7LzGua01bmLBiniEvnaSx_WPaNxq_sla4wYyTLaKQ,3235
5
+ arkitekt_next/apps/next.py,sha256=GF4RPwJZ1Lyhcwf_EEZvrWvu5gD6NgD0UHnM1Vxmnmk,1049
6
+ arkitekt_next/apps/qt.py,sha256=0y3TV0T2OtIgMJBbsdhNR5jZmyEHBFd1-ZmONz67omo,3306
7
7
  arkitekt_next/apps/service/__init__.py,sha256=p4iRwiFBKRq2lfbjDBzUR_GMhPWjkjWTa01ohuKz_L4,157
8
- arkitekt_next/apps/service/fakts.py,sha256=VH7cds-eK3RsxS2eFHOfRUEbxjc1Z82rKxwQOdso05c,2632
8
+ arkitekt_next/apps/service/fakts.py,sha256=72EYMeO-M1O9auZ509FA7m08pSIZ-Df_6JyNHL1iMt0,2633
9
9
  arkitekt_next/apps/service/fakts_next.py,sha256=3Mh8CLt91Zf5Kt04mPr74ROj15jS2j3PoaUcT6kwJPY,2791
10
- arkitekt_next/apps/service/fakts_qt.py,sha256=yccBooZVcBaJo6YQeychCZ96g2MQ1j_ED-k9UQu_pkY,3052
10
+ arkitekt_next/apps/service/fakts_qt.py,sha256=ba7Er9EZeeR9loScbzLn_Fe7AqL3ksJBcAGd9QzjHcs,3053
11
11
  arkitekt_next/apps/service/grant_registry.py,sha256=3om8YoVf_HFWEJbpjQCin1Zvm8Sz3yw-mGvLKDDgbrc,851
12
12
  arkitekt_next/apps/service/herre.py,sha256=DuIhyEujgXrYzhG2tKTMUgHkTScfg6UCX5eCV1vUPYI,760
13
13
  arkitekt_next/apps/service/herre_qt.py,sha256=GntkKHmwcQqEFab02SWwdd3xONo0fLVGEPQMKH6tlCE,1628
14
- arkitekt_next/apps/types.py,sha256=cKRqHyKlNcGamPUxzvY0wyz0sEI4sBPa4CnvFnT1sTo,1140
15
- arkitekt_next/bloks/__init__.py,sha256=gXny6-WJ3alV1__xveI_0wcvgDuglR1WB7v7-8h1Olo,30
14
+ arkitekt_next/apps/types.py,sha256=uozRXDDGJBL9hYCYGZF_XmtZ4ZvoLZeEEfJeL10Ve3U,1136
15
+ arkitekt_next/bloks/__init__.py,sha256=_4EeR63d6avQUWLG4mK2n_FvogTPQ_Jx6f2_RvNbWeA,29
16
16
  arkitekt_next/bloks/admin.py,sha256=MlUQUYCHxCWtSD75mVHgs3DcDa0s8_D6_AIBslnYjZw,1300
17
17
  arkitekt_next/bloks/arkitekt.py,sha256=N0WcdEr_x2TzDdpIW_WP8lVodYxRbOU4I5IP-aKGLLQ,1417
18
18
  arkitekt_next/bloks/base.py,sha256=6gsDc9sVYDqY4El2hhH32QiYHcYUd6eZQRgvhAuY2a0,6341
19
- arkitekt_next/bloks/config.py,sha256=SqJg9kB0AQ62b_WpIKgJ8Jpcqpc-AKN7gdEj87O-UGY,1268
19
+ arkitekt_next/bloks/config.py,sha256=YMQChT4SCdc_vvvbkAj_qGyA--6JVEHds7MalqUp3lw,1269
20
20
  arkitekt_next/bloks/fluss.py,sha256=b9hBV0nMy_0ctQIEQntGGaee3oDZy1lQKO1Eacc0zVs,997
21
21
  arkitekt_next/bloks/gateway.py,sha256=Qfw_SkJbyMe5GrZ8YJaaLVyZ2ZlKpacJjUFLBk97vbg,6692
22
22
  arkitekt_next/bloks/internal_docker.py,sha256=4jhKwfVKPCZzhkuEVq1iw4gIpc6_R0Cco-_s0L8PiZI,2891
@@ -25,29 +25,29 @@ arkitekt_next/bloks/livekit.py,sha256=yhre3PkIQwKGdGPFC-DhTID3rIbRQMts_UsAX9tw6-
25
25
  arkitekt_next/bloks/lok.py,sha256=-OoCFzf2ci8sBrYBnnmni-cJoAxuynUSj0kzWYpJznw,11444
26
26
  arkitekt_next/bloks/mikro.py,sha256=r7wc56pvFkPkxigx70xEu31dgpO6q3TviDQUM9oyQwM,1223
27
27
  arkitekt_next/bloks/minio.py,sha256=k7t1J46lO3eaBO9KdP7iYF--Go-m25dEmOwisbbOoVQ,5496
28
- arkitekt_next/bloks/mount.py,sha256=d14w7bMiaWbl5wgvanh4PwfIqEYsDEsw91360xfX0fU,1031
29
- arkitekt_next/bloks/namegen.py,sha256=0k4PYya5J4EQyt3XZ3UKhDlO_k29pmUEQSaklZGN8MA,1035
30
- arkitekt_next/bloks/orkestrator.py,sha256=26dEhBqlKP_ujM1bNyFiuXiy2Fl-yhwwsJjYcsoAo60,2078
31
- arkitekt_next/bloks/postgres.py,sha256=FRUF2fobUlU6OmK1VC7aN_WuX1NctLmZhzJJA1uOOeY,2773
32
- arkitekt_next/bloks/redis.py,sha256=_ddmcD3WwX7VA7zzzQ7-yjSM7f4reV0C8Pl70s7R2k8,2130
28
+ arkitekt_next/bloks/mount.py,sha256=Kfg4fthxMyQFkayWDsycadehlJPlN76ExzUiRU476Uc,1032
29
+ arkitekt_next/bloks/namegen.py,sha256=GMcSW6qOVGd2GGS7SQ4liPWbMhWyHLSOtnMVdnMOr0o,1035
30
+ arkitekt_next/bloks/orkestrator.py,sha256=bKuwpJlZWQT1cbxFewzaVMTs7Iano7tgXPBj21gesek,2116
31
+ arkitekt_next/bloks/postgres.py,sha256=jQ17O_EyIR7lpSmeTQIReEb2nFEM_IzKgqoYiZDu20I,2771
32
+ arkitekt_next/bloks/redis.py,sha256=Irfs9V6wGEr0VdDPmr2KfVFgQ8sDd733ieDVEKTkUZ0,2130
33
33
  arkitekt_next/bloks/rekuest.py,sha256=6mxRK1M5ua14rEeF2Wr0QjqV0eUgOLvdDJAuDpRDRUk,993
34
- arkitekt_next/bloks/secret.py,sha256=P4Z56FhcgVD0KbokhcMNAXwDjo_86rI99nWh3gUGXSQ,1014
34
+ arkitekt_next/bloks/secret.py,sha256=UmcLp1KWzBsjjwzT-YpVzFlhAaf7WE6-gaf-M9CH6VY,1013
35
35
  arkitekt_next/bloks/services/__init__.py,sha256=i9vGNd1lFBem3O2PblTouRzFVQkdwOYoUmqqU43dIWQ,592
36
- arkitekt_next/bloks/services/admin.py,sha256=OXMAHph5lABNPFsXm8aboWffJ7CzSSNvke7xpmj9raI,463
37
- arkitekt_next/bloks/services/config.py,sha256=BLtbKXRRWmuZxvaaksuxt9EiDcazYwKL_IUIRhXBin8,393
36
+ arkitekt_next/bloks/services/admin.py,sha256=qeNa9KkFJk0DSNV-Ses-vkLjC3xHtvHnVHJ3w0DPKOA,463
37
+ arkitekt_next/bloks/services/config.py,sha256=E0X-AweMxbbVQihqPuUEUzt9Y5J2DKY5sFX2efORtS0,378
38
38
  arkitekt_next/bloks/services/db.py,sha256=Lc8uL8xibz99-16YPxtB_ls6CP3dN_jCaOzJ9uZ8b_0,588
39
39
  arkitekt_next/bloks/services/gateway.py,sha256=X7ghhLXZ9hDQIMXMTkfBMcS9o9oc16y0C-b_3r3uwCo,847
40
- arkitekt_next/bloks/services/livekit.py,sha256=5u-GThgKsgXiiobEL4arm3JJOgNTZae15Q-75i-4D8g,366
40
+ arkitekt_next/bloks/services/livekit.py,sha256=5Qv1dcL2sQTveYvxZOuZPboNqn2wH0kyP6q7OkA6Kzs,357
41
41
  arkitekt_next/bloks/services/lok.py,sha256=fzOGum0VmcVaONUhTv4jHYky4WrFq2ygDAYJjBv2vAI,500
42
- arkitekt_next/bloks/services/mount.py,sha256=MDlwHl5cTfBO8IgkofuFjQBbfIMKDm_R9suWkiyVG48,289
43
- arkitekt_next/bloks/services/name.py,sha256=ZMDlZwnSaoIUj7STlpFo32nHKMuOibKzetYWSjh-t-c,254
42
+ arkitekt_next/bloks/services/mount.py,sha256=UAp7IzUNGYtqrh8ACAVgRtc5jYVGvzsKjKdegBdK_i0,273
43
+ arkitekt_next/bloks/services/name.py,sha256=ysr7b8Hn9yIeuBlqv9Zz-ngWKdQtwl3V1I1TeDvhLlA,254
44
44
  arkitekt_next/bloks/services/redis.py,sha256=W9CraIZJztFE1vQVCfxCxY4T_gBPRTM84VwFR8Hwtp8,472
45
45
  arkitekt_next/bloks/services/s3.py,sha256=_mk_9NdaeHRVZ__1M9CL1Ec1gSQKkzlOiQXse7MSx94,485
46
- arkitekt_next/bloks/services/secret.py,sha256=iUG1ZH_dR0tL48rueNOK2ILjEnyqNJjQCY-4KKrB_Zg,342
46
+ arkitekt_next/bloks/services/secret.py,sha256=cnZsH09gN9YRXBbmalZaFD2LcmWLlfm52mDTAnfuYT4,344
47
47
  arkitekt_next/bloks/services/socket.py,sha256=3MbENiJrwQbFKrpWxax56F24elnSD7S-olgycfuOX7s,423
48
48
  arkitekt_next/bloks/socket.py,sha256=YIrSKfQezrsKwRKDPdT1aXhlQzjgnx_UaNaQ9LiEfGY,1008
49
49
  arkitekt_next/bloks/tailscale.py,sha256=IkMBA1CwslMTOF1m2UUmE6qH_gbaEet2eXsPDgBxcew,2915
50
- arkitekt_next/builders.py,sha256=8HeQsNqyxpbFsnTrA9AAm0_BqxGjU1_ylS1Z-hbjAFw,6074
50
+ arkitekt_next/builders.py,sha256=wFIMPb4dSYuE-y-TiqZ8c_lxt1qMbgwQ4NnuMuj1rR8,7454
51
51
  arkitekt_next/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
52
  arkitekt_next/cli/commands/call/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
53
  arkitekt_next/cli/commands/call/local.py,sha256=YDummInGSb6lGKGiTlMSuXbE-Sz6dbfng6CsZaChCew,3338
@@ -62,15 +62,15 @@ arkitekt_next/cli/commands/init/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
62
62
  arkitekt_next/cli/commands/init/main.py,sha256=1ZbZDBECZRxlcnulycdS15s-uQ5ngx4xP3T1v-gkJ3U,5435
63
63
  arkitekt_next/cli/commands/inspect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
64
  arkitekt_next/cli/commands/inspect/main.py,sha256=Bu1vAZudkFCtjDnZAB8yQLDt-UKY9pJGhLBlEfDqtkw,626
65
- arkitekt_next/cli/commands/inspect/requirements.py,sha256=17rK6zviRpBDpaR-qpw5spb4ClTbKaG1d2ZQ-KiNV7I,2133
65
+ arkitekt_next/cli/commands/inspect/requirements.py,sha256=gQBx5OTsbLHTRwya4tMLOi8j_o28Gi4hRgvTWqGh5-4,2125
66
66
  arkitekt_next/cli/commands/inspect/templates.py,sha256=U99SLBYWiD-ZiIYV7pVWhQK3XWn1PLUIyTKzgSFF6MQ,2325
67
67
  arkitekt_next/cli/commands/inspect/variables.py,sha256=LonDlbS2qH1v-jD6RfEhTv-mxmgeBMKqD3oO2iDJRjE,2698
68
68
  arkitekt_next/cli/commands/kabinet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
- arkitekt_next/cli/commands/kabinet/build.py,sha256=A1C84ZNRtD1nMv5erJGQPx9DDx493VxDR7SRd2__7IA,8548
70
- arkitekt_next/cli/commands/kabinet/init.py,sha256=0BoQLBqtyXegBVAPY_flNyEsBi8yxjIHDZXipBTAjlQ,2951
69
+ arkitekt_next/cli/commands/kabinet/build.py,sha256=JyMgvp5X0j2DE4w3aLPyM6ffSulfFZ1mNkS4--3wlZM,8671
70
+ arkitekt_next/cli/commands/kabinet/init.py,sha256=FMozj1kzrgdoZ13VR9BrPU8aqSlSynRRyoTPSkerBzU,2970
71
71
  arkitekt_next/cli/commands/kabinet/main.py,sha256=U5EWekRTsMZZ34abWFfwilhzrd-zZtpZbl8RsLN_bC8,1008
72
72
  arkitekt_next/cli/commands/kabinet/publish.py,sha256=zbjnoMliowje1nEuKFolFX5pZA2D_DzLjXlSxBbD88k,3596
73
- arkitekt_next/cli/commands/kabinet/stage.py,sha256=eK_FgqTbGvaphmOH6jnllYWCkv0pI3qJaEnfWHoBvYs,1985
73
+ arkitekt_next/cli/commands/kabinet/stage.py,sha256=bXpC8fDmG6qFQVuLhqTCieOJnvFafj3Flg1BdIeciEw,2025
74
74
  arkitekt_next/cli/commands/kabinet/utils.py,sha256=x27qR7ksCuvASHkEAEaDuUAeuzjrZpzIp1W4lOF5f_0,1644
75
75
  arkitekt_next/cli/commands/kabinet/validate.py,sha256=MSSuwjdJKDtXB6rkjRmG-PPK6cVwTcOuCRpgPDQ0uVg,2490
76
76
  arkitekt_next/cli/commands/kabinet/wizard.py,sha256=vbW-EAitypCl1HRjsgHRuwc18hQgOzAU8C__6SWuAzQ,9148
@@ -86,7 +86,7 @@ arkitekt_next/cli/commands/run/main.py,sha256=0bNO3DqwbZ4ddMsDWbCGmlPD6Cs3Jlg4yh
86
86
  arkitekt_next/cli/commands/run/prod.py,sha256=EqDMa_eYNaffHZOBHGQEGNJVKdq8NHCgfoqK8yH63B4,1637
87
87
  arkitekt_next/cli/commands/run/utils.py,sha256=zH-MNNEfKgyOYQvwP6Ph8KUHVqH48fw3ZI6tiQ9unwQ,325
88
88
  arkitekt_next/cli/configs/base.yaml,sha256=9IJ7B4Fq3swHsLUbKn1MlhhzJKqDI1wnR5PAG_VKs8A,30097
89
- arkitekt_next/cli/constants.py,sha256=xHG2lfXw_4atx9B4ICAY45fbNbQN0UQAfdxZQbduz_w,1411
89
+ arkitekt_next/cli/constants.py,sha256=ONXKA8LRxXQkOQ56ZElVMZSTiaIH1LE_ikmUUKem98g,1410
90
90
  arkitekt_next/cli/dockerfiles/vanilla.dockerfile,sha256=jRbY9qqrlFGafXdNbc1AfSP_oyRiZFhdWWCveWYXSHA,168
91
91
  arkitekt_next/cli/errors.py,sha256=zLTjaCbun6qM2nTldjyZd-DvykqKn5A3Gn80uYdx7Vc,93
92
92
  arkitekt_next/cli/inspect.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
@@ -109,16 +109,16 @@ arkitekt_next/cli/schemas/rekuest_next.schema.graphql,sha256=LcYtS9AjTRlSBPllSIm
109
109
  arkitekt_next/cli/schemas/unlok.schema.graphql,sha256=fXR846snIBIqkuQ-PlYnSkQjkFVmM6NVZLlcMKgbr8E,18216
110
110
  arkitekt_next/cli/templates/filter.py,sha256=mD2jdNEXrZNagC_8WtuTisGJrGIbJDSylCvh19cF49I,650
111
111
  arkitekt_next/cli/templates/simple.py,sha256=IbcThJ5LryXVFQUdzxfHQCtzSNxEQWTxbD__Ygxsp4M,1171
112
- arkitekt_next/cli/texts.py,sha256=csMefyCnwnvDnriTy0VJ4L24VFIbcXoC9ayopP4RxIc,697
112
+ arkitekt_next/cli/texts.py,sha256=080QLAe8dhklkfoA8Yk6fLrQeRoUrTQLgWCZiWl7bNk,689
113
113
  arkitekt_next/cli/types.py,sha256=dMa_8Wht6cTe_bYS4Z6cpvW4dEc41FKip7RfCmN8o2E,10420
114
114
  arkitekt_next/cli/ui.py,sha256=BR_AOsBIIHwojI5otBzT_560-ep5Dw1xAHKsO2zOOJQ,3493
115
115
  arkitekt_next/cli/utils.py,sha256=rl1hfQIVzepLHPN_ZWuvfVH-IIVqcSfiFGyfNtL1XCo,445
116
116
  arkitekt_next/cli/validators.py,sha256=XkLrOrDzBJwcG1keTawa_NJPt3QIBhb5KjepeH4N1KA,719
117
117
  arkitekt_next/cli/vars.py,sha256=ev7cKDSPoik8hU9A_ohNpjRZX4FT1GYJaBoGLnxCKjU,982
118
118
  arkitekt_next/cli/versions/v1.yaml,sha256=rv2-F6FQbTZi_H6pSE_csdICdtKBObDdoo_asOFi43Y,12
119
- arkitekt_next/constants.py,sha256=6t_Mf36ZwJF43yd38MtQyzBxeW5aagisl3MPMxpFDNE,101
120
- arkitekt_next/model.py,sha256=6KYwSqWhI9CFhZIgip5ZddWleNBENGCAW2-ajtcOZSg,4476
121
- arkitekt_next/qt/__init__.py,sha256=Xr5XurpNwGCS0b8515W3ewsTMf2NUysN3LmQuIl7u1k,453
119
+ arkitekt_next/constants.py,sha256=OMNXceT6p9hxo3DLLH-632HtZqOe29E_1vrdeNiP4ZE,94
120
+ arkitekt_next/model.py,sha256=4ZZljn-UAK8EXltYTuzi_L7ygCVllqR0tDHOvMv1oW4,4476
121
+ arkitekt_next/qt/__init__.py,sha256=bvBdD3TKL10kc3mHupdRIY9qdkeZX_Bj-JN82Xv2MaI,455
122
122
  arkitekt_next/qt/assets/dark/gear.png,sha256=nYl1JZhcpwd7s5FgG2g-1RpkK7TH_QQRqJMmK6r0BpU,6296
123
123
  arkitekt_next/qt/assets/dark/green pulse.gif,sha256=cUd2F3Qlvjb7SnsU-LjGgeLTa8KoPgu3C-LNrixIQds,105386
124
124
  arkitekt_next/qt/assets/dark/orange pulse.gif,sha256=0gDvrRed0mzZZPHB4tP6vptx7myUCAa_hEVGdjRhNy8,94769
@@ -129,15 +129,15 @@ arkitekt_next/qt/assets/light/green pulse.gif,sha256=cUd2F3Qlvjb7SnsU-LjGgeLTa8K
129
129
  arkitekt_next/qt/assets/light/orange pulse.gif,sha256=0gDvrRed0mzZZPHB4tP6vptx7myUCAa_hEVGdjRhNy8,94769
130
130
  arkitekt_next/qt/assets/light/pink pulse.gif,sha256=rxd6ZTHSIG9JZuuHhi3jiSB_JYFBZpy7OWUeZETlhQ4,107513
131
131
  arkitekt_next/qt/assets/light/red pulse.gif,sha256=U7WLbZvSl5e-Ob5RmawtlC0Rh9VVHxkjDbGjj7NYVUo,108749
132
- arkitekt_next/qt/builders.py,sha256=XCrhvX6du_bHCMtS9rxXBoFdT-RStDewIudVXuyRGx8,2729
132
+ arkitekt_next/qt/builders.py,sha256=AI_4WSDlT3sk9IVtxnepZPjGO4gIYfHa0I40MFUgj6o,2808
133
133
  arkitekt_next/qt/magic_bar.py,sha256=Ni_c53A1yR5A6CGXMqBU-IPKzb3tVXL9r-K6e0rdRY8,18301
134
- arkitekt_next/qt/types.py,sha256=6amNiOhTVdBFKv9-RBkpu6g9T89O2GtQGRwJJbVFzis,1092
134
+ arkitekt_next/qt/types.py,sha256=jI9UHt1Rn-fxGZfeImTO9-yHh0zJPzk7CwvpnUXdirg,1085
135
135
  arkitekt_next/qt/utils.py,sha256=MgBPtPmCSBkIuATov3UgREESwxAHh77lWNNxyE7Qs48,773
136
- arkitekt_next/service_registry.py,sha256=pczUuP_Nve7OYwB7-oDBLIw6bkjZPnzL3xFca5TF1io,3405
137
- arkitekt_next/tqdm.py,sha256=DlrxPluHao7TvW-Cqgt0UokRS-fM2_ZNiWiddqvCqCc,1488
138
- arkitekt_next/utils.py,sha256=gmKWy9M51vimohmmaoIpAJ0CaB22TFP0w3JszRrwiak,2379
139
- arkitekt_next-0.7.52.dist-info/LICENSE,sha256=YZ2oRjC248t-GpoEyw7J13vwKYNG6zhYMaEAix6EzF0,1089
140
- arkitekt_next-0.7.52.dist-info/METADATA,sha256=EFGrbbhPSA4ziS33StspK2VYGUk53nzO7mWxsC3sfaY,5975
141
- arkitekt_next-0.7.52.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
142
- arkitekt_next-0.7.52.dist-info/entry_points.txt,sha256=-hxikQx4xZ6TiOnWVDOlTN_kcAISgGFvTHXIchsCHSc,60
143
- arkitekt_next-0.7.52.dist-info/RECORD,,
136
+ arkitekt_next/service_registry.py,sha256=0Qt3PNPRBlhIGWMeB04ZVmOmNI-cFCt_o2F6UrplKA8,3577
137
+ arkitekt_next/tqdm.py,sha256=FgrwpAwFTXBTEPY4rS7K4Gs8Wdjp74mUk4_OEU8hWZM,1526
138
+ arkitekt_next/utils.py,sha256=csBRBnxnErMRTilNBYAtIe0lPBb6E3uplqwsVGs5Wkk,2390
139
+ arkitekt_next-0.7.53.dist-info/LICENSE,sha256=YZ2oRjC248t-GpoEyw7J13vwKYNG6zhYMaEAix6EzF0,1089
140
+ arkitekt_next-0.7.53.dist-info/METADATA,sha256=4u0tTZp5-3ktcZFqEGDHFTiY8RS4ZkbKUMTu1ZJbvaw,5975
141
+ arkitekt_next-0.7.53.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
142
+ arkitekt_next-0.7.53.dist-info/entry_points.txt,sha256=-hxikQx4xZ6TiOnWVDOlTN_kcAISgGFvTHXIchsCHSc,60
143
+ arkitekt_next-0.7.53.dist-info/RECORD,,