UncountablePythonSDK 0.0.172__tar.gz → 0.0.173__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.
Files changed (422) hide show
  1. {uncountablepythonsdk-0.0.172/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.173}/PKG-INFO +1 -1
  2. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173/UncountablePythonSDK.egg-info}/PKG-INFO +1 -1
  3. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/requirements.txt +1 -1
  4. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/argument_parser/parser_inner.py +15 -11
  5. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/argument_parser/parser_options.py +1 -1
  6. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/serialization/serial_class.py +17 -0
  7. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/serialization_util/serialization_helpers.py +8 -1
  8. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/builder.py +22 -0
  9. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/emit_io_ts.py +2 -2
  10. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/emit_open_api.py +2 -2
  11. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/emit_python.py +17 -0
  12. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/emit_typescript_util.py +10 -2
  13. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/type_info/emit_type_info.py +2 -2
  14. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/telemetry.py +1 -1
  15. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/.github/workflows/documentation.yml +0 -0
  16. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/.github/workflows/publish.yml +0 -0
  17. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/.gitignore +0 -0
  18. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/README.md +0 -0
  19. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/UncountablePythonSDK.egg-info/SOURCES.txt +0 -0
  20. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
  21. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/UncountablePythonSDK.egg-info/requires.txt +0 -0
  22. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
  23. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/.gitignore +0 -0
  24. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/conf.py +0 -0
  25. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/index.md +0 -0
  26. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/integration_examples/add_file_to_folder.md +0 -0
  27. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/integration_examples/create_ingredient.md +0 -0
  28. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/integration_examples/create_output.md +0 -0
  29. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/integration_examples/index.md +0 -0
  30. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/integration_examples/upload_file.md +0 -0
  31. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/justfile +0 -0
  32. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/static/favicons/android-chrome-192x192.png +0 -0
  33. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/static/favicons/android-chrome-512x512.png +0 -0
  34. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/static/favicons/apple-touch-icon.png +0 -0
  35. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/static/favicons/browserconfig.xml +0 -0
  36. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/static/favicons/favicon-16x16.png +0 -0
  37. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/static/favicons/favicon-32x32.png +0 -0
  38. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/static/favicons/manifest.json +0 -0
  39. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/static/favicons/mstile-150x150.png +0 -0
  40. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/static/favicons/safari-pinned-tab.svg +0 -0
  41. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/docs/static/logo_blue.png +0 -0
  42. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/async_batch.py +0 -0
  43. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/async_batch_large_parse.py +0 -0
  44. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/basic_auth.py +0 -0
  45. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/create_entity.py +0 -0
  46. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/create_ingredient_sdk.py +0 -0
  47. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/download_files.py +0 -0
  48. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/edit_recipe_inputs.py +0 -0
  49. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/concurrent_cron.py +0 -0
  50. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/example_cron.py +0 -0
  51. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/example_http.py +0 -0
  52. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/example_instrument.py +0 -0
  53. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/example_parse.py +0 -0
  54. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/example_predictions.py +0 -0
  55. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +0 -0
  56. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/example_wh.py +0 -0
  57. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/profile.yaml +0 -0
  58. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/integration-server/pyproject.toml +0 -0
  59. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/invoke_uploader.py +0 -0
  60. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/oauth.py +0 -0
  61. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/set_input_pdf_attribute.py +0 -0
  62. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/set_recipe_metadata_file.py +0 -0
  63. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/set_recipe_output_file_sdk.py +0 -0
  64. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/examples/upload_files.py +0 -0
  65. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/__init__.py +0 -0
  66. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/argument_parser/__init__.py +0 -0
  67. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/argument_parser/cached_parser.py +0 -0
  68. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/argument_parser/case_convert.py +0 -0
  69. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/argument_parser/parser_base.py +0 -0
  70. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/argument_parser/parser_builder.py +0 -0
  71. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/argument_parser/parser_cache.py +0 -0
  72. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/argument_parser/parser_error.py +0 -0
  73. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/argument_parser/parser_function_type.py +0 -0
  74. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/argument_parser/type_predicates.py +0 -0
  75. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/__init__.py +0 -0
  76. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/_blob_session.py +0 -0
  77. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/_file_share_session.py +0 -0
  78. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/_gdrive_session.py +0 -0
  79. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/_local_session.py +0 -0
  80. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/_s3_session.py +0 -0
  81. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/_sftp_connection.py +0 -0
  82. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/_sftp_session.py +0 -0
  83. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/file_type_utils.py +0 -0
  84. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/filesystem_session.py +0 -0
  85. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/py.typed +0 -0
  86. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/serialization/__init__.py +0 -0
  87. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/serialization/annotation.py +0 -0
  88. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/serialization/missing_sentry.py +0 -0
  89. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/serialization/opaque_key.py +0 -0
  90. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/serialization/serial_alias.py +0 -0
  91. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/serialization/serial_generic.py +0 -0
  92. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/serialization/serial_union.py +0 -0
  93. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/serialization/unknown.py +0 -0
  94. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/serialization/yaml.py +0 -0
  95. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/serialization_util/__init__.py +0 -0
  96. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
  97. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/serialization_util/convert_to_snakecase.py +0 -0
  98. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/serialization_util/dataclasses.py +0 -0
  99. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/strenum_compat/__init__.py +0 -0
  100. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/strenum_compat/strenum_compat.py +0 -0
  101. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/__init__.py +0 -0
  102. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/__main__.py +0 -0
  103. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/actions_registry/__init__.py +0 -0
  104. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/actions_registry/__main__.py +0 -0
  105. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/actions_registry/emit_python.py +0 -0
  106. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
  107. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/builder_types.py +0 -0
  108. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/config.py +0 -0
  109. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/cross_output_links.py +0 -0
  110. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/emit_open_api_util.py +0 -0
  111. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/emit_typescript.py +0 -0
  112. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/load_types.py +0 -0
  113. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/non_discriminated_union_exceptions.py +0 -0
  114. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/open_api_util.py +0 -0
  115. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/parts/base.py.prepart +0 -0
  116. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/parts/base.ts.prepart +0 -0
  117. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/test.py +0 -0
  118. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/type_info/__main__.py +0 -0
  119. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/ui_entry_actions/__init__.py +0 -0
  120. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +0 -0
  121. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/util.py +0 -0
  122. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/value_spec/__init__.py +0 -0
  123. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/value_spec/__main__.py +0 -0
  124. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/value_spec/convert_type.py +0 -0
  125. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/value_spec/emit_python.py +0 -0
  126. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/value_spec/types.py +0 -0
  127. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/pyproject.toml +0 -0
  128. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/setup.cfg +0 -0
  129. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/__init__.py +0 -0
  130. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/core/__init__.py +0 -0
  131. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/core/async_batch.py +0 -0
  132. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/core/client.py +0 -0
  133. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/core/environment.py +0 -0
  134. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/core/file_upload.py +0 -0
  135. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/core/query/__init__.py +0 -0
  136. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/core/query/builder.py +0 -0
  137. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/core/query/column.py +0 -0
  138. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/core/query/row.py +0 -0
  139. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/core/query/types.py +0 -0
  140. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/core/types.py +0 -0
  141. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/__init__.py +0 -0
  142. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/cli.py +0 -0
  143. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/construct_client.py +0 -0
  144. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/cron.py +0 -0
  145. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/db/__init__.py +0 -0
  146. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/db/connect.py +0 -0
  147. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/db/session.py +0 -0
  148. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/entrypoint.py +0 -0
  149. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/executors/__init__.py +0 -0
  150. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/executors/executors.py +0 -0
  151. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/executors/generic_upload_executor.py +0 -0
  152. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/executors/script_executor.py +0 -0
  153. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/http_server/__init__.py +0 -0
  154. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/http_server/types.py +0 -0
  155. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/job.py +0 -0
  156. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/__init__.py +0 -0
  157. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/__init__.py +0 -0
  158. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/command_client.py +0 -0
  159. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/command_server.py +0 -0
  160. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/constants.py +0 -0
  161. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
  162. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/protocol/command_server.proto +0 -0
  163. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +0 -0
  164. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +0 -0
  165. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +0 -0
  166. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/types.py +0 -0
  167. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/datastore/__init__.py +0 -0
  168. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/datastore/datastore_sqlite.py +0 -0
  169. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/datastore/interface.py +0 -0
  170. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/datastore/model.py +0 -0
  171. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/job_scheduler.py +0 -0
  172. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/queue_runner.py +0 -0
  173. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/types.py +0 -0
  174. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/worker.py +0 -0
  175. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/request_context.py +0 -0
  176. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/scan_profiles.py +0 -0
  177. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/scheduler.py +0 -0
  178. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/secret_retrieval/__init__.py +0 -0
  179. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/secret_retrieval/retrieve_secret.py +0 -0
  180. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/server.py +0 -0
  181. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/integration/webhook_server/entrypoint.py +0 -0
  182. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/py.typed +0 -0
  183. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/__init__.py +0 -0
  184. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/__init__.py +0 -0
  185. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/batch/__init__.py +0 -0
  186. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/batch/execute_batch.py +0 -0
  187. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
  188. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/chemical/__init__.py +0 -0
  189. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
  190. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/condition_parameters/__init__.py +0 -0
  191. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/condition_parameters/upsert_condition_match.py +0 -0
  192. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/condition_parameters/upsert_condition_matches.py +0 -0
  193. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/__init__.py +0 -0
  194. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/create_entities.py +0 -0
  195. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/create_entity.py +0 -0
  196. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/create_or_update_entities.py +0 -0
  197. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/create_or_update_entity.py +0 -0
  198. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/export_entities.py +0 -0
  199. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/get_entities_data.py +0 -0
  200. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/grant_entity_permissions.py +0 -0
  201. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/list_aggregate.py +0 -0
  202. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/list_entities.py +0 -0
  203. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/lock_entity.py +0 -0
  204. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/lookup_entity.py +0 -0
  205. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
  206. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/set_barcode.py +0 -0
  207. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/set_entities_field_values.py +0 -0
  208. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/set_entity_field_values.py +0 -0
  209. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/set_values.py +0 -0
  210. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
  211. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/unlock_entity.py +0 -0
  212. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/equipment/__init__.py +0 -0
  213. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/equipment/associate_equipment_input.py +0 -0
  214. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/field_options/__init__.py +0 -0
  215. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/field_options/upsert_field_options.py +0 -0
  216. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/file_folders/__init__.py +0 -0
  217. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/file_folders/add_file_to_folder.py +0 -0
  218. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/file_folders/modify_file_system.py +0 -0
  219. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/files/__init__.py +0 -0
  220. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/files/download_file.py +0 -0
  221. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/id_source/__init__.py +0 -0
  222. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/id_source/list_id_source.py +0 -0
  223. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/id_source/match_id_source.py +0 -0
  224. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/input_groups/__init__.py +0 -0
  225. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
  226. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/__init__.py +0 -0
  227. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/create_inputs.py +0 -0
  228. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/get_input_data.py +0 -0
  229. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/get_input_names.py +0 -0
  230. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
  231. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
  232. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/set_input_category.py +0 -0
  233. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/set_input_subcategories.py +0 -0
  234. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/set_intermediate_type.py +0 -0
  235. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/integrations/__init__.py +0 -0
  236. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/integrations/publish_realtime_data.py +0 -0
  237. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/integrations/push_notification.py +0 -0
  238. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/integrations/register_sockets_token.py +0 -0
  239. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/listing/__init__.py +0 -0
  240. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/listing/export_listing.py +0 -0
  241. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/listing/fetch_listing.py +0 -0
  242. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/material_families/__init__.py +0 -0
  243. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/material_families/update_entity_material_families.py +0 -0
  244. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/notebooks/__init__.py +0 -0
  245. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/notebooks/add_notebook_content.py +0 -0
  246. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/notebooks/get_notebook_content.py +0 -0
  247. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/output_parameters/__init__.py +0 -0
  248. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/output_parameters/swap_output_condition_parameters.py +0 -0
  249. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/outputs/__init__.py +0 -0
  250. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/outputs/get_output_data.py +0 -0
  251. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/outputs/get_output_names.py +0 -0
  252. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/outputs/get_output_organization.py +0 -0
  253. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
  254. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/outputs/update_output_condition_parameter.py +0 -0
  255. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/permissions/__init__.py +0 -0
  256. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
  257. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/permissions/set_entity_permission.py +0 -0
  258. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/project/__init__.py +0 -0
  259. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/project/get_projects.py +0 -0
  260. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/project/get_projects_data.py +0 -0
  261. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipe_links/__init__.py +0 -0
  262. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
  263. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipe_links/create_recipe_links.py +0 -0
  264. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipe_links/remove_recipe_link.py +0 -0
  265. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
  266. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
  267. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/__init__.py +0 -0
  268. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/add_recipe_to_project.py +0 -0
  269. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/add_time_series_data.py +0 -0
  270. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/archive_recipes.py +0 -0
  271. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/associate_recipe_as_input.py +0 -0
  272. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
  273. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/clear_recipe_outputs.py +0 -0
  274. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/create_mix_order.py +0 -0
  275. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/create_recipe.py +0 -0
  276. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/create_recipes.py +0 -0
  277. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
  278. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/edit_recipe_inputs.py +0 -0
  279. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/get_column_calculation_values.py +0 -0
  280. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/get_curve.py +0 -0
  281. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
  282. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/get_recipe_links.py +0 -0
  283. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
  284. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
  285. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/get_recipes_data.py +0 -0
  286. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/lock_recipes.py +0 -0
  287. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/remove_recipe_from_project.py +0 -0
  288. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
  289. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
  290. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/set_recipe_output_annotations.py +0 -0
  291. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/set_recipe_output_file.py +0 -0
  292. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/set_recipe_outputs.py +0 -0
  293. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
  294. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/set_recipe_total.py +0 -0
  295. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/unarchive_recipes.py +0 -0
  296. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/unlock_recipes.py +0 -0
  297. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/upsert_recipe_workflow_step.py +0 -0
  298. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/upsert_step_relationships.py +0 -0
  299. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/runsheet/__init__.py +0 -0
  300. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/runsheet/complete_async_upload.py +0 -0
  301. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/runsheet/export_default_runsheet.py +0 -0
  302. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/triggers/__init__.py +0 -0
  303. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/triggers/run_trigger.py +0 -0
  304. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/uploader/__init__.py +0 -0
  305. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/uploader/complete_async_parse.py +0 -0
  306. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/uploader/invoke_uploader.py +0 -0
  307. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/user/__init__.py +0 -0
  308. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/api/user/get_current_user_info.py +0 -0
  309. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/async_batch.py +0 -0
  310. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/async_batch_processor.py +0 -0
  311. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/async_batch_t.py +0 -0
  312. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/async_jobs.py +0 -0
  313. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/async_jobs_t.py +0 -0
  314. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/auth_retrieval.py +0 -0
  315. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/auth_retrieval_t.py +0 -0
  316. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/base.py +0 -0
  317. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/base_t.py +0 -0
  318. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/calculations.py +0 -0
  319. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/calculations_t.py +0 -0
  320. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/chemical_structure.py +0 -0
  321. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/chemical_structure_t.py +0 -0
  322. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/client_base.py +0 -0
  323. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/client_config.py +0 -0
  324. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/client_config_t.py +0 -0
  325. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/condition_match.py +0 -0
  326. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/condition_match_t.py +0 -0
  327. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/curves.py +0 -0
  328. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/curves_t.py +0 -0
  329. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/data.py +0 -0
  330. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/data_t.py +0 -0
  331. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/entity.py +0 -0
  332. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/entity_t.py +0 -0
  333. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/experiment_groups.py +0 -0
  334. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/experiment_groups_t.py +0 -0
  335. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/exports.py +0 -0
  336. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/exports_t.py +0 -0
  337. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/field_values.py +0 -0
  338. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/field_values_t.py +0 -0
  339. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/fields.py +0 -0
  340. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/fields_t.py +0 -0
  341. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/generic_upload.py +0 -0
  342. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/generic_upload_t.py +0 -0
  343. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/id_source.py +0 -0
  344. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/id_source_t.py +0 -0
  345. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/identifier.py +0 -0
  346. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/identifier_t.py +0 -0
  347. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/input_attributes.py +0 -0
  348. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/input_attributes_t.py +0 -0
  349. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/inputs.py +0 -0
  350. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/inputs_t.py +0 -0
  351. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/integration_server.py +0 -0
  352. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/integration_server_t.py +0 -0
  353. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/integration_session.py +0 -0
  354. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/integration_session_t.py +0 -0
  355. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/integrations.py +0 -0
  356. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/integrations_t.py +0 -0
  357. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/job_definition.py +0 -0
  358. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/job_definition_t.py +0 -0
  359. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/listing.py +0 -0
  360. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/listing_t.py +0 -0
  361. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/notices.py +0 -0
  362. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/notices_t.py +0 -0
  363. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/notifications.py +0 -0
  364. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/notifications_t.py +0 -0
  365. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/outputs.py +0 -0
  366. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/outputs_t.py +0 -0
  367. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/overrides.py +0 -0
  368. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/overrides_t.py +0 -0
  369. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/permissions.py +0 -0
  370. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/permissions_t.py +0 -0
  371. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/phases.py +0 -0
  372. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/phases_t.py +0 -0
  373. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/post_base.py +0 -0
  374. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/post_base_t.py +0 -0
  375. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/queued_job.py +0 -0
  376. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/queued_job_t.py +0 -0
  377. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_identifiers.py +0 -0
  378. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_identifiers_t.py +0 -0
  379. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_inputs.py +0 -0
  380. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_inputs_t.py +0 -0
  381. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_links.py +0 -0
  382. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_links_t.py +0 -0
  383. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_metadata.py +0 -0
  384. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_metadata_t.py +0 -0
  385. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_output_metadata.py +0 -0
  386. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_output_metadata_t.py +0 -0
  387. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_step_relationships.py +0 -0
  388. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_step_relationships_t.py +0 -0
  389. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_tags.py +0 -0
  390. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_tags_t.py +0 -0
  391. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_workflow_step_types.py +0 -0
  392. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_workflow_step_types_t.py +0 -0
  393. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_workflow_steps.py +0 -0
  394. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_workflow_steps_t.py +0 -0
  395. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipes.py +0 -0
  396. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/recipes_t.py +0 -0
  397. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/request_headers.py +0 -0
  398. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/request_headers_t.py +0 -0
  399. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/response.py +0 -0
  400. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/response_t.py +0 -0
  401. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/runsheet.py +0 -0
  402. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/runsheet_format.py +0 -0
  403. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/runsheet_format_t.py +0 -0
  404. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/runsheet_t.py +0 -0
  405. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/secret_retrieval.py +0 -0
  406. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/secret_retrieval_t.py +0 -0
  407. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/sockets.py +0 -0
  408. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/sockets_t.py +0 -0
  409. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/specs.py +0 -0
  410. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/specs_t.py +0 -0
  411. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/step_relationships.py +0 -0
  412. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/step_relationships_t.py +0 -0
  413. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/units.py +0 -0
  414. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/units_t.py +0 -0
  415. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/uploader.py +0 -0
  416. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/uploader_t.py +0 -0
  417. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/users.py +0 -0
  418. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/users_t.py +0 -0
  419. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/webhook_job.py +0 -0
  420. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/webhook_job_t.py +0 -0
  421. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/workflows.py +0 -0
  422. {uncountablepythonsdk-0.0.172 → uncountablepythonsdk-0.0.173}/uncountable/types/workflows_t.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.172
