arkitekt-next 0.7.49__tar.gz → 0.7.51__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 (143) hide show
  1. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/PKG-INFO +8 -8
  2. arkitekt_next-0.7.51/arkitekt_next/bloks/base.py +216 -0
  3. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/fluss.py +5 -25
  4. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/kabinet.py +7 -22
  5. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/lok.py +1 -4
  6. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/mikro.py +2 -25
  7. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/orkestrator.py +10 -7
  8. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/rekuest.py +2 -25
  9. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/services/db.py +3 -7
  10. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/services/gateway.py +1 -1
  11. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/services/redis.py +1 -1
  12. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/services/socket.py +1 -4
  13. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/pyproject.toml +8 -8
  14. arkitekt_next-0.7.49/arkitekt_next/bloks/funcs.py +0 -187
  15. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/LICENSE +0 -0
  16. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/README.md +0 -0
  17. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/__blok__.py +0 -0
  18. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/__init__.py +0 -0
  19. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/apps/__init__.py +0 -0
  20. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/apps/easy.py +0 -0
  21. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/apps/next.py +0 -0
  22. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/apps/qt.py +0 -0
  23. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/apps/service/__init__.py +0 -0
  24. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/apps/service/fakts.py +0 -0
  25. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/apps/service/fakts_next.py +0 -0
  26. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/apps/service/fakts_qt.py +0 -0
  27. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/apps/service/grant_registry.py +0 -0
  28. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/apps/service/herre.py +0 -0
  29. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/apps/service/herre_qt.py +0 -0
  30. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/apps/types.py +0 -0
  31. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/__init__.py +0 -0
  32. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/admin.py +0 -0
  33. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/arkitekt.py +0 -0
  34. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/config.py +0 -0
  35. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/gateway.py +0 -0
  36. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/internal_docker.py +0 -0
  37. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/livekit.py +0 -0
  38. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/minio.py +0 -0
  39. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/mount.py +0 -0
  40. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/namegen.py +0 -0
  41. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/postgres.py +0 -0
  42. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/redis.py +0 -0
  43. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/secret.py +0 -0
  44. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/services/__init__.py +0 -0
  45. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/services/admin.py +0 -0
  46. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/services/config.py +0 -0
  47. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/services/livekit.py +0 -0
  48. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/services/lok.py +0 -0
  49. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/services/mount.py +0 -0
  50. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/services/name.py +0 -0
  51. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/services/s3.py +0 -0
  52. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/services/secret.py +0 -0
  53. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/socket.py +0 -0
  54. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/bloks/tailscale.py +0 -0
  55. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/builders.py +0 -0
  56. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/__init__.py +0 -0
  57. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/call/__init__.py +0 -0
  58. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/call/local.py +0 -0
  59. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/call/main.py +0 -0
  60. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/call/remote.py +0 -0
  61. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/gen/__init__.py +0 -0
  62. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/gen/compile.py +0 -0
  63. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/gen/init.py +0 -0
  64. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/gen/main.py +0 -0
  65. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/gen/watch.py +0 -0
  66. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/init/__init__.py +0 -0
  67. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/init/main.py +0 -0
  68. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/inspect/__init__.py +0 -0
  69. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/inspect/main.py +0 -0
  70. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/inspect/requirements.py +0 -0
  71. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/inspect/templates.py +0 -0
  72. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/inspect/variables.py +0 -0
  73. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/kabinet/__init__.py +0 -0
  74. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/kabinet/build.py +0 -0
  75. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/kabinet/init.py +0 -0
  76. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/kabinet/main.py +0 -0
  77. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/kabinet/publish.py +0 -0
  78. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/kabinet/stage.py +0 -0
  79. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/kabinet/utils.py +0 -0
  80. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/kabinet/validate.py +0 -0
  81. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/kabinet/wizard.py +0 -0
  82. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/manifest/__init__.py +0 -0
  83. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/manifest/inspect.py +0 -0
  84. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/manifest/main.py +0 -0
  85. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/manifest/scopes.py +0 -0
  86. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/manifest/version.py +0 -0
  87. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/manifest/wizard.py +0 -0
  88. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/run/__init__.py +0 -0
  89. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/run/dev.py +0 -0
  90. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/run/main.py +0 -0
  91. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/run/prod.py +0 -0
  92. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/commands/run/utils.py +0 -0
  93. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/configs/base.yaml +0 -0
  94. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/constants.py +0 -0
  95. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/dockerfiles/vanilla.dockerfile +0 -0
  96. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/errors.py +0 -0
  97. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/inspect.py +0 -0
  98. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/io.py +0 -0
  99. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/main.py +0 -0
  100. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/options.py +0 -0
  101. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/schemas/fluss.schema.graphql +0 -0
  102. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/schemas/gucker.schema.graphql +0 -0
  103. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/schemas/kabinet.schema.graphql +0 -0
  104. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/schemas/kluster.schema.graphql +0 -0
  105. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/schemas/konviktion.schema.graphql +0 -0
  106. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/schemas/kuay.schema.graphql +0 -0
  107. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/schemas/mikro.schema.graphql +0 -0
  108. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/schemas/mikro_next.schema.graphql +0 -0
  109. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/schemas/napari.schema.graphql +0 -0
  110. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/schemas/omero_ark.schema.graphql +0 -0
  111. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/schemas/port.schema.graphql +0 -0
  112. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/schemas/rekuest.schema.graphql +0 -0
  113. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/schemas/rekuest_next.schema.graphql +0 -0
  114. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/schemas/unlok.schema.graphql +0 -0
  115. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/templates/filter.py +0 -0
  116. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/templates/simple.py +0 -0
  117. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/texts.py +0 -0
  118. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/types.py +0 -0
  119. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/ui.py +0 -0
  120. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/utils.py +0 -0
  121. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/validators.py +0 -0
  122. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/vars.py +0 -0
  123. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/cli/versions/v1.yaml +0 -0
  124. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/constants.py +0 -0
  125. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/model.py +0 -0
  126. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/qt/__init__.py +0 -0
  127. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/qt/assets/dark/gear.png +0 -0
  128. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/qt/assets/dark/green pulse.gif +0 -0
  129. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/qt/assets/dark/orange pulse.gif +0 -0
  130. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/qt/assets/dark/pink pulse.gif +0 -0
  131. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/qt/assets/dark/red pulse.gif +0 -0
  132. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/qt/assets/light/gear.png +0 -0
  133. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/qt/assets/light/green pulse.gif +0 -0
  134. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/qt/assets/light/orange pulse.gif +0 -0
  135. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/qt/assets/light/pink pulse.gif +0 -0
  136. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/qt/assets/light/red pulse.gif +0 -0
  137. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/qt/builders.py +0 -0
  138. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/qt/magic_bar.py +0 -0
  139. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/qt/types.py +0 -0
  140. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/qt/utils.py +0 -0
  141. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/service_registry.py +0 -0
  142. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/arkitekt_next/tqdm.py +0 -0
  143. {arkitekt_next-0.7.49 → arkitekt_next-0.7.51}/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.49
