UncountablePythonSDK 0.0.76__tar.gz → 0.0.77__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 (297) hide show
  1. {uncountablepythonsdk-0.0.76/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.77}/PKG-INFO +1 -1
  2. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77/UncountablePythonSDK.egg-info}/PKG-INFO +1 -1
  3. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/argument_parser/argument_parser.py +7 -7
  4. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/filesystem_utils/_s3_session.py +3 -3
  5. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/builder.py +19 -19
  6. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/config.py +3 -3
  7. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/emit_io_ts.py +6 -6
  8. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/emit_open_api.py +4 -4
  9. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/emit_python.py +15 -15
  10. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/emit_typescript.py +4 -4
  11. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/emit_typescript_util.py +4 -4
  12. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/type_info/emit_type_info.py +6 -6
  13. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/core/file_upload.py +1 -3
  14. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/executors/generic_upload_executor.py +7 -7
  15. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/executors/script_executor.py +3 -3
  16. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/secret_retrieval/retrieve_secret.py +1 -1
  17. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/entity_t.py +1 -1
  18. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/.github/workflows/documentation.yml +0 -0
  19. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/.github/workflows/publish.yml +0 -0
  20. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/.gitignore +0 -0
  21. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/README.md +0 -0
  22. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/UncountablePythonSDK.egg-info/SOURCES.txt +0 -0
  23. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
  24. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/UncountablePythonSDK.egg-info/requires.txt +0 -0
  25. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
  26. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/docs/.gitignore +0 -0
  27. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/docs/conf.py +0 -0
  28. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/docs/index.md +0 -0
  29. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/docs/justfile +0 -0
  30. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/docs/quickstart.md +0 -0
  31. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/docs/requirements.txt +0 -0
  32. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/docs/static/favicons/android-chrome-192x192.png +0 -0
  33. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/docs/static/favicons/android-chrome-512x512.png +0 -0
  34. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/docs/static/favicons/apple-touch-icon.png +0 -0
  35. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/docs/static/favicons/browserconfig.xml +0 -0
  36. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/docs/static/favicons/favicon-16x16.png +0 -0
  37. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/docs/static/favicons/favicon-32x32.png +0 -0
  38. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/docs/static/favicons/manifest.json +0 -0
  39. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/docs/static/favicons/mstile-150x150.png +0 -0
  40. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/docs/static/favicons/safari-pinned-tab.svg +0 -0
  41. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/docs/static/logo_blue.png +0 -0
  42. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/examples/async_batch.py +0 -0
  43. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/examples/create_entity.py +0 -0
  44. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/examples/edit_recipe_inputs.py +0 -0
  45. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/examples/integration-server/jobs/materials_auto/example_cron.py +0 -0
  46. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/examples/integration-server/jobs/materials_auto/profile.yaml +0 -0
  47. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/examples/integration-server/pyproject.toml +0 -0
  48. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/examples/invoke_uploader.py +0 -0
  49. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/examples/set_recipe_metadata_file.py +0 -0
  50. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/examples/set_recipe_output_file_sdk.py +0 -0
  51. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/examples/upload_files.py +0 -0
  52. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/__init__.py +0 -0
  53. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/argument_parser/__init__.py +0 -0
  54. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/argument_parser/_is_enum.py +0 -0
  55. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/argument_parser/_is_namedtuple.py +0 -0
  56. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/argument_parser/case_convert.py +0 -0
  57. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/filesystem_utils/__init__.py +0 -0
  58. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/filesystem_utils/_gdrive_session.py +0 -0
  59. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/filesystem_utils/_local_session.py +0 -0
  60. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/filesystem_utils/_sftp_session.py +0 -0
  61. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/filesystem_utils/file_type_utils.py +0 -0
  62. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/filesystem_utils/filesystem_session.py +0 -0
  63. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/py.typed +0 -0
  64. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/serialization/__init__.py +0 -0
  65. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/serialization/missing_sentry.py +0 -0
  66. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/serialization/opaque_key.py +0 -0
  67. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/serialization/serial_class.py +0 -0
  68. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/serialization/serial_union.py +0 -0
  69. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/serialization/yaml.py +0 -0
  70. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/serialization_util/__init__.py +0 -0
  71. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
  72. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/serialization_util/convert_to_snakecase.py +0 -0
  73. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/serialization_util/serialization_helpers.py +0 -0
  74. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/strenum_compat/__init__.py +0 -0
  75. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/strenum_compat/strenum_compat.py +0 -0
  76. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/__init__.py +0 -0
  77. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/__main__.py +0 -0
  78. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/actions_registry/__init__.py +0 -0
  79. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/actions_registry/__main__.py +0 -0
  80. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
  81. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/emit_open_api_util.py +0 -0
  82. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/load_types.py +0 -0
  83. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/open_api_util.py +0 -0
  84. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/parts/base.py.prepart +0 -0
  85. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/parts/base.ts.prepart +0 -0
  86. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/test.py +0 -0
  87. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/type_info/__main__.py +0 -0
  88. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/util.py +0 -0
  89. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/value_spec/__init__.py +0 -0
  90. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/value_spec/__main__.py +0 -0
  91. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/value_spec/convert_type.py +0 -0
  92. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/value_spec/emit_python.py +0 -0
  93. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pkgs/type_spec/value_spec/types.py +0 -0
  94. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/pyproject.toml +0 -0
  95. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/setup.cfg +0 -0
  96. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/__init__.py +0 -0
  97. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/core/__init__.py +0 -0
  98. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/core/async_batch.py +0 -0
  99. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/core/client.py +0 -0
  100. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/core/environment.py +0 -0
  101. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/core/types.py +0 -0
  102. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/__init__.py +0 -0
  103. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/cli.py +0 -0
  104. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/construct_client.py +0 -0
  105. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/cron.py +0 -0
  106. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/db/__init__.py +0 -0
  107. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/db/connect.py +0 -0
  108. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/db/session.py +0 -0
  109. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/entrypoint.py +0 -0
  110. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/executors/__init__.py +0 -0
  111. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/executors/executors.py +0 -0
  112. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/job.py +0 -0
  113. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/__init__.py +0 -0
  114. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/__init__.py +0 -0
  115. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/command_client.py +0 -0
  116. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/command_server.py +0 -0
  117. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
  118. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/protocol/command_server.proto +0 -0
  119. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +0 -0
  120. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +0 -0
  121. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +0 -0
  122. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/command_server/types.py +0 -0
  123. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/datastore/__init__.py +0 -0
  124. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/datastore/datastore_sqlite.py +0 -0
  125. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/datastore/interface.py +0 -0
  126. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/datastore/model.py +0 -0
  127. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/job_scheduler.py +0 -0
  128. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/queue_runner.py +0 -0
  129. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/types.py +0 -0
  130. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/queue_runner/worker.py +0 -0
  131. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/scan_profiles.py +0 -0
  132. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/scheduler.py +0 -0
  133. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/secret_retrieval/__init__.py +0 -0
  134. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/server.py +0 -0
  135. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/telemetry.py +0 -0
  136. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/integration/webhook_server/entrypoint.py +0 -0
  137. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/py.typed +0 -0
  138. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/__init__.py +0 -0
  139. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/__init__.py +0 -0
  140. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/batch/__init__.py +0 -0
  141. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/batch/execute_batch.py +0 -0
  142. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
  143. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/chemical/__init__.py +0 -0
  144. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
  145. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/__init__.py +0 -0
  146. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/create_entities.py +0 -0
  147. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/create_entity.py +0 -0
  148. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/get_entities_data.py +0 -0
  149. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/grant_entity_permissions.py +0 -0
  150. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/list_entities.py +0 -0
  151. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/lock_entity.py +0 -0
  152. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
  153. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/set_values.py +0 -0
  154. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
  155. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/entity/unlock_entity.py +0 -0
  156. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/equipment/__init__.py +0 -0
  157. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/equipment/associate_equipment_input.py +0 -0
  158. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/field_options/__init__.py +0 -0
  159. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/field_options/upsert_field_options.py +0 -0
  160. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/id_source/__init__.py +0 -0
  161. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/id_source/list_id_source.py +0 -0
  162. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/id_source/match_id_source.py +0 -0
  163. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/input_groups/__init__.py +0 -0
  164. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
  165. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/__init__.py +0 -0
  166. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/create_inputs.py +0 -0
  167. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/get_input_data.py +0 -0
  168. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/get_input_names.py +0 -0
  169. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
  170. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
  171. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/set_input_category.py +0 -0
  172. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/set_input_subcategories.py +0 -0
  173. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/inputs/set_intermediate_type.py +0 -0
  174. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/material_families/__init__.py +0 -0
  175. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/material_families/update_entity_material_families.py +0 -0
  176. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/outputs/__init__.py +0 -0
  177. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/outputs/get_output_data.py +0 -0
  178. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/outputs/get_output_names.py +0 -0
  179. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
  180. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/permissions/__init__.py +0 -0
  181. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
  182. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/project/__init__.py +0 -0
  183. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/project/get_projects.py +0 -0
  184. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/project/get_projects_data.py +0 -0
  185. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipe_links/__init__.py +0 -0
  186. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
  187. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipe_links/remove_recipe_link.py +0 -0
  188. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
  189. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
  190. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/__init__.py +0 -0
  191. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/add_recipe_to_project.py +0 -0
  192. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/archive_recipes.py +0 -0
  193. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/associate_recipe_as_input.py +0 -0
  194. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
  195. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/clear_recipe_outputs.py +0 -0
  196. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/create_recipe.py +0 -0
  197. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/create_recipes.py +0 -0
  198. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
  199. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/edit_recipe_inputs.py +0 -0
  200. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/get_column_calculation_values.py +0 -0
  201. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/get_curve.py +0 -0
  202. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
  203. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/get_recipe_links.py +0 -0
  204. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
  205. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
  206. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/get_recipes_data.py +0 -0
  207. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/lock_recipes.py +0 -0
  208. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/remove_recipe_from_project.py +0 -0
  209. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
  210. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
  211. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/set_recipe_output_annotations.py +0 -0
  212. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/set_recipe_output_file.py +0 -0
  213. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/set_recipe_outputs.py +0 -0
  214. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
  215. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/unarchive_recipes.py +0 -0
  216. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/recipes/unlock_recipes.py +0 -0
  217. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/triggers/__init__.py +0 -0
  218. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/triggers/run_trigger.py +0 -0
  219. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/uploader/__init__.py +0 -0
  220. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/api/uploader/invoke_uploader.py +0 -0
  221. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/async_batch.py +0 -0
  222. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/async_batch_processor.py +0 -0
  223. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/async_batch_t.py +0 -0
  224. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/auth_retrieval.py +0 -0
  225. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/auth_retrieval_t.py +0 -0
  226. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/base.py +0 -0
  227. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/base_t.py +0 -0
  228. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/calculations.py +0 -0
  229. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/calculations_t.py +0 -0
  230. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/chemical_structure.py +0 -0
  231. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/chemical_structure_t.py +0 -0
  232. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/client_base.py +0 -0
  233. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/client_config.py +0 -0
  234. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/client_config_t.py +0 -0
  235. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/curves.py +0 -0
  236. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/curves_t.py +0 -0
  237. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/entity.py +0 -0
  238. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/experiment_groups.py +0 -0
  239. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/experiment_groups_t.py +0 -0
  240. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/field_values.py +0 -0
  241. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/field_values_t.py +0 -0
  242. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/fields.py +0 -0
  243. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/fields_t.py +0 -0
  244. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/generic_upload.py +0 -0
  245. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/generic_upload_t.py +0 -0
  246. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/id_source.py +0 -0
  247. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/id_source_t.py +0 -0
  248. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/identifier.py +0 -0
  249. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/identifier_t.py +0 -0
  250. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/input_attributes.py +0 -0
  251. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/input_attributes_t.py +0 -0
  252. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/inputs.py +0 -0
  253. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/inputs_t.py +0 -0
  254. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/integration_server.py +0 -0
  255. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/integration_server_t.py +0 -0
  256. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/job_definition.py +0 -0
  257. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/job_definition_t.py +0 -0
  258. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/outputs.py +0 -0
  259. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/outputs_t.py +0 -0
  260. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/overrides.py +0 -0
  261. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/overrides_t.py +0 -0
  262. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/permissions.py +0 -0
  263. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/permissions_t.py +0 -0
  264. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/phases.py +0 -0
  265. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/phases_t.py +0 -0
  266. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/post_base.py +0 -0
  267. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/post_base_t.py +0 -0
  268. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/queued_job.py +0 -0
  269. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/queued_job_t.py +0 -0
  270. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_identifiers.py +0 -0
  271. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_identifiers_t.py +0 -0
  272. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_inputs.py +0 -0
  273. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_inputs_t.py +0 -0
  274. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_links.py +0 -0
  275. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_links_t.py +0 -0
  276. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_metadata.py +0 -0
  277. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_metadata_t.py +0 -0
  278. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_output_metadata.py +0 -0
  279. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_output_metadata_t.py +0 -0
  280. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_tags.py +0 -0
  281. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_tags_t.py +0 -0
  282. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_workflow_steps.py +0 -0
  283. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/recipe_workflow_steps_t.py +0 -0
  284. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/recipes.py +0 -0
  285. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/recipes_t.py +0 -0
  286. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/response.py +0 -0
  287. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/response_t.py +0 -0
  288. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/secret_retrieval.py +0 -0
  289. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/secret_retrieval_t.py +0 -0
  290. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/units.py +0 -0
  291. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/units_t.py +0 -0
  292. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/users.py +0 -0
  293. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/users_t.py +0 -0
  294. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/webhook_job.py +0 -0
  295. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/webhook_job_t.py +0 -0
  296. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/uncountable/types/workflows.py +0 -0
  297. {uncountablepythonsdk-0.0.76 → uncountablepythonsdk-0.0.77}/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.76
