UncountablePythonSDK 0.0.40__tar.gz → 0.0.41__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 (231) hide show
  1. {uncountablepythonsdk-0.0.40/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.41}/PKG-INFO +1 -1
  2. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41/UncountablePythonSDK.egg-info}/PKG-INFO +1 -1
  3. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/UncountablePythonSDK.egg-info/SOURCES.txt +1 -0
  4. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/argument_parser/argument_parser.py +1 -1
  5. uncountablepythonsdk-0.0.41/pkgs/serialization/yaml.py +54 -0
  6. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/config.py +1 -13
  7. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/emit_open_api.py +3 -3
  8. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/load_types.py +2 -1
  9. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/value_spec/__main__.py +1 -1
  10. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/integration/cron.py +2 -0
  11. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/integration/entrypoint.py +5 -6
  12. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/integration/job.py +1 -1
  13. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/.github/workflows/documentation.yml +0 -0
  14. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/.github/workflows/publish.yml +0 -0
  15. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/.gitignore +0 -0
  16. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/README.md +0 -0
  17. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
  18. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/UncountablePythonSDK.egg-info/requires.txt +0 -0
  19. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
  20. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/docs/.gitignore +0 -0
  21. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/docs/conf.py +0 -0
  22. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/docs/index.md +0 -0
  23. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/docs/justfile +0 -0
  24. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/docs/quickstart.md +0 -0
  25. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/docs/requirements.txt +0 -0
  26. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/docs/static/favicons/android-chrome-192x192.png +0 -0
  27. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/docs/static/favicons/android-chrome-512x512.png +0 -0
  28. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/docs/static/favicons/apple-touch-icon.png +0 -0
  29. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/docs/static/favicons/browserconfig.xml +0 -0
  30. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/docs/static/favicons/favicon-16x16.png +0 -0
  31. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/docs/static/favicons/favicon-32x32.png +0 -0
  32. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/docs/static/favicons/manifest.json +0 -0
  33. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/docs/static/favicons/mstile-150x150.png +0 -0
  34. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/docs/static/favicons/safari-pinned-tab.svg +0 -0
  35. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/docs/static/logo_blue.png +0 -0
  36. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/examples/async_batch.py +0 -0
  37. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/examples/create_entity.py +0 -0
  38. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/examples/edit_recipe_inputs.py +0 -0
  39. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/examples/upload_files.py +0 -0
  40. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/__init__.py +0 -0
  41. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/argument_parser/__init__.py +0 -0
  42. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/argument_parser/_is_enum.py +0 -0
  43. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/argument_parser/_is_namedtuple.py +0 -0
  44. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/argument_parser/case_convert.py +0 -0
  45. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/serialization/__init__.py +0 -0
  46. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/serialization/missing_sentry.py +0 -0
  47. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/serialization/opaque_key.py +0 -0
  48. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/serialization/serial_class.py +0 -0
  49. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/serialization/serial_union.py +0 -0
  50. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/serialization_util/__init__.py +0 -0
  51. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
  52. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/serialization_util/convert_to_snakecase.py +0 -0
  53. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/serialization_util/serialization_helpers.py +0 -0
  54. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/strenum_compat/__init__.py +0 -0
  55. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/strenum_compat/strenum_compat.py +0 -0
  56. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/__init__.py +0 -0
  57. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/__main__.py +0 -0
  58. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/actions_registry/__init__.py +0 -0
  59. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/actions_registry/__main__.py +0 -0
  60. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
  61. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/builder.py +0 -0
  62. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/emit_io_ts.py +0 -0
  63. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/emit_open_api_util.py +0 -0
  64. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/emit_python.py +0 -0
  65. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/emit_typescript.py +0 -0
  66. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/emit_typescript_util.py +0 -0
  67. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/open_api_util.py +0 -0
  68. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/parts/base.py.prepart +0 -0
  69. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/parts/base.ts.prepart +0 -0
  70. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/test.py +0 -0
  71. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/type_info/__main__.py +0 -0
  72. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/type_info/emit_type_info.py +0 -0
  73. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/util.py +0 -0
  74. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/value_spec/__init__.py +0 -0
  75. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/value_spec/convert_type.py +0 -0
  76. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/value_spec/emit_python.py +0 -0
  77. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pkgs/type_spec/value_spec/types.py +0 -0
  78. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/pyproject.toml +0 -0
  79. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/setup.cfg +0 -0
  80. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/__init__.py +0 -0
  81. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/core/__init__.py +0 -0
  82. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/core/async_batch.py +0 -0
  83. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/core/client.py +0 -0
  84. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/core/file_upload.py +0 -0
  85. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/core/types.py +0 -0
  86. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/integration/__init__.py +0 -0
  87. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/integration/construct_client.py +0 -0
  88. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/integration/db/__init__.py +0 -0
  89. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/integration/db/connect.py +0 -0
  90. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/integration/executors/__init__.py +0 -0
  91. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/integration/executors/script_executor.py +0 -0
  92. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/integration/server.py +0 -0
  93. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/integration/types.py +0 -0
  94. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/py.typed +0 -0
  95. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/__init__.py +0 -0
  96. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/__init__.py +0 -0
  97. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/batch/__init__.py +0 -0
  98. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/batch/execute_batch.py +0 -0
  99. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
  100. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/chemical/__init__.py +0 -0
  101. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
  102. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/entity/__init__.py +0 -0
  103. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/entity/create_entities.py +0 -0
  104. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/entity/create_entity.py +0 -0
  105. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/entity/get_entities_data.py +0 -0
  106. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/entity/list_entities.py +0 -0
  107. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/entity/lock_entity.py +0 -0
  108. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
  109. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/entity/set_values.py +0 -0
  110. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
  111. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/entity/unlock_entity.py +0 -0
  112. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/equipment/__init__.py +0 -0
  113. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/equipment/associate_equipment_input.py +0 -0
  114. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/field_options/__init__.py +0 -0
  115. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/field_options/upsert_field_options.py +0 -0
  116. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/id_source/__init__.py +0 -0
  117. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/id_source/list_id_source.py +0 -0
  118. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/id_source/match_id_source.py +0 -0
  119. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/input_groups/__init__.py +0 -0
  120. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
  121. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/inputs/__init__.py +0 -0
  122. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/inputs/create_inputs.py +0 -0
  123. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/inputs/get_input_data.py +0 -0
  124. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/inputs/get_input_names.py +0 -0
  125. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
  126. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
  127. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/inputs/set_input_category.py +0 -0
  128. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/inputs/set_input_subcategories.py +0 -0
  129. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/inputs/set_intermediate_type.py +0 -0
  130. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/material_families/__init__.py +0 -0
  131. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/material_families/update_entity_material_families.py +0 -0
  132. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/outputs/__init__.py +0 -0
  133. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/outputs/get_output_data.py +0 -0
  134. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/outputs/get_output_names.py +0 -0
  135. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
  136. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/permissions/__init__.py +0 -0
  137. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
  138. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/project/__init__.py +0 -0
  139. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/project/get_projects.py +0 -0
  140. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/project/get_projects_data.py +0 -0
  141. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipe_links/__init__.py +0 -0
  142. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
  143. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipe_links/remove_recipe_link.py +0 -0
  144. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
  145. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
  146. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/__init__.py +0 -0
  147. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/add_recipe_to_project.py +0 -0
  148. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/archive_recipes.py +0 -0
  149. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/associate_recipe_as_input.py +0 -0
  150. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
  151. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/create_recipe.py +0 -0
  152. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/create_recipes.py +0 -0
  153. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
  154. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/edit_recipe_inputs.py +0 -0
  155. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/get_curve.py +0 -0
  156. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
  157. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/get_recipe_links.py +0 -0
  158. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
  159. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
  160. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/get_recipes_data.py +0 -0
  161. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/lock_recipes.py +0 -0
  162. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/remove_recipe_from_project.py +0 -0
  163. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
  164. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
  165. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/set_recipe_output_annotations.py +0 -0
  166. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/set_recipe_outputs.py +0 -0
  167. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
  168. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/unarchive_recipes.py +0 -0
  169. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/recipes/unlock_recipes.py +0 -0
  170. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/triggers/__init__.py +0 -0
  171. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/api/triggers/run_trigger.py +0 -0
  172. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/async_batch.py +0 -0
  173. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/async_batch_processor.py +0 -0
  174. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/async_batch_t.py +0 -0
  175. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/base.py +0 -0
  176. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/base_t.py +0 -0
  177. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/calculations.py +0 -0
  178. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/calculations_t.py +0 -0
  179. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/chemical_structure.py +0 -0
  180. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/chemical_structure_t.py +0 -0
  181. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/client_base.py +0 -0
  182. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/curves.py +0 -0
  183. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/curves_t.py +0 -0
  184. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/entity.py +0 -0
  185. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/entity_t.py +0 -0
  186. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/experiment_groups.py +0 -0
  187. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/experiment_groups_t.py +0 -0
  188. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/field_values.py +0 -0
  189. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/field_values_t.py +0 -0
  190. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/fields.py +0 -0
  191. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/fields_t.py +0 -0
  192. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/id_source.py +0 -0
  193. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/id_source_t.py +0 -0
  194. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/identifier.py +0 -0
  195. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/identifier_t.py +0 -0
  196. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/input_attributes.py +0 -0
  197. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/input_attributes_t.py +0 -0
  198. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/inputs.py +0 -0
  199. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/inputs_t.py +0 -0
  200. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/outputs.py +0 -0
  201. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/outputs_t.py +0 -0
  202. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/permissions.py +0 -0
  203. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/permissions_t.py +0 -0
  204. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/phases.py +0 -0
  205. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/phases_t.py +0 -0
  206. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/post_base.py +0 -0
  207. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/post_base_t.py +0 -0
  208. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/recipe_identifiers.py +0 -0
  209. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/recipe_identifiers_t.py +0 -0
  210. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/recipe_inputs.py +0 -0
  211. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/recipe_inputs_t.py +0 -0
  212. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/recipe_links.py +0 -0
  213. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/recipe_links_t.py +0 -0
  214. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/recipe_metadata.py +0 -0
  215. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/recipe_metadata_t.py +0 -0
  216. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/recipe_output_metadata.py +0 -0
  217. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/recipe_output_metadata_t.py +0 -0
  218. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/recipe_tags.py +0 -0
  219. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/recipe_tags_t.py +0 -0
  220. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/recipe_workflow_steps.py +0 -0
  221. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/recipe_workflow_steps_t.py +0 -0
  222. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/recipes.py +0 -0
  223. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/recipes_t.py +0 -0
  224. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/response.py +0 -0
  225. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/response_t.py +0 -0
  226. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/units.py +0 -0
  227. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/units_t.py +0 -0
  228. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/users.py +0 -0
  229. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/users_t.py +0 -0
  230. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/workflows.py +0 -0
  231. {uncountablepythonsdk-0.0.40 → uncountablepythonsdk-0.0.41}/uncountable/types/workflows_t.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.40
