UncountablePythonSDK 0.0.105__tar.gz → 0.0.110__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 (315) hide show
  1. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/.github/workflows/publish.yml +1 -1
  2. {uncountablepythonsdk-0.0.105/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.110}/PKG-INFO +2 -2
  3. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110/UncountablePythonSDK.egg-info}/PKG-INFO +2 -2
  4. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/UncountablePythonSDK.egg-info/SOURCES.txt +2 -0
  5. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/docs/requirements.txt +2 -2
  6. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/argument_parser/argument_parser.py +8 -8
  7. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/filesystem_utils/_gdrive_session.py +1 -1
  8. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/serialization/annotation.py +3 -3
  9. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/serialization/missing_sentry.py +1 -1
  10. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/serialization/serial_alias.py +2 -2
  11. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/serialization/serial_class.py +1 -12
  12. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/serialization/serial_generic.py +1 -1
  13. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/serialization/serial_union.py +3 -3
  14. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/serialization_util/serialization_helpers.py +4 -1
  15. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/config.py +5 -2
  16. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/cross_output_links.py +1 -1
  17. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/emit_open_api.py +27 -0
  18. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/emit_open_api_util.py +3 -3
  19. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/emit_python.py +1 -9
  20. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/open_api_util.py +12 -1
  21. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/type_info/emit_type_info.py +19 -2
  22. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/util.py +5 -3
  23. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/datastore/datastore_sqlite.py +1 -1
  24. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/__init__.py +2 -0
  25. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/entity/lookup_entity.py +0 -1
  26. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/add_time_series_data.py +0 -1
  27. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/edit_recipe_inputs.py +11 -2
  28. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/get_recipe_links.py +0 -1
  29. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/lock_recipes.py +0 -1
  30. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/set_recipe_outputs.py +2 -1
  31. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/unlock_recipes.py +0 -1
  32. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/async_batch_t.py +1 -0
  33. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/client_config_t.py +0 -1
  34. uncountablepythonsdk-0.0.110/uncountable/types/data.py +12 -0
  35. uncountablepythonsdk-0.0.110/uncountable/types/data_t.py +93 -0
  36. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/entity_t.py +2 -2
  37. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/field_values.py +3 -0
  38. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/field_values_t.py +40 -3
  39. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/generic_upload_t.py +0 -1
  40. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/job_definition_t.py +0 -2
  41. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/recipe_workflow_steps_t.py +0 -1
  42. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/response_t.py +0 -1
  43. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/.github/workflows/documentation.yml +0 -0
  44. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/.gitignore +0 -0
  45. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/README.md +0 -0
  46. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
  47. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/UncountablePythonSDK.egg-info/requires.txt +0 -0
  48. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
  49. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/docs/.gitignore +0 -0
  50. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/docs/conf.py +0 -0
  51. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/docs/index.md +0 -0
  52. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/docs/justfile +0 -0
  53. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/docs/quickstart.md +0 -0
  54. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/docs/static/favicons/android-chrome-192x192.png +0 -0
  55. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/docs/static/favicons/android-chrome-512x512.png +0 -0
  56. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/docs/static/favicons/apple-touch-icon.png +0 -0
  57. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/docs/static/favicons/browserconfig.xml +0 -0
  58. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/docs/static/favicons/favicon-16x16.png +0 -0
  59. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/docs/static/favicons/favicon-32x32.png +0 -0
  60. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/docs/static/favicons/manifest.json +0 -0
  61. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/docs/static/favicons/mstile-150x150.png +0 -0
  62. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/docs/static/favicons/safari-pinned-tab.svg +0 -0
  63. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/docs/static/logo_blue.png +0 -0
  64. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/examples/async_batch.py +0 -0
  65. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/examples/create_entity.py +0 -0
  66. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/examples/download_files.py +0 -0
  67. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/examples/edit_recipe_inputs.py +0 -0
  68. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/examples/integration-server/jobs/materials_auto/example_cron.py +0 -0
  69. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/examples/integration-server/jobs/materials_auto/example_wh.py +0 -0
  70. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/examples/integration-server/jobs/materials_auto/profile.yaml +0 -0
  71. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/examples/integration-server/pyproject.toml +0 -0
  72. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/examples/invoke_uploader.py +0 -0
  73. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/examples/set_recipe_metadata_file.py +0 -0
  74. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/examples/set_recipe_output_file_sdk.py +0 -0
  75. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/examples/upload_files.py +0 -0
  76. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/__init__.py +0 -0
  77. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/argument_parser/__init__.py +0 -0
  78. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/argument_parser/_is_enum.py +0 -0
  79. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/argument_parser/_is_namedtuple.py +0 -0
  80. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/argument_parser/case_convert.py +0 -0
  81. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/filesystem_utils/__init__.py +0 -0
  82. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/filesystem_utils/_blob_session.py +0 -0
  83. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/filesystem_utils/_local_session.py +0 -0
  84. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/filesystem_utils/_s3_session.py +0 -0
  85. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/filesystem_utils/_sftp_session.py +0 -0
  86. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/filesystem_utils/file_type_utils.py +0 -0
  87. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/filesystem_utils/filesystem_session.py +0 -0
  88. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/py.typed +0 -0
  89. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/serialization/__init__.py +0 -0
  90. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/serialization/opaque_key.py +0 -0
  91. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/serialization/yaml.py +0 -0
  92. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/serialization_util/__init__.py +0 -0
  93. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
  94. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/serialization_util/convert_to_snakecase.py +0 -0
  95. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/serialization_util/dataclasses.py +0 -0
  96. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/strenum_compat/__init__.py +0 -0
  97. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/strenum_compat/strenum_compat.py +0 -0
  98. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/__init__.py +0 -0
  99. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/__main__.py +0 -0
  100. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/actions_registry/__init__.py +0 -0
  101. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/actions_registry/__main__.py +0 -0
  102. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
  103. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/builder.py +0 -0
  104. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/emit_io_ts.py +0 -0
  105. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/emit_typescript.py +0 -0
  106. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/emit_typescript_util.py +0 -0
  107. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/load_types.py +0 -0
  108. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/parts/base.py.prepart +0 -0
  109. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/parts/base.ts.prepart +0 -0
  110. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/test.py +0 -0
  111. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/type_info/__main__.py +0 -0
  112. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/value_spec/__init__.py +0 -0
  113. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/value_spec/__main__.py +0 -0
  114. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/value_spec/convert_type.py +0 -0
  115. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/value_spec/emit_python.py +0 -0
  116. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pkgs/type_spec/value_spec/types.py +0 -0
  117. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/pyproject.toml +0 -0
  118. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/setup.cfg +0 -0
  119. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/__init__.py +0 -0
  120. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/core/__init__.py +0 -0
  121. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/core/async_batch.py +0 -0
  122. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/core/client.py +0 -0
  123. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/core/environment.py +0 -0
  124. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/core/file_upload.py +0 -0
  125. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/core/types.py +0 -0
  126. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/__init__.py +0 -0
  127. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/cli.py +0 -0
  128. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/construct_client.py +0 -0
  129. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/cron.py +0 -0
  130. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/db/__init__.py +0 -0
  131. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/db/connect.py +0 -0
  132. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/db/session.py +0 -0
  133. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/entrypoint.py +0 -0
  134. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/executors/__init__.py +0 -0
  135. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/executors/executors.py +0 -0
  136. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/executors/generic_upload_executor.py +0 -0
  137. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/executors/script_executor.py +0 -0
  138. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/job.py +0 -0
  139. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/__init__.py +0 -0
  140. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/command_server/__init__.py +0 -0
  141. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/command_server/command_client.py +0 -0
  142. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/command_server/command_server.py +0 -0
  143. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
  144. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/command_server/protocol/command_server.proto +0 -0
  145. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +0 -0
  146. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +0 -0
  147. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +0 -0
  148. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/command_server/types.py +0 -0
  149. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/datastore/__init__.py +0 -0
  150. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/datastore/interface.py +0 -0
  151. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/datastore/model.py +0 -0
  152. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/job_scheduler.py +0 -0
  153. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/queue_runner.py +0 -0
  154. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/types.py +0 -0
  155. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/queue_runner/worker.py +0 -0
  156. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/scan_profiles.py +0 -0
  157. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/scheduler.py +0 -0
  158. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/secret_retrieval/__init__.py +0 -0
  159. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/secret_retrieval/retrieve_secret.py +0 -0
  160. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/server.py +0 -0
  161. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/telemetry.py +0 -0
  162. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/integration/webhook_server/entrypoint.py +0 -0
  163. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/py.typed +0 -0
  164. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/__init__.py +0 -0
  165. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/batch/__init__.py +0 -0
  166. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/batch/execute_batch.py +0 -0
  167. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
  168. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/chemical/__init__.py +0 -0
  169. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
  170. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/entity/__init__.py +0 -0
  171. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/entity/create_entities.py +0 -0
  172. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/entity/create_entity.py +0 -0
  173. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/entity/create_or_update_entity.py +0 -0
  174. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/entity/get_entities_data.py +0 -0
  175. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/entity/grant_entity_permissions.py +0 -0
  176. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/entity/list_entities.py +0 -0
  177. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/entity/lock_entity.py +0 -0
  178. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
  179. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/entity/set_entity_field_values.py +0 -0
  180. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/entity/set_values.py +0 -0
  181. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
  182. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/entity/unlock_entity.py +0 -0
  183. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/equipment/__init__.py +0 -0
  184. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/equipment/associate_equipment_input.py +0 -0
  185. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/field_options/__init__.py +0 -0
  186. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/field_options/upsert_field_options.py +0 -0
  187. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/files/__init__.py +0 -0
  188. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/files/download_file.py +0 -0
  189. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/id_source/__init__.py +0 -0
  190. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/id_source/list_id_source.py +0 -0
  191. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/id_source/match_id_source.py +0 -0
  192. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/input_groups/__init__.py +0 -0
  193. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
  194. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/inputs/__init__.py +0 -0
  195. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/inputs/create_inputs.py +0 -0
  196. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/inputs/get_input_data.py +0 -0
  197. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/inputs/get_input_names.py +0 -0
  198. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
  199. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
  200. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/inputs/set_input_category.py +0 -0
  201. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/inputs/set_input_subcategories.py +0 -0
  202. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/inputs/set_intermediate_type.py +0 -0
  203. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/material_families/__init__.py +0 -0
  204. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/material_families/update_entity_material_families.py +0 -0
  205. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/outputs/__init__.py +0 -0
  206. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/outputs/get_output_data.py +0 -0
  207. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/outputs/get_output_names.py +0 -0
  208. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
  209. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/permissions/__init__.py +0 -0
  210. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
  211. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/project/__init__.py +0 -0
  212. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/project/get_projects.py +0 -0
  213. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/project/get_projects_data.py +0 -0
  214. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipe_links/__init__.py +0 -0
  215. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
  216. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipe_links/remove_recipe_link.py +0 -0
  217. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
  218. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
  219. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/__init__.py +0 -0
  220. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/add_recipe_to_project.py +0 -0
  221. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/archive_recipes.py +0 -0
  222. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/associate_recipe_as_input.py +0 -0
  223. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
  224. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/clear_recipe_outputs.py +0 -0
  225. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/create_recipe.py +0 -0
  226. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/create_recipes.py +0 -0
  227. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
  228. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/get_column_calculation_values.py +0 -0
  229. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/get_curve.py +0 -0
  230. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
  231. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
  232. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
  233. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/get_recipes_data.py +0 -0
  234. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/remove_recipe_from_project.py +0 -0
  235. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
  236. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
  237. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/set_recipe_output_annotations.py +0 -0
  238. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/set_recipe_output_file.py +0 -0
  239. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
  240. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/recipes/unarchive_recipes.py +0 -0
  241. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/triggers/__init__.py +0 -0
  242. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/triggers/run_trigger.py +0 -0
  243. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/uploader/__init__.py +0 -0
  244. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/api/uploader/invoke_uploader.py +0 -0
  245. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/async_batch.py +0 -0
  246. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/async_batch_processor.py +0 -0
  247. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/async_jobs.py +0 -0
  248. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/async_jobs_t.py +0 -0
  249. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/auth_retrieval.py +0 -0
  250. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/auth_retrieval_t.py +0 -0
  251. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/base.py +0 -0
  252. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/base_t.py +0 -0
  253. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/calculations.py +0 -0
  254. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/calculations_t.py +0 -0
  255. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/chemical_structure.py +0 -0
  256. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/chemical_structure_t.py +0 -0
  257. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/client_base.py +0 -0
  258. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/client_config.py +0 -0
  259. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/curves.py +0 -0
  260. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/curves_t.py +0 -0
  261. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/entity.py +0 -0
  262. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/experiment_groups.py +0 -0
  263. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/experiment_groups_t.py +0 -0
  264. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/fields.py +0 -0
  265. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/fields_t.py +0 -0
  266. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/generic_upload.py +0 -0
  267. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/id_source.py +0 -0
  268. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/id_source_t.py +0 -0
  269. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/identifier.py +0 -0
  270. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/identifier_t.py +0 -0
  271. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/input_attributes.py +0 -0
  272. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/input_attributes_t.py +0 -0
  273. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/inputs.py +0 -0
  274. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/inputs_t.py +0 -0
  275. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/integration_server.py +0 -0
  276. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/integration_server_t.py +0 -0
  277. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/job_definition.py +0 -0
  278. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/outputs.py +0 -0
  279. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/outputs_t.py +0 -0
  280. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/overrides.py +0 -0
  281. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/overrides_t.py +0 -0
  282. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/permissions.py +0 -0
  283. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/permissions_t.py +0 -0
  284. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/phases.py +0 -0
  285. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/phases_t.py +0 -0
  286. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/post_base.py +0 -0
  287. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/post_base_t.py +0 -0
  288. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/queued_job.py +0 -0
  289. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/queued_job_t.py +0 -0
  290. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/recipe_identifiers.py +0 -0
  291. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/recipe_identifiers_t.py +0 -0
  292. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/recipe_inputs.py +0 -0
  293. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/recipe_inputs_t.py +0 -0
  294. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/recipe_links.py +0 -0
  295. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/recipe_links_t.py +0 -0
  296. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/recipe_metadata.py +0 -0
  297. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/recipe_metadata_t.py +0 -0
  298. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/recipe_output_metadata.py +0 -0
  299. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/recipe_output_metadata_t.py +0 -0
  300. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/recipe_tags.py +0 -0
  301. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/recipe_tags_t.py +0 -0
  302. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/recipe_workflow_steps.py +0 -0
  303. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/recipes.py +0 -0
  304. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/recipes_t.py +0 -0
  305. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/response.py +0 -0
  306. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/secret_retrieval.py +0 -0
  307. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/secret_retrieval_t.py +0 -0
  308. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/units.py +0 -0
  309. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/units_t.py +0 -0
  310. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/users.py +0 -0
  311. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/users_t.py +0 -0
  312. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/webhook_job.py +0 -0
  313. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/webhook_job_t.py +0 -0
  314. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/uncountable/types/workflows.py +0 -0
  315. {uncountablepythonsdk-0.0.105 → uncountablepythonsdk-0.0.110}/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.110
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.110
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
@@ -159,6 +159,8 @@ uncountable/types/client_config.py
159
159
  uncountable/types/client_config_t.py
