arkitekt-next 0.7.38__tar.gz → 0.7.40__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 (154) hide show
  1. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/PKG-INFO +11 -11
  2. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/fluss.py +8 -11
  3. arkitekt_next-0.7.40/arkitekt_next/bloks/funcs.py +134 -0
  4. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/gateway.py +45 -8
  5. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/kabinet.py +13 -13
  6. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/livekit.py +10 -15
  7. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/lok.py +37 -34
  8. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/mikro.py +13 -12
  9. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/minio.py +28 -10
  10. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/rekuest.py +13 -13
  11. arkitekt_next-0.7.40/arkitekt_next/bloks/services/__init__.py +27 -0
  12. arkitekt_next-0.7.40/arkitekt_next/bloks/services/gateway.py +27 -0
  13. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/services/lok.py +4 -11
  14. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/services/redis.py +2 -11
  15. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/services/s3.py +3 -8
  16. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/pyproject.toml +8 -12
  17. arkitekt_next-0.7.38/arkitekt_next/bloks/funcs.py +0 -86
  18. arkitekt_next-0.7.38/arkitekt_next/bloks/services/gateway.py +0 -30
  19. arkitekt_next-0.7.38/arkitekt_next/cli/commands/server/__init__.py +0 -0
  20. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/LICENSE +0 -0
  21. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/README.md +0 -0
  22. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/__blok__.py +0 -0
  23. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/__init__.py +0 -0
  24. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/apps/__init__.py +0 -0
  25. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/apps/easy.py +0 -0
  26. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/apps/next.py +0 -0
  27. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/apps/qt.py +0 -0
  28. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/apps/service/__init__.py +0 -0
  29. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/apps/service/fakts.py +0 -0
  30. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/apps/service/fakts_next.py +0 -0
  31. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/apps/service/fakts_qt.py +0 -0
  32. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/apps/service/grant_registry.py +0 -0
  33. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/apps/service/herre.py +0 -0
  34. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/apps/service/herre_qt.py +0 -0
  35. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/apps/types.py +0 -0
  36. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/__init__.py +0 -0
  37. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/admin.py +0 -0
  38. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/arkitekt.py +0 -0
  39. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/config.py +0 -0
  40. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/internal_docker.py +0 -0
  41. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/mount.py +0 -0
  42. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/namegen.py +0 -0
  43. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/postgres.py +0 -0
  44. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/redis.py +0 -0
  45. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/secret.py +0 -0
  46. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/services/admin.py +0 -0
  47. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/services/config.py +0 -0
  48. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/services/db.py +0 -0
  49. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/services/livekit.py +0 -0
  50. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/services/mount.py +0 -0
  51. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/services/name.py +0 -0
  52. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/services/secret.py +0 -0
  53. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/services/socket.py +0 -0
  54. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/socket.py +0 -0
  55. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/bloks/tailscale.py +0 -0
  56. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/builders.py +0 -0
  57. {arkitekt_next-0.7.38/arkitekt_next/bloks/services → arkitekt_next-0.7.40/arkitekt_next/cli}/__init__.py +0 -0
  58. {arkitekt_next-0.7.38/arkitekt_next/cli → arkitekt_next-0.7.40/arkitekt_next/cli/commands/call}/__init__.py +0 -0
  59. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/call/local.py +0 -0
  60. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/call/main.py +0 -0
  61. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/call/remote.py +0 -0
  62. {arkitekt_next-0.7.38/arkitekt_next/cli/commands/call → arkitekt_next-0.7.40/arkitekt_next/cli/commands/gen}/__init__.py +0 -0
  63. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/gen/compile.py +0 -0
  64. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/gen/init.py +0 -0
  65. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/gen/main.py +0 -0
  66. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/gen/watch.py +0 -0
  67. {arkitekt_next-0.7.38/arkitekt_next/cli/commands/gen → arkitekt_next-0.7.40/arkitekt_next/cli/commands/init}/__init__.py +0 -0
  68. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/init/main.py +0 -0
  69. {arkitekt_next-0.7.38/arkitekt_next/cli/commands/init → arkitekt_next-0.7.40/arkitekt_next/cli/commands/inspect}/__init__.py +0 -0
  70. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/inspect/main.py +0 -0
  71. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/inspect/requirements.py +0 -0
  72. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/inspect/templates.py +0 -0
  73. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/inspect/variables.py +0 -0
  74. {arkitekt_next-0.7.38/arkitekt_next/cli/commands/inspect → arkitekt_next-0.7.40/arkitekt_next/cli/commands/kabinet}/__init__.py +0 -0
  75. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/kabinet/build.py +0 -0
  76. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/kabinet/init.py +0 -0
  77. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/kabinet/main.py +0 -0
  78. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/kabinet/publish.py +0 -0
  79. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/kabinet/stage.py +0 -0
  80. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/kabinet/utils.py +0 -0
  81. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/kabinet/validate.py +0 -0
  82. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/kabinet/wizard.py +0 -0
  83. {arkitekt_next-0.7.38/arkitekt_next/cli/commands/kabinet → arkitekt_next-0.7.40/arkitekt_next/cli/commands/manifest}/__init__.py +0 -0
  84. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/manifest/inspect.py +0 -0
  85. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/manifest/main.py +0 -0
  86. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/manifest/scopes.py +0 -0
  87. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/manifest/version.py +0 -0
  88. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/manifest/wizard.py +0 -0
  89. {arkitekt_next-0.7.38/arkitekt_next/cli/commands/manifest → arkitekt_next-0.7.40/arkitekt_next/cli/commands/run}/__init__.py +0 -0
  90. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/run/dev.py +0 -0
  91. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/run/main.py +0 -0
  92. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/run/prod.py +0 -0
  93. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/run/utils.py +0 -0
  94. {arkitekt_next-0.7.38/arkitekt_next/cli/commands/run → arkitekt_next-0.7.40/arkitekt_next/cli/commands/server}/__init__.py +0 -0
  95. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/server/down.py +0 -0
  96. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/server/init.py +0 -0
  97. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/server/inspect.py +0 -0
  98. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/server/main.py +0 -0
  99. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/server/open.py +0 -0
  100. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/server/remove.py +0 -0
  101. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/server/stop.py +0 -0
  102. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/server/up.py +0 -0
  103. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/commands/server/utils.py +0 -0
  104. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/configs/base.yaml +0 -0
  105. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/constants.py +0 -0
  106. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/dockerfiles/vanilla.dockerfile +0 -0
  107. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/errors.py +0 -0
  108. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/inspect.py +0 -0
  109. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/io.py +0 -0
  110. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/main.py +0 -0
  111. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/options.py +0 -0
  112. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/schemas/fluss.schema.graphql +0 -0
  113. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/schemas/gucker.schema.graphql +0 -0
  114. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/schemas/kabinet.schema.graphql +0 -0
  115. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/schemas/kluster.schema.graphql +0 -0
  116. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/schemas/konviktion.schema.graphql +0 -0
  117. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/schemas/kuay.schema.graphql +0 -0
  118. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/schemas/mikro.schema.graphql +0 -0
  119. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/schemas/mikro_next.schema.graphql +0 -0
  120. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/schemas/napari.schema.graphql +0 -0
  121. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/schemas/omero_ark.schema.graphql +0 -0
  122. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/schemas/port.schema.graphql +0 -0
  123. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/schemas/rekuest.schema.graphql +0 -0
  124. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/schemas/rekuest_next.schema.graphql +0 -0
  125. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/schemas/unlok.schema.graphql +0 -0
  126. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/templates/filter.py +0 -0
  127. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/templates/simple.py +0 -0
  128. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/texts.py +0 -0
  129. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/types.py +0 -0
  130. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/ui.py +0 -0
  131. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/utils.py +0 -0
  132. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/validators.py +0 -0
  133. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/vars.py +0 -0
  134. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/cli/versions/v1.yaml +0 -0
  135. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/constants.py +0 -0
  136. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/model.py +0 -0
  137. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/qt/__init__.py +0 -0
  138. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/qt/assets/dark/gear.png +0 -0
  139. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/qt/assets/dark/green pulse.gif +0 -0
  140. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/qt/assets/dark/orange pulse.gif +0 -0
  141. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/qt/assets/dark/pink pulse.gif +0 -0
  142. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/qt/assets/dark/red pulse.gif +0 -0
  143. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/qt/assets/light/gear.png +0 -0
  144. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/qt/assets/light/green pulse.gif +0 -0
  145. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/qt/assets/light/orange pulse.gif +0 -0
  146. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/qt/assets/light/pink pulse.gif +0 -0
  147. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/qt/assets/light/red pulse.gif +0 -0
  148. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/qt/builders.py +0 -0
  149. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/qt/magic_bar.py +0 -0
  150. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/qt/types.py +0 -0
  151. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/qt/utils.py +0 -0
  152. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/service_registry.py +0 -0
  153. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/tqdm.py +0 -0
  154. {arkitekt_next-0.7.38 → arkitekt_next-0.7.40}/arkitekt_next/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: arkitekt-next
3
- Version: 0.7.38
3
+ Version: 0.7.40
4
4
  Summary: client for the arkitekt_next platform
5
5
  License: MIT
6
6
  Author: jhnnsrs
@@ -14,25 +14,25 @@ Classifier: Programming Language :: Python :: 3.10
14
14
  Classifier: Programming Language :: Python :: 3.11
15
15
  Classifier: Programming Language :: Python :: 3.12
16
16
  Provides-Extra: all
17
+ Provides-Extra: blok
17
18
  Provides-Extra: cli
18
- Provides-Extra: server
19
- Requires-Dist: blok (>=0.0.8) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "all" or extra == "server")
20
- Requires-Dist: cryptography (>=40.0.8) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "all" or extra == "server")
19
+ Requires-Dist: blok (>=0.0.9) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
20
+ Requires-Dist: cryptography (>=40.0.8) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
21
21
  Requires-Dist: dokker (>=0.1.21)
22
22
  Requires-Dist: fakts (>=0.5.0)
23
- Requires-Dist: fluss-next (>=0.1.69) ; extra == "all"
23
+ Requires-Dist: fluss-next (>=0.1.70) ; extra == "all"
24
24
  Requires-Dist: herre (>=0.4.3)
25
- Requires-Dist: kabinet (>=0.1.7) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "all")
25
+ Requires-Dist: kabinet (>=0.1.8) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "all")
26
26
  Requires-Dist: koil (>=0.3.6)
