UncountablePythonSDK 0.0.105__tar.gz → 0.0.109__tar.gz

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 (313) hide show
  1. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/.github/workflows/publish.yml +1 -1
  2. {uncountablepythonsdk-0.0.105/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.109}/PKG-INFO +2 -2
  3. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109/UncountablePythonSDK.egg-info}/PKG-INFO +2 -2
  4. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/docs/requirements.txt +2 -2
  5. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/argument_parser/argument_parser.py +8 -8
  6. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/filesystem_utils/_gdrive_session.py +1 -1
  7. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/serialization/annotation.py +3 -3
  8. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/serialization/missing_sentry.py +1 -1
  9. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/serialization/serial_alias.py +2 -2
  10. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/serialization/serial_class.py +1 -12
  11. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/serialization/serial_generic.py +1 -1
  12. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/serialization/serial_union.py +3 -3
  13. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/serialization_util/serialization_helpers.py +4 -1
  14. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/config.py +5 -2
  15. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/cross_output_links.py +1 -1
  16. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/emit_open_api_util.py +3 -3
  17. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/emit_python.py +1 -9
  18. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/type_info/emit_type_info.py +1 -1
  19. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/util.py +5 -3
  20. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/datastore/datastore_sqlite.py +1 -1
  21. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/entity/lookup_entity.py +0 -1
  22. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/add_time_series_data.py +0 -1
  23. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/edit_recipe_inputs.py +0 -2
  24. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/get_recipe_links.py +0 -1
  25. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/lock_recipes.py +0 -1
  26. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/set_recipe_outputs.py +0 -1
  27. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/unlock_recipes.py +0 -1
  28. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/client_config_t.py +0 -1
  29. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/entity_t.py +2 -2
  30. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/field_values.py +3 -0
  31. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/field_values_t.py +40 -3
  32. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/generic_upload_t.py +0 -1
  33. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/job_definition_t.py +0 -2
  34. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/recipe_workflow_steps_t.py +0 -1
  35. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/response_t.py +0 -1
  36. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/.github/workflows/documentation.yml +0 -0
  37. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/.gitignore +0 -0
  38. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/README.md +0 -0
  39. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/UncountablePythonSDK.egg-info/SOURCES.txt +0 -0
  40. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
  41. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/UncountablePythonSDK.egg-info/requires.txt +0 -0
  42. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
  43. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/docs/.gitignore +0 -0
  44. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/docs/conf.py +0 -0
  45. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/docs/index.md +0 -0
  46. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/docs/justfile +0 -0
  47. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/docs/quickstart.md +0 -0
  48. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/docs/static/favicons/android-chrome-192x192.png +0 -0
  49. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/docs/static/favicons/android-chrome-512x512.png +0 -0
  50. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/docs/static/favicons/apple-touch-icon.png +0 -0
  51. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/docs/static/favicons/browserconfig.xml +0 -0
  52. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/docs/static/favicons/favicon-16x16.png +0 -0
  53. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/docs/static/favicons/favicon-32x32.png +0 -0
  54. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/docs/static/favicons/manifest.json +0 -0
  55. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/docs/static/favicons/mstile-150x150.png +0 -0
  56. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/docs/static/favicons/safari-pinned-tab.svg +0 -0
  57. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/docs/static/logo_blue.png +0 -0
  58. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/examples/async_batch.py +0 -0
  59. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/examples/create_entity.py +0 -0
  60. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/examples/download_files.py +0 -0
  61. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/examples/edit_recipe_inputs.py +0 -0
  62. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/examples/integration-server/jobs/materials_auto/example_cron.py +0 -0
  63. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/examples/integration-server/jobs/materials_auto/example_wh.py +0 -0
  64. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/examples/integration-server/jobs/materials_auto/profile.yaml +0 -0
  65. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/examples/integration-server/pyproject.toml +0 -0
  66. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/examples/invoke_uploader.py +0 -0
  67. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/examples/set_recipe_metadata_file.py +0 -0
  68. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/examples/set_recipe_output_file_sdk.py +0 -0
  69. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/examples/upload_files.py +0 -0
  70. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/__init__.py +0 -0
  71. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/argument_parser/__init__.py +0 -0
  72. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/argument_parser/_is_enum.py +0 -0
  73. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/argument_parser/_is_namedtuple.py +0 -0
  74. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/argument_parser/case_convert.py +0 -0
  75. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/filesystem_utils/__init__.py +0 -0
  76. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/filesystem_utils/_blob_session.py +0 -0
  77. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/filesystem_utils/_local_session.py +0 -0
  78. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/filesystem_utils/_s3_session.py +0 -0
  79. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/filesystem_utils/_sftp_session.py +0 -0
  80. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/filesystem_utils/file_type_utils.py +0 -0
  81. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/filesystem_utils/filesystem_session.py +0 -0
  82. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/py.typed +0 -0
  83. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/serialization/__init__.py +0 -0
  84. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/serialization/opaque_key.py +0 -0
  85. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/serialization/yaml.py +0 -0
  86. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/serialization_util/__init__.py +0 -0
  87. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
  88. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/serialization_util/convert_to_snakecase.py +0 -0
  89. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/serialization_util/dataclasses.py +0 -0
  90. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/strenum_compat/__init__.py +0 -0
  91. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/strenum_compat/strenum_compat.py +0 -0
  92. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/__init__.py +0 -0
  93. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/__main__.py +0 -0
  94. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/actions_registry/__init__.py +0 -0
  95. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/actions_registry/__main__.py +0 -0
  96. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
  97. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/builder.py +0 -0
  98. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/emit_io_ts.py +0 -0
  99. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/emit_open_api.py +0 -0
  100. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/emit_typescript.py +0 -0
  101. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/emit_typescript_util.py +0 -0
  102. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/load_types.py +0 -0
  103. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/open_api_util.py +0 -0
  104. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/parts/base.py.prepart +0 -0
  105. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/parts/base.ts.prepart +0 -0
  106. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/test.py +0 -0
  107. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/type_info/__main__.py +0 -0
  108. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/value_spec/__init__.py +0 -0
  109. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/value_spec/__main__.py +0 -0
  110. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/value_spec/convert_type.py +0 -0
  111. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/value_spec/emit_python.py +0 -0
  112. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pkgs/type_spec/value_spec/types.py +0 -0
  113. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/pyproject.toml +0 -0
  114. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/setup.cfg +0 -0
  115. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/__init__.py +0 -0
  116. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/core/__init__.py +0 -0
  117. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/core/async_batch.py +0 -0
  118. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/core/client.py +0 -0
  119. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/core/environment.py +0 -0
  120. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/core/file_upload.py +0 -0
  121. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/core/types.py +0 -0
  122. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/__init__.py +0 -0
  123. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/cli.py +0 -0
  124. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/construct_client.py +0 -0
  125. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/cron.py +0 -0
  126. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/db/__init__.py +0 -0
  127. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/db/connect.py +0 -0
  128. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/db/session.py +0 -0
  129. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/entrypoint.py +0 -0
  130. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/executors/__init__.py +0 -0
  131. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/executors/executors.py +0 -0
  132. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/executors/generic_upload_executor.py +0 -0
  133. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/executors/script_executor.py +0 -0
  134. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/job.py +0 -0
  135. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/__init__.py +0 -0
  136. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/command_server/__init__.py +0 -0
  137. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/command_server/command_client.py +0 -0
  138. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/command_server/command_server.py +0 -0
  139. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
  140. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/command_server/protocol/command_server.proto +0 -0
  141. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +0 -0
  142. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +0 -0
  143. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +0 -0
  144. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/command_server/types.py +0 -0
  145. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/datastore/__init__.py +0 -0
  146. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/datastore/interface.py +0 -0
  147. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/datastore/model.py +0 -0
  148. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/job_scheduler.py +0 -0
  149. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/queue_runner.py +0 -0
  150. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/types.py +0 -0
  151. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/queue_runner/worker.py +0 -0
  152. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/scan_profiles.py +0 -0
  153. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/scheduler.py +0 -0
  154. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/secret_retrieval/__init__.py +0 -0
  155. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/secret_retrieval/retrieve_secret.py +0 -0
  156. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/server.py +0 -0
  157. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/telemetry.py +0 -0
  158. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/integration/webhook_server/entrypoint.py +0 -0
  159. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/py.typed +0 -0
  160. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/__init__.py +0 -0
  161. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/__init__.py +0 -0
  162. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/batch/__init__.py +0 -0
  163. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/batch/execute_batch.py +0 -0
  164. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
  165. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/chemical/__init__.py +0 -0
  166. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
  167. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/entity/__init__.py +0 -0
  168. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/entity/create_entities.py +0 -0
  169. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/entity/create_entity.py +0 -0
  170. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/entity/create_or_update_entity.py +0 -0
  171. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/entity/get_entities_data.py +0 -0
  172. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/entity/grant_entity_permissions.py +0 -0
  173. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/entity/list_entities.py +0 -0
  174. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/entity/lock_entity.py +0 -0
  175. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
  176. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/entity/set_entity_field_values.py +0 -0
  177. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/entity/set_values.py +0 -0
  178. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
  179. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/entity/unlock_entity.py +0 -0
  180. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/equipment/__init__.py +0 -0
  181. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/equipment/associate_equipment_input.py +0 -0
  182. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/field_options/__init__.py +0 -0
  183. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/field_options/upsert_field_options.py +0 -0
  184. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/files/__init__.py +0 -0
  185. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/files/download_file.py +0 -0
  186. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/id_source/__init__.py +0 -0
  187. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/id_source/list_id_source.py +0 -0
  188. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/id_source/match_id_source.py +0 -0
  189. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/input_groups/__init__.py +0 -0
  190. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
  191. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/inputs/__init__.py +0 -0
  192. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/inputs/create_inputs.py +0 -0
  193. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/inputs/get_input_data.py +0 -0
  194. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/inputs/get_input_names.py +0 -0
  195. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
  196. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
  197. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/inputs/set_input_category.py +0 -0
  198. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/inputs/set_input_subcategories.py +0 -0
  199. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/inputs/set_intermediate_type.py +0 -0
  200. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/material_families/__init__.py +0 -0
  201. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/material_families/update_entity_material_families.py +0 -0
  202. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/outputs/__init__.py +0 -0
  203. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/outputs/get_output_data.py +0 -0
  204. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/outputs/get_output_names.py +0 -0
  205. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
  206. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/permissions/__init__.py +0 -0
  207. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
  208. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/project/__init__.py +0 -0
  209. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/project/get_projects.py +0 -0
  210. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/project/get_projects_data.py +0 -0
  211. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipe_links/__init__.py +0 -0
  212. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
  213. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipe_links/remove_recipe_link.py +0 -0
  214. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
  215. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
  216. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/__init__.py +0 -0
  217. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/add_recipe_to_project.py +0 -0
  218. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/archive_recipes.py +0 -0
  219. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/associate_recipe_as_input.py +0 -0
  220. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
  221. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/clear_recipe_outputs.py +0 -0
  222. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/create_recipe.py +0 -0
  223. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/create_recipes.py +0 -0
  224. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
  225. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/get_column_calculation_values.py +0 -0
  226. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/get_curve.py +0 -0
  227. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
  228. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
  229. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
  230. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/get_recipes_data.py +0 -0
  231. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/remove_recipe_from_project.py +0 -0
  232. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
  233. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
  234. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/set_recipe_output_annotations.py +0 -0
  235. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/set_recipe_output_file.py +0 -0
  236. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
  237. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/recipes/unarchive_recipes.py +0 -0
  238. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/triggers/__init__.py +0 -0
  239. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/triggers/run_trigger.py +0 -0
  240. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/uploader/__init__.py +0 -0
  241. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/api/uploader/invoke_uploader.py +0 -0
  242. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/async_batch.py +0 -0
  243. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/async_batch_processor.py +0 -0
  244. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/async_batch_t.py +0 -0
  245. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/async_jobs.py +0 -0
  246. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/async_jobs_t.py +0 -0
  247. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/auth_retrieval.py +0 -0
  248. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/auth_retrieval_t.py +0 -0
  249. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/base.py +0 -0
  250. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/base_t.py +0 -0
  251. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/calculations.py +0 -0
  252. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/calculations_t.py +0 -0
  253. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/chemical_structure.py +0 -0
  254. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/chemical_structure_t.py +0 -0
  255. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/client_base.py +0 -0
  256. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/client_config.py +0 -0
  257. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/curves.py +0 -0
  258. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/curves_t.py +0 -0
  259. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/entity.py +0 -0
  260. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/experiment_groups.py +0 -0
  261. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/experiment_groups_t.py +0 -0
  262. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/fields.py +0 -0
  263. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/fields_t.py +0 -0
  264. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/generic_upload.py +0 -0
  265. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/id_source.py +0 -0
  266. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/id_source_t.py +0 -0
  267. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/identifier.py +0 -0
  268. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/identifier_t.py +0 -0
  269. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/input_attributes.py +0 -0
  270. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/input_attributes_t.py +0 -0
  271. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/inputs.py +0 -0
  272. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/inputs_t.py +0 -0
  273. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/integration_server.py +0 -0
  274. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/integration_server_t.py +0 -0
  275. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/job_definition.py +0 -0
  276. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/outputs.py +0 -0
  277. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/outputs_t.py +0 -0
  278. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/overrides.py +0 -0
  279. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/overrides_t.py +0 -0
  280. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/permissions.py +0 -0
  281. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/permissions_t.py +0 -0
  282. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/phases.py +0 -0
  283. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/phases_t.py +0 -0
  284. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/post_base.py +0 -0
  285. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/post_base_t.py +0 -0
  286. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/queued_job.py +0 -0
  287. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/queued_job_t.py +0 -0
  288. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/recipe_identifiers.py +0 -0
  289. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/recipe_identifiers_t.py +0 -0
  290. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/recipe_inputs.py +0 -0
  291. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/recipe_inputs_t.py +0 -0
  292. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/recipe_links.py +0 -0
  293. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/recipe_links_t.py +0 -0
  294. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/recipe_metadata.py +0 -0
  295. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/recipe_metadata_t.py +0 -0
  296. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/recipe_output_metadata.py +0 -0
  297. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/recipe_output_metadata_t.py +0 -0
  298. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/recipe_tags.py +0 -0
  299. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/recipe_tags_t.py +0 -0
  300. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/recipe_workflow_steps.py +0 -0
  301. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/recipes.py +0 -0
  302. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/recipes_t.py +0 -0
  303. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/response.py +0 -0
  304. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/secret_retrieval.py +0 -0
  305. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/secret_retrieval_t.py +0 -0
  306. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/units.py +0 -0
  307. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/units_t.py +0 -0
  308. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/users.py +0 -0
  309. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/users_t.py +0 -0
  310. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/webhook_job.py +0 -0
  311. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/webhook_job_t.py +0 -0
  312. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/workflows.py +0 -0
  313. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.109}/uncountable/types/workflows_t.py +0 -0
@@ -56,4 +56,4 @@ jobs:
56
56
  name: package-distributions
57
57
  path: dist/
58
58
  - name: Publish package distributions to PyPI
59
- uses: pypa/gh-action-pypi-publish@fb9fc6a4e67ca27a7a76b17bbf90be83c2d3c716
59
+ uses: pypa/gh-action-pypi-publish@db8f07d3871a0a180efa06b95d467625c19d5d5f
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.105
3
+ Version: 0.0.109
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
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.105
3
+ Version: 0.0.109
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
@@ -1,8 +1,8 @@
1
1
  furo==2024.8.6
2
2
  myst-parser==4.0.0
3
- sphinx-autoapi==3.5.0
3
+ sphinx-autoapi==3.6.0
4
4
  sphinx-copybutton==0.5.2
5
- Sphinx==8.1.3
5
+ Sphinx==8.2.0
6
6
  sphinx_design==0.6.1
7
7
  sphinx-favicon==1.0.1
8
8
  astroid==3.3.8
@@ -115,7 +115,7 @@ def _get_field_default(
115
115
  return field.default_factory()
116
116
 
117
117
 
118
- def _invoke_tuple_parsers[T](
118
+ def _invoke_tuple_parsers(
119
119
  tuple_type: type[T],
120
120
  arg_parsers: typing.Sequence[typing.Callable[[typing.Any], object]],
121
121
  has_ellipsis: bool,
@@ -152,7 +152,7 @@ def _invoke_fallback_parsers(
152
152
  ) from ExceptionGroup("Fallback Parser Exception", exceptions)
153
153
 
154
154
 
155
- def _invoke_membership_parser[T](
155
+ def _invoke_membership_parser(
156
156
  expected_values: set[T],
157
157
  value: typing.Any,
158
158
  ) -> T:
@@ -167,7 +167,7 @@ def _invoke_membership_parser[T](
167
167
  raise ValueError(f"Expected value from {expected_values} but got value {value}")
168
168
 
169
169
 
170
- def _build_parser_discriminated_union[T](
170
+ def _build_parser_discriminated_union(
171
171
  context: ParserContext,
172
172
  discriminator: str,
173
173
  discriminator_map: dict[str, ParserFunction[T]],
@@ -189,7 +189,7 @@ def _build_parser_discriminated_union[T](
189
189
  return parse
190
190
 
191
191
 
192
- def _build_parser_inner[T](
192
+ def _build_parser_inner(
193
193
  parsed_type: type[T],
194
194
  context: ParserContext,
195
195
  ) -> ParserFunction[T]:
@@ -399,7 +399,7 @@ def _build_parser_inner[T](
399
399
  raise ValueError(f"Unhandled type {parsed_type}/{origin}")
400
400
 
401
401
 
402
- def _build_parser_dataclass[T](
402
+ def _build_parser_dataclass(
403
403
  parsed_type: type[T],
404
404
  context: ParserContext,
405
405
  ) -> ParserFunction[T]:
@@ -515,7 +515,7 @@ def _build_parser_dataclass[T](
515
515
  _CACHE_MAP: dict[ParserOptions, ParserCache] = defaultdict(ParserCache)
516
516
 
517
517
 
518
- def build_parser[T](
518
+ def build_parser(
519
519
  parsed_type: type[T],
520
520
  options: ParserOptions,
521
521
  ) -> ParserFunction[T]:
@@ -537,7 +537,7 @@ def build_parser[T](
537
537
  return built_parser
538
538
 
539
539
 
540
- class ParserBase[T](ABC):
540
+ class ParserBase(ABC, typing.Generic[T]):
541
541
  def parse_from_encoding(
542
542
  self,
543
543
  args: typing.Any,
@@ -568,7 +568,7 @@ class ParserBase[T](ABC):
568
568
  return self.parse_storage(yaml.safe_load(fp))
569
569
 
570
570
 
571
- class CachedParser[T](ParserBase[T]):
571
+ class CachedParser(ParserBase[T], typing.Generic[T]):
572
572
  def __init__(
573
573
  self,
574
574
  args: type[T],
@@ -63,7 +63,7 @@ def download_gdrive_file(
63
63
  downloader = MediaIoBaseDownload(file_handler, file_request)
64
64
  download_complete = False
65
65
  while not download_complete:
66
- status, download_complete = downloader.next_chunk()
66
+ _status, download_complete = downloader.next_chunk()
67
67
 
68
68
  file_handler.seek(0)
69
69
  file_data = file_handler.read()
@@ -16,7 +16,7 @@ class SerialBase:
16
16
  from_decorator: bool = False
17
17
 
18
18
 
19
- def get_serial_annotation[T](parsed_type: type[T]) -> SerialBase | None:
19
+ def get_serial_annotation(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[T](parsed_type: type[T]) -> SerialBase | None:
28
28
  return serial
29
29
 
30
30
 
31
- class SerialInspector[T]:
31
+ class SerialInspector(typing.Generic[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[T]:
53
53
  return self._serial_base.is_dynamic_allowed
54
54
 
55
55
 
56
- def unwrap_annotated[T](parsed_type: type[T]) -> type[T]:
56
+ def unwrap_annotated(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[ClassT](value: MissingType[ClassT]) -> ClassT | None:
29
+ def coalesce_missing_sentry(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[T](parsed_type: type[T]) -> _SerialAlias | None:
29
+ def _get_serial_alias(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[T](parsed_type: type[T]) -> SerialAliasInspector[T] | None:
42
+ def get_serial_alias_data(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
@@ -17,7 +17,6 @@ class _SerialClassData(SerialBase):
17
17
  to_string_values: set[str] = dataclasses.field(default_factory=set)
18
18
  parse_require: set[str] = dataclasses.field(default_factory=set)
19
19
  named_type_path: str | None = None
20
- explicit_defaults: set[str] = dataclasses.field(default_factory=set)
21
20
 
22
21
 
23
22
  EMPTY_SERIAL_CLASS_DATA = _SerialClassData()
@@ -31,7 +30,6 @@ def serial_class(
31
30
  parse_require: set[str] | None = None,
32
31
  named_type_path: str | None = None,
33
32
  is_dynamic_allowed: bool = False,
34
- explicit_defaults: set[str] | None = None,
35
33
  ) -> Callable[[ClassT], ClassT]:
36
34
  """
37
35
  An additional decorator to a dataclass that specifies serialization options.
@@ -54,9 +52,6 @@ def serial_class(
54
52
  requiring them for the API input.
55
53
  @param named_type_path
56
54
  The type_spec type-path to this type. This applies only to named types.
57
- @param explicit_defaults
58
- Fields that have explicit defaults in the definition. This is useful for
59
- falling back onto these defaults when the field is mandatory but receives a null value.
60
55
  """
61
56
 
62
57
  def decorate(orig_class: ClassT) -> ClassT:
@@ -68,7 +63,6 @@ def serial_class(
68
63
  named_type_path=named_type_path,
69
64
  from_decorator=True,
70
65
  is_dynamic_allowed=is_dynamic_allowed,
71
- explicit_defaults=explicit_defaults or set(),
72
66
  )
73
67
  return orig_class
74
68
 
@@ -96,9 +90,6 @@ class SerialClassDataInspector(SerialInspector[ClassT]):
96
90
  def has_parse_require(self, key: str) -> bool:
97
91
  return key in self.current.parse_require
98
92
 
99
- def has_explicit_default(self, key: str) -> bool:
100
- return key in self.current.explicit_defaults
101
-
102
93
 
103
94
  def get_merged_serial_class_data(type_class: type[Any]) -> _SerialClassData | None:
104
95
  base_class_data = (
@@ -124,13 +115,11 @@ def get_merged_serial_class_data(type_class: type[Any]) -> _SerialClassData | No
124
115
  | curr_base_class_data.to_string_values,
125
116
  parse_require=base_class_data.parse_require
126
117
  | curr_base_class_data.parse_require,
127
- explicit_defaults=base_class_data.explicit_defaults
128
- | curr_base_class_data.explicit_defaults,
129
118
  )
130
119
  return base_class_data
131
120
 
132
121
 
133
- def get_serial_class_data[ClassT](
122
+ def get_serial_class_data(
134
123
  type_class: type[ClassT],
135
124
  ) -> SerialClassDataInspector[ClassT]:
136
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[T](parsed_type: type[T]) -> SerialInspector[T] | None:
9
+ def get_serial_data(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[T]:
9
+ class IdentityHashWrapper(typing.Generic[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[T](parsed_type: type[T]) -> _SerialUnion | None:
52
+ def _get_serial_union(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[T](parsed_type: type[T]) -> SerialClassInspector[T] | None:
79
+ def get_serial_union_data(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
@@ -12,6 +12,7 @@ from typing import (
12
12
  Any,
13
13
  ClassVar,
14
14
  Protocol,
15
+ TypeVar,
15
16
  Union,
16
17
  overload,
17
18
  )
@@ -33,12 +34,14 @@ if TYPE_CHECKING:
33
34
  else:
34
35
  JsonValue = Union[JsonScalar, dict[str, Any], list[Any]]
35
36
 
37
+ T = TypeVar("T")
38
+
36
39
 
37
40
  class Dataclass(Protocol):
38
41
  __dataclass_fields__: ClassVar[dict] # type: ignore[type-arg,unused-ignore]
39
42
 
40
43
 
41
- def identity[T](x: T) -> T:
44
+ def identity(x: T) -> T:
42
45
  return x
43
46
 
44
47
 
@@ -1,7 +1,7 @@
1
1
  import os
2
2
  from collections.abc import Callable, Mapping
3
3
  from dataclasses import dataclass
4
- from typing import Self
4
+ from typing import Self, TypeVar
5
5
 
6
6
  from pkgs.serialization import yaml
7
7
 
@@ -107,7 +107,10 @@ class Config:
107
107
  open_api: OpenAPIConfig | None
108
108
 
109
109
 
110
- def _parse_language[T](config_class: type[T], raw_value: ConfigValueType) -> T:
110
+ T = TypeVar("T")
111
+
112
+
113
+ def _parse_language(config_class: type[T], raw_value: ConfigValueType) -> T:
111
114
  assert isinstance(raw_value, dict), "expecting language config to have key/values."
112
115
  return config_class(**raw_value)
113
116
 
@@ -11,7 +11,7 @@ def get_python_stub_file_path(
11
11
  ) -> str | None:
12
12
  if function_name is None:
13
13
  return None
14
- module_dir, file_name, func_name = function_name.rsplit(".", 2)
14
+ module_dir, file_name, _func_name = function_name.rsplit(".", 2)
15
15
  module_path = os.path.relpath(module_dir.replace(".", "/"))
16
16
  api_stub_file = f"{module_path}/{file_name}.py"
17
17
  return api_stub_file
@@ -14,9 +14,9 @@ from .open_api_util import OpenAPIType
14
14
 
15
15
  MODIFY_NOTICE = "# DO NOT MODIFY -- This file is generated by type_spec"
16
16
 
17
- type GlobalContextInfo = dict[str, str | dict[str, str]]
18
- type TagGroupToNamedTags = dict[str, str | list[str]]
19
- type TagPathsToRef = dict[str, dict[str, str]]
17
+ GlobalContextInfo = dict[str, str | dict[str, str]]
18
+ TagGroupToNamedTags = dict[str, str | list[str]]
19
+ TagPathsToRef = dict[str, dict[str, str]]
20
20
 
21
21
 
22
22
  @dataclass
@@ -697,7 +697,6 @@ class EmittedPropertiesMetadata:
697
697
  unconverted_values: set[str]
698
698
  to_string_values: set[str]
699
699
  parse_require: set[str]
700
- explicit_defaults: set[str]
701
700
 
702
701
 
703
702
  def _emit_type_properties(
@@ -729,7 +728,6 @@ def _emit_properties(
729
728
  unconverted_values: set[str] = set()
730
729
  to_string_values: set[str] = set()
731
730
  parse_require: set[str] = set()
732
- explicit_defaults: set[str] = set()
733
731
 
734
732
  if len(properties) > 0:
735
733
 
@@ -750,9 +748,6 @@ def _emit_properties(
750
748
  if prop.parse_require:
751
749
  parse_require.add(py_name)
752
750
 
753
- if prop.explicit_default:
754
- explicit_defaults.add(py_name)
755
-
756
751
  ref_type = refer_to(ctx, stype)
757
752
  default = None
758
753
  if prop.extant == builder.PropertyExtant.missing:
@@ -796,7 +791,6 @@ def _emit_properties(
796
791
  unconverted_values=unconverted_values,
797
792
  to_string_values=to_string_values,
798
793
  parse_require=parse_require,
799
- explicit_defaults=explicit_defaults,
800
794
  )
801
795
 
802
796
 
@@ -887,7 +881,6 @@ def _emit_type(ctx: Context, stype: builder.SpecType) -> None:
887
881
  unconverted_values = emitted_properties_metadata.unconverted_values
888
882
  to_string_values = emitted_properties_metadata.to_string_values
889
883
  parse_require = emitted_properties_metadata.parse_require
890
- explicit_defaults = emitted_properties_metadata.explicit_defaults
891
884
 
892
885
  _emit_generics(ctx, generics)
893
886
 
@@ -909,7 +902,6 @@ def _emit_type(ctx: Context, stype: builder.SpecType) -> None:
909
902
  write_values("unconverted_values", unconverted_values)
910
903
  write_values("to_string_values", to_string_values)
911
904
  write_values("parse_require", parse_require)
912
- write_values("explicit_defaults", explicit_defaults)
913
905
 
914
906
  ctx.out.write(")\n")
915
907
 
@@ -1192,7 +1184,7 @@ def _emit_api_stubs(*, builder: builder.SpecBuilder, config: PythonConfig) -> No
1192
1184
  if endpoint_function is None:
1193
1185
  continue
1194
1186
 
1195
- module_dir, file_name, func_name = endpoint_function.rsplit(".", 2)
1187
+ module_dir, file_name, _func_name = endpoint_function.rsplit(".", 2)
1196
1188
  module_path = os.path.abspath(module_dir.replace(".", "/"))
1197
1189
  api_stub_file = f"{module_path}/{file_name}.py"
1198
1190
  if os.path.isfile(api_stub_file):
@@ -163,7 +163,7 @@ class MapStringEnum(MapTypeBase):
163
163
  values: dict[str, str]
164
164
 
165
165
 
166
- type MapType = MapTypeObject | MapTypeAlias | MapStringEnum
166
+ MapType = MapTypeObject | MapTypeAlias | MapStringEnum
167
167
 
168
168
 
169
169
  @dataclasses.dataclass
@@ -1,10 +1,12 @@
1
1
  import json
2
2
  import os
3
3
  from dataclasses import dataclass
4
- from typing import Union
4
+ from typing import TypeVar, Union
5
5
 
6
6
  import regex as re
7
7
 
8
+ T = TypeVar("T")
9
+
8
10
 
9
11
  def rewrite_file(filename: str, content: str) -> bool:
10
12
  os.makedirs(os.path.dirname(filename), exist_ok=True)
@@ -154,7 +156,7 @@ def is_valid_property_name(name: str) -> bool:
154
156
  return re_pattern_property_name.match(name) is not None
155
157
 
156
158
 
157
- def check_fields[T](data: dict[str, T], allowed: list[str]) -> None:
159
+ def check_fields(data: dict[str, T], allowed: list[str]) -> None:
158
160
  for key in data:
159
161
  if key not in allowed:
160
162
  raise Exception(f"unexpected-field: {key}. Allowed: {allowed}")
@@ -178,7 +180,7 @@ def encode_common_string(value: str) -> str:
178
180
  return rep
179
181
 
180
182
 
181
- def unused[T](_arg: T) -> None:
183
+ def unused(_arg: T) -> None:
182
184
  """
183
185
  Identifies that an argument is intended not be used, as opposed to
184
186
  simply forgotten, or a remnant. This can happen in patterned calls
@@ -56,7 +56,7 @@ class DatastoreSqlite(Datastore):
56
56
  )
57
57
  session.execute(update_stmt)
58
58
  session.flush()
59
- # IMPROVE: python3.12's sqlite does not support the RETURNING clause
59
+ # IMPROVE: python3's sqlite does not support the RETURNING clause
60
60
  select_stmt = select(QueuedJob.num_attempts).filter(
61
61
  QueuedJob.id == queued_job_uuid
62
62
  )
@@ -50,7 +50,6 @@ class LookupEntityQueryBase:
50
50
  @serial_class(
51
51
  named_type_path="sdk.api.entity.lookup_entity.LookupFieldArgumentValue",
52
52
  unconverted_values={"field_value"},
53
- explicit_defaults={"value_resolution"},
54
53
  )
55
54
  @dataclasses.dataclass(kw_only=True)
56
55
  class LookupFieldArgumentValue:
@@ -45,7 +45,6 @@ class TimeSeriesDatum:
45
45
  # DO NOT MODIFY -- This file is generated by type_spec
46
46
  @serial_class(
47
47
  named_type_path="sdk.api.recipes.add_time_series_data.Arguments",
48
- explicit_defaults={"on_conflict"},
49
48
  )
50
49
  @dataclasses.dataclass(kw_only=True)
51
50
  class Arguments:
@@ -81,7 +81,6 @@ class RecipeInputEditClearInputs(RecipeInputEditBase):
81
81
  @serial_class(
82
82
  named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditInputBase",
83
83
  to_string_values={"value_numeric"},
84
- explicit_defaults={"input_value_type", "quantity_basis"},
85
84
  )
86
85
  @dataclasses.dataclass(kw_only=True)
87
86
  class RecipeInputEditInputBase(RecipeInputEditBase):
@@ -197,7 +196,6 @@ class PlaceholderDisplayMode(StrEnum):
197
196
  # DO NOT MODIFY -- This file is generated by type_spec
198
197
  @serial_class(
199
198
  named_type_path="sdk.api.recipes.edit_recipe_inputs.PlaceholderBase",
200
- explicit_defaults={"display_mode", "require_for_creation"},
201
199
  )
202
200
  @dataclasses.dataclass(kw_only=True)
203
201
  class PlaceholderBase:
@@ -25,7 +25,6 @@ ENDPOINT_PATH = "api/external/recipes/external_get_recipe_links"
25
25
  # DO NOT MODIFY -- This file is generated by type_spec
26
26
  @serial_class(
27
27
  named_type_path="sdk.api.recipes.get_recipe_links.Arguments",
28
- explicit_defaults={"depth"},
29
28
  )
30
29
  @dataclasses.dataclass(kw_only=True)
31
30
  class Arguments:
@@ -42,7 +42,6 @@ class RecipeLockBase:
42
42
  # DO NOT MODIFY -- This file is generated by type_spec
43
43
  @serial_class(
44
44
  named_type_path="sdk.api.recipes.lock_recipes.Arguments",
45
- explicit_defaults={"type"},
46
45
  )
47
46
  @dataclasses.dataclass(kw_only=True)
48
47
  class Arguments:
@@ -48,7 +48,6 @@ class NullBehavior(StrEnum):
48
48
  @serial_class(
49
49
  named_type_path="sdk.api.recipes.set_recipe_outputs.RecipeOutputValue",
50
50
  to_string_values={"value_numeric"},
51
- explicit_defaults={"null_behavior"},
52
51
  )
53
52
  @dataclasses.dataclass(kw_only=True)
54
53
  class RecipeOutputValue:
@@ -31,7 +31,6 @@ class RecipeUnlockType(StrEnum):
31
31
  # DO NOT MODIFY -- This file is generated by type_spec
32
32
  @serial_class(
33
33
  named_type_path="sdk.api.recipes.unlock_recipes.Arguments",
34
- explicit_defaults={"type"},
35
34
  )
36
35
  @dataclasses.dataclass(kw_only=True)
37
36
  class Arguments:
@@ -17,7 +17,6 @@ __all__: list[str] = [
17
17
  # DO NOT MODIFY -- This file is generated by type_spec
18
18
  @serial_class(
19
19
  named_type_path="sdk.client_config.ClientConfigOptions",
20
- explicit_defaults={"allow_insecure_tls"},
21
20
  )
22
21
  @dataclasses.dataclass(kw_only=True)
23
22
  class ClientConfigOptions:
@@ -94,7 +94,7 @@ __all__: list[str] = [
94
94
  "lab_location": "Lab Location",
95
95
  "lab_request": "Lab Request",
96
96
  "license": "License",
97
- "maintenance_schedule": "Maintenance Schedule",
97
+ "maintenance_schedule": "Equipment Action Type",
98
98
  "material_family": "Material Family",
99
99
  "measurement_group": "Measurement Group",
100
100
  "measurement_group_input": "Measurement Group Input",
@@ -384,7 +384,7 @@ class EntityType(StrEnum):
384
384
 
385
385
  # DO NOT MODIFY -- This file is generated by type_spec
386
386
  LimitedEntityType = typing.Annotated[
387
- typing.Literal[EntityType.LAB_REQUEST] | typing.Literal[EntityType.APPROVAL] | typing.Literal[EntityType.CUSTOM_ENTITY] | typing.Literal[EntityType.INGREDIENT_ATTRIBUTE] | typing.Literal[EntityType.INVENTORY_AMOUNT] | typing.Literal[EntityType.TASK] | typing.Literal[EntityType.PROJECT] | typing.Literal[EntityType.EQUIPMENT] | typing.Literal[EntityType.INV_LOCAL_LOCATIONS] | typing.Literal[EntityType.FIELD_OPTION_SET] | typing.Literal[EntityType.WEBHOOK] | typing.Literal[EntityType.SPECS] | typing.Literal[EntityType.GOAL] | typing.Literal[EntityType.INGREDIENT_TAG_MAP] | typing.Literal[EntityType.INGREDIENT_TAG] | typing.Literal[EntityType.CONDITION_PARAMETER] | typing.Literal[EntityType.OUTPUT] | typing.Literal[EntityType.OUTPUT_CONDITION_PARAMETER] | typing.Literal[EntityType.ASYNC_JOB] | typing.Literal[EntityType.CONSTRAINT] | typing.Literal[EntityType.INGREDIENT_CATEGORY_ALL] | typing.Literal[EntityType.TIME_SERIES_SEGMENT],
387
+ typing.Literal[EntityType.LAB_REQUEST] | typing.Literal[EntityType.APPROVAL] | typing.Literal[EntityType.CUSTOM_ENTITY] | typing.Literal[EntityType.INGREDIENT_ATTRIBUTE] | typing.Literal[EntityType.INVENTORY_AMOUNT] | typing.Literal[EntityType.TASK] | typing.Literal[EntityType.PROJECT] | typing.Literal[EntityType.EQUIPMENT] | typing.Literal[EntityType.INV_LOCAL_LOCATIONS] | typing.Literal[EntityType.FIELD_OPTION_SET] | typing.Literal[EntityType.WEBHOOK] | typing.Literal[EntityType.SPECS] | typing.Literal[EntityType.GOAL] | typing.Literal[EntityType.INGREDIENT_TAG_MAP] | typing.Literal[EntityType.INGREDIENT_TAG] | typing.Literal[EntityType.CONDITION_PARAMETER] | typing.Literal[EntityType.OUTPUT] | typing.Literal[EntityType.OUTPUT_CONDITION_PARAMETER] | typing.Literal[EntityType.ASYNC_JOB] | typing.Literal[EntityType.CONSTRAINT] | typing.Literal[EntityType.INGREDIENT_CATEGORY_ALL] | typing.Literal[EntityType.TIME_SERIES_SEGMENT] | typing.Literal[EntityType.EQUIPMENT_MAINTENANCE] | typing.Literal[EntityType.MAINTENANCE_SCHEDULE],
388
388
  serial_alias_annotation(
389
389
  named_type_path="sdk.entity.LimitedEntityType",
390
390
  ),
@@ -21,6 +21,9 @@ from .field_values_t import FieldValueBoolean as FieldValueBoolean
21
21
  from .field_values_t import FieldValueNumeric as FieldValueNumeric
22
22
  from .field_values_t import FieldValueBatchReference as FieldValueBatchReference
23
23
  from .field_values_t import FieldValueNull as FieldValueNull
24
+ from .field_values_t import FieldValueNotes as FieldValueNotes
25
+ from .field_values_t import FieldValueDate as FieldValueDate
26
+ from .field_values_t import FieldValueDatetime as FieldValueDatetime
24
27
  from .field_values_t import FieldValue as FieldValue
25
28
  from .field_values_t import FieldArgumentValue as FieldArgumentValue
26
29
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -24,11 +24,14 @@ __all__: list[str] = [
24
24
  "FieldValueBase",
25
25
  "FieldValueBatchReference",
26
26
  "FieldValueBoolean",
27
+ "FieldValueDate",
28
+ "FieldValueDatetime",
27
29
  "FieldValueFieldOption",
28
30
  "FieldValueFieldOptions",
29
31
  "FieldValueFiles",
30
32
  "FieldValueId",
31
33
  "FieldValueIds",
34
+ "FieldValueNotes",
32
35
  "FieldValueNull",
33
36
  "FieldValueNumeric",
34
37
  "FieldValueText",
@@ -100,6 +103,9 @@ class FieldValueType(StrEnum):
100
103
  FIELD_OPTION = "field_option"
101
104
  FIELD_OPTIONS = "field_options"
102
105
  NULL_VALUE = "null_value"
106
+ NOTES = "notes"
107
+ DATE = "date"
108
+ DATETIME = "datetime"
103
109
 
104
110
 
105
111
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -132,7 +138,6 @@ class ValueResolution(StrEnum):
132
138
  @serial_class(
133
139
  named_type_path="sdk.field_values.FieldValueFieldOption",
134
140
  parse_require={"type"},
135
- explicit_defaults={"value_resolution"},
136
141
  )
137
142
  @dataclasses.dataclass(kw_only=True)
138
143
  class FieldValueFieldOption(FieldValueBase):
@@ -145,7 +150,6 @@ class FieldValueFieldOption(FieldValueBase):
145
150
  @serial_class(
146
151
  named_type_path="sdk.field_values.FieldValueFieldOptions",
147
152
  parse_require={"type"},
148
- explicit_defaults={"value_resolution"},
149
153
  )
150
154
  @dataclasses.dataclass(kw_only=True)
151
155
  class FieldValueFieldOptions(FieldValueBase):
@@ -245,9 +249,42 @@ class FieldValueNull(FieldValueBase):
245
249
  type: typing.Literal[FieldValueType.NULL_VALUE] = FieldValueType.NULL_VALUE
246
250
 
247
251
 
252
+ # DO NOT MODIFY -- This file is generated by type_spec
253
+ @serial_class(
254
+ named_type_path="sdk.field_values.FieldValueNotes",
255
+ parse_require={"type"},
256
+ )
257
+ @dataclasses.dataclass(kw_only=True)
258
+ class FieldValueNotes(FieldValueBase):
259
+ type: typing.Literal[FieldValueType.NOTES] = FieldValueType.NOTES
260
+ value: str
261
+
262
+
263
+ # DO NOT MODIFY -- This file is generated by type_spec
264
+ @serial_class(
265
+ named_type_path="sdk.field_values.FieldValueDate",
266
+ parse_require={"type"},
267
+ )
268
+ @dataclasses.dataclass(kw_only=True)
269
+ class FieldValueDate(FieldValueBase):
270
+ type: typing.Literal[FieldValueType.DATE] = FieldValueType.DATE
271
+ value: datetime.date
272
+
273
+
274
+ # DO NOT MODIFY -- This file is generated by type_spec
275
+ @serial_class(
276
+ named_type_path="sdk.field_values.FieldValueDatetime",
277
+ parse_require={"type"},
278
+ )
279
+ @dataclasses.dataclass(kw_only=True)
280
+ class FieldValueDatetime(FieldValueBase):
281
+ type: typing.Literal[FieldValueType.DATETIME] = FieldValueType.DATETIME
282
+ value: datetime.datetime
283
+
284
+
248
285
  # DO NOT MODIFY -- This file is generated by type_spec
249
286
  FieldValue = typing.Annotated[
250
- FieldValueFiles | FieldValueId | FieldValueIds | FieldValueText | FieldValueTexts | FieldValueBoolean | FieldValueNumeric | FieldValueBatchReference | FieldValueFieldOption | FieldValueFieldOptions | FieldValueNull,
287
+ FieldValueFiles | FieldValueId | FieldValueIds | FieldValueText | FieldValueTexts | FieldValueBoolean | FieldValueNumeric | FieldValueBatchReference | FieldValueFieldOption | FieldValueFieldOptions | FieldValueNull | FieldValueNotes | FieldValueDate | FieldValueDatetime,
251
288
  serial_union_annotation(
252
289
  named_type_path="sdk.field_values.FieldValue",
253
290
  ),
@@ -109,7 +109,6 @@ UploadDestination = typing.Annotated[
109
109
  # DO NOT MODIFY -- This file is generated by type_spec
110
110
  @serial_class(
111
111
  named_type_path="sdk.generic_upload.GenericUploadStrategy",
112
- explicit_defaults={"skip_moving_files"},
113
112
  )
114
113
  @dataclasses.dataclass(kw_only=True)
115
114
  class GenericUploadStrategy: