UncountablePythonSDK 0.0.16__py3-none-any.whl → 0.0.18__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.16.dist-info → UncountablePythonSDK-0.0.18.dist-info}/METADATA +14 -1
- {UncountablePythonSDK-0.0.16.dist-info → UncountablePythonSDK-0.0.18.dist-info}/RECORD +81 -33
- {UncountablePythonSDK-0.0.16.dist-info → UncountablePythonSDK-0.0.18.dist-info}/top_level.txt +1 -0
- docs/.gitignore +1 -0
- docs/conf.py +52 -0
- docs/index.md +13 -0
- docs/justfile +12 -0
- docs/quickstart.md +19 -0
- docs/requirements.txt +7 -0
- docs/static/favicons/android-chrome-192x192.png +0 -0
- docs/static/favicons/android-chrome-512x512.png +0 -0
- docs/static/favicons/apple-touch-icon.png +0 -0
- docs/static/favicons/browserconfig.xml +9 -0
- docs/static/favicons/favicon-16x16.png +0 -0
- docs/static/favicons/favicon-32x32.png +0 -0
- docs/static/favicons/manifest.json +18 -0
- docs/static/favicons/mstile-150x150.png +0 -0
- docs/static/favicons/safari-pinned-tab.svg +32 -0
- docs/static/logo_blue.png +0 -0
- examples/create_entity.py +23 -16
- pkgs/argument_parser/_is_enum.py +1 -1
- pkgs/argument_parser/argument_parser.py +26 -19
- pkgs/serialization/serial_class.py +3 -3
- pkgs/serialization_util/_get_type_for_serialization.py +1 -3
- pkgs/serialization_util/serialization_helpers.py +1 -3
- pkgs/strenum_compat/strenum_compat.py +1 -9
- pkgs/type_spec/actions_registry/__init__.py +0 -0
- pkgs/type_spec/actions_registry/__main__.py +114 -0
- pkgs/type_spec/actions_registry/emit_typescript.py +120 -0
- pkgs/type_spec/builder.py +14 -10
- pkgs/type_spec/config.py +3 -2
- pkgs/type_spec/emit_python.py +54 -17
- pkgs/type_spec/emit_typescript.py +8 -9
- pkgs/type_spec/emit_typescript_util.py +1 -2
- pkgs/type_spec/load_types.py +2 -1
- pkgs/type_spec/open_api_util.py +2 -2
- pkgs/type_spec/parts/base.py.prepart +2 -1
- pkgs/type_spec/util.py +9 -9
- pkgs/type_spec/value_spec/__main__.py +2 -2
- pkgs/type_spec/value_spec/emit_python.py +1 -0
- type_spec/external/api/batch/execute_batch_load_async.yaml +18 -0
- type_spec/external/api/chemical/convert_chemical_formats.yaml +33 -0
- type_spec/external/api/entity/create_entities.yaml +1 -1
- type_spec/external/api/entity/create_entity.yaml +1 -1
- type_spec/external/api/id_source/list_id_source.yaml +35 -0
- type_spec/external/api/id_source/match_id_source.yaml +32 -0
- type_spec/external/api/recipe_links/create_recipe_link.yaml +25 -0
- type_spec/external/api/recipes/associate_recipe_as_input.yaml +19 -0
- type_spec/external/api/recipes/associate_recipe_as_lot.yaml +19 -0
- type_spec/external/api/recipes/create_recipe.yaml +38 -0
- type_spec/external/api/recipes/get_recipes_data.yaml +21 -21
- type_spec/external/api/recipes/set_recipe_inputs.yaml +6 -0
- type_spec/external/api/recipes/set_recipe_metadata.yaml +19 -0
- type_spec/external/api/triggers/run_trigger.yaml +18 -0
- uncountable/core/client.py +13 -14
- uncountable/types/__init__.py +30 -0
- uncountable/types/api/batch/execute_batch_load_async.py +35 -0
- uncountable/types/api/chemical/__init__.py +1 -0
- uncountable/types/api/chemical/convert_chemical_formats.py +50 -0
- uncountable/types/api/entity/create_entities.py +1 -1
- uncountable/types/api/entity/create_entity.py +1 -1
- uncountable/types/api/id_source/__init__.py +1 -0
- uncountable/types/api/id_source/list_id_source.py +46 -0
- uncountable/types/api/id_source/match_id_source.py +48 -0
- uncountable/types/api/recipe_links/__init__.py +1 -0
- uncountable/types/api/recipe_links/create_recipe_link.py +39 -0
- uncountable/types/api/recipes/associate_recipe_as_input.py +35 -0
- uncountable/types/api/recipes/associate_recipe_as_lot.py +36 -0
- uncountable/types/api/recipes/create_recipe.py +43 -0
- uncountable/types/api/recipes/set_recipe_inputs.py +2 -0
- uncountable/types/api/recipes/set_recipe_metadata.py +36 -0
- uncountable/types/api/triggers/__init__.py +1 -0
- uncountable/types/api/triggers/run_trigger.py +36 -0
- uncountable/types/async_batch.py +45 -0
- uncountable/types/base.py +2 -1
- uncountable/types/chemical_structure.py +27 -0
- uncountable/types/client_base.py +404 -2
- uncountable/types/id_source.py +49 -0
- uncountable/types/identifier.py +54 -0
- uncountable/types/recipe_identifiers.py +62 -0
- {UncountablePythonSDK-0.0.16.dist-info → UncountablePythonSDK-0.0.18.dist-info}/WHEEL +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: UncountablePythonSDK
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.18
|
|
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
|
|
@@ -30,3 +30,16 @@ Requires-Dist: coverage[toml] >=6.5.0 ; extra == 'test'
|
|
|
30
30
|
Requires-Dist: pytest-cov >=4.1.0 ; extra == 'test'
|
|
31
31
|
Requires-Dist: pytest-xdist >=3.5.0 ; extra == 'test'
|
|
32
32
|
|
|
33
|
+
# Uncountable Python SDK
|
|
34
|
+
|
|
35
|
+
## Documentation
|
|
36
|
+
[https://uncountableinc.github.io/uncountable-python-sdk/](https://uncountableinc.github.io/uncountable-python-sdk/)
|
|
37
|
+
|
|
38
|
+
## Installation
|
|
39
|
+
|
|
40
|
+
Install from PyPI:
|
|
41
|
+
|
|
42
|
+
```console
|
|
43
|
+
pip install UncountablePythonSDK
|
|
44
|
+
```
|
|
45
|
+
|
|
@@ -1,50 +1,73 @@
|
|
|
1
|
-
|
|
1
|
+
docs/.gitignore,sha256=_ebkZUcwfvfnGEJ95rfj1lxoBNd6EE9ZvtOc7FsbfFE,7
|
|
2
|
+
docs/conf.py,sha256=_NTPzzM_NS92AWqpYdlNKQlTc-IEolfYYKLLHm6lFAk,1700
|
|
3
|
+
docs/index.md,sha256=eEdirX_Ds6ICTRtIS5iT4irCquHcQyKN7E4M5QP9T8A,257
|
|
4
|
+
docs/justfile,sha256=cvNcpb-ByPOF2aCrFlg3DDZBoYMx5W8xGdr13m9HcnI,215
|
|
5
|
+
docs/quickstart.md,sha256=3GuJ0MB1O5kjlsrgAmdSkDq0rYqATrYy-tzEHDy8H-c,422
|
|
6
|
+
docs/requirements.txt,sha256=jNFoVqyOwGZ4GToYiyoVeFFIzJTmXMLYbv5h2FU5Sr4,139
|
|
7
|
+
docs/static/logo_blue.png,sha256=SyYpMTVhhBbhF5Wl8lWaVwz-_p1MIR6dW6bVhufQRME,46708
|
|
8
|
+
docs/static/favicons/android-chrome-192x192.png,sha256=XoF-AhD55JlSBDGsEPJKfT_VeXT-awhwKyZnxLhrwvk,1369
|
|
9
|
+
docs/static/favicons/android-chrome-512x512.png,sha256=1S4xwY9YtJQ5ifFsZ-DOzssoyBYs0t9uwdOUmYx0Xso,3888
|
|
10
|
+
docs/static/favicons/apple-touch-icon.png,sha256=4qdKI-pFHxrot00cFGY-_jD7Kame6Ct_klQBNmW3j80,1403
|
|
11
|
+
docs/static/favicons/browserconfig.xml,sha256=oU7ZjY1qKLU992MIOAOZ7h-uVyqmEah2TKzyae4Uw0s,263
|
|
12
|
+
docs/static/favicons/favicon-16x16.png,sha256=M4r4A3_NVuw3h5pWZs5-CmhmquSMiKaNcCqyyJRjNmU,392
|
|
13
|
+
docs/static/favicons/favicon-32x32.png,sha256=U4UU652zGnSeU3P9kUqxPeEnVf6zhtdNdNwGz1E40UU,511
|
|
14
|
+
docs/static/favicons/manifest.json,sha256=6q_3nZkcg_x0xut4eE-xpdeMY1TydwiZIcbXlLAq9X8,437
|
|
15
|
+
docs/static/favicons/mstile-150x150.png,sha256=eAK4QdEofhdLtfmjuPTpnX3MJqYnvGXsHYUjlcQekyY,1035
|
|
16
|
+
docs/static/favicons/safari-pinned-tab.svg,sha256=S84fRnz0ZxLnQrKtmmFZytiRyu1xLtMR_RVy5jmwU7k,1926
|
|
17
|
+
examples/create_entity.py,sha256=54AmZt83EpypxGcYZSIMmWlGz2oAgHFOsKuLSZOcHsI,625
|
|
2
18
|
examples/recipe-import/importer.py,sha256=baD71xuNibxDTe3bGHsMEIZEf9Xtb-IumBNpCEV0RZU,1134
|
|
3
19
|
pkgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
20
|
pkgs/argument_parser/__init__.py,sha256=CsQ6QoPKSLLRVl-z6URAmPkiUL9ZPZoV4rJHgy_-RjA,385
|
|
5
|
-
pkgs/argument_parser/_is_enum.py,sha256=
|
|
21
|
+
pkgs/argument_parser/_is_enum.py,sha256=Gw6jJa8nBwYGqXwwCZbSnWL8Rvr5alkg5lSVAqXtOZM,257
|
|
6
22
|
pkgs/argument_parser/_is_namedtuple.py,sha256=Rjc1bKanIPPogl3qG5JPBxglG1TqWYOo1nxxhBASQWY,265
|
|
7
|
-
pkgs/argument_parser/argument_parser.py,sha256=
|
|
23
|
+
pkgs/argument_parser/argument_parser.py,sha256=MZ3fxClPErZVfg_Aq48ck32evHVuAzq9N_108nO6MIA,14677
|
|
8
24
|
pkgs/argument_parser/case_convert.py,sha256=J9wahIE-P95LvTqn4M4gDUx_RXeiW2SRo9i_1bz1E6A,558
|
|
9
25
|
pkgs/serialization/__init__.py,sha256=quvXMSl1szddLTr4Yxo9KA9oBMoeX7qGpFkkAplFBbY,603
|
|
10
26
|
pkgs/serialization/missing_sentry.py,sha256=aM_9KxbCk9dVvXvcOKgkIQBqFWvLhv8QlIUCiuFEXMo,806
|
|
11
27
|
pkgs/serialization/opaque_key.py,sha256=FIfXEE0DA1U8R_taFbQ1RCoTSgehrPjP06-qvo-GeNQ,177
|
|
12
|
-
pkgs/serialization/serial_class.py,sha256=
|
|
28
|
+
pkgs/serialization/serial_class.py,sha256=19UIvz2XPT4k1uXtScyjVfdhfvpehZOcjV6Z27p_VFQ,5193
|
|
13
29
|
pkgs/serialization_util/__init__.py,sha256=4vX5j1pvd1NkznSVqwWqunVyOvQtLCgVuwRjVwDk7qg,447
|
|
14
|
-
pkgs/serialization_util/_get_type_for_serialization.py,sha256=
|
|
15
|
-
pkgs/serialization_util/serialization_helpers.py,sha256=
|
|
30
|
+
pkgs/serialization_util/_get_type_for_serialization.py,sha256=dW5_W9MFd6wgWfW5qlWork-GBb-QFLtiOZkjk2Zqn2M,1177
|
|
31
|
+
pkgs/serialization_util/serialization_helpers.py,sha256=koyGyvdlEmGFK1BUiHtM2gTzAyHygbe1JpKLdZ-Aw84,5124
|
|
16
32
|
pkgs/strenum_compat/__init__.py,sha256=wXRFeNvBm8RU6dy1PFJ5sRLgUIEeH_DVR95Sv5qpGbk,59
|
|
17
|
-
pkgs/strenum_compat/strenum_compat.py,sha256=
|
|
33
|
+
pkgs/strenum_compat/strenum_compat.py,sha256=uOUAgpYTjHs1MX8dG81jRlyTkt3KNbkV_25zp7xTX2s,36
|
|
18
34
|
pkgs/type_spec/__init__.py,sha256=h5DmJTca4QVV10sZR1x0-MlkZfuGYDfapR3zHvXfzto,19
|
|
19
35
|
pkgs/type_spec/__main__.py,sha256=5bJaX9Y_-FavP0qwzhk-z-V97UY7uaezJTa1zhO_HHQ,1048
|
|
20
|
-
pkgs/type_spec/builder.py,sha256=
|
|
21
|
-
pkgs/type_spec/config.py,sha256=
|
|
36
|
+
pkgs/type_spec/builder.py,sha256=vzJdNkv5kqvbpho9Lb3JpcRyabxSIU7crTwulksAUFY,39127
|
|
37
|
+
pkgs/type_spec/config.py,sha256=TOcXjq9Yp8nYXAVgGz_qOBjqsxQLAO5YqHIYiCpdkr4,4955
|
|
22
38
|
pkgs/type_spec/emit_io_ts.py,sha256=gCEfS81w_ifqjLVJ3_cpy9Gq03o6H5nEsh35WAkqGGE,5606
|
|
23
39
|
pkgs/type_spec/emit_open_api.py,sha256=dnGazdVBjdEWQ4WK8Ujq966quRZY2TyQ05PGR48Md2I,17461
|
|
24
40
|
pkgs/type_spec/emit_open_api_util.py,sha256=xnzPOuPO8Pbhf6xf1tkHUKgXs1n-jH-lWFac8pOtd4I,1882
|
|
25
|
-
pkgs/type_spec/emit_python.py,sha256=
|
|
26
|
-
pkgs/type_spec/emit_typescript.py,sha256=
|
|
27
|
-
pkgs/type_spec/emit_typescript_util.py,sha256=
|
|
28
|
-
pkgs/type_spec/load_types.py,sha256=
|
|
29
|
-
pkgs/type_spec/open_api_util.py,sha256=
|
|
41
|
+
pkgs/type_spec/emit_python.py,sha256=bJMiz_OEeTklFxEuBjDIg-E_g6vVKx30b-JKSudAi5g,36719
|
|
42
|
+
pkgs/type_spec/emit_typescript.py,sha256=KOCcPuwSLRSt3pIp06Nq9exledq-kWtrA4RnUpeGMi8,17505
|
|
43
|
+
pkgs/type_spec/emit_typescript_util.py,sha256=93FzJnpYse4PKFzgdw4DGV4zFTi5tF4WR-CIi7cW498,873
|
|
44
|
+
pkgs/type_spec/load_types.py,sha256=AB334CF-368dpMNXE2QIFT7WxESvuew2RK_GG2MREng,2211
|
|
45
|
+
pkgs/type_spec/open_api_util.py,sha256=88zgI_lHi6SjCaNfKpoiCjd1o0Npysjk-7iCXw0a3Hs,7463
|
|
30
46
|
pkgs/type_spec/test.py,sha256=4ueujBq-pEgnX3Z69HyPmD-bullFXmpixcpVzfOkhP4,489
|
|
31
|
-
pkgs/type_spec/util.py,sha256=
|
|
32
|
-
pkgs/type_spec/
|
|
47
|
+
pkgs/type_spec/util.py,sha256=6m6MPfY-SwjyZf2FWQKclswWB5o7gcdd-3tdpViPYOQ,4844
|
|
48
|
+
pkgs/type_spec/actions_registry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
|
+
pkgs/type_spec/actions_registry/__main__.py,sha256=3VPSxW6MfnOXhsSGpsbeswdsLHHuD1nOt3IYuXkb6ME,3809
|
|
50
|
+
pkgs/type_spec/actions_registry/emit_typescript.py,sha256=Tt-XQVaCHE1bQIGBYzzurdMqOZSUyrL4qttMyW7MYD4,4229
|
|
51
|
+
pkgs/type_spec/parts/base.py.prepart,sha256=wGNoDyQnLolHRZGRwHQX5TrPfKnu558NXCocYvqyroc,2174
|
|
33
52
|
pkgs/type_spec/parts/base.ts.prepart,sha256=2FJJvpg2olCcavxj0nbYWdwKl6KeScour2JjSvN42l8,1001
|
|
34
53
|
pkgs/type_spec/type_info/__main__.py,sha256=pmVjVqXyVh8vKTNCTFgz80Sg74C5BKToP3E6GS-X_So,857
|
|
35
54
|
pkgs/type_spec/type_info/emit_type_info.py,sha256=xWcZsgdEwApqqvtinZXyyBM61FZ9rmP9oybKapz8xN4,7692
|
|
36
55
|
pkgs/type_spec/value_spec/__init__.py,sha256=Z-grlcZtxAfEXhPHsK0nD7PFLGsv4eqvunaPN7_TA84,83
|
|
37
|
-
pkgs/type_spec/value_spec/__main__.py,sha256
|
|
56
|
+
pkgs/type_spec/value_spec/__main__.py,sha256=-9L5pXYx02plnTetqNknaUZPieLRtzbyWdZDT6B-cWA,8294
|
|
38
57
|
pkgs/type_spec/value_spec/convert_type.py,sha256=SAYyEV6orQJJbkXSE4hhtOQJ2vKUXJCKPeYPrB8G9oA,2272
|
|
39
|
-
pkgs/type_spec/value_spec/emit_python.py,sha256=
|
|
58
|
+
pkgs/type_spec/value_spec/emit_python.py,sha256=rjg6LIGYdaagrZ19XpDfW_Z7LPNwCMDceBje5dsMFbw,6959
|
|
40
59
|
pkgs/type_spec/value_spec/types.py,sha256=a2zxbbCRWepY1l8OtjeCDKgBKFPFHVgV99oP6pTtaro,441
|
|
41
60
|
type_spec/external/api/batch/execute_batch.yaml,sha256=gpdSev3sLEC_cMVSZdj-9bc_XDFDqdPdOII9Ojme2N8,1170
|
|
42
|
-
type_spec/external/api/
|
|
43
|
-
type_spec/external/api/
|
|
61
|
+
type_spec/external/api/batch/execute_batch_load_async.yaml,sha256=gcn51NWLiSvlytz8k3_pDOVJLCGfdivKJPG4I9Q8CZc,435
|
|
62
|
+
type_spec/external/api/chemical/convert_chemical_formats.yaml,sha256=EidTxMCRs-ko5yMFDptJPyAEWYZVruP41OG3cwyBLQQ,1069
|
|
63
|
+
type_spec/external/api/entity/create_entities.yaml,sha256=l24aCHcKD3rnCOIREL3B1th0NXUahSO-thWWBvTEx3Y,1144
|
|
64
|
+
type_spec/external/api/entity/create_entity.yaml,sha256=BjnJC7U_RW063B4E2tg6aXXLpLredrtSHMBNnJobkxE,1339
|
|
44
65
|
type_spec/external/api/entity/get_entities_data.yaml,sha256=3XujG7bOpuBQlfFrYtG3L4fBk7LsmdSekmP9iU0zjF0,796
|
|
45
66
|
type_spec/external/api/entity/list_entities.yaml,sha256=H2YVv6il-XVKd_7IipZqauTDvWCrvHok7z47bDH2sI4,1798
|
|
46
67
|
type_spec/external/api/entity/resolve_entity_ids.yaml,sha256=Zf3OhAohwLJO7wWj0e-sK5lhIsXlD8A5Bu3OGjY4-tA,732
|
|
47
68
|
type_spec/external/api/entity/set_values.yaml,sha256=_UDxSk09Ke0KDABt8ldOScC2CLrbAhBPArZvno5iD4I,422
|
|
69
|
+
type_spec/external/api/id_source/list_id_source.yaml,sha256=BuobTXCJJLp-ogkhkLXluJPQCvUBQ7O2E7Z20Sm1BK8,1020
|
|
70
|
+
type_spec/external/api/id_source/match_id_source.yaml,sha256=j4jDdmElYyY_ZLJQrx66ddy4JYV_9GMWQNi0G8SwY08,837
|
|
48
71
|
type_spec/external/api/input_groups/get_input_group_names.yaml,sha256=LYgnm2Or7ZWCzDGjl53Y1PcHvej8G7Mpp5H96Z4UZCg,913
|
|
49
72
|
type_spec/external/api/inputs/create_inputs.yaml,sha256=pX8jatpve4iJxK7kYw7SBlQXlVHJVfLDCOrDdpn8Gsw,1561
|
|
50
73
|
type_spec/external/api/inputs/get_input_data.yaml,sha256=kjX3VE0y2DxxfUk0J2kjnufSFVAbk_3v28EPuHBhvRE,3825
|
|
@@ -56,20 +79,26 @@ type_spec/external/api/outputs/get_output_names.yaml,sha256=IqEYCOHeyHIu45Lf37sf
|
|
|
56
79
|
type_spec/external/api/outputs/resolve_output_conditions.yaml,sha256=lGrG6XPGiQtHx24GccPcO18xxAoMynTSC_2WwxCjFrc,1640
|
|
57
80
|
type_spec/external/api/project/get_projects.yaml,sha256=pQXGGPHenmFWYUuzEmZ-ORf0_d6lpQkTrXXMRrEqvDI,1676
|
|
58
81
|
type_spec/external/api/project/get_projects_data.yaml,sha256=8xQoyL8HlAropfZPYYcQ-W4fO4yuqueAWTKxRzTXAa0,1981
|
|
82
|
+
type_spec/external/api/recipe_links/create_recipe_link.yaml,sha256=7b2p7Ei4LnQXqccHsOVAfYyNK4WXm0n1IqxPG-qQDh0,941
|
|
59
83
|
type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml,sha256=mJs82Ci8XSp2ng0W9MKqoeYwIjjgaVYmC5MWFmWFkR8,1759
|
|
84
|
+
type_spec/external/api/recipes/associate_recipe_as_input.yaml,sha256=pX6XCiBlsCiGPHTLW3GP1FkB2NLnLBqZlp6W8hKuym4,486
|
|
85
|
+
type_spec/external/api/recipes/associate_recipe_as_lot.yaml,sha256=8wzeJg5njt4qG2kavA6Jpo9PkWE6rIbuA4IPNdhcwEg,605
|
|
86
|
+
type_spec/external/api/recipes/create_recipe.yaml,sha256=kORnb2yaShePpme259kXYkclQ7JLCxMStPZIMHK77CQ,1285
|
|
60
87
|
type_spec/external/api/recipes/create_recipes.yaml,sha256=eXMlXRpB5TFt1mUTECBa4aAIG3KrxYT2mJ5vxmZ9Q3A,1503
|
|
61
88
|
type_spec/external/api/recipes/get_curve.yaml,sha256=QFRFst1EJ6T13G9R07kTiz-wvfxgDKbwHbmjgcvEaNc,568
|
|
62
89
|
type_spec/external/api/recipes/get_recipe_calculations.yaml,sha256=ZE7PzfWrjS7TiO4q7iyCwEj5In8GwO6fFIYGqUlTEXo,1240
|
|
63
90
|
type_spec/external/api/recipes/get_recipe_links.yaml,sha256=Vwm0OVWl3VvDaI7chY_oZQqD8xZ1u09iFWKkZKn1ITo,766
|
|
64
91
|
type_spec/external/api/recipes/get_recipe_names.yaml,sha256=4tqcVj-xLeEu0lhdm8NpLYmAvfkmq08GZ0Mr59I5nLI,896
|
|
65
92
|
type_spec/external/api/recipes/get_recipe_output_metadata.yaml,sha256=YImW94JXVKR6Wz_7R7sRbhD9Ul51Ba-j-x9vJB__AAU,1216
|
|
66
|
-
type_spec/external/api/recipes/get_recipes_data.yaml,sha256=
|
|
67
|
-
type_spec/external/api/recipes/set_recipe_inputs.yaml,sha256=
|
|
93
|
+
type_spec/external/api/recipes/get_recipes_data.yaml,sha256=3Mq0y8cX9SPFkr78Tj-wPf3BUzyd8g9ObOxp9mkkpXE,11283
|
|
94
|
+
type_spec/external/api/recipes/set_recipe_inputs.yaml,sha256=MvnHuzI9JKfkYZb-pC4jeE7FRpGeacJKXd5_GImsDiY,1747
|
|
95
|
+
type_spec/external/api/recipes/set_recipe_metadata.yaml,sha256=XLVwhBSkhbomXYD4AboBEVQt4vBhibvjmWQsDFS10sc,543
|
|
68
96
|
type_spec/external/api/recipes/set_recipe_outputs.yaml,sha256=Oe8XGYXbPNmrbEDXk3qucfS1L3P9TnXI5cxaNAl6x5A,1875
|
|
97
|
+
type_spec/external/api/triggers/run_trigger.yaml,sha256=c8xDV3bQRjcRRDG4Y7kdQmMMu1fj3ae5eUi-Sdbsi54,405
|
|
69
98
|
uncountable/__init__.py,sha256=281cC2hs8pbrD0jVKMol-tbWSh7Zcsc8oRT42dKteyE,102
|
|
70
99
|
uncountable/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
71
100
|
uncountable/core/__init__.py,sha256=GCXRRhhYv-yKzqKjAij7GcNiOr90BBbgdhhpusWtmUc,100
|
|
72
|
-
uncountable/core/client.py,sha256=
|
|
101
|
+
uncountable/core/client.py,sha256=PWHdiUmLzwxZkw8Refh2ArFi-o4rADJyHSsJdNX7_N4,4113
|
|
73
102
|
uncountable/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
74
103
|
uncountable/integration/construct_client.py,sha256=r6M5pnIO0fKcjf5d_AREPtWZ6AkWgcjkdu_jHQEYlT8,1084
|
|
75
104
|
uncountable/integration/cron.py,sha256=TIPqMPMSMtMJTu4aXwLf6QY-OLrpmyITLDp48UIr4Ok,919
|
|
@@ -81,19 +110,24 @@ uncountable/integration/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
|
|
|
81
110
|
uncountable/integration/db/connect.py,sha256=iI9e8a2hfbFP-dvH0MGLsrG-RpM0dHKCL-oCLkah9hs,181
|
|
82
111
|
uncountable/integration/executors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
112
|
uncountable/integration/executors/script_executor.py,sha256=6oMPAFe0PUdqt76e8jMi4vXszGVsVHLULob7Qbl3o38,816
|
|
84
|
-
uncountable/types/__init__.py,sha256=
|
|
85
|
-
uncountable/types/
|
|
113
|
+
uncountable/types/__init__.py,sha256=vN7ogAcLNJbeCkDjr0Y9R_4UAbjonBbDLWo3AZ9L5Mg,5213
|
|
114
|
+
uncountable/types/async_batch.py,sha256=ukbVKXk8j1QMHqiaOpQdVmfwZSPZVmAYjFn4awBItyE,1253
|
|
115
|
+
uncountable/types/base.py,sha256=w3BRf8SAvYPlKrcJtJcQ_WhCU3A9zy0VuRTRWRFKVUA,2709
|
|
86
116
|
uncountable/types/calculations.py,sha256=16J-KKMp-I8ZQUkYNmKCHfAn6DGb99cFinALcDIdGHY,562
|
|
87
|
-
uncountable/types/
|
|
117
|
+
uncountable/types/chemical_structure.py,sha256=zQKl53DGtQQONIUHFXuwjWLQaG7FPZY7x6SBSOzkGV0,758
|
|
118
|
+
uncountable/types/client_base.py,sha256=lkVyXgLrCfGh5eRc5glYCxamHl4yPqv3WRznOFFbOdQ,41267
|
|
88
119
|
uncountable/types/curves.py,sha256=qYyRntMmFNonEwTrGhquMLbgMqjyP1moQflNTP0FMec,1308
|
|
89
120
|
uncountable/types/entity.py,sha256=NjMZrqBwQ7sZe_oUuJqy9IEG7dWZmFMkQQXJ0_odcnA,11637
|
|
90
121
|
uncountable/types/experiment_groups.py,sha256=ZBEk06F4n98Jz3oEA09WaDmw5rqPs7iVAm_Ysr4gc_o,599
|
|
91
122
|
uncountable/types/field_values.py,sha256=2unBAeBqQPqLQKaL6nGpnDDksZ-5MZepgEF3sgy6oOk,1670
|
|
92
123
|
uncountable/types/fields.py,sha256=eGtZ6axTYGFxLmPAyri2LwlcR4SZ2sX2c6QDX0ybKz0,570
|
|
124
|
+
uncountable/types/id_source.py,sha256=Y3suURq3L1SahZ2oHPD986SU0l3Ik-ZzH38aQKgc1Fg,1341
|
|
125
|
+
uncountable/types/identifier.py,sha256=O_J3sHsG3pFeSIxUKmgIK97FZl6f4qkRDwsNLvY7ymE,1389
|
|
93
126
|
uncountable/types/input_attributes.py,sha256=u-JABoZ-Ij1Ynq5g6MxOgRdQeYbM7OnGP2q_N7KuVdw,826
|
|
94
127
|
uncountable/types/inputs.py,sha256=q7fNGaSKIk3R6uXCEhSQpiHvXu82YcK3oZHDI7bxE88,1597
|
|
95
128
|
uncountable/types/outputs.py,sha256=hSUlu41sisYKIZpPrj1G1DRfKm6hsKNcd1eNKFYb-4w,671
|
|
96
129
|
uncountable/types/phases.py,sha256=eaqwQlSRC2Ug7YFL0gqLbg3wDDHeRvBOhcABG7khW8c,550
|
|
130
|
+
uncountable/types/recipe_identifiers.py,sha256=uJ_1xRSYa02AwGi0gxDHqoQoI0tu1KW5AzTAXwnr9Nc,1768
|
|
97
131
|
uncountable/types/recipe_links.py,sha256=RldSV7SdeBYa0bx02DzMg4jfPdgrlMRE40T16Fdy8u4,1406
|
|
98
132
|
uncountable/types/recipe_metadata.py,sha256=NpRnz9QO2t21eTyf-M9_HBdQzcd55OgFM1dx6ZEg22w,1341
|
|
99
133
|
uncountable/types/recipe_output_metadata.py,sha256=XJA8R1r4NTzyR_DhMkmH4ZtYD-vqpvBMji9Be8OcFmo,613
|
|
@@ -105,13 +139,19 @@ uncountable/types/workflows.py,sha256=JJKM0SeDqAMA2oxwzlG1c1FxeSBI7E49duoITcUrEZ
|
|
|
105
139
|
uncountable/types/api/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
106
140
|
uncountable/types/api/batch/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
107
141
|
uncountable/types/api/batch/execute_batch.py,sha256=cCZo_akwJR4_ET6oOBChdlrCQlxUw8V9i8tDpv7JTIc,1696
|
|
142
|
+
uncountable/types/api/batch/execute_batch_load_async.py,sha256=dcdGFibO8fUDpC__X7Euvgs1EL1nGaNMTjb_QH-06do,885
|
|
143
|
+
uncountable/types/api/chemical/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
144
|
+
uncountable/types/api/chemical/convert_chemical_formats.py,sha256=COGzkfpTL_Ermg2cbasoVKGAxDAtJaTFay18IZtrWCA,1305
|
|
108
145
|
uncountable/types/api/entity/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
109
|
-
uncountable/types/api/entity/create_entities.py,sha256=
|
|
110
|
-
uncountable/types/api/entity/create_entity.py,sha256=
|
|
146
|
+
uncountable/types/api/entity/create_entities.py,sha256=fJn6mgRfPjmt_fFd4IjsaxnXJtbP6fyxVSidprC3zxE,1550
|
|
147
|
+
uncountable/types/api/entity/create_entity.py,sha256=KT-V2ePz-V1aPrKbkVhuR7tb0G2SfAn7ug6C3ZJCJAs,1720
|
|
111
148
|
uncountable/types/api/entity/get_entities_data.py,sha256=XjrJGZucIn1TYUlDLRnRA0JTQw-vXHIAT-m0H9hk37A,1170
|
|
112
149
|
uncountable/types/api/entity/list_entities.py,sha256=_bIIZJj3N0E6YiHgqzfCOKxD1fQW6biWJQMp5wIVbBw,1514
|
|
113
150
|
uncountable/types/api/entity/resolve_entity_ids.py,sha256=AidGpPmI9ATDv0E7vd9LDOl3n3beGxUlRojh5uZrkl4,1086
|
|
114
151
|
uncountable/types/api/entity/set_values.py,sha256=LcYrKQm5ItYLK1Vx7rRq5i6jkMLDhfEBhF0FD1GowQs,958
|
|
152
|
+
uncountable/types/api/id_source/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
153
|
+
uncountable/types/api/id_source/list_id_source.py,sha256=S_NdAd1FIgMtCfpRK9bs4ZIJH7HdyHWImD1qiPuAKMg,1157
|
|
154
|
+
uncountable/types/api/id_source/match_id_source.py,sha256=1Mlw0XGBw7UeWxmwelUEi7Co8Oy15jyhetfKG1BFpIM,1145
|
|
115
155
|
uncountable/types/api/input_groups/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
116
156
|
uncountable/types/api/input_groups/get_input_group_names.py,sha256=LdHWWEfVNGys6Tudienjich56Zz4bj7uXznpyYitCYA,1033
|
|
117
157
|
uncountable/types/api/inputs/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
@@ -127,9 +167,14 @@ uncountable/types/api/outputs/resolve_output_conditions.py,sha256=XZqUseXcGhApHm
|
|
|
127
167
|
uncountable/types/api/project/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
128
168
|
uncountable/types/api/project/get_projects.py,sha256=dMPq8CHxE4k1Vs42TmC4dp9b1jYp0TPlkICacAqrwXQ,1235
|
|
129
169
|
uncountable/types/api/project/get_projects_data.py,sha256=HtUI5YN7S24v7o2VvNBWZkYFnGjFqJzBNoV0ojRx39E,1491
|
|
170
|
+
uncountable/types/api/recipe_links/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
171
|
+
uncountable/types/api/recipe_links/create_recipe_link.py,sha256=1Ok6XMGFKBIPV-uRsjvclEMCcAqyNVyrVLASLaJ8UrU,1213
|
|
130
172
|
uncountable/types/api/recipe_metadata/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
131
173
|
uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py,sha256=el6Pn5XqExX66ZEEHM8CHPxnyXSMZPdfdvLBz86sAVY,1267
|
|
132
174
|
uncountable/types/api/recipes/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
175
|
+
uncountable/types/api/recipes/associate_recipe_as_input.py,sha256=Mo-J2DgwZpbzjS-8pOBvX2VuRfGqnboJXMvFyIzwiPs,880
|
|
176
|
+
uncountable/types/api/recipes/associate_recipe_as_lot.py,sha256=bTYjbnY3B7GKz4MV4UGn7vPjaqMkAfUTio8872d4iws,955
|
|
177
|
+
uncountable/types/api/recipes/create_recipe.py,sha256=L45JexXNo8iUxBI081lz6K1GGLFL3OSo-QPg1EejL-g,1340
|
|
133
178
|
uncountable/types/api/recipes/create_recipes.py,sha256=qwIYa8hfcjY7_VOFt9lxmVtJ-HOJqQN3GDNSbZsRCZU,1544
|
|
134
179
|
uncountable/types/api/recipes/get_curve.py,sha256=lF8MDmBfxm_cIuDxhE80viSFNbcPEkgYkadNFeuI5e4,854
|
|
135
180
|
uncountable/types/api/recipes/get_recipe_calculations.py,sha256=eQmkdZzCEuq8S2f_kf_7GPvDLX1pTnY1CRmkK0SkMCI,1472
|
|
@@ -137,9 +182,12 @@ uncountable/types/api/recipes/get_recipe_links.py,sha256=hk5dfQjv7yU2r-S9b8vwWEJ
|
|
|
137
182
|
uncountable/types/api/recipes/get_recipe_names.py,sha256=uCpXZq5oWjr9a_Vf-yYPaVS72XOlLHgAlju6KHeQ3UA,986
|
|
138
183
|
uncountable/types/api/recipes/get_recipe_output_metadata.py,sha256=L9s2ykPP4pd02Pc98LDisY8bgV8CToS6t6fXKTWqGRw,1464
|
|
139
184
|
uncountable/types/api/recipes/get_recipes_data.py,sha256=dOKokz6rJp3AiqNrF8rAZFlmJSs3ejdNIJhwKw0Utr0,5317
|
|
140
|
-
uncountable/types/api/recipes/set_recipe_inputs.py,sha256=
|
|
185
|
+
uncountable/types/api/recipes/set_recipe_inputs.py,sha256=lFVfv-o_O5wHuMZdH63qlG4exFTlJM078oSAtb3XNxA,1426
|
|
186
|
+
uncountable/types/api/recipes/set_recipe_metadata.py,sha256=Ba6ttd1JuS_Ypt-KpckSviWtOcQ-OTdTEJiaSYyoQL8,933
|
|
141
187
|
uncountable/types/api/recipes/set_recipe_outputs.py,sha256=QYq39TNchQ80ET1C77OE9fwhbu_HmIoEDmrQJHkkCu0,1609
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
UncountablePythonSDK-0.0.
|
|
145
|
-
UncountablePythonSDK-0.0.
|
|
188
|
+
uncountable/types/api/triggers/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
189
|
+
uncountable/types/api/triggers/run_trigger.py,sha256=9m9M8-nlGB_sAU2Qm2lWugp4h4Osqj6QpjNfU8osd1U,901
|
|
190
|
+
UncountablePythonSDK-0.0.18.dist-info/METADATA,sha256=QQCqXXD_TCMrslfVSJYVbx2ylxYP5fo-Bo9nv-HkH2U,1545
|
|
191
|
+
UncountablePythonSDK-0.0.18.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
192
|
+
UncountablePythonSDK-0.0.18.dist-info/top_level.txt,sha256=HaMiBnH1wA7SG9-RVHIJPBH3l8X5gee2jUf-77Nz-Dk,41
|
|
193
|
+
UncountablePythonSDK-0.0.18.dist-info/RECORD,,
|
docs/.gitignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
_build
|
docs/conf.py
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Configuration file for the Sphinx documentation builder.
|
|
2
|
+
#
|
|
3
|
+
# For the full list of built-in configuration values, see the documentation:
|
|
4
|
+
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
|
5
|
+
|
|
6
|
+
# -- Project information -----------------------------------------------------
|
|
7
|
+
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
|
|
8
|
+
|
|
9
|
+
from datetime import date
|
|
10
|
+
import uncountable
|
|
11
|
+
|
|
12
|
+
project = "Uncountable SDK"
|
|
13
|
+
copyright = f"{date.today().year}, Uncountable Inc"
|
|
14
|
+
author = "Uncountable Inc"
|
|
15
|
+
|
|
16
|
+
# -- General configuration ---------------------------------------------------
|
|
17
|
+
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
|
|
18
|
+
|
|
19
|
+
extensions = [
|
|
20
|
+
"autoapi.extension",
|
|
21
|
+
"myst_parser",
|
|
22
|
+
"sphinx_design",
|
|
23
|
+
"sphinx_copybutton",
|
|
24
|
+
"sphinx_favicon",
|
|
25
|
+
]
|
|
26
|
+
myst_enable_extensions = ["fieldlist", "deflist"]
|
|
27
|
+
|
|
28
|
+
autoapi_dirs = ["../uncountable"]
|
|
29
|
+
autoapi_options = [ 'members', 'undoc-members', 'show-inheritance', 'show-module-summary', 'imported-members' ]
|
|
30
|
+
autoapi_ignore = ['*integration*']
|
|
31
|
+
autodoc_typehints = 'description'
|
|
32
|
+
|
|
33
|
+
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# -- Options for HTML output -------------------------------------------------
|
|
37
|
+
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
|
|
38
|
+
|
|
39
|
+
html_theme = "furo"
|
|
40
|
+
html_title = "Python SDK"
|
|
41
|
+
html_static_path = ["static"]
|
|
42
|
+
html_logo = "static/logo_blue.png"
|
|
43
|
+
|
|
44
|
+
favicons = [
|
|
45
|
+
"favicons/android-chrome-192x192.png",
|
|
46
|
+
"favicons/android-chrome-512x512.png",
|
|
47
|
+
"favicons/apple-touch-icon.png",
|
|
48
|
+
"favicons/favicon-16x16.png",
|
|
49
|
+
"favicons/favicon-32x32.png",
|
|
50
|
+
"favicons/mstile-150x150.png",
|
|
51
|
+
"favicons/safari-pinned-tab.svg",
|
|
52
|
+
]
|
docs/index.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Uncountable Python SDK
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
`Uncountable Python SDK` is a python package that allows interacting with the uncountable platform
|
|
7
|
+
|
|
8
|
+
```{toctree}
|
|
9
|
+
:maxdepth: 2
|
|
10
|
+
|
|
11
|
+
quickstart
|
|
12
|
+
```
|
|
13
|
+
|
docs/justfile
ADDED
docs/quickstart.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Quickstart
|
|
2
|
+
|
|
3
|
+
## Installation
|
|
4
|
+
|
|
5
|
+
Install from PyPI:
|
|
6
|
+
|
|
7
|
+
```{code-block} bash
|
|
8
|
+
pip install UncountablePythonSDK
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Available SDK methods
|
|
12
|
+
See the following class for a reference for the available python sdk methods. Then see the example in the next section on how to setup and call these methods.
|
|
13
|
+
[](uncountable.types.client_base.ClientMethods)
|
|
14
|
+
|
|
15
|
+
## Run a simple example
|
|
16
|
+
|
|
17
|
+
```{literalinclude} ../examples/create_entity.py
|
|
18
|
+
```
|
|
19
|
+
|
docs/requirements.txt
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "",
|
|
3
|
+
"icons": [
|
|
4
|
+
{
|
|
5
|
+
"src": "/static/img/icons/android-chrome-192x192.png",
|
|
6
|
+
"sizes": "192x192",
|
|
7
|
+
"type": "image/png"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"src": "/static/img/icons/android-chrome-512x512.png",
|
|
11
|
+
"sizes": "512x512",
|
|
12
|
+
"type": "image/png"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"theme_color": "#ffffff",
|
|
16
|
+
"background_color": "#ffffff",
|
|
17
|
+
"display": "standalone"
|
|
18
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<?xml version="1.0" standalone="no"?>
|
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
|
3
|
+
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
|
4
|
+
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="16.000000pt" height="16.000000pt" viewBox="0 0 16.000000 16.000000"
|
|
6
|
+
preserveAspectRatio="xMidYMid meet">
|
|
7
|
+
<metadata>
|
|
8
|
+
Created by potrace 1.11, written by Peter Selinger 2001-2013
|
|
9
|
+
</metadata>
|
|
10
|
+
<g transform="translate(0.000000,16.000000) scale(0.002312,-0.002312)"
|
|
11
|
+
fill="#000000" stroke="none">
|
|
12
|
+
<path d="M3425 6902 c-16 -10 -50 -30 -75 -44 -25 -14 -85 -49 -135 -78 -49
|
|
13
|
+
-29 -110 -64 -135 -78 -25 -13 -70 -39 -100 -57 -119 -71 -800 -463 -875 -505
|
|
14
|
+
-22 -12 -80 -46 -130 -75 -74 -43 -876 -506 -980 -565 -27 -15 -194 -112 -445
|
|
15
|
+
-257 l-85 -49 0 -1733 c0 -1723 0 -1734 20 -1745 11 -6 23 -15 26 -19 3 -5 8
|
|
16
|
+
-7 10 -6 2 2 15 -4 29 -13 14 -9 117 -69 230 -133 113 -65 219 -126 235 -135
|
|
17
|
+
17 -10 59 -34 95 -55 36 -21 77 -45 92 -54 16 -9 187 -107 380 -219 194 -112
|
|
18
|
+
360 -208 368 -213 8 -5 60 -35 115 -66 55 -31 143 -81 195 -111 93 -54 165
|
|
19
|
+
-96 239 -138 20 -11 52 -30 71 -41 19 -11 170 -98 335 -193 165 -95 317 -184
|
|
20
|
+
337 -197 21 -12 40 -23 42 -23 3 0 29 -14 58 -31 29 -18 68 -40 85 -50 l33
|
|
21
|
+
-18 57 31 c32 17 65 37 74 44 8 8 18 14 22 14 4 0 51 26 104 58 54 32 105 61
|
|
22
|
+
113 65 8 4 33 18 55 31 22 14 56 33 75 44 19 11 123 70 230 132 227 132 219
|
|
23
|
+
127 378 219 68 39 128 71 132 71 5 0 10 4 12 8 2 4 30 23 63 41 71 40 113 64
|
|
24
|
+
158 90 88 51 426 246 457 263 68 39 176 101 230 133 30 18 163 94 295 170 132
|
|
25
|
+
76 308 178 390 225 l150 87 0 1733 0 1733 -80 48 c-44 27 -86 48 -92 49 -7 0
|
|
26
|
+
-13 5 -13 10 0 6 -4 10 -9 10 -5 0 -67 34 -136 75 -70 41 -128 75 -130 75 -2
|
|
27
|
+
0 -95 53 -207 118 -111 65 -223 130 -248 144 -48 27 -60 34 -369 212 -112 65
|
|
28
|
+
-218 126 -235 136 -160 91 -474 272 -486 280 -8 5 -42 24 -75 43 -33 19 -76
|
|
29
|
+
43 -95 55 -180 104 -472 271 -502 287 -21 11 -38 23 -38 27 0 5 -4 8 -8 8 -5
|
|
30
|
+
0 -68 34 -140 75 -72 41 -133 75 -134 75 -2 0 -16 -8 -33 -18z"/>
|
|
31
|
+
</g>
|
|
32
|
+
</svg>
|
|
Binary file
|
examples/create_entity.py
CHANGED
|
@@ -1,18 +1,25 @@
|
|
|
1
|
-
from uncountable.
|
|
2
|
-
from uncountable.types
|
|
1
|
+
from uncountable.core import AuthDetailsApiKey, Client
|
|
2
|
+
from uncountable.types import (
|
|
3
|
+
entity_t,
|
|
4
|
+
field_values_t,
|
|
5
|
+
)
|
|
3
6
|
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
8
|
+
client = Client(
|
|
9
|
+
base_url="https://app.uncountable.com",
|
|
10
|
+
auth_details=AuthDetailsApiKey(
|
|
11
|
+
api_id="X",
|
|
12
|
+
api_secret_key="X",
|
|
13
|
+
),
|
|
14
|
+
)
|
|
15
|
+
entities = client.create_entity(
|
|
16
|
+
definition_id=24,
|
|
17
|
+
entity_type=entity_t.EntityType.LAB_REQUEST,
|
|
18
|
+
field_values=[
|
|
19
|
+
field_values_t.FieldRefNameValue(
|
|
20
|
+
field_ref_name="name", value="SDK Lab Request"
|
|
21
|
+
),
|
|
22
|
+
field_values_t.FieldRefNameValue(field_ref_name="materialFamilyId", value=1),
|
|
23
|
+
],
|
|
24
|
+
)
|
|
25
|
+
print(entities)
|
pkgs/argument_parser/_is_enum.py
CHANGED
|
@@ -18,7 +18,7 @@ from .case_convert import camel_to_snake_case, snake_to_camel_case
|
|
|
18
18
|
|
|
19
19
|
T = typing.TypeVar("T")
|
|
20
20
|
ParserFunction = typing.Callable[[typing.Any], T]
|
|
21
|
-
ParserCache = dict[
|
|
21
|
+
ParserCache = dict[type[typing.Any], ParserFunction[typing.Any]]
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
@dataclass(frozen=True, eq=True)
|
|
@@ -43,13 +43,11 @@ def is_missing(field_type: typing.Any) -> bool:
|
|
|
43
43
|
if origin is not typing.Union:
|
|
44
44
|
return False
|
|
45
45
|
args = typing.get_args(field_type)
|
|
46
|
-
|
|
47
|
-
return False
|
|
48
|
-
return True
|
|
46
|
+
return not (len(args) == 0 or args[0] is not MissingSentryType)
|
|
49
47
|
|
|
50
48
|
|
|
51
49
|
def _invoke_tuple_parsers(
|
|
52
|
-
tuple_type:
|
|
50
|
+
tuple_type: type[T],
|
|
53
51
|
arg_parsers: typing.Sequence[typing.Callable[[typing.Any], object]],
|
|
54
52
|
has_ellipsis: bool,
|
|
55
53
|
value: typing.Any,
|
|
@@ -68,22 +66,25 @@ def _invoke_tuple_parsers(
|
|
|
68
66
|
|
|
69
67
|
|
|
70
68
|
def _invoke_fallback_parsers(
|
|
71
|
-
original_type:
|
|
69
|
+
original_type: type[T],
|
|
72
70
|
arg_parsers: typing.Sequence[typing.Callable[[typing.Any], T]],
|
|
73
71
|
value: typing.Any,
|
|
74
72
|
) -> T:
|
|
73
|
+
exceptions = []
|
|
74
|
+
|
|
75
75
|
for parser in arg_parsers:
|
|
76
76
|
try:
|
|
77
77
|
return parser(value)
|
|
78
|
-
except Exception:
|
|
78
|
+
except Exception as e:
|
|
79
|
+
exceptions.append(e)
|
|
79
80
|
continue
|
|
80
81
|
raise ValueError(
|
|
81
82
|
f"Unhandled value {value} cannot be cast to a member of {original_type}"
|
|
82
|
-
)
|
|
83
|
+
) from ExceptionGroup("Fallback Parser Exception", exceptions)
|
|
83
84
|
|
|
84
85
|
|
|
85
86
|
def _invoke_membership_parser(
|
|
86
|
-
expected_values:
|
|
87
|
+
expected_values: set[T],
|
|
87
88
|
value: typing.Any,
|
|
88
89
|
) -> T:
|
|
89
90
|
"""
|
|
@@ -98,7 +99,7 @@ def _invoke_membership_parser(
|
|
|
98
99
|
|
|
99
100
|
|
|
100
101
|
def _build_parser_inner(
|
|
101
|
-
parsed_type:
|
|
102
|
+
parsed_type: type[T],
|
|
102
103
|
context: ParserContext,
|
|
103
104
|
*,
|
|
104
105
|
convert_string_to_snake_case: bool = False,
|
|
@@ -142,7 +143,7 @@ def _build_parser_inner(
|
|
|
142
143
|
origin = typing.get_origin(parsed_type)
|
|
143
144
|
if origin is tuple:
|
|
144
145
|
args = typing.get_args(parsed_type)
|
|
145
|
-
element_parsers:
|
|
146
|
+
element_parsers: list[typing.Callable[[typing.Any], object]] = []
|
|
146
147
|
has_ellipsis = False
|
|
147
148
|
for arg in args:
|
|
148
149
|
assert not has_ellipsis
|
|
@@ -173,10 +174,16 @@ def _build_parser_inner(
|
|
|
173
174
|
raise ValueError("List types only support one argument")
|
|
174
175
|
arg_parser = _build_parser_inner(args[0], context)
|
|
175
176
|
|
|
177
|
+
def parse_element(value: typing.Any) -> typing.Any:
|
|
178
|
+
try:
|
|
179
|
+
return arg_parser(value)
|
|
180
|
+
except Exception as e:
|
|
181
|
+
raise ValueError("Failed to parse element", value) from e
|
|
182
|
+
|
|
176
183
|
def parse(value: typing.Any) -> typing.Any:
|
|
177
184
|
if not isinstance(value, list):
|
|
178
185
|
raise ValueError("value is not a list", parsed_type)
|
|
179
|
-
return origin(
|
|
186
|
+
return origin(parse_element(x) for x in value)
|
|
180
187
|
|
|
181
188
|
return parse
|
|
182
189
|
|
|
@@ -193,7 +200,7 @@ def _build_parser_inner(
|
|
|
193
200
|
return lambda value: origin((k_parser(k), v_parser(v)) for k, v in value.items())
|
|
194
201
|
|
|
195
202
|
if origin == typing.Literal:
|
|
196
|
-
valid_values:
|
|
203
|
+
valid_values: set[T] = set(typing.get_args(parsed_type))
|
|
197
204
|
return lambda value: _invoke_membership_parser(valid_values, value)
|
|
198
205
|
|
|
199
206
|
if parsed_type is str and convert_string_to_snake_case:
|
|
@@ -250,7 +257,7 @@ def _build_parser_inner(
|
|
|
250
257
|
|
|
251
258
|
|
|
252
259
|
def _build_parser_dataclass(
|
|
253
|
-
parsed_type:
|
|
260
|
+
parsed_type: type[T],
|
|
254
261
|
context: ParserContext,
|
|
255
262
|
) -> ParserFunction[T]:
|
|
256
263
|
"""
|
|
@@ -264,9 +271,9 @@ def _build_parser_dataclass(
|
|
|
264
271
|
|
|
265
272
|
type_hints = typing.get_type_hints(parsed_type)
|
|
266
273
|
dc_field_parsers: list[
|
|
267
|
-
|
|
274
|
+
tuple[
|
|
268
275
|
dataclasses.Field[typing.Any],
|
|
269
|
-
|
|
276
|
+
type[typing.Any],
|
|
270
277
|
ParserFunction[typing.Any],
|
|
271
278
|
]
|
|
272
279
|
] = []
|
|
@@ -274,7 +281,7 @@ def _build_parser_dataclass(
|
|
|
274
281
|
serial_class_data = get_serial_class_data(parsed_type)
|
|
275
282
|
|
|
276
283
|
def parse(value: typing.Any) -> typing.Any:
|
|
277
|
-
data:
|
|
284
|
+
data: dict[typing.Any, typing.Any] = {}
|
|
278
285
|
for field, field_type, field_parser in dc_field_parsers:
|
|
279
286
|
field_raw_value = None
|
|
280
287
|
try:
|
|
@@ -340,7 +347,7 @@ _CACHE_MAP: dict[ParserOptions, ParserCache] = defaultdict(ParserCache)
|
|
|
340
347
|
|
|
341
348
|
|
|
342
349
|
def build_parser(
|
|
343
|
-
parsed_type:
|
|
350
|
+
parsed_type: type[T],
|
|
344
351
|
options: ParserOptions,
|
|
345
352
|
) -> ParserFunction[T]:
|
|
346
353
|
"""
|
|
@@ -364,7 +371,7 @@ def build_parser(
|
|
|
364
371
|
class CachedParser(typing.Generic[T]):
|
|
365
372
|
def __init__(
|
|
366
373
|
self,
|
|
367
|
-
args:
|
|
374
|
+
args: type[T],
|
|
368
375
|
):
|
|
369
376
|
self.arguments = args
|
|
370
377
|
self.parser_api: typing.Optional[ParserFunction[T]] = None
|