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.
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/PKG-INFO +1 -1
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/pyproject.toml +1 -1
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/schema.py +1 -1
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/version.py +1 -1
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/fixtures/example_schema.json +2 -2
- intersect_sdk-0.8.4/tests/unit/test_schema_ref_resolution.py +55 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/LICENSE +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/README.md +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/__init__.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/__init__.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/constants.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/control_plane/__init__.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/control_plane/brokers/__init__.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/control_plane/brokers/amqp_client.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/control_plane/brokers/broker_client.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/control_plane/brokers/mqtt_client.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/control_plane/control_plane_manager.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/control_plane/discovery_service.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/control_plane/topic_handler.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/data_plane/__init__.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/data_plane/data_plane_manager.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/data_plane/minio_utils.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/event_metadata.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/exceptions.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/function_metadata.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/interfaces.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/logger.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/messages/__init__.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/messages/event.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/messages/lifecycle.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/messages/userspace.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/multi_flag_thread_event.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/pydantic_schema_generator.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/stoppable_thread.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/utils.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/version.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/version_resolver.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/app_lifecycle.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/capability/__init__.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/capability/base.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/client.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/client_callback_definitions.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/config/__init__.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/config/client.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/config/service.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/config/shared.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/constants.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/core_definitions.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/py.typed +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/schema.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/service.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/service_callback_definitions.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/service_definitions.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/shared_callback_definitions.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/__init__.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/conftest.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/e2e/__init__.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/e2e/test_examples.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/fixtures/__init__.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/fixtures/example_schema.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/fixtures/return_type_mismatch.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/integration/__init__.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/integration/test_return_type_mismatch.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/integration/test_service.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/__init__.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_annotations.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_base_capability_implementation.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_config.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_invalid_schema_runtime.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_lifecycle_message.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_schema_invalids.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_schema_valid.py +0 -0
- {intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_userspace_message.py +0 -0
- {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
|
+
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>
|
|
@@ -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
|
-
'
|
|
597
|
+
'userspaceHeaders': TypeAdapter(UserspaceMessageHeader).json_schema(
|
|
598
598
|
ref_template='#/components/messageTraits/commonHeaders/userspaceHeaders/$defs/{model}',
|
|
599
599
|
mode='serialization',
|
|
600
600
|
),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"asyncapi": "2.6.0",
|
|
3
|
-
"x-intersect-version": "0.8.
|
|
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
|
-
"
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/control_plane/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/data_plane/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/data_plane/minio_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/function_metadata.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/messages/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/messages/lifecycle.py
RENAMED
|
File without changes
|
{intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/messages/userspace.py
RENAMED
|
File without changes
|
{intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/multi_flag_thread_event.py
RENAMED
|
File without changes
|
{intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/_internal/pydantic_schema_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/client_callback_definitions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/service_callback_definitions.py
RENAMED
|
File without changes
|
|
File without changes
|
{intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/src/intersect_sdk/shared_callback_definitions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{intersect_sdk-0.8.3 → intersect_sdk-0.8.4}/tests/unit/test_base_capability_implementation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|