arkitekt-next 0.8.47__tar.gz → 0.8.48__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.

Files changed (141) hide show
  1. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/PKG-INFO +5 -5
  2. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/__init__.py +4 -0
  3. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/apps/service/fakts_next.py +10 -12
  4. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/apps/service/fakts_qt.py +14 -13
  5. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/apps/service/herre.py +3 -1
  6. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/apps/types.py +0 -1
  7. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/base_models.py +3 -8
  8. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/lok.py +4 -1
  9. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/builders.py +0 -1
  10. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/delegate/script.py +0 -4
  11. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/gen/compile.py +0 -8
  12. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/gen/init.py +7 -14
  13. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/inspect/requirements.py +1 -4
  14. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/inspect/templates.py +1 -1
  15. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/io.py +9 -10
  16. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/texts.py +3 -1
  17. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/types.py +9 -3
  18. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/qt/magic_bar.py +1 -5
  19. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/qt/types.py +1 -0
  20. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/service_registry.py +35 -39
  21. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/utils.py +3 -2
  22. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/pyproject.toml +5 -5
  23. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/LICENSE +0 -0
  24. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/README.md +0 -0
  25. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/__blok__.py +0 -0
  26. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/apps/__init__.py +0 -0
  27. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/apps/service/__init__.py +0 -0
  28. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/apps/service/grant_registry.py +0 -0
  29. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/apps/service/herre_qt.py +0 -0
  30. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/__init__.py +0 -0
  31. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/admin.py +0 -0
  32. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/arkitekt.py +0 -0
  33. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/base.py +0 -0
  34. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/config.py +0 -0
  35. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/fluss.py +0 -0
  36. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/gateway.py +0 -0
  37. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/internal_docker.py +0 -0
  38. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/kabinet.py +0 -0
  39. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/livekit.py +0 -0
  40. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/mikro.py +0 -0
  41. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/minio.py +0 -0
  42. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/mount.py +0 -0
  43. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/namegen.py +0 -0
  44. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/orkestrator.py +0 -0
  45. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/postgres.py +0 -0
  46. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/redis.py +0 -0
  47. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/rekuest.py +0 -0
  48. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/secret.py +0 -0
  49. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/services/__init__.py +0 -0
  50. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/services/admin.py +0 -0
  51. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/services/config.py +0 -0
  52. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/services/db.py +0 -0
  53. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/services/gateway.py +0 -0
  54. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/services/livekit.py +0 -0
  55. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/services/lok.py +0 -0
  56. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/services/mount.py +0 -0
  57. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/services/name.py +0 -0
  58. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/services/redis.py +0 -0
  59. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/services/s3.py +0 -0
  60. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/services/secret.py +0 -0
  61. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/services/socket.py +0 -0
  62. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/socket.py +0 -0
  63. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/bloks/tailscale.py +0 -0
  64. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/__init__.py +0 -0
  65. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/call/__init__.py +0 -0
  66. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/call/local.py +0 -0
  67. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/call/main.py +0 -0
  68. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/call/remote.py +0 -0
  69. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/delegate/__init__.py +0 -0
  70. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/delegate/main.py +0 -0
  71. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/gen/__init__.py +0 -0
  72. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/gen/main.py +0 -0
  73. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/gen/watch.py +0 -0
  74. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/init/__init__.py +0 -0
  75. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/init/main.py +0 -0
  76. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/inspect/__init__.py +0 -0
  77. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/inspect/main.py +0 -0
  78. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/inspect/variables.py +0 -0
  79. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/kabinet/__init__.py +0 -0
  80. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/kabinet/build.py +0 -0
  81. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/kabinet/init.py +0 -0
  82. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/kabinet/main.py +0 -0
  83. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/kabinet/publish.py +0 -0
  84. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/kabinet/stage.py +0 -0
  85. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/kabinet/utils.py +0 -0
  86. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/kabinet/validate.py +0 -0
  87. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/kabinet/wizard.py +0 -0
  88. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/manifest/__init__.py +0 -0
  89. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/manifest/inspect.py +0 -0
  90. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/manifest/main.py +0 -0
  91. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/manifest/scopes.py +0 -0
  92. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/manifest/version.py +0 -0
  93. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/manifest/wizard.py +0 -0
  94. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/run/__init__.py +0 -0
  95. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/run/dev.py +0 -0
  96. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/run/main.py +0 -0
  97. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/run/prod.py +0 -0
  98. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/commands/run/utils.py +0 -0
  99. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/configs/base.yaml +0 -0
  100. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/constants.py +0 -0
  101. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/dockerfiles/vanilla.dockerfile +0 -0
  102. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/errors.py +0 -0
  103. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/inspect.py +0 -0
  104. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/main.py +0 -0
  105. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/options.py +0 -0
  106. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/schemas/fluss.schema.graphql +0 -0
  107. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/schemas/gucker.schema.graphql +0 -0
  108. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/schemas/kabinet.schema.graphql +0 -0
  109. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/schemas/kluster.schema.graphql +0 -0
  110. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/schemas/konviktion.schema.graphql +0 -0
  111. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/schemas/kuay.schema.graphql +0 -0
  112. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/schemas/mikro.schema.graphql +0 -0
  113. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/schemas/mikro_next.schema.graphql +0 -0
  114. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/schemas/napari.schema.graphql +0 -0
  115. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/schemas/omero_ark.schema.graphql +0 -0
  116. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/schemas/port.schema.graphql +0 -0
  117. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/schemas/rekuest.schema.graphql +0 -0
  118. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/schemas/rekuest_next.schema.graphql +0 -0
  119. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/schemas/unlok.schema.graphql +0 -0
  120. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/templates/filter.py +0 -0
  121. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/templates/simple.py +0 -0
  122. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/ui.py +0 -0
  123. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/utils.py +0 -0
  124. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/validators.py +0 -0
  125. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/vars.py +0 -0
  126. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/cli/versions/v1.yaml +0 -0
  127. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/constants.py +0 -0
  128. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/qt/__init__.py +0 -0
  129. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/qt/assets/dark/gear.png +0 -0
  130. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/qt/assets/dark/green pulse.gif +0 -0
  131. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/qt/assets/dark/orange pulse.gif +0 -0
  132. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/qt/assets/dark/pink pulse.gif +0 -0
  133. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/qt/assets/dark/red pulse.gif +0 -0
  134. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/qt/assets/light/gear.png +0 -0
  135. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/qt/assets/light/green pulse.gif +0 -0
  136. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/qt/assets/light/orange pulse.gif +0 -0
  137. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/qt/assets/light/pink pulse.gif +0 -0
  138. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/qt/assets/light/red pulse.gif +0 -0
  139. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/qt/builders.py +0 -0
  140. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/qt/utils.py +0 -0
  141. {arkitekt_next-0.8.47 → arkitekt_next-0.8.48}/arkitekt_next/tqdm.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: arkitekt-next