27
- Requires-Dist: mikro-next (>=0.1.24) ; (python_version >= "3.10" and python_version < "4.0") and (extra == "all")
28
- Requires-Dist: namegenerator (>=1.0.6) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "all" or extra == "server")
29
- Requires-Dist: netifaces (>=0.11.0) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "all" or extra == "server")
27
+ Requires-Dist: mikro-next (>=0.1.25) ; (python_version >= "3.10" and python_version < "4.0") and (extra == "all")
28
+ Requires-Dist: namegenerator (>=1.0.6) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
29
+ Requires-Dist: netifaces (>=0.11.0) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
30
30
  Requires-Dist: reaktion-next (>=0.1.59) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "all")
31
- Requires-Dist: rekuest-next (>=0.2.13) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "cli" or extra == "all")
31
+ Requires-Dist: rekuest-next (>=0.2.14) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "cli" or extra == "all")
32
32
  Requires-Dist: rich-click (>=1.6.1) ; extra == "cli" or extra == "all"
33
33
  Requires-Dist: semver (>=3.0.1) ; extra == "cli" or extra == "all"
34
34
  Requires-Dist: turms (>=0.5.0) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "cli" or extra == "all")
35
- Requires-Dist: unlok-next (>=0.1.64) ; python_version >= "3.8" and python_version < "4.0"
35
+ Requires-Dist: unlok-next (>=0.1.65) ; python_version >= "3.8" and python_version < "4.0"
36
36
  Requires-Dist: watchfiles (>=0.18.1) ; extra == "cli" or extra == "all"
37
37
  Description-Content-Type: text/markdown
38
38
 
@@ -1,5 +1,8 @@
1
1
  import secrets
2
- from arkitekt_next.bloks.funcs import create_default_service_yaml
2
+ from arkitekt_next.bloks.funcs import (
3
+ create_default_service_dependencies,
4
+ create_default_service_yaml,
5
+ )
3
6
  from blok import blok, InitContext, ExecutionContext, Option
4
7
  from blok.tree import YamlFile, Repo
5
8
 
@@ -21,17 +24,11 @@ class FlussBlok:
21
24
  self.secret_key = secrets.token_hex(16)
22
25
  self.ensured_repos = []
23
26
 
27
+ def get_builder(self):
28
+ return "arkitekt.generic"
29
+
24
30
  def get_dependencies(self):
25
- return [
26
- "live.arkitekt.mount",
27
- "live.arkitekt.config",
28
- "live.arkitekt.gateway",
29
- "live.arkitekt.postgres",
30
- "live.arkitekt.lok",
31
- "live.arkitekt.admin",
32
- "live.arkitekt.redis",
33
- "live.arkitekt.s3",
34
- ]
31
+ return create_default_service_dependencies()
35
32
 
36
33
  def preflight(self, init: InitContext):
37
34
  for key, value in init.kwargs.items():
@@ -0,0 +1,134 @@
1
+ from blok import blok, InitContext, Option
2
+ from blok.tree import YamlFile, Repo
3
+ from typing import Protocol
4
+ from blok.utils import check_protocol_compliance
5
+ from dataclasses import asdict
6
+ from arkitekt_next.bloks.services import (
7
+ GatewayService,
8
+ DBService,
9
+ RedisService,
10
+ S3Service,
11
+ ConfigService,
12
+ MountService,
13
+ AdminService,
14
+ SecretService,
15
+ LokService,
16
+ )
17
+
18
+ from blok.bloks.services.dns import DnsService
19
+
20
+
21
+ class DefaultService(Protocol):
22
+ service_name: str
23
+ host: str
24
+ buckets: list[str]
25
+ scopes: dict[str, str]
26
+ secret_key: str
27
+ mount_repo: bool
28
+ build_repo: bool
29
+
30
+ def get_identifier(self) -> str: ...
31
+
32
+ def get_builder(self) -> str: ...
33
+
34
+
35
+ def create_default_service_dependencies():
36
+ return [
37
+ DnsService,
38
+ GatewayService,
39
+ DBService,
40
+ RedisService,
41
+ S3Service,
42
+ ConfigService,
43
+ MountService,
44
+ AdminService,
45
+ SecretService,
46
+ LokService,
47
+ ]
48
+
49
+
50
+ def create_default_service_yaml(
51
+ init: InitContext,
52
+ self: DefaultService,
53
+ ) -> YamlFile:
54
+ check_protocol_compliance(self, DefaultService)
55
+ deps = init.dependencies
56
+
57
+ init.get_service(LokService).register_scopes(self.scopes)
58
+
59
+ path_name = self.host
60
+
61
+ gateway_access = init.get_service(GatewayService).expose(path_name, 80, self.host)
62
+
63
+ postgress_access = init.get_service(DBService).register_db(self.host)
64
+ redis_access = init.get_service(RedisService).register()
65
+ lok_access = init.get_service(LokService).retrieve_credentials()
66
+ admin_access = init.get_service(AdminService).retrieve()
67
+ minio_access = init.get_service(S3Service).create_buckets(self.buckets)
68
+ lok_labels = init.get_service(LokService).retrieve_labels(
69
+ self.get_identifier(), self.get_builder()
70
+ )
71
+
72
+ dns_result = init.get_service(DnsService).get_dns_result()
73
+
74
+ csrf_trusted_origins = []
75
+ for hostname in dns_result.hostnames:
76
+ csrf_trusted_origins.append(f"http://{hostname}")
77
+ csrf_trusted_origins.append(f"https://{hostname}")
78
+
79
+ configuration = YamlFile(
80
+ **{
81
+ "db": asdict(postgress_access),
82
+ "django": {
83
+ "admin": asdict(admin_access),
84
+ "debug": True,
85
+ "hosts": ["*"],
86
+ "secret_key": self.secret_key,
87
+ },
88
+ "redis": asdict(redis_access),
89
+ "lok": asdict(lok_access),
90
+ "s3": asdict(minio_access),
91
+ "scopes": self.scopes,
92
+ "force_script_name": path_name,
93
+ "csrf_trusted_origins": csrf_trusted_origins,
94
+ }
95
+ )
96
+
97
+ config_mount = init.get_service(ConfigService).register_config(
98
+ f"{self.host}.yaml", configuration
99
+ )
100
+
101
+ depends_on = []
102
+
103
+ if redis_access.dependency:
104
+ depends_on.append(redis_access.dependency)
105
+
106
+ if postgress_access.dependency:
107
+ depends_on.append(postgress_access.dependency)
108
+
109
+ if minio_access.dependency:
110
+ depends_on.append(minio_access.dependency)
111
+
112
+ service = {
113
+ "labels": lok_labels,
114
+ "volumes": [f"{config_mount}:/workspace/config.yaml"],
115
+ "depends_on": depends_on,
116
+ }
117
+
118
+ if self.mount_repo:
119
+ mount = init.get_service(MountService).register_mount(
120
+ self.host, Repo(self.repo)
121
+ )
122
+ service["volumes"].extend([f"{mount}:/workspace"])
123
+
124
+ if self.build_repo:
125
+ mount = init.get_service(MountService).register_mount(
126
+ self.host, Repo(self.repo)
127
+ )
128
+ service["build"] = mount
129
+ else:
130
+ service["image"] = self.image
131
+
132
+ service["command"] = self.command
133
+
134
+ return service
@@ -16,16 +16,25 @@ class ExposedHost(BaseModel):
16
16
  stip_prefix: bool = True
17
17
 
18
18
 
19
+ class ExpostedToHost(BaseModel):
20
+ port: int
21
+ host: str
22
+ to: str
23
+ tls: bool = False
24
+
25
+
19
26
  class ExposedPort(BaseModel):