3
+ Version: 0.7.51
4
4
  Summary: client for the arkitekt_next platform
5
5
  License: MIT
6
6
  Author: jhnnsrs
@@ -16,23 +16,23 @@ Classifier: Programming Language :: Python :: 3.12
16
16
  Provides-Extra: all
17
17
  Provides-Extra: blok
18
18
  Provides-Extra: cli
19
- Requires-Dist: blok (>=0.0.13) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
19
+ Requires-Dist: blok (>=0.0.15) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
20
20
  Requires-Dist: cryptography (>=40.0.8) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
21
21
  Requires-Dist: dokker (>=0.1.21)
22
22
  Requires-Dist: fakts (>=0.5.0)
23
- Requires-Dist: fluss-next (>=0.1.70) ; extra == "all"
23
+ Requires-Dist: fluss-next (>=0.1.73) ; extra == "all"
24
24
  Requires-Dist: herre (>=0.4.3)
25
- Requires-Dist: kabinet (>=0.1.8) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "all")
25
+ Requires-Dist: kabinet (>=0.1.11) ; (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.25) ; (python_version >= "3.10" and python_version < "4.0") and (extra == "all")
27
+ Requires-Dist: mikro-next (>=0.1.28) ; (python_version >= "3.10" and python_version < "4.0") and (extra == "all")
28
28
  Requires-Dist: namegenerator (>=1.0.6) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