3
+ Version: 0.0.173
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
1
  Metadata-Version: 2.4
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.172
3
+ Version: 0.0.173
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,5 +1,5 @@
1
1
  furo==2025.12.19
2
- myst-parser==5.0.0
2
+ myst-parser==5.1.0
3
3
  sphinx-autoapi==3.8.0
4
4
  sphinx-copybutton==0.5.2
5
5
  Sphinx==9.1.0
@@ -136,7 +136,7 @@ def _build_parser_discriminated_union(
136
136
  ) -> ParserFunction[T]:
137
137
  discriminator = (
138
138
  snake_to_camel_case(discriminator_raw)
139
- if context.options.from_camel_case
139
+ if context.options.is_api_encoding
140
140
  else discriminator_raw
141
141
  )
142
142
 
@@ -318,7 +318,7 @@ def build_parser_inner(
318
318
  field_name: field_parser(
319
319
  value.get(
320
320
  snake_to_camel_case(field_name)
321
- if context.options.from_camel_case
321
+ if context.options.is_api_encoding
322
322
  else field_name
323
323
  )
324
324
  )
@@ -403,7 +403,7 @@ def build_parser_inner(
403
403
  # enum keys and OpaqueData's would also have string value types,
404
404
  # but their explicit type is not a string, thus shouldn't be converted
405
405
  and args[0] is str
406
- and context.options.from_camel_case
406
+ and context.options.is_api_encoding
407
407
  ):
408
408
  return camel_to_snake_case(value)
409
409
  return inner
@@ -574,14 +574,18 @@ def _build_parser_dataclass(
574
574
  serial_class_data = get_serial_class_data(parsed_type)
575
575
 
576
576
  def resolve_serialized_field_name(*, field_name: str) -> str:
577
- return (
578
- snake_to_camel_case(field_name)
579
- if (
580
- context.options.from_camel_case
581
- and not serial_class_data.has_unconverted_key(field_name)
582
- )
583
- else field_name
584
- )
577
+ if context.options.is_api_encoding:
578
+ emit_api_override = serial_class_data.get_emit_api_override(field_name)
579
+ if emit_api_override is not None:
580
+ assert not serial_class_data.has_unconverted_key(field_name), (
581
+ f"serial class field {field_name!r} appears in both "
582
+ "emit_api_overrides and unconverted_keys; the features cannot "
583
+ "be combined"
584
+ )
585
+ return emit_api_override
586
+ if not serial_class_data.has_unconverted_key(field_name):
587
+ return snake_to_camel_case(field_name)
588
+ return field_name
585
589
 
586
590
  def parse(value: typing.Any) -> typing.Any:
587
591
  # Use an exact type match to prevent base/derived class mismatches
@@ -33,7 +33,7 @@ class ParserOptions:
33
33
  )
34
34
 
35
35
  @property
36
- def from_camel_case(self) -> bool:
36
+ def is_api_encoding(self) -> bool:
37
37
  return self.encoding == SourceEncoding.API
38
38
 
39
39
  @property
@@ -16,6 +16,7 @@ class _SerialClassData(SerialBase):
16
16
  unconverted_values: set[str] = dataclasses.field(default_factory=set)
17
17
  to_string_values: set[str] = dataclasses.field(default_factory=set)
18
18
  parse_require: set[str] = dataclasses.field(default_factory=set)
19
+ emit_api_overrides: dict[str, str] = dataclasses.field(default_factory=dict)
19
20
  named_type_path: str | None = None
20
21
 
21
22
 
@@ -28,6 +29,7 @@ def serial_class(
28
29
  unconverted_values: set[str] | None = None,
29
30
  to_string_values: set[str] | None = None,
30
31
  parse_require: set[str] | None = None,
32
+ emit_api_overrides: dict[str, str] | None = None,
31
33
  named_type_path: str | None = None,
32
34
  is_dynamic_allowed: bool = False,
33
35
  ) -> Callable[[ClassT], ClassT]:
@@ -50,6 +52,13 @@ def serial_class(
50
52
  This field is always required while parsing, even if it has a default in the definition.
51
53
  This allows supporting literal type defaults for Python instantiation, but
52
54
  requiring them for the API input.
55
+ @param emit_api_overrides
56
+ Maps Python field name -> the API JSON key used in serialization
57
+ and parsing. Lets a property carry a specific, potentially non-
58
+ standard, name on the API boundary; the Python field name and
59
+ storage encoding are unaffected. Replaces the default camelCase
60
+ conversion. Cannot be combined with `unconverted_keys` for the
61
+ same field; doing so raises at parse and serialize time.
53
62
  @param named_type_path
54
63
  The type_spec type-path to this type. This applies only to named types.
55
64
  """
@@ -60,6 +69,7 @@ def serial_class(
60
69
  unconverted_values=unconverted_values or set(),
61
70
  to_string_values=to_string_values or set(),
62
71
  parse_require=parse_require or set(),
72
+ emit_api_overrides=emit_api_overrides or {},
63
73
  named_type_path=named_type_path,
64
74
  from_decorator=True,
65
75
  is_dynamic_allowed=is_dynamic_allowed,
@@ -90,6 +100,9 @@ class SerialClassDataInspector(SerialInspector[ClassT]):
90
100
  def has_parse_require(self, key: str) -> bool:
91
101
  return key in self.current.parse_require
92
102
 
103
+ def get_emit_api_override(self, key: str) -> str | None:
104
+ return self.current.emit_api_overrides.get(key)
105
+
93
106
 
94
107
  def get_merged_serial_class_data(
95
108
  type_class: SerialType[Any],
@@ -119,6 +132,10 @@ def get_merged_serial_class_data(
119
132
  | curr_base_class_data.to_string_values,
120
133
  parse_require=base_class_data.parse_require
121
134
  | curr_base_class_data.parse_require,
135
+ emit_api_overrides={
136
+ **curr_base_class_data.emit_api_overrides,
137
+ **base_class_data.emit_api_overrides,
138
+ },
122
139
  )
123
140
  return base_class_data
124
141
 
@@ -131,7 +131,14 @@ def _get_dataclass_conversion_lookups(dataclass_type: Any) -> DataclassConversio
131
131
 
132
132
  for field in dataclasses.fields(dataclass_type):
133
133
  key = field.name
134
- if scd.has_unconverted_key(key):
134
+ emit_api_override = scd.get_emit_api_override(key)
135
+ if emit_api_override is not None:
136
+ assert not scd.has_unconverted_key(key), (
137
+ f"serial class field {key!r} appears in both emit_api_overrides "
138
+ "and unconverted_keys; the features cannot be combined"
139
+ )
140
+ key_conversions[key] = emit_api_override
141
+ elif scd.has_unconverted_key(key):
135
142
  key_conversions[key] = key
136
143
  else:
137
144
  key_conversions[key] = key_convert_to_camelcase(key)
@@ -66,6 +66,11 @@ class SpecProperty:
66
66
  convert_value: PropertyConvertValue
67
67
  # Conversion of this property's name
68
68
  name_case: NameCase
69
+ # Pins the name used for this property in API emission to this exact
70
+ # string. The JSON key on the API boundary and the TypeScript field
71
+ # name both use this value verbatim. The Python field name and storage
72
+ # encoding are unaffected.
73
+ emit_api: str | None = None
69
74
  default: Any = None
70
75
  has_default: bool = False
71
76
  # Requires this value in parsing, even if it has a default
@@ -368,6 +373,7 @@ class SpecTypeDefn(SpecType):
368
373
  "convert_value",
369
374
  "default",
370
375
  "desc",
376
+ "emit_api",
371
377
  "ext_info",
372
378
  "extant",
373
379
  "label",
@@ -395,6 +401,21 @@ class SpecTypeDefn(SpecType):
395
401
  if name_case_raw is not None:
396
402
  property_name_case = NameCase(name_case_raw)
397
403
 
404
+ emit_api = data.get("emit_api")
405
+ if emit_api is not None:
406
+ builder.ensure(
407
+ isinstance(emit_api, str) and emit_api != "",
408
+ f"emit_api must be a non-empty string for property {name}",
409
+ )
410
+ builder.ensure(
411
+ util.is_valid_property_name(name),
412
+ f"emit_api requires a snake_case property name; got {name}",
413
+ )
414
+ builder.ensure(
415
+ property_name_case != NameCase.preserve,
416
+ f"emit_api cannot be combined with name_case: preserve on property {name}",
417
+ )
418
+
398
419
  if property_name_case != NameCase.preserve:
399
420
  assert util.is_valid_property_name(name), (
400
421
  f"{name} is not a valid property name"
@@ -447,6 +468,7 @@ class SpecTypeDefn(SpecType):
447
468
  spec_type=ptype,
448
469
  convert_value=convert_value,
449
470
  name_case=property_name_case,
471
+ emit_api=emit_api,
450
472
  has_default=has_default,
451
473
  default=default,
452
474
  parse_require=parse_require,
@@ -4,7 +4,7 @@ from .emit_typescript_util import (
4
4
  MODIFY_NOTICE,
5
5
  EmitTypescriptContext,
6
6
  resolve_namespace_ref,
7
- ts_name,
7
+ ts_property_name,
8
8
  )
9
9
 
10
10
  base_name_map_io_ts = {
@@ -70,7 +70,7 @@ def _emit_type_io_ts_impl(ctx: EmitTypescriptContext, stype: builder.SpecType) -
70
70
  missable_lines = []
71
71
  for prop in stype.properties.values():
72
72
  ref_type = refer_to_io_ts(ctx, prop.spec_type)
73
- prop_name = ts_name(prop.name, stype.name_case)
73
+ prop_name = ts_property_name(prop, stype.name_case)
74
74
  if prop.extant == builder.PropertyExtant.missing:
75
75
  # Unlike optional below, missing does not imply null is possible. They
76
76
  # treated distinctly.
@@ -32,7 +32,7 @@ from .emit_open_api_util import (
32
32
  TagPathsToRef,
33
33
  resolve_namespace_ref,
34
34
  )
35
- from .emit_typescript_util import ts_name
35
+ from .emit_typescript_util import ts_name, ts_property_name
36
36
  from .open_api_util import (
37
37
  OpenAPIArrayType,
38
38
  OpenAPIBooleanT,
@@ -580,7 +580,7 @@ def _emit_type(
580
580
 
581
581
  for prop in stype.properties.values():
582
582
  ref_type = open_api_type(ctx, prop.spec_type, config=config)
583
- prop_name = ts_name(prop.name, prop.name_case or stype.name_case)
583
+ prop_name = ts_property_name(prop, prop.name_case or stype.name_case)
584
584
  if prop.desc:
585
585
  property_desc[prop_name] = prop.desc
586
586
  if prop.has_default and not prop.parse_require:
@@ -808,6 +808,7 @@ class EmittedPropertiesMetadata:
808
808
  unconverted_values: set[str]
809
809
  to_string_values: set[str]
810
810
  parse_require: set[str]
811
+ emit_api_overrides: dict[str, str]
811
812
 
812
813
 
813
814
  def _emit_type_properties(
@@ -839,6 +840,7 @@ def _emit_properties(
839
840
  unconverted_values: set[str] = set()
840
841
  to_string_values: set[str] = set()
841
842
  parse_require: set[str] = set()
843
+ emit_api_overrides: dict[str, str] = {}
842
844
 
843
845
  if len(properties) > 0:
844
846
 
@@ -848,6 +850,9 @@ def _emit_properties(
848
850
  unconverted_keys.add(prop.name)
849
851
  py_name = python_field_name(prop.name, prop.name_case)
850
852
 
853
+ if prop.emit_api is not None:
854
+ emit_api_overrides[py_name] = prop.emit_api
855
+
851
856
  if prop.convert_value == builder.PropertyConvertValue.no_convert:
852
857
  unconverted_values.add(py_name)
853
858
  elif not stype.is_value_converted():
@@ -902,6 +907,7 @@ def _emit_properties(
902
907
  unconverted_values=unconverted_values,
903
908
  to_string_values=to_string_values,
904
909
  parse_require=parse_require,
910
+ emit_api_overrides=emit_api_overrides,
905
911
  )
906
912
 
907
913
 
@@ -1001,6 +1007,7 @@ def _emit_type(ctx: Context, stype: builder.SpecType) -> None:
1001
1007
  unconverted_values = emitted_properties_metadata.unconverted_values
1002
1008
  to_string_values = emitted_properties_metadata.to_string_values
1003
1009
  parse_require = emitted_properties_metadata.parse_require
1010
+ emit_api_overrides = emitted_properties_metadata.emit_api_overrides
1004
1011
 
1005
1012
  # Emit serial_class decorator
1006
1013
  ctx.out.write("@serial_class(\n")
@@ -1016,10 +1023,20 @@ def _emit_type(ctx: Context, stype: builder.SpecType) -> None:
1016
1023
  value_str = ", ".join([f'"{name}"' for name in sorted(values)])
1017
1024
  ctx.out.write(f"{INDENT}{key}={{{value_str}}},\n")
1018
1025
 
1026
+ def write_string_map(key: str, mapping: dict[str, str]) -> None:
1027
+ if len(mapping) == 0:
1028
+ return
1029
+ items = ", ".join(
1030
+ f'"{py_name}": "{api_name}"'
1031
+ for py_name, api_name in sorted(mapping.items())
1032
+ )
1033
+ ctx.out.write(f"{INDENT}{key}={{{items}}},\n")
1034
+
1019
1035
  write_values("unconverted_keys", unconverted_keys)
1020
1036
  write_values("unconverted_values", unconverted_values)
1021
1037
  write_values("to_string_values", to_string_values)
1022
1038
  write_values("parse_require", parse_require)
1039
+ write_string_map("emit_api_overrides", emit_api_overrides)
1023
1040
 
1024
1041
  ctx.out.write(")\n")
1025
1042
 
@@ -51,6 +51,14 @@ def ts_name(name: str, name_case: builder.NameCase) -> str:
51
51
  return "".join([bits[0], *[x.title() for x in bits[1:]]])
52
52
 
53
53
 
54
+ def ts_property_name(
55
+ prop: builder.SpecProperty, name_case: builder.NameCase | None = None
56
+ ) -> str:
57
+ if prop.emit_api is not None:
58
+ return prop.emit_api
59
+ return ts_name(prop.name, name_case if name_case is not None else prop.name_case)
60
+
61
+
54
62
  def emit_value_ts(
55
63
  ctx: EmitTypescriptContext,
56
64
  stype: builder.SpecType,
@@ -136,7 +144,7 @@ def emit_value_ts(
136
144
  else:
137
145
  value_to_emit = value[prop_name]
138
146
  did_emit = True
139
- typescript_name = ts_name(prop.name, prop.name_case)
147
+ typescript_name = ts_property_name(prop)
140
148
  obj_out += f"\n{INDENT * (indent + 1)}{typescript_name}: {emit_value_ts(ctx, prop.spec_type, value_to_emit, indent=indent + 1)},"
141
149
  whitespace = f"\n{INDENT * indent}" if did_emit else ""
142
150
  obj_out += f"{whitespace}}} as const"
@@ -218,7 +226,7 @@ def emit_type_ts(ctx: EmitTypescriptContext, stype: builder.SpecType) -> None:
218
226
  ctx.out.write("\n")
219
227
  for prop in stype.properties.values():
220
228
  ref_type = refer_to(ctx, prop.spec_type)
221
- prop_name = ts_name(prop.name, prop.name_case)
229
+ prop_name = ts_property_name(prop)
222
230
  if prop.has_default and not prop.parse_require:
223
231
  # For now, we'll assume the generated types with defaults are meant as
224
232
  # arguments, thus treat like extant==missing
@@ -16,7 +16,7 @@ from pkgs.serialization_util import serialize_for_api, serialize_for_storage
16
16
 
17
17
  from .. import builder, util
18
18
  from ..emit_python import python_field_name
19
- from ..emit_typescript_util import MODIFY_NOTICE, ts_name
19
+ from ..emit_typescript_util import MODIFY_NOTICE, ts_property_name
20
20
  from ..value_spec import convert_to_value_spec_type
21
21
 
22
22
  ext_info_parser = CachedParser(type_info_t.ExtInfo, strict_property_parsing=True)
@@ -425,7 +425,7 @@ def _build_map_type(
425
425
  map_property = MapProperty(
426
426
  type_name=prop.name,
427
427
  label=parts.label,
428
- api_name=ts_name(prop.name, prop.name_case),
428
+ api_name=ts_property_name(prop),
429
429
  extant=prop.extant,
430
430
  type_path=type_path_of(prop.spec_type),
431
431
  ext_info=parts.ext_info,
@@ -59,7 +59,7 @@ def one_line_formatter(record: ReadableLogRecord) -> str:
59
59
  @functools.cache
60
60
  def get_otel_resource() -> Resource:
61
61
  attributes: dict[str, base_t.JsonValue] = {
62
- "service.name": "integration-server",
62
+ "service.name": os.environ.get("DD_SERVICE", "integration-server"),
63
63
  "sdk.version": get_version(),
64
64
  }
65
65
  unc_version = os.environ.get("UNC_VERSION")