UncountablePythonSDK 0.0.33__tar.gz → 0.0.34__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 (194) hide show
  1. {uncountablepythonsdk-0.0.33/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.34}/PKG-INFO +1 -1
  2. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34/UncountablePythonSDK.egg-info}/PKG-INFO +1 -1
  3. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/serialization_util/serialization_helpers.py +86 -20
  4. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/id_source/match_id_source.py +0 -4
  5. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/get_recipes_data.py +0 -3
  6. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/.github/workflows/documentation.yml +0 -0
  7. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/.github/workflows/publish.yml +0 -0
  8. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/.gitignore +0 -0
  9. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/README.md +0 -0
  10. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/UncountablePythonSDK.egg-info/SOURCES.txt +0 -0
  11. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
  12. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/UncountablePythonSDK.egg-info/requires.txt +0 -0
  13. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
  14. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/docs/.gitignore +0 -0
  15. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/docs/conf.py +0 -0
  16. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/docs/index.md +0 -0
  17. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/docs/justfile +0 -0
  18. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/docs/quickstart.md +0 -0
  19. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/docs/requirements.txt +0 -0
  20. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/docs/static/favicons/android-chrome-192x192.png +0 -0
  21. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/docs/static/favicons/android-chrome-512x512.png +0 -0
  22. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/docs/static/favicons/apple-touch-icon.png +0 -0
  23. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/docs/static/favicons/browserconfig.xml +0 -0
  24. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/docs/static/favicons/favicon-16x16.png +0 -0
  25. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/docs/static/favicons/favicon-32x32.png +0 -0
  26. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/docs/static/favicons/manifest.json +0 -0
  27. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/docs/static/favicons/mstile-150x150.png +0 -0
  28. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/docs/static/favicons/safari-pinned-tab.svg +0 -0
  29. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/docs/static/logo_blue.png +0 -0
  30. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/examples/async_batch.py +0 -0
  31. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/examples/create_entity.py +0 -0
  32. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/examples/upload_files.py +0 -0
  33. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/__init__.py +0 -0
  34. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/argument_parser/__init__.py +0 -0
  35. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/argument_parser/_is_enum.py +0 -0
  36. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/argument_parser/_is_namedtuple.py +0 -0
  37. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/argument_parser/argument_parser.py +0 -0
  38. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/argument_parser/case_convert.py +0 -0
  39. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/serialization/__init__.py +0 -0
  40. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/serialization/missing_sentry.py +0 -0
  41. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/serialization/opaque_key.py +0 -0
  42. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/serialization/serial_class.py +0 -0
  43. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/serialization/serial_union.py +0 -0
  44. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/serialization_util/__init__.py +0 -0
  45. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
  46. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/serialization_util/convert_to_snakecase.py +0 -0
  47. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/strenum_compat/__init__.py +0 -0
  48. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/strenum_compat/strenum_compat.py +0 -0
  49. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/__init__.py +0 -0
  50. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/__main__.py +0 -0
  51. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/actions_registry/__init__.py +0 -0
  52. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/actions_registry/__main__.py +0 -0
  53. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
  54. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/builder.py +0 -0
  55. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/config.py +0 -0
  56. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/emit_io_ts.py +0 -0
  57. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/emit_open_api.py +0 -0
  58. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/emit_open_api_util.py +0 -0
  59. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/emit_python.py +0 -0
  60. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/emit_typescript.py +0 -0
  61. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/emit_typescript_util.py +0 -0
  62. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/load_types.py +0 -0
  63. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/open_api_util.py +0 -0
  64. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/parts/base.py.prepart +0 -0
  65. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/parts/base.ts.prepart +0 -0
  66. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/test.py +0 -0
  67. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/type_info/__main__.py +0 -0
  68. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/type_info/emit_type_info.py +0 -0
  69. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/util.py +0 -0
  70. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/value_spec/__init__.py +0 -0
  71. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/value_spec/__main__.py +0 -0
  72. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/value_spec/convert_type.py +0 -0
  73. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/value_spec/emit_python.py +0 -0
  74. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pkgs/type_spec/value_spec/types.py +0 -0
  75. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/pyproject.toml +0 -0
  76. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/setup.cfg +0 -0
  77. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/__init__.py +0 -0
  78. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/core/__init__.py +0 -0
  79. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/core/async_batch.py +0 -0
  80. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/core/client.py +0 -0
  81. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/core/file_upload.py +0 -0
  82. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/core/types.py +0 -0
  83. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/integration/__init__.py +0 -0
  84. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/integration/construct_client.py +0 -0
  85. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/integration/cron.py +0 -0
  86. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/integration/db/__init__.py +0 -0
  87. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/integration/db/connect.py +0 -0
  88. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/integration/entrypoint.py +0 -0
  89. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/integration/executors/__init__.py +0 -0
  90. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/integration/executors/script_executor.py +0 -0
  91. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/integration/job.py +0 -0
  92. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/integration/server.py +0 -0
  93. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/integration/types.py +0 -0
  94. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/py.typed +0 -0
  95. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/__init__.py +0 -0
  96. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/__init__.py +0 -0
  97. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/batch/__init__.py +0 -0
  98. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/batch/execute_batch.py +0 -0
  99. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
  100. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/chemical/__init__.py +0 -0
  101. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
  102. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/entity/__init__.py +0 -0
  103. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/entity/create_entities.py +0 -0
  104. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/entity/create_entity.py +0 -0
  105. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/entity/get_entities_data.py +0 -0
  106. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/entity/list_entities.py +0 -0
  107. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/entity/lock_entity.py +0 -0
  108. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
  109. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/entity/set_values.py +0 -0
  110. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
  111. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/entity/unlock_entity.py +0 -0
  112. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/field_options/__init__.py +0 -0
  113. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/field_options/upsert_field_options.py +0 -0
  114. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/id_source/__init__.py +0 -0
  115. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/id_source/list_id_source.py +0 -0
  116. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/input_groups/__init__.py +0 -0
  117. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
  118. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/inputs/__init__.py +0 -0
  119. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/inputs/create_inputs.py +0 -0
  120. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/inputs/get_input_data.py +0 -0
  121. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/inputs/get_input_names.py +0 -0
  122. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
  123. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
  124. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/inputs/set_input_category.py +0 -0
  125. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/inputs/set_input_subcategories.py +0 -0
  126. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/inputs/set_intermediate_type.py +0 -0
  127. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/material_families/__init__.py +0 -0
  128. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/material_families/update_entity_material_families.py +0 -0
  129. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/outputs/__init__.py +0 -0
  130. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/outputs/get_output_data.py +0 -0
  131. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/outputs/get_output_names.py +0 -0
  132. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
  133. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/permissions/__init__.py +0 -0
  134. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
  135. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/project/__init__.py +0 -0
  136. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/project/get_projects.py +0 -0
  137. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/project/get_projects_data.py +0 -0
  138. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipe_links/__init__.py +0 -0
  139. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
  140. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
  141. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
  142. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/__init__.py +0 -0
  143. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/add_recipe_to_project.py +0 -0
  144. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/archive_recipes.py +0 -0
  145. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/associate_recipe_as_input.py +0 -0
  146. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
  147. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/create_recipe.py +0 -0
  148. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/create_recipes.py +0 -0
  149. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
  150. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/edit_recipe_inputs.py +0 -0
  151. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/get_curve.py +0 -0
  152. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
  153. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/get_recipe_links.py +0 -0
  154. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
  155. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
  156. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/remove_recipe_from_project.py +0 -0
  157. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
  158. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
  159. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/set_recipe_outputs.py +0 -0
  160. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
  161. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/recipes/unarchive_recipes.py +0 -0
  162. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/triggers/__init__.py +0 -0
  163. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/api/triggers/run_trigger.py +0 -0
  164. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/async_batch.py +0 -0
  165. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/async_batch_processor.py +0 -0
  166. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/base.py +0 -0
  167. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/calculations.py +0 -0
  168. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/chemical_structure.py +0 -0
  169. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/client_base.py +0 -0
  170. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/curves.py +0 -0
  171. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/entity.py +0 -0
  172. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/experiment_groups.py +0 -0
  173. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/field_values.py +0 -0
  174. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/fields.py +0 -0
  175. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/id_source.py +0 -0
  176. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/identifier.py +0 -0
  177. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/input_attributes.py +0 -0
  178. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/inputs.py +0 -0
  179. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/outputs.py +0 -0
  180. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/permissions.py +0 -0
  181. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/phases.py +0 -0
  182. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/post_base.py +0 -0
  183. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/recipe_identifiers.py +0 -0
  184. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/recipe_inputs.py +0 -0
  185. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/recipe_links.py +0 -0
  186. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/recipe_metadata.py +0 -0
  187. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/recipe_output_metadata.py +0 -0
  188. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/recipe_tags.py +0 -0
  189. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/recipe_workflow_steps.py +0 -0
  190. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/recipes.py +0 -0
  191. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/response.py +0 -0
  192. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/units.py +0 -0
  193. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/users.py +0 -0
  194. {uncountablepythonsdk-0.0.33 → uncountablepythonsdk-0.0.34}/uncountable/types/workflows.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.33
3
+ Version: 0.0.34
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.1
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.33
3
+ Version: 0.0.34
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,7 @@
1
+ import dataclasses
1
2
  import datetime
2
3
  import enum
4
+ import functools
3
5
  from collections.abc import Callable, Mapping, Sequence
4
6
  from decimal import Decimal
5
7
  from typing import (
@@ -12,6 +14,11 @@ from typing import (
12
14
  overload,
13
15
  )
14
16
 
17
+ try:
18
+ import flask
19
+ except Exception:
20
+ pass
21
+
15
22
  from pkgs.argument_parser import snake_to_camel_case
16
23
  from pkgs.serialization import (
17
24
  MISSING_SENTRY,
@@ -42,10 +49,26 @@ def identity(x: T) -> T:
42
49
  def key_convert_to_camelcase(o: Any) -> str:
43
50
  if isinstance(o, OpaqueKey):
44
51
  return o
52
+ if isinstance(o, enum.StrEnum):
53
+ return o.value
45
54
  if isinstance(o, enum.Enum):
55
+ try:
56
+ print(
57
+ "DEPRECATED_SERIALIZATION--non-string-enum-used-as-key",
58
+ flask.request.path,
59
+ )
60
+ except Exception:
61
+ pass
46
62
  return o.value # type: ignore[no-any-return]
47
63
  if isinstance(o, str):
48
64
  return snake_to_camel_case(o)
65
+ if isinstance(o, int):
66
+ # temporary bypass to maintain behavior
67
+ return o # type: ignore[return-value]
68
+ try:
69
+ print("DEPRECATED_SERIALIZATION--non-string-used-as-key", o, flask.request.path)
70
+ except Exception:
71
+ pass
49
72
  return o # type: ignore[no-any-return]
50
73
 
51
74
 
@@ -61,30 +84,73 @@ def _serialize_dict(d: dict[str, Any]) -> dict[str, JsonValue]:
61
84
  return {k: serialize_for_storage(v) for k, v in d.items() if v != MISSING_SENTRY}
62
85
 
63
86
 
64
- def _convert_dataclass(d: Dataclass) -> dict[str, JsonValue]:
65
- dct = type(d)
66
- scd = get_serial_class_data(dct)
87
+ def _to_string_value(value: Any) -> str:
88
+ assert isinstance(value, (Decimal, int))
89
+ return str(value)
90
+
91
+
92
+ @dataclasses.dataclass(kw_only=True)
93
+ class DataclassConversions:
94
+ key_conversions: dict[str, str]
95
+ value_conversion_functions: dict[str, Callable[[Any], JsonValue]]
96
+
97
+
98
+ @functools.lru_cache(maxsize=10000)
99
+ def _get_dataclass_conversion_lookups(dataclass_type: Any) -> DataclassConversions:
100
+ scd = get_serial_class_data(dataclass_type)
67
101
 
68
- def key_convert(key: str) -> str:
102
+ key_conversions: dict[str, str] = {}
103
+ value_conversion_functions: dict[str, Callable[[Any], JsonValue]] = {}
104
+
105
+ for field in dataclasses.fields(dataclass_type):
106
+ key = field.name
69
107
  if scd.has_unconverted_key(key):
70
- return key
71
- return key_convert_to_camelcase(key)
108
+ key_conversions[key] = key
109
+ else:
110
+ key_conversions[key] = key_convert_to_camelcase(key)
72
111
 
73
- def value_convert(key: str, value: Any) -> JsonValue:
74
112
  if scd.has_to_string_value(key):
75
- # Limit to types we know we need to support to avoid surprises
76
- # Generics, like List/Dict would need to be per-value stringified
77
- assert isinstance(value, (Decimal, int))
78
- return str(value)
79
- if scd.has_unconverted_value(key):
80
- return value # type: ignore[no-any-return]
81
- return serialize_for_api(value) # type: ignore[no-any-return,unused-ignore]
82
-
83
- return {
84
- key_convert(k): (value_convert(k, v) if v is not None else None)
85
- for k, v in d.__dict__.items()
86
- if v != MISSING_SENTRY
87
- }
113
+ value_conversion_functions[key] = _to_string_value
114
+ elif scd.has_unconverted_value(key):
115
+ value_conversion_functions[key] = identity
116
+ else:
117
+ value_conversion_functions[key] = serialize_for_api
118
+
119
+ return DataclassConversions(
120
+ key_conversions=key_conversions,
121
+ value_conversion_functions=value_conversion_functions,
122
+ )
123
+
124
+
125
+ def _convert_dataclass(d: Any) -> dict[str, JsonValue]:
126
+ conversions = _get_dataclass_conversion_lookups(type(d)) # type: ignore[arg-type]
127
+ # return {
128
+ # conversions.key_conversions[k]: (
129
+ # conversions.value_conversion_functions[k](v) if v is not None else None
130
+ # )
131
+ # for k, v in d.__dict__.items()
132
+ # if v != MISSING_SENTRY
133
+ # }
134
+
135
+ serialized_data_class: dict[str, JsonValue] = {}
136
+ for k, v in d.__dict__.items():
137
+ if v == MISSING_SENTRY:
138
+ continue
139
+ if k not in conversions.key_conversions:
140
+ try:
141
+ print(
142
+ "DEPRECATED_SERIALIZATION--missing-dataclass-key",
143
+ k,
144
+ flask.request.path,
145
+ )
146
+ except Exception:
147
+ pass
148
+ continue
149
+ serialized_data_class[conversions.key_conversions[k]] = (
150
+ conversions.value_conversion_functions[k](v) if v is not None else None
151
+ )
152
+
153
+ return serialized_data_class
88
154
 
89
155
 
90
156
  _SERIALIZATION_FUNCS_STANDARD = {
@@ -8,7 +8,6 @@ import typing # noqa: F401
8
8
  import datetime # noqa: F401
9
9
  from decimal import Decimal # noqa: F401
10
10
  from dataclasses import dataclass
11
- from pkgs.serialization import serial_class
12
11
  from ... import base as base_t
13
12
  from ... import id_source as id_source_t
14
13
 
@@ -39,9 +38,6 @@ class Match:
39
38
 
40
39
 
41
40
  # DO NOT MODIFY -- This file is generated by type_spec
42
- @serial_class(
43
- unconverted_values={"results"},
44
- )
45
41
  @dataclass(kw_only=True)
46
42
  class Data:
47
43
  results: list[Match]
@@ -15,7 +15,6 @@ from ... import inputs as inputs_t
15
15
  from ... import outputs as outputs_t
16
16
  from ... import recipe_metadata as recipe_metadata_t
17
17
  from ... import recipe_tags as recipe_tags_t
18
- from ... import users as users_t
19
18
  from ... import workflows as workflows_t
20
19
 
21
20
  __all__: list[str] = [
@@ -97,7 +96,6 @@ class RecipeInput:
97
96
  quantity_json: base_t.JsonValue
98
97
  curve_id: typing.Optional[base_t.ObjectId]
99
98
  actual_quantity_json: base_t.JsonValue
100
- input_type: str
101
99
  behavior: str
102
100
  quantity_dec: typing.Optional[Decimal] = None
103
101
  actual_quantity_dec: typing.Optional[Decimal] = None
@@ -170,7 +168,6 @@ class Data:
170
168
  inputs: list[inputs_t.SimpleInput]
171
169
  outputs: list[outputs_t.SimpleOutput]
172
170
  output_conditions: list[SimpleOutputCondition]
173
- users: list[users_t.SimpleUser]
174
171
  recipe_tags: list[recipe_tags_t.SimpleRecipeTag]
175
172
  experiment_groups: list[experiment_groups_t.SimpleExperimentGroup]
176
173
  # DO NOT MODIFY -- This file is generated by type_spec