3
+ Version: 0.0.41
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.40
3
+ Version: 0.0.41
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
@@ -39,6 +39,7 @@ pkgs/serialization/missing_sentry.py
39
39
  pkgs/serialization/opaque_key.py
40
40
  pkgs/serialization/serial_class.py
41
41
  pkgs/serialization/serial_union.py
42
+ pkgs/serialization/yaml.py
42
43
  pkgs/serialization_util/__init__.py
43
44
  pkgs/serialization_util/_get_type_for_serialization.py
44
45
  pkgs/serialization_util/convert_to_snakecase.py
@@ -8,13 +8,13 @@ from decimal import Decimal
8
8
  from importlib import resources
9
9
 
10
10
  import dateutil.parser
11
- import yaml
12
11
 
13
12
  from pkgs.serialization import (
14
13
  MissingSentryType,
15
14
  OpaqueKey,
16
15
  get_serial_class_data,
17
16
  get_serial_union_data,
17
+ yaml,
18
18
  )
19
19
 
20
20
  from ._is_enum import is_string_enum_class
@@ -0,0 +1,54 @@
1
+ from decimal import Decimal
2
+ from typing import TYPE_CHECKING, Any
3
+
4
+ import yaml
5
+
6
+ if TYPE_CHECKING:
7
+ from _typeshed import SupportsRead as SupportsReadT
8
+ from _typeshed import SupportsWrite as SupportsWriteT
9
+
10
+ SupportsRead = SupportsReadT[Any]
11
+ SupportsWrite = SupportsWriteT[Any]
12
+ else:
13
+ SupportsRead = object
14
+ SupportsWrite = object
15
+
16
+
17
+ def _decimal_constructor(loader, node): # type:ignore
18
+ value = loader.construct_scalar(node)
19
+ return Decimal(value)
20
+
21
+
22
+ # A semi-acceptable patch to force a number to be parsed as a decimal, since pyyaml
23
+ # parses them as lossy floats otherwise. Though a bit ugly, at least this way we have
24
+ # support for decimal constants
25
+ yaml.SafeLoader.add_constructor("!decimal", _decimal_constructor)
26
+
27
+
28
+ class YAMLError(BaseException):
29
+ pass
30
+
31
+
32
+ def dumps(obj: Any, sort_keys: bool = False) -> str:
33
+ return yaml.dump(obj, sort_keys=sort_keys)
34
+
35
+
36
+ def dump(obj: Any, f: SupportsWrite, sort_keys: bool = False) -> None:
37
+ yaml.dump(obj, f, sort_keys=sort_keys)
38
+
39
+
40
+ def safe_load(src: str | bytes | SupportsRead) -> Any:
41
+ try:
42
+ return yaml.safe_load(src)
43
+ except yaml.YAMLError as e:
44
+ raise YAMLError() from e
45
+
46
+
47
+ def safe_dump(
48
+ obj: Any, sort_keys: bool = False, indent: int | None = None, width: int | None = None
49
+ ) -> str:
50
+ return yaml.safe_dump(obj, sort_keys=sort_keys, indent=indent, width=width)
51
+
52
+
53
+ def c_load(f: SupportsRead) -> Any:
54
+ return yaml.load(f, Loader=yaml.CLoader)
@@ -1,10 +1,9 @@
1
1
  import os
