intersect-sdk 0.8.3__tar.gz → 0.8.4__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 (74) hide show
  1. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/PKG-INFO +1 -1
  2. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/pyproject.toml +1 -1
  3. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/schema.py +1 -1
  4. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/version.py +1 -1
  5. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/fixtures/example_schema.json +2 -2
  6. intersect_sdk-0.8.4/tests/unit/test_schema_ref_resolution.py +55 -0
  7. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/LICENSE +0 -0
  8. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/README.md +0 -0
  9. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/__init__.py +0 -0
  10. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/__init__.py +0 -0
  11. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/constants.py +0 -0
  12. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/control_plane/__init__.py +0 -0
  13. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/control_plane/brokers/__init__.py +0 -0
  14. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/control_plane/brokers/amqp_client.py +0 -0
  15. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/control_plane/brokers/broker_client.py +0 -0
  16. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/control_plane/brokers/mqtt_client.py +0 -0
  17. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/control_plane/control_plane_manager.py +0 -0
  18. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/control_plane/discovery_service.py +0 -0
  19. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/control_plane/topic_handler.py +0 -0
  20. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/data_plane/__init__.py +0 -0
  21. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/data_plane/data_plane_manager.py +0 -0
  22. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/data_plane/minio_utils.py +0 -0
  23. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/event_metadata.py +0 -0
  24. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/exceptions.py +0 -0
  25. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/function_metadata.py +0 -0
  26. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/interfaces.py +0 -0
  27. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/logger.py +0 -0
  28. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/messages/__init__.py +0 -0
  29. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/messages/event.py +0 -0
  30. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/messages/lifecycle.py +0 -0
  31. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/messages/userspace.py +0 -0
  32. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/multi_flag_thread_event.py +0 -0
  33. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/pydantic_schema_generator.py +0 -0
  34. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/stoppable_thread.py +0 -0
  35. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/utils.py +0 -0
  36. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/version.py +0 -0
  37. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/version_resolver.py +0 -0
  38. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/app_lifecycle.py +0 -0
  39. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/capability/__init__.py +0 -0
  40. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/capability/base.py +0 -0
  41. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/client.py +0 -0
  42. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/client_callback_definitions.py +0 -0
  43. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/config/__init__.py +0 -0
  44. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/config/client.py +0 -0
  45. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/config/service.py +0 -0
  46. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/config/shared.py +0 -0
  47. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/constants.py +0 -0
  48. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/core_definitions.py +0 -0
  49. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/py.typed +0 -0
  50. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/schema.py +0 -0
  51. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/service.py +0 -0
  52. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/service_callback_definitions.py +0 -0
  53. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/service_definitions.py +0 -0
  54. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/shared_callback_definitions.py +0 -0
  55. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/__init__.py +0 -0
  56. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/conftest.py +0 -0
  57. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/e2e/__init__.py +0 -0
  58. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/e2e/test_examples.py +0 -0
  59. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/fixtures/__init__.py +0 -0
  60. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/fixtures/example_schema.py +0 -0
  61. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/fixtures/return_type_mismatch.py +0 -0
  62. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/integration/__init__.py +0 -0
  63. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/integration/test_return_type_mismatch.py +0 -0
  64. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/integration/test_service.py +0 -0
  65. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/__init__.py +0 -0
  66. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_annotations.py +0 -0
  67. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_base_capability_implementation.py +0 -0
  68. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_config.py +0 -0
  69. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_invalid_schema_runtime.py +0 -0
  70. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_lifecycle_message.py +0 -0
  71. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_schema_invalids.py +0 -0
  72. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_schema_valid.py +0 -0
  73. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_userspace_message.py +0 -0
  74. {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_version_resolver.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: intersect-sdk
3
- Version: 0.8.3
3
+ Version: 0.8.4
4
4
  Summary: Python SDK to interact with INTERSECT
5
5
  Keywords: intersect
6
6
  Author-Email: Lance Drane <dranelt@ornl.gov>, Marshall McDonnell <mcdonnellmt@ornl.gov>, Seth Hitefield <hitefieldsd@ornl.gov>, Andrew Ayres <ayresaf@ornl.gov>, Gregory Cage <cagege@ornl.gov>, Jesse McGaha <mcgahajr@ornl.gov>, Robert Smith <smithrw@ornl.gov>, Gavin Wiggins <wigginsg@ornl.gov>, Michael Brim <brimmj@ornl.gov>, Rick Archibald <archibaldrk@ornl.gov>, Addi Malviya Thakur <malviyaa@ornl.gov>
@@ -35,7 +35,7 @@ dependencies = [
35
35
  "jsonschema[format-nongpl]>=4.21.1",
36
36
  "eval-type-backport>=0.1.3;python_version<'3.10'",
37
37
  ]
38
- version = "0.8.3"
38
+ version = "0.8.4"
39
39
 
40
40
  [project.license]
41
41
  text = "BSD-3-Clause"
@@ -594,7 +594,7 @@ def get_schema_and_functions_from_capability_implementations(
594
594
  'messageTraits': {
595
595
  # this is where we can define our message headers
596
596
  'commonHeaders': {
597
- 'messageHeaders': TypeAdapter(UserspaceMessageHeader).json_schema(
597
+ 'userspaceHeaders': TypeAdapter(UserspaceMessageHeader).json_schema(
598
598
  ref_template='#/components/messageTraits/commonHeaders/userspaceHeaders/$defs/{model}',
599
599
  mode='serialization',
600
600
  ),
@@ -8,7 +8,7 @@ from __future__ import annotations
8
8
  from ._internal.version import strip_version_metadata
9
9
 
10
10
  # may include build metadata
11
- __version__ = '0.8.3'
11
+ __version__ = '0.8.4'
12
12
 
13
13
  version_string = strip_version_metadata(__version__)
14
14
  """
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "asyncapi": "2.6.0",
3
- "x-intersect-version": "0.8.3",
3
+ "x-intersect-version": "0.8.4",
4
4
  "info": {
5
5
  "title": "test.test.test.test.test",
6
6
  "description": "INTERSECT schema",
@@ -943,7 +943,7 @@
943
943
  },
944
944
  "messageTraits": {
945
945
  "commonHeaders": {
946
- "messageHeaders": {
946
+ "userspaceHeaders": {
947
947
  "$defs": {
948
948
  "IntersectDataHandler": {
949
949
  "description": "What data transfer type do you want to use for handling the request/response?\n\nDefault: MESSAGE",
@@ -0,0 +1,55 @@
1
+ import json
2
+ from pathlib import Path
3
+ from typing import Iterable, List
4
+
5
+ from referencing import Registry, Resource
6
+ from referencing.exceptions import Unresolvable
7
+ from referencing.jsonschema import DRAFT202012
8
+
9
+ from intersect_sdk.schema import get_schema_from_capability_implementations
10
+ from tests.fixtures.example_schema import FAKE_HIERARCHY_CONFIG, DummyCapabilityImplementation
11
+
12
+
13
+ def get_fixture_path(fixture: str) -> Path:
14
+ return Path(__file__).absolute().parents[1] / 'fixtures' / fixture
15
+
16
+
17
+ def iter_ref_values(schema: object) -> Iterable[str]:
18
+ if isinstance(schema, dict):
19
+ for key, value in schema.items():
20
+ if key == '$ref' and isinstance(value, str):
21
+ yield value
22
+ else:
23
+ yield from iter_ref_values(value)
24
+ elif isinstance(schema, list):
25
+ for item in schema:
26
+ yield from iter_ref_values(item)
27
+
28
+
29
+ def assert_refs_resolve(schema: dict) -> None:
30
+ resource = Resource.from_contents(schema, default_specification=DRAFT202012)
31
+ base_uri = ''
32
+ resolver = Registry().with_resource(base_uri, resource).resolver(base_uri)
33
+ unresolved: List[str] = []
34
+ for ref in iter_ref_values(schema):
35
+ try:
36
+ resolver.lookup(ref)
37
+ except Unresolvable:
38
+ unresolved.append(ref)
39
+ assert not unresolved, f'Unresolved $ref entries: {sorted(set(unresolved))}'
40
+
41
+
42
+ def test_fixture_schema_refs_resolve() -> None:
43
+ """Verifies that the generated JSON schema contains valid $ref entries."""
44
+ with Path.open(get_fixture_path('example_schema.json'), 'rb') as f:
45
+ schema = json.load(f)
46
+ assert_refs_resolve(schema)
47
+
48
+
49
+ def test_generated_schema_refs_resolve() -> None:
50
+ """Assert that the INTERSECT-SDK can generate a schema with valid $ref entries."""
51
+ schema = get_schema_from_capability_implementations(
52
+ [DummyCapabilityImplementation],
53
+ FAKE_HIERARCHY_CONFIG,
54
+ )
55
+ assert_refs_resolve(schema)
File without changes
File without changes