20
27
  port: int
21
28
  host: str
22
29
  tls: bool = False
30
+ to: int
23
31
 
24
32
 
25
33
  @blok("live.arkitekt.gateway")
26
34
  class GatewayBlok:
27
35
  def __init__(self) -> None:
28
36
  self.exposed_hosts = {}
37
+ self.exposed_to_hosts = {}
29
38
  self.http_expose_default = None
30
39
  self.exposed_ports = {}
31
40
  self.with_certer = True
@@ -38,10 +47,10 @@ class GatewayBlok:
38
47
 
39
48
  def get_internal_host(self):
40
49
  return "caddy"
41
-
50
+
42
51
  def get_https_port(self):
43
52
  return 443
44
-
53
+
45
54
  def get_http_port(self):
46
55
  return 80
47
56
 
@@ -52,7 +61,10 @@ class GatewayBlok:
52
61
  self.public_ips = dns.get_dns_result().ip_addresses
53
62
  self.public_hosts = dns.get_dns_result().hostnames
54
63
 
55
- def build(self, context: ExecutionContext,):
64
+ def build(
65
+ self,
66
+ context: ExecutionContext,
67
+ ):
56
68
  caddyfile = """
57
69
  {
58
70
  auto_https off
@@ -64,13 +76,13 @@ class GatewayBlok:
64
76
  caddyfile += f"""
65
77
  :{port.port} {{
66
78
  tls /certs/caddy.crt /certs/caddy.key
67
- reverse_proxy {port.host}:{port.port}
79
+ reverse_proxy {port.host}:{port.to}
68
80
  }}
69
81
  """
70
82
  else:
71
83
  caddyfile += f"""
72
84
  :{port.port} {{
73
- reverse_proxy {port.host}:{port.port}
85
+ reverse_proxy {port.host}:{port.to}
74
86
  }}
75
87
  """
76
88
 
@@ -112,6 +124,15 @@ class GatewayBlok:
112
124
  }}
113
125
  """
114
126
 
127
+ for path_name, exposed_to_host in self.exposed_to_hosts.items():
128
+ caddyfile += f"""
129
+ @{path_name} path /{path_name}*
130
+ handle @{path_name} {{
131
+ rewrite * /{exposed_to_host.to}{{uri}}
132
+ reverse_proxy {exposed_to_host.host}:{exposed_to_host.port}
133
+ }}
134
+ """
135
+
115
136
  if self.http_expose_default:
116
137
  caddyfile += f"""
117
138
  handle {{
@@ -129,10 +150,18 @@ class GatewayBlok:
129
150
  if self.with_certer:
130
151
  caddy_depends_on.append("certer")
131
152
 
153
+ exposed_ports_strings = [
154
+ f"{port.port}:{port.port}" for port in self.exposed_ports.values()
155
+ ]
156
+
132
157
  caddy_container = {
133
158
  "image": "caddy:latest",
134
159
  "volumes": ["./configs/Caddyfile:/etc/caddy/Caddyfile", "./certs:/certs"],
135
- "ports": [f"{self.http_port}:80", f"{self.https_port}:443"],
160
+ "ports": [
161
+ f"{self.http_port}:80",
162
+ f"{self.https_port}:443",
163
+ ]
164
+ + exposed_ports_strings,
136
165
  "depends_on": caddy_depends_on,
137
166
  }
138
167
 
@@ -150,16 +179,24 @@ class GatewayBlok:
150
179
 
151
180
  context.docker_compose.set_nested("services", "certer", certer_container)
152
181
 
153
- def expose(self, path_name: str, port: int, host: str, strip_prefix: bool = True):
182
+ def expose(self, path_name: str, port: int, host: str, strip_prefix: bool = False):
154
183
  self.exposed_hosts[path_name] = ExposedHost(
155
184
  host=host, port=port, stip_prefix=strip_prefix
156
185
  )
157
186
 
187
+ def expose_mapped(self, path_name: str, port: int, host: str, to: str):
188
+ self.exposed_to_hosts[path_name] = ExpostedToHost(host=host, port=port, to=to)
189
+
158
190
  def expose_default(self, port: int, host: str):
159
191
  self.http_expose_default = ExposedHost(host=host, port=port, stip_prefix=False)
160
192
 
161
193
  def expose_port(self, port: int, host: str, tls: bool = False):
162
- self.exposed_ports[port] = ExposedPort(port=port, host=host, tls=tls)
194
+ self.exposed_ports[port] = ExposedPort(port=port, host=host, tls=tls, to=port)
195
+
196
+ def expose_port_to(self, port: int, host: str, to_port: int, tls: bool = False):
197
+ self.exposed_ports[port] = ExposedPort(
198
+ port=port, host=host, tls=tls, to=to_port
199
+ )
163
200
 
164
201
  def get_options(self):
165
202
  with_public_urls = Option(
@@ -1,7 +1,10 @@
1
1
  from typing import Dict, Any
2
2
  import secrets
3
3
 
4
- from arkitekt_next.bloks.funcs import create_default_service_yaml
4
+ from arkitekt_next.bloks.funcs import (
5
+ create_default_service_yaml,
6
+ create_default_service_dependencies,
7
+ )
5
8
  from blok import blok, InitContext, ExecutionContext, Option
6
9
  from blok.tree import Repo, YamlFile
7
10
 
@@ -12,7 +15,10 @@ class KabinetBlok:
12
15
  self.host = "kabinet"
13
16
  self.command = "bash run-debug.sh"
14
17
  self.repo = "https://github.com/jhnnsrs/kabinet-server"
15
- self.scopes = {"read_image": "Read image from the database"}
18
+ self.scopes = {
19
+ "kabinet_deploy": "Deploy containers",
20
+ "kabinet_add_repo": "Add repositories to the database",
21
+ }
16
22
  self.mount_repo = False
17
23
  self.build_repo = False
18
24
  self.buckets = ["media"]
@@ -20,17 +26,11 @@ class KabinetBlok:
20
26
  self.ensured_repos = []
21
27
  self.image = "jhnnsrs/kabinet:next"
22
28
 
29
+ def get_builder(self):
30
+ return "arkitekt.generic"
31
+
23
32
  def get_dependencies(self):
24
- return [
25
- "live.arkitekt.mount",
26
- "live.arkitekt.config",
27
- "live.arkitekt.gateway",
28
- "live.arkitekt.postgres",
29
- "live.arkitekt.lok",
30
- "live.arkitekt.admin",
31
- "live.arkitekt.redis",
32
- "live.arkitekt.s3",
33
- ]
33
+ return create_default_service_dependencies()
34
34
 
35
35
  def preflight(self, init: InitContext):
36
36
  for key, value in init.kwargs.items():
@@ -57,7 +57,7 @@ class KabinetBlok:
57
57
  mount_repo = Option(
58
58
  subcommand="mount_repo",
59
59
  help="Should we mount the repo into the container?",
60
- type=bool,
60
+ type=bool,
61
61
  default=self.mount_repo,
62
62
  )
63
63
  build_repo = Option(
@@ -22,7 +22,6 @@ class LocalLiveKitBlok:
22
22
  self.api_secret = "secret"
23
23
  self.skip = False
24
24
 
25
-
26
25
  def preflight(self, init: InitContext, gateway: GatewayService):
27
26
  for key, value in init.kwargs.items():
28
27
  setattr(self, key, value)
@@ -33,16 +32,18 @@ class LocalLiveKitBlok:
33
32
  return
34
33
 
35
34
  gateway.expose_port(7880, self.host, True)
36
- gateway.expose_port(7881, self.host, True)
35
+ gateway.expose_port_to(7882, self.host, 7880, False)
37
36
 
38
37
  self.initialized = True
39
38
 
40
39
  def retrieve_access(self):
41
- return LivekitCredentials(**{
42
- "api_key": self.api_key,
43
- "api_secret": self.api_secret,
44
- "api_url": f"http://{self.host}:7880",
45
- })
40
+ return LivekitCredentials(
41
+ **{
42
+ "api_key": self.api_key,
43
+ "api_secret": self.api_secret,
44
+ "api_url": f"http://{self.host}:7880",
45
+ }
46
+ )
46
47
 
47
48
  def build(self, context: ExecutionContext):
48
49
  if self.skip:
@@ -55,18 +56,14 @@ class LocalLiveKitBlok:
55
56
  "image": self.image,
56
57
  "command": self.command,
57
58
  "ports": [
58
- f"{self.port_range[0]}-{self.port_range[1]}:{self.port_range[0]}-{self.port_range[1]}"
59
+ f"{self.port_range[0]}-{self.port_range[1]}:{self.port_range[0]}-{self.port_range[1]}",
60
+ "7881:7881",
59
61
  ],
60
62
  }
61
63
 
62
64
  context.docker_compose.set_nested("services", self.host, db_service)
63
65
 
64
66
  def get_options(self):
65
- with_command = Option(
66
- subcommand="command",
67
- help="The fakts url for connection",
68
- default=self.command,
69
- )
70
67
  with_host = Option(
71
68
  subcommand="host",
72
69
  help="The fakts url for connection",
@@ -77,12 +74,10 @@ class LocalLiveKitBlok:
77
74
  help="The fakts url for connection",
78
75
  default=False,
79
76
  type=bool,
80
-
81
77
  )
82
78
 
83
79
  return [
84
80
  with_host,
85
- with_command,
86
81
  with_skip,
87
82
  ]
88
83
 
@@ -17,11 +17,11 @@ from dataclasses import asdict
17
17
 
18
18
  from arkitekt_next.bloks.services.redis import RedisService
19
19
  from blok import blok, InitContext, ExecutionContext, Option
20
+ from blok.bloks.services.dns import DnsService
20
21
  from blok.tree import YamlFile, Repo
21
22
  from blok import blok, InitContext
22
23
 
23
24
 
24
-
25
25
  DEFAULT_ARKITEKT_URL = "http://localhost:8000"
26
26
 
27
27
 
@@ -132,35 +132,28 @@ class LokBlok:
132
132
  self.tokens = []
133
133
  self.groups = []
134
134
  self.secret_key = secrets.token_hex(16)
135
- self.scopes = {"hallo": "welt"}
135
+ self.scopes = {
136
+ "openid": "The open id connect scope",
137
+ "read": "A generic read access",
138
+ "write": "A generic write access",
139
+ }
136
140
  self.key = None
137
141
  self.deployment_name = "default"
138
- self.base_routes = [
139
- "ht",
140
- "o",
141
- "graphql",
142
- ".well-known",
143
- "f",
144
- "admin",
145
- "static",
146
- "accounts",
147
- ]
148
142
  self.token_expiry_seconds = 700000
149
143
  self.preformed_redeem_tokens = [secrets.token_hex(16) for i in range(80)]
150
144
  self.registered_tokens = {}
151
145
 
152
-
153
146
  def retrieve_credentials(self) -> LokCredentials:
154
147
  return LokCredentials(
155
148
  public_key=self.public_key, key_type="RS256", issuer="lok"
156
149
  )
157
150
 
158
- def retrieve_labels(self, service_name: str) -> list[str]:
151
+ def retrieve_labels(self, service_name: str, builder_name: str) -> list[str]:
159
152
  return [
160
153
  f"fakts.service={service_name}",
161
- f"fakts.builder=arkitekt.{service_name}",
154
+ f"fakts.builder={builder_name}",
162
155
  ]
163
-
156
+
164
157
  def retrieve_token(self, user: str = "admin") -> str:
165
158
  new_token = self.secret_blok.retrieve_secret()
166
159
  self.registered_tokens[user] = new_token
@@ -170,25 +163,32 @@ class LokBlok:
170
163
  def register_scopes(self, scopes_dict: Dict[str, str]) -> LokCredentials:
171
164
  self.scopes = self.scopes | scopes_dict
172
165
 
173
- def preflight(self, init: InitContext, gateway: GatewayService, db: DBService, redis: RedisService, admin: AdminService, secrets: SecretBlok, livekit: LivekitService, scopes: list[Dict[str, str]]):
166
+ def preflight(
167
+ self,
168
+ init: InitContext,
169
+ gateway: GatewayService,
170
+ db: DBService,
171
+ redis: RedisService,
172
+ admin: AdminService,
173
+ secrets: SecretBlok,
174
+ livekit: LivekitService,
175
+ dns: DnsService,
176
+ ):
174
177
  for key, value in init.kwargs.items():
175
178
  setattr(self, key, value)
176
179
 
177
180
  assert self.public_key, "Public key is required"
178
181
  assert self.private_key, "Private key is required"
179
182
 
180
- self.scopes = {scope["scope"]: scope["description"] for scope in scopes}
181
-
182
- for i in self.base_routes:
183
- gateway.expose(
184
- i, 80, self.host, strip_prefix=False
185
- )
183
+ gateway.expose("lok", 80, self.host, strip_prefix=False)
184
+ gateway.expose_mapped(".well-known", 80, self.host, "lok")
186
185
 
187
186
  self.secret_blok = secrets
188
187
  self.postgress_access = db.register_db(self.host)
189
188
  self.redis_access = redis.register()
190
189
  self.admin_access = admin.retrieve()
191
190
  self.local_access = livekit.retrieve_access()
191
+ self.dns_result = dns.get_dns_result()
192
192
  self.initialized = True
193
193
 
194
194
  def build(self, context: ExecutionContext):
@@ -222,6 +222,12 @@ class LokBlok:
222
222
 
223
223
  db_service["command"] = self.command
224
224
 
225
+ trusted_origins = []
226
+
227
+ for i in self.dns_result.hostnames:
228
+ trusted_origins.append(f"http://{i}")
229
+ trusted_origins.append(f"https://{i}")
230
+
225
231
  configuration = YamlFile(
226
232
  **{
227
233
  "db": asdict(self.postgress_access),
@@ -232,17 +238,22 @@ class LokBlok:
232
238
  "hosts": ["*"],
233
239
  "secret_key": self.secret_key,
234
240
  },
235
- "redis": asdict(self.redis_access),
241
+ "redis": asdict(self.redis_access),
236
242
  "lok": asdict(self.retrieve_credentials()),
237
243
  "private_key": self.private_key,
238
244
  "public_key": self.public_key,
239
245
  "scopes": self.scopes,
240
- "redeem_tokens": [token for token in self.registered_tokens],
246
+ "redeem_tokens": [
247
+ {"user": name, "token": token}
248
+ for name, token in self.registered_tokens.items()
249
+ ],
241
250
  "groups": [group for group in self.groups],
242
251
  "deployment": {"name": self.deployment_name},
243
252
  "livekit": asdict(self.local_access),
244
253
  "token_expire_seconds": self.token_expiry_seconds,
245
254
  "apps": [],
255
+ "force_script_name": "lok",
256
+ "csrf_trusted_origins": trusted_origins,
246
257
  }
247
258
  )
248
259
 
@@ -292,13 +303,6 @@ class LokBlok:
292
303
  type=GROUP,
293
304
  show_default=True,
294
305
  )
295
- with_scopes = Option(
296
- subcommand="scopes",
297
- help="Additional scopes that should be created (normally handled by the bloks)",
298
- default=[f"{key}:{value}" for key, value in self.scopes.items()],
299
- multiple=True,
300
- type=SCOPE,
301
- )
302
306
  with_repo = Option(
303
307
  subcommand="with_repo",
304
308
  help="Which repo should we use when building the service? Only active if build_repo or mount_repo is active",
@@ -314,7 +318,7 @@ class LokBlok:
314
318
  mount_repo = Option(
315
319
  subcommand="mount_repo",
316
320
  help="The fakts url for connection",
317
- type=bool,
321
+ type=bool,
318
322
  default=False,
319
323
  )
320
324
  build_repo = Option(
@@ -361,7 +365,6 @@ class LokBlok:
361
365
  with_host,
362
366
  with_private_key,
363
367
  with_public_key,
364
- with_scopes,
365
368
  with_secret_key,
366
369
  ]
367
370
 
@@ -7,7 +7,11 @@ from blok import blok, InitContext
7
7
 
8
8
  from blok import blok, InitContext, ExecutionContext, Option
9
9
  from blok.tree import YamlFile, Repo
10
- from arkitekt_next.bloks.funcs import create_default_service_yaml
10
+ from arkitekt_next.bloks.funcs import (
11
+ create_default_service_dependencies,
12
+ create_default_service_yaml,
13
+ DefaultService,
14
+ )
11
15
 
12
16
 
13
17
  class AccessCredentials(BaseModel):
@@ -24,7 +28,10 @@ class MikroBlok:
24
28
  self.host = "mikro"
25
29
  self.command = "bash run-debug.sh"
26
30
  self.repo = "https://github.com/arkitektio/mikro-server-next"
27
- self.scopes = {"read_image": "Read image from the database"}
31
+ self.scopes = {
32
+ "mikro_read": "Read image from the database",
33
+ "mikro_write": "Write image to the database",
34
+ }
28
35
  self.image = "jhnnsrs/mikro:next"
29
36
  self.mount_repo = False
30
37
  self.build_repo = False
@@ -32,16 +39,10 @@ class MikroBlok:
32
39
  self.secret_key = secrets.token_hex(16)
33
40
 
34
41
  def get_dependencies(self):
35
- return [
36
- "live.arkitekt.mount",
37
- "live.arkitekt.config",
38
- "live.arkitekt.gateway",
39
- "live.arkitekt.postgres",
40
- "live.arkitekt.lok",
41
- "live.arkitekt.admin",
42
- "live.arkitekt.redis",
43
- "live.arkitekt.s3",
44
- ]
42
+ return create_default_service_dependencies()
43
+
44
+ def get_builder(self):
45
+ return "arkitekt.generic"
45
46
 
46
47
  def preflight(self, init: InitContext):
47
48
  for key, value in init.kwargs.items():