arkitekt-next 0.8.60__py3-none-any.whl → 0.8.62__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 +3 -0
- arkitekt_next/__init__.py +5 -1
- arkitekt_next/base_models.py +2 -4
- arkitekt_next/bloks/arkitekt.py +15 -13
- arkitekt_next/bloks/base.py +6 -4
- arkitekt_next/bloks/gateway.py +10 -6
- arkitekt_next/bloks/kraph.py +4 -1
- arkitekt_next/bloks/local_sign.py +261 -0
- arkitekt_next/bloks/lok.py +5 -3
- arkitekt_next/bloks/ollama.py +1 -4
- arkitekt_next/bloks/orkestrator.py +4 -6
- arkitekt_next/bloks/self_signed.py +1 -8
- arkitekt_next/bloks/services/certer.py +2 -2
- arkitekt_next/cli/commands/gen/init.py +2 -2
- arkitekt_next/cli/commands/inspect/templates.py +0 -2
- arkitekt_next/cli/commands/kabinet/build.py +28 -9
- arkitekt_next/cli/commands/kabinet/init.py +1 -1
- arkitekt_next/cli/commands/kabinet/io.py +206 -0
- arkitekt_next/cli/commands/kabinet/main.py +27 -15
- arkitekt_next/cli/commands/kabinet/publish.py +2 -2
- arkitekt_next/cli/commands/kabinet/stage.py +1 -1
- arkitekt_next/cli/commands/kabinet/types.py +139 -0
- arkitekt_next/cli/commands/kabinet/utils.py +1 -1
- arkitekt_next/cli/commands/kabinet/validate.py +1 -1
- arkitekt_next/cli/commands/manifest/inspect.py +2 -7
- arkitekt_next/cli/commands/manifest/main.py +0 -2
- arkitekt_next/cli/io.py +0 -192
- arkitekt_next/cli/types.py +2 -147
- arkitekt_next/cli/ui.py +1 -1
- arkitekt_next/init_registry.py +2 -11
- arkitekt_next/qt/builders.py +2 -3
- arkitekt_next/service_registry.py +5 -87
- arkitekt_next/utils.py +3 -2
- {arkitekt_next-0.8.60.dist-info → arkitekt_next-0.8.62.dist-info}/METADATA +19 -9
- {arkitekt_next-0.8.60.dist-info → arkitekt_next-0.8.62.dist-info}/RECORD +38 -37
- arkitekt_next/cli/commands/kabinet/wizard.py +0 -329
- arkitekt_next/cli/commands/manifest/wizard.py +0 -94
- {arkitekt_next-0.8.60.dist-info → arkitekt_next-0.8.62.dist-info}/LICENSE +0 -0
- {arkitekt_next-0.8.60.dist-info → arkitekt_next-0.8.62.dist-info}/WHEEL +0 -0
- {arkitekt_next-0.8.60.dist-info → arkitekt_next-0.8.62.dist-info}/entry_points.txt +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
arkitekt_next/__blok__.py,sha256=
|
|
2
|
-
arkitekt_next/__init__.py,sha256=
|
|
1
|
+
arkitekt_next/__blok__.py,sha256=sYZ4tjur8C9oKEAMxofidL14k9w27UXp-EycM7CEwZI,1868
|
|
2
|
+
arkitekt_next/__init__.py,sha256=rb6kMy7FhWNeyaKOfDSyP1kg6uuvEzBdq6B2vYPCBdg,2194
|
|
3
3
|
arkitekt_next/apps/__init__.py,sha256=cx_5Y-RkJFkSQJH-hUEC_L3eW1jU2E426c4e6_csIyM,42
|
|
4
4
|
arkitekt_next/apps/service/__init__.py,sha256=p4iRwiFBKRq2lfbjDBzUR_GMhPWjkjWTa01ohuKz_L4,157
|
|
5
5
|
arkitekt_next/apps/service/fakts_next.py,sha256=Wy37fjsEP2yjKZPtMlLilNlkO0olFX_7P5IIr6g3jkE,2900
|
|
@@ -8,33 +8,34 @@ arkitekt_next/apps/service/grant_registry.py,sha256=h0jRKBd9EAXiVV6aHVtzNAlm1yiW
|
|
|
8
8
|
arkitekt_next/apps/service/herre.py,sha256=y3Urlja0A8ZbrnVNnU6UuVMUtlOzIeatj51d0hLZriM,844
|
|
9
9
|
arkitekt_next/apps/service/herre_qt.py,sha256=42APOZl0SnX0FWl6K-TC9CcZUO-BSXMXyH6B31A0y3U,1679
|
|
10
10
|
arkitekt_next/apps/types.py,sha256=Ri6-Cby8bh9JOvMsOLpDrbeVB9zp3L28D951vM2juT0,1459
|
|
11
|
-
arkitekt_next/base_models.py,sha256=
|
|
11
|
+
arkitekt_next/base_models.py,sha256=n5btMFibkfprKss4TPx94qIS4GDKJ49lUjZkUAMjThQ,4130
|
|
12
12
|
arkitekt_next/bloks/__init__.py,sha256=_4EeR63d6avQUWLG4mK2n_FvogTPQ_Jx6f2_RvNbWeA,29
|
|
13
13
|
arkitekt_next/bloks/admin.py,sha256=mRTfjIR1vsfY1ghgjWLjKYFAOh1pGCmQ_IEt2QOR3og,1353
|
|
14
|
-
arkitekt_next/bloks/arkitekt.py,sha256=
|
|
15
|
-
arkitekt_next/bloks/base.py,sha256=
|
|
14
|
+
arkitekt_next/bloks/arkitekt.py,sha256=RNDSSD-WKaCHO-ct4dKxwtX5J5eQD4167FOWhDH9DuM,1616
|
|
15
|
+
arkitekt_next/bloks/base.py,sha256=jEeaCFKwJS4EUmHHKDbLSk0YV4v19530UhXP7lRAFhg,6470
|
|
16
16
|
arkitekt_next/bloks/config.py,sha256=YMQChT4SCdc_vvvbkAj_qGyA--6JVEHds7MalqUp3lw,1269
|
|
17
17
|
arkitekt_next/bloks/fluss.py,sha256=8nf5Z2k-tA3CNRQeIqh7-aaFe5my_NN2lAhbyYbwKEs,1074
|
|
18
|
-
arkitekt_next/bloks/gateway.py,sha256=
|
|
18
|
+
arkitekt_next/bloks/gateway.py,sha256=WBnqw-tfqYWNRJtyvTKxKbicR-Foe_jreMYNPQOARjk,6706
|
|
19
19
|
arkitekt_next/bloks/internal_docker.py,sha256=4onnegXts8zOaXEgg4kw8zaqlACRNwvdknJeFHipGtQ,2829
|
|
20
20
|
arkitekt_next/bloks/kabinet.py,sha256=NKP6tpr8XcVvvFifX-lxgBPkP0P810kJ4URv25jf2z8,1489
|
|
21
|
-
arkitekt_next/bloks/kraph.py,sha256=
|
|
21
|
+
arkitekt_next/bloks/kraph.py,sha256=vbDkLNC5X644pwM_rpUpTNl4uwGpswFm0iNsyMPWY6c,1292
|
|
22
22
|
arkitekt_next/bloks/livekit.py,sha256=Wf4JM236ZwuWC5qHnZkGDPq_FZftKLi1nDWbkwRoVso,2611
|
|
23
|
-
arkitekt_next/bloks/
|
|
23
|
+
arkitekt_next/bloks/local_sign.py,sha256=UwqfPV3Z38CI2T8N1uJAX-CRlrRxzkdGfKDukPVHMJ4,8030
|
|
24
|
+
arkitekt_next/bloks/lok.py,sha256=hA3xiHpw-P-CeW0QU0w_3AyWYctOFtXULK02UzOL1U4,11815
|
|
24
25
|
arkitekt_next/bloks/mikro.py,sha256=bnI9lWd6FXyOViog0Xko3_yhKOt7AAdB_PA4N0XkXAU,1291
|
|
25
26
|
arkitekt_next/bloks/minio.py,sha256=n7DP_O49fBsMw4IWmHIspyNmc52l52q8fujcbAOgN7Q,5593
|
|
26
27
|
arkitekt_next/bloks/mount.py,sha256=IEod6LDuV5NNKvvRJ3Xgo8l2caVZnNmJYDgGGBUB3Cg,1088
|
|
27
28
|
arkitekt_next/bloks/namegen.py,sha256=W9xco2d3eJLdL2NYpTFmqw2d4s3vCpBREIFNm38gMYY,1087
|
|
28
|
-
arkitekt_next/bloks/ollama.py,sha256=
|
|
29
|
-
arkitekt_next/bloks/orkestrator.py,sha256=
|
|
29
|
+
arkitekt_next/bloks/ollama.py,sha256=c19otqBm41c-unqlj9C6VDBPPid1w9AdPyTw1u2nhyw,2526
|
|
30
|
+
arkitekt_next/bloks/orkestrator.py,sha256=pjLvcvQ11XF94BORi8uaGMGMBvLu4BiE-WnCi59MH6k,3537
|
|
30
31
|
arkitekt_next/bloks/postgres.py,sha256=UbQnbedEUf_VKAfavz1sCGvAa-ZweDwrUeEj76lo_L8,4276
|
|
31
32
|
arkitekt_next/bloks/redis.py,sha256=A9scMZohACsk-k1LQZo-rTFTB_eq12dqL4zVZkKdKLQ,2274
|
|
32
33
|
arkitekt_next/bloks/rekuest.py,sha256=mfBjFKNGDMd9t1Wqkxeu2ZxAvYyMpAvHRS30PdchYCQ,1056
|
|
33
34
|
arkitekt_next/bloks/secret.py,sha256=06J9f6-o1NCE0ReakVOyA0KbmQ-xr2fCYQWKOc_z1QQ,1067
|
|
34
|
-
arkitekt_next/bloks/self_signed.py,sha256=
|
|
35
|
+
arkitekt_next/bloks/self_signed.py,sha256=UIJEXRVHluC-QnrOXJGrjfwXQ7ozQwQkGQMZ6Gq-nBg,2459
|
|
35
36
|
arkitekt_next/bloks/services/__init__.py,sha256=i9vGNd1lFBem3O2PblTouRzFVQkdwOYoUmqqU43dIWQ,592
|
|
36
37
|
arkitekt_next/bloks/services/admin.py,sha256=qeNa9KkFJk0DSNV-Ses-vkLjC3xHtvHnVHJ3w0DPKOA,463
|
|
37
|
-
arkitekt_next/bloks/services/certer.py,sha256=
|
|
38
|
+
arkitekt_next/bloks/services/certer.py,sha256=5KuWf6h7-8t2M3yvNJUfatR3J40Rnb7sIhLQC_ty9rw,439
|
|
38
39
|
arkitekt_next/bloks/services/config.py,sha256=E0X-AweMxbbVQihqPuUEUzt9Y5J2DKY5sFX2efORtS0,378
|
|
39
40
|
arkitekt_next/bloks/services/db.py,sha256=Lc8uL8xibz99-16YPxtB_ls6CP3dN_jCaOzJ9uZ8b_0,588
|
|
40
41
|
arkitekt_next/bloks/services/gateway.py,sha256=X7ghhLXZ9hDQIMXMTkfBMcS9o9oc16y0C-b_3r3uwCo,847
|
|
@@ -57,7 +58,7 @@ arkitekt_next/cli/commands/call/main.py,sha256=SdxlvSgA17-M_gwItiFU_srbh-CNdHpCT
|
|
|
57
58
|
arkitekt_next/cli/commands/call/remote.py,sha256=Id6t1nUdXmERx9wbutEhvryUMAM80_G4HVHkhYZosTE,2097
|
|
58
59
|
arkitekt_next/cli/commands/gen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
59
60
|
arkitekt_next/cli/commands/gen/compile.py,sha256=lygqut1fIiopa4MbBXkv1X-45g6UBxDxpGP7R6h-b7U,1445
|
|
60
|
-
arkitekt_next/cli/commands/gen/init.py,sha256=
|
|
61
|
+
arkitekt_next/cli/commands/gen/init.py,sha256=qAA1aTzqbrrnGNRU4XpXPE_FDu0pnJpG4aV5oVE5fWY,4917
|
|
61
62
|
arkitekt_next/cli/commands/gen/main.py,sha256=_BdkcsXoWY5_3gmboq2e0pGYM6lAnwqQgBAyxmvdf6U,947
|
|
62
63
|
arkitekt_next/cli/commands/gen/watch.py,sha256=nf4QckdTJOWxvKoeNRwvC4rXQ4xhIx8LCDDJzpPhcY8,1189
|
|
63
64
|
arkitekt_next/cli/commands/init/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -65,23 +66,23 @@ arkitekt_next/cli/commands/init/main.py,sha256=1ZbZDBECZRxlcnulycdS15s-uQ5ngx4xP
|
|
|
65
66
|
arkitekt_next/cli/commands/inspect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
66
67
|
arkitekt_next/cli/commands/inspect/main.py,sha256=Bu1vAZudkFCtjDnZAB8yQLDt-UKY9pJGhLBlEfDqtkw,626
|
|
67
68
|
arkitekt_next/cli/commands/inspect/requirements.py,sha256=bLYaWddScW2_qQFCwRtCFUZNM3N-ZnS26ee9xXQAi14,1862
|
|
68
|
-
arkitekt_next/cli/commands/inspect/templates.py,sha256=
|
|
69
|
+
arkitekt_next/cli/commands/inspect/templates.py,sha256=SE3V4eK0NL81eIWsGdEDfDp76B542O8niW8lxh9t4Oc,2481
|
|
69
70
|
arkitekt_next/cli/commands/inspect/variables.py,sha256=LonDlbS2qH1v-jD6RfEhTv-mxmgeBMKqD3oO2iDJRjE,2698
|
|
70
71
|
arkitekt_next/cli/commands/kabinet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
71
|
-
arkitekt_next/cli/commands/kabinet/build.py,sha256=
|
|
72
|
-
arkitekt_next/cli/commands/kabinet/init.py,sha256=
|
|
73
|
-
arkitekt_next/cli/commands/kabinet/
|
|
74
|
-
arkitekt_next/cli/commands/kabinet/
|
|
75
|
-
arkitekt_next/cli/commands/kabinet/
|
|
76
|
-
arkitekt_next/cli/commands/kabinet/
|
|
77
|
-
arkitekt_next/cli/commands/kabinet/
|
|
78
|
-
arkitekt_next/cli/commands/kabinet/
|
|
72
|
+
arkitekt_next/cli/commands/kabinet/build.py,sha256=ntDM0bcjDLJI6KUC3IiCj8Y-cwQ8NcFr7Fz_qV-UQE8,9956
|
|
73
|
+
arkitekt_next/cli/commands/kabinet/init.py,sha256=otVakPcD6bC-7VtmqiLWNZKi3BE9evtMVv0TOGRnaD4,3583
|
|
74
|
+
arkitekt_next/cli/commands/kabinet/io.py,sha256=0u7tCOgojuLIwtjW8pJQZcKvzsRq37mIWVuc4ZOQZlk,5556
|
|
75
|
+
arkitekt_next/cli/commands/kabinet/main.py,sha256=PFc8JGeSxbU8ZzxPlFDQp7--ogQyxL9sGQ4pA8XQmEo,1314
|
|
76
|
+
arkitekt_next/cli/commands/kabinet/publish.py,sha256=B22UKmJMkiC1GZl--Nxwm-AWpAYaZ0o0Wo4t1iTJQ2M,3538
|
|
77
|
+
arkitekt_next/cli/commands/kabinet/stage.py,sha256=kOkZ_GCkIzCEUmtc80u35hFwU4uOtfXODfhrPuHMaMk,2013
|
|
78
|
+
arkitekt_next/cli/commands/kabinet/types.py,sha256=PYQM8ca_5fpPg79T3ZYwKckE-5rJiJgevvxF5M4mivY,4024
|
|
79
|
+
arkitekt_next/cli/commands/kabinet/utils.py,sha256=5MFFy9pBBOGMs_ACoLcffclCUCmX8bsTjLnrvFHE2Q4,1649
|
|
80
|
+
arkitekt_next/cli/commands/kabinet/validate.py,sha256=9zeTb6yzjQpjk6FQq6ce38a8u_pH9gDg2mBqqp-Pqwg,2473
|
|
79
81
|
arkitekt_next/cli/commands/manifest/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
80
|
-
arkitekt_next/cli/commands/manifest/inspect.py,sha256=
|
|
81
|
-
arkitekt_next/cli/commands/manifest/main.py,sha256=
|
|
82
|
+
arkitekt_next/cli/commands/manifest/inspect.py,sha256=9EyApVrHiBtyPajYjIoZEzeSmuZb7Y796JjYeKjpJZ8,1189
|
|
83
|
+
arkitekt_next/cli/commands/manifest/main.py,sha256=b_kz8wPYF1eHv_9WmB9Gop8TlDUgfKU-ZzeO3IaOOJ8,596
|
|
82
84
|
arkitekt_next/cli/commands/manifest/scopes.py,sha256=sw0HRy8GliEcmx3Sh6cPRpBkf1vxAGJwLgIO63ZB_t4,4879
|
|
83
85
|
arkitekt_next/cli/commands/manifest/version.py,sha256=3JdcXqiFeCvIaEpsMfeSKWU_uQehDkEawEpdSxWaKSA,4822
|
|
84
|
-
arkitekt_next/cli/commands/manifest/wizard.py,sha256=a8rIHgtmKuw-L4E3eO3kXwXv0TM2pN4Lq75y2QKXmcA,2498
|
|
85
86
|
arkitekt_next/cli/commands/run/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
86
87
|
arkitekt_next/cli/commands/run/dev.py,sha256=_UY1VdYS7Kx2FifFHk4gqtz51vI8JWWpesmwUd1pMnY,10056
|
|
87
88
|
arkitekt_next/cli/commands/run/main.py,sha256=0bNO3DqwbZ4ddMsDWbCGmlPD6Cs3Jlg4yh2-zilsEbY,552
|
|
@@ -92,7 +93,7 @@ arkitekt_next/cli/constants.py,sha256=ONXKA8LRxXQkOQ56ZElVMZSTiaIH1LE_ikmUUKem98
|
|
|
92
93
|
arkitekt_next/cli/dockerfiles/vanilla.dockerfile,sha256=0ujdG22rZ6v2n5TMHNA4HR5f1PP9KJvAQORz-DGHBpo,184
|
|
93
94
|
arkitekt_next/cli/errors.py,sha256=zLTjaCbun6qM2nTldjyZd-DvykqKn5A3Gn80uYdx7Vc,93
|
|
94
95
|
arkitekt_next/cli/inspect.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
95
|
-
arkitekt_next/cli/io.py,sha256=
|
|
96
|
+
arkitekt_next/cli/io.py,sha256=g5vj5W5k96t7WYcmWHL9CwPfUJbBl-JDX8huGqxWMYs,1889
|
|
96
97
|
arkitekt_next/cli/main.py,sha256=Ua7sq_OfC491F6r6zNs_oEiR4jVOsZwxLpX0ZXR0Jk0,2227
|
|
97
98
|
arkitekt_next/cli/options.py,sha256=LwhEdjZutH_go568buS37L9Gn_roinrCC6BUu2sC3B0,3814
|
|
98
99
|
arkitekt_next/cli/schemas/fluss.schema.graphql,sha256=MqrSpOxtWO9kWFCoUn9ySBPhIH3XozFiqrQl2zjEbiQ,35803
|
|
@@ -112,14 +113,14 @@ arkitekt_next/cli/schemas/unlok.schema.graphql,sha256=fXR846snIBIqkuQ-PlYnSkQjkF
|
|
|
112
113
|
arkitekt_next/cli/templates/filter.py,sha256=mD2jdNEXrZNagC_8WtuTisGJrGIbJDSylCvh19cF49I,650
|
|
113
114
|
arkitekt_next/cli/templates/simple.py,sha256=IbcThJ5LryXVFQUdzxfHQCtzSNxEQWTxbD__Ygxsp4M,1171
|
|
114
115
|
arkitekt_next/cli/texts.py,sha256=sYK94BLCt_FWFtdgPDZuKgpINICGFcHQLqO74fxQkug,688
|
|
115
|
-
arkitekt_next/cli/types.py,sha256=
|
|
116
|
-
arkitekt_next/cli/ui.py,sha256=
|
|
116
|
+
arkitekt_next/cli/types.py,sha256=s5gRsiQISrf6D2RKJi7jCoaAjpa8wcml5X2r2ED4kl8,1236
|
|
117
|
+
arkitekt_next/cli/ui.py,sha256=kn362oYYJHEg7q2vebA-EmcYH9nBIfwryBBsERULqM4,3518
|
|
117
118
|
arkitekt_next/cli/utils.py,sha256=rl1hfQIVzepLHPN_ZWuvfVH-IIVqcSfiFGyfNtL1XCo,445
|
|
118
119
|
arkitekt_next/cli/validators.py,sha256=XkLrOrDzBJwcG1keTawa_NJPt3QIBhb5KjepeH4N1KA,719
|
|
119
120
|
arkitekt_next/cli/vars.py,sha256=ev7cKDSPoik8hU9A_ohNpjRZX4FT1GYJaBoGLnxCKjU,982
|
|
120
121
|
arkitekt_next/cli/versions/v1.yaml,sha256=rv2-F6FQbTZi_H6pSE_csdICdtKBObDdoo_asOFi43Y,12
|
|
121
122
|
arkitekt_next/constants.py,sha256=sJkLlkH21REjbpiSHnXCiW0lWOwWT-2VqGvWlxjQePY,89
|
|
122
|
-
arkitekt_next/init_registry.py,sha256=
|
|
123
|
+
arkitekt_next/init_registry.py,sha256=Hb110Bd6pEnQUuJBpuyifQplvewVJZXSg-98YjAA8Js,4163
|
|
123
124
|
arkitekt_next/qt/__init__.py,sha256=5tCCd-FA3sMN9Lo5JRUYUM6xgs2zxyHj5YDpdWYbR0w,471
|
|
124
125
|
arkitekt_next/qt/assets/dark/gear.png,sha256=nYl1JZhcpwd7s5FgG2g-1RpkK7TH_QQRqJMmK6r0BpU,6296
|
|
125
126
|
arkitekt_next/qt/assets/dark/green pulse.gif,sha256=cUd2F3Qlvjb7SnsU-LjGgeLTa8KoPgu3C-LNrixIQds,105386
|
|
@@ -131,15 +132,15 @@ arkitekt_next/qt/assets/light/green pulse.gif,sha256=cUd2F3Qlvjb7SnsU-LjGgeLTa8K
|
|
|
131
132
|
arkitekt_next/qt/assets/light/orange pulse.gif,sha256=0gDvrRed0mzZZPHB4tP6vptx7myUCAa_hEVGdjRhNy8,94769
|
|
132
133
|
arkitekt_next/qt/assets/light/pink pulse.gif,sha256=rxd6ZTHSIG9JZuuHhi3jiSB_JYFBZpy7OWUeZETlhQ4,107513
|
|
133
134
|
arkitekt_next/qt/assets/light/red pulse.gif,sha256=U7WLbZvSl5e-Ob5RmawtlC0Rh9VVHxkjDbGjj7NYVUo,108749
|
|
134
|
-
arkitekt_next/qt/builders.py,sha256=
|
|
135
|
+
arkitekt_next/qt/builders.py,sha256=Xr1clQ9me4_7Dl4OoM_wcZ8SPzcfybb6y9tkYDOfSSY,9104
|
|
135
136
|
arkitekt_next/qt/magic_bar.py,sha256=b3WS8vN9cwaDHzBMtiKpw2UQcZwO1dF0mCLbLffO-eo,17596
|
|
136
137
|
arkitekt_next/qt/types.py,sha256=_oo3XCSvP_iMp1bdPRxOGRrmeyHnBKTQsf86q09irL4,4043
|
|
137
138
|
arkitekt_next/qt/utils.py,sha256=MgBPtPmCSBkIuATov3UgREESwxAHh77lWNNxyE7Qs48,773
|
|
138
|
-
arkitekt_next/service_registry.py,sha256=
|
|
139
|
+
arkitekt_next/service_registry.py,sha256=gMXyFftwuSoda9V13QEiNqFuwSBB2ss62dOjnXOetK0,4973
|
|
139
140
|
arkitekt_next/tqdm.py,sha256=lQcJI5Q6Py7Gy88hOCiJujjPEEGd8G2k1mOVJJ6oYe8,1531
|
|
140
|
-
arkitekt_next/utils.py,sha256=
|
|
141
|
-
arkitekt_next-0.8.
|
|
142
|
-
arkitekt_next-0.8.
|
|
143
|
-
arkitekt_next-0.8.
|
|
144
|
-
arkitekt_next-0.8.
|
|
145
|
-
arkitekt_next-0.8.
|
|
141
|
+
arkitekt_next/utils.py,sha256=Cf7B1-E7_NgBnV2vxIIfZRStiCYPopQqNJFjJwU3Uog,2403
|
|
142
|
+
arkitekt_next-0.8.62.dist-info/LICENSE,sha256=YZ2oRjC248t-GpoEyw7J13vwKYNG6zhYMaEAix6EzF0,1089
|
|
143
|
+
arkitekt_next-0.8.62.dist-info/METADATA,sha256=bsm_l0_Lh1CeA7VNeBkk_7quBo6NzpS1bBdueOXGTc4,6774
|
|
144
|
+
arkitekt_next-0.8.62.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
145
|
+
arkitekt_next-0.8.62.dist-info/entry_points.txt,sha256=-hxikQx4xZ6TiOnWVDOlTN_kcAISgGFvTHXIchsCHSc,60
|
|
146
|
+
arkitekt_next-0.8.62.dist-info/RECORD,,
|
|
@@ -1,329 +0,0 @@
|
|
|
1
|
-
from arkitekt_next.cli.types import Manifest, Packager
|
|
2
|
-
from arkitekt_next.cli.vars import get_manifest
|
|
3
|
-
import sys
|
|
4
|
-
import rich_click as click
|
|
5
|
-
from click import Context
|
|
6
|
-
import subprocess
|
|
7
|
-
from rich import get_console
|
|
8
|
-
|
|
9
|
-
try:
|
|
10
|
-
pass
|
|
11
|
-
except ImportError as e:
|
|
12
|
-
raise ImportError("Please install rekuest to use this feature") from e
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
import os
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def get_base_prefix_compat() -> str:
|
|
19
|
-
"""Get base/real prefix, or sys.prefix if there is none."""
|
|
20
|
-
return (
|
|
21
|
-
getattr(sys, "base_prefix", None)
|
|
22
|
-
or getattr(sys, "real_prefix", None)
|
|
23
|
-
or sys.prefix
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
def in_virtualenv() -> bool:
|
|
28
|
-
"""Returns True if in a virtualenv, otherwise False."""
|
|
29
|
-
return get_base_prefix_compat() != sys.prefix
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def pip_no_gpu(manifest: Manifest, python_version: str) -> str:
|
|
33
|
-
"""A function to generate a dockerfile for pip without gpu support
|
|
34
|
-
|
|
35
|
-
Parameters
|
|
36
|
-
----------
|
|
37
|
-
manifest : Manifest
|
|
38
|
-
The manifest of the project
|
|
39
|
-
python_version : str
|
|
40
|
-
The python version to use
|
|
41
|
-
|
|
42
|
-
Returns
|
|
43
|
-
-------
|
|
44
|
-
str
|
|
45
|
-
The dockerfile
|
|
46
|
-
"""
|
|
47
|
-
get_console().print("[blue]Setting up environment...[/blue]")
|
|
48
|
-
if not in_virtualenv():
|
|
49
|
-
click.confirm(
|
|
50
|
-
"You are not in a virtual environment. Consider using a virtual environment. Do you want to continue?",
|
|
51
|
-
abort=True,
|
|
52
|
-
)
|
|
53
|
-
|
|
54
|
-
if not os.path.exists(".requirements.txt") and click.confirm(
|
|
55
|
-
"Do you want to freeze the dependencies the current interpreter?"
|
|
56
|
-
):
|
|
57
|
-
subprocess.check_call("pip freeze > requirements.txt", shell=True)
|
|
58
|
-
|
|
59
|
-
get_console().print("[blue]Generating Dockerfile...[/blue]")
|
|
60
|
-
|
|
61
|
-
BASE_IMAGE = f"FROM python:{python_version}\n"
|
|
62
|
-
PIP_APPENDIX = "# setup pip environment\nCOPY ./requirements.txt /tmp/requirements.txt\nRUN pip install /tmp/requirements.yml\n"
|
|
63
|
-
WORKDIR_APPENDIX = "RUN mkdir /app \nWORKDIR /app"
|
|
64
|
-
|
|
65
|
-
dockerfile = BASE_IMAGE
|
|
66
|
-
if click.confirm(
|
|
67
|
-
"Do you want to install a requirements.txt with the dependencies with pip?"
|
|
68
|
-
):
|
|
69
|
-
dockerfile += PIP_APPENDIX
|
|
70
|
-
|
|
71
|
-
if click.confirm("Do you want to use the current working directory as the app?"):
|
|
72
|
-
dockerfile += WORKDIR_APPENDIX
|
|
73
|
-
|
|
74
|
-
return dockerfile
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
def poetry_no_gpu(manifest: Manifest, python_version: str) -> str:
|
|
78
|
-
"""A function to generate a dockerfile for pip without gpu support
|
|
79
|
-
|
|
80
|
-
Parameters
|
|
81
|
-
----------
|
|
82
|
-
manifest : Manifest
|
|
83
|
-
The manifest of the project
|
|
84
|
-
python_version : str
|
|
85
|
-
The python version to use
|
|
86
|
-
|
|
87
|
-
Returns
|
|
88
|
-
-------
|
|
89
|
-
str
|
|
90
|
-
The dockerfile
|
|
91
|
-
"""
|
|
92
|
-
get_console().print("[blue]Setting up environment...[/blue]")
|
|
93
|
-
if not in_virtualenv():
|
|
94
|
-
click.confirm(
|
|
95
|
-
"You are not in a virtual environment. Consider using a virtual environment. Do you want to continue?",
|
|
96
|
-
abort=True,
|
|
97
|
-
)
|
|
98
|
-
|
|
99
|
-
if click.confirm("Do you want to lock the current dependencies?"):
|
|
100
|
-
subprocess.check_call("poetry lock", shell=True)
|
|
101
|
-
|
|
102
|
-
get_console().print("[blue]Generating Dockerfile...[/blue]")
|
|
103
|
-
|
|
104
|
-
BASE_IMAGE = f"FROM python:{python_version}\n"
|
|
105
|
-
SETUP_POETRY = "# Install dependencies\nRUN pip install poetry rich\nENV PYTHONUNBUFFERED=1\n# Install Project files\nCOPY pyproject.toml /tmp\nCOPY poetry.lock /tmp\nRUN poetry config virtualenvs.create false\nWORKDIR /tmp\nRUN poetry install\n"
|
|
106
|
-
WORKDIR_APPENDIX = "RUN mkdir /app\nCOPY . /app\nWORKDIR /app\n"
|
|
107
|
-
|
|
108
|
-
dockerfile = BASE_IMAGE
|
|
109
|
-
dockerfile += SETUP_POETRY
|
|
110
|
-
|
|
111
|
-
if click.confirm("Do you want to use the current working directory as the app?"):
|
|
112
|
-
dockerfile += WORKDIR_APPENDIX
|
|
113
|
-
|
|
114
|
-
return dockerfile
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
CONDA_GPU = """
|
|
118
|
-
FROM jhnnsrs/tensorflow_conda_gpu:latest
|
|
119
|
-
|
|
120
|
-
# setup conda virtual environment
|
|
121
|
-
COPY ./requirements.yml /tmp/requirements.yml
|
|
122
|
-
RUN conda env create --name camera-seg -f /tmp/requirements.yml
|
|
123
|
-
|
|
124
|
-
RUN conda activate camera-seg
|
|
125
|
-
"""
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
CONDA_NO_GPU = """
|
|
129
|
-
FROM jhnnsrs/tensorflow_conda:latest
|
|
130
|
-
|
|
131
|
-
# setup conda virtual environment
|
|
132
|
-
COPY ./requirements.yml /tmp/requirements.yml
|
|
133
|
-
RUN conda env create --name camera-seg -f /tmp/requirements.yml
|
|
134
|
-
|
|
135
|
-
RUN conda activate camera-seg
|
|
136
|
-
"""
|
|
137
|
-
|
|
138
|
-
BUILDERS = {
|
|
139
|
-
"pip": {
|
|
140
|
-
"gpu": None,
|
|
141
|
-
"no-gpu": pip_no_gpu,
|
|
142
|
-
},
|
|
143
|
-
"conda": None,
|
|
144
|
-
"poetry": {
|
|
145
|
-
"gpu": None,
|
|
146
|
-
"no-gpu": poetry_no_gpu,
|
|
147
|
-
},
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
def build_dockerfile(
|
|
152
|
-
manifest: Manifest, packager: Packager, gpu: bool, python_version: str
|
|
153
|
-
) -> str:
|
|
154
|
-
"""A function to build a dockerfile
|
|
155
|
-
|
|
156
|
-
It delegates to the correct builder, based on the packager and gpu support
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
Parameters
|
|
160
|
-
----------
|
|
161
|
-
manifest : Manifest
|
|
162
|
-
The manifest of the project
|
|
163
|
-
packager : Packager
|
|
164
|
-
The detected packager
|
|
165
|
-
gpu : bool
|
|
166
|
-
The detected gpu support
|
|
167
|
-
python_version : str
|
|
168
|
-
_description_
|
|
169
|
-
|
|
170
|
-
Returns
|
|
171
|
-
-------
|
|
172
|
-
str
|
|
173
|
-
The dockerfile
|
|
174
|
-
|
|
175
|
-
Raises
|
|
176
|
-
------
|
|
177
|
-
click.ClickException
|
|
178
|
-
An exception if the packager is not supported
|
|
179
|
-
"""
|
|
180
|
-
|
|
181
|
-
strategy = BUILDERS.get(packager, {})
|
|
182
|
-
|
|
183
|
-
if not strategy:
|
|
184
|
-
raise click.ClickException(
|
|
185
|
-
f"Packager {packager} is not supported. Please create a issue on github and create your own Dockerfile for now."
|
|
186
|
-
)
|
|
187
|
-
|
|
188
|
-
builder = strategy.get(gpu and "gpu" or "no-gpu", None)
|
|
189
|
-
|
|
190
|
-
if not builder:
|
|
191
|
-
raise click.ClickException(
|
|
192
|
-
f"Packager {packager} {gpu and 'with GPU Support'} is not supported. Please create a issue on github and create your own Dockerfile for now."
|
|
193
|
-
)
|
|
194
|
-
|
|
195
|
-
return builder(manifest, python_version)
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
def docker_file_wizard(manifest: Manifest, auto: bool = True) -> str:
|
|
199
|
-
"""A wizard to generate a dockerfile
|
|
200
|
-
|
|
201
|
-
Parameters
|
|
202
|
-
----------
|
|
203
|
-
manifest : Manifest
|
|
204
|
-
The manifest of the project
|
|
205
|
-
auto : bool, optional
|
|
206
|
-
Should we autodefault prompts to true, by default True
|
|
207
|
-
|
|
208
|
-
Returns
|
|
209
|
-
-------
|
|
210
|
-
str
|
|
211
|
-
The dockerfile
|
|
212
|
-
|
|
213
|
-
------
|
|
214
|
-
ImportError
|
|
215
|
-
If toml is not installed
|
|
216
|
-
"""
|
|
217
|
-
python_version = (
|
|
218
|
-
f"{ sys.version_info.major}.{ sys.version_info.minor}.{ sys.version_info.micro}"
|
|
219
|
-
)
|
|
220
|
-
python_version = (
|
|
221
|
-
python_version
|
|
222
|
-
if auto
|
|
223
|
-
else click.prompt(
|
|
224
|
-
"Which python version to do you want to use?", default=python_version
|
|
225
|
-
)
|
|
226
|
-
)
|
|
227
|
-
|
|
228
|
-
packager = None
|
|
229
|
-
|
|
230
|
-
gpu = "gpu" in manifest.requirements
|
|
231
|
-
|
|
232
|
-
# loading environment
|
|
233
|
-
# check if running in conda
|
|
234
|
-
conda_env = os.environ.get("CONDA_DEFAULT_ENV")
|
|
235
|
-
if conda_env:
|
|
236
|
-
click.echo(f"Found running in conda environment {conda_env}")
|
|
237
|
-
|
|
238
|
-
packager = Packager.CONDA
|
|
239
|
-
|
|
240
|
-
# Check if pyproject.toml exists
|
|
241
|
-
if os.path.exists("pyproject.toml"):
|
|
242
|
-
# Check if poetry is installed
|
|
243
|
-
try:
|
|
244
|
-
import toml
|
|
245
|
-
except ImportError as e:
|
|
246
|
-
raise ImportError("Please install toml to use this feature") from e
|
|
247
|
-
|
|
248
|
-
# Check if poetry is used
|
|
249
|
-
pyproject = toml.load("pyproject.toml")
|
|
250
|
-
if "tool" in pyproject and "poetry" in pyproject["tool"]:
|
|
251
|
-
click.echo("Found poetry project")
|
|
252
|
-
do = True if auto else click.confirm("Do you want to use poetry?")
|
|
253
|
-
if do:
|
|
254
|
-
packager = Packager.POETRY
|
|
255
|
-
|
|
256
|
-
if not packager:
|
|
257
|
-
click.echo(
|
|
258
|
-
"No advanced packager found. Considering using poetry "
|
|
259
|
-
"with a pyproject.toml or conda with a environment.yml"
|
|
260
|
-
)
|
|
261
|
-
|
|
262
|
-
if os.path.exists("requirements.txt"):
|
|
263
|
-
click.prompt("Found requirements.txt file in current directory. Using it.")
|
|
264
|
-
|
|
265
|
-
packager = Packager.PIP
|
|
266
|
-
|
|
267
|
-
if not click.confirm(
|
|
268
|
-
f"Would you like to generate Template Dockerfile: Using {packager} with Python {python_version} {'and' if gpu else 'without'} GPU support"
|
|
269
|
-
):
|
|
270
|
-
raise click.Abort("Aborted")
|
|
271
|
-
|
|
272
|
-
dockfile = build_dockerfile(
|
|
273
|
-
manifest, packager, gpu=gpu, python_version=python_version
|
|
274
|
-
)
|
|
275
|
-
|
|
276
|
-
return dockfile
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
def check_overwrite_dockerfile(ctx: Context, param: str, value: bool) -> bool:
|
|
280
|
-
"""A callback to check if the dockerfile should be overwritten
|
|
281
|
-
|
|
282
|
-
Parameters
|
|
283
|
-
----------
|
|
284
|
-
ctx : Context
|
|
285
|
-
The context of the click command
|
|
286
|
-
param : str
|
|
287
|
-
The parameter name
|
|
288
|
-
value : str
|
|
289
|
-
The value of the parameter
|
|
290
|
-
|
|
291
|
-
Returns
|
|
292
|
-
-------
|
|
293
|
-
bool
|
|
294
|
-
Should we overwrite the dockerfile?
|
|
295
|
-
"""
|
|
296
|
-
|
|
297
|
-
app_file = ctx.params["dockerfile"]
|
|
298
|
-
if os.path.exists(app_file) and not value:
|
|
299
|
-
should_overwrite = click.confirm(
|
|
300
|
-
"Docker already exists. Do you want to overwrite?", abort=True
|
|
301
|
-
)
|
|
302
|
-
if should_overwrite:
|
|
303
|
-
return True
|
|
304
|
-
else:
|
|
305
|
-
raise click.Abort()
|
|
306
|
-
|
|
307
|
-
return value
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
@click.command()
|
|
311
|
-
@click.option("--dockerfile", help="The dockerfile to generate", default="Dockerfile")
|
|
312
|
-
@click.option(
|
|
313
|
-
"--overwrite-dockerfile",
|
|
314
|
-
"-o",
|
|
315
|
-
help="Should we overwrite the existing Dockerfile?",
|
|
316
|
-
is_flag=True,
|
|
317
|
-
default=False,
|
|
318
|
-
callback=check_overwrite_dockerfile,
|
|
319
|
-
)
|
|
320
|
-
@click.pass_context
|
|
321
|
-
def wizard(ctx: Context, dockerfile: str, overwrite_dockerfile: bool) -> None:
|
|
322
|
-
"""Runs the port wizard to generate a dockerfile to be used with port"""
|
|
323
|
-
|
|
324
|
-
manifest = get_manifest(ctx)
|
|
325
|
-
|
|
326
|
-
dockfile = docker_file_wizard(manifest)
|
|
327
|
-
|
|
328
|
-
with open(dockerfile, "w") as file:
|
|
329
|
-
file.write(dockfile)
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
import rich_click as click
|
|
3
|
-
from arkitekt_next.cli.types import Requirement, Framework
|
|
4
|
-
from rich.table import Table
|
|
5
|
-
from rich.panel import Panel
|
|
6
|
-
from rich.console import Group
|
|
7
|
-
from arkitekt_next.cli.vars import get_console
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def check_dl_frameworks():
|
|
11
|
-
import site
|
|
12
|
-
import sys
|
|
13
|
-
|
|
14
|
-
site_packages = site.getsitepackages()
|
|
15
|
-
site_packages.append(sys.prefix)
|
|
16
|
-
|
|
17
|
-
frameworks = {
|
|
18
|
-
"tensorflow": Framework.TENSORFLOW,
|
|
19
|
-
"torch": Framework.PYTORCH,
|
|
20
|
-
"torchvision": Framework.PYTORCH,
|
|
21
|
-
"tensorflow-gpu": Framework.TENSORFLOW,
|
|
22
|
-
"torch-gpu": Framework.PYTORCH,
|
|
23
|
-
"torchvision-gpu": Framework.PYTORCH,
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
included_frameworks = set()
|
|
27
|
-
|
|
28
|
-
for key, value in frameworks.items():
|
|
29
|
-
for site_package in site_packages:
|
|
30
|
-
if os.path.exists(os.path.join(site_package, key)):
|
|
31
|
-
included_frameworks.add(value)
|
|
32
|
-
|
|
33
|
-
return included_frameworks
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def inspect_requirements(automatic=False):
|
|
37
|
-
"""Inspect the requirements and
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return a list of requirements and reasons.
|
|
41
|
-
|
|
42
|
-
Parameters
|
|
43
|
-
----------
|
|
44
|
-
automatic : bool, optional
|
|
45
|
-
Should we automically add all of the requirements, by default False
|
|
46
|
-
|
|
47
|
-
Returns
|
|
48
|
-
-------
|
|
49
|
-
_type_
|
|
50
|
-
_description_
|
|
51
|
-
"""
|
|
52
|
-
requirements = []
|
|
53
|
-
reasons = []
|
|
54
|
-
frameworks = check_dl_frameworks()
|
|
55
|
-
if frameworks:
|
|
56
|
-
requirements.append(Requirement.GPU)
|
|
57
|
-
reasons.append(
|
|
58
|
-
"Deep learning framework detected ('{}')".format(", ".join(frameworks))
|
|
59
|
-
)
|
|
60
|
-
|
|
61
|
-
return requirements, reasons
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
@click.command()
|
|
65
|
-
@click.pass_context
|
|
66
|
-
def wizard(ctx) -> None:
|
|
67
|
-
"""Inspect the current project for requirements
|
|
68
|
-
|
|
69
|
-
Inspects the current project and provides a list of [i]suggest[/]ed requirements
|
|
70
|
-
that should be added to the manifest. You should run this command in the same
|
|
71
|
-
virtual environment as you are running your app, as it will detect the installed
|
|
72
|
-
packages and provide a list of requirements that should be added to the manifest.
|
|
73
|
-
|
|
74
|
-
"""
|
|
75
|
-
|
|
76
|
-
console = get_console(ctx)
|
|
77
|
-
requirements, reasons = inspect_requirements()
|
|
78
|
-
|
|
79
|
-
table = Table.grid()
|
|
80
|
-
table.padding = (0, 4, 0, 0)
|
|
81
|
-
table.add_column("Requirement")
|
|
82
|
-
table.add_column("Reason")
|
|
83
|
-
|
|
84
|
-
for item in zip(requirements, reasons):
|
|
85
|
-
table.add_row(str(item[0].value), item[1])
|
|
86
|
-
|
|
87
|
-
panel = Panel(
|
|
88
|
-
Group("[bold green]Manifest[/]", table),
|
|
89
|
-
title_align="center",
|
|
90
|
-
border_style="green",
|
|
91
|
-
style="white",
|
|
92
|
-
)
|
|
93
|
-
|
|
94
|
-
console.print(panel)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|