arkitekt-next 0.7.28__py3-none-any.whl → 0.7.29__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

@@ -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
+
arkitekt_next/builders.py CHANGED
@@ -159,7 +159,6 @@ def easy(
159
159
  services=registry.build_service_map(fakts=fakts, herre=herre, params=params, manifest=manifest),
160
160
  )
161
161
 
162
- print()
163
162
 
164
163
  return app
165
164
 
@@ -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
  Metadata-Version: 2.1
2
2
  Name: arkitekt-next
3
- Version: 0.7.28
3
+ Version: 0.7.29
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
 
@@ -6,17 +6,12 @@ arkitekt_next/apps/qt.py,sha256=4g2CXX4bnJQENJjz1yDQrAYcRTRghHZ11RwSG3WHyi4,3234
6
6
  arkitekt_next/apps/service/__init__.py,sha256=p4iRwiFBKRq2lfbjDBzUR_GMhPWjkjWTa01ohuKz_L4,157
7
7
  arkitekt_next/apps/service/fakts.py,sha256=VH7cds-eK3RsxS2eFHOfRUEbxjc1Z82rKxwQOdso05c,2632
8
8
  arkitekt_next/apps/service/fakts_next.py,sha256=3Mh8CLt91Zf5Kt04mPr74ROj15jS2j3PoaUcT6kwJPY,2791
9
- arkitekt_next/apps/service/fakts_qt.py,sha256=AY1HkfVFN7DjAr4Zh596iGdH8V0reDMoyH-JCxl8XZE,2825
10
- arkitekt_next/apps/service/fluss_next.py,sha256=Wr5nmaK0CU4vyadZuZoh6l5cnwG04aNkO9XY1Q9QPrw,1124
9
+ arkitekt_next/apps/service/fakts_qt.py,sha256=yccBooZVcBaJo6YQeychCZ96g2MQ1j_ED-k9UQu_pkY,3052
11
10
  arkitekt_next/apps/service/grant_registry.py,sha256=3om8YoVf_HFWEJbpjQCin1Zvm8Sz3yw-mGvLKDDgbrc,851
12
11
  arkitekt_next/apps/service/herre.py,sha256=DuIhyEujgXrYzhG2tKTMUgHkTScfg6UCX5eCV1vUPYI,760
13
12
  arkitekt_next/apps/service/herre_qt.py,sha256=GntkKHmwcQqEFab02SWwdd3xONo0fLVGEPQMKH6tlCE,1628
14
- arkitekt_next/apps/service/kabinet.py,sha256=OocZHxcw8kGrziz1LlF1cmWTs2JNXyHR_qYRx57suaE,1146
15
- arkitekt_next/apps/service/mikro_next.py,sha256=j612M2wo4EdaKp13qx_8eqQsB6wc5nE_Lhn28BpvnzA,2441
16
- arkitekt_next/apps/service/rekuest_next.py,sha256=RiNN5rzDbq15AgyVpv-3tjkSO6TeO2xsuEvGTYmB2UQ,1816
17
- arkitekt_next/apps/service/unlok_next.py,sha256=u3cjFr1i6kHjH881oj_NBmY1CgnM0uqdDbicq-SilPM,1124
18
- arkitekt_next/apps/types.py,sha256=uozRXDDGJBL9hYCYGZF_XmtZ4ZvoLZeEEfJeL10Ve3U,1136
19
- arkitekt_next/builders.py,sha256=7k6Bs2LvxuKeoU3Jto9olPRm41tvCefwGclBchsT6T4,6111
13
+ arkitekt_next/apps/types.py,sha256=cKRqHyKlNcGamPUxzvY0wyz0sEI4sBPa4CnvFnT1sTo,1140
14
+ arkitekt_next/builders.py,sha256=ro1fI9lPSpqYz8Hal7Lve4fUOQ_HMGAMh7UT0xF-ewo,6099
20
15
  arkitekt_next/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
16
  arkitekt_next/cli/commands/call/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
17
  arkitekt_next/cli/commands/call/local.py,sha256=YDummInGSb6lGKGiTlMSuXbE-Sz6dbfng6CsZaChCew,3338
@@ -97,7 +92,7 @@ arkitekt_next/cli/vars.py,sha256=ev7cKDSPoik8hU9A_ohNpjRZX4FT1GYJaBoGLnxCKjU,982
97
92
  arkitekt_next/cli/versions/v1.yaml,sha256=rv2-F6FQbTZi_H6pSE_csdICdtKBObDdoo_asOFi43Y,12
98
93
  arkitekt_next/constants.py,sha256=6t_Mf36ZwJF43yd38MtQyzBxeW5aagisl3MPMxpFDNE,101
99
94
  arkitekt_next/model.py,sha256=6KYwSqWhI9CFhZIgip5ZddWleNBENGCAW2-ajtcOZSg,4476
100
- arkitekt_next/qt/__init__.py,sha256=SVnuFY6eUXuG-mrm928RuYeMiunxlc73UsXDGV5DAuY,458
95
+ arkitekt_next/qt/__init__.py,sha256=Xr5XurpNwGCS0b8515W3ewsTMf2NUysN3LmQuIl7u1k,453
101
96
  arkitekt_next/qt/assets/dark/gear.png,sha256=nYl1JZhcpwd7s5FgG2g-1RpkK7TH_QQRqJMmK6r0BpU,6296
102
97
  arkitekt_next/qt/assets/dark/green pulse.gif,sha256=cUd2F3Qlvjb7SnsU-LjGgeLTa8KoPgu3C-LNrixIQds,105386
103
98
  arkitekt_next/qt/assets/dark/orange pulse.gif,sha256=0gDvrRed0mzZZPHB4tP6vptx7myUCAa_hEVGdjRhNy8,94769
@@ -108,14 +103,15 @@ arkitekt_next/qt/assets/light/green pulse.gif,sha256=cUd2F3Qlvjb7SnsU-LjGgeLTa8K
108
103
  arkitekt_next/qt/assets/light/orange pulse.gif,sha256=0gDvrRed0mzZZPHB4tP6vptx7myUCAa_hEVGdjRhNy8,94769
109
104
  arkitekt_next/qt/assets/light/pink pulse.gif,sha256=rxd6ZTHSIG9JZuuHhi3jiSB_JYFBZpy7OWUeZETlhQ4,107513
110
105
  arkitekt_next/qt/assets/light/red pulse.gif,sha256=U7WLbZvSl5e-Ob5RmawtlC0Rh9VVHxkjDbGjj7NYVUo,108749
111
- arkitekt_next/qt/builder.py,sha256=CWdFT9YERyMKGqPXdAdMFUbVt-HdJLN7Y4LqdK7xdGM,3371
112
- arkitekt_next/qt/magic_bar.py,sha256=xo4_ReVYtpCwnRFTMBYvBEcVvY3JnNFbqYYY_-ez6vM,18242
106
+ arkitekt_next/qt/builders.py,sha256=XCrhvX6du_bHCMtS9rxXBoFdT-RStDewIudVXuyRGx8,2729
107
+ arkitekt_next/qt/magic_bar.py,sha256=Ni_c53A1yR5A6CGXMqBU-IPKzb3tVXL9r-K6e0rdRY8,18301
108
+ arkitekt_next/qt/types.py,sha256=6amNiOhTVdBFKv9-RBkpu6g9T89O2GtQGRwJJbVFzis,1092
113
109
  arkitekt_next/qt/utils.py,sha256=MgBPtPmCSBkIuATov3UgREESwxAHh77lWNNxyE7Qs48,773
114
110
  arkitekt_next/service_registry.py,sha256=pczUuP_Nve7OYwB7-oDBLIw6bkjZPnzL3xFca5TF1io,3405
115
111
  arkitekt_next/tqdm.py,sha256=DlrxPluHao7TvW-Cqgt0UokRS-fM2_ZNiWiddqvCqCc,1488
116
112
  arkitekt_next/utils.py,sha256=gmKWy9M51vimohmmaoIpAJ0CaB22TFP0w3JszRrwiak,2379
117
- arkitekt_next-0.7.28.dist-info/LICENSE,sha256=YZ2oRjC248t-GpoEyw7J13vwKYNG6zhYMaEAix6EzF0,1089
118
- arkitekt_next-0.7.28.dist-info/METADATA,sha256=KckwpUPVlXgxwysshp1s6rt7LexSgvz88NPFUy1Ce_w,5500
119
- arkitekt_next-0.7.28.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
120
- arkitekt_next-0.7.28.dist-info/entry_points.txt,sha256=-hxikQx4xZ6TiOnWVDOlTN_kcAISgGFvTHXIchsCHSc,60
121
- arkitekt_next-0.7.28.dist-info/RECORD,,
113
+ arkitekt_next-0.7.29.dist-info/LICENSE,sha256=YZ2oRjC248t-GpoEyw7J13vwKYNG6zhYMaEAix6EzF0,1089
114
+ arkitekt_next-0.7.29.dist-info/METADATA,sha256=Gf4b8R1yyOlZasi53VoW4EV4GwUcZ3_Wq78bOHVhvJM,5500
115
+ arkitekt_next-0.7.29.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
116
+ arkitekt_next-0.7.29.dist-info/entry_points.txt,sha256=-hxikQx4xZ6TiOnWVDOlTN_kcAISgGFvTHXIchsCHSc,60
117
+ arkitekt_next-0.7.29.dist-info/RECORD,,
@@ -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
- )