asyncapi-python 0.3.0rc3__tar.gz → 0.3.0rc4__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.
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/PKG-INFO +1 -1
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/pyproject.toml +1 -1
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/templates/application.py.j2 +33 -15
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/uv.lock +1 -1
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/.asyncapi-tool +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/.devcontainer/Dockerfile +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/.devcontainer/devcontainer.json +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/.devcontainer/docker-compose.yml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/.github/workflows/release.yml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/.github/workflows/test.yml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/.gitignore +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/LICENSE +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/README.md +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-pub-sub/.gitignore +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-pub-sub/Makefile +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-pub-sub/README.md +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-pub-sub/main-publisher.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-pub-sub/main-subscriber.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-pub-sub/spec/common.asyncapi.yaml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-pub-sub/spec/publisher.asyncapi.yaml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-pub-sub/spec/subscriber.asyncapi.yaml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-rpc/.gitignore +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-rpc/Makefile +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-rpc/README.md +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-rpc/main-client.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-rpc/main-server.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-rpc/spec/client.asyncapi.yaml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-rpc/spec/common.asyncapi.yaml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-rpc/spec/server.asyncapi.yaml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-work-queue/.gitignore +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-work-queue/Makefile +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-work-queue/README.md +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-work-queue/main-producer.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-work-queue/main-worker.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-work-queue/spec/common.asyncapi.yaml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-work-queue/spec/producer.asyncapi.yaml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-work-queue/spec/worker.asyncapi.yaml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/specs/financial-trading-system.yaml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/codec/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/codec/json.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/codec/registry.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/wire/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/wire/amqp/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/wire/amqp/config.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/wire/amqp/consumer.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/wire/amqp/factory.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/wire/amqp/message.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/wire/amqp/producer.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/wire/amqp/resolver.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/wire/amqp/utils.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/wire/in_memory.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/application.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/codec.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/document/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/document/bindings.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/document/channel.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/document/common.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/document/message.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/document/operation.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/endpoint/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/endpoint/abc.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/endpoint/exceptions.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/endpoint/message.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/endpoint/publisher.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/endpoint/rpc_client.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/endpoint/rpc_reply_handler.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/endpoint/rpc_server.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/endpoint/subscriber.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/exceptions.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/typing.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/wire/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/wire/typing.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/py.typed +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/utils.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/cli.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/generators/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/generators/main.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/generators/messages.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/generators/parameters.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/generators/routers.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/generators/templates.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/parser/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/parser/context.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/parser/document_loader.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/parser/extractors.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/parser/references.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/parser/types.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/templates/__init__.py.j2 +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/templates/messages.py.j2 +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/templates/messages_datamodel.py.j2 +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/templates/parameters.py.j2 +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/templates/router.py.j2 +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_pants/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_pants/py.typed +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_pants/register.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_pants/rules.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_pants/targets.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/codegen/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/codegen/specs/relative_refs/common/channels.yaml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/codegen/specs/relative_refs/main.yaml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/codegen/specs/relative_refs/shared/messages.yaml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/codegen/specs/relative_refs/shared/notifications.yaml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/codegen/specs/rpc.yaml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/codegen/specs/simple.yaml +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/codegen/test_parser.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/conftest.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/scenarios/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/scenarios/batch_processing.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/scenarios/error_handling.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/scenarios/fan_in_logging.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/scenarios/fan_out_broadcasting.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/scenarios/malformed_messages.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/scenarios/many_to_many_microservices.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/scenarios/producer_consumer.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/scenarios/reply_channel.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/test_app/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/test_app/messages/__init__.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/test_app/messages/json.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/test_wire_codec_scenarios.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/kernel/endpoint/test_batch_processing.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/kernel/endpoint/test_exception_handling.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/kernel/endpoint/test_handler_enforcement.py +0 -0
- {asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/kernel/endpoint/test_rpc_endpoints.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: asyncapi-python
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.0rc4
|
|
4
4
|
Summary: Easily generate type-safe and async Python applications from AsyncAPI 3 specifications.
|
|
5
5
|
Author-email: Yaroslav Petrov <yaroslav.v.petrov@gmail.com>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "asyncapi-python"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.0rc4"
|
|
4
4
|
license = { text = "Apache-2.0" }
|
|
5
5
|
description = "Easily generate type-safe and async Python applications from AsyncAPI 3 specifications."
|
|
6
6
|
authors = [{ name = "Yaroslav Petrov", email = "yaroslav.v.petrov@gmail.com" }]
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Generated AsyncAPI application."""
|
|
2
|
+
|
|
2
3
|
from __future__ import annotations
|
|
3
4
|
|
|
4
5
|
from typing import Any
|
|
@@ -7,6 +8,7 @@ from asyncapi_python.kernel.wire import AbstractWireFactory
|
|
|
7
8
|
from asyncapi_python.kernel.codec import CodecFactory
|
|
8
9
|
from asyncapi_python.contrib.codec.registry import CodecRegistry
|
|
9
10
|
from asyncapi_python.kernel.endpoint import AbstractEndpoint
|
|
11
|
+
from asyncapi_python.kernel.endpoint.abc import EndpointParams
|
|
10
12
|
|
|
11
13
|
from .router import ProducerRouter, ConsumerRouter
|
|
12
14
|
import sys
|
|
@@ -14,45 +16,61 @@ import sys
|
|
|
14
16
|
|
|
15
17
|
class Application(BaseApplication):
|
|
16
18
|
"""{{ app_title }} - {{ app_description }}
|
|
17
|
-
|
|
19
|
+
|
|
18
20
|
AsyncAPI Version: {{ asyncapi_version }}
|
|
19
21
|
Application Version: {{ app_version }}
|
|
20
22
|
"""
|
|
21
|
-
|
|
22
|
-
def __init__(
|
|
23
|
+
|
|
24
|
+
def __init__(
|
|
25
|
+
self,
|
|
26
|
+
wire_factory: AbstractWireFactory[Any, Any],
|
|
27
|
+
*,
|
|
28
|
+
endpoint_params: EndpointParams | None = None,
|
|
29
|
+
):
|
|
23
30
|
"""Initialize the AsyncAPI application.
|
|
24
|
-
|
|
31
|
+
|
|
25
32
|
Args:
|
|
26
33
|
wire_factory: Wire protocol factory for message transport
|
|
34
|
+
endpoint_params: Optional endpoint configuration (service_name, default_rpc_timeout, etc.)
|
|
27
35
|
"""
|
|
28
36
|
# Use CodecRegistry with current module for message serialization
|
|
29
|
-
current_module = sys.modules[self.__module__.rsplit(
|
|
37
|
+
current_module = sys.modules[self.__module__.rsplit(".", 1)[0]]
|
|
30
38
|
codec_factory = CodecRegistry(current_module)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
39
|
+
|
|
40
|
+
# Pass endpoint_params to BaseApplication if provided
|
|
41
|
+
if endpoint_params is not None:
|
|
42
|
+
super().__init__(
|
|
43
|
+
wire_factory=wire_factory,
|
|
44
|
+
codec_factory=codec_factory,
|
|
45
|
+
endpoint_params=endpoint_params,
|
|
46
|
+
)
|
|
47
|
+
else:
|
|
48
|
+
super().__init__(wire_factory=wire_factory, codec_factory=codec_factory)
|
|
49
|
+
|
|
34
50
|
# Initialize semantic routers with factories
|
|
35
51
|
self.producer = ProducerRouter(wire_factory, codec_factory)
|
|
36
52
|
self.consumer = ConsumerRouter(wire_factory, codec_factory)
|
|
37
|
-
|
|
53
|
+
|
|
38
54
|
# Register all endpoints from routers
|
|
39
55
|
self._register_router_endpoints(self.producer)
|
|
40
56
|
self._register_router_endpoints(self.consumer)
|
|
41
|
-
|
|
57
|
+
|
|
42
58
|
def _register_router_endpoints(self, router: object) -> None:
|
|
43
59
|
"""Recursively register all endpoints from router tree.
|
|
44
|
-
|
|
60
|
+
|
|
45
61
|
Args:
|
|
46
62
|
router: Router object to scan for endpoints
|
|
47
63
|
"""
|
|
48
64
|
if isinstance(router, AbstractEndpoint):
|
|
49
65
|
# This router is an endpoint - register it directly
|
|
50
66
|
self._add_endpoint(router)
|
|
51
|
-
elif hasattr(router,
|
|
67
|
+
elif hasattr(router, "__dict__"):
|
|
52
68
|
# This router aggregates others - recurse through attributes
|
|
53
69
|
for attr_name in dir(router):
|
|
54
|
-
if not attr_name.startswith(
|
|
70
|
+
if not attr_name.startswith("_"):
|
|
55
71
|
attr = getattr(router, attr_name, None)
|
|
56
72
|
# Check if it's a router-like object (has __dict__ or is an endpoint)
|
|
57
|
-
if attr is not None and (
|
|
58
|
-
|
|
73
|
+
if attr is not None and (
|
|
74
|
+
isinstance(attr, AbstractEndpoint) or hasattr(attr, "__dict__")
|
|
75
|
+
):
|
|
76
|
+
self._register_router_endpoints(attr)
|
|
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
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-pub-sub/main-publisher.py
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-pub-sub/main-subscriber.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
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-rpc/spec/client.asyncapi.yaml
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-rpc/spec/common.asyncapi.yaml
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-rpc/spec/server.asyncapi.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-work-queue/main-producer.py
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/amqp-work-queue/main-worker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/examples/specs/financial-trading-system.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/__init__.py
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/codec/__init__.py
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/codec/json.py
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/codec/registry.py
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/wire/__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
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/wire/amqp/utils.py
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/contrib/wire/in_memory.py
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/__init__.py
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/application.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/document/channel.py
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/document/common.py
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/document/message.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/endpoint/abc.py
RENAMED
|
File without changes
|
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/endpoint/message.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/wire/__init__.py
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python/kernel/wire/typing.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/generators/main.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/parser/__init__.py
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/parser/context.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/src/asyncapi_python_codegen/parser/types.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
|
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/codegen/specs/relative_refs/main.yaml
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
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/scenarios/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/scenarios/error_handling.py
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/scenarios/fan_in_logging.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/scenarios/reply_channel.py
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/test_app/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/test_app/messages/json.py
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/integration/test_wire_codec_scenarios.py
RENAMED
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/kernel/endpoint/test_batch_processing.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{asyncapi_python-0.3.0rc3 → asyncapi_python-0.3.0rc4}/tests/kernel/endpoint/test_rpc_endpoints.py
RENAMED
|
File without changes
|