160
160
  uncountable/types/curves.py
161
161
  uncountable/types/curves_t.py
162
+ uncountable/types/data.py
163
+ uncountable/types/data_t.py
162
164
  uncountable/types/entity.py
163
165
  uncountable/types/entity_t.py
164
166
  uncountable/types/experiment_groups.py
@@ -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
@@ -7,6 +7,7 @@ WORK-IN-PROGRESS, DON'T USE!
7
7
  import dataclasses
8
8
  import json
9
9
  import re
10
+ from enum import StrEnum
10
11
  from typing import Collection, assert_never, cast
11
12
 
12
13
  from pkgs.serialization import yaml
@@ -62,6 +63,10 @@ base_name_map = {
62
63
  }
63
64
 
64
65
 
66
+ class OpenAPIDefaultBehavior(StrEnum):
67
+ OPTIONAL_WITH_DEFAULT = "optional_with_default"
68
+
69
+
65
70
  def _rewrite_with_notice(
66
71
  file_path: str, file_content: str, *, notice: str = MODIFY_NOTICE
67
72
  ) -> bool:
@@ -432,6 +437,18 @@ def _emit_namespace(
432
437
  _rewrite_with_notice(path, yaml.dumps(oa_namespace, sort_keys=False))
433
438
 
434
439
 
440
+ def _get_openapi_default_behavior(
441
+ prop: builder.SpecProperty,
442
+ ) -> OpenAPIDefaultBehavior | None:
443
+ if prop.ext_info is None or prop.ext_info.get("open_api") is None:
444
+ return None
445
+ value_passed = prop.ext_info["open_api"].get("default_required_behavior")
446
+ if value_passed is None:
447
+ return None
448
+ assert isinstance(value_passed, str)
449
+ return OpenAPIDefaultBehavior(value_passed)
450
+
451
+
435
452
  def _emit_type(
436
453
  ctx: EmitOpenAPIContext,
437
454
  stype: builder.SpecType,
@@ -495,6 +512,16 @@ def _emit_type(
495
512
  # arguments, thus treat like extant==missing
496
513
  # IMPROVE: if we can decide they are meant as output instead, then
497
514
  # they should be marked as required
515
+ openapi_default_beahvior = _get_openapi_default_behavior(prop)
516
+ match openapi_default_beahvior:
517
+ case None:
518
+ pass
519
+ case OpenAPIDefaultBehavior.OPTIONAL_WITH_DEFAULT:
520
+ ref_type.nullable = True
521
+ assert prop.default is not None, (
522
+ "optional_with_default requires default"
523
+ )
524
+ ref_type.default = prop.default
498
525
  properties[prop_name] = ref_type
499
526
  elif prop.extant == builder.PropertyExtant.missing:
500
527
  # Unlike optional below, missing does not imply null is possible. They
@@ -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):
@@ -1,14 +1,23 @@
1
1
  from abc import ABC, abstractmethod
2
2
  from enum import StrEnum
3
3
 
4
+ from pkgs.serialization_util import JsonValue
5
+
4
6
 
5
7
  class OpenAPIType(ABC):
6
8
  description: str | None = None
7
9
  nullable: bool = False
10
+ default: JsonValue
8
11
 
9
- def __init__(self, description: str | None = None, nullable: bool = False) -> None:
12
+ def __init__(
13
+ self,
14
+ description: str | None = None,
15
+ nullable: bool = False,
16
+ default: JsonValue = None,
17
+ ) -> None:
10
18
  self.description = description
11
19
  self.nullable = nullable
20
+ self.default = default
12
21
 
13
22
  @abstractmethod
14
23
  def asdict(self) -> dict[str, object]:
@@ -19,6 +28,8 @@ class OpenAPIType(ABC):
19
28
  emitted["description"] = self.description
20
29
  if self.nullable:
21
30
  emitted["nullable"] = self.nullable
31
+ if self.default is not None:
32
+ emitted["default"] = self.default
22
33
  return emitted
23
34
 
24
35
 
@@ -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
@@ -296,6 +296,21 @@ def _extract_and_validate_layout(
296
296
  return layout
297
297
 
298
298
 
299
+ def _pull_property_from_type_recursively(
300
+ stype: builder.SpecTypeDefnObject,
301
+ property_name: str,
302
+ ) -> builder.SpecProperty | None:
303
+ assert stype.properties is not None
304
+ prop = stype.properties.get(property_name)
305
+ if prop is not None:
306
+ return prop
307
+
308
+ if stype.base is None:
309
+ return None
310
+
311
+ return _pull_property_from_type_recursively(stype.base, property_name)
312
+
313
+
299
314
  def _validate_type_ext_info(
300
315
  stype: builder.SpecTypeDefnObject,
301
316
  ) -> tuple[ExtInfoLayout | None, type_info_t.ExtInfo | None]:
@@ -306,7 +321,7 @@ def _validate_type_ext_info(
306
321
  if ext_info.label_fields is not None:
307
322
  assert stype.properties is not None
308
323
  for name in ext_info.label_fields:
309
- prop = stype.properties.get(name)
324
+ prop = _pull_property_from_type_recursively(stype, name)
310
325
  assert prop is not None, f"missing-label-field:{name}"
311
326
 
312
327
  if not stype.is_base and isinstance(stype.base, builder.SpecTypeDefnObject):
@@ -416,6 +431,8 @@ def _parse_ext_info(in_ext: Any) -> type_info_t.ExtInfo | None:
416
431
  df["result_type"] = serialize_for_storage(converted)
417
432
  mod_ext["data_format"] = df
418
433
 
434
+ if "open_api" in mod_ext:
435
+ del mod_ext["open_api"]
419
436
  return ext_info_parser.parse_storage(mod_ext)
420
437
 
421
438
 
@@ -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
  )
@@ -25,6 +25,7 @@ from .api.recipes import create_recipe as create_recipe_t
25
25
  from .api.recipe_links import create_recipe_link as create_recipe_link_t
26
26
  from .api.recipes import create_recipes as create_recipes_t
27
27
  from . import curves_t as curves_t
28
+ from . import data_t as data_t
28
29
  from .api.recipes import disassociate_recipe_as_input as disassociate_recipe_as_input_t
29
30
  from .api.files import download_file as download_file_t
30
31
  from .api.recipes import edit_recipe_inputs as edit_recipe_inputs_t
@@ -136,6 +137,7 @@ __all__: list[str] = [
136
137
  "create_recipe_link_t",
137
138
  "create_recipes_t",
138
139
  "curves_t",
140
+ "data_t",
139
141
  "disassociate_recipe_as_input_t",
140
142
  "download_file_t",
141
143
  "edit_recipe_inputs_t",
@@ -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: