arkitekt-next 0.12.2__py3-none-any.whl → 0.14.0__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.
- arkitekt_next/__blok__.py +4 -0
- arkitekt_next/__init__.py +4 -1
- arkitekt_next/app/__init__.py +3 -0
- arkitekt_next/{apps/protocols.py → app/app.py} +8 -4
- arkitekt_next/{apps/service/fakts_next.py → app/fakts.py} +7 -5
- arkitekt_next/bloks/admin.py +1 -1
- arkitekt_next/bloks/alpaka.py +74 -42
- arkitekt_next/bloks/arkitekt.py +4 -1
- arkitekt_next/bloks/gateway.py +6 -0
- arkitekt_next/bloks/l.py +136 -0
- arkitekt_next/bloks/livekit.py +4 -3
- arkitekt_next/bloks/lovekit.py +199 -0
- arkitekt_next/bloks/ollama.py +12 -7
- arkitekt_next/bloks/services/admin.py +5 -6
- arkitekt_next/bloks/services/livekit.py +6 -3
- arkitekt_next/bloks/services/ollama.py +7 -2
- arkitekt_next/bloks/services/secret.py +1 -3
- arkitekt_next/builders.py +15 -23
- arkitekt_next/cli/commands/inspect/implementations.py +1 -1
- arkitekt_next/cli/commands/inspect/requirements.py +1 -1
- arkitekt_next/cli/commands/kabinet/build.py +0 -1
- arkitekt_next/cli/commands/kabinet/types.py +3 -5
- arkitekt_next/cli/commands/run/dev.py +6 -22
- arkitekt_next/cli/commands/run/utils.py +6 -6
- arkitekt_next/cli/types.py +1 -2
- arkitekt_next/cli/ui.py +2 -2
- arkitekt_next/cli/utils.py +1 -1
- arkitekt_next/init_registry.py +32 -27
- arkitekt_next/inspect.py +29 -0
- arkitekt_next/protocols.py +10 -34
- arkitekt_next/qt/__init__.py +2 -2
- arkitekt_next/qt/builders.py +11 -118
- arkitekt_next/qt/magic_bar.py +1 -1
- arkitekt_next/qt/types.py +1 -1
- arkitekt_next/service_registry.py +13 -29
- arkitekt_next/utils.py +1 -1
- {arkitekt_next-0.12.2.dist-info → arkitekt_next-0.14.0.dist-info}/METADATA +2 -3
- {arkitekt_next-0.12.2.dist-info → arkitekt_next-0.14.0.dist-info}/RECORD +41 -45
- arkitekt_next/apps/__init__.py +0 -3
- arkitekt_next/apps/service/__init__.py +0 -3
- arkitekt_next/apps/service/fakts_qt.py +0 -57
- arkitekt_next/apps/service/grant_registry.py +0 -27
- arkitekt_next/apps/service/herre.py +0 -26
- arkitekt_next/apps/service/herre_qt.py +0 -57
- arkitekt_next/apps/service/local_fakts.py +0 -95
- arkitekt_next/base_models.py +0 -104
- {arkitekt_next-0.12.2.dist-info → arkitekt_next-0.14.0.dist-info}/WHEEL +0 -0
- {arkitekt_next-0.12.2.dist-info → arkitekt_next-0.14.0.dist-info}/entry_points.txt +0 -0
- {arkitekt_next-0.12.2.dist-info → arkitekt_next-0.14.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,42 +1,38 @@
|
|
|
1
|
-
arkitekt_next/__blok__.py,sha256=
|
|
2
|
-
arkitekt_next/__init__.py,sha256=
|
|
3
|
-
arkitekt_next/
|
|
4
|
-
arkitekt_next/builders.py,sha256=7FsGNpLa9mGhSW9UTAXt1ZJLdlIvbsPy7qQxYD0LEmU,7627
|
|
1
|
+
arkitekt_next/__blok__.py,sha256=kQi4Itj11iIkU7Z66W_mUriY1BXUj6bI27Ho0d5bu5Y,2048
|
|
2
|
+
arkitekt_next/__init__.py,sha256=mIXB8TLD16DjXjEjVqTsn-CmN-1rUctmxDkpH6D7y6A,3198
|
|
3
|
+
arkitekt_next/builders.py,sha256=1E9iM398QPRP8HEVEuzcU24WW2GNOQMZ0n6G9FiIJCc,7276
|
|
5
4
|
arkitekt_next/constants.py,sha256=N_tP85BDHPiOG663wwaEyMWYiUGtL2T_h4wBVPgsSUU,87
|
|
6
|
-
arkitekt_next/init_registry.py,sha256=
|
|
7
|
-
arkitekt_next/
|
|
8
|
-
arkitekt_next/
|
|
5
|
+
arkitekt_next/init_registry.py,sha256=ePt5fYZ11ra30jXdOlhMQUDMyqquodXbMR8f8y8ngwg,3470
|
|
6
|
+
arkitekt_next/inspect.py,sha256=iJKyN_9jlrsoEEgl_kMriEZ46uKDNV-vz6PwzqDRE3g,587
|
|
7
|
+
arkitekt_next/protocols.py,sha256=pv8txCroig4imMWfchvrI6IDU2JbTyOKTR29yyIuijE,1369
|
|
8
|
+
arkitekt_next/service_registry.py,sha256=Fuk5Ba1jZUIINR_0fiJvrF29AltAi5CqiXFgSSxJ4Zc,6921
|
|
9
9
|
arkitekt_next/tqdm.py,sha256=KLGeviRa8iEx89OENMXOuoz8hRDKxDktwG3L8oPlR7I,3415
|
|
10
|
-
arkitekt_next/utils.py,sha256=
|
|
11
|
-
arkitekt_next/
|
|
12
|
-
arkitekt_next/
|
|
13
|
-
arkitekt_next/
|
|
14
|
-
arkitekt_next/apps/service/fakts_next.py,sha256=4kM0NwlQKWT_8db-EfyfpMQbjTImOIlgLraG0P6Wa_M,2632
|
|
15
|
-
arkitekt_next/apps/service/fakts_qt.py,sha256=k8DZU_aTBYDSuHQyj54BAUreh0R8zRApVhCBSsErlXc,1943
|
|
16
|
-
arkitekt_next/apps/service/grant_registry.py,sha256=h0jRKBd9EAXiVV6aHVtzNAlm1yiWPigg0qka68y6yKM,876
|
|
17
|
-
arkitekt_next/apps/service/herre.py,sha256=y3Urlja0A8ZbrnVNnU6UuVMUtlOzIeatj51d0hLZriM,844
|
|
18
|
-
arkitekt_next/apps/service/herre_qt.py,sha256=42APOZl0SnX0FWl6K-TC9CcZUO-BSXMXyH6B31A0y3U,1679
|
|
19
|
-
arkitekt_next/apps/service/local_fakts.py,sha256=Wy37fjsEP2yjKZPtMlLilNlkO0olFX_7P5IIr6g3jkE,2900
|
|
10
|
+
arkitekt_next/utils.py,sha256=a1tZp8KEjdBJg-Dler60xeNmxcsMSiMYQpof2DqUEwI,2446
|
|
11
|
+
arkitekt_next/app/__init__.py,sha256=ZekdO9ekv7UFF94yJljHwg6yMnH1PUiwtWNuh1eWX_I,40
|
|
12
|
+
arkitekt_next/app/app.py,sha256=zj8RWXtB9d_C7mfeFxQSOO_flC9hDddmmCRwbIzHeSE,1945
|
|
13
|
+
arkitekt_next/app/fakts.py,sha256=M6UcECwx-Hc0nXjyQ8qDmYyrg4pNV_26G8eZgqLuFMw,2659
|
|
20
14
|
arkitekt_next/bloks/__init__.py,sha256=_4EeR63d6avQUWLG4mK2n_FvogTPQ_Jx6f2_RvNbWeA,29
|
|
21
|
-
arkitekt_next/bloks/admin.py,sha256=
|
|
22
|
-
arkitekt_next/bloks/alpaka.py,sha256=
|
|
23
|
-
arkitekt_next/bloks/arkitekt.py,sha256=
|
|
15
|
+
arkitekt_next/bloks/admin.py,sha256=BP2Wh3Q4BkLabX5lV8CkyyreJYH7jGIvYkzOlnhRdjM,1293
|
|
16
|
+
arkitekt_next/bloks/alpaka.py,sha256=37pyi0K6sW2cYurLBH1-lfPLkV0ahfbe9CTsEEXgjvA,4546
|
|
17
|
+
arkitekt_next/bloks/arkitekt.py,sha256=mY4NJ067Tqh-_zRU-Ylwhn-4WfWGMJgjkdu56BGsgpg,1699
|
|
24
18
|
arkitekt_next/bloks/base.py,sha256=n3cfEF-7OFJFUDMA5UDEfH118Mg-9aKBxFEFtm8Vb5E,6271
|
|
25
19
|
arkitekt_next/bloks/channel.py,sha256=PsFlb1qjL9ULtbVt8g1dsuaa9bd60zJCT059LztUkGA,739
|
|
26
20
|
arkitekt_next/bloks/config.py,sha256=YMQChT4SCdc_vvvbkAj_qGyA--6JVEHds7MalqUp3lw,1269
|
|
27
21
|
arkitekt_next/bloks/elektro.py,sha256=7UlSZ6EjwCV3SEN7Wn0En2pDZwZcLF_wa5nQvZmKvGI,1288
|
|
28
22
|
arkitekt_next/bloks/fluss.py,sha256=8nf5Z2k-tA3CNRQeIqh7-aaFe5my_NN2lAhbyYbwKEs,1074
|
|
29
|
-
arkitekt_next/bloks/gateway.py,sha256=
|
|
23
|
+
arkitekt_next/bloks/gateway.py,sha256=8eQxIk7hlrmSlsOocqV0mGHVyRYCR6zdinPav4jxm-o,6431
|
|
30
24
|
arkitekt_next/bloks/internal_docker.py,sha256=4onnegXts8zOaXEgg4kw8zaqlACRNwvdknJeFHipGtQ,2829
|
|
31
25
|
arkitekt_next/bloks/kabinet.py,sha256=NKP6tpr8XcVvvFifX-lxgBPkP0P810kJ4URv25jf2z8,1489
|
|
32
26
|
arkitekt_next/bloks/kraph.py,sha256=vbDkLNC5X644pwM_rpUpTNl4uwGpswFm0iNsyMPWY6c,1292
|
|
33
|
-
arkitekt_next/bloks/
|
|
27
|
+
arkitekt_next/bloks/l.py,sha256=37pyi0K6sW2cYurLBH1-lfPLkV0ahfbe9CTsEEXgjvA,4546
|
|
28
|
+
arkitekt_next/bloks/livekit.py,sha256=HmAkmHgriGLhjOAlmX1g2v6Saal3eME6kooeferih6U,2653
|
|
34
29
|
arkitekt_next/bloks/lok.py,sha256=LL5yoFwIXO4INGKHEha5k2VmkWyHgQIHmy1roDxEae0,11500
|
|
30
|
+
arkitekt_next/bloks/lovekit.py,sha256=7_6eL7UiV1QCi8-3tsySmL8N1iOO50LED_BRyoJwYY0,6823
|
|
35
31
|
arkitekt_next/bloks/mikro.py,sha256=bnI9lWd6FXyOViog0Xko3_yhKOt7AAdB_PA4N0XkXAU,1291
|
|
36
32
|
arkitekt_next/bloks/minio.py,sha256=gVFVoq5Po7yWO-CeTxQQecK4b3bBr_vdnEodF991WR4,5595
|
|
37
33
|
arkitekt_next/bloks/mount.py,sha256=IEod6LDuV5NNKvvRJ3Xgo8l2caVZnNmJYDgGGBUB3Cg,1088
|
|
38
34
|
arkitekt_next/bloks/namegen.py,sha256=W9xco2d3eJLdL2NYpTFmqw2d4s3vCpBREIFNm38gMYY,1087
|
|
39
|
-
arkitekt_next/bloks/ollama.py,sha256=
|
|
35
|
+
arkitekt_next/bloks/ollama.py,sha256=UtJ-ghtkDb-wHbQt2h6I1-xZHUSVT3Kv6FRjJB4BBT0,2679
|
|
40
36
|
arkitekt_next/bloks/orkestrator.py,sha256=pjLvcvQ11XF94BORi8uaGMGMBvLu4BiE-WnCi59MH6k,3537
|
|
41
37
|
arkitekt_next/bloks/postgres.py,sha256=UbQnbedEUf_VKAfavz1sCGvAa-ZweDwrUeEj76lo_L8,4276
|
|
42
38
|
arkitekt_next/bloks/redis.py,sha256=A9scMZohACsk-k1LQZo-rTFTB_eq12dqL4zVZkKdKLQ,2274
|
|
@@ -46,20 +42,20 @@ arkitekt_next/bloks/self_signed.py,sha256=UIJEXRVHluC-QnrOXJGrjfwXQ7ozQwQkGQMZ6G
|
|
|
46
42
|
arkitekt_next/bloks/socket.py,sha256=IW4954Hgms_oZsDIk9SgLoVGz07gW3sHi7-WuhN074Q,1067
|
|
47
43
|
arkitekt_next/bloks/tailscale.py,sha256=87cJv9m7N_I3y2ZRvv5WVepRhvIZk4ftUpwa0yUdwj4,2961
|
|
48
44
|
arkitekt_next/bloks/services/__init__.py,sha256=i9vGNd1lFBem3O2PblTouRzFVQkdwOYoUmqqU43dIWQ,592
|
|
49
|
-
arkitekt_next/bloks/services/admin.py,sha256=
|
|
45
|
+
arkitekt_next/bloks/services/admin.py,sha256=xjhZnpJHtdBbrytYMssEPTUFEv0tWziXeYIjKKycxZM,485
|
|
50
46
|
arkitekt_next/bloks/services/certer.py,sha256=5KuWf6h7-8t2M3yvNJUfatR3J40Rnb7sIhLQC_ty9rw,439
|
|
51
47
|
arkitekt_next/bloks/services/channel.py,sha256=OQm_qI748o60V2wbFz3kuCO8rQoIAqqYbfohor-ziOQ,269
|
|
52
48
|
arkitekt_next/bloks/services/config.py,sha256=E0X-AweMxbbVQihqPuUEUzt9Y5J2DKY5sFX2efORtS0,378
|
|
53
49
|
arkitekt_next/bloks/services/db.py,sha256=Lc8uL8xibz99-16YPxtB_ls6CP3dN_jCaOzJ9uZ8b_0,588
|
|
54
50
|
arkitekt_next/bloks/services/gateway.py,sha256=X7ghhLXZ9hDQIMXMTkfBMcS9o9oc16y0C-b_3r3uwCo,847
|
|
55
|
-
arkitekt_next/bloks/services/livekit.py,sha256=
|
|
51
|
+
arkitekt_next/bloks/services/livekit.py,sha256=Z8iwVgpJhyJOqb6y5lGR0kFReU5RDFAtC6-aH02gckY,428
|
|
56
52
|
arkitekt_next/bloks/services/lok.py,sha256=fzOGum0VmcVaONUhTv4jHYky4WrFq2ygDAYJjBv2vAI,500
|
|
57
53
|
arkitekt_next/bloks/services/mount.py,sha256=UAp7IzUNGYtqrh8ACAVgRtc5jYVGvzsKjKdegBdK_i0,273
|
|
58
54
|
arkitekt_next/bloks/services/name.py,sha256=ysr7b8Hn9yIeuBlqv9Zz-ngWKdQtwl3V1I1TeDvhLlA,254
|
|
59
|
-
arkitekt_next/bloks/services/ollama.py,sha256=
|
|
55
|
+
arkitekt_next/bloks/services/ollama.py,sha256=ZQ963XvQeFufTL1NEWkf7Wn6QLRWjIXutmKsU8Xdmbc,507
|
|
60
56
|
arkitekt_next/bloks/services/redis.py,sha256=W9CraIZJztFE1vQVCfxCxY4T_gBPRTM84VwFR8Hwtp8,472
|
|
61
57
|
arkitekt_next/bloks/services/s3.py,sha256=_mk_9NdaeHRVZ__1M9CL1Ec1gSQKkzlOiQXse7MSx94,485
|
|
62
|
-
arkitekt_next/bloks/services/secret.py,sha256=
|
|
58
|
+
arkitekt_next/bloks/services/secret.py,sha256=7DIELrrK19GTJdYVvxCehyTc0VAaYig_s1Bf6q5936w,338
|
|
63
59
|
arkitekt_next/bloks/services/socket.py,sha256=3MbENiJrwQbFKrpWxax56F24elnSD7S-olgycfuOX7s,423
|
|
64
60
|
arkitekt_next/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
65
61
|
arkitekt_next/cli/constants.py,sha256=ONXKA8LRxXQkOQ56ZElVMZSTiaIH1LE_ikmUUKem98g,1410
|
|
@@ -69,9 +65,9 @@ arkitekt_next/cli/io.py,sha256=FyL7UQgDvss_I2M6NYtcZKvOwYmtOsGVmlaHZkk6BCQ,1900
|
|
|
69
65
|
arkitekt_next/cli/main.py,sha256=Ua7sq_OfC491F6r6zNs_oEiR4jVOsZwxLpX0ZXR0Jk0,2227
|
|
70
66
|
arkitekt_next/cli/options.py,sha256=LwhEdjZutH_go568buS37L9Gn_roinrCC6BUu2sC3B0,3814
|
|
71
67
|
arkitekt_next/cli/texts.py,sha256=sYK94BLCt_FWFtdgPDZuKgpINICGFcHQLqO74fxQkug,688
|
|
72
|
-
arkitekt_next/cli/types.py,sha256=
|
|
73
|
-
arkitekt_next/cli/ui.py,sha256=
|
|
74
|
-
arkitekt_next/cli/utils.py,sha256=
|
|
68
|
+
arkitekt_next/cli/types.py,sha256=8uw_iR3QYdknn_m1y67dHuUB-7FAoWP48szJkHAYrHQ,1227
|
|
69
|
+
arkitekt_next/cli/ui.py,sha256=AYBS8LyRkzWb92kULJvTRmTEBGi0Mqiu4zvX6r9e_f8,3631
|
|
70
|
+
arkitekt_next/cli/utils.py,sha256=SKJy5fQ_c5TF7QdskpHP64J_SzV93o76dEOKbj6Dw6I,442
|
|
75
71
|
arkitekt_next/cli/validators.py,sha256=XkLrOrDzBJwcG1keTawa_NJPt3QIBhb5KjepeH4N1KA,719
|
|
76
72
|
arkitekt_next/cli/vars.py,sha256=ev7cKDSPoik8hU9A_ohNpjRZX4FT1GYJaBoGLnxCKjU,982
|
|
77
73
|
arkitekt_next/cli/commands/call/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -86,18 +82,18 @@ arkitekt_next/cli/commands/gen/watch.py,sha256=nf4QckdTJOWxvKoeNRwvC4rXQ4xhIx8LC
|
|
|
86
82
|
arkitekt_next/cli/commands/init/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
83
|
arkitekt_next/cli/commands/init/main.py,sha256=1ZbZDBECZRxlcnulycdS15s-uQ5ngx4xP3T1v-gkJ3U,5435
|
|
88
84
|
arkitekt_next/cli/commands/inspect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
89
|
-
arkitekt_next/cli/commands/inspect/implementations.py,sha256=
|
|
85
|
+
arkitekt_next/cli/commands/inspect/implementations.py,sha256=R-2kqOJhvY4awISXhMtCXmiF1a6-o9IeeHBTvq0umqw,2794
|
|
90
86
|
arkitekt_next/cli/commands/inspect/main.py,sha256=khT5u8bF4EokgA-JtOLVVN3dD0jq32zbtCb9BqsaARU,650
|
|
91
|
-
arkitekt_next/cli/commands/inspect/requirements.py,sha256=
|
|
87
|
+
arkitekt_next/cli/commands/inspect/requirements.py,sha256=tpZKJCUUXkCqdSiUVXhIaZZqvpH7slsibQNKjLwLOZc,1754
|
|
92
88
|
arkitekt_next/cli/commands/inspect/variables.py,sha256=sBVTKCI98BWAUiqhF5xRu_jQDgwk8sGfcyEozpAnDwg,2654
|
|
93
89
|
arkitekt_next/cli/commands/kabinet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
94
|
-
arkitekt_next/cli/commands/kabinet/build.py,sha256=
|
|
90
|
+
arkitekt_next/cli/commands/kabinet/build.py,sha256=IX7PjUM-Mvo8dPORPWLQL1Tncqp6lameKZJWuz9PNQU,10639
|
|
95
91
|
arkitekt_next/cli/commands/kabinet/init.py,sha256=otVakPcD6bC-7VtmqiLWNZKi3BE9evtMVv0TOGRnaD4,3583
|
|
96
92
|
arkitekt_next/cli/commands/kabinet/io.py,sha256=1jFMDAYbZ4Ius0sZe_UDngxLJHaf-x9O86l2geMUrpo,5567
|
|
97
93
|
arkitekt_next/cli/commands/kabinet/main.py,sha256=PFc8JGeSxbU8ZzxPlFDQp7--ogQyxL9sGQ4pA8XQmEo,1314
|
|
98
94
|
arkitekt_next/cli/commands/kabinet/publish.py,sha256=B22UKmJMkiC1GZl--Nxwm-AWpAYaZ0o0Wo4t1iTJQ2M,3538
|
|
99
95
|
arkitekt_next/cli/commands/kabinet/stage.py,sha256=kOkZ_GCkIzCEUmtc80u35hFwU4uOtfXODfhrPuHMaMk,2013
|
|
100
|
-
arkitekt_next/cli/commands/kabinet/types.py,sha256=
|
|
96
|
+
arkitekt_next/cli/commands/kabinet/types.py,sha256=J0JucfWpXFb-q6PlANZnQ9acstwGKra3iX4lHou3XWI,3969
|
|
101
97
|
arkitekt_next/cli/commands/kabinet/utils.py,sha256=5MFFy9pBBOGMs_ACoLcffclCUCmX8bsTjLnrvFHE2Q4,1649
|
|
102
98
|
arkitekt_next/cli/commands/kabinet/validate.py,sha256=9zeTb6yzjQpjk6FQq6ce38a8u_pH9gDg2mBqqp-Pqwg,2473
|
|
103
99
|
arkitekt_next/cli/commands/manifest/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -106,10 +102,10 @@ arkitekt_next/cli/commands/manifest/main.py,sha256=b_kz8wPYF1eHv_9WmB9Gop8TlDUgf
|
|
|
106
102
|
arkitekt_next/cli/commands/manifest/scopes.py,sha256=sw0HRy8GliEcmx3Sh6cPRpBkf1vxAGJwLgIO63ZB_t4,4879
|
|
107
103
|
arkitekt_next/cli/commands/manifest/version.py,sha256=3JdcXqiFeCvIaEpsMfeSKWU_uQehDkEawEpdSxWaKSA,4822
|
|
108
104
|
arkitekt_next/cli/commands/run/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
109
|
-
arkitekt_next/cli/commands/run/dev.py,sha256=
|
|
105
|
+
arkitekt_next/cli/commands/run/dev.py,sha256=K7wa8Xu80BMuoQqvwKUkipKi41IP5ua6AAc7rwgWCjg,10352
|
|
110
106
|
arkitekt_next/cli/commands/run/main.py,sha256=0bNO3DqwbZ4ddMsDWbCGmlPD6Cs3Jlg4yh2-zilsEbY,552
|
|
111
107
|
arkitekt_next/cli/commands/run/prod.py,sha256=N2x1ZowCUpvgUOAlKP148vraRTVc2XRq4SyyzOnVgjQ,1627
|
|
112
|
-
arkitekt_next/cli/commands/run/utils.py,sha256=
|
|
108
|
+
arkitekt_next/cli/commands/run/utils.py,sha256=HPKkE4F_LlRoAOR-E4eSZ2MElvgrX2s7V8hyAIBURHc,589
|
|
113
109
|
arkitekt_next/cli/dockerfiles/vanilla.dockerfile,sha256=0ujdG22rZ6v2n5TMHNA4HR5f1PP9KJvAQORz-DGHBpo,184
|
|
114
110
|
arkitekt_next/cli/schemas/fluss.schema.graphql,sha256=MqrSpOxtWO9kWFCoUn9ySBPhIH3XozFiqrQl2zjEbiQ,35803
|
|
115
111
|
arkitekt_next/cli/schemas/gucker.schema.graphql,sha256=r_KL-MoFRCGUobbtcBLCnpmFcali2A12TguynqQgmN4,152947
|
|
@@ -128,10 +124,10 @@ arkitekt_next/cli/schemas/unlok.schema.graphql,sha256=fXR846snIBIqkuQ-PlYnSkQjkF
|
|
|
128
124
|
arkitekt_next/cli/templates/filter.py,sha256=mD2jdNEXrZNagC_8WtuTisGJrGIbJDSylCvh19cF49I,650
|
|
129
125
|
arkitekt_next/cli/templates/simple.py,sha256=IbcThJ5LryXVFQUdzxfHQCtzSNxEQWTxbD__Ygxsp4M,1171
|
|
130
126
|
arkitekt_next/cli/versions/v1.yaml,sha256=rv2-F6FQbTZi_H6pSE_csdICdtKBObDdoo_asOFi43Y,12
|
|
131
|
-
arkitekt_next/qt/__init__.py,sha256=
|
|
132
|
-
arkitekt_next/qt/builders.py,sha256=
|
|
133
|
-
arkitekt_next/qt/magic_bar.py,sha256=
|
|
134
|
-
arkitekt_next/qt/types.py,sha256=
|
|
127
|
+
arkitekt_next/qt/__init__.py,sha256=MeKBI1aYsHt6yDFfYyppj-LM8Nn5URNl2pJlXrdzjzc,443
|
|
128
|
+
arkitekt_next/qt/builders.py,sha256=GaSG4rWfBAoz3kEghtWMOAKqYUp9tDyNy12O6wAjMKU,5801
|
|
129
|
+
arkitekt_next/qt/magic_bar.py,sha256=PGXnOSZYwLHSAqAJINGApc6EWVS_EHaZ0sKS1jA9d1g,17593
|
|
130
|
+
arkitekt_next/qt/types.py,sha256=sqi4cLTIjBOv1FIcmrjjDVl5-1AGGYC23ebrWjvuvZ0,4016
|
|
135
131
|
arkitekt_next/qt/utils.py,sha256=MgBPtPmCSBkIuATov3UgREESwxAHh77lWNNxyE7Qs48,773
|
|
136
132
|
arkitekt_next/qt/assets/dark/gear.png,sha256=nYl1JZhcpwd7s5FgG2g-1RpkK7TH_QQRqJMmK6r0BpU,6296
|
|
137
133
|
arkitekt_next/qt/assets/dark/green pulse.gif,sha256=cUd2F3Qlvjb7SnsU-LjGgeLTa8KoPgu3C-LNrixIQds,105386
|
|
@@ -143,8 +139,8 @@ arkitekt_next/qt/assets/light/green pulse.gif,sha256=cUd2F3Qlvjb7SnsU-LjGgeLTa8K
|
|
|
143
139
|
arkitekt_next/qt/assets/light/orange pulse.gif,sha256=0gDvrRed0mzZZPHB4tP6vptx7myUCAa_hEVGdjRhNy8,94769
|
|
144
140
|
arkitekt_next/qt/assets/light/pink pulse.gif,sha256=rxd6ZTHSIG9JZuuHhi3jiSB_JYFBZpy7OWUeZETlhQ4,107513
|
|
145
141
|
arkitekt_next/qt/assets/light/red pulse.gif,sha256=U7WLbZvSl5e-Ob5RmawtlC0Rh9VVHxkjDbGjj7NYVUo,108749
|
|
146
|
-
arkitekt_next-0.
|
|
147
|
-
arkitekt_next-0.
|
|
148
|
-
arkitekt_next-0.
|
|
149
|
-
arkitekt_next-0.
|
|
150
|
-
arkitekt_next-0.
|
|
142
|
+
arkitekt_next-0.14.0.dist-info/METADATA,sha256=Ayhzkn6U-9tFXvmrAYuUh9x7CyVhInSroDw8_m8GFIM,5743
|
|
143
|
+
arkitekt_next-0.14.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
144
|
+
arkitekt_next-0.14.0.dist-info/entry_points.txt,sha256=IY-mUEDBU6QncqnYw-Ufw5bvNNXjqSlLf1uexZZCJhc,61
|
|
145
|
+
arkitekt_next-0.14.0.dist-info/licenses/LICENSE,sha256=YZ2oRjC248t-GpoEyw7J13vwKYNG6zhYMaEAix6EzF0,1089
|
|
146
|
+
arkitekt_next-0.14.0.dist-info/RECORD,,
|
arkitekt_next/apps/__init__.py
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
from fakts_next.fakts import Fakts
|
|
2
|
-
from typing import Optional
|
|
3
|
-
from fakts_next.grants.remote import RemoteGrant
|
|
4
|
-
from fakts_next.grants.remote.demanders.device_code import DeviceCodeDemander
|
|
5
|
-
|
|
6
|
-
from fakts_next.grants.remote.claimers.post import ClaimEndpointClaimer
|
|
7
|
-
from fakts_next.grants.remote.discovery.qt.selectable_beacon import (
|
|
8
|
-
SelectBeaconWidget,
|
|
9
|
-
QtSelectableDiscovery,
|
|
10
|
-
)
|
|
11
|
-
from arkitekt_next.base_models import Manifest
|
|
12
|
-
from qtpy import QtCore, QtWidgets
|
|
13
|
-
from fakts_next.cache.qt.settings import QtSettingsCache
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class ArkitektNextFaktsQtRemoteGrant(RemoteGrant):
|
|
17
|
-
"""An ArkitektNext Fakts grant that uses Qt widgets for token and endpoint storage"""
|
|
18
|
-
|
|
19
|
-
discovery: QtSelectableDiscovery
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
class ArkitektNextFaktsQt(Fakts):
|
|
23
|
-
"""A Fakts that uses Qt widgets for token and endpoint storage"""
|
|
24
|
-
|
|
25
|
-
grant: ArkitektNextFaktsQtRemoteGrant
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def build_arkitekt_next_qt_fakts_next(
|
|
29
|
-
manifest: Manifest,
|
|
30
|
-
no_cache: Optional[bool] = False,
|
|
31
|
-
beacon_widget: Optional[QtWidgets.QWidget] = None,
|
|
32
|
-
parent: Optional[QtWidgets.QWidget] = None,
|
|
33
|
-
settings: Optional[QtCore.QSettings] = None,
|
|
34
|
-
) -> ArkitektNextFaktsQt:
|
|
35
|
-
beacon_widget = beacon_widget or SelectBeaconWidget(
|
|
36
|
-
parent=parent, settings=settings
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
return ArkitektNextFaktsQt(
|
|
40
|
-
grant=ArkitektNextFaktsQtRemoteGrant(
|
|
41
|
-
demander=DeviceCodeDemander(
|
|
42
|
-
manifest=manifest,
|
|
43
|
-
redirect_uri="http://127.0.0.1:6767",
|
|
44
|
-
open_browser=True,
|
|
45
|
-
requested_client_kind="desktop",
|
|
46
|
-
),
|
|
47
|
-
discovery=QtSelectableDiscovery(
|
|
48
|
-
widget=beacon_widget,
|
|
49
|
-
settings=settings,
|
|
50
|
-
allow_appending_slash=True,
|
|
51
|
-
auto_protocols=["http", "https"],
|
|
52
|
-
additional_beacons=["http://localhost"],
|
|
53
|
-
),
|
|
54
|
-
claimer=ClaimEndpointClaimer(),
|
|
55
|
-
),
|
|
56
|
-
cache=QtSettingsCache(settings=settings),
|
|
57
|
-
)
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
from herre_next.fakts.grant import FaktsGrant
|
|
2
|
-
from herre_next.fakts.registry import GrantRegistry, GrantType
|
|
3
|
-
from herre_next.grants.oauth2.authorization_code import AuthorizationCodeGrant
|
|
4
|
-
from herre_next.grants.oauth2.redirecters.aiohttp_server import AioHttpServerRedirecter
|
|
5
|
-
from herre_next.grants.oauth2.client_credentials import ClientCredentialsGrant
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
ARKITEKT_GRANT_REGISTRY = GrantRegistry()
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def build_authorization_code_grant(**kwargs) -> FaktsGrant:
|
|
12
|
-
return AuthorizationCodeGrant(**kwargs, redirecter=AioHttpServerRedirecter())
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def build_client_credentials_grant(**kwargs) -> FaktsGrant:
|
|
16
|
-
return ClientCredentialsGrant(**kwargs)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
ARKITEKT_GRANT_REGISTRY.register_grant(
|
|
20
|
-
GrantType.AUTHORIZATION_CODE,
|
|
21
|
-
build_authorization_code_grant,
|
|
22
|
-
)
|
|
23
|
-
|
|
24
|
-
ARKITEKT_GRANT_REGISTRY.register_grant(
|
|
25
|
-
GrantType.CLIENT_CREDENTIALS,
|
|
26
|
-
build_client_credentials_grant,
|
|
27
|
-
)
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
from herre_next.herre import Herre
|
|
2
|
-
from fakts_next import Fakts
|
|
3
|
-
from herre_next.grants.oauth2.refresh import RefreshGrant
|
|
4
|
-
from herre_next.fakts.fakts_endpoint_fetcher import FaktsUserFetcher
|
|
5
|
-
from herre_next.fakts.grant import FaktsGrant
|
|
6
|
-
from arkitekt_next.base_models import User
|
|
7
|
-
from arkitekt_next.apps.service.grant_registry import ARKITEKT_GRANT_REGISTRY
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class ArkitektNextHerre(Herre):
|
|
11
|
-
pass
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def build_arkitekt_next_herre_next(fakts_next: Fakts) -> ArkitektNextHerre:
|
|
15
|
-
return ArkitektNextHerre(
|
|
16
|
-
grant=RefreshGrant(
|
|
17
|
-
grant=FaktsGrant(
|
|
18
|
-
fakts=fakts_next,
|
|
19
|
-
fakts_group="lok",
|
|
20
|
-
grant_registry=ARKITEKT_GRANT_REGISTRY,
|
|
21
|
-
),
|
|
22
|
-
),
|
|
23
|
-
fetcher=FaktsUserFetcher(
|
|
24
|
-
fakts=fakts_next, fakts_key="lok.userinfo_url", userModel=User
|
|
25
|
-
),
|
|
26
|
-
)
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
from herre_next.herre import Herre
|
|
2
|
-
from fakts_next import Fakts
|
|
3
|
-
from herre_next.grants.oauth2.refresh import RefreshGrant
|
|
4
|
-
from herre_next.fakts.grant import FaktsGrant
|
|
5
|
-
from herre_next.fakts.fakts_qt_store import FaktsQtStore
|
|
6
|
-
|
|
7
|
-
from herre_next.grants.auto_login import AutoLoginGrant
|
|
8
|
-
from herre_next.grants.qt.auto_login import AutoLoginWidget
|
|
9
|
-
from herre_next.fakts.fakts_endpoint_fetcher import FaktsUserFetcher
|
|
10
|
-
from arkitekt_next.base_models import Manifest, User
|
|
11
|
-
from arkitekt_next.apps.service.grant_registry import ARKITEKT_GRANT_REGISTRY
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class ArkitektNextAutoLogin(AutoLoginGrant):
|
|
15
|
-
store: FaktsQtStore
|
|
16
|
-
fetcher: FaktsUserFetcher
|
|
17
|
-
grant: FaktsGrant
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class ArkitektNextRefreshGrant(RefreshGrant):
|
|
21
|
-
grant: ArkitektNextAutoLogin
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
class ArkitektNextHerreQt(Herre):
|
|
25
|
-
grant: ArkitektNextRefreshGrant
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def build_arkitekt_next_qt_herre_next(
|
|
29
|
-
manifest: Manifest,
|
|
30
|
-
fakts: Fakts,
|
|
31
|
-
login_widget=None,
|
|
32
|
-
parent=None,
|
|
33
|
-
settings=None,
|
|
34
|
-
):
|
|
35
|
-
login_widget = login_widget or AutoLoginWidget(parent=parent)
|
|
36
|
-
|
|
37
|
-
grant = ArkitektNextAutoLogin(
|
|
38
|
-
store=FaktsQtStore(
|
|
39
|
-
fakts=fakts,
|
|
40
|
-
settings=settings,
|
|
41
|
-
fakts_key="lok.endpoint_url",
|
|
42
|
-
),
|
|
43
|
-
widget=login_widget,
|
|
44
|
-
fetcher=FaktsUserFetcher(
|
|
45
|
-
fakts=fakts, fakts_key="lok.userinfo_url", userModel=User
|
|
46
|
-
),
|
|
47
|
-
grant=FaktsGrant(
|
|
48
|
-
fakts=fakts, fakts_group="lok", grant_registry=ARKITEKT_GRANT_REGISTRY
|
|
49
|
-
),
|
|
50
|
-
)
|
|
51
|
-
|
|
52
|
-
return ArkitektNextHerreQt(
|
|
53
|
-
grant=ArkitektNextRefreshGrant(grant=grant),
|
|
54
|
-
fetcher=FaktsUserFetcher(
|
|
55
|
-
fakts=fakts, fakts_key="lok.userinfo_url", userModel=User
|
|
56
|
-
),
|
|
57
|
-
)
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
from typing import Optional
|
|
2
|
-
|
|
3
|
-
from fakts_next.fakts import Fakts
|
|
4
|
-
from fakts_next.grants.remote import RemoteGrant
|
|
5
|
-
from fakts_next.grants.remote.discovery.well_known import WellKnownDiscovery
|
|
6
|
-
from fakts_next.grants.remote import RemoteGrant
|
|
7
|
-
from fakts_next.grants.remote.demanders.static import StaticDemander
|
|
8
|
-
from fakts_next.grants.remote.demanders.device_code import DeviceCodeDemander
|
|
9
|
-
from fakts_next.grants.remote.claimers.post import ClaimEndpointClaimer
|
|
10
|
-
from fakts_next.grants.remote.demanders.redeem import RedeemDemander
|
|
11
|
-
from fakts_next.cache.file import FileCache
|
|
12
|
-
from arkitekt_next.base_models import Manifest
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class ArkitektNextFaktsQt(Fakts):
|
|
16
|
-
grant: RemoteGrant
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class ArkitektNextFaktsNext(Fakts):
|
|
20
|
-
pass
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
def build_arkitekt_next_fakts_next(
|
|
24
|
-
manifest: Manifest,
|
|
25
|
-
url: Optional[str] = None,
|
|
26
|
-
no_cache: bool = False,
|
|
27
|
-
headless: bool = False,
|
|
28
|
-
client_kind: str = "development",
|
|
29
|
-
) -> ArkitektNextFaktsNext:
|
|
30
|
-
identifier = manifest.identifier
|
|
31
|
-
version = manifest.version
|
|
32
|
-
|
|
33
|
-
demander = DeviceCodeDemander(
|
|
34
|
-
manifest=manifest,
|
|
35
|
-
redirect_uri="http://127.0.0.1:6767",
|
|
36
|
-
open_browser=not headless,
|
|
37
|
-
requested_client_kind=client_kind,
|
|
38
|
-
)
|
|
39
|
-
|
|
40
|
-
return ArkitektNextFaktsNext(
|
|
41
|
-
grant=RemoteGrant(
|
|
42
|
-
demander=demander,
|
|
43
|
-
discovery=WellKnownDiscovery(url=url, auto_protocols=["https", "http"]),
|
|
44
|
-
claimer=ClaimEndpointClaimer(),
|
|
45
|
-
),
|
|
46
|
-
cache=FileCache(
|
|
47
|
-
cache_file=f".arkitekt_next/cache/{identifier}-{version}_fakts_cache.json",
|
|
48
|
-
hash=manifest.hash() + url,
|
|
49
|
-
skip_cache=no_cache,
|
|
50
|
-
),
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def build_arkitekt_next_redeem_fakts_next(
|
|
55
|
-
manifest: Manifest,
|
|
56
|
-
redeem_token: str,
|
|
57
|
-
url,
|
|
58
|
-
no_cache: Optional[bool] = False,
|
|
59
|
-
headless=False,
|
|
60
|
-
):
|
|
61
|
-
identifier = manifest.identifier
|
|
62
|
-
version = manifest.version
|
|
63
|
-
|
|
64
|
-
return ArkitektNextFaktsNext(
|
|
65
|
-
grant=RemoteGrant(
|
|
66
|
-
demander=RedeemDemander(token=redeem_token, manifest=manifest),
|
|
67
|
-
discovery=WellKnownDiscovery(url=url, auto_protocols=["https", "http"]),
|
|
68
|
-
claimer=ClaimEndpointClaimer(),
|
|
69
|
-
),
|
|
70
|
-
cache=FileCache(
|
|
71
|
-
cache_file=f".arkitekt_next/cache/{identifier}-{version}_fakts_cache.json",
|
|
72
|
-
hash=manifest.hash() + url,
|
|
73
|
-
),
|
|
74
|
-
)
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
def build_arkitekt_next_token_fakts_next(
|
|
78
|
-
manifest: Manifest,
|
|
79
|
-
token: str,
|
|
80
|
-
url,
|
|
81
|
-
):
|
|
82
|
-
identifier = manifest.identifier
|
|
83
|
-
version = manifest.version
|
|
84
|
-
|
|
85
|
-
return ArkitektNextFaktsNext(
|
|
86
|
-
grant=RemoteGrant(
|
|
87
|
-
demander=StaticDemander(token=token),
|
|
88
|
-
discovery=WellKnownDiscovery(url=url, auto_protocols=["https", "http"]),
|
|
89
|
-
claimer=ClaimEndpointClaimer(),
|
|
90
|
-
),
|
|
91
|
-
cache=FileCache(
|
|
92
|
-
cache_file=f".arkitekt_next/cache/{identifier}-{version}_fakts_cache.json",
|
|
93
|
-
hash=manifest.hash() + url,
|
|
94
|
-
),
|
|
95
|
-
)
|
arkitekt_next/base_models.py
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
"""Models for ArkitektNext. Thiese include extensiosn for the Fakts Manifest and the User model."""
|
|
2
|
-
|
|
3
|
-
from hashlib import sha256
|
|
4
|
-
import json
|
|
5
|
-
from pydantic import BaseModel, Field, field_validator, ConfigDict
|
|
6
|
-
from typing import List, Optional
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class Requirement(BaseModel):
|
|
10
|
-
key: str
|
|
11
|
-
service: str
|
|
12
|
-
""" The service is the service that will be used to fill the key, it will be used to find the correct instance. It needs to fullfill
|
|
13
|
-
the reverse domain naming scheme"""
|
|
14
|
-
optional: bool = False
|
|
15
|
-
""" The optional flag indicates if the requirement is optional or not. Users should be able to use the client even if the requirement is not met. """
|
|
16
|
-
description: Optional[str] = None
|
|
17
|
-
""" The description is a human readable description of the requirement. Will be show to the user when asking for the requirement."""
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class Manifest(BaseModel):
|
|
21
|
-
"""A manifest for an app that can be installed in ArkitektNext
|
|
22
|
-
|
|
23
|
-
Manifests are used to describe apps that can be installed in ArkitektNext.
|
|
24
|
-
They provide information about the app, such as the
|
|
25
|
-
its globally unique identifier, the version, the scopes it needs, etc.
|
|
26
|
-
|
|
27
|
-
This Manifest is send to the Fakts server on initial app configuration,
|
|
28
|
-
and is used to register the app with the Fakts server, which in turn
|
|
29
|
-
will prompt the user to grant the app access to establish itself as
|
|
30
|
-
an ArkitektNext app (and therefore as an OAuth2 client) (see more in the
|
|
31
|
-
Fakts documentation).
|
|
32
|
-
|
|
33
|
-
"""
|
|
34
|
-
|
|
35
|
-
version: str
|
|
36
|
-
""" The version of the app TODO: Should this be a semver? """
|
|
37
|
-
identifier: str
|
|
38
|
-
""" The globally unique identifier of the app: TODO: Should we check for a reverse domain name? """
|
|
39
|
-
scopes: List[str]
|
|
40
|
-
""" Scopes that this app should request from the user """
|
|
41
|
-
logo: Optional[str]
|
|
42
|
-
""" A URL to the logo of the app TODO: We should enforce this to be a http URL as local paths won't work """
|
|
43
|
-
requirements: Optional[List[Requirement]] = Field(default_factory=list)
|
|
44
|
-
""" Requirements that this app has TODO: What are the requirements? """
|
|
45
|
-
model_config = ConfigDict(extra="forbid")
|
|
46
|
-
|
|
47
|
-
description: Optional[str] = None
|
|
48
|
-
""" A human readable description of the app """
|
|
49
|
-
|
|
50
|
-
def hash(self):
|
|
51
|
-
"""Hash the manifest
|
|
52
|
-
|
|
53
|
-
A manifest describes all the metadata of an app. This method
|
|
54
|
-
hashes the manifest to create a unique hash for the current configuration of the app.
|
|
55
|
-
This hash can be used to check if the app has changed since the last time it was run,
|
|
56
|
-
and can be used to invalidate caches.
|
|
57
|
-
|
|
58
|
-
Returns:
|
|
59
|
-
str: The hash of the manifest
|
|
60
|
-
|
|
61
|
-
"""
|
|
62
|
-
|
|
63
|
-
unsorted_dict = self.model_dump()
|
|
64
|
-
|
|
65
|
-
# sort the requirements
|
|
66
|
-
unsorted_dict["requirements"] = sorted(
|
|
67
|
-
unsorted_dict["requirements"], key=lambda x: x["key"]
|
|
68
|
-
)
|
|
69
|
-
# sort the scopes
|
|
70
|
-
unsorted_dict["scopes"] = sorted(unsorted_dict["scopes"])
|
|
71
|
-
|
|
72
|
-
# JSON encode the dictionary
|
|
73
|
-
json_dd = json.dumps(unsorted_dict, sort_keys=True)
|
|
74
|
-
# Hash the JSON encoded dictionary
|
|
75
|
-
return sha256(json_dd.encode()).hexdigest()
|
|
76
|
-
|
|
77
|
-
@field_validator("identifier", mode="after")
|
|
78
|
-
def check_identifier(cls, v: str) -> str:
|
|
79
|
-
assert "/" not in v, "The identifier should not contain a /"
|
|
80
|
-
assert len(v) > 0, "The identifier should not be empty"
|
|
81
|
-
assert len(v) < 256, "The identifier should not be longer than 256 characters"
|
|
82
|
-
return v
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
class User(BaseModel):
|
|
86
|
-
"""A user of ArkitektNext
|
|
87
|
-
|
|
88
|
-
This model represents a user on ArkitektNext. As herre_next is acgnostic to the
|
|
89
|
-
user model, we need to provide a model that can be used to represent
|
|
90
|
-
the ArkitektNext user. This model is used by the
|
|
91
|
-
:class:`herre_next.fakts.fakts_endpoint_fetcher.FaktsUserFetcher` to
|
|
92
|
-
fetch the user from the associated ArkitektNext Lok instance. This model
|
|
93
|
-
is closely mimicking the OIDC user model, and is therefore compatible
|
|
94
|
-
to represent OIDC users.
|
|
95
|
-
|
|
96
|
-
"""
|
|
97
|
-
|
|
98
|
-
id: str = Field(alias="sub")
|
|
99
|
-
""" The user's id (in lok, this is the user's sub(ject) ID)"""
|
|
100
|
-
|
|
101
|
-
username: str = Field(alias="preferred_username")
|
|
102
|
-
""" The user's preferred username """
|
|
103
|
-
email: str = Field(alias="email")
|
|
104
|
-
""" The user's preferred username """
|
|
File without changes
|
|
File without changes
|
|
File without changes
|