2
2
  from collections.abc import Callable, Mapping
3
3
  from dataclasses import dataclass
4
- from decimal import Decimal
5
4
  from typing import Self, TypeVar
6
5
 
7
- import yaml
6
+ from pkgs.serialization import yaml
8
7
 
9
8
  ConfigValueType = str | None | Mapping[str, str | None] | list[str]
10
9
 
@@ -103,17 +102,6 @@ def _parse_language(config_class: type[_T], raw_value: ConfigValueType) -> _T:
103
102
  return config_class(**raw_value)
104
103
 
105
104
 
106
- def _decimal_constructor(loader, node): # type:ignore
107
- value = loader.construct_scalar(node)
108
- return Decimal(value)
109
-
110
-
111
- # A semi-acceptable patch to force a number to be parsed as a decimal, since pyyaml
112
- # parses them as lossy floats otherwise. Though a bit ugly, at least this way we have
113
- # support for decimal constants
114
- yaml.SafeLoader.add_constructor("!decimal", _decimal_constructor)
115
-
116
-
117
105
  def parse_yaml_config(config_file: str) -> Config:
118
106
  with open(config_file, encoding="utf-8") as input:
119
107
  raw_config: dict[str, ConfigValueType] = yaml.safe_load(input)
@@ -9,7 +9,7 @@ import json
9
9
  import re
