UncountablePythonSDK 0.0.75__py3-none-any.whl → 0.0.76__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 UncountablePythonSDK might be problematic. Click here for more details.
- {UncountablePythonSDK-0.0.75.dist-info → UncountablePythonSDK-0.0.76.dist-info}/METADATA +2 -2
- {UncountablePythonSDK-0.0.75.dist-info → UncountablePythonSDK-0.0.76.dist-info}/RECORD +33 -27
- docs/requirements.txt +1 -1
- examples/async_batch.py +3 -3
- pkgs/serialization/serial_class.py +3 -0
- pkgs/type_spec/builder.py +7 -8
- pkgs/type_spec/emit_python.py +6 -6
- uncountable/core/environment.py +15 -2
- uncountable/integration/construct_client.py +3 -4
- uncountable/integration/queue_runner/job_scheduler.py +1 -1
- uncountable/integration/queue_runner/worker.py +3 -8
- uncountable/integration/scan_profiles.py +39 -15
- uncountable/integration/server.py +4 -12
- uncountable/integration/telemetry.py +2 -2
- uncountable/integration/webhook_server/entrypoint.py +4 -10
- uncountable/types/__init__.py +8 -0
- uncountable/types/api/entity/create_entities.py +4 -2
- uncountable/types/api/entity/create_entity.py +4 -2
- uncountable/types/api/entity/grant_entity_permissions.py +48 -0
- uncountable/types/api/recipes/get_column_calculation_values.py +58 -0
- uncountable/types/async_batch_processor.py +43 -0
- uncountable/types/async_batch_t.py +1 -0
- uncountable/types/auth_retrieval.py +12 -0
- uncountable/types/auth_retrieval_t.py +75 -0
- uncountable/types/client_base.py +62 -4
- uncountable/types/entity.py +3 -0
- uncountable/types/entity_t.py +20 -0
- uncountable/types/integration_server.py +9 -0
- uncountable/types/integration_server_t.py +37 -0
- uncountable/types/job_definition.py +1 -5
- uncountable/types/job_definition_t.py +20 -60
- {UncountablePythonSDK-0.0.75.dist-info → UncountablePythonSDK-0.0.76.dist-info}/WHEEL +0 -0
- {UncountablePythonSDK-0.0.75.dist-info → UncountablePythonSDK-0.0.76.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: UncountablePythonSDK
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.76
|
|
4
4
|
Summary: Uncountable SDK
|
|
5
5
|
Project-URL: Homepage, https://github.com/uncountableinc/uncountable-python-sdk
|
|
6
6
|
Project-URL: Repository, https://github.com/uncountableinc/uncountable-python-sdk.git
|
|
@@ -16,7 +16,7 @@ Classifier: Topic :: Utilities
|
|
|
16
16
|
Classifier: Typing :: Typed
|
|
17
17
|
Requires-Python: >=3.11
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
|
-
Requires-Dist: aiotus ==
|
|
19
|
+
Requires-Dist: aiotus ==1.*
|
|
20
20
|
Requires-Dist: aiohttp ==3.*
|
|
21
21
|
Requires-Dist: requests ==2.*
|
|
22
22
|
Requires-Dist: SQLAlchemy >=1.4.0
|
|
@@ -3,7 +3,7 @@ docs/conf.py,sha256=YF5J-9g_Wg8wXmyHsGaE8xYlDEzqocNl3UWUmP0CwBg,1702
|
|
|
3
3
|
docs/index.md,sha256=eEdirX_Ds6ICTRtIS5iT4irCquHcQyKN7E4M5QP9T8A,257
|
|
4
4
|
docs/justfile,sha256=cvNcpb-ByPOF2aCrFlg3DDZBoYMx5W8xGdr13m9HcnI,215
|
|
5
5
|
docs/quickstart.md,sha256=3GuJ0MB1O5kjlsrgAmdSkDq0rYqATrYy-tzEHDy8H-c,422
|
|
6
|
-
docs/requirements.txt,sha256=
|
|
6
|
+
docs/requirements.txt,sha256=XNw3eJfJPf6Z2DpwtcNgEJpoEKS0g5v3vY6UBFtiEKM,138
|
|
7
7
|
docs/static/logo_blue.png,sha256=SyYpMTVhhBbhF5Wl8lWaVwz-_p1MIR6dW6bVhufQRME,46708
|
|
8
8
|
docs/static/favicons/android-chrome-192x192.png,sha256=XoF-AhD55JlSBDGsEPJKfT_VeXT-awhwKyZnxLhrwvk,1369
|
|
9
9
|
docs/static/favicons/android-chrome-512x512.png,sha256=1S4xwY9YtJQ5ifFsZ-DOzssoyBYs0t9uwdOUmYx0Xso,3888
|
|
@@ -14,7 +14,7 @@ docs/static/favicons/favicon-32x32.png,sha256=U4UU652zGnSeU3P9kUqxPeEnVf6zhtdNdN
|
|
|
14
14
|
docs/static/favicons/manifest.json,sha256=6q_3nZkcg_x0xut4eE-xpdeMY1TydwiZIcbXlLAq9X8,437
|
|
15
15
|
docs/static/favicons/mstile-150x150.png,sha256=eAK4QdEofhdLtfmjuPTpnX3MJqYnvGXsHYUjlcQekyY,1035
|
|
16
16
|
docs/static/favicons/safari-pinned-tab.svg,sha256=S84fRnz0ZxLnQrKtmmFZytiRyu1xLtMR_RVy5jmwU7k,1926
|
|
17
|
-
examples/async_batch.py,sha256=
|
|
17
|
+
examples/async_batch.py,sha256=tEyvgxk2uf681mKlN4TDuPMkb1OHyM9oO8pYW4A7HvM,1142
|
|
18
18
|
examples/create_entity.py,sha256=t6WBZsWRDbWZgFCWXKGgKL5LAB6-38oaiNYGxMAa2No,686
|
|
19
19
|
examples/edit_recipe_inputs.py,sha256=mtk_oSkN-OT2hKkb1XKXrRiUaGYTJstXuOKyTR51Fjo,1663
|
|
20
20
|
examples/invoke_uploader.py,sha256=rEvmVY5TjigN_-4PTQdkjY-bC5DrYMcJgquyZ4Tt5FM,748
|
|
@@ -41,7 +41,7 @@ pkgs/filesystem_utils/filesystem_session.py,sha256=BQ2Go8Mu9-GcnaWh2Pm4x7ugLVsre
|
|
|
41
41
|
pkgs/serialization/__init__.py,sha256=LifasRW0a50A3qRFmo2bf3FQ6TXhZWOTz2-CVTgPjcQ,753
|
|
42
42
|
pkgs/serialization/missing_sentry.py,sha256=aM_9KxbCk9dVvXvcOKgkIQBqFWvLhv8QlIUCiuFEXMo,806
|
|
43
43
|
pkgs/serialization/opaque_key.py,sha256=FIfXEE0DA1U8R_taFbQ1RCoTSgehrPjP06-qvo-GeNQ,177
|
|
44
|
-
pkgs/serialization/serial_class.py,sha256=
|
|
44
|
+
pkgs/serialization/serial_class.py,sha256=xURwC05-ImnHU1pKM8BBYpzbrhTtiZr30UlzaA0T7zY,6110
|
|
45
45
|
pkgs/serialization/serial_union.py,sha256=xpdeqCrRd0sNCaUwBQRzje6V40ndCbJpZrLX2K0d5xo,2741
|
|
46
46
|
pkgs/serialization/yaml.py,sha256=yoJtu7_ixnJV6uTxA_U1PpK5F_ixT08AKVh5ocyYwXM,1466
|
|
47
47
|
pkgs/serialization_util/__init__.py,sha256=MVKqHTUl2YnWZAFG9xCxu1SgmkQ5xPofrAGlYg6h7rI,330
|
|
@@ -52,12 +52,12 @@ pkgs/strenum_compat/__init__.py,sha256=wXRFeNvBm8RU6dy1PFJ5sRLgUIEeH_DVR95Sv5qpG
|
|
|
52
52
|
pkgs/strenum_compat/strenum_compat.py,sha256=uOUAgpYTjHs1MX8dG81jRlyTkt3KNbkV_25zp7xTX2s,36
|
|
53
53
|
pkgs/type_spec/__init__.py,sha256=h5DmJTca4QVV10sZR1x0-MlkZfuGYDfapR3zHvXfzto,19
|
|
54
54
|
pkgs/type_spec/__main__.py,sha256=5bJaX9Y_-FavP0qwzhk-z-V97UY7uaezJTa1zhO_HHQ,1048
|
|
55
|
-
pkgs/type_spec/builder.py,sha256=
|
|
55
|
+
pkgs/type_spec/builder.py,sha256=mG796Y15_xr_i0Ffl0XYI-CsqRlssO0mjKYt7lXTSqU,48790
|
|
56
56
|
pkgs/type_spec/config.py,sha256=ZUmPWCzTwjesAqlqeL1_E_yoIUZE_8g0kI2yXtbU0Zc,4811
|
|
57
57
|
pkgs/type_spec/emit_io_ts.py,sha256=U03sQBpgRqYOaMKrPCRnYb70YboiCgaZfseCXSzW5NY,5707
|
|
58
58
|
pkgs/type_spec/emit_open_api.py,sha256=5a0iAHBbgFD4wfKuyjPvxCYYHNTjKxEHA0aYjMGSqe4,24596
|
|
59
59
|
pkgs/type_spec/emit_open_api_util.py,sha256=x4GCiZSGdypJ9Qtm6I5W_3UvwdJyMs8_OGhJ8_THznA,2401
|
|
60
|
-
pkgs/type_spec/emit_python.py,sha256=
|
|
60
|
+
pkgs/type_spec/emit_python.py,sha256=JQgOF4afkf-VjTa2-yAHMZpEkEKzi6H1T-5d085wjvM,47371
|
|
61
61
|
pkgs/type_spec/emit_typescript.py,sha256=PL1h2UvTp1PRMkTXH893ZYS3cPUrrupjnLg_9ndZGDQ,8838
|
|
62
62
|
pkgs/type_spec/emit_typescript_util.py,sha256=e2rGSs9OTD-iXwcHfU4V9E35jwMc5qVshhOKMknGrJ8,10319
|
|
63
63
|
pkgs/type_spec/load_types.py,sha256=vO8VLI7aTKzzHQIla-WO-5Z_mfTuwUqH4ZSKN9E9n5U,3688
|
|
@@ -81,19 +81,19 @@ uncountable/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
81
81
|
uncountable/core/__init__.py,sha256=RFv0kO6rKFf1PtBPu83hCGmxqkJamRtsgQ9_-ztw7tA,341
|
|
82
82
|
uncountable/core/async_batch.py,sha256=Gur0VOS0AH2ugwvk65hwoX-iqwQAAyJaejY_LyAZZPo,1210
|
|
83
83
|
uncountable/core/client.py,sha256=qTM61IJV4DTE2LsTZyv4kePBZAv55vncWt2rtBf-SLQ,10632
|
|
84
|
-
uncountable/core/environment.py,sha256=
|
|
84
|
+
uncountable/core/environment.py,sha256=K2TtE52JbW5UOBkBSc2Ee2l9rDIoRNoFDXDqRha1fJI,1036
|
|
85
85
|
uncountable/core/file_upload.py,sha256=qR7BBBWVxFNrb1_WICreo3dkZygE9lcE1fmZCQrDZU0,3469
|
|
86
86
|
uncountable/core/types.py,sha256=s2CjqYJpsmbC7xMwxxT7kJ_V9bwokrjjWVVjpMcQpKI,333
|
|
87
87
|
uncountable/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
88
88
|
uncountable/integration/cli.py,sha256=h3RE0l1SdjkveOKeY2amlmrJppK4HEQJXk8VG9UJRWg,1359
|
|
89
|
-
uncountable/integration/construct_client.py,sha256=
|
|
89
|
+
uncountable/integration/construct_client.py,sha256=u_vKLG3uMjk-8mM8SbHMn1-Sh-jMeYEGHrOaU_X2b3c,1949
|
|
90
90
|
uncountable/integration/cron.py,sha256=6eH-kIs3sdYPCyb62_L2M7U_uQTdMTdwY5hreEJb0hw,887
|
|
91
91
|
uncountable/integration/entrypoint.py,sha256=BHOYPQgKvZE6HG8Rv15MkdYl8lRkvfDgv1OdLo0oQ9Q,433
|
|
92
92
|
uncountable/integration/job.py,sha256=af197JUceIKzpIN5C2z8zeZOPhIQ16ipyC6qVt1WXv0,2386
|
|
93
|
-
uncountable/integration/scan_profiles.py,sha256=
|
|
93
|
+
uncountable/integration/scan_profiles.py,sha256=760zbv7O7wXxHUHqUkFBpd1Afe8hqxMPU3ugwZGdhEo,2925
|
|
94
94
|
uncountable/integration/scheduler.py,sha256=sVe7V5zlUbSzSMyC30rAlWR30w0jurhrYYCgK8-lVRo,4546
|
|
95
|
-
uncountable/integration/server.py,sha256=
|
|
96
|
-
uncountable/integration/telemetry.py,sha256=
|
|
95
|
+
uncountable/integration/server.py,sha256=Hwi3fpdhcSK2HynI6Zwi7A3mWTTCaK_ic53M5-4IEp4,4716
|
|
96
|
+
uncountable/integration/telemetry.py,sha256=bX68_a2PyG23n1QtIFxcH30JynUoovMz6HgA_jgUb1A,7132
|
|
97
97
|
uncountable/integration/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
98
98
|
uncountable/integration/db/connect.py,sha256=mE3bdV0huclH2iT_dXCQdRL4LkjIuf_myAR64RTWXEs,498
|
|
99
99
|
uncountable/integration/db/session.py,sha256=96cGQXpe6IugBTdSsjdP0S5yhJ6toSmbVB6qhc3FJzE,693
|
|
@@ -102,10 +102,10 @@ uncountable/integration/executors/executors.py,sha256=CbwatKkHrLhnqYr_nsBjr0KYeO
|
|
|
102
102
|
uncountable/integration/executors/generic_upload_executor.py,sha256=NlW5WcYePPA7_fwp5uW_2afAiQLKK7rCkKF06wQ948E,10375
|
|
103
103
|
uncountable/integration/executors/script_executor.py,sha256=OmSBOtU48G3mqza9c2lCm84pGGyaDk-ZBJCx3RsdJXc,846
|
|
104
104
|
uncountable/integration/queue_runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
105
|
-
uncountable/integration/queue_runner/job_scheduler.py,sha256=
|
|
105
|
+
uncountable/integration/queue_runner/job_scheduler.py,sha256=5Z74Wb17oohz7EFN40JBymH1UWW7-Dnk9HhOz3wZ08E,5005
|
|
106
106
|
uncountable/integration/queue_runner/queue_runner.py,sha256=0BmYu5zHdothTevGsB-nXg6MBd1UD-WkP3h1WCKMdQg,710
|
|
107
107
|
uncountable/integration/queue_runner/types.py,sha256=8qTq29BTSa5rmW6CBlBntP0pNIiDcwu1wHa78pjroS0,219
|
|
108
|
-
uncountable/integration/queue_runner/worker.py,sha256=
|
|
108
|
+
uncountable/integration/queue_runner/worker.py,sha256=pYLd6D3-ZSM3zcd7UKwyYUADVYEAUK9Hfi0PprwkNqo,4170
|
|
109
109
|
uncountable/integration/queue_runner/command_server/__init__.py,sha256=gQPVILGpWzCr2i5GJyoqna7AOSFvtn4tav69gB78mTQ,571
|
|
110
110
|
uncountable/integration/queue_runner/command_server/command_client.py,sha256=DJb0TUVFkiiLBEQzHSN94sTRnuEbutNEgdN39XmnOXI,2046
|
|
111
111
|
uncountable/integration/queue_runner/command_server/command_server.py,sha256=yyXryhiEC2eGS0yFElLGsVzSKwOuYvj-zp22jQorkv0,2138
|
|
@@ -121,24 +121,26 @@ uncountable/integration/queue_runner/datastore/interface.py,sha256=j4D-zVvLq-48V
|
|
|
121
121
|
uncountable/integration/queue_runner/datastore/model.py,sha256=8-RI5A2yPZVGBLWINVmMd6VOl_oHtqGtnaNXcapAChw,577
|
|
122
122
|
uncountable/integration/secret_retrieval/__init__.py,sha256=3QXVj35w8rRMxVvmmsViFYDi3lcb3g70incfalOEm6o,87
|
|
123
123
|
uncountable/integration/secret_retrieval/retrieve_secret.py,sha256=eoPWbkUtCn_63A4TFlK_nvEDvfm4u2fiOoglmAkBG3U,3004
|
|
124
|
-
uncountable/integration/webhook_server/entrypoint.py,sha256=
|
|
125
|
-
uncountable/types/__init__.py,sha256=
|
|
124
|
+
uncountable/integration/webhook_server/entrypoint.py,sha256=aaulH6GS7uvBw1jPrZwPDS3mRE9NY-lKxuX7vtoJcGg,5407
|
|
125
|
+
uncountable/types/__init__.py,sha256=mjJX5fo0Oq8_CRx6eo3NbY6ycKaB3rTb8EXH4vXY5ok,8965
|
|
126
126
|
uncountable/types/async_batch.py,sha256=_OhT25_dEVts_z_n1kqfJH3xlZg3btLqR6TNkfFLlXE,609
|
|
127
|
-
uncountable/types/async_batch_processor.py,sha256=
|
|
128
|
-
uncountable/types/async_batch_t.py,sha256=
|
|
127
|
+
uncountable/types/async_batch_processor.py,sha256=DJn9KdgUv_l7ojCVJ_d9wCS3GUNc21b5cOrpunty2KU,13129
|
|
128
|
+
uncountable/types/async_batch_t.py,sha256=niXgIM7FQXb_1RLX8CBXiGaYSa8nqd-jqX68p7gMgJo,2558
|
|
129
|
+
uncountable/types/auth_retrieval.py,sha256=FY8Vr_BWD4O8PsauPNt_7_08YZSHFaUlTT72L5XJ-4o,570
|
|
130
|
+
uncountable/types/auth_retrieval_t.py,sha256=D2ptCIsuCecJa_P8K2qrNk2-zz1WuBpOrsZ65BRP-Dw,2221
|
|
129
131
|
uncountable/types/base.py,sha256=xVSjWvA_fUUnkCg83EjoYEFvAfmskinKFMeYFOxNc9E,359
|
|
130
132
|
uncountable/types/base_t.py,sha256=XXjZXexx0xWFUxMMhW8i9nIL6n8dsZVsHwdgnhZ0zJ4,2714
|
|
131
133
|
uncountable/types/calculations.py,sha256=FFO_D3BbKoGDZnqWvTKpW4KF359i2vrKjpdFCLYzJC0,284
|
|
132
134
|
uncountable/types/calculations_t.py,sha256=157qD0VqijD5kNDF5BRsfGli3WaPGnNjoo2o2CPX-Ik,669
|
|
133
135
|
uncountable/types/chemical_structure.py,sha256=E-LnikTFDoVQ1b2zKaVUIO_PAKm-7aZZYJi8I8SDSic,302
|
|
134
136
|
uncountable/types/chemical_structure_t.py,sha256=zDJ6WkeT3YwWZRZT21znQn2ZYelv3L7yv7kJiGoNZCw,824
|
|
135
|
-
uncountable/types/client_base.py,sha256=
|
|
137
|
+
uncountable/types/client_base.py,sha256=fpVHWPifRToIiaBPKcM_YT8WQFrK-SW58muGnCTX3d0,68780
|
|
136
138
|
uncountable/types/client_config.py,sha256=4h5Liko9uKCo9_0gdbPhoK6Jr2Kv7tioLiQ8iKeq-_4,301
|
|
137
139
|
uncountable/types/client_config_t.py,sha256=6dStfR0IEHiPW8f9_aF3DD_tHmXXw2rEVrgpebzq8Fg,747
|
|
138
140
|
uncountable/types/curves.py,sha256=W6uMpG5SyW1MS82szNpxkFEn1MnxNpBFyFbQb2Ysfng,366
|
|
139
141
|
uncountable/types/curves_t.py,sha256=lKhRM-2cZ_sFaW7pa_I_Ipz_pJhm3_yTFehRXI79pKk,1416
|
|
140
|
-
uncountable/types/entity.py,sha256=
|
|
141
|
-
uncountable/types/entity_t.py,sha256=
|
|
142
|
+
uncountable/types/entity.py,sha256=ECvhswTj9xp4gUEKTZoZYyxHvx1oyvE5FNiGNfSyUgk,528
|
|
143
|
+
uncountable/types/entity_t.py,sha256=8Ju0wEpg-R3QhykoL6nlfogQwL214E_pqE4k1fIWn1I,16208
|
|
142
144
|
uncountable/types/experiment_groups.py,sha256=_0OXcPzSAbkE-rfKt5tPx178YJ4pcEKZvrCxUHgDnvw,309
|
|
143
145
|
uncountable/types/experiment_groups_t.py,sha256=qEs8YW0eJOJ_sCOObT5v9QRx9wsjLYpJqJhCJXa-vNA,721
|
|
144
146
|
uncountable/types/field_values.py,sha256=uuIWX-xmfvcinYPdfkWJeb56zzQY01mc9rmotMPMh24,503
|
|
@@ -155,8 +157,10 @@ uncountable/types/input_attributes.py,sha256=IrIKQnHqHdS1Utdfzr9GnOe17a8riaqYcO1
|
|
|
155
157
|
uncountable/types/input_attributes_t.py,sha256=mD9JIagE8TQ0KVwGkl-hinKz_gcunV3y30w_dW5sfeU,884
|
|
156
158
|
uncountable/types/inputs.py,sha256=jFZHyo0ZOGJ3bb4TOPXovhE3Fo1-kf7B7T3usk4Sqg8,467
|
|
157
159
|
uncountable/types/inputs_t.py,sha256=CpuuKRduZGET_wvkGUpUFN6rbZCHsdOIp1veEM-hspI,2143
|
|
158
|
-
uncountable/types/
|
|
159
|
-
uncountable/types/
|
|
160
|
+
uncountable/types/integration_server.py,sha256=61NuGs1pbgovU5Vuje7oN9HpLwOGCCw9Q_CcUvt_0qI,385
|
|
161
|
+
uncountable/types/integration_server_t.py,sha256=wa45RWChRsj2oAvWcOfZXA2xZxyEEkzltuJqZwKTna8,1048
|
|
162
|
+
uncountable/types/job_definition.py,sha256=DEma_s-0oBo2tPI5u9IU_UDw-9MWbn4mTZsd_RHiYGE,1667
|
|
163
|
+
uncountable/types/job_definition_t.py,sha256=N9080NAzwfYQKTusY2vs3z1UrM5s_QGtzWyoFxr2_iM,7931
|
|
160
164
|
uncountable/types/outputs.py,sha256=sUZx_X-TKCZtLm1YCEH8OISX9DdPlv9ZuUfM3-askCc,281
|
|
161
165
|
uncountable/types/outputs_t.py,sha256=AdJZvIzqikHV9CnlC24WEo0OUe-5vrD4cjMqc2txEs0,765
|
|
162
166
|
uncountable/types/overrides.py,sha256=Mv-smwK1B3pvbt48fNOiqkeQn9wMgYlBFJKUBOJqceE,431
|
|
@@ -204,9 +208,10 @@ uncountable/types/api/batch/execute_batch_load_async.py,sha256=j5a5dk0_lTJ-YslrB
|
|
|
204
208
|
uncountable/types/api/chemical/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
205
209
|
uncountable/types/api/chemical/convert_chemical_formats.py,sha256=xLpma1W1O9MzgxM4CCl5GPnpj3dpqRHhKcXr3b_ToAo,1589
|
|
206
210
|
uncountable/types/api/entity/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
207
|
-
uncountable/types/api/entity/create_entities.py,sha256=
|
|
208
|
-
uncountable/types/api/entity/create_entity.py,sha256=
|
|
211
|
+
uncountable/types/api/entity/create_entities.py,sha256=XJXLcKgpiYpNLVNtkDAAe6Q09rNJSW_h2wu3i7OmFxw,1630
|
|
212
|
+
uncountable/types/api/entity/create_entity.py,sha256=N69a-4dymv2tg_Dhj6OBdnWPodFrJtn05JvLRQwoHp8,1742
|
|
209
213
|
uncountable/types/api/entity/get_entities_data.py,sha256=gTEZ7Z7T-DWP8BZPNDF4c__EHtf9kAb1sGtHmiGOgnM,1454
|
|
214
|
+
uncountable/types/api/entity/grant_entity_permissions.py,sha256=YAXyJ3I_nqDQYFYGEO3MmD20vYyhoFZzID9tpVpgryM,1442
|
|
210
215
|
uncountable/types/api/entity/list_entities.py,sha256=ykbdq4DD31uiRz4i8LH-8LLeA2Lpp_5fWfb5fdyx248,2000
|
|
211
216
|
uncountable/types/api/entity/lock_entity.py,sha256=mMZx2tWOtuYg0sIftdPsFWgZO5LCav2ubqTw97dCtDU,1197
|
|
212
217
|
uncountable/types/api/entity/resolve_entity_ids.py,sha256=GnQjeoTdzL0PIubrLay-PpaRsYFFWVGrTxhzSmP4hhw,1387
|
|
@@ -257,6 +262,7 @@ uncountable/types/api/recipes/create_recipe.py,sha256=Gh6Z_7wBfYBMGUgUSixw57ucRj
|
|
|
257
262
|
uncountable/types/api/recipes/create_recipes.py,sha256=kmTDi0nF5OK5wYIErg_4CY3YsF3pDbrj4LLFqgDNRoU,1940
|
|
258
263
|
uncountable/types/api/recipes/disassociate_recipe_as_input.py,sha256=YcLCle-yQ8A7hPmFg8wPfW4dyJwpMQXNKzJxCEr8xlw,1127
|
|
259
264
|
uncountable/types/api/recipes/edit_recipe_inputs.py,sha256=7TBjzA8-yXYIko_jx0AvKMs8SnIkiQukhQFWyf2fkxk,7815
|
|
265
|
+
uncountable/types/api/recipes/get_column_calculation_values.py,sha256=u_KBiGpXnVLwRruEG-FmopiR8UDkuX6i47B4OY-IYWU,1702
|
|
260
266
|
uncountable/types/api/recipes/get_curve.py,sha256=SPD9kx4m95KPXAD0MawX52IFl8W7gVKj-WmA4Wx2YtU,1126
|
|
261
267
|
uncountable/types/api/recipes/get_recipe_calculations.py,sha256=_sBE5M2xzwagh1beTW32D_HTxqu9OrZTPZBGMba6Myk,1730
|
|
262
268
|
uncountable/types/api/recipes/get_recipe_links.py,sha256=IIA_LV-iPayZRAsVmDCpSA8jgFnzcgGpk0lAnygyi-s,1180
|
|
@@ -277,7 +283,7 @@ uncountable/types/api/triggers/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr
|
|
|
277
283
|
uncountable/types/api/triggers/run_trigger.py,sha256=-oZgPyn43xEKSCs81DVNzwaYMCdRJxbM9GY6fsqKwf4,1090
|
|
278
284
|
uncountable/types/api/uploader/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
279
285
|
uncountable/types/api/uploader/invoke_uploader.py,sha256=6mwVG136oLp9JcbB2I-kZnrcm3aeZzYZB-SFjEImY2o,1314
|
|
280
|
-
UncountablePythonSDK-0.0.
|
|
281
|
-
UncountablePythonSDK-0.0.
|
|
282
|
-
UncountablePythonSDK-0.0.
|
|
283
|
-
UncountablePythonSDK-0.0.
|
|
286
|
+
UncountablePythonSDK-0.0.76.dist-info/METADATA,sha256=pbI1_WLh03O7-B_Ju3p0vJNqOVftjnYaZ1zWJ0O2vFI,2051
|
|
287
|
+
UncountablePythonSDK-0.0.76.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
|
288
|
+
UncountablePythonSDK-0.0.76.dist-info/top_level.txt,sha256=1UVGjAU-6hJY9qw2iJ7nCBeEwZ793AEN5ZfKX9A1uj4,31
|
|
289
|
+
UncountablePythonSDK-0.0.76.dist-info/RECORD,,
|
docs/requirements.txt
CHANGED
examples/async_batch.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import os
|
|
1
2
|
from decimal import Decimal
|
|
2
3
|
|
|
3
4
|
from uncountable.core import AsyncBatchProcessor, AuthDetailsApiKey, Client
|
|
@@ -11,10 +12,9 @@ from uncountable.types.recipe_identifiers import (
|
|
|
11
12
|
)
|
|
12
13
|
|
|
13
14
|
client = Client(
|
|
14
|
-
base_url=
|
|
15
|
+
base_url=os.environ["UNC_BASE_URL"],
|
|
15
16
|
auth_details=AuthDetailsApiKey(
|
|
16
|
-
api_id="
|
|
17
|
-
api_secret_key="X",
|
|
17
|
+
api_id=os.environ["UNC_API_ID"], api_secret_key=os.environ["UNC_API_SECRET_KEY"]
|
|
18
18
|
),
|
|
19
19
|
)
|
|
20
20
|
batch_loader = AsyncBatchProcessor(client=client)
|
|
@@ -103,6 +103,9 @@ def _get_merged_serial_class_data(type_class: type[Any]) -> _SerialClassData | N
|
|
|
103
103
|
if hasattr(type_class, "__unc_serial_data")
|
|
104
104
|
else None
|
|
105
105
|
)
|
|
106
|
+
if base_class_data is None:
|
|
107
|
+
return None
|
|
108
|
+
|
|
106
109
|
if type_class.__bases__ is not None:
|
|
107
110
|
for base in type_class.__bases__:
|
|
108
111
|
curr_base_class_data = _get_merged_serial_class_data(base)
|
pkgs/type_spec/builder.py
CHANGED
|
@@ -535,13 +535,8 @@ class SpecTypeDefnObject(SpecTypeDefn):
|
|
|
535
535
|
base_type: list[SpecType] = [self.base] if self.base is not None else []
|
|
536
536
|
return base_type + prop_types
|
|
537
537
|
|
|
538
|
-
def
|
|
539
|
-
|
|
540
|
-
assert (
|
|
541
|
-
len(self.parameters) == 1
|
|
542
|
-
), "Only single generic parameters current supported"
|
|
543
|
-
return self.parameters[0]
|
|
544
|
-
return None
|
|
538
|
+
def get_generics(self) -> list[str]:
|
|
539
|
+
return self.parameters
|
|
545
540
|
|
|
546
541
|
|
|
547
542
|
class SpecTypeDefnAlias(SpecTypeDefn):
|
|
@@ -1134,7 +1129,11 @@ class SpecNamespace:
|
|
|
1134
1129
|
spec_type = SpecTypeDefnStringEnum(self, name)
|
|
1135
1130
|
else:
|
|
1136
1131
|
parameters = (
|
|
1137
|
-
[
|
|
1132
|
+
[
|
|
1133
|
+
parameter.name
|
|
1134
|
+
for name_parameters in parsed_name.parameters
|
|
1135
|
+
for parameter in name_parameters
|
|
1136
|
+
]
|
|
1138
1137
|
if parsed_name.parameters is not None
|
|
1139
1138
|
else None
|
|
1140
1139
|
)
|
pkgs/type_spec/emit_python.py
CHANGED
|
@@ -814,11 +814,11 @@ def _emit_type(ctx: Context, stype: builder.SpecType) -> None:
|
|
|
814
814
|
|
|
815
815
|
class_out = io.StringIO()
|
|
816
816
|
base_class = ""
|
|
817
|
-
|
|
817
|
+
generics = stype.get_generics()
|
|
818
818
|
if not stype.base.is_base:
|
|
819
819
|
base_class = f"({refer_to(ctx, stype.base)})"
|
|
820
|
-
elif
|
|
821
|
-
base_class = f"(typing.Generic[{
|
|
820
|
+
elif len(generics) > 0:
|
|
821
|
+
base_class = f"(typing.Generic[{", ".join(generics)}])"
|
|
822
822
|
class_out.write(f"class {stype.name}{base_class}:\n")
|
|
823
823
|
|
|
824
824
|
emitted_properties_metadata = _emit_type_properties(
|
|
@@ -829,7 +829,7 @@ def _emit_type(ctx: Context, stype: builder.SpecType) -> None:
|
|
|
829
829
|
to_string_values = emitted_properties_metadata.to_string_values
|
|
830
830
|
parse_require = emitted_properties_metadata.parse_require
|
|
831
831
|
|
|
832
|
-
|
|
832
|
+
_emit_generics(ctx, generics)
|
|
833
833
|
|
|
834
834
|
# Emit serial_class decorator
|
|
835
835
|
ctx.out.write("@serial_class(\n")
|
|
@@ -864,8 +864,8 @@ def _emit_type(ctx: Context, stype: builder.SpecType) -> None:
|
|
|
864
864
|
ctx.out.write(class_out.getvalue())
|
|
865
865
|
|
|
866
866
|
|
|
867
|
-
def
|
|
868
|
-
|
|
867
|
+
def _emit_generics(ctx: Context, generics: list[str]) -> None:
|
|
868
|
+
for generic in generics:
|
|
869
869
|
ctx.out.write(f'{generic} = typing.TypeVar("{generic}")\n')
|
|
870
870
|
ctx.out.write(f"{LINE_BREAK}{LINE_BREAK}")
|
|
871
871
|
|
uncountable/core/environment.py
CHANGED
|
@@ -2,6 +2,8 @@ import functools
|
|
|
2
2
|
import os
|
|
3
3
|
from importlib.metadata import PackageNotFoundError, version
|
|
4
4
|
|
|
5
|
+
from uncountable.types import integration_server_t
|
|
6
|
+
|
|
5
7
|
|
|
6
8
|
@functools.cache
|
|
7
9
|
def get_version() -> str:
|
|
@@ -12,8 +14,8 @@ def get_version() -> str:
|
|
|
12
14
|
return version_str
|
|
13
15
|
|
|
14
16
|
|
|
15
|
-
def
|
|
16
|
-
return os.environ.get("
|
|
17
|
+
def get_server_env() -> str | None:
|
|
18
|
+
return os.environ.get("UNC_SERVER_ENV")
|
|
17
19
|
|
|
18
20
|
|
|
19
21
|
def get_webhook_server_port() -> int:
|
|
@@ -26,3 +28,14 @@ def get_local_admin_server_port() -> int:
|
|
|
26
28
|
|
|
27
29
|
def get_otel_enabled() -> bool:
|
|
28
30
|
return os.environ.get("UNC_OTEL_ENABLED") == "true"
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def get_profiles_module() -> str:
|
|
34
|
+
return os.environ["UNC_PROFILES_MODULE"]
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def get_integration_envs() -> list[integration_server_t.IntegrationEnvironment]:
|
|
38
|
+
return [
|
|
39
|
+
integration_server_t.IntegrationEnvironment(env)
|
|
40
|
+
for env in os.environ.get("UNC_INTEGRATION_ENVS", "prod").split(",")
|
|
41
|
+
]
|
|
@@ -3,22 +3,21 @@ from uncountable.core.client import ClientConfig
|
|
|
3
3
|
from uncountable.core.types import AuthDetailsAll, AuthDetailsOAuth
|
|
4
4
|
from uncountable.integration.secret_retrieval.retrieve_secret import retrieve_secret
|
|
5
5
|
from uncountable.integration.telemetry import JobLogger
|
|
6
|
+
from uncountable.types import auth_retrieval_t
|
|
6
7
|
from uncountable.types.job_definition_t import (
|
|
7
|
-
AuthRetrievalBasic,
|
|
8
|
-
AuthRetrievalOAuth,
|
|
9
8
|
ProfileMetadata,
|
|
10
9
|
)
|
|
11
10
|
|
|
12
11
|
|
|
13
12
|
def _construct_auth_details(profile_meta: ProfileMetadata) -> AuthDetailsAll:
|
|
14
13
|
match profile_meta.auth_retrieval:
|
|
15
|
-
case AuthRetrievalOAuth():
|
|
14
|
+
case auth_retrieval_t.AuthRetrievalOAuth():
|
|
16
15
|
refresh_token = retrieve_secret(
|
|
17
16
|
profile_meta.auth_retrieval.refresh_token_secret,
|
|
18
17
|
profile_metadata=profile_meta,
|
|
19
18
|
)
|
|
20
19
|
return AuthDetailsOAuth(refresh_token=refresh_token)
|
|
21
|
-
case AuthRetrievalBasic():
|
|
20
|
+
case auth_retrieval_t.AuthRetrievalBasic():
|
|
22
21
|
api_id = retrieve_secret(
|
|
23
22
|
profile_meta.auth_retrieval.api_id_secret, profile_metadata=profile_meta
|
|
24
23
|
)
|
|
@@ -55,7 +55,7 @@ def _start_workers(
|
|
|
55
55
|
job_worker_lookup: dict[str, Worker] = {}
|
|
56
56
|
job_definition_lookup: dict[str, job_definition_t.JobDefinition] = {}
|
|
57
57
|
for profile in profiles:
|
|
58
|
-
for job_definition in profile.
|
|
58
|
+
for job_definition in profile.jobs:
|
|
59
59
|
job_definition_lookup[job_definition.id] = job_definition
|
|
60
60
|
job_worker_key = _get_job_worker_key(job_definition, profile.name)
|
|
61
61
|
if job_worker_key not in job_queue_worker_lookup:
|
|
@@ -51,16 +51,11 @@ class RegisteredJobDetails:
|
|
|
51
51
|
|
|
52
52
|
def get_registered_job_details(job_ref_name: str) -> RegisteredJobDetails:
|
|
53
53
|
profiles = load_profiles()
|
|
54
|
-
for
|
|
55
|
-
for job_definition in
|
|
54
|
+
for profile_metadata in profiles:
|
|
55
|
+
for job_definition in profile_metadata.jobs:
|
|
56
56
|
if job_definition.id == job_ref_name:
|
|
57
57
|
return RegisteredJobDetails(
|
|
58
|
-
profile_metadata=
|
|
59
|
-
name=profile.name,
|
|
60
|
-
base_url=profile.definition.base_url,
|
|
61
|
-
auth_retrieval=profile.definition.auth_retrieval,
|
|
62
|
-
client_options=profile.definition.client_options,
|
|
63
|
-
),
|
|
58
|
+
profile_metadata=profile_metadata,
|
|
64
59
|
job_definition=job_definition,
|
|
65
60
|
)
|
|
66
61
|
raise Exception(f"profile not found for job {job_ref_name}")
|
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
import functools
|
|
2
|
-
import os
|
|
3
|
-
from dataclasses import dataclass
|
|
4
2
|
from importlib import resources
|
|
5
3
|
|
|
6
4
|
from pkgs.argument_parser import CachedParser
|
|
7
|
-
from uncountable.
|
|
5
|
+
from uncountable.core import environment
|
|
6
|
+
from uncountable.types import integration_server_t, job_definition_t
|
|
8
7
|
|
|
9
8
|
profile_parser = CachedParser(job_definition_t.ProfileDefinition)
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class ProfileDetails:
|
|
14
|
-
name: str
|
|
15
|
-
definition: job_definition_t.ProfileDefinition
|
|
10
|
+
_DEFAULT_PROFILE_ENV = integration_server_t.IntegrationEnvironment.PROD
|
|
11
|
+
_IGNORED_PROFILE_FOLDERS = ["__pycache__"]
|
|
16
12
|
|
|
17
13
|
|
|
18
14
|
@functools.cache
|
|
19
|
-
def load_profiles() -> list[
|
|
20
|
-
profiles_module =
|
|
15
|
+
def load_profiles() -> list[job_definition_t.ProfileMetadata]:
|
|
16
|
+
profiles_module = environment.get_profiles_module()
|
|
17
|
+
integration_envs = environment.get_integration_envs()
|
|
21
18
|
profiles = [
|
|
22
|
-
entry
|
|
19
|
+
entry
|
|
20
|
+
for entry in resources.files(profiles_module).iterdir()
|
|
21
|
+
if entry.is_dir() and entry.name not in _IGNORED_PROFILE_FOLDERS
|
|
23
22
|
]
|
|
24
|
-
profile_details: list[
|
|
23
|
+
profile_details: list[job_definition_t.ProfileMetadata] = []
|
|
25
24
|
seen_job_ids: set[str] = set()
|
|
26
25
|
for profile_file in profiles:
|
|
27
26
|
profile_name = profile_file.name
|
|
@@ -34,9 +33,34 @@ def load_profiles() -> list[ProfileDetails]:
|
|
|
34
33
|
if job.id in seen_job_ids:
|
|
35
34
|
raise Exception(f"multiple jobs with id {job.id}")
|
|
36
35
|
seen_job_ids.add(job.id)
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
|
|
37
|
+
if definition.environments is not None:
|
|
38
|
+
for integration_env in integration_envs:
|
|
39
|
+
environment_config = definition.environments.get(integration_env)
|
|
40
|
+
if environment_config is not None:
|
|
41
|
+
profile_details.append(
|
|
42
|
+
job_definition_t.ProfileMetadata(
|
|
43
|
+
name=profile_name,
|
|
44
|
+
jobs=definition.jobs,
|
|
45
|
+
base_url=environment_config.base_url,
|
|
46
|
+
auth_retrieval=environment_config.auth_retrieval,
|
|
47
|
+
client_options=environment_config.client_options,
|
|
48
|
+
)
|
|
49
|
+
)
|
|
50
|
+
elif _DEFAULT_PROFILE_ENV in integration_envs:
|
|
51
|
+
assert (
|
|
52
|
+
definition.base_url is not None
|
|
53
|
+
and definition.auth_retrieval is not None
|
|
54
|
+
), f"define environments in profile.yaml for {profile_name}"
|
|
55
|
+
profile_details.append(
|
|
56
|
+
job_definition_t.ProfileMetadata(
|
|
57
|
+
name=profile_name,
|
|
58
|
+
jobs=definition.jobs,
|
|
59
|
+
base_url=definition.base_url,
|
|
60
|
+
auth_retrieval=definition.auth_retrieval,
|
|
61
|
+
client_options=definition.client_options,
|
|
62
|
+
)
|
|
63
|
+
)
|
|
40
64
|
except FileNotFoundError as e:
|
|
41
65
|
print(f"WARN: profile.yaml not found for {profile_name}", e)
|
|
42
66
|
continue
|
|
@@ -12,12 +12,10 @@ from opentelemetry.trace import get_current_span
|
|
|
12
12
|
from sqlalchemy.engine.base import Engine
|
|
13
13
|
|
|
14
14
|
from uncountable.integration.cron import CronJobArgs, cron_job_executor
|
|
15
|
-
from uncountable.integration.scan_profiles import ProfileDetails
|
|
16
15
|
from uncountable.integration.telemetry import Logger
|
|
17
|
-
from uncountable.types import base_t
|
|
16
|
+
from uncountable.types import base_t, job_definition_t
|
|
18
17
|
from uncountable.types.job_definition_t import (
|
|
19
18
|
CronJobDefinition,
|
|
20
|
-
ProfileMetadata,
|
|
21
19
|
WebhookJobDefinition,
|
|
22
20
|
)
|
|
23
21
|
|
|
@@ -38,17 +36,11 @@ class IntegrationServer:
|
|
|
38
36
|
)
|
|
39
37
|
self._server_logger = Logger(get_current_span())
|
|
40
38
|
|
|
41
|
-
def register_jobs(self, profiles: list[
|
|
39
|
+
def register_jobs(self, profiles: list[job_definition_t.ProfileMetadata]) -> None:
|
|
42
40
|
valid_job_ids = []
|
|
43
|
-
for
|
|
44
|
-
for job_defn in
|
|
41
|
+
for profile_metadata in profiles:
|
|
42
|
+
for job_defn in profile_metadata.jobs:
|
|
45
43
|
valid_job_ids.append(job_defn.id)
|
|
46
|
-
profile_metadata = ProfileMetadata(
|
|
47
|
-
name=profile.name,
|
|
48
|
-
auth_retrieval=profile.definition.auth_retrieval,
|
|
49
|
-
base_url=profile.definition.base_url,
|
|
50
|
-
client_options=profile.definition.client_options,
|
|
51
|
-
)
|
|
52
44
|
match job_defn:
|
|
53
45
|
case CronJobDefinition():
|
|
54
46
|
# Add to ap scheduler
|
|
@@ -21,8 +21,8 @@ from opentelemetry.sdk.trace.export import (
|
|
|
21
21
|
from opentelemetry.trace import DEFAULT_TRACE_OPTIONS, Span, Tracer
|
|
22
22
|
|
|
23
23
|
from uncountable.core.environment import (
|
|
24
|
-
get_integration_env,
|
|
25
24
|
get_otel_enabled,
|
|
25
|
+
get_server_env,
|
|
26
26
|
get_version,
|
|
27
27
|
)
|
|
28
28
|
from uncountable.types import base_t, job_definition_t
|
|
@@ -41,7 +41,7 @@ def get_otel_resource() -> Resource:
|
|
|
41
41
|
unc_version = os.environ.get("UNC_VERSION")
|
|
42
42
|
if unc_version is not None:
|
|
43
43
|
attributes["service.version"] = unc_version
|
|
44
|
-
unc_env =
|
|
44
|
+
unc_env = get_server_env()
|
|
45
45
|
if unc_env is not None:
|
|
46
46
|
attributes["deployment.environment"] = unc_env
|
|
47
47
|
resource = Resource.create(attributes=_cast_attributes(attributes))
|
|
@@ -8,8 +8,8 @@ from flask.typing import ResponseReturnValue
|
|
|
8
8
|
from flask.wrappers import Response
|
|
9
9
|
from opentelemetry.trace import get_current_span
|
|
10
10
|
from uncountable.core.environment import (
|
|
11
|
-
get_integration_env,
|
|
12
11
|
get_local_admin_server_port,
|
|
12
|
+
get_server_env,
|
|
13
13
|
get_webhook_server_port,
|
|
14
14
|
)
|
|
15
15
|
from uncountable.integration.queue_runner.command_server.command_client import (
|
|
@@ -143,15 +143,9 @@ def register_route(
|
|
|
143
143
|
|
|
144
144
|
def main() -> None:
|
|
145
145
|
profiles = load_profiles()
|
|
146
|
-
for
|
|
146
|
+
for profile_metadata in profiles:
|
|
147
147
|
server_logger = Logger(get_current_span())
|
|
148
|
-
|
|
149
|
-
name=profile.name,
|
|
150
|
-
auth_retrieval=profile.definition.auth_retrieval,
|
|
151
|
-
base_url=profile.definition.base_url,
|
|
152
|
-
client_options=profile.definition.client_options,
|
|
153
|
-
)
|
|
154
|
-
for job in profile.definition.jobs:
|
|
148
|
+
for job in profile_metadata.jobs:
|
|
155
149
|
if isinstance(job, job_definition_t.WebhookJobDefinition):
|
|
156
150
|
register_route(
|
|
157
151
|
server_logger=server_logger, profile_meta=profile_metadata, job=job
|
|
@@ -165,6 +159,6 @@ if __name__ == "__main__":
|
|
|
165
159
|
app.run(
|
|
166
160
|
host="0.0.0.0",
|
|
167
161
|
port=get_webhook_server_port(),
|
|
168
|
-
debug=
|
|
162
|
+
debug=get_server_env() == "playground",
|
|
169
163
|
exclude_patterns=[],
|
|
170
164
|
)
|
uncountable/types/__init__.py
CHANGED
|
@@ -9,6 +9,7 @@ from .api.equipment import associate_equipment_input as associate_equipment_inpu
|
|
|
9
9
|
from .api.recipes import associate_recipe_as_input as associate_recipe_as_input_t
|
|
10
10
|
from .api.recipes import associate_recipe_as_lot as associate_recipe_as_lot_t
|
|
11
11
|
from . import async_batch_t as async_batch_t
|
|
12
|
+
from . import auth_retrieval_t as auth_retrieval_t
|
|
12
13
|
from . import base_t as base_t
|
|
13
14
|
from . import calculations_t as calculations_t
|
|
14
15
|
from . import chemical_structure_t as chemical_structure_t
|
|
@@ -31,6 +32,7 @@ from . import experiment_groups_t as experiment_groups_t
|
|
|
31
32
|
from . import field_values_t as field_values_t
|
|
32
33
|
from . import fields_t as fields_t
|
|
33
34
|
from . import generic_upload_t as generic_upload_t
|
|
35
|
+
from .api.recipes import get_column_calculation_values as get_column_calculation_values_t
|
|
34
36
|
from .api.recipes import get_curve as get_curve_t
|
|
35
37
|
from .api.entity import get_entities_data as get_entities_data_t
|
|
36
38
|
from .api.inputs import get_input_data as get_input_data_t
|
|
@@ -47,10 +49,12 @@ from .api.recipe_metadata import get_recipe_metadata_data as get_recipe_metadata
|
|
|
47
49
|
from .api.recipes import get_recipe_names as get_recipe_names_t
|
|
48
50
|
from .api.recipes import get_recipe_output_metadata as get_recipe_output_metadata_t
|
|
49
51
|
from .api.recipes import get_recipes_data as get_recipes_data_t
|
|
52
|
+
from .api.entity import grant_entity_permissions as grant_entity_permissions_t
|
|
50
53
|
from . import id_source_t as id_source_t
|
|
51
54
|
from . import identifier_t as identifier_t
|
|
52
55
|
from . import input_attributes_t as input_attributes_t
|
|
53
56
|
from . import inputs_t as inputs_t
|
|
57
|
+
from . import integration_server_t as integration_server_t
|
|
54
58
|
from .api.uploader import invoke_uploader as invoke_uploader_t
|
|
55
59
|
from . import job_definition_t as job_definition_t
|
|
56
60
|
from .api.entity import list_entities as list_entities_t
|
|
@@ -110,6 +114,7 @@ __all__: list[str] = [
|
|
|
110
114
|
"associate_recipe_as_input_t",
|
|
111
115
|
"associate_recipe_as_lot_t",
|
|
112
116
|
"async_batch_t",
|
|
117
|
+
"auth_retrieval_t",
|
|
113
118
|
"base_t",
|
|
114
119
|
"calculations_t",
|
|
115
120
|
"chemical_structure_t",
|
|
@@ -132,6 +137,7 @@ __all__: list[str] = [
|
|
|
132
137
|
"field_values_t",
|
|
133
138
|
"fields_t",
|
|
134
139
|
"generic_upload_t",
|
|
140
|
+
"get_column_calculation_values_t",
|
|
135
141
|
"get_curve_t",
|
|
136
142
|
"get_entities_data_t",
|
|
137
143
|
"get_input_data_t",
|
|
@@ -148,10 +154,12 @@ __all__: list[str] = [
|
|
|
148
154
|
"get_recipe_names_t",
|
|
149
155
|
"get_recipe_output_metadata_t",
|
|
150
156
|
"get_recipes_data_t",
|
|
157
|
+
"grant_entity_permissions_t",
|
|
151
158
|
"id_source_t",
|
|
152
159
|
"identifier_t",
|
|
153
160
|
"input_attributes_t",
|
|
154
161
|
"inputs_t",
|
|
162
|
+
"integration_server_t",
|
|
155
163
|
"invoke_uploader_t",
|
|
156
164
|
"job_definition_t",
|
|
157
165
|
"list_entities_t",
|
|
@@ -12,6 +12,7 @@ from pkgs.serialization import serial_class
|
|
|
12
12
|
from ... import base_t
|
|
13
13
|
from ... import entity_t
|
|
14
14
|
from ... import field_values_t
|
|
15
|
+
from ... import identifier_t
|
|
15
16
|
|
|
16
17
|
__all__: list[str] = [
|
|
17
18
|
"Arguments",
|
|
@@ -40,9 +41,10 @@ class EntityToCreate:
|
|
|
40
41
|
)
|
|
41
42
|
@dataclasses.dataclass(kw_only=True)
|
|
42
43
|
class Arguments:
|
|
43
|
-
|
|
44
|
-
entity_type: typing.Union[typing.Literal[entity_t.EntityType.LAB_REQUEST], typing.Literal[entity_t.EntityType.APPROVAL], typing.Literal[entity_t.EntityType.CUSTOM_ENTITY], typing.Literal[entity_t.EntityType.INVENTORY_AMOUNT], typing.Literal[entity_t.EntityType.TASK], typing.Literal[entity_t.EntityType.PROJECT], typing.Literal[entity_t.EntityType.EQUIPMENT], typing.Literal[entity_t.EntityType.INV_LOCAL_LOCATIONS], typing.Literal[entity_t.EntityType.FIELD_OPTION_SET], typing.Literal[entity_t.EntityType.WEBHOOK], typing.Literal[entity_t.EntityType.SPECS], typing.Literal[entity_t.EntityType.GOAL], typing.Literal[entity_t.EntityType.INGREDIENT_TAG_MAP], typing.Literal[entity_t.EntityType.INGREDIENT_TAG], typing.Literal[entity_t.EntityType.CONDITION_PARAMETER], typing.Literal[entity_t.EntityType.OUTPUT]]
|
|
44
|
+
entity_type: entity_t.LimitedEntityType
|
|
45
45
|
entities_to_create: list[EntityToCreate]
|
|
46
|
+
definition_id: typing.Optional[base_t.ObjectId] = None
|
|
47
|
+
definition_key: typing.Optional[identifier_t.IdentifierKey] = None
|
|
46
48
|
|
|
47
49
|
|
|
48
50
|
# DO NOT MODIFY -- This file is generated by type_spec
|