3
- Version: 0.8.47
3
+ Version: 0.8.48
4
4
  Summary: client for the arkitekt_next platform
5
5
  License: MIT
6
6
  Author: jhnnsrs
@@ -21,18 +21,18 @@ Provides-Extra: stream
21
21
  Requires-Dist: blok (>=0.0.19) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "blok")
22
22
  Requires-Dist: cryptography (>=40.0.8) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
23
23
  Requires-Dist: dokker (>=1.0.0)
24
- Requires-Dist: fakts-next (>=1.0.2)
24
+ Requires-Dist: fakts-next (>=1.0.3)
25
25
  Requires-Dist: fluss-next (>=0.1.95) ; extra == "all"
26
26
  Requires-Dist: herre-next (>=1.0.2)
27
27
  Requires-Dist: kabinet (>=0.1.45) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "all")
28
28
  Requires-Dist: koil (>=1.0.3)
29
29
  Requires-Dist: kraph (>=0.1.100) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "extended")
30
- Requires-Dist: lovekit (>=0.1.16) ; (python_version >= "3.10" and python_version < "4.0") and (extra == "stream")
30
+ Requires-Dist: lovekit (>=0.1.18) ; (python_version >= "3.10" and python_version < "4.0") and (extra == "stream")
31
31
  Requires-Dist: mikro-next (>=0.1.50) ; (python_version >= "3.10" and python_version < "4.0") and (extra == "all")
32
32
  Requires-Dist: namegenerator (>=1.0.6) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
33
33
  Requires-Dist: netifaces (>=0.11.0) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
34
- Requires-Dist: reaktion-next (>=0.1.85) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "all")
35
- Requires-Dist: rekuest-next (>=0.2.52) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "cli" or extra == "all")
34
+ Requires-Dist: reaktion-next (>=0.1.86) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "all")
35
+ Requires-Dist: rekuest-next (>=0.2.54) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "cli" or extra == "all")
36
36
  Requires-Dist: rich-click (>=1.6.1) ; extra == "cli" or extra == "all"
37
37
  Requires-Dist: semver (>=3.0.1) ; extra == "cli" or extra == "all"
38
38
  Requires-Dist: turms (>=0.8.2) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "cli" or extra == "all")
@@ -32,6 +32,8 @@ except ImportError as e:
32
32
 
33
33
  from .builders import easy, interactive
34
34
  from .apps.types import App
35
+ from fakts_next.helpers import afakt, fakt
36
+
35
37
 
36
38
  __all__ = [
37
39
  "App",
@@ -42,6 +44,8 @@ __all__ = [
42
44
  "jupy",
43
45
  "log",
44
46
  "alog",
47
+ "afakt",
48
+ "fakt",
45
49
  "progress",
46
50
  "aprogress",
47
51
  "scheduler",
@@ -37,7 +37,6 @@ def build_arkitekt_next_fakts_next(
37
37
  requested_client_kind=client_kind,
38
38
  )
39
39
 
40
-
41
40
  return ArkitektNextFaktsNext(
42
41
  grant=RemoteGrant(
43
42
  demander=demander,
@@ -45,10 +44,10 @@ def build_arkitekt_next_fakts_next(
45
44
  claimer=ClaimEndpointClaimer(),
46
45
  ),
47
46
  cache=FileCache(
48
- cache_file=f".arkitekt_next/cache/{identifier}-{version}_fakts_cache.json",
49
- hash=manifest.hash() + url,
50
- skip_cache=no_cache,
51
- ),
47
+ cache_file=f".arkitekt_next/cache/{identifier}-{version}_fakts_cache.json",
48
+ hash=manifest.hash() + url,
49
+ skip_cache=no_cache,
50
+ ),
52
51
  )
53
52
 
54
53
 
@@ -62,7 +61,6 @@ def build_arkitekt_next_redeem_fakts_next(
62
61
  identifier = manifest.identifier
63
62
  version = manifest.version
64
63
 
65
-
66
64
  return ArkitektNextFaktsNext(
67
65
  grant=RemoteGrant(
68
66
  demander=RedeemDemander(token=redeem_token, manifest=manifest),
@@ -70,9 +68,9 @@ def build_arkitekt_next_redeem_fakts_next(
70
68
  claimer=ClaimEndpointClaimer(),
71
69
  ),
72
70
  cache=FileCache(
73
- cache_file=f".arkitekt_next/cache/{identifier}-{version}_fakts_cache.json",
74
- hash=manifest.hash() + url,
75
- ),
71
+ cache_file=f".arkitekt_next/cache/{identifier}-{version}_fakts_cache.json",
72
+ hash=manifest.hash() + url,
73
+ ),
76
74
  )
77
75
 
78
76
 
@@ -91,7 +89,7 @@ def build_arkitekt_next_token_fakts_next(
91
89
  claimer=ClaimEndpointClaimer(),
92
90
  ),
93
91
  cache=FileCache(
94
- cache_file=f".arkitekt_next/cache/{identifier}-{version}_fakts_cache.json",
95
- hash=manifest.hash() + url,
96
- ),
92
+ cache_file=f".arkitekt_next/cache/{identifier}-{version}_fakts_cache.json",
93
+ hash=manifest.hash() + url,
94
+ ),
97
95
  )
@@ -12,6 +12,7 @@ from arkitekt_next.base_models import Manifest
12
12
  from qtpy import QtCore, QtWidgets
13
13
  from fakts_next.cache.qt.settings import QtSettingsCache
14
14
 
15
+
15
16
  class ArkitektNextFaktsQtRemoteGrant(RemoteGrant):
16
17
  """An ArkitektNext Fakts grant that uses Qt widgets for token and endpoint storage"""
17
18
 
@@ -38,19 +39,19 @@ def build_arkitekt_next_qt_fakts_next(
38
39
  return ArkitektNextFaktsQt(
39
40
  grant=ArkitektNextFaktsQtRemoteGrant(
40
41
  demander=DeviceCodeDemander(
41
- manifest=manifest,
42
- redirect_uri="http://127.0.0.1:6767",
43
- open_browser=True,
44
- requested_client_kind="desktop",
45
- ),
42
+ manifest=manifest,
43
+ redirect_uri="http://127.0.0.1:6767",
44
+ open_browser=True,
45
+ requested_client_kind="desktop",
46
+ ),
46
47
  discovery=QtSelectableDiscovery(
47
- widget=beacon_widget,
48
- settings=settings,
49
- allow_appending_slash=True,
50
- auto_protocols=["http", "https"],
51
- additional_beacons=["http://localhost"],
52
- ),
53
- claimer=ClaimEndpointClaimer()
48
+ widget=beacon_widget,
49
+ settings=settings,
50
+ allow_appending_slash=True,
51
+ auto_protocols=["http", "https"],
52
+ additional_beacons=["http://localhost"],
53
+ ),
54
+ claimer=ClaimEndpointClaimer(),
54
55
  ),
55
- cache=QtSettingsCache(settings=settings)
56
+ cache=QtSettingsCache(settings=settings),
56
57
  )
