arkitekt-next 0.7.28__tar.gz → 0.7.30__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 (121) hide show
  1. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/PKG-INFO +7 -7
  2. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/apps/service/fakts_qt.py +5 -1
  3. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/apps/types.py +4 -0
  4. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/builders.py +0 -2
  5. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/qt/__init__.py +3 -2
  6. arkitekt_next-0.7.28/arkitekt_next/qt/builder.py → arkitekt_next-0.7.30/arkitekt_next/qt/builders.py +9 -33
  7. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/qt/magic_bar.py +3 -2
  8. arkitekt_next-0.7.30/arkitekt_next/qt/types.py +44 -0
  9. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/pyproject.toml +7 -7
  10. arkitekt_next-0.7.28/arkitekt_next/apps/service/fluss_next.py +0 -31
  11. arkitekt_next-0.7.28/arkitekt_next/apps/service/kabinet.py +0 -31
  12. arkitekt_next-0.7.28/arkitekt_next/apps/service/mikro_next.py +0 -81
  13. arkitekt_next-0.7.28/arkitekt_next/apps/service/rekuest_next.py +0 -53
  14. arkitekt_next-0.7.28/arkitekt_next/apps/service/unlok_next.py +0 -32
  15. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/LICENSE +0 -0
  16. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/README.md +0 -0
  17. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/__init__.py +0 -0
  18. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/apps/__init__.py +0 -0
  19. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/apps/easy.py +0 -0
  20. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/apps/next.py +0 -0
  21. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/apps/qt.py +0 -0
  22. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/apps/service/__init__.py +0 -0
  23. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/apps/service/fakts.py +0 -0
  24. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/apps/service/fakts_next.py +0 -0
  25. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/apps/service/grant_registry.py +0 -0
  26. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/apps/service/herre.py +0 -0
  27. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/apps/service/herre_qt.py +0 -0
  28. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/__init__.py +0 -0
  29. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/call/__init__.py +0 -0
  30. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/call/local.py +0 -0
  31. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/call/main.py +0 -0
  32. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/call/remote.py +0 -0
  33. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/gen/__init__.py +0 -0
  34. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/gen/compile.py +0 -0
  35. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/gen/init.py +0 -0
  36. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/gen/main.py +0 -0
  37. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/gen/watch.py +0 -0
  38. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/init/__init__.py +0 -0
  39. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/init/main.py +0 -0
  40. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/inspect/__init__.py +0 -0
  41. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/inspect/main.py +0 -0
  42. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/inspect/requirements.py +0 -0
  43. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/inspect/templates.py +0 -0
  44. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/inspect/variables.py +0 -0
  45. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/kabinet/__init__.py +0 -0
  46. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/kabinet/build.py +0 -0
  47. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/kabinet/init.py +0 -0
  48. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/kabinet/main.py +0 -0
  49. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/kabinet/publish.py +0 -0
  50. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/kabinet/stage.py +0 -0
  51. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/kabinet/utils.py +0 -0
  52. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/kabinet/validate.py +0 -0
  53. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/kabinet/wizard.py +0 -0
  54. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/manifest/__init__.py +0 -0
  55. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/manifest/inspect.py +0 -0
  56. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/manifest/main.py +0 -0
  57. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/manifest/scopes.py +0 -0
  58. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/manifest/version.py +0 -0
  59. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/manifest/wizard.py +0 -0
  60. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/run/__init__.py +0 -0
  61. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/run/dev.py +0 -0
  62. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/run/main.py +0 -0
  63. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/run/prod.py +0 -0
  64. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/run/utils.py +0 -0
  65. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/server/__init__.py +0 -0
  66. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/server/down.py +0 -0
  67. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/server/init.py +0 -0
  68. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/server/inspect.py +0 -0
  69. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/server/main.py +0 -0
  70. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/server/open.py +0 -0
  71. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/server/remove.py +0 -0
  72. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/server/stop.py +0 -0
  73. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/server/up.py +0 -0
  74. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/commands/server/utils.py +0 -0
  75. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/configs/base.yaml +0 -0
  76. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/constants.py +0 -0
  77. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/dockerfiles/vanilla.dockerfile +0 -0
  78. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/errors.py +0 -0
  79. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/inspect.py +0 -0
  80. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/io.py +0 -0
  81. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/main.py +0 -0
  82. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/options.py +0 -0
  83. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/schemas/fluss.schema.graphql +0 -0
  84. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/schemas/gucker.schema.graphql +0 -0
  85. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/schemas/kabinet.schema.graphql +0 -0
  86. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/schemas/kluster.schema.graphql +0 -0
  87. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/schemas/konviktion.schema.graphql +0 -0
  88. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/schemas/kuay.schema.graphql +0 -0
  89. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/schemas/mikro.schema.graphql +0 -0
  90. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/schemas/mikro_next.schema.graphql +0 -0
  91. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/schemas/napari.schema.graphql +0 -0
  92. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/schemas/omero_ark.schema.graphql +0 -0
  93. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/schemas/port.schema.graphql +0 -0
  94. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/schemas/rekuest.schema.graphql +0 -0
  95. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/schemas/rekuest_next.schema.graphql +0 -0
  96. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/schemas/unlok.schema.graphql +0 -0
  97. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/templates/filter.py +0 -0
  98. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/templates/simple.py +0 -0
  99. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/texts.py +0 -0
  100. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/types.py +0 -0
  101. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/ui.py +0 -0
  102. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/utils.py +0 -0
  103. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/validators.py +0 -0
  104. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/vars.py +0 -0
  105. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/cli/versions/v1.yaml +0 -0
  106. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/constants.py +0 -0
  107. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/model.py +0 -0
  108. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/qt/assets/dark/gear.png +0 -0
  109. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/qt/assets/dark/green pulse.gif +0 -0
  110. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/qt/assets/dark/orange pulse.gif +0 -0
  111. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/qt/assets/dark/pink pulse.gif +0 -0
  112. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/qt/assets/dark/red pulse.gif +0 -0
  113. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/qt/assets/light/gear.png +0 -0
  114. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/qt/assets/light/green pulse.gif +0 -0
  115. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/qt/assets/light/orange pulse.gif +0 -0
  116. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/qt/assets/light/pink pulse.gif +0 -0
  117. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/qt/assets/light/red pulse.gif +0 -0
  118. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/qt/utils.py +0 -0
  119. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/service_registry.py +0 -0
  120. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/arkitekt_next/tqdm.py +0 -0
  121. {arkitekt_next-0.7.28 → arkitekt_next-0.7.30}/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.28
3
+ Version: 0.7.30
4
4
  Summary: client for the arkitekt_next platform
5
5
  License: MIT
6
6
  Author: jhnnsrs
@@ -17,17 +17,17 @@ Provides-Extra: all
17
17
  Provides-Extra: cli
18
18
  Requires-Dist: dokker (>=0.1.21)
19
19
  Requires-Dist: fakts (>=0.5.0)
20
- Requires-Dist: fluss-next (>=0.1.68) ; extra == "all"
20
+ Requires-Dist: fluss-next (>=0.1.69) ; extra == "all"
21
21
  Requires-Dist: herre (>=0.4.3)
22
- Requires-Dist: kabinet (>=0.1.6) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "all")
22
+ Requires-Dist: kabinet (>=0.1.7) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "all")
23
23
  Requires-Dist: koil (>=0.3.6)
24
- Requires-Dist: mikro-next (>=0.1.13) ; (python_version >= "3.10" and python_version < "4.0") and (extra == "all")
25
- Requires-Dist: reaktion-next (>=0.1.58) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "all")
26
- Requires-Dist: rekuest-next (>=0.2.12) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "cli" or extra == "all")
24
+ Requires-Dist: mikro-next (>=0.1.24) ; (python_version >= "3.10" and python_version < "4.0") and (extra == "all")
25
+ Requires-Dist: reaktion-next (>=0.1.59) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "all")
26
+ Requires-Dist: rekuest-next (>=0.2.13) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "cli" or extra == "all")
27
27
  Requires-Dist: rich-click (>=1.6.1) ; extra == "cli" or extra == "all"
