UncountablePythonSDK 0.0.92__py3-none-any.whl → 0.0.95__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.

Files changed (178) hide show
  1. {UncountablePythonSDK-0.0.92.dist-info → UncountablePythonSDK-0.0.95.dist-info}/METADATA +2 -1
  2. UncountablePythonSDK-0.0.95.dist-info/RECORD +302 -0
  3. pkgs/argument_parser/argument_parser.py +7 -7
  4. pkgs/filesystem_utils/_s3_session.py +2 -1
  5. pkgs/serialization/annotation.py +3 -3
  6. pkgs/serialization/missing_sentry.py +1 -1
  7. pkgs/serialization/serial_alias.py +2 -2
  8. pkgs/serialization/serial_class.py +1 -1
  9. pkgs/serialization/serial_generic.py +1 -1
  10. pkgs/serialization/serial_union.py +3 -3
  11. pkgs/serialization_util/_env_flags.py +3 -0
  12. pkgs/serialization_util/serialization_helpers.py +5 -5
  13. pkgs/type_spec/actions_registry/__main__.py +0 -4
  14. pkgs/type_spec/builder.py +25 -21
  15. pkgs/type_spec/config.py +2 -5
  16. pkgs/type_spec/emit_open_api.py +1 -1
  17. pkgs/type_spec/emit_python.py +44 -28
  18. pkgs/type_spec/emit_typescript.py +13 -6
  19. pkgs/type_spec/parts/base.py.prepart +2 -0
  20. pkgs/type_spec/util.py +3 -5
  21. pkgs/type_spec/value_spec/__main__.py +15 -5
  22. pkgs/type_spec/value_spec/emit_python.py +5 -2
  23. pkgs/type_spec/value_spec/types.py +1 -1
  24. uncountable/core/client.py +14 -6
  25. uncountable/core/file_upload.py +5 -0
  26. uncountable/integration/job.py +2 -2
  27. uncountable/integration/queue_runner/command_server/types.py +1 -1
  28. uncountable/integration/server.py +4 -4
  29. uncountable/types/__init__.py +0 -1
  30. uncountable/types/api/batch/execute_batch.py +1 -2
  31. uncountable/types/api/batch/execute_batch_load_async.py +0 -1
  32. uncountable/types/api/chemical/convert_chemical_formats.py +0 -1
  33. uncountable/types/api/entity/create_entities.py +1 -2
  34. uncountable/types/api/entity/create_entity.py +2 -3
  35. uncountable/types/api/entity/get_entities_data.py +0 -1
  36. uncountable/types/api/entity/grant_entity_permissions.py +0 -1
  37. uncountable/types/api/entity/list_entities.py +3 -4
  38. uncountable/types/api/entity/lock_entity.py +0 -1
  39. uncountable/types/api/entity/resolve_entity_ids.py +2 -3
  40. uncountable/types/api/entity/set_entity_field_values.py +0 -1
  41. uncountable/types/api/entity/set_values.py +0 -1
  42. uncountable/types/api/entity/transition_entity_phase.py +1 -2
  43. uncountable/types/api/entity/unlock_entity.py +0 -1
  44. uncountable/types/api/equipment/associate_equipment_input.py +0 -1
  45. uncountable/types/api/field_options/upsert_field_options.py +0 -1
  46. uncountable/types/api/files/download_file.py +1 -2
  47. uncountable/types/api/id_source/list_id_source.py +3 -4
  48. uncountable/types/api/id_source/match_id_source.py +1 -2
  49. uncountable/types/api/input_groups/get_input_group_names.py +0 -1
  50. uncountable/types/api/inputs/create_inputs.py +2 -3
  51. uncountable/types/api/inputs/get_input_data.py +5 -6
  52. uncountable/types/api/inputs/get_input_names.py +3 -4
  53. uncountable/types/api/inputs/get_inputs_data.py +0 -1
  54. uncountable/types/api/inputs/set_input_attribute_values.py +0 -1
  55. uncountable/types/api/inputs/set_input_category.py +1 -2
  56. uncountable/types/api/inputs/set_input_subcategories.py +0 -1
  57. uncountable/types/api/inputs/set_intermediate_type.py +1 -2
  58. uncountable/types/api/material_families/update_entity_material_families.py +1 -2
  59. uncountable/types/api/outputs/get_output_data.py +2 -3
  60. uncountable/types/api/outputs/get_output_names.py +0 -1
  61. uncountable/types/api/outputs/resolve_output_conditions.py +0 -1
  62. uncountable/types/api/permissions/set_core_permissions.py +1 -2
  63. uncountable/types/api/project/get_projects.py +3 -4
  64. uncountable/types/api/project/get_projects_data.py +4 -5
  65. uncountable/types/api/recipe_links/create_recipe_link.py +1 -2
  66. uncountable/types/api/recipe_links/remove_recipe_link.py +1 -2
  67. uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +3 -4
  68. uncountable/types/api/recipes/add_recipe_to_project.py +0 -1
  69. uncountable/types/api/recipes/archive_recipes.py +0 -1
  70. uncountable/types/api/recipes/associate_recipe_as_input.py +0 -1
  71. uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -1
  72. uncountable/types/api/recipes/clear_recipe_outputs.py +0 -1
  73. uncountable/types/api/recipes/create_recipe.py +1 -2
  74. uncountable/types/api/recipes/create_recipes.py +1 -2
  75. uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -1
  76. uncountable/types/api/recipes/edit_recipe_inputs.py +3 -4
  77. uncountable/types/api/recipes/get_column_calculation_values.py +0 -1
  78. uncountable/types/api/recipes/get_curve.py +0 -1
  79. uncountable/types/api/recipes/get_recipe_calculations.py +0 -1
  80. uncountable/types/api/recipes/get_recipe_links.py +1 -2
  81. uncountable/types/api/recipes/get_recipe_names.py +0 -1
  82. uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -1
  83. uncountable/types/api/recipes/get_recipes_data.py +13 -14
  84. uncountable/types/api/recipes/lock_recipes.py +1 -2
  85. uncountable/types/api/recipes/remove_recipe_from_project.py +0 -1
  86. uncountable/types/api/recipes/set_recipe_inputs.py +1 -2
  87. uncountable/types/api/recipes/set_recipe_metadata.py +0 -1
  88. uncountable/types/api/recipes/set_recipe_output_annotations.py +2 -3
  89. uncountable/types/api/recipes/set_recipe_output_file.py +0 -1
  90. uncountable/types/api/recipes/set_recipe_outputs.py +3 -4
  91. uncountable/types/api/recipes/set_recipe_tags.py +2 -3
  92. uncountable/types/api/recipes/unarchive_recipes.py +0 -1
  93. uncountable/types/api/recipes/unlock_recipes.py +1 -2
  94. uncountable/types/api/triggers/run_trigger.py +0 -1
  95. uncountable/types/api/uploader/invoke_uploader.py +0 -1
  96. uncountable/types/async_batch.py +0 -1
  97. uncountable/types/async_batch_processor.py +1 -2
  98. uncountable/types/async_batch_t.py +1 -2
  99. uncountable/types/async_jobs.py +0 -1
  100. uncountable/types/async_jobs_t.py +1 -2
  101. uncountable/types/auth_retrieval.py +0 -1
  102. uncountable/types/auth_retrieval_t.py +2 -3
  103. uncountable/types/base.py +0 -1
  104. uncountable/types/base_t.py +2 -1
  105. uncountable/types/calculations.py +0 -1
  106. uncountable/types/calculations_t.py +0 -1
  107. uncountable/types/chemical_structure.py +0 -1
  108. uncountable/types/chemical_structure_t.py +0 -1
  109. uncountable/types/client_base.py +29 -30
  110. uncountable/types/client_config.py +0 -1
  111. uncountable/types/client_config_t.py +1 -2
  112. uncountable/types/curves.py +0 -1
  113. uncountable/types/curves_t.py +2 -3
  114. uncountable/types/entity.py +0 -1
  115. uncountable/types/entity_t.py +3 -4
  116. uncountable/types/experiment_groups.py +0 -1
  117. uncountable/types/experiment_groups_t.py +0 -1
  118. uncountable/types/field_values.py +0 -1
  119. uncountable/types/field_values_t.py +6 -7
  120. uncountable/types/fields.py +0 -1
  121. uncountable/types/fields_t.py +0 -1
  122. uncountable/types/generic_upload.py +0 -1
  123. uncountable/types/generic_upload_t.py +2 -3
  124. uncountable/types/id_source.py +0 -1
  125. uncountable/types/id_source_t.py +1 -2
  126. uncountable/types/identifier.py +0 -1
  127. uncountable/types/identifier_t.py +1 -2
  128. uncountable/types/input_attributes.py +0 -1
  129. uncountable/types/input_attributes_t.py +0 -1
  130. uncountable/types/inputs.py +0 -1
  131. uncountable/types/inputs_t.py +2 -3
  132. uncountable/types/integration_server.py +0 -1
  133. uncountable/types/integration_server_t.py +1 -2
  134. uncountable/types/job_definition.py +0 -1
  135. uncountable/types/job_definition_t.py +5 -6
  136. uncountable/types/outputs.py +0 -1
  137. uncountable/types/outputs_t.py +1 -2
  138. uncountable/types/overrides.py +0 -1
  139. uncountable/types/overrides_t.py +0 -1
  140. uncountable/types/permissions.py +0 -1
  141. uncountable/types/permissions_t.py +1 -2
  142. uncountable/types/phases.py +0 -1
  143. uncountable/types/phases_t.py +0 -1
  144. uncountable/types/post_base.py +0 -1
  145. uncountable/types/post_base_t.py +1 -2
  146. uncountable/types/queued_job.py +0 -1
  147. uncountable/types/queued_job_t.py +2 -3
  148. uncountable/types/recipe_identifiers.py +0 -1
  149. uncountable/types/recipe_identifiers_t.py +1 -2
  150. uncountable/types/recipe_inputs.py +0 -1
  151. uncountable/types/recipe_inputs_t.py +1 -2
  152. uncountable/types/recipe_links.py +0 -1
  153. uncountable/types/recipe_links_t.py +2 -3
  154. uncountable/types/recipe_metadata.py +0 -1
  155. uncountable/types/recipe_metadata_t.py +0 -1
  156. uncountable/types/recipe_output_metadata.py +0 -1
  157. uncountable/types/recipe_output_metadata_t.py +0 -1
  158. uncountable/types/recipe_tags.py +0 -1
  159. uncountable/types/recipe_tags_t.py +0 -1
  160. uncountable/types/recipe_workflow_steps.py +0 -1
  161. uncountable/types/recipe_workflow_steps_t.py +2 -3
  162. uncountable/types/recipes.py +0 -1
  163. uncountable/types/recipes_t.py +0 -1
  164. uncountable/types/response.py +0 -1
  165. uncountable/types/response_t.py +0 -1
  166. uncountable/types/secret_retrieval.py +0 -1
  167. uncountable/types/secret_retrieval_t.py +2 -3
  168. uncountable/types/units.py +0 -1
  169. uncountable/types/units_t.py +0 -1
  170. uncountable/types/users.py +0 -1
  171. uncountable/types/users_t.py +0 -1
  172. uncountable/types/webhook_job.py +0 -1
  173. uncountable/types/webhook_job_t.py +0 -1
  174. uncountable/types/workflows.py +0 -1
  175. uncountable/types/workflows_t.py +1 -2
  176. UncountablePythonSDK-0.0.92.dist-info/RECORD +0 -301
  177. {UncountablePythonSDK-0.0.92.dist-info → UncountablePythonSDK-0.0.95.dist-info}/WHEEL +0 -0
  178. {UncountablePythonSDK-0.0.92.dist-info → UncountablePythonSDK-0.0.95.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.92
3
+ Version: 0.0.95
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
@@ -38,6 +38,7 @@ Requires-Dist: simplejson==3.*
38
38
  Requires-Dist: grpcio==1.67.1
39
39
  Requires-Dist: protobuf>=4.21.1
40
40
  Requires-Dist: azure-storage-blob==12.*
41
+ Requires-Dist: boto3-stubs[essential,ses]==1.36.4
41
42
  Provides-Extra: test
42
43
  Requires-Dist: mypy==1.*; extra == "test"
43
44
  Requires-Dist: ruff==0.*; extra == "test"
@@ -0,0 +1,302 @@
1
+ docs/.gitignore,sha256=_ebkZUcwfvfnGEJ95rfj1lxoBNd6EE9ZvtOc7FsbfFE,7
2
+ docs/conf.py,sha256=YF5J-9g_Wg8wXmyHsGaE8xYlDEzqocNl3UWUmP0CwBg,1702
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=-sWMwUL2L6vU1QzoQAS-aP8oPbUqXDfMxCeeTKnShFc,138
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/async_batch.py,sha256=tEyvgxk2uf681mKlN4TDuPMkb1OHyM9oO8pYW4A7HvM,1142
18
+ examples/create_entity.py,sha256=t6WBZsWRDbWZgFCWXKGgKL5LAB6-38oaiNYGxMAa2No,686
19
+ examples/download_files.py,sha256=rjv7EUgSw_W24_F5La-MljnIDQhbrvA7p2M-qPFbrXA,734
20
+ examples/edit_recipe_inputs.py,sha256=mtk_oSkN-OT2hKkb1XKXrRiUaGYTJstXuOKyTR51Fjo,1663
21
+ examples/invoke_uploader.py,sha256=rEvmVY5TjigN_-4PTQdkjY-bC5DrYMcJgquyZ4Tt5FM,748
22
+ examples/set_recipe_metadata_file.py,sha256=cRVXGz4UN4aqnNrNSzyBmikYHpe63lMIuzOpMwD9EDU,1036
23
+ examples/set_recipe_output_file_sdk.py,sha256=Lz1amqppnWTX83z-C090wCJ4hcKmCD3kb-4v0uBRi0Y,782
24
+ examples/upload_files.py,sha256=qMaSvMSdTMPOOP55y1AwEurc0SOdZAMvEydlqJPsGpg,432
25
+ examples/integration-server/pyproject.toml,sha256=ziyEbSiTYlOk784euVJjuZ3UqIEENkPXuug5VTrkjms,9131
26
+ examples/integration-server/jobs/materials_auto/example_cron.py,sha256=7VVQ-UJsq3DbGpN3XPnorRVZYo-vCwbfSU3VVDluIzA,699
27
+ examples/integration-server/jobs/materials_auto/example_wh.py,sha256=Hx5nonavOh2L3JykDpI5bPqPu8L1wwhwekTUfTRgq9g,479
28
+ examples/integration-server/jobs/materials_auto/profile.yaml,sha256=XlOXSRplMJ13T6900pv1wDKxeE9V1hZZTMuvup1MiBM,896
29
+ pkgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ pkgs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
+ pkgs/argument_parser/__init__.py,sha256=AOL6yZkJg9Z8Q4v4JY4agEbMDQWPptVauSA_itShv64,693
32
+ pkgs/argument_parser/_is_enum.py,sha256=Gw6jJa8nBwYGqXwwCZbSnWL8Rvr5alkg5lSVAqXtOZM,257
33
+ pkgs/argument_parser/_is_namedtuple.py,sha256=Rjc1bKanIPPogl3qG5JPBxglG1TqWYOo1nxxhBASQWY,265
34
+ pkgs/argument_parser/argument_parser.py,sha256=_W0-HLC1F8jXgeFJnhUREorqcXzuhZi__eX_7FFkkVs,19363
35
+ pkgs/argument_parser/case_convert.py,sha256=NuJLJUJRbyVb6_Slen4uqaStEHbcOS1d-hBBfDrrw-c,605
36
+ pkgs/filesystem_utils/__init__.py,sha256=2a0d2rEPlEEYwhm3Wckny4VCp4ZS7JtYSXmwdwNCRjo,1332
37
+ pkgs/filesystem_utils/_blob_session.py,sha256=CtoB7PIocuZo8vvFIS_Rc-YR6KwzFB0rHUVPKFEbRAI,4862
38
+ pkgs/filesystem_utils/_gdrive_session.py,sha256=XTAKppTfIiJtPkzq90yftoMHa-kcGe9MDZQlmx1bviQ,11058
39
+ pkgs/filesystem_utils/_local_session.py,sha256=xFEYhAvNqrOYqwt4jrEYOuYkjJn0zclZhTelW_Q1-rw,2325
40
+ pkgs/filesystem_utils/_s3_session.py,sha256=DdD6M90z1VyTiuRdTmjvBNJOEFHBPyEU8wGKRKwHvOU,4027
41
+ pkgs/filesystem_utils/_sftp_session.py,sha256=6qwBGYu8UTFYw9YAmYAD0qL9qtivRRQpvzmlInmJZ_k,4709
42
+ pkgs/filesystem_utils/file_type_utils.py,sha256=oklu7Wtcxg9pBz84cAlXpNlhYEM0AbsO5DoEqvFjoXY,1896
43
+ pkgs/filesystem_utils/filesystem_session.py,sha256=BQ2Go8Mu9-GcnaWh2Pm4x7ugLVsres6XrOQ8RoiEpcE,1045
44
+ pkgs/serialization/__init__.py,sha256=b2sNfYICz0D6Y8shzEUfyUoHZukfuAvfuaZvg8dZHic,1163
45
+ pkgs/serialization/annotation.py,sha256=wn9yb4a4DrsyPAYqY9mVswJarP4lsOkgfnvchrg5toE,2104
46
+ pkgs/serialization/missing_sentry.py,sha256=89SomyM0sBWLr_N0SPOyxU3hWcm1ljL-veTazZ1-GU8,811
47
+ pkgs/serialization/opaque_key.py,sha256=8ak7aMCGWkKDjnG374yqy8gtnCCUzG2DSJEBfoPgi0c,194
48
+ pkgs/serialization/serial_alias.py,sha256=zP0wAy7NGvpyOe-TGUwHy3wPF0XZTIwFLh_caDX67BU,1343
49
+ pkgs/serialization/serial_class.py,sha256=hL5SVL4MqSzeTXSLL15fvDQtk32z0NywsKBWUL9b-k0,6100
50
+ pkgs/serialization/serial_generic.py,sha256=vAC0-o9fkco2lM_YvBavY0JDYncDxbW3jFboYeHRImw,461
51
+ pkgs/serialization/serial_union.py,sha256=IdWsSsM8j-qGfl5Wv6haX37ZS1SKob8XT8cilBBOVIo,2670
52
+ pkgs/serialization/yaml.py,sha256=yoJtu7_ixnJV6uTxA_U1PpK5F_ixT08AKVh5ocyYwXM,1466
53
+ pkgs/serialization_util/__init__.py,sha256=YykkhqGNKiLCo-D5vSTq6WiPNfCyPXyr-mQO5e5Klak,513
54
+ pkgs/serialization_util/_env_flags.py,sha256=5kBchfeYS_MRWWSdUE3EljXTtOZX-YYH7inh48d-Qz8,90
55
+ pkgs/serialization_util/_get_type_for_serialization.py,sha256=dW5_W9MFd6wgWfW5qlWork-GBb-QFLtiOZkjk2Zqn2M,1177
56
+ pkgs/serialization_util/convert_to_snakecase.py,sha256=H2BAo5ZdcCDN77RpLb-uP0s7-FQ5Ukwnsd3VYc1vD0M,583
57
+ pkgs/serialization_util/dataclasses.py,sha256=uhNGXQPQLZblDFQuuwkAGmKOPiRyfDzCdg72CVtYJGA,390
58
+ pkgs/serialization_util/serialization_helpers.py,sha256=gP4U5zLYA6Y3y1qtcH2qoRsXPh-UnhR5ITEIRUDj06A,6649
59
+ pkgs/strenum_compat/__init__.py,sha256=wXRFeNvBm8RU6dy1PFJ5sRLgUIEeH_DVR95Sv5qpGbk,59
60
+ pkgs/strenum_compat/strenum_compat.py,sha256=uOUAgpYTjHs1MX8dG81jRlyTkt3KNbkV_25zp7xTX2s,36
61
+ pkgs/type_spec/__init__.py,sha256=h5DmJTca4QVV10sZR1x0-MlkZfuGYDfapR3zHvXfzto,19
62
+ pkgs/type_spec/__main__.py,sha256=5bJaX9Y_-FavP0qwzhk-z-V97UY7uaezJTa1zhO_HHQ,1048
63
+ pkgs/type_spec/builder.py,sha256=eXvfY3TaxF4zdSvoshVQC_q_ZA0S0x6-caJ4M_5oY7M,52731
64
+ pkgs/type_spec/config.py,sha256=K-DFjRVIW5RCJOuB0QhkWZMOrsIZavFURqmhgAoULgw,5103
65
+ pkgs/type_spec/emit_io_ts.py,sha256=CUvBs0boB_X-Kndh66yYcqFfq3oC_LGs8YffLkJ0ZXA,5707
66
+ pkgs/type_spec/emit_open_api.py,sha256=9AgtHB3ZIObs9cV-RqNZt_q1icmIGwPeovQ63gTl-l8,24541
67
+ pkgs/type_spec/emit_open_api_util.py,sha256=34zslFjTiOI5q8YreBOLD-afmaW4lrlK7pBpNAd3CxA,2379
68
+ pkgs/type_spec/emit_python.py,sha256=BohmwGN89EDHiNlT6-z7xv2C0vIRhQ2SXr4kdoue2a4,52103
69
+ pkgs/type_spec/emit_typescript.py,sha256=_7-SLAOP0jMIrDWDKCPJpyykJh3n0hynm5b-Ltq23hM,10620
70
+ pkgs/type_spec/emit_typescript_util.py,sha256=sugxboeMwXiIdk4RDyUR_CxU31Le3OQ7i5HmuHeSLvc,10447
71
+ pkgs/type_spec/load_types.py,sha256=ero3SXB0M7xKHni5Qxop5Yh5A1TYjjoqwkEgUCQx71Q,3657
72
+ pkgs/type_spec/open_api_util.py,sha256=OiuMWUIwi7ibIOABtuHnhrPdfd3rVxv0MJ1ZY1xj_qw,7083
73
+ pkgs/type_spec/test.py,sha256=4ueujBq-pEgnX3Z69HyPmD-bullFXmpixcpVzfOkhP4,489
74
+ pkgs/type_spec/util.py,sha256=TPmFVgiGj6niurg4V-AKFkQQDDDtJ8a5o2Z_EDgMTvU,4827
75
+ pkgs/type_spec/actions_registry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
+ pkgs/type_spec/actions_registry/__main__.py,sha256=SRw6kIhHTW7W2wGijYq66JARzoc4KpPmbLqwvnETyTE,4277
77
+ pkgs/type_spec/actions_registry/emit_typescript.py,sha256=W1lI36ITdJ7MBf37wlTB7H3X9Ljt217vIGMv4e3fxfY,5986
78
+ pkgs/type_spec/parts/base.py.prepart,sha256=RDNNo4nbLiC9ASIODq2xIt0HkwDNiJVcmjDD33Bubaw,2303
79
+ pkgs/type_spec/parts/base.ts.prepart,sha256=2FJJvpg2olCcavxj0nbYWdwKl6KeScour2JjSvN42l8,1001
80
+ pkgs/type_spec/type_info/__main__.py,sha256=pmVjVqXyVh8vKTNCTFgz80Sg74C5BKToP3E6GS-X_So,857
81
+ pkgs/type_spec/type_info/emit_type_info.py,sha256=mQSxG-UTFl0i8ylvXEvpk1d9NIMYsx39Le7-i5JVuN0,13520
82
+ pkgs/type_spec/value_spec/__init__.py,sha256=Z-grlcZtxAfEXhPHsK0nD7PFLGsv4eqvunaPN7_TA84,83
83
+ pkgs/type_spec/value_spec/__main__.py,sha256=hCTdANTgCNTdZVcXeUd8axENrKNb_oVNrmrygjQht48,8663
84
+ pkgs/type_spec/value_spec/convert_type.py,sha256=X5N7DOTo5XOIHbcYHh9RZFthzb2gcnYg2tRuVMBhbxY,2517
85
+ pkgs/type_spec/value_spec/emit_python.py,sha256=lWO4PFcXo0jgkQy6ZAVN4QJ1jdNXXzkS3oxWCtycQ4k,7131
86
+ pkgs/type_spec/value_spec/types.py,sha256=Yc3LaKHN1G6wbgrBv0dpu5vijUXtS2GcDTusYPnDvK0,454
87
+ uncountable/__init__.py,sha256=8l8XWNCKsu7TG94c-xa2KHpDegvxDC2FyQISdWC763Y,89
88
+ uncountable/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
+ uncountable/core/__init__.py,sha256=RFv0kO6rKFf1PtBPu83hCGmxqkJamRtsgQ9_-ztw7tA,341
90
+ uncountable/core/async_batch.py,sha256=9pYGFzVCQXt8059qFHgutweGIFPquJ5Xfq6NT5P-1K0,1206
91
+ uncountable/core/client.py,sha256=ZlGKzpAnPaU0ABOb_bhIDUKZ9x8rlezqVaK0mfDvdw8,13253
92
+ uncountable/core/environment.py,sha256=6cc-nUvUIbJMI0OSEg3dWI-iNgSYhCdUKKn607Z3QpM,1040
93
+ uncountable/core/file_upload.py,sha256=bgvXk9vfF5qlhy2NAUcEEG7Q7i-c1wr2HrpaWD7HldU,4516
94
+ uncountable/core/types.py,sha256=s2CjqYJpsmbC7xMwxxT7kJ_V9bwokrjjWVVjpMcQpKI,333
95
+ uncountable/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
+ uncountable/integration/cli.py,sha256=h3RE0l1SdjkveOKeY2amlmrJppK4HEQJXk8VG9UJRWg,1359
97
+ uncountable/integration/construct_client.py,sha256=I53mGcdS88hba3HFwgXmWQaTd1d5u0jWNSwyc_vlVsQ,1937
98
+ uncountable/integration/cron.py,sha256=6eH-kIs3sdYPCyb62_L2M7U_uQTdMTdwY5hreEJb0hw,887
99
+ uncountable/integration/entrypoint.py,sha256=BHOYPQgKvZE6HG8Rv15MkdYl8lRkvfDgv1OdLo0oQ9Q,433
100
+ uncountable/integration/job.py,sha256=zamfyEhtZh0cWyd8DvVq64RlaA1aX_wtOALv6Kf7tyo,2354
101
+ uncountable/integration/scan_profiles.py,sha256=760zbv7O7wXxHUHqUkFBpd1Afe8hqxMPU3ugwZGdhEo,2925
102
+ uncountable/integration/scheduler.py,sha256=jrtktQYGW4QKRLH5GvhOFvCl4S9CLLhWY2GF0rzY-KM,4780
103
+ uncountable/integration/server.py,sha256=m_DYRosGbHuPhygM32Xo-jRBl_oaUhOYsBBD1qwwKh4,4697
104
+ uncountable/integration/telemetry.py,sha256=QFvvJdzc15CvdaRLFaJeru0OouAFbYdhHYYovbT8bXg,7425
105
+ uncountable/integration/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
+ uncountable/integration/db/connect.py,sha256=mE3bdV0huclH2iT_dXCQdRL4LkjIuf_myAR64RTWXEs,498
107
+ uncountable/integration/db/session.py,sha256=96cGQXpe6IugBTdSsjdP0S5yhJ6toSmbVB6qhc3FJzE,693
108
+ uncountable/integration/executors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
+ uncountable/integration/executors/executors.py,sha256=Kzisp1eKufGCWrHIw4mmAj-l1UQ2oJsJR7I-_mksnVs,5441
110
+ uncountable/integration/executors/generic_upload_executor.py,sha256=OnVY4KfmAgaf9LPSAgj7H2wFRXwNXBpg7egVy85z5lk,10327
111
+ uncountable/integration/executors/script_executor.py,sha256=BBQ9f0l7uH2hgKf60jtm-pONzwk-EeOhM2qBAbv_URo,846
112
+ uncountable/integration/queue_runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
+ uncountable/integration/queue_runner/job_scheduler.py,sha256=2acmeWscG87MZsifxwMRMGJ4sQgQVNJNr5CqIPUg75E,6288
114
+ uncountable/integration/queue_runner/queue_runner.py,sha256=0BmYu5zHdothTevGsB-nXg6MBd1UD-WkP3h1WCKMdQg,710
115
+ uncountable/integration/queue_runner/types.py,sha256=8qTq29BTSa5rmW6CBlBntP0pNIiDcwu1wHa78pjroS0,219
116
+ uncountable/integration/queue_runner/worker.py,sha256=WwJmwHkgovfiqrMeNJVtIyDYJAib5ajog5ag2l_AquI,4584
117
+ uncountable/integration/queue_runner/command_server/__init__.py,sha256=gQPVILGpWzCr2i5GJyoqna7AOSFvtn4tav69gB78mTQ,571
118
+ uncountable/integration/queue_runner/command_server/command_client.py,sha256=DJb0TUVFkiiLBEQzHSN94sTRnuEbutNEgdN39XmnOXI,2046
119
+ uncountable/integration/queue_runner/command_server/command_server.py,sha256=yyXryhiEC2eGS0yFElLGsVzSKwOuYvj-zp22jQorkv0,2138
120
+ uncountable/integration/queue_runner/command_server/types.py,sha256=PGq6EAGPC_nppXQKp9alAjuBQx1h87BefiMa0XU--PY,975
121
+ uncountable/integration/queue_runner/command_server/protocol/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
+ uncountable/integration/queue_runner/command_server/protocol/command_server.proto,sha256=pf7FAT2eGuao0VYCFrgTAsM-tiPi1Bhz19XN5So1WFk,439
123
+ uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py,sha256=-lBTc5Tz48agqNSeOSpBE69e2kRmWF59sUaowCl8p7U,2207
124
+ uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi,sha256=9viBn6PHvtfMSRwam57ke5O2D_k8LapWYVfBRjknIYg,1281
125
+ uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py,sha256=ZVHkuLDjEbXMCxBsw1UrRhT3EEF8CDDqEvmE3Kbp1H4,5359
126
+ uncountable/integration/queue_runner/datastore/__init__.py,sha256=6BefApqN8D2zlVOH14QAeVzwQ8j5NIb41-njT02Za0k,88
127
+ uncountable/integration/queue_runner/datastore/datastore_sqlite.py,sha256=UZQABTrM3HxVaojCnI1pTU3v1GsbE3G-OCgXP5ekcxI,3801
128
+ uncountable/integration/queue_runner/datastore/interface.py,sha256=j4D-zVvLq-48VTVwHVei82UVUJ_P3cxiseyiTl0MoNw,534
129
+ uncountable/integration/queue_runner/datastore/model.py,sha256=8-RI5A2yPZVGBLWINVmMd6VOl_oHtqGtnaNXcapAChw,577
130
+ uncountable/integration/secret_retrieval/__init__.py,sha256=3QXVj35w8rRMxVvmmsViFYDi3lcb3g70incfalOEm6o,87
131
+ uncountable/integration/secret_retrieval/retrieve_secret.py,sha256=9iz9N8Z-B68QwFCXsx8hTYbgDbk06ejkJ3RQ9mCLMyM,3000
132
+ uncountable/integration/webhook_server/entrypoint.py,sha256=yQWQq_k3kbJkSsEEt6k22YwhXekezJZfV0rnn-hP-Yo,5516
133
+ uncountable/types/__init__.py,sha256=BEYks35yh8J3pp-BI5-CyIUrH96IQ7myliD-zOhbyao,9196
134
+ uncountable/types/async_batch.py,sha256=yCCWrrLQfxXVqZp-KskxLBNkNmuELdz4PJjx8ULppgs,662
135
+ uncountable/types/async_batch_processor.py,sha256=ETgkfb-DLmI4bZwsgS6Awbm_zEXyjbtW5TZVpIIGN_0,14170
136
+ uncountable/types/async_batch_t.py,sha256=zJF7BsrVEquPPg7z28clkLXo6_cGFBwHriCmJ3y7eEw,3001
137
+ uncountable/types/async_jobs.py,sha256=JI0ScfawaqMRbJ2jbgW3YQLhijPnBeYdMnZJjygSxHg,322
138
+ uncountable/types/async_jobs_t.py,sha256=u4xd3i512PZ-9592Q2ZgWh_faMiI4UMm0F_gOmZnerI,1389
139
+ uncountable/types/auth_retrieval.py,sha256=770zjN1K9EF5zs1Xml7x6ke6Hkze7rcMT5FdDVCIl9M,549
140
+ uncountable/types/auth_retrieval_t.py,sha256=PFjSoRupf2wGAz1SonuNyf8CVW9nVeaiHLFOPMZkQxw,2172
141
+ uncountable/types/base.py,sha256=10-34wiyxrOZr2RQNiBohDNWc7b2i_La_yMuKLYslcU,338
142
+ uncountable/types/base_t.py,sha256=9Hrcs0Op6xrJCmhfyzUqKsJmt1WBZMa0K9cuSiPDKfg,2822
143
+ uncountable/types/calculations.py,sha256=fApOFpgBemt_t7IVneVR0VdI3X5EOxiG6Xhzr6RR8Gw,263
144
+ uncountable/types/calculations_t.py,sha256=LE_HWYPf7yxNTpH5sVPaC0e98OxJ5hUOhHezeJNKDtk,648
145
+ uncountable/types/chemical_structure.py,sha256=ujyragaD26-QG5jgKnWhO7TN3N1V9b_04T2WhqNYxxo,281
146
+ uncountable/types/chemical_structure_t.py,sha256=iYmGER_vXqoksv2Nr189qU1Zm70s-U49Eiv0DkWaB1I,773
147
+ uncountable/types/client_base.py,sha256=h5nOrnuw6Szq-fEu9mxzMhqMlm3HDpoi5PlL9Or8ypk,68699
148
+ uncountable/types/client_config.py,sha256=qLpHt4O_B098CyN6qQajoxZ2zjZ1DILXLUEGyyGP0TQ,280
149
+ uncountable/types/client_config_t.py,sha256=k_UkjemqiVuJBiFUjJYk3h673Nahr0nGZvfEZFzsC0k,699
150
+ uncountable/types/curves.py,sha256=QyEyC20jsG-LGKVx6miiF-w70vKMwNkILFBDIJ5Ok9g,345
151
+ uncountable/types/curves_t.py,sha256=2_9qdrSl1XAvIG57lo45KWNpa0wXgZ97OkSRCPRrudc,1347
152
+ uncountable/types/entity.py,sha256=Zclk1LYcRaYrMDhqyCjMSLEg0fE6_q8LHvV22Qvscgs,566
153
+ uncountable/types/entity_t.py,sha256=dTf525ZlAnhWwuCPElR5xooLt0q0LtdtTMkgMQv15nM,17422
154
+ uncountable/types/experiment_groups.py,sha256=qUpFOx1AKgzaT_4khCOv5Xs6jwiQGbvHH-GUh3v1nv4,288
155
+ uncountable/types/experiment_groups_t.py,sha256=_fAYZwqYLR3cFdv2vwLOYs5TvH5CEWDEbh3kFpg26zY,700
156
+ uncountable/types/field_values.py,sha256=hERqHIDmWPQpdW7BLitdA-DNiutmll-ggecwEO7FoVU,1181
157
+ uncountable/types/field_values_t.py,sha256=2BFTqfmlf1tvTFfY5I8xMIBd0IX-EupnzOtwFYFklQs,5751
158
+ uncountable/types/fields.py,sha256=M0_ZZr0QdNLXkdHAGo5mfU90kEtHedCSKrcod-FG30Y,245
159
+ uncountable/types/fields_t.py,sha256=Ze-X83HyM7q4oMk5LLRfPqvRojyAx6dDqIUPX70gNYc,644
160
+ uncountable/types/generic_upload.py,sha256=bNep2nT0fbKAlJaGvHWPmuvfX5KtS8kgTqTh8FQk1NA,858
161
+ uncountable/types/generic_upload_t.py,sha256=z7rxOu8SEyOmIlz06AAXmRkbQdBEpZigb8N2eGi6XIY,3756
162
+ uncountable/types/id_source.py,sha256=sBlDfUwHQ7bGWMschSD_aPQL7LVnCPiV2RAlPLXrAqk,546
163
+ uncountable/types/id_source_t.py,sha256=XzxQWkD0iQoq6LxtpCVWylYtOvq5dXslu_2ML1xNP_U,1838
164
+ uncountable/types/identifier.py,sha256=J-ptCFE0_R0bBAvrYp-gvHk8H9Qq9rhbmeyXgwb9nos,482
165
+ uncountable/types/identifier_t.py,sha256=b0V4_vQYWrsCnCJgNlR1FlHQGsGmGgrqREB5IhKsOec,1787
166
+ uncountable/types/input_attributes.py,sha256=T4qGyuZAgcdkaWeS0T7PFKQN44GEdAvVBBsaEkaCmdA,283
167
+ uncountable/types/input_attributes_t.py,sha256=3m5Bbs5Hj6jX425T0hmqUkjxfDTjhDgMgvKsE2vPBlA,843
168
+ uncountable/types/inputs.py,sha256=3ghg39_oiLF5HqWF_wNwYv4HMR1lrKLfeRLn5ptIGw4,446
169
+ uncountable/types/inputs_t.py,sha256=0b3U77JcZT4hgUvbP_i-E5RoJbJnRxn3OKBqGWu32TM,2097
170
+ uncountable/types/integration_server.py,sha256=VonA8h8TGnVBiss5W8-K82lA01JQa7TLk0ubFo8iiBQ,364
171
+ uncountable/types/integration_server_t.py,sha256=37zyqeet54P9m6pxaZfLOgZCqqZA2dxJ5gl6NCoelQ0,1188
172
+ uncountable/types/job_definition.py,sha256=6BkLZrmTfIYh45XFGZ5HOYveued0YXvl17YTlXblXjw,1646
173
+ uncountable/types/job_definition_t.py,sha256=n8lwjNtt6eHg01yARRIgDiLO9W8ev5upb3qs2RPHZXg,7753
174
+ uncountable/types/outputs.py,sha256=I6zP2WHXg_jXgMqmuEJuJOlsjKjQGHjfs1JOwW9YxBM,260
175
+ uncountable/types/outputs_t.py,sha256=ZJhKKkksJ-K7iuuumCly9edU8TRv-eWol4PKG7XPo3E,734
176
+ uncountable/types/overrides.py,sha256=fOvj8P9K9ul8fnTwA--l140EWHuc1BFq8tXgtBkYld4,410
177
+ uncountable/types/overrides_t.py,sha256=WNKKHrZcO6ZzeZfEXEW0xCsGWjbmHeUddT-4qp81Y8o,1303
178
+ uncountable/types/permissions.py,sha256=F24reVRd-J3iRSif8BwMNUcDwxRluBrTre3mJ36HP90,276
179
+ uncountable/types/permissions_t.py,sha256=hmAUZryOdnkZS0BeFViH-6fJ4rVPtwJaZ1JLlL_aGl4,1589
180
+ uncountable/types/phases.py,sha256=Capx0Tbx52151tHWw8tdOT_NMKMOyHZhrNuGrhuBzfo,245
181
+ uncountable/types/phases_t.py,sha256=L4HsYZHw_PR79eBbMwluN-Cpvv1bZvep2Foe3ju3WP0,624
182
+ uncountable/types/post_base.py,sha256=nHqFw6U6ENxcuj_Y3VG-Sk1NEt4Tud2iBxPhRsJpQKM,258
183
+ uncountable/types/post_base_t.py,sha256=nZl7XQHc9cSnLgccaBZM93bcnSSjTlo2_TL40n-o7K0,734
184
+ uncountable/types/queued_job.py,sha256=TlQMf69foLfr134k00LvFEB4OuGAZHZJl9ro9UzVpaU,821
185
+ uncountable/types/queued_job_t.py,sha256=NyJSdn3VECk_EIONGq8_FXA7S2cJJmlPs32c8BAOEuY,3527
186
+ uncountable/types/recipe_identifiers.py,sha256=nqrubqofaeg_zV6vOrzqbiuX5tDUQYrGyvugpWX38mY,633
187
+ uncountable/types/recipe_identifiers_t.py,sha256=0L2xT9uqQCFr2F8VkAKdjsbQFp-CQ8-wKNn6UFoPcP4,2260
188
+ uncountable/types/recipe_inputs.py,sha256=dLqKvac-Ff3owutgvBD8Hc5KPoiu-6Zy22WOUJtAuus,330
189
+ uncountable/types/recipe_inputs_t.py,sha256=jZ4uFw20-87rBJswK0UYxDNp6AcHhug7nSm5-3HN0XA,710
190
+ uncountable/types/recipe_links.py,sha256=5E25kptfPIAd96RRlE9lbdRrWKkbLz21S5K_tJ4sKrA,322
191
+ uncountable/types/recipe_links_t.py,sha256=6igPp7IzbqJGmFJXrB1hbMGYrWkaqQ5yapXoKjj-G3w,1483
192
+ uncountable/types/recipe_metadata.py,sha256=98whijK1TSrvkk_5oumyb8312nZvb6nw7x4Op6jSJy8,420
193
+ uncountable/types/recipe_metadata_t.py,sha256=ORth4ae2SHtbASZmiVpMSZhE_-pNOqyzus-w7YM5YCw,1641
194
+ uncountable/types/recipe_output_metadata.py,sha256=SfG1IKRC0Sybp9v9kUjr7kTV_PO365I8W7jvgKZ9j60,301
195
+ uncountable/types/recipe_output_metadata_t.py,sha256=llf9O2vK6AFRva5hx0VdiKXT9XQ2iN-N25W_0Zlxp9g,723
196
+ uncountable/types/recipe_tags.py,sha256=tKIwHY677lZCxrmOk1bbuZQgDuf1n1cNyp6c5r1uRbo,270
197
+ uncountable/types/recipe_tags_t.py,sha256=7qi9m8NAq7BdocIBdYyMVArFnPJrwuX0B9qoqlJiwzM,670
198
+ uncountable/types/recipe_workflow_steps.py,sha256=fb55_sREdeZrtguIZOuy4ZcTLbRBNAxQ3A0oGbH8muA,950
199
+ uncountable/types/recipe_workflow_steps_t.py,sha256=dwjuFI6ncLBwr7Ufa-W26nrfF-BqZ_pKFIpKP05WqOo,3406
200
+ uncountable/types/recipes.py,sha256=6Z7bagYXX15kGlhYt_OFiYSD3lqFp4H0EquI1fUfYyk,286
201
+ uncountable/types/recipes_t.py,sha256=GBT56H34_pqAdeTgcye6ZNZLR1V47lG_S-R_uV-XUh8,652
202
+ uncountable/types/response.py,sha256=SJTwjTxZGItGJJYPZ_T1zTooEbtR5ZA8GT_cf8aXfn8,253
203
+ uncountable/types/response_t.py,sha256=I4lArMXf50SFWon_Tl9AJjqqrzvfeSXv_C-AKfnGcZM,646
204
+ uncountable/types/secret_retrieval.py,sha256=poY_nuZBIjNu64Wa0x5Ytsmh3OdAxps2kzuDgv1sa_8,571
205
+ uncountable/types/secret_retrieval_t.py,sha256=hcJRp2OLPd5m7twve63F8gloL8KFJiCtyJD17H6WiAc,2138
206
+ uncountable/types/units.py,sha256=yxuddayiE8cnzrjQiIsURisWc-Vm1F37uyS3fjM--Ao,254
207
+ uncountable/types/units_t.py,sha256=DUP2ydfWdPM8X4sBGOvm6g7CoZ1kqwpWidwSlWYQEek,643
208
+ uncountable/types/users.py,sha256=R-bFIh07mMl6HyxP8hKmlT-QMbBXZPZ7mVuOIeOlCsg,254
209
+ uncountable/types/users_t.py,sha256=rpwi31aZMyrNJgzUUPgo2lHAlYv82UKr5XGq1XmkrUA,666
210
+ uncountable/types/webhook_job.py,sha256=3LdsSMCNmZZrFwTHJpVR7XzIJiu2T2cbE-0ScwfLMBc,342
211
+ uncountable/types/webhook_job_t.py,sha256=BJvqdio9n93qhNw1aUWkU0WaGqXU_03qSzBM1gj3_9E,958
212
+ uncountable/types/workflows.py,sha256=sZhBDSzu85M0teTRiKNqd389oUK2tMcWGpKUlKIuSdY,332
213
+ uncountable/types/workflows_t.py,sha256=UCsCd_1-SHRZZljpQRxOuM74epKH2H5D2qfSNDzI2Ek,986
214
+ uncountable/types/api/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
215
+ uncountable/types/api/batch/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
216
+ uncountable/types/api/batch/execute_batch.py,sha256=jOjMcne7iEF7LP_dURjHzG0_0dLkW7FDKSKKyhi5OU4,1970
217
+ uncountable/types/api/batch/execute_batch_load_async.py,sha256=rxr2pvJ4w_2XnqzffX4Lu0JKB1s9AHZweSua-bvUK_A,1072
218
+ uncountable/types/api/chemical/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
219
+ uncountable/types/api/chemical/convert_chemical_formats.py,sha256=B1MT10IfFLapomSwzJyAKvyjrwKVDqEuESIhCJPJtgc,1778
220
+ uncountable/types/api/entity/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
221
+ uncountable/types/api/entity/create_entities.py,sha256=2MVtjfpegFwwUU0NGu-cpvgwusV-6B0zhCPWclXTEsc,1562
222
+ uncountable/types/api/entity/create_entity.py,sha256=cVEYcn3ao1vEiF7CiKd85OYBqqqd7ElwRyD_V5C_BHg,1647
223
+ uncountable/types/api/entity/get_entities_data.py,sha256=OUeBo0YkZmVTHT2EHAQt19rm2PU4OpJzOj3aCmZMw0Y,1433
224
+ uncountable/types/api/entity/grant_entity_permissions.py,sha256=Zx3FDHSjiBN_wRtmxbWSWdmT-CkzEoi2uoVLCIdS2Q8,1391
225
+ uncountable/types/api/entity/list_entities.py,sha256=1I6T6fjfolXx1lg8iRiCO5J0ieU0bdudPp31ZmMkXIQ,1895
226
+ uncountable/types/api/entity/lock_entity.py,sha256=cWRTNlXj6Ei1M0mHwfbhid7hQs4whCheUCOmf8PIGqw,1166
227
+ uncountable/types/api/entity/resolve_entity_ids.py,sha256=44B79L4erUB0G90WBGor0ZPs3XhdkuX7ZvgVF9uWB2M,1340
228
+ uncountable/types/api/entity/set_entity_field_values.py,sha256=ZYtRrsx0MWc0txC6yH2HtCONC5A0IolpqvwHm_YgirU,1179
229
+ uncountable/types/api/entity/set_values.py,sha256=2lANfjqPOcyxqDeISmzW0KghVbe8_i4QNkcLXzdAkag,1104
230
+ uncountable/types/api/entity/transition_entity_phase.py,sha256=HOFFjo4vEqxYTO_-ugFFIzI21llWAxXZ1m86ANrd8t4,2325
231
+ uncountable/types/api/entity/unlock_entity.py,sha256=D-EO1hQ5MckX_8D-pDgiOqMLCEV0rcjoCTNdqZUofNs,1129
232
+ uncountable/types/api/equipment/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
233
+ uncountable/types/api/equipment/associate_equipment_input.py,sha256=T10F9R5HaqEwqkUBDxxCRHqhWCX_ufHezKOgBuDYnEc,1176
234
+ uncountable/types/api/field_options/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
235
+ uncountable/types/api/field_options/upsert_field_options.py,sha256=7HOoqenKWU8r7u_M8FXM2WfPFD3_gpCuyI_tJG56C5w,1425
236
+ uncountable/types/api/files/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
237
+ uncountable/types/api/files/download_file.py,sha256=uk-GpdpuhC4Eng815c1LfTDBjPEdqVWKuCFGwJZmNf8,2208
238
+ uncountable/types/api/id_source/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
239
+ uncountable/types/api/id_source/list_id_source.py,sha256=rKNuf78xPMKzmwNErrSsAEikpQOfXc4HxKXZ8VNf6j4,1359
240
+ uncountable/types/api/id_source/match_id_source.py,sha256=9rA8IbFFZArWByFtXXFGmBNhX7g5URSRHmDa7GsvuLE,1306
241
+ uncountable/types/api/input_groups/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
242
+ uncountable/types/api/input_groups/get_input_group_names.py,sha256=bSEZZpWMLw-H433tIcfUMPsiC6y2Waw7_nLl_vVn5gY,1355
243
+ uncountable/types/api/inputs/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
244
+ uncountable/types/api/inputs/create_inputs.py,sha256=mhX7J19QyT93pN2MRePprm_RSmTSWynZE0zT-m25XjI,1969
245
+ uncountable/types/api/inputs/get_input_data.py,sha256=LGpeCzfwJg_HytTI-gr3Y9qXqdMheiiKTcB_oqCAs2g,2661
246
+ uncountable/types/api/inputs/get_input_names.py,sha256=ZUaIyUQRisaaLAl8X_VHqF4WqLacFhMwAFYZucGAPEc,1372
247
+ uncountable/types/api/inputs/get_inputs_data.py,sha256=nMgN_PE1AuKHnnYgMAwjYoWIQNjkvTyiiyt9G0xGJNc,2392
248
+ uncountable/types/api/inputs/set_input_attribute_values.py,sha256=aHZAEdV7YNao1nk_pwFXlAZ0W217eX9Fa7Uga3SX7LM,1570
249
+ uncountable/types/api/inputs/set_input_category.py,sha256=a2sV0pE_EsZd6DBS3ud2KLl4JhzrKFN5T2kHCNSaBf4,1138
250
+ uncountable/types/api/inputs/set_input_subcategories.py,sha256=y-Wttpmddpe7ps9OxsVe96x3t1R_p5h4xShJxI7i5MY,1175
251
+ uncountable/types/api/inputs/set_intermediate_type.py,sha256=8eodqt_J6OqmU4qyfbjgc43UrlG8xBfUEY-e9oRDFxI,1286
252
+ uncountable/types/api/material_families/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
253
+ uncountable/types/api/material_families/update_entity_material_families.py,sha256=UNKzPnwF7IjeaZFe8NwK4hwxyEe7Yd6v4p19yvf43-U,1577
254
+ uncountable/types/api/outputs/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
255
+ uncountable/types/api/outputs/get_output_data.py,sha256=Sg2gkAN9k9171eW1-5spsHKERgIFfPkX8mGe_t0ep2c,2703
256
+ uncountable/types/api/outputs/get_output_names.py,sha256=m4lSzpZF1g0CBtQBzOS0MH6hsuVOMs0FlJAKlTz6hW4,1356
257
+ uncountable/types/api/outputs/resolve_output_conditions.py,sha256=8Zs_CcCenDyypI3L0nEkVYx_fRJ-J7wq-J1sw5Ztass,2273
258
+ uncountable/types/api/permissions/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
259
+ uncountable/types/api/permissions/set_core_permissions.py,sha256=Kf5yt2IlwSqGpyEyIl1sTVO0wpdGEk984ojmK3-JwYk,3262
260
+ uncountable/types/api/project/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
261
+ uncountable/types/api/project/get_projects.py,sha256=DHThOC3XesjDPjle3LTW93ef6DTjrVKIK2AZcbv2_s0,1466
262
+ uncountable/types/api/project/get_projects_data.py,sha256=wp-mL40BNR9I1NXBXYVWlCGxLOFsT2T9B0aoFTYCuZA,1675
263
+ uncountable/types/api/recipe_links/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
264
+ uncountable/types/api/recipe_links/create_recipe_link.py,sha256=Z8WTy6SQPDt2zleRXhKzj2jS-R1QfLnQFg56XVctftQ,1368
265
+ uncountable/types/api/recipe_links/remove_recipe_link.py,sha256=HZQ15AqPjTqSEJjRY3L9RnU0T2EuzV4Wu7ilbeLhuDI,1354
266
+ uncountable/types/api/recipe_metadata/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
267
+ uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py,sha256=fW-6_vBIGa5Wx8JvEdpKb3orXD60DX_wOeHnmMPduc8,1550
268
+ uncountable/types/api/recipes/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
269
+ uncountable/types/api/recipes/add_recipe_to_project.py,sha256=vJL6DljCu4okNHvXJ5_uaBj0-QDEm9iTvVGMLYyDd2U,1061
270
+ uncountable/types/api/recipes/archive_recipes.py,sha256=07Rjd9kwh5pMpiMXNr9OfjOB4vYXeuLjQtBxrXkXC7o,1024
271
+ uncountable/types/api/recipes/associate_recipe_as_input.py,sha256=TtsAJRT9vRjnsIh0IvfFimA2hstZvgyn6rpaDIsDfK4,1194
272
+ uncountable/types/api/recipes/associate_recipe_as_lot.py,sha256=_4SgFfH-wFxW9Vevv9k3G3T10Uz8CMLjuiDEv1oT2So,1138
273
+ uncountable/types/api/recipes/clear_recipe_outputs.py,sha256=BfTQrV79UePkJ4HSSixV1AZovgVdIIIKK2OLJe1r8Dw,1082
274
+ uncountable/types/api/recipes/create_recipe.py,sha256=tVeQgikCWAwGtxpq2vLyXd5Aeqo_8Tde64x5GAOJl50,1472
275
+ uncountable/types/api/recipes/create_recipes.py,sha256=J1CBE13d8JaVpUxOftFg1Plo8RKa0vc-A2nHdO1yoj8,1862
276
+ uncountable/types/api/recipes/disassociate_recipe_as_input.py,sha256=zWUfwJlkgWexblqKCKCF5HWR40ynQ8rg_PPo2WPGISY,1106
277
+ uncountable/types/api/recipes/edit_recipe_inputs.py,sha256=NEK0PrM-SnGx95KcjpSWimi3xTrOMKO8BMURom08ppc,9837
278
+ uncountable/types/api/recipes/get_column_calculation_values.py,sha256=9eqURjD2Mwm2lyV1bJIq66Z7a3enLhhx_scZBt4SYYc,1671
279
+ uncountable/types/api/recipes/get_curve.py,sha256=C-elYAKcBw7P5bWwN-8p_SWj15l5aBJrKNR8yjphZ-Q,1085
280
+ uncountable/types/api/recipes/get_recipe_calculations.py,sha256=iBmkhKC1qBFxuPPziM3LD6tGsdsN_xb4NcUaJwF6cHU,1679
281
+ uncountable/types/api/recipes/get_recipe_links.py,sha256=jYygHnuzTzuc_H8AG72Ihrb38kEhtfbVNlb4b7elLfI,1149
282
+ uncountable/types/api/recipes/get_recipe_names.py,sha256=HXv39OI6GRedSAKOhurEQEY_djaxvJcxlTTWghLgA5I,1274
283
+ uncountable/types/api/recipes/get_recipe_output_metadata.py,sha256=7lF2cnRsBLPDSsjlNIy-aJ4Dao5-qe7WrNaf4XNmq74,1703
284
+ uncountable/types/api/recipes/get_recipes_data.py,sha256=srZBvl8dCdoo7yil0D1ohAxnbMaCS28ctCH93NaYQd0,6099
285
+ uncountable/types/api/recipes/lock_recipes.py,sha256=8z_g5lokbzkATZvN5Vpvx6uXS3xPZN77AP5OhHPsGhc,1581
286
+ uncountable/types/api/recipes/remove_recipe_from_project.py,sha256=_KWbYnMMEOZAaC_jdXZvCEYXJaVhs3x27ZWlJbq3CV4,1076
287
+ uncountable/types/api/recipes/set_recipe_inputs.py,sha256=RvWj2SOtcuy_msp9pUjz20O3Y_EjEMKd48o-RhpCDNE,1583
288
+ uncountable/types/api/recipes/set_recipe_metadata.py,sha256=R4GVqpMJdJuoSXsJx1e4vhmWqKKTPMyPPEArwV45crI,1104
289
+ uncountable/types/api/recipes/set_recipe_output_annotations.py,sha256=yczFBmuB0grzNWsnXspCPUsDA608M9wGkJ2dugyxG4U,3526
290
+ uncountable/types/api/recipes/set_recipe_output_file.py,sha256=W_qvEkZxzDczwU9EZ7zKyBmLGnO6GFqMsJ3zwXCnpA0,1502
291
+ uncountable/types/api/recipes/set_recipe_outputs.py,sha256=hNeV3hwPw3fT-pnhe17fPPgLH7pfpva0kjpt2NTt55E,2104
292
+ uncountable/types/api/recipes/set_recipe_tags.py,sha256=HS5GG-nTy0vTNTANG-ROawku0VhzOs0hIzGKfRFefYY,3098
293
+ uncountable/types/api/recipes/unarchive_recipes.py,sha256=G0jYuarNZLmTCQ6m5_ZAUwBl4M8_cqKRlP-jMJp-Rcw,1000
294
+ uncountable/types/api/recipes/unlock_recipes.py,sha256=QFvz13eJipWQlIRrqOybnIPeJxfR4yZM8yIr841jd28,1258
295
+ uncountable/types/api/triggers/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
296
+ uncountable/types/api/triggers/run_trigger.py,sha256=diX1ix_5hkti1F1uYoZhP5iyc6GHAU5coKgqq5syLhI,1059
297
+ uncountable/types/api/uploader/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
298
+ uncountable/types/api/uploader/invoke_uploader.py,sha256=-loZzBihKqx63eP-f5RuV1mu6tgkRTZmIc545kklZLk,1273
299
+ UncountablePythonSDK-0.0.95.dist-info/METADATA,sha256=_aARUIB5Kl7b_t54KZ_V2VEDHcexJewGDsVKgoBOm64,2114
300
+ UncountablePythonSDK-0.0.95.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
301
+ UncountablePythonSDK-0.0.95.dist-info/top_level.txt,sha256=1UVGjAU-6hJY9qw2iJ7nCBeEwZ793AEN5ZfKX9A1uj4,31
302
+ UncountablePythonSDK-0.0.95.dist-info/RECORD,,
@@ -96,7 +96,7 @@ def is_missing(field_type: typing.Any) -> bool:
96
96
  return not (len(args) == 0 or args[0] is not MissingSentryType)
97
97
 
98
98
 
99
- def _invoke_tuple_parsers(
99
+ def _invoke_tuple_parsers[T](
100
100
  tuple_type: type[T],
101
101
  arg_parsers: typing.Sequence[typing.Callable[[typing.Any], object]],
102
102
  has_ellipsis: bool,
@@ -133,7 +133,7 @@ def _invoke_fallback_parsers(
133
133
  ) from ExceptionGroup("Fallback Parser Exception", exceptions)
134
134
 
135
135
 
136
- def _invoke_membership_parser(
136
+ def _invoke_membership_parser[T](
137
137
  expected_values: set[T],
138
138
  value: typing.Any,
139
139
  ) -> T:
@@ -148,7 +148,7 @@ def _invoke_membership_parser(
148
148
  raise ValueError(f"Expected value from {expected_values} but got value {value}")
149
149
 
150
150
 
151
- def _build_parser_discriminated_union(
151
+ def _build_parser_discriminated_union[T](
152
152
  context: ParserContext,
153
153
  discriminator: str,
154
154
  discriminator_map: dict[str, ParserFunction[T]],
@@ -170,7 +170,7 @@ def _build_parser_discriminated_union(
170
170
  return parse
171
171
 
172
172
 
173
- def _build_parser_inner(
173
+ def _build_parser_inner[T](
174
174
  parsed_type: type[T],
175
175
  context: ParserContext,
176
176
  ) -> ParserFunction[T]:
@@ -368,7 +368,7 @@ def _build_parser_inner(
368
368
  raise ValueError(f"Unhandled type {parsed_type}")
369
369
 
370
370
 
371
- def _build_parser_dataclass(
371
+ def _build_parser_dataclass[T](
372
372
  parsed_type: type[T],
373
373
  context: ParserContext,
374
374
  ) -> ParserFunction[T]:
@@ -479,7 +479,7 @@ def _build_parser_dataclass(
479
479
  _CACHE_MAP: dict[ParserOptions, ParserCache] = defaultdict(ParserCache)
480
480
 
481
481
 
482
- def build_parser(
482
+ def build_parser[T](
483
483
  parsed_type: type[T],
484
484
  options: ParserOptions,
485
485
  ) -> ParserFunction[T]:
@@ -501,7 +501,7 @@ def build_parser(
501
501
  return built_parser
502
502
 
503
503
 
504
- class CachedParser(typing.Generic[T]):
504
+ class CachedParser[T]:
505
505
  def __init__(
506
506
  self,
507
507
  args: type[T],
@@ -1,6 +1,7 @@
1
1
  from io import BytesIO
2
2
 
3
3
  from boto3.session import Session
4
+ from mypy_boto3_s3.service_resource import Bucket
4
5
 
5
6
  from pkgs.filesystem_utils.file_type_utils import (
6
7
  FileObjectData,
@@ -37,7 +38,7 @@ class S3Session(FileSystemSession):
37
38
  aws_session_token=self.config.session_token,
38
39
  )
39
40
 
40
- self.bucket = s3_resource.Bucket(self.config.bucket_name)
41
+ self.bucket: Bucket | None = s3_resource.Bucket(self.config.bucket_name)
41
42
 
42
43
  def __enter__(self) -> "S3Session":
43
44
  self.start()
@@ -16,7 +16,7 @@ class SerialBase:
16
16
  from_decorator: bool = False
17
17
 
18
18
 
19
- def get_serial_annotation(parsed_type: type[T]) -> SerialBase | None:
19
+ def get_serial_annotation[T](parsed_type: type[T]) -> SerialBase | None:
20
20
  if not hasattr(parsed_type, "__metadata__"):
21
21
  return None
22
22
  metadata = parsed_type.__metadata__ # type:ignore[attr-defined]
@@ -28,7 +28,7 @@ def get_serial_annotation(parsed_type: type[T]) -> SerialBase | None:
28
28
  return serial
29
29
 
30
30
 
31
- class SerialInspector(typing.Generic[T]):
31
+ class SerialInspector[T]:
32
32
  def __init__(self, parsed_type: type[T], serial_base: SerialBase) -> None:
33
33
  self._parsed_type = parsed_type
34
34
  self._serial_base = serial_base
@@ -53,7 +53,7 @@ class SerialInspector(typing.Generic[T]):
53
53
  return self._serial_base.is_dynamic_allowed
54
54
 
55
55
 
56
- def unwrap_annotated(parsed_type: type[T]) -> type[T]:
56
+ def unwrap_annotated[T](parsed_type: type[T]) -> type[T]:
57
57
  """
58
58
  If the type is an annotated type then return the origin of it.
59
59
  Otherwise return the original type.
@@ -26,5 +26,5 @@ MISSING_SENTRY = MissingSentryType()
26
26
  MissingType = Union[MissingSentryType, ClassT]
27
27
 
28
28
 
29
- def coalesce_missing_sentry(value: MissingType[ClassT]) -> ClassT | None:
29
+ def coalesce_missing_sentry[ClassT](value: MissingType[ClassT]) -> ClassT | None:
30
30
  return None if isinstance(value, MissingSentryType) else value
@@ -26,7 +26,7 @@ def serial_alias_annotation(
26
26
  )
27
27
 
28
28
 
29
- def _get_serial_alias(parsed_type: type[T]) -> _SerialAlias | None:
29
+ def _get_serial_alias[T](parsed_type: type[T]) -> _SerialAlias | None:
30
30
  serial = get_serial_annotation(parsed_type)
31
31
  if not isinstance(serial, _SerialAlias):
32
32
  return None
@@ -39,7 +39,7 @@ class SerialAliasInspector(SerialInspector[T]):
39
39
  self._serial_alias = serial_alias
40
40
 
41
41
 
42
- def get_serial_alias_data(parsed_type: type[T]) -> SerialAliasInspector[T] | None:
42
+ def get_serial_alias_data[T](parsed_type: type[T]) -> SerialAliasInspector[T] | None:
43
43
  serial = _get_serial_alias(parsed_type)
44
44
  if serial is None:
45
45
  return None
@@ -119,7 +119,7 @@ def get_merged_serial_class_data(type_class: type[Any]) -> _SerialClassData | No
119
119
  return base_class_data
120
120
 
121
121
 
122
- def get_serial_class_data(
122
+ def get_serial_class_data[_ClassT](
123
123
  type_class: type[_ClassT],
124
124
  ) -> SerialClassDataInspector[_ClassT]:
125
125
  return SerialClassDataInspector(
@@ -6,7 +6,7 @@ from .serial_class import get_merged_serial_class_data
6
6
  T = typing.TypeVar("T")
7
7
 
8
8
 
9
- def get_serial_data(parsed_type: type[T]) -> SerialInspector[T] | None:
9
+ def get_serial_data[T](parsed_type: type[T]) -> SerialInspector[T] | None:
10
10
  serial = get_serial_annotation(parsed_type)
11
11
  if serial is None:
12
12
  serial = get_merged_serial_class_data(parsed_type)
@@ -6,7 +6,7 @@ from .annotation import SerialBase, SerialInspector, get_serial_annotation
6
6
  T = typing.TypeVar("T")
7
7
 
8
8
 
9
- class IdentityHashWrapper(typing.Generic[T]):
9
+ class IdentityHashWrapper[T]:
10
10
  """This allows unhashable types to be used in the SerialUnion, like dict.
11
11
  Since we have only one copy of the types themselves, we rely on
12
12
  object identity for the hashing."""
@@ -49,7 +49,7 @@ def serial_union_annotation(
49
49
  )
50
50
 
51
51
 
52
- def _get_serial_union(parsed_type: type[T]) -> _SerialUnion | None:
52
+ def _get_serial_union[T](parsed_type: type[T]) -> _SerialUnion | None:
53
53
  serial = get_serial_annotation(parsed_type)
54
54
  if not isinstance(serial, _SerialUnion):
55
55
  return None
@@ -76,7 +76,7 @@ class SerialClassInspector(SerialInspector[T]):
76
76
  return self._serial_union.discriminator_map.inner
77
77
 
78
78
 
79
- def get_serial_union_data(parsed_type: type[T]) -> SerialClassInspector[T] | None:
79
+ def get_serial_union_data[T](parsed_type: type[T]) -> SerialClassInspector[T] | None:
80
80
  serial = _get_serial_union(parsed_type)
81
81
  if serial is None:
82
82
  return None
@@ -0,0 +1,3 @@
1
+ import os
2
+
3
+ USE_FASTJSON: bool = os.environ.get("USE_FASTJSON", "false").lower() == "true"
@@ -12,7 +12,6 @@ from typing import (
12
12
  Any,
13
13
  ClassVar,
14
14
  Protocol,
15
- TypeVar,
16
15
  Union,
17
16
  overload,
18
17
  )
@@ -24,6 +23,7 @@ from pkgs.serialization import (
24
23
  get_serial_class_data,
25
24
  )
26
25
 
26
+ from ._env_flags import USE_FASTJSON
27
27
  from ._get_type_for_serialization import SerializationType, get_serialization_type
28
28
  from .dataclasses import iterate_fields
29
29
 
@@ -34,14 +34,12 @@ if TYPE_CHECKING:
34
34
  else:
35
35
  JsonValue = Union[JsonScalar, dict[str, Any], list[Any]]
36
36
 
37
- T = TypeVar("T")
38
-
39
37
 
40
38
  class Dataclass(Protocol):
41
39
  __dataclass_fields__: ClassVar[dict] # type: ignore[type-arg,unused-ignore]
42
40
 
43
41
 
44
- def identity(x: T) -> T:
42
+ def identity[T](x: T) -> T:
45
43
  return x
46
44
 
47
45
 
@@ -112,7 +110,9 @@ def _get_dataclass_conversion_lookups(dataclass_type: Any) -> DataclassConversio
112
110
  if scd.has_to_string_value(key):
113
111
  value_conversion_functions[key] = _to_string_value
114
112
  elif scd.has_unconverted_value(key):
115
- value_conversion_functions[key] = identity
113
+ value_conversion_functions[key] = (
114
+ serialize_for_storage if USE_FASTJSON else identity
115
+ )
116
116
  else:
117
117
  value_conversion_functions[key] = serialize_for_api
118
118
 
@@ -6,7 +6,6 @@ import os
6
6
  import sys
7
7
  from collections import defaultdict
8
8
  from dataclasses import dataclass
9
- from typing import TypeVar
10
9
 
11
10
  from main.base.types import actions_registry_t
12
11
  from pkgs.type_spec import builder
@@ -22,9 +21,6 @@ key_short_description = "short_description"
22
21
  key_description = "description"
23
22
 
24
23
 
25
- TypeT = TypeVar("TypeT")
26
-
27
-
28
24
  class InvalidSpecException(Exception):
29
25
  pass
30
26