intersect-sdk 0.9.2__tar.gz → 0.9.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/PKG-INFO +1 -1
  2. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/pyproject.toml +1 -1
  3. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/_internal/pydantic_schema_generator.py +11 -5
  4. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/README.md +0 -0
  5. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/__init__.py +0 -0
  6. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/_internal/__init__.py +0 -0
  7. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/_internal/constants.py +0 -0
  8. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/_internal/event_metadata.py +0 -0
  9. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/_internal/function_metadata.py +0 -0
  10. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/_internal/generic_serializer.py +0 -0
  11. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/_internal/interfaces.py +0 -0
  12. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/_internal/logger.py +0 -0
  13. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/_internal/schema.py +0 -0
  14. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/_internal/service_queue_name.py +0 -0
  15. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/_internal/status_metadata.py +0 -0
  16. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/_internal/stoppable_thread.py +0 -0
  17. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/_internal/utils.py +0 -0
  18. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/app_lifecycle.py +0 -0
  19. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/capability/__init__.py +0 -0
  20. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/capability/base.py +0 -0
  21. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/capability/universal_capability/__init__.py +0 -0
  22. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/capability/universal_capability/status.py +0 -0
  23. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/capability/universal_capability/universal_capability.py +0 -0
  24. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/client.py +0 -0
  25. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/client_callback_definitions.py +0 -0
  26. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/config/__init__.py +0 -0
  27. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/config/client.py +0 -0
  28. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/config/service.py +0 -0
  29. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/exceptions.py +0 -0
  30. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/py.typed +0 -0
  31. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/schema.py +0 -0
  32. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/service.py +0 -0
  33. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/service_callback_definitions.py +0 -0
  34. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/service_definitions.py +0 -0
  35. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/shared_callback_definitions.py +0 -0
  36. {intersect_sdk-0.9.2 → intersect_sdk-0.9.3}/src/intersect_sdk/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: intersect-sdk
3
- Version: 0.9.2
3
+ Version: 0.9.3
4
4
  Summary: Python SDK to interact with INTERSECT
5
5
  Keywords: intersect
6
6
  Author: Lance Drane, Marshall McDonnell, Seth Hitefield, Andrew Ayres, Gregory Cage, Jesse McGaha, Robert Smith, Gavin Wiggins, Michael Brim, Rick Archibald, Addi Malviya Thakur
@@ -14,7 +14,7 @@ authors = [
14
14
  { name = "Rick Archibald", email = "archibaldrk@ornl.gov" },
15
15
  { name = "Addi Malviya Thakur", email = "malviyaa@ornl.gov" },
16
16
  ]
17
- version = "0.9.2"
17
+ version = "0.9.3"
18
18
  readme = "README.md"
19
19
  license = { text = "BSD-3-Clause" }
20
20
  requires-python = ">=3.10,<4.0"
@@ -28,6 +28,7 @@ from pydantic_core import (
28
28
  core_schema,
29
29
  to_jsonable_python,
30
30
  )
31
+ from referencing.exceptions import Unresolvable
31
32
 
32
33
 
33
34
  # build nested dictionary from list of keys. i.e. if keys = ['one', 'two', 'three']
@@ -383,17 +384,22 @@ class GenerateTypedJsonSchema(GenerateJsonSchema):
383
384
  f"Default value '{default}' is not JSON serializable; use pydantic.Field's 'default_factory' argument for this.",
384
385
  )
385
386
 
386
- # check if the schema has $ref in it directly, or if it has a boolean schema composition keyword
387
- # if it does, we must validate this during $ref construction
388
- if '$ref' in json_schema or 'oneOf' in json_schema or 'anyOf' in json_schema:
389
- # IMPORTANT!!! You must send the "json_schema" object itself, it will be modified later internally by Pydantic
387
+ def postpone_default_validation(json_schema: Any, encoded_default: Any) -> dict[str, Any]:
390
388
  self.intersect_sdk_postgeneration_defaults.append((encoded_default, json_schema))
391
389
  # Since reference schemas do not support child keys, we wrap the reference schema in a single-case allOf:
392
390
  return {'allOf': [json_schema], 'default': encoded_default}
393
391
 
394
- # if this schema does not have a $ref, we should instead validate immediately
392
+ # check if the schema has $ref in it directly
393
+ # if it does, we must validate this during $ref construction
394
+ if '$ref' in json_schema:
395
+ return postpone_default_validation(json_schema, encoded_default)
396
+
395
397
  try:
396
398
  validate_against_schema(json_schema, encoded_default)
399
+ except Unresolvable:
400
+ # this will sometimes happen with boolean schema composition keywords, i.e. oneOf or anyOf, IF these contain $ref keywords themselves
401
+ # we can recover from this by postponing validation
402
+ return postpone_default_validation(json_schema, encoded_default)
397
403
  except SchemaValidationError as e:
398
404
  err_msg = f"Default value '{default}' does not validate against schema\n{e}"
399
405
  raise PydanticInvalidForJsonSchema(err_msg) from e
File without changes