28
28
  Requires-Dist: semver (>=3.0.1) ; extra == "cli" or extra == "all"
29
29
  Requires-Dist: turms (>=0.5.0) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "cli" or extra == "all")
30
- Requires-Dist: unlok-next (>=0.1.63) ; python_version >= "3.8" and python_version < "4.0"
30
+ Requires-Dist: unlok-next (>=0.1.64) ; python_version >= "3.8" and python_version < "4.0"
31
31
  Requires-Dist: watchfiles (>=0.18.1) ; extra == "cli" or extra == "all"
32
32
  Description-Content-Type: text/markdown
33
33
 
@@ -2,6 +2,7 @@ from fakts.fakts import Fakts
2
2
  from typing import Optional
3
3
  from fakts.grants.remote import RemoteGrant
4
4
  from fakts.grants.remote.demanders.auto_save import AutoSaveDemander
5
+ from fakts.grants.remote.demanders.device_code import DeviceCodeDemander
5
6
  from fakts.grants.remote.discovery.auto_save import AutoSaveDiscovery
6
7
  from fakts.grants.remote.discovery.qt.auto_save_endpoint_widget import (
7
8
  AutoSaveEndpointWidget,
@@ -57,9 +58,11 @@ def build_arkitekt_next_qt_fakts(
57
58
  settings=settings,
58
59
  save_key="fakts_token",
59
60
  ),
60
- demander=RetrieveDemander(
61
+ demander=DeviceCodeDemander(
61
62
  manifest=manifest,
62
63
  redirect_uri="http://127.0.0.1:6767",
64
+ open_browser=True,
65
+ requested_client_kind="desktop",
63
66
  ),
64
67
  ),
65
68
  discovery=AutoSaveDiscovery(
@@ -75,6 +78,7 @@ def build_arkitekt_next_qt_fakts(
75
78
  settings=settings,
76
79
  allow_appending_slash=True,
77
80
  auto_protocols=["http", "https"],
81
+ additional_beacons=["http://localhost"]
78
82
  ),
79
83
  ),
80
84
  claimer=ClaimEndpointClaimer(),
@@ -42,3 +42,7 @@ class App(Composition):
42
42
  async def __aexit__(self, exc_type, exc_value, traceback):
43
43
  for service in self.services.values():
44
44
  await service.__aexit__(exc_type, exc_value, traceback)
45
+
46
+
47
+
48
+
@@ -127,7 +127,6 @@ def easy(
127
127
  url=url,
128
128
  no_cache=no_cache,
129
129
  headless=headless,
130
- token=token,
131
130
  )
132
131
  else:
133
132
  print("Using normal fakts")
@@ -159,7 +158,6 @@ def easy(
159
158
  services=registry.build_service_map(fakts=fakts, herre=herre, params=params, manifest=manifest),
160
159
  )
161
160
 
162
- print()
163
161
 
164
162
  return app
165
163
 
@@ -8,6 +8,7 @@ to any Qt application. It will then allow the user to configure and connect
8
8
  to ArkitektNext, and configure settings.
9
9
  """
10
10
  from .magic_bar import MagicBar
11
- from .builder import build_arkitekt_next_qt_app
11
+ from .builders import publicqt
12
+ from .types import *
12
13
 
13
- __all__ = ["MagicBar", "build_arkitekt_next_qt_app"]
14
+ __all__ = ["MagicBar", "publicqt", "QtApp"]
@@ -20,14 +20,7 @@ def publicqt(
20
20
  version: str = "latest",
21
21
  logo: Optional[str] = None,
22
22
  scopes: Optional[List[str]] = None,
23
- url: str = "http://localhost:11000",
24
- headless: bool = False,
25
23
  log_level: str = "ERROR",
26
- token: Optional[str] = None,
27
- no_cache: bool = False,
28
- instance_id: str = "main",
29
- redeem_token: Optional[str] = None,
30
- app_kind: str = "desktop",
31
24
  registry: Optional[ServiceBuilderRegistry] = None,
32
25
  parent: Optional[QtWidgets.QWidget] = None,
33
26
  beacon_widget: Optional[QtWidgets.QWidget] = None,
@@ -52,6 +45,9 @@ def publicqt(
52
45
 
53
46
  registry = registry or check_and_import_services()
54
47
 
48
+ settings = settings or QtCore.QSettings("arkitekt_next", f"{identifier}:{version}")
49
+
50
+
55
51
  manifest = Manifest(
56
52
  version=version,
57
53
  identifier=identifier,
@@ -60,38 +56,17 @@ def publicqt(
60
56
  requirements=registry.get_requirements(),
61
57
  )
62
58
 
63
- if redeem_token:
64
- fakts = build_arkitekt_next_redeem_fakts_next(
65
- manifest=manifest,
66
- redeem_token=redeem_token,
67
- url=url,
68
- no_cache=no_cache,
69
- headless=headless,
70
- )
71
- else:
72
- fakts = build_arkitekt_next_qt_fakts(
73
- manifest=manifest,
74
- url=url,
75
- no_cache=no_cache,
76
- client_kind=app_kind,
77
- beacon_widget=beacon_widget,
78
- settings=settings,
79
- )
80
-
81
- herre = build_arkitekt_next_qt_herre(
59
+ fakts = build_arkitekt_next_qt_fakts(
82
60
  manifest=manifest,
83
- fakts=fakts,
84
- login_widget=login_widget,
61
+ beacon_widget=beacon_widget,
85
62
  parent=parent,
86
63
  settings=settings,
87
64
  )
88
65
 
89
- params = kwargs
66
+ herre = build_arkitekt_next_qt_herre(manifest, fakts=fakts, login_widget=login_widget, parent=parent, settings=settings)
90
67
 
91
- url = os.getenv("FAKTS_URL", url)
92
- token = os.getenv("FAKTS_TOKEN", token)
68
+ params = kwargs
93
69
 
94
- create_arkitekt_next_folder(with_cache=True)
95
70
 
96
71
  try:
97
72
  from rich.logging import RichHandler
@@ -104,8 +79,9 @@ def publicqt(
104
79
  fakts=fakts,
105
80
  herre=herre,
106
81
  manifest=manifest,
107
- services=registry.build_service_map(fakts=fakts, herre=herre, params=params),
82
+ services=registry.build_service_map(fakts=fakts, herre=herre, params=params, manifest=manifest),
108
83
  )
109
84
 
110
85
  app.enter()
86
+
111
87
  return app
@@ -1,5 +1,6 @@
1
1
  from enum import Enum
2
2
  from qtpy import QtWidgets, QtGui, QtCore
3
+ from arkitekt_next.qt.types import QtApp
3
4
  from koil.qt import async_to_qt
4
5
 
5
6
  from arkitekt_next.apps.types import App
@@ -304,7 +305,7 @@ class MagicBar(QtWidgets.QWidget):
304
305
 
305
306
  def __init__(
306
307
  self,
307
- app: App,
308
+ app: QtApp,
308
309
  dark_mode: bool = False,
309
310
  on_error: Optional[Callable[[Exception], None]] = None,
310
311
  ) -> None:
@@ -351,7 +352,7 @@ class MagicBar(QtWidgets.QWidget):
351
352
  self.refresh_token_task.errored.connect(self.login_errored)
352
353
  self.refresh_token_task.returned.connect(self.set_unprovided)
353
354
 
354
- self.provide_task = async_to_qt(self.app.rekuest.agent.aprovide)
355
+ self.provide_task = async_to_qt(self.app.services.get("rekuest").agent.aprovide)
355
356
  self.provide_task.errored.connect(self.provide_errored)
356
357
  self.provide_task.returned.connect(self.set_unprovided)
357
358
 
@@ -0,0 +1,44 @@
1
+ from arkitekt_next.apps.types import App, Fakts, Herre, Manifest
2
+ from typing import List, Callable, Dict, Any
3
+
4
+ class QtApp(App):
5
+ """An app that is built with the easy builder"""
6
+
7
+ fakts: Fakts
8
+ herre: Herre
9
+ manifest: Manifest
10
+ services: Dict[str, Any]
11
+ hooks: Dict[str, List[Callable]] = {
12
+ "on_start": [],
13
+ "on_stop": [],
14
+ "on_error": [],
15
+ "on_message": [],
16
+ "on_warning": [],
17
+ "on_info": [],
18
+ "on_debug": [],
19
+ "on_enter": [],
20
+ }
21
+
22
+
23
+ def register_hook(self, hook_name: str, hook: Callable):
24
+ """Register a hook"""
25
+ self.hooks[hook_name].append(hook)
26
+
27
+
28
+
29
+ def run(self):
30
+ """Run the app"""
31
+ self.services["rekuest"].run()
32
+
33
+
34
+
35
+ async def __aenter__(self):
36
+ await super().__aenter__()
37
+ for service in self.services.values():
38
+ await service.__aenter__()
39
+
40
+ return self
41
+
42
+ async def __aexit__(self, exc_type, exc_value, traceback):
43
+ for service in self.services.values():
44
+ await service.__aexit__(exc_type, exc_value, traceback)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "arkitekt-next"
3
- version = "0.7.28"
3
+ version = "0.7.30"
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.13", python = "^3.10", optional = true }
15
- kabinet = { version = ">=0.1.6", optional = true, python = "^3.9" }
16
- fluss-next = { version = ">=0.1.68", optional = true }
17
- reaktion-next= { version = ">=0.1.58", python = "^3.8", optional = true }
18
- rekuest-next= { version = ">=0.2.12", python = "^3.8", optional = true }
19
- unlok-next= { version = ">=0.1.63", python = "^3.8", optional = true }
14
+ mikro-next = { version = ">=0.1.24", python = "^3.10", optional = true }
15
+ kabinet = { version = ">=0.1.7", optional = true, python = "^3.9" }
16
+ fluss-next = { version = ">=0.1.69", optional = true }
17
+ reaktion-next= { version = ">=0.1.59", python = "^3.8", optional = true }
18
+ rekuest-next= { version = ">=0.2.13", python = "^3.8", optional = true }
19
+ unlok-next= { version = ">=0.1.64", 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 }
@@ -1,31 +0,0 @@
1
- from fluss_next.fluss import Fluss
2
- from fluss_next.rath import FlussLinkComposition, FlussRath
3
- from rath.links.split import SplitLink
4
- from rath.contrib.fakts.links.aiohttp import FaktsAIOHttpLink
5
- from rath.contrib.fakts.links.graphql_ws import FaktsGraphQLWSLink
6
- from rath.contrib.herre.links.auth import HerreAuthLink
7
- from graphql import OperationType
8
- from arkitekt_next_next.healthz import FaktsHealthz
9
- from fakts import Fakts
10
- from herre import Herre
11
-
12
-
13
- class ArkitektNextFluss(Fluss):
14
- rath: FlussRath
15
- healthz: FaktsHealthz
16
-
17
-
18
- def build_arkitekt_next_fluss(herre: Herre, fakts: Fakts):
19
- return ArkitektNextFluss(
20
- rath=FlussRath(
21
- link=FlussLinkComposition(
22
- auth=HerreAuthLink(herre=herre),
23
- split=SplitLink(
24
- left=FaktsAIOHttpLink(fakts_group="fluss", fakts=fakts),
25
- right=FaktsGraphQLWSLink(fakts_group="fluss", fakts=fakts),
26
- split=lambda o: o.node.operation != OperationType.SUBSCRIPTION,
27
- ),
28
- )
29
- ),
30
- healthz=FaktsHealthz(fakts_group="fluss", fakts=fakts),
31
- )
@@ -1,31 +0,0 @@
1
- from kabinet.kabinet import Kabinet
2
- from kabinet.rath import KabinetLinkComposition, KabinetRath
3
- from rath.links.split import SplitLink
4
- from rath.contrib.fakts.links.aiohttp import FaktsAIOHttpLink
5
- from rath.contrib.fakts.links.graphql_ws import FaktsGraphQLWSLink
6
- from rath.contrib.herre.links.auth import HerreAuthLink
7
- from graphql import OperationType
8
- from arkitekt_next_next.healthz import FaktsHealthz
9
- from fakts import Fakts
10
- from herre import Herre
11
-
12
-
13
- class ArkitektNextKabinet(Kabinet):
14
- rath: KabinetRath
15
- healthz: FaktsHealthz
16
-
17
-
18
- def build_arkitekt_next_kabinet(herre: Herre, fakts: Fakts):
19
- return ArkitektNextKabinet(
20
- rath=KabinetRath(
21
- link=KabinetLinkComposition(
22
- auth=HerreAuthLink(herre=herre),
23
- split=SplitLink(
24
- left=FaktsAIOHttpLink(fakts_group="kabinet", fakts=fakts),
25
- right=FaktsGraphQLWSLink(fakts_group="kabinet", fakts=fakts),
26
- split=lambda o: o.node.operation != OperationType.SUBSCRIPTION,
27
- ),
28
- )
29
- ),
30
- healthz=FaktsHealthz(fakts_group="kabinet", fakts=fakts),
31
- )
@@ -1,81 +0,0 @@
1
- """
2
- This modules provides the main app. It is responsible for setting up the connection to the mikro-server and
3
- handling authentification and setting up the configuration. Mikro handles the creation of the datalayer and
4
- the graphql client.
5
-
6
- You can compose this app together with other apps to create a full fledged app. (Like combining with
7
- arkitekt_next to enable to call functions that you define on the app)
8
-
9
- Example:
10
-
11
- A simple app that takes it configuraiton from basic.fakts and connects to the mikro-server.
12
- You can define all of the logic within the context manager
13
-
14
- ```python
15
- from mikro.app import MikroApp
16
-
17
- app = MikroApp(fakts=Fakts(subapp="basic"))
18
-
19
- with app:
20
- # do stuff
21
-
22
- ```
23
-
24
- Async Usage:
25
-
26
-
27
- ```python
28
- from mikro.app import MikroApp
29
-
30
- app = MikroApp(fakts=Fakts(subapp="basic"))
31
-
32
- async with app:
33
- # do stuff
34
-
35
- ```
36
-
37
-
38
- """
39
-
40
-
41
- from arkitekt_next_next.healthz import FaktsHealthz
42
- from mikro_next.mikro_next import MikroNext
43
- from mikro_next.rath import MikroNextLinkComposition, MikroNextRath
44
- from rath.links.split import SplitLink
45
- from rath.contrib.fakts.links.aiohttp import FaktsAIOHttpLink
46
- from rath.contrib.fakts.links.graphql_ws import FaktsGraphQLWSLink
47
- from rath.contrib.herre.links.auth import HerreAuthLink
48
- from mikro_next.contrib.fakts.datalayer import FaktsDataLayer
49
- from mikro_next.links.upload import UploadLink
50
- from mikro_next.datalayer import DataLayer
51
- from graphql import OperationType
52
- from herre import Herre
53
- from fakts import Fakts
54
-
55
-
56
- class ArkitektNextMikroNext(MikroNext):
57
- rath: MikroNextRath
58
- datalayer: DataLayer
59
- healthz: FaktsHealthz
60
-
61
-
62
- def build_arkitekt_next_mikro_next(herre: Herre, fakts: Fakts):
63
- datalayer = FaktsDataLayer(fakts_group="datalayer", fakts=fakts)
64
-
65
- return ArkitektNextMikroNext(
66
- rath=MikroNextRath(
67
- link=MikroNextLinkComposition(
68
- auth=HerreAuthLink(herre=herre),
69
- upload=UploadLink(
70
- datalayer=datalayer,
71
- ),
72
- split=SplitLink(
73
- left=FaktsAIOHttpLink(fakts_group="mikro", fakts=fakts),
74
- right=FaktsGraphQLWSLink(fakts_group="mikro", fakts=fakts),
75
- split=lambda o: o.node.operation != OperationType.SUBSCRIPTION,
76
- ),
77
- )
78
- ),
79
- datalayer=datalayer,
80
- healthz=FaktsHealthz(fakts_group="mikro", fakts=fakts),
81
- )
@@ -1,53 +0,0 @@
1
- from arkitekt_next_next.healthz import FaktsHealthz
2
- from rath.contrib.fakts.links.aiohttp import FaktsAIOHttpLink
3
- from rath.links.split import SplitLink
4
- from rath.contrib.fakts.links.graphql_ws import FaktsGraphQLWSLink
5
- from rath.contrib.herre.links.auth import HerreAuthLink
6
- from rekuest_next.rath import RekuestNextLinkComposition, RekuestNextRath
7
- from rekuest_next.rekuest import RekuestNext
8
- from graphql import OperationType
9
- from rekuest_next.contrib.arkitekt_next.websocket_agent_transport import (
10
- ArkitektNextWebsocketAgentTransport,
11
- )
12
-
13
- from rekuest_next.agents.base import BaseAgent
14
- from fakts import Fakts
15
- from herre import Herre
16
- from rekuest_next.postmans.graphql import GraphQLPostman
17
-
18
-
19
- class ArkitektNextRekuestNext(RekuestNext):
20
- rath: RekuestNextRath
21
- agent: BaseAgent
22
- healthz: FaktsHealthz
23
-
24
-
25
- def build_arkitekt_next_rekuest_next(
26
- fakts: Fakts, herre: Herre, instance_id: str
27
- ) -> ArkitektNextRekuestNext:
28
- rath = RekuestNextRath(
29
- link=RekuestNextLinkComposition(
30
- auth=HerreAuthLink(herre=herre),
31
- split=SplitLink(
32
- left=FaktsAIOHttpLink(fakts_group="rekuest", fakts=fakts),
33
- right=FaktsGraphQLWSLink(fakts_group="rekuest", fakts=fakts),
34
- split=lambda o: o.node.operation != OperationType.SUBSCRIPTION,
35
- ),
36
- )
37
- )
38
-
39
- return ArkitektNextRekuestNext(
40
- rath=rath,
41
- agent=BaseAgent(
42
- transport=ArkitektNextWebsocketAgentTransport(
43
- fakts_group="rekuest.agent", fakts=fakts, herre=herre
44
- ),
45
- instance_id=instance_id,
46
- rath=rath,
47
- ),
48
- postman=GraphQLPostman(
49
- rath=rath,
50
- instance_id=instance_id,
51
- ),
52
- healthz=FaktsHealthz(fakts_group="rekuest", fakts=fakts),
53
- )
@@ -1,32 +0,0 @@
1
- from herre import Herre
2
- from rath.contrib.fakts.links.aiohttp import FaktsAIOHttpLink
3
- from rath.contrib.fakts.links.graphql_ws import FaktsGraphQLWSLink
4
- from rath.contrib.herre.links.auth import HerreAuthLink
5
- from rath.links.split import SplitLink
6
-
7
- from arkitekt_next_next.healthz import FaktsHealthz
8
- from fakts import Fakts
9
- from graphql import OperationType
10
- from unlok_next.rath import UnlokLinkComposition, UnlokRath
11
- from unlok_next.unlok import Unlok
12
-
13
-
14
- class ArkitektNextUnlok(Unlok):
15
- rath: UnlokRath
16
- healthz: FaktsHealthz
17
-
18
-
19
- def build_arkitekt_next_unlok_next(herre: Herre, fakts: Fakts):
20
- return ArkitektNextUnlok(
21
- rath=UnlokRath(
22
- link=UnlokLinkComposition(
23
- auth=HerreAuthLink(herre=herre),
24
- split=SplitLink(
25
- left=FaktsAIOHttpLink(fakts_group="lok", fakts=fakts),
26
- right=FaktsGraphQLWSLink(fakts_group="lok", fakts=fakts),
27
- split=lambda o: o.node.operation != OperationType.SUBSCRIPTION,
28
- ),
29
- )
30
- ),
31
- healthz=FaktsHealthz(fakts_group="lok", fakts=fakts),
32
- )
File without changes
File without changes