@@ -15,7 +15,9 @@ def build_arkitekt_next_herre_next(fakts_next: Fakts) -> ArkitektNextHerre:
15
15
  return ArkitektNextHerre(
16
16
  grant=RefreshGrant(
17
17
  grant=FaktsGrant(
18
- fakts=fakts_next, fakts_group="lok", grant_registry=ARKITEKT_GRANT_REGISTRY
18
+ fakts=fakts_next,
19
+ fakts_group="lok",
20
+ grant_registry=ARKITEKT_GRANT_REGISTRY,
19
21
  ),
20
22
  ),
21
23
  fetcher=FaktsUserFetcher(
@@ -42,7 +42,6 @@ class App(Composition):
42
42
  """Register a service"""
43
43
  self.services["rekuest"].register(*args, **kwargs)
44
44
 
45
-
46
45
  async def __aenter__(self):
47
46
  await super().__aenter__()
48
47
  for service in self.services.values():
@@ -17,8 +17,6 @@ class Requirement(BaseModel):
17
17
  """ The description is a human readable description of the requirement. Will be show to the user when asking for the requirement."""
18
18
 
19
19
 
20
-
21
-
22
20
  class Manifest(BaseModel):
23
21
  """A manifest for an app that can be installed in ArkitektNext
24
22
 
@@ -42,9 +40,7 @@ class Manifest(BaseModel):
42
40
  """ Scopes that this app should request from the user """
43
41
  logo: Optional[str]
44
42
  """ A URL to the logo of the app TODO: We should enforce this to be a http URL as local paths won't work """
45
- requirements: Optional[List[Requirement]] = Field(
46
- default_factory=list
47
- )
43
+ requirements: Optional[List[Requirement]] = Field(default_factory=list)
48
44
  """ Requirements that this app has TODO: What are the requirements? """
49
45
 
50
46
  class Config:
@@ -52,7 +48,7 @@ class Manifest(BaseModel):
52
48
 
53
49
  def hash(self):
54
50
  """Hash the manifest
55
-
51
+
56
52
  A manifest describes all the metadata of an app. This method
57
53
  hashes the manifest to create a unique hash for the current configuration of the app.
58
54
  This hash can be used to check if the app has changed since the last time it was run,
@@ -60,7 +56,7 @@ class Manifest(BaseModel):
60
56
 
61
57
  Returns:
62
58
  str: The hash of the manifest
63
-
59
+
64
60
  """
65
61
 
66
62
  unsorted_dict = self.model_dump()
@@ -76,7 +72,6 @@ class Manifest(BaseModel):
76
72
  json_dd = json.dumps(unsorted_dict, sort_keys=True)
77
73
  # Hash the JSON encoded dictionary
78
74
  return sha256(json_dd.encode()).hexdigest()
79
-
80
75
 
81
76
  @field_validator("identifier")
82
77
  def check_identifier(cls, v):
@@ -202,7 +202,10 @@ class LokBlok:
202
202
  depends_on.append(self.postgress_access.dependency)
203
203
 
204
204
  db_service = {
205
- "labels": ["fakts_next.service=live.arkitekt.lok", "fakts_next.builder=arkitekt.lok"],
205
+ "labels": [
206
+ "fakts_next.service=live.arkitekt.lok",
207
+ "fakts_next.builder=arkitekt.lok",
208
+ ],
206
209
  "depends_on": depends_on,
207
210
  "volumes": [
208
211
  "/var/run/docker.sock:/var/run/docker.sock",
@@ -98,7 +98,6 @@ def easy(
98
98
  """
99
99
  registry = registry or check_and_import_services()
100
100
 
101
-
102
101
  if identifier is None:
103
102
  identifier = __file__.split("/")[-1].replace(".py", "")
104
103
 
@@ -77,19 +77,15 @@ def script(
77
77
 
78
78
  builder = import_builder(builder)
79
79
 
80
-
81
-
82
80
  app = builder(
83
81
  **manifest.to_builder_dict(),
84
82
  **builder_kwargs,
85
83
  )
86
84
 
87
-
88
85
  rekuest: RekuestNext = app.services.get("rekuest")
89
86
 
90
87
  rekuest.agent.register_extension("cli", CLIExtension(" ".join(script_name)))
91
88
 
92
-
93
89
  panel = construct_run_panel(app)
94
90
  console.print(panel)
95
91
 
@@ -20,14 +20,6 @@ def compile(projects, config):
20
20
  """
21
21
  app_directory = os.getcwd()
22
22
 
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
23
  from turms.run import scan_folder_for_single_config, load_projects_from_configpath
32
24
  from turms.cli.main import generate_projects
33
25
 
@@ -55,7 +55,6 @@ def init(ctx, boring, services, config, documents, schemas, path, seperate_doc_d
55
55
 
56
56
  chosen_services = registry.service_builders
57
57
 
58
-
59
58
  if services:
60
59
  chosen_services = {
61
60
  key: service
@@ -70,21 +69,18 @@ def init(ctx, boring, services, config, documents, schemas, path, seperate_doc_d
70
69
 
71
70
  chosen_services = {service: chosen_services[service]}
72
71
 
73
-
74
-
75
-
76
72
  if os.path.exists(config):
77
73
  if click.confirm(
78
74
  f"GraphQL Config file already exists. Do you want to merge your choices?"
79
75
  ):
80
76
  file = yaml.load(open(config, "r"), Loader=yaml.FullLoader)
81
77
  projects = file.get("projects", {})
82
- click.echo(f"Merging {','.join(chosen_services.keys())} in {','.join(projects.keys())}...")
83
-
78
+ click.echo(
79
+ f"Merging {','.join(chosen_services.keys())} in {','.join(projects.keys())}..."
80
+ )
84
81
 
85
82
  has_done_something = False
86
83
 
87
-
88
84
  for key, service in chosen_services.items():
89
85
  try:
90
86
 
@@ -118,8 +114,6 @@ def init(ctx, boring, services, config, documents, schemas, path, seperate_doc_d
118
114
  out_path = os.path.join(app_schemas, key + ".schema.graphql")
119
115
  with open(out_path, "w") as f:
120
116
  f.write(schema)
121
-
122
-
123
117
 
124
118
  if schemas:
125
119
  project["schema"] = os.path.join(app_schemas, key + ".schema.graphql")
@@ -128,18 +122,17 @@ def init(ctx, boring, services, config, documents, schemas, path, seperate_doc_d
128
122
  os.path.join(app_documents, key) + "/**/*.graphql"
129
123
  )
130
124
 
131
-
132
-
133
125
  project["extensions"]["turms"]["out_dir"] = path
134
126
  project["extensions"]["turms"]["generated_name"] = f"{key}.py"
135
- del project["extensions"]["turms"]["documents"]
127
+ del project["extensions"]["turms"]["documents"]
136
128
  del project["schema_url"]
137
129
 
138
130
  projects[key] = project
139
131
 
140
132
  except Exception as e:
141
- raise ClickException(f"Failed to initialize project for {key}. Error: {e}") from e
142
-
133
+ raise ClickException(
134
+ f"Failed to initialize project for {key}. Error: {e}"
135
+ ) from e
143
136
 
144
137
  if has_done_something:
145
138
  graph_config_path = os.path.join(app_directory, config)
@@ -66,10 +66,7 @@ def requirements(
66
66
  logo=manifest.logo,
67
67
  )
68
68
 
69
- x = [
70
- item.model_dump(by_alias=True)
71
- for item in app.manifest.requirements
72
- ]
69
+ x = [item.model_dump(by_alias=True) for item in app.manifest.requirements]
73
70
  if machine_readable:
74
71
  print("--START_REQUIREMENTS--" + json.dumps(x) + "--END_REQUIREMENTS--")
75
72
 
@@ -73,7 +73,7 @@ def templates(
73
73
  if rekuest is None:
74
74
  console.print("No rekuest service found in app")
75
75
  return
76
-
76
+
77
77
  x = {
78
78
  key: item.model_dump(by_alias=True)
79
79
  for key, item in rekuest.agent.extensions[
@@ -10,7 +10,12 @@ from arkitekt_next.cli.types import (
10
10
  Flavour,
11
11
  DeploymentsConfigFile,
12
12
  )
13
- from kabinet.api.schema import InspectionInput, AppImageInput, DockerImageInput, ManifestInput
13
+ from kabinet.api.schema import (
14
+ InspectionInput,
15
+ AppImageInput,
16
+ DockerImageInput,
17
+ ManifestInput,
18
+ )
14
19
 
15
20
  import yaml
16
21
  import json
@@ -116,18 +121,11 @@ def get_builds(selected_run: Optional[str] = None) -> Dict[str, Build]:
116
121
  )
117
122
 
118
123
 
119
-
120
-
121
124
  def manifest_to_input(manifest: Manifest) -> ManifestInput:
122
125
 
123
126
  return ManifestInput(**manifest.model_dump(by_alias=True))
124
127
 
125
128
 
126
-
127
-
128
-
129
-
130
-
131
129
  def generate_build(
132
130
  build_run: str,
133
131
  build_id: str,
@@ -246,7 +244,6 @@ def generate_deployment(
246
244
  selectors=build.selectors,
247
245
  inspection=build.inspection,
248
246
  image=DockerImageInput(imageString=image, buildAt=datetime.datetime.now()),
249
-
250
247
  )
251
248
 
252
249
  if os.path.exists(config_file):
@@ -255,7 +252,9 @@ def generate_deployment(
255
252
  config.app_images.append(app_image)
256
253
  config.latest_app_image = app_image.app_image_id
257
254
  else:
258
- config = DeploymentsConfigFile(app_images=[app_image], latest_app_image=app_image.app_image_id)
255
+ config = DeploymentsConfigFile(
256
+ app_images=[app_image], latest_app_image=app_image.app_image_id
257
+ )
259
258
 
260
259
  with open(config_file, "w") as file:
261
260
  yaml.safe_dump(
@@ -15,4 +15,6 @@ LOGO = r"""
15
15
 
16
16
  """
17
17
 
18
- ERROR_EPILOGUE = "To find out more, visit [link=https://arkitekt.live]https://arkitekt.live[/link]"
18
+ ERROR_EPILOGUE = (
19
+ "To find out more, visit [link=https://arkitekt.live]https://arkitekt.live[/link]"
20
+ )
@@ -9,7 +9,12 @@ from arkitekt_next.base_models import Requirement
9
9
  from string import Formatter
10
10
  import os
11
11
 
12
- from kabinet.api.schema import AppImageInput, InspectionInput, SelectorInput, ManifestInput
12
+ from kabinet.api.schema import (
13
+ AppImageInput,
14
+ InspectionInput,
15
+ SelectorInput,
16
+ ManifestInput,
17
+ )
13
18
  from rekuest_next.api.schema import TemplateInput
14
19
 
15
20
  ALLOWED_BUILDER_KEYS = [
@@ -94,7 +99,9 @@ class Flavour(BaseModel):
94
99
  """Checks that the build_command templates are valid"""
95
100
 
96
101
  for v in value:
97
- for literal_text, field_name, format_spec, conversion in Formatter().parse(v):
102
+ for literal_text, field_name, format_spec, conversion in Formatter().parse(
103
+ v
104
+ ):
98
105
  if field_name is not None:
99
106
  assert (
100
107
  field_name in ALLOWED_BUILDER_KEYS
@@ -120,7 +127,6 @@ class Flavour(BaseModel):
120
127
  )
121
128
 
122
129
 
123
-
124
130
  class DeploymentsConfigFile(BaseModel):
125
131
  """The ConfigFile is a pydantic model that represents the deployments.yaml file
126
132
 
@@ -213,12 +213,8 @@ class Profile(QtWidgets.QDialog):
213
213
  self.infobar.addWidget(QtWidgets.QLabel(self.app.manifest.identifier))
214
214
  self.infobar.addWidget(QtWidgets.QLabel(self.app.manifest.version))
215
215
 
216
-
217
216
  self.unkonfigure_button = QtWidgets.QPushButton("Reconnect")
218
- self.unkonfigure_button.clicked.connect(
219
- lambda: self.bar.refresh_task.run(
220
- )
221
- )
217
+ self.unkonfigure_button.clicked.connect(lambda: self.bar.refresh_task.run())
222
218
 
223
219
  button_bar = QtWidgets.QHBoxLayout()
224
220
  self.infobar.addLayout(button_bar)
@@ -4,6 +4,7 @@ from typing import List, Callable, Dict, Any
4
4
 
5
5
  class QtApp(App):
6
6
  """An app that is built with the easy builder"""
7
+
7
8
  hooks: Dict[str, List[Callable]] = {
8
9
  "on_start": [],
9
10
  "on_stop": [],
@@ -14,10 +14,6 @@ from typing import runtime_checkable
14
14
  Params = Dict[str, str]
15
15
 
16
16
 
17
-
18
-
19
-
20
-
21
17
  class Registration(BaseModel):
22
18
  name: str
23
19
  requirement: Requirement
@@ -28,19 +24,17 @@ class Registration(BaseModel):
28
24
  @runtime_checkable
29
25
  class ArkitektService(Protocol):
30
26
 
31
-
32
27
  def get_service_name(self):
33
28
  pass
34
29
 
35
-
36
- def build_service(self, fakts: Fakts, herre: Herre, params: Params, manifest: Manifest):
30
+ def build_service(
31
+ self, fakts: Fakts, herre: Herre, params: Params, manifest: Manifest
32
+ ):
37
33
  pass
38
34
 
39
-
40
35
  def get_requirements(self):
41
36
  pass
42
37
 
43
-
44
38
  def get_graphql_schema(self):
45
39
  pass
46
40
 
@@ -48,32 +42,33 @@ class ArkitektService(Protocol):
48
42
  pass
49
43
 
50
44
 
51
-
52
45
  class BaseArkitektService:
53
46
 
54
-
55
47
  def get_service_name(self):
56
48
  raise NotImplementedError("get_service_name not implemented")
57
-
58
- def build_service(self, fakts: Fakts, herre: Herre, params: Params, manifest: Manifest):
49
+
50
+ def build_service(
51
+ self, fakts: Fakts, herre: Herre, params: Params, manifest: Manifest
52
+ ):
59
53
  raise NotImplementedError("build_service not implemented")
60
-
54
+
61
55
  def get_requirements(self):
62
56
  raise NotImplementedError("get_requirements not implemented")
63
-
57
+
64
58
  def get_graphql_schema(self):
65
59
  return None
66
-
60
+
67
61
  def get_turms_project(self):
68
62
  return None
69
-
70
63
 
71
64
 
72
- basic_requirements = [Requirement(
65
+ basic_requirements = [
66
+ Requirement(
73
67
  key="lok",
74
68
  service="live.arkitekt.lok",
75
69
  description="An instance of ArkitektNext Lok to authenticate the user",
76
- )]
70
+ )
71
+ ]
77
72
 
78
73
 
79
74
  class ServiceBuilderRegistry:
@@ -84,14 +79,13 @@ class ServiceBuilderRegistry:
84
79
  self,
85
80
  service: ArkitektService,
86
81
  ):
87
-
82
+
88
83
  name = service.get_service_name()
89
84
 
90
85
  if name not in self.service_builders:
91
86
  self.service_builders[name] = service
92
87
  else:
93
88
  raise ValueError(f"Service {name} already registered")
94
-
95
89
 
96
90
  def get(self, name):
97
91
  return self.services.get(name)
@@ -101,35 +95,32 @@ class ServiceBuilderRegistry:
101
95
  ):
102
96
  potentially_needed_services = {
103
97
  name: service.build_service(fakts, herre, params, manifest)
104
- for name, service in self.service_builders.items()
98
+ for name, service in self.service_builders.items()
105
99
  }
106
100
 
107
-
108
-
109
- return {key: value for key, value in potentially_needed_services.items() if value is not None}
110
-
111
-
101
+ return {
102
+ key: value
103
+ for key, value in potentially_needed_services.items()
104
+ if value is not None
105
+ }
112
106
 
113
107
  def get_requirements(self):
114
108
 
115
- requirements = [Requirement(
116
- key="lok",
117
- service="live.arkitekt.lok",
118
- description="An instance of ArkitektNext Lok to authenticate the user",
119
- )]
109
+ requirements = [
110
+ Requirement(
111
+ key="lok",
112
+ service="live.arkitekt.lok",
113
+ description="An instance of ArkitektNext Lok to authenticate the user",
114
+ )
115
+ ]
120
116
  taken_requirements = set()
121
117
 
122
-
123
118
  for service in self.service_builders.values():
124
119
  for requirement in service.get_requirements():
125
120
  if requirement.key not in taken_requirements:
126
121
  taken_requirements.add(requirement.key)
127
122
  requirements.append(requirement)
128
123
 
129
-
130
-
131
-
132
-
133
124
  sorted_requirements = sorted(requirements, key=lambda x: x.key)
134
125
 
135
126
  return sorted_requirements
@@ -145,6 +136,7 @@ import pkgutil
145
136
  import traceback
146
137
  import logging
147
138
 
139
+
148
140
  def check_and_import_services() -> ServiceBuilderRegistry:
149
141
  service_builder_registry = ServiceBuilderRegistry()
150
142
  processed_modules = set() # Track modules that have already been processed
@@ -164,10 +156,14 @@ def check_and_import_services() -> ServiceBuilderRegistry:
164
156
  try:
165
157
  service_builder_registry.register(service)
166
158
  except ValueError as e:
167
- print(f"Failed to register service {service}: Another service with the same name is already registered {service_builder_registry.service_builders}")
159
+ print(
160
+ f"Failed to register service {service}: Another service with the same name is already registered {service_builder_registry.service_builders}"
161
+ )
168
162
  logging.info(f"Called build_services function from {module_name}")
169
163
  else:
170
- print(f"Discovered Arkitekt-like module (containing __arkitekt__) that doesn't conform with the __arkitekt__ spec. No build_services function in {module_name}.__arkitekt__")
164
+ print(
165
+ f"Discovered Arkitekt-like module (containing __arkitekt__) that doesn't conform with the __arkitekt__ spec. No build_services function in {module_name}.__arkitekt__"
166
+ )
171
167
  processed_modules.add(module_name) # Mark this module as processed
172
168
  except Exception as e:
173
169
  print(f"Failed to call init_services for {module_name}: {e}")
@@ -57,14 +57,15 @@ def create_devcontainer_file(
57
57
  os.makedirs(devcontainer_path, exist_ok=True)
58
58
 
59
59
  flavour_container = os.path.join(devcontainer_path, flavour)
60
- os.makedirs(os.path.join(devcontainer_path, flavour), exist_ok=True)
60
+ os.makedirs(flavour_container, exist_ok=True)
61
61
 
62
62
  devcontainer_file = os.path.join(flavour_container, "devcontainer.json")
63
63
 
64
+
64
65
  devcontainer_content = {}
65
66
  devcontainer_content["name"] = f"{manifest.identifier} {flavour} Devcontainer"
66
67
  devcontainer_content["build"] = {}
67
- devcontainer_content["build"]["dockerfile"] = os.path.join("..", docker_file_path)
68
+ devcontainer_content["build"]["dockerfile"] = os.path.relpath(docker_file_path, flavour_container)
68
69
  devcontainer_content["build"][
69
70
  "context"
70
71
  ] = "../.." # This is the root of the project
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "arkitekt-next"
3
- version = "0.8.47"
3
+ version = "0.8.48"
4
4
  description = "client for the arkitekt_next platform"
5
5
  authors = ["jhnnsrs <jhnnsrs@gmail.com>"]
6
6
  license = "MIT"
@@ -10,15 +10,15 @@ readme = "README.md"
10
10
  [tool.poetry.dependencies]
11
11
  python = "^3.8"
12
12
  herre-next = ">=1.0.2"
13
- fakts-next = ">=1.0.2"
13
+ fakts-next = ">=1.0.3"
14
14
  kraph = { version = ">=0.1.100", python = "^3.8", optional = true }
15
15
  mikro-next = { version = ">=0.1.50", python = "^3.10", optional = true }
16
16
  kabinet = { version = ">=0.1.45", optional = true, python = "^3.9" }
17
17
  fluss-next = { version = ">=0.1.95", optional = true }
18
- reaktion-next= { version = ">=0.1.85", python = "^3.8", optional = true }
19
- rekuest-next= { version = ">=0.2.52", python = "^3.8", optional = true }
18
+ reaktion-next= { version = ">=0.1.86", python = "^3.8", optional = true }
19
+ rekuest-next= { version = ">=0.2.54", python = "^3.8", optional = true }
20
20
  unlok-next= { version = ">=0.1.87", python = "^3.8", optional = true }
21
- lovekit = { version = ">=0.1.16", python = "^3.10", optional = true }
21
+ lovekit = { version = ">=0.1.18", python = "^3.10", optional = true }
22
22
  rich-click = { version = ">=1.6.1", optional = true }
23
23
  watchfiles = { version = ">=0.18.1", optional = true }
24
24
  turms = { version = ">=0.8.2", python = "^3.9", optional = true }
File without changes
File without changes