29
29
  Requires-Dist: netifaces (>=0.11.0) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
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.14) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "cli" or extra == "all")
30
+ Requires-Dist: reaktion-next (>=0.1.63) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "all")
31
+ Requires-Dist: rekuest-next (>=0.2.18) ; (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.65) ; python_version >= "3.8" and python_version < "4.0"
35
+ Requires-Dist: unlok-next (>=0.1.67) ; 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
 
@@ -0,0 +1,216 @@
1
+ from blok import blok, InitContext, Option
2
+ from blok.tree import YamlFile, Repo
3
+ from typing import Any, 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
+ dev: bool
23
+ repo: str
24
+ command: str
25
+ service_name: str
26
+ host: str
27
+ buckets: list[str]
28
+ scopes: dict[str, str]
29
+ secret_key: str
30
+ mount_repo: bool
31
+ build_repo: bool
32
+
33
+ def get_blok_meta(self) -> str: ...
34
+
35
+ def get_builder(self) -> str: ...
36
+
37
+
38
+ def create_default_service_dependencies():
39
+ return [
40
+ DnsService,
41
+ GatewayService,
42
+ DBService,
43
+ RedisService,
44
+ S3Service,
45
+ ConfigService,
46
+ MountService,
47
+ AdminService,
48
+ SecretService,
49
+ LokService,
50
+ ]
51
+
52
+
53
+ class BaseArkitektService:
54
+ def get_additional_config(self):
55
+ return {}
56
+
57
+ def preflight(
58
+ self,
59
+ init: InitContext,
60
+ lok: LokService,
61
+ dns: DnsService,
62
+ db: DBService,
63
+ gateway: GatewayService,
64
+ redis: RedisService,
65
+ s3: S3Service,
66
+ config: ConfigService,
67
+ mount: MountService,
68
+ admin: AdminService,
69
+ secret: SecretService,
70
+ mount_repo: bool = False,
71
+ host: str = "",
72
+ image: str = "",
73
+ secret_key: str = "",
74
+ build_repo: bool = False,
75
+ command: str = "",
76
+ repo: str = "",
77
+ disable: bool = False,
78
+ dev: bool = False,
79
+ ):
80
+ deps = init.dependencies
81
+
82
+ lok.register_scopes(self.scopes)
83
+
84
+ path_name = self.host
85
+
86
+ gateway_access = gateway.expose(path_name, 80, self.host)
87
+
88
+ postgress_access = db.register_db(self.host)
89
+ redis_access = redis.register()
90
+ lok_access = lok.retrieve_credentials()
91
+ admin_access = admin.retrieve()
92
+ minio_access = s3.create_buckets(self.buckets)
93
+ lok_labels = lok.retrieve_labels(
94
+ self.get_blok_meta().service_identifier, self.get_builder()
95
+ )
96
+
97
+ dns_result = init.get_service(DnsService).get_dns_result()
98
+
99
+ csrf_trusted_origins = []
100
+ for hostname in dns_result.hostnames:
101
+ csrf_trusted_origins.append(f"http://{hostname}")
102
+ csrf_trusted_origins.append(f"https://{hostname}")
103
+
104
+ configuration = YamlFile(
105
+ **{
106
+ "db": asdict(postgress_access),
107
+ "django": {
108
+ "admin": asdict(admin_access),
109
+ "debug": True,
110
+ "hosts": ["*"],
111
+ "secret_key": self.secret_key,
112
+ },
113
+ "redis": asdict(redis_access),
114
+ "lok": asdict(lok_access),
115
+ "s3": asdict(minio_access),
116
+ "scopes": self.scopes,
117
+ "force_script_name": path_name,
118
+ "csrf_trusted_origins": csrf_trusted_origins,
119
+ **self.get_additional_config(),
120
+ }
121
+ )
122
+
123
+ config_mount = init.get_service(ConfigService).register_config(
124
+ f"{self.host}.yaml", configuration
125
+ )
126
+
127
+ depends_on = []
128
+
129
+ if redis_access.dependency:
130
+ depends_on.append(redis_access.dependency)
131
+
132
+ if postgress_access.dependency:
133
+ depends_on.append(postgress_access.dependency)
134
+
135
+ if minio_access.dependency:
136
+ depends_on.append(minio_access.dependency)
137
+
138
+ service = {
139
+ "labels": lok_labels,
140
+ "volumes": [f"{config_mount}:/workspace/config.yaml"],
141
+ "depends_on": depends_on,
142
+ }
143
+
144
+ if mount_repo or dev:
145
+ mount = init.get_service(MountService).register_mount(self.host, Repo(repo))
146
+ service["volumes"].extend([f"{mount}:/workspace"])
147
+
148
+ if build_repo or dev:
149
+ mount = init.get_service(MountService).register_mount(self.host, Repo(repo))
150
+ service["build"] = mount
151
+ else:
152
+ service["image"] = image
153
+
154
+ service["command"] = command
155
+
156
+ self.service = service
157
+
158
+ def get_additional_options(self):
159
+ return []
160
+
161
+ def get_options(self):
162
+ return [
163
+ Option(
164
+ subcommand="dev",
165
+ help="Shoud we run the service in development mode (includes withrepo, mountrepo)?",
166
+ default=self.dev,
167
+ ),
168
+ Option(
169
+ subcommand="host",
170
+ help="The name we should use for the host?",
171
+ default=self.host,
172
+ ),
173
+ Option(
174
+ subcommand="disable",
175
+ help="Shoud we disable the service?",
176
+ default=False,
177
+ ),
178
+ Option(
179
+ subcommand="repo",
180
+ help="Which repo should we use when building the service? Only active if build_repo or mount_repo is active",
181
+ default=self.repo,
182
+ ),
183
+ Option(
184
+ subcommand="command",
185
+ help="Which command should we use when building the service?",
186
+ default=self.command,
187
+ ),
188
+ Option(
189
+ subcommand="mount_repo",
190
+ help="Should we mount the repo into the container?",
191
+ type=bool,
192
+ default=self.mount_repo,
193
+ ),
194
+ Option(
195
+ subcommand="build_repo",
196
+ help="Should we build the container from the repo?",
197
+ type=bool,
198
+ default=self.build_repo,
199
+ ),
200
+ Option(
201
+ subcommand="host",
202
+ help="How should the service be named inside the docker-compose file?",
203
+ default=self.host,
204
+ ),
205
+ Option(
206
+ subcommand="secret_key",
207
+ help="The secret key to use for the django service",
208
+ default=self.secret_key,
209
+ ),
210
+ Option(
211
+ subcommand="image",
212
+ help="The image to use for the service",
213
+ default=self.image,
214
+ ),
215
+ *self.get_additional_options(),
216
+ ]
@@ -1,18 +1,16 @@
1
1
  import secrets
2
- from arkitekt_next.bloks.funcs import (
3
- build_default_service_options,
4
- create_default_service_dependencies,
5
- create_default_service_yaml,
6
- )
2
+
7
3
  from blok import blok, InitContext, ExecutionContext, Option
8
4
  from blok.tree import YamlFile, Repo
5
+ from arkitekt_next.bloks.base import BaseArkitektService
6
+ from typing import List
9
7
 
10
8
 
11
9
  DEFAULT_ARKITEKT_URL = "http://localhost:8000"
12
10
 
13
11
 
14
12
  @blok("live.arkitekt.fluss")
15
- class FlussBlok:
13
+ class FlussBlok(BaseArkitektService):
16
14
  def __init__(self) -> None:
17
15
  self.dev = False
18
16
  self.host = "fluss"
@@ -24,28 +22,10 @@ class FlussBlok:
24
22
  self.build_repo = False
25
23
  self.buckets = ["media"]
26
24
  self.secret_key = secrets.token_hex(16)
27
- self.ensured_repos = []
25
+ self.ensured_repos: List[str] = []
28
26
 
29
27
  def get_builder(self):
30
28
  return "arkitekt.generic"
31
29
 
32
- def get_dependencies(self):
33
- return create_default_service_dependencies()
34
-
35
- def preflight(self, init: InitContext):
36
- for key, value in init.kwargs.items():
37
- setattr(self, key, value)
38
-
39
- self.service = create_default_service_yaml(init, self)
40
-
41
- self.initialized = True
42
-
43
30
  def build(self, context: ExecutionContext):
44
31
  context.docker_compose.set_nested("services", self.host, self.service)
45
-
46
- def get_options(self):
47
- def_options = build_default_service_options(self)
48
-
49
- return [
50
- *def_options,
51
- ]
@@ -1,17 +1,14 @@
1
1
  from typing import Dict, Any
2
2
  import secrets
3
3
 
4
- from arkitekt_next.bloks.funcs import (
5
- create_default_service_yaml,
6
- create_default_service_dependencies,
7
- build_default_service_options,
8
- )
4
+
9
5
  from blok import blok, InitContext, ExecutionContext, Option
10
6
  from blok.tree import Repo, YamlFile
7
+ from arkitekt_next.bloks.base import BaseArkitektService
11
8
 
12
9
 
13
10
  @blok("live.arkitekt.kabinet")
14
- class KabinetBlok:
11
+ class KabinetBlok(BaseArkitektService):
15
12
  def __init__(self) -> None:
16
13
  self.dev = False
17
14
  self.host = "kabinet"
@@ -28,27 +25,16 @@ class KabinetBlok:
28
25
  self.ensured_repos = ["jhnnsrs/ome:main", "jhnnsrs/renderer:main"]
29
26
  self.image = "jhnnsrs/kabinet:next"
30
27
 
28
+ def get_additional_config(self):
29
+ return {"ensured_repos": self.ensured_repos}
30
+
31
31
  def get_builder(self):
32
32
  return "arkitekt.generic"
33
33
 
34
- def get_dependencies(self):
35
- return create_default_service_dependencies()
36
-
37
- def preflight(self, init: InitContext):
38
- for key, value in init.kwargs.items():
39
- setattr(self, key, value)
40
-
41
- self.service = create_default_service_yaml(
42
- init, self, {"ensured_repos": self.ensured_repos}
43
- )
44
-
45
- self.initialized = True
46
-
47
34
  def build(self, context: ExecutionContext):
48
35
  context.docker_compose.set_nested("services", self.host, self.service)
49
36
 
50
- def get_options(self):
51
- def_options = build_default_service_options(self)
37
+ def get_additional_options(self):
52
38
  with_repos = Option(
53
39
  subcommand="repos",
54
40
  help="The default repos to enable for the service",
@@ -56,6 +42,5 @@ class KabinetBlok:
56
42
  )
57
43
 
58
44
  return [
59
- *def_options,
60
45
  with_repos,
61
46
  ]
@@ -5,7 +5,6 @@ from cryptography.hazmat.primitives import serialization as crypto_serialization
5
5
  from cryptography.hazmat.primitives.asymmetric import rsa
6
6
  from cryptography.hazmat.backends import default_backend as crypto_default_backend
7
7
  from typing import Dict
8
- from arkitekt_next.bloks.funcs import build_default_service_options
9
8
  from arkitekt_next.bloks.secret import SecretBlok
10
9
  from arkitekt_next.bloks.services.admin import AdminService
11
10
  from arkitekt_next.bloks.services.db import DBService
@@ -283,8 +282,6 @@ class LokBlok:
283
282
  .decode()
284
283
  )
285
284
 
286
- def_options = build_default_service_options(self)
287
-
288
285
  with_dev = Option(
289
286
  subcommand="dev",
290
287
  help="Run the service in development mode",
@@ -331,7 +328,7 @@ class LokBlok:
331
328
  )
332
329
 
333
330
  return [
334
- *def_options,
331
+ with_dev,
335
332
  with_fakts_url,
336
333
  with_users,
337
334
  with_groups,
@@ -7,12 +7,7 @@ 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 (
11
- build_default_service_options,
12
- create_default_service_dependencies,
13
- create_default_service_yaml,
14
- DefaultService,
15
- )
10
+ from arkitekt_next.bloks.base import BaseArkitektService
16
11
 
17
12
 
18
13
  class AccessCredentials(BaseModel):
@@ -24,7 +19,7 @@ class AccessCredentials(BaseModel):
24
19
 
25
20
 
26
21
  @blok("live.arkitekt.mikro")
27
- class MikroBlok:
22
+ class MikroBlok(BaseArkitektService):
28
23
  def __init__(self) -> None:
29
24
  self.dev = False
30
25
  self.host = "mikro"
@@ -40,26 +35,8 @@ class MikroBlok:
40
35
  self.buckets = ["media", "zarr", "parquet"]
41
36
  self.secret_key = secrets.token_hex(16)
42
37
 
43
- def get_dependencies(self):
44
- return create_default_service_dependencies()
45
-
46
38
  def get_builder(self):
47
39
  return "arkitekt.generic"
48
40
 
49
- def preflight(self, init: InitContext):
50
- for key, value in init.kwargs.items():
51
- setattr(self, key, value)
52
-
53
- self.service = create_default_service_yaml(init, self)
54
-
55
- self.initialized = True
56
-
57
41
  def build(self, context: ExecutionContext):
58
42
  context.docker_compose.set_nested("services", self.host, self.service)
59
-
60
- def get_options(self):
61
- def_options = build_default_service_options(self)
62
-
63
- return [
64
- *def_options,
65
- ]
@@ -1,13 +1,8 @@
1
1
  from typing import Dict, Any
2
2
  import secrets
3
-
4
- from arkitekt_next.bloks.funcs import (
5
- create_default_service_yaml,
6
- create_default_service_dependencies,
7
- build_default_service_options,
8
- )
9
3
  from arkitekt_next.bloks.services.mount import MountService
10
4
  from blok import blok, InitContext, ExecutionContext, Option, Command
5
+ from blok.bloks.services.vscode import VsCodeService
11
6
  from blok.tree import Repo, YamlFile
12
7
 
13
8
 
@@ -20,7 +15,7 @@ class OrkestratorBlok:
20
15
  self.build_command = ["yarn"]
21
16
  self.up_command = ["yarn", "start"]
22
17
 
23
- def preflight(self, init: InitContext, mount: MountService):
18
+ def preflight(self, init: InitContext, mount: MountService, vscode: VsCodeService | None = None) :
24
19
  for key, value in init.kwargs.items():
25
20
  setattr(self, key, value)
26
21
 
@@ -28,6 +23,14 @@ class OrkestratorBlok:
28
23
  return
29
24
  self.mount = mount.register_mount("orkestrator", Repo(self.repo))
30
25
 
26
+ vscode.register_task(
27
+ "Run Orkestrator",
28
+ "shell",
29
+ "yarn",
30
+ ["start"],
31
+ {"cwd": f"{self.mount}"},
32
+ )
33
+
31
34
  self.initialized = True
32
35
 
33
36
  def build(self, context: ExecutionContext):
@@ -1,17 +1,13 @@
1
1
  from typing import Dict, Any
2
2
  import secrets
3
3
 
4
- from arkitekt_next.bloks.funcs import (
5
- build_default_service_options,
6
- create_default_service_dependencies,
7
- create_default_service_yaml,
8
- )
9
4
  from blok import blok, InitContext, ExecutionContext, Option
10
5
  from blok.tree import Repo, YamlFile
6
+ from arkitekt_next.bloks.base import BaseArkitektService
11
7
 
12
8
 
13
9
  @blok("live.arkitekt.rekuest")
14
- class RekuestBlok:
10
+ class RekuestBlok(BaseArkitektService):
15
11
  def __init__(self) -> None:
16
12
  self.dev = False
17
13
  self.host = "rekuest"
@@ -25,29 +21,10 @@ class RekuestBlok:
25
21
  self.build_repo = False
26
22
  self.buckets = ["media"]
27
23
  self.secret_key = secrets.token_hex(16)
28
- self.ensured_repos = []
29
24
  self.image = "jhnnsrs/rekuest:next"
30
25
 
31
- def get_dependencies(self):
32
- return create_default_service_dependencies()
33
-
34
26
  def get_builder(self):
35
27
  return "arkitekt.rekuest"
36
28
 
37
- def preflight(self, init: InitContext):
38
- for key, value in init.kwargs.items():
39
- setattr(self, key, value)
40
-
41
- self.service = create_default_service_yaml(init, self)
42
-
43
- self.initialized = True
44
-
45
29
  def build(self, context: ExecutionContext):
46
30
  context.docker_compose.set_nested("services", self.host, self.service)
47
-
48
- def get_options(self):
49
- def_options = build_default_service_options(self)
50
-
51
- return [
52
- *def_options,
53
- ]
@@ -6,6 +6,7 @@ from typing import Dict, Any, Protocol, Optional
6
6
  from blok import blok, InitContext, service
7
7
  from dataclasses import dataclass
8
8
 
9
+
9
10
  @dataclass
10
11
  class DBCredentials:
11
12
  password: str
@@ -17,11 +18,6 @@ class DBCredentials:
17
18
  dependency: Optional[str] = None
18
19
 
19
20
 
20
-
21
- @blok("live.arkitekt.postgres")
21
+ @service("live.arkitekt.postgres")
22
22
  class DBService(Protocol):
23
-
24
-
25
- def register_db(self, db_name: str) -> DBCredentials:
26
- ...
27
-
23
+ def register_db(self, db_name: str) -> DBCredentials: ...
@@ -6,7 +6,7 @@ from typing import Dict, Any, Protocol
6
6
  from blok import blok, InitContext, service
7
7
 
8
8
 
9
- @blok("live.arkitekt.gateway")
9
+ @service("live.arkitekt.gateway")
10
10
  class GatewayService(Protocol):
11
11
  def expose(
12
12
  self, path_name: str, port: int, host: str, strip_prefix: bool = True
@@ -14,6 +14,6 @@ class RedisConnection:
14
14
  dependency: Optional[str] = None
15
15
 
16
16
 
17
- @blok("live.arkitekt.redis")
17
+ @service("live.arkitekt.redis")
18
18
  class RedisService(Protocol):
19
19
  def register(self) -> RedisConnection: ...
@@ -6,11 +6,8 @@ from typing import Dict, Any, Protocol
6
6
  from blok import blok, InitContext, service
7
7
 
8
8
 
9
- @blok("live.arkitekt.docker_socket")
9
+ @service("live.arkitekt.docker_socket")
10
10
  class DockerSocketService(Protocol):
11
-
12
11
  def register_socket(self, name: str) -> str:
13
12
  self.registered_configs[name] = name
14
13
  return self.docker_socket
15
-
16
-
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "arkitekt-next"
3
- version = "0.7.49"
3
+ version = "0.7.51"
4
4
  description = "client for the arkitekt_next platform"
5
5
  authors = ["jhnnsrs <jhnnsrs@gmail.com>"]
6
6
  license = "MIT"
@@ -11,12 +11,12 @@ readme = "README.md"
11
11
  python = "^3.8"
12
12
  herre = ">=0.4.3"
13
13
  fakts = ">=0.5.0"
14
- mikro-next = { version = ">=0.1.25", python = "^3.10", optional = true }
15
- kabinet = { version = ">=0.1.8", optional = true, python = "^3.9" }
16
- fluss-next = { version = ">=0.1.70", optional = true }
17
- reaktion-next= { version = ">=0.1.59", python = "^3.8", optional = true }
18
- rekuest-next= { version = ">=0.2.14", python = "^3.8", optional = true }
19
- unlok-next= { version = ">=0.1.65", python = "^3.8", optional = true }
14
+ mikro-next = { version = ">=0.1.28", python = "^3.10", optional = true }
15
+ kabinet = { version = ">=0.1.11", optional = true, python = "^3.9" }
16
+ fluss-next = { version = ">=0.1.73", optional = true }
17
+ reaktion-next= { version = ">=0.1.63", python = "^3.8", optional = true }
18
+ rekuest-next= { version = ">=0.2.18", python = "^3.8", optional = true }
19
+ unlok-next= { version = ">=0.1.67", python = "^3.8", optional = true }
20
20
  rich-click = { version = ">=1.6.1", optional = true }
21
21
  watchfiles = { version = ">=0.18.1", optional = true }
22
22
  turms = { version = ">=0.5.0", python = "^3.9", optional = true }
@@ -24,7 +24,7 @@ semver = { version = ">=3.0.1", optional = true }
24
24
  dokker = ">=0.1.21"
25
25
  koil = ">=0.3.6"
26
26
  netifaces = { version = ">=0.11.0", python = "^3.8", optional = true }
27
- blok = { version = ">=0.0.13", python = "^3.8", optional = true }
27
+ blok = { version = ">=0.0.15", python = "^3.8", optional = true }
28
28
  cryptography = { version = ">=40.0.8", python = "^3.8", optional = true }
29
29
  namegenerator = { version = ">=1.0.6", python = "^3.8", optional = true }
30
30