3
+ Version: 0.0.77
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.76
3
+ Version: 0.0.77
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
@@ -49,7 +49,7 @@ class ParserExtraFieldsError(ParserError):
49
49
  self.extra_fields = extra_fields
50
50
 
51
51
  def __str__(self) -> str:
52
- return f"extra fields were provided: {", ".join(self.extra_fields)}"
52
+ return f"extra fields were provided: {', '.join(self.extra_fields)}"
53
53
 
54
54
 
55
55
  def is_optional(field_type: typing.Any) -> bool:
@@ -268,15 +268,15 @@ def _build_parser_inner(
268
268
 
269
269
  def parse_int(value: typing.Any) -> T:
270
270
  if isinstance(value, str):
271
- assert (
272
- "_" not in value
273
- ), "numbers with underscores not considered integers"
271
+ assert "_" not in value, (
272
+ "numbers with underscores not considered integers"
273
+ )
274
274
 
275
275
  dec_value = Decimal(value)
276
276
  int_value = int(dec_value)
277
- assert (
278
- int_value == dec_value
279
- ), f"value ({value}) cannot be parsed to int without discarding precision"
277
+ assert int_value == dec_value, (
278
+ f"value ({value}) cannot be parsed to int without discarding precision"
279
+ )
280
280
  return int_value # type: ignore
281
281
 
282
282
  return parse_int
@@ -76,9 +76,9 @@ class S3Session(FileSystemSession):
76
76
  filepaths: list[FileSystemObject],
77
77
  ) -> list[FileObjectData]:
78
78
  downloaded_files: list[FileObjectData] = []
79
- assert (
80
- self.bucket is not None
81
- ), "call to download_files on uninitialized s3 session"
79
+ assert self.bucket is not None, (
80
+ "call to download_files on uninitialized s3 session"
81
+ )
82
82
 
83
83
  for file_object in filepaths:
84
84
  if (
@@ -359,9 +359,9 @@ class SpecTypeDefn(SpecType):
359
359
  property_name_case = NameCase(name_case_raw)
360
360
 
361
361
  if property_name_case != NameCase.preserve:
362
- assert util.is_valid_property_name(
363
- name
364
- ), f"{name} is not a valid property name"
362
+ assert util.is_valid_property_name(name), (
363
+ f"{name} is not a valid property name"
364
+ )
365
365
 
366
366
  data_type = data.get("type")
367
367
  builder.ensure(data_type is not None, "missing `type` entry")
@@ -590,21 +590,21 @@ class SpecTypeDefnUnion(SpecTypeDefn):
590
590
  self.discriminator_map = {}
591
591
  for sub_type in self.types:
592
592
  builder.push_where(sub_type.name)
593
- assert isinstance(
594
- sub_type, SpecTypeDefnObject
595
- ), "union-type-must-be-object"
593
+ assert isinstance(sub_type, SpecTypeDefnObject), (
594
+ "union-type-must-be-object"
595
+ )
596
596
  assert sub_type.properties is not None
597
597
  discriminator_type = sub_type.properties.get(self.discriminator)
598
- assert (
599
- discriminator_type is not None
600
- ), f"missing-discriminator-field: {sub_type}"
598
+ assert discriminator_type is not None, (
599
+ f"missing-discriminator-field: {sub_type}"
600
+ )
601
601
  prop_type = unwrap_literal_type(discriminator_type.spec_type)
602
602
  assert prop_type is not None
603
603
  assert prop_type.is_value_to_string()
604
604
  discriminant = str(prop_type.value)
605
- assert (
606
- discriminant not in self.discriminator_map
607
- ), f"duplicated-discriminant, {discriminant} in {sub_type}"
605
+ assert discriminant not in self.discriminator_map, (
606
+ f"duplicated-discriminant, {discriminant} in {sub_type}"
607
+ )
608
608
  self.discriminator_map[discriminant] = sub_type
609
609
 
610
610
  builder.pop_where()
@@ -924,9 +924,9 @@ class SpecEndpoint:
924
924
  self.is_external = self.path_root == "api/external"
925
925
  self.has_attachment = data.get("has_attachment", False)
926
926
 
927
- assert (
928
- not is_sdk or self.desc is not None
929
- ), f"Endpoint description required for SDK endpoints, missing: {path}"
927
+ assert not is_sdk or self.desc is not None, (
928
+ f"Endpoint description required for SDK endpoints, missing: {path}"
929
+ )
930
930
 
931
931
  @property
932
932
  def resolved_path(self: Self) -> str:
@@ -1108,9 +1108,9 @@ class SpecNamespace:
1108
1108
  continue
1109
1109
 
1110
1110
  if "value" in defn:
1111
- assert util.is_valid_property_name(
1112
- name
1113
- ), f"{name} is not a valid constant name"
1111
+ assert util.is_valid_property_name(name), (
1112
+ f"{name} is not a valid constant name"
1113
+ )
1114
1114
  spec_constant = SpecConstant(self, name)
1115
1115
  self.constants[name] = spec_constant
1116
1116
  continue
@@ -1455,4 +1455,4 @@ class SpecBuilder:
1455
1455
  )
1456
1456
 
1457
1457
  def resolve_proper_name(self, stype: SpecTypeDefn) -> str:
1458
- return f"{".".join(stype.namespace.path)}.{stype.name}"
1458
+ return f"{'.'.join(stype.namespace.path)}.{stype.name}"
@@ -108,9 +108,9 @@ def parse_yaml_config(config_file: str) -> Config:
108
108
  raw_config: dict[str, ConfigValueType] = yaml.safe_load(input)
109
109
 
110
110
  raw_type_spec_types = raw_config["type_spec_types"]
111
- assert isinstance(
112
- raw_type_spec_types, list
113
- ), "type_spec_types, must be a list of folders"
111
+ assert isinstance(raw_type_spec_types, list), (
112
+ "type_spec_types, must be a list of folders"
113
+ )
114
114
  type_spec_types = [os.path.abspath(folder) for folder in raw_type_spec_types]
115
115
 
116
116
  api_endpoint = _parse_string_lookup(
@@ -100,14 +100,14 @@ def _emit_type_io_ts_impl(ctx: EmitTypescriptContext, stype: builder.SpecType) -
100
100
  else:
101
101
  assert len(missable_lines) > 0 and len(required_lines) > 0
102
102
  ctx.out.write("IO.intersection([\n")
103
- ctx.out.write(f"{INDENT}IO.partial({"{"}\n")
103
+ ctx.out.write(f"{INDENT}IO.partial({'{'}\n")
104
104
  for line in missable_lines:
105
105
  ctx.out.write(f"{INDENT}{line}")
106
- ctx.out.write(f"{INDENT}{"}"}),\n")
107
- ctx.out.write(f"{INDENT}IO.type({"{"}\n")
106
+ ctx.out.write(f"{INDENT}{'}'}),\n")
107
+ ctx.out.write(f"{INDENT}IO.type({'{'}\n")
108
108
  for line in required_lines:
109
109
  ctx.out.write(f"{INDENT}{line}")
110
- ctx.out.write(f"{INDENT}{"}"}),\n")
110
+ ctx.out.write(f"{INDENT}{'}'}),\n")
111
111
  ctx.out.write("])\n")
112
112
 
113
113
  ctx.out.write("\n")
@@ -125,11 +125,11 @@ def refer_to_io_ts(
125
125
  spec = refer_to_io_ts(ctx, stype.parameters[0])
126
126
  return f"IO.array({spec})"
127
127
  if stype.defn_type.name == builder.BaseTypeName.s_union:
128
- return f'IO.union([{", ".join([refer_to_io_ts(ctx, p) for p in stype.parameters])}])'
128
+ return f"IO.union([{', '.join([refer_to_io_ts(ctx, p) for p in stype.parameters])}])"
129
129
  if stype.defn_type.name == builder.BaseTypeName.s_optional:
130
130
  return f"IO.optional({refer_to_io_ts(ctx, stype.parameters[0])})"
131
131
  if stype.defn_type.name == builder.BaseTypeName.s_tuple:
132
- return f"IO.tuple([{", ".join([refer_to_io_ts(ctx, p) for p in stype.parameters])}])"
132
+ return f"IO.tuple([{', '.join([refer_to_io_ts(ctx, p) for p in stype.parameters])}])"
133
133
  return refer_to_io_ts(ctx, stype.defn_type)
134
134
 
135
135
  assert isinstance(stype, builder.SpecTypeDefn)
@@ -416,7 +416,7 @@ def _emit_namespace(
416
416
  {name: value.asdict() for name, value in types.items()},
417
417
  )
418
418
 
419
- path = f"{config.types_output}/common/{"/".join(namespace.path)}.yaml"
419
+ path = f"{config.types_output}/common/{'/'.join(namespace.path)}.yaml"
420
420
  oa_namespace = {"components": oa_components}
421
421
  _rewrite_with_notice(path, yaml.dumps(oa_namespace, sort_keys=False))
422
422
 
@@ -559,7 +559,7 @@ def _emit_endpoint(
559
559
  gctx.tags.add(EmitOpenAPITag(name=tag_name, description=""))
560
560
  gctx.tag_groups[tag_group].add(tag_name)
561
561
 
562
- ref_path = f"common/{"/".join(namespace.path)}.yaml#/components/endpoint"
562
+ ref_path = f"common/{'/'.join(namespace.path)}.yaml#/components/endpoint"
563
563
  ep = namespace.endpoint
564
564
  gctx.paths.append(
565
565
  EmitOpenAPIPath(
@@ -577,7 +577,7 @@ def _emit_endpoint(
577
577
  ctx.endpoint = EmitOpenAPIEndpoint(
578
578
  method=namespace.endpoint.method.lower(),
579
579
  tags=[tag_name],
580
- summary=f"{"/".join(namespace.path[path_cutoff:])}",
580
+ summary=f"{'/'.join(namespace.path[path_cutoff:])}",
581
581
  description=description,
582
582
  is_beta=namespace.endpoint.is_beta,
583
583
  stability_level=namespace.endpoint.stability_level,
@@ -694,5 +694,5 @@ def open_api_type(
694
694
  ctx.namespaces.add(stype.namespace)
695
695
  # external namespace resolution
696
696
  return OpenAPIRefType(
697
- source=f"{resolve_namespace_ref(source_path=ctx.namespace.path, ref_path=stype.namespace.path, ref="/components/schema")}/{stype.name}"
697
+ source=f"{resolve_namespace_ref(source_path=ctx.namespace.path, ref_path=stype.namespace.path, ref='/components/schema')}/{stype.name}"
698
698
  )
@@ -296,7 +296,7 @@ def _emit_types(*, builder: builder.SpecBuilder, config: PythonConfig) -> None:
296
296
  full.write(f"# === END section from {namespace.name}.part.py ===\n")
297
297
 
298
298
  basename = "/".join(namespace.path)
299
- filename = f"{config.types_output}/{basename}{"" if len(namespace.path) > 1 else "_t"}.py"
299
+ filename = f"{config.types_output}/{basename}{'' if len(namespace.path) > 1 else '_t'}.py"
300
300
  util.rewrite_file(filename, full.getvalue())
301
301
 
302
302
  # Deprecated SDK support
@@ -390,13 +390,13 @@ from .base_t import ObjectId as ObjectId
390
390
  def _validate_supports_handler_generation(
391
391
  stype: builder.SpecTypeDefn, name: str, supports_inheritance: bool = False
392
392
  ) -> builder.SpecTypeDefnObject:
393
- assert isinstance(
394
- stype, builder.SpecTypeDefnObject
395
- ), f"External api {name} must be an object"
393
+ assert isinstance(stype, builder.SpecTypeDefnObject), (
394
+ f"External api {name} must be an object"
395
+ )
396
396
  if not supports_inheritance:
397
- assert (
398
- stype.base is None or stype.base.is_base
399
- ), f"Inheritance not supported in external api {name}"
397
+ assert stype.base is None or stype.base.is_base, (
398
+ f"Inheritance not supported in external api {name}"
399
+ )
400
400
  return stype
401
401
 
402
402
 
@@ -756,7 +756,7 @@ def _emit_properties(
756
756
  def _named_type_path(ctx: Context, stype: builder.SpecTypeDefn) -> str:
757
757
  parts = [] if stype.is_base else stype.namespace.path.copy()
758
758
  parts.append(stype.name)
759
- return f"{ctx.builder.top_namespace}.{".".join(parts)}"
759
+ return f"{ctx.builder.top_namespace}.{'.'.join(parts)}"
760
760
 
761
761
 
762
762
  def _emit_type(ctx: Context, stype: builder.SpecType) -> None:
@@ -818,7 +818,7 @@ def _emit_type(ctx: Context, stype: builder.SpecType) -> None:
818
818
  if not stype.base.is_base:
819
819
  base_class = f"({refer_to(ctx, stype.base)})"
820
820
  elif len(generics) > 0:
821
- base_class = f"(typing.Generic[{", ".join(generics)}])"
821
+ base_class = f"(typing.Generic[{', '.join(generics)}])"
822
822
  class_out.write(f"class {stype.name}{base_class}:\n")
823
823
 
824
824
  emitted_properties_metadata = _emit_type_properties(
@@ -858,7 +858,7 @@ def _emit_type(ctx: Context, stype: builder.SpecType) -> None:
858
858
  if stype.is_hashable:
859
859
  dc_args.extend(["frozen=True", "eq=True"])
860
860
  if len(dc_args) > 0:
861
- dataclass += f'({", ".join(dc_args)})'
861
+ dataclass += f"({', '.join(dc_args)})"
862
862
 
863
863
  ctx.out.write(f"{dataclass}\n")
864
864
  ctx.out.write(class_out.getvalue())
@@ -966,9 +966,9 @@ from main.site.framework.types import StaticRouteType
966
966
  )
967
967
  sorted_endpoints = sorted(endpoints, key=_route_identifier)
968
968
 
969
- assert len(endpoints) == len(
970
- set(map(_route_identifier, endpoints))
971
- ), "Endpoints are not unique"
969
+ assert len(endpoints) == len(set(map(_route_identifier, endpoints))), (
970
+ "Endpoints are not unique"
971
+ )
972
972
 
973
973
  path_set = set()
974
974
  for endpoint in sorted_endpoints:
@@ -1037,7 +1037,7 @@ def _emit_namespace_imports(
1037
1037
  if ns.endpoint is not None:
1038
1038
  import_alias = "_".join(ns.path[2:]) + "_t"
1039
1039
  out.write(
1040
- f"import {config.types_package}.{".".join(ns.path)} as {import_alias}\n"
1040
+ f"import {config.types_package}.{'.'.join(ns.path)} as {import_alias}\n"
1041
1041
  )
1042
1042
  continue
1043
1043
  elif from_namespace is not None:
@@ -1195,7 +1195,7 @@ def _emit_api_argument_lookup(
1195
1195
  continue
1196
1196
 
1197
1197
  import_alias = "_".join(namespace.path[1:])
1198
- api_import = f"{config.types_package}.{".".join(namespace.path)}"
1198
+ api_import = f"{config.types_package}.{'.'.join(namespace.path)}"
1199
1199
  imports.append(f"import {api_import} as {import_alias}")
1200
1200
 
1201
1201
  route_group = (
@@ -48,7 +48,7 @@ def _emit_types(builder: builder.SpecBuilder, config: TypeScriptConfig) -> None:
48
48
  # Try to capture some common incompleteness errors
49
49
  if namespace.endpoint is None or namespace.endpoint.function is None:
50
50
  raise Exception(
51
- f"Namespace {"/".join(namespace.path)} is incomplete. It should have an endpoint with function, types, and/or constants"
51
+ f"Namespace {'/'.join(namespace.path)} is incomplete. It should have an endpoint with function, types, and/or constants"
52
52
  )
53
53
  continue
54
54
 
@@ -157,7 +157,7 @@ def _emit_endpoint(
157
157
  wrap_call = (
158
158
  f"{wrap_name}<Arguments>" if is_binary else f"{wrap_name}<Arguments, Response>"
159
159
  )
160
- type_path = f"unc_mat/types/{"/".join(namespace.path)}"
160
+ type_path = f"unc_mat/types/{'/'.join(namespace.path)}"
161
161
 
162
162
  if is_binary:
163
163
  tsx_response_part = f"""import {{ {wrap_name} }} from "unc_base/api"
@@ -196,12 +196,12 @@ export const apiCall = {wrap_call}(
196
196
  )
197
197
  {data_loader_body}"""
198
198
 
199
- output = f"{config.routes_output}/{"/".join(namespace.path)}.tsx"
199
+ output = f"{config.routes_output}/{'/'.join(namespace.path)}.tsx"
200
200
  util.rewrite_file(output, tsx_api)
201
201
 
202
202
  # Hacky index support, until enough is migrated to regen entirely
203
203
  # Emits the import into the UI API index file
204
- index_path = f"{config.routes_output}/{"/".join(namespace.path[0:-1])}/index.tsx"
204
+ index_path = f"{config.routes_output}/{'/'.join(namespace.path[0:-1])}/index.tsx"
205
205
  api_name = f"Api{ts_type_name(namespace.path[0 - 1])}"
206
206
  if os.path.exists(index_path):
207
207
  with open(index_path) as index:
@@ -153,7 +153,7 @@ def emit_type_ts(ctx: EmitTypescriptContext, stype: builder.SpecType) -> None:
153
153
  ctx.out.write(f"export type {stype.name} = {base_type}{{}}\n")
154
154
  else:
155
155
  if isinstance(stype, builder.SpecTypeDefnObject) and len(stype.parameters) > 0:
156
- full_type_name = f'{stype.name}<{", ".join(stype.parameters)}>'
156
+ full_type_name = f"{stype.name}<{', '.join(stype.parameters)}>"
157
157
  else:
158
158
  full_type_name = stype.name
159
159
  ctx.out.write(f"export type {full_type_name} = {base_type}{{")
@@ -201,7 +201,7 @@ def refer_to_impl(
201
201
  return f"readonly ({spec})[]" if multi else f"readonly {spec}[]", False
202
202
  if stype.defn_type.name == builder.BaseTypeName.s_union:
203
203
  return (
204
- f'({" | ".join([refer_to(ctx, p) for p in stype.parameters])})',
204
+ f"({' | '.join([refer_to(ctx, p) for p in stype.parameters])})",
205
205
  False,
206
206
  )
207
207
  if stype.defn_type.name == builder.BaseTypeName.s_literal:
@@ -209,11 +209,11 @@ def refer_to_impl(
209
209
  for parameter in stype.parameters:
210
210
  assert isinstance(parameter, builder.SpecTypeLiteralWrapper)
211
211
  parts.append(refer_to(ctx, parameter))
212
- return f'({" | ".join(parts)})', False
212
+ return f"({' | '.join(parts)})", False
213
213
  if stype.defn_type.name == builder.BaseTypeName.s_optional:
214
214
  return f"{refer_to(ctx, stype.parameters[0])} | null", True
215
215
  if stype.defn_type.name == builder.BaseTypeName.s_tuple:
216
- return f"[{", ".join([refer_to(ctx, p) for p in stype.parameters])}]", False
216
+ return f"[{', '.join([refer_to(ctx, p) for p in stype.parameters])}]", False
217
217
  params = ", ".join([refer_to(ctx, p) for p in stype.parameters])
218
218
  return f"{refer_to(ctx, stype.defn_type)}<{params}>", False
219
219
 
@@ -234,9 +234,9 @@ def _extract_and_validate_layout(
234
234
 
235
235
  local_ref_name = None
236
236
  if group.ref_name is not None:
237
- assert (
238
- base_layout is None or base_layout.get(group.ref_name) is None
239
- ), f"group-name-duplicate-in-base:{group.ref_name}"
237
+ assert base_layout is None or base_layout.get(group.ref_name) is None, (
238
+ f"group-name-duplicate-in-base:{group.ref_name}"
239
+ )
240
240
  local_ref_name = group.ref_name
241
241
 
242
242
  if group.extends:
@@ -255,9 +255,9 @@ def _extract_and_validate_layout(
255
255
  assert group_ref_name in layout, f"missing-base-group:{group_ref_name}"
256
256
 
257
257
  for prop_ref_name in stype.properties:
258
- assert (
259
- prop_ref_name in all_fields_group
260
- ), f"layout-missing-field:{prop_ref_name}"
258
+ assert prop_ref_name in all_fields_group, (
259
+ f"layout-missing-field:{prop_ref_name}"
260
+ )
261
261
 
262
262
  return layout
263
263
 
@@ -99,9 +99,7 @@ class FileUploader:
99
99
  file_bytes.bytes_data,
100
100
  {"filename": file_bytes.name.encode()},
101
101
  client_session=session,
102
- config=aiotus.RetryConfiguration(
103
- ssl=False if self._allow_insecure_tls else None
104
- ),
102
+ config=aiotus.RetryConfiguration(ssl=not self._allow_insecure_tls),
105
103
  chunksize=_CHUNK_SIZE,
106
104
  )
107
105
  if location is None:
@@ -103,7 +103,7 @@ def _pull_remote_directory_data(
103
103
  files_to_pull = _filter_by_max_files(remote_directory, files_to_pull)
104
104
 
105
105
  logger.log_info(
106
- f"Accessing SFTP directory: {remote_directory.src_path} and pulling files: {", ".join([f.filename for f in files_to_pull if f.filename is not None])}",
106
+ f"Accessing SFTP directory: {remote_directory.src_path} and pulling files: {', '.join([f.filename for f in files_to_pull if f.filename is not None])}",
107
107
  )
108
108
  return filesystem_session.download_files(files_to_pull)
109
109
 
@@ -205,16 +205,16 @@ class GenericUploadJob(Job[None]):
205
205
  secret_access_key = None
206
206
 
207
207
  if self.data_source.endpoint_url is None:
208
- assert (
209
- self.data_source.cloud_provider is not None
210
- ), "either cloud_provider or endpoint_url must be specified"
208
+ assert self.data_source.cloud_provider is not None, (
209
+ "either cloud_provider or endpoint_url must be specified"
210
+ )
211
211
  match self.data_source.cloud_provider:
212
212
  case S3CloudProvider.AWS:
213
213
  endpoint_url = "https://s3.amazonaws.com"
214
214
  case S3CloudProvider.OVH:
215
- assert (
216
- self.data_source.region_name is not None
217
- ), "region_name must be specified for cloud_provider OVH"
215
+ assert self.data_source.region_name is not None, (
216
+ "region_name must be specified for cloud_provider OVH"
217
+ )
218
218
  endpoint_url = f"https://s3.{self.data_source.region_name}.cloud.ovh.net"
219
219
  else:
220
220
  endpoint_url = self.data_source.endpoint_url
@@ -19,7 +19,7 @@ def resolve_script_executor(
19
19
  for _, job_class in inspect.getmembers(job_module, inspect.isclass):
20
20
  if getattr(job_class, "_unc_job_registered", False):
21
21
  found_jobs.append(job_class())
22
- assert (
23
- len(found_jobs) == 1
24
- ), f"expected exactly one job class in {executor.import_path}, found {len(found_jobs)}"
22
+ assert len(found_jobs) == 1, (
23
+ f"expected exactly one job class in {executor.import_path}, found {len(found_jobs)}"
24
+ )
25
25
  return found_jobs[0]
@@ -15,7 +15,7 @@ from uncountable.types.secret_retrieval_t import (
15
15
  )
16
16
 
17
17
 
18
- class SecretRetrievalError(BaseException):
18
+ class SecretRetrievalError(Exception):
19
19
  def __init__(
20
20
  self, secret_retrieval: SecretRetrieval, message: str | None = None
21
21
  ) -> None:
@@ -335,7 +335,7 @@ class EntityType(StrEnum):
335
335
 
336
336
 
337
337
  # DO NOT MODIFY -- This file is generated by type_spec
338
- LimitedEntityType = typing.Union[typing.Literal[EntityType.LAB_REQUEST], typing.Literal[EntityType.APPROVAL], typing.Literal[EntityType.CUSTOM_ENTITY], typing.Literal[EntityType.INVENTORY_AMOUNT], typing.Literal[EntityType.TASK], typing.Literal[EntityType.PROJECT], typing.Literal[EntityType.EQUIPMENT], typing.Literal[EntityType.INV_LOCAL_LOCATIONS], typing.Literal[EntityType.FIELD_OPTION_SET], typing.Literal[EntityType.WEBHOOK], typing.Literal[EntityType.SPECS], typing.Literal[EntityType.GOAL], typing.Literal[EntityType.INGREDIENT_TAG_MAP], typing.Literal[EntityType.INGREDIENT_TAG], typing.Literal[EntityType.CONDITION_PARAMETER], typing.Literal[EntityType.OUTPUT]]
338
+ LimitedEntityType = typing.Union[typing.Literal[EntityType.LAB_REQUEST], typing.Literal[EntityType.APPROVAL], typing.Literal[EntityType.CUSTOM_ENTITY], typing.Literal[EntityType.INVENTORY_AMOUNT], typing.Literal[EntityType.TASK], typing.Literal[EntityType.PROJECT], typing.Literal[EntityType.EQUIPMENT], typing.Literal[EntityType.INV_LOCAL_LOCATIONS], typing.Literal[EntityType.FIELD_OPTION_SET], typing.Literal[EntityType.WEBHOOK], typing.Literal[EntityType.SPECS], typing.Literal[EntityType.GOAL], typing.Literal[EntityType.INGREDIENT_TAG_MAP], typing.Literal[EntityType.INGREDIENT_TAG], typing.Literal[EntityType.CONDITION_PARAMETER], typing.Literal[EntityType.OUTPUT], typing.Literal[EntityType.ASYNC_JOB]]
339
339
 
340
340
 
341
341
  # DO NOT MODIFY -- This file is generated by type_spec