10
10
  from typing import Collection, cast
11
11
 
12
- import yaml
12
+ from pkgs.serialization import yaml
13
13
 
14
14
  from . import builder, util
15
15
  from .builder import EndpointGuideKey, RootGuideKey
@@ -169,7 +169,7 @@ def _serialize_global_context(ctx: EmitOpenAPIGlobalContext) -> str:
169
169
  oa_paths[path.path] = {"$ref": path.ref}
170
170
  oa_root["paths"] = oa_paths
171
171
 
172
- return yaml.dump(oa_root, sort_keys=False)
172
+ return yaml.dumps(oa_root, sort_keys=False)
173
173
 
174
174
 
175
175
  def _is_empty_object_type(typ: OpenAPIType) -> bool:
@@ -413,7 +413,7 @@ def _emit_namespace(
413
413
 
414
414
  path = f"{config.types_output}/common/{'/'.join(namespace.path)}.yaml"
415
415
  oa_namespace = {"components": oa_components}
416
- _rewrite_with_notice(path, yaml.dump(oa_namespace, sort_keys=False))
416
+ _rewrite_with_notice(path, yaml.dumps(oa_namespace, sort_keys=False))
417
417
 
418
418
 
419
419
  def _emit_type(
@@ -3,9 +3,10 @@ from collections.abc import Callable
3
3
  from io import StringIO
4
4
  from typing import Optional
5
5
 
6
- import yaml
7
6
  from shelljob import fs
8
7
 
8
+ from pkgs.serialization import yaml
9
+
9
10
  from .builder import SpecBuilder
10
11
  from .config import Config
11
12
 
@@ -20,9 +20,9 @@ import sys
20
20
  from typing import TypeVar, cast
21
21
 
22
22
  import regex as re
23
- import yaml
24
23
 
25
24
  from main.base.types import base_t, value_spec_t
25
+ from pkgs.serialization import yaml
26
26
 
27
27
  from ..util import parse_type_str, rewrite_file
28
28
  from .convert_type import convert_to_value_spec_type
@@ -27,4 +27,6 @@ def cron_job_executor(**kwargs: dict) -> None:
27
27
  args_passed.definition.executor, args_passed.profile_metadata
28
28
  )
29
29
 
30
+ print(f"running job {args_passed.definition.name}")
31
+
30
32
  job.run(args=args)
@@ -9,10 +9,9 @@ from uncountable.integration.types import ProfileDefinition
9
9
  profile_parser = CachedParser(ProfileDefinition)
10
10
 
11
11
 
12
- def main() -> None:
12
+ def main(blocking: bool) -> None:
13
13
  profiles_module = os.environ["UNC_PROFILES_MODULE"]
14
14
  with IntegrationServer(create_db_engine()) as server:
15
- # TODO: Loop through all job spec yaml files and call server.add_job
16
15
  profiles = [
17
16
  entry
18
17
  for entry in resources.files(profiles_module).iterdir()
@@ -26,7 +25,7 @@ def main() -> None:
26
25
  resource="profile.yaml",
27
26
  )
28
27
  except FileNotFoundError as e:
29
- print("WARN: profile.yaml not found", e)
28
+ print(f"WARN: profile.yaml not found for {profile_name}", e)
30
29
  continue
31
30
  server.register_profile(
32
31
  profile_name=profile_name,
@@ -35,8 +34,8 @@ def main() -> None:
35
34
  jobs=profile.jobs,
36
35
  )
37
36
 
38
- server.serve_forever()
37
+ if blocking:
38
+ server.serve_forever()
39
39
 
40
40
 
41
- if __name__ == "__main__":
42
- main()
41
+ main(__name__ == "__main__")
@@ -37,6 +37,6 @@ class CronJob(Job):
37
37
  def run(self, args: CronJobArguments) -> JobResult: ...
38
38
 
39
39
 
40
- def register_job(cls: Job) -> Job:
40
+ def register_job(cls: type[Job]) -> type[Job]:
41
41
  cls._unc_job_registered = True
42
42
  return cls