From dc33dab2ecdc24053806271340fbb3757d7888af Mon Sep 17 00:00:00 2001 From: Cy Scott Date: Sun, 30 Nov 2025 23:08:17 -0500 Subject: [PATCH] fix: import issue in python project --- src/python/README.md | 22 +++++++++++-------- src/python/src/i_poly_bus.py | 16 +++++++------- src/python/src/poly_bus.py | 18 +++++++-------- src/python/src/poly_bus_builder.py | 10 ++++----- src/python/src/transport/i_transport.py | 4 ++-- .../transport/in_memory/in_memory_endpoint.py | 12 +++++----- .../in_memory/in_memory_message_broker.py | 12 +++++----- .../transaction/incoming_transaction.py | 6 ++--- .../incoming_transaction_factory.py | 4 ++-- .../message/handlers/error/error_handlers.py | 4 ++-- .../message/handlers/incoming_handler.py | 2 +- .../message/handlers/outgoing_handler.py | 2 +- .../handlers/serializers/json_handlers.py | 6 ++--- .../transaction/message/incoming_message.py | 6 ++--- .../transport/transaction/message/message.py | 2 +- .../transaction/message/message_info.py | 2 +- .../transport/transaction/message/messages.py | 6 ++--- .../transaction/message/outgoing_message.py | 6 ++--- .../poly_bus_message_not_found_error.py | 2 +- .../transaction/outgoing_transaction.py | 4 ++-- .../outgoing_transaction_factory.py | 2 +- .../src/transport/transaction/transaction.py | 4 ++-- src/python/src/transport/transport_factory.py | 2 +- .../transaction/message/test_messages.py | 2 +- 24 files changed, 80 insertions(+), 76 deletions(-) diff --git a/src/python/README.md b/src/python/README.md index 2c1ab41..8845f33 100644 --- a/src/python/README.md +++ b/src/python/README.md @@ -16,14 +16,15 @@ A Python implementation of the PolyBus messaging library, providing a unified in # Navigate to the python directory cd src/python -# Create a virtual environment (recommended) -python3 -m venv venv -source venv/bin/activate # On Windows: venv\Scripts\activate +# The project uses a virtual environment at the repo root +# It should already be configured by VS Code +# If needed, activate it: +source ../../.venv/bin/activate # On Windows: ..\..\\.venv\Scripts\activate # Install the package in development mode with dev dependencies -./dev.sh install -# Or manually: pip install -e ".[dev]" +# Or use the dev script with PYTHON env var: +# PYTHON=../../.venv/bin/python ./dev.sh install ``` ### Building the Project @@ -39,13 +40,16 @@ pip install -e ".[dev]" ### Running Tests ```bash +# Activate virtual environment first +source ../../.venv/bin/activate # On Windows: .venv\Scripts\activate + # Run all tests -./dev.sh test -# Or: python -m pytest +python -m pytest +# Or: ./dev.sh test (if PYTHON env var is set) # Run tests with coverage -./dev.sh test-cov -# Or: python -m pytest --cov=poly_bus --cov-report=html +python -m pytest --cov=src --cov-report=html --cov-report=term +# Or: ./dev.sh test-cov # Run specific test files python -m pytest tests/test_poly_bus.py diff --git a/src/python/src/i_poly_bus.py b/src/python/src/i_poly_bus.py index 61e3db6..afd580d 100644 --- a/src/python/src/i_poly_bus.py +++ b/src/python/src/i_poly_bus.py @@ -4,14 +4,14 @@ from typing import Dict, List, Any, TYPE_CHECKING if TYPE_CHECKING: - from src.transport.i_transport import ITransport - from src.transport.transaction.message.handlers.incoming_handler import IncomingHandler - from src.transport.transaction.message.handlers.outgoing_handler import OutgoingHandler - from src.transport.transaction.message.incoming_message import IncomingMessage - from src.transport.transaction.message.messages import Messages - from src.transport.transaction.transaction import Transaction - from src.transport.transaction.incoming_transaction import IncomingTransaction - from src.transport.transaction.outgoing_transaction import OutgoingTransaction + from transport.i_transport import ITransport + from transport.transaction.message.handlers.incoming_handler import IncomingHandler + from transport.transaction.message.handlers.outgoing_handler import OutgoingHandler + from transport.transaction.message.incoming_message import IncomingMessage + from transport.transaction.message.messages import Messages + from transport.transaction.transaction import Transaction + from transport.transaction.incoming_transaction import IncomingTransaction + from transport.transaction.outgoing_transaction import OutgoingTransaction class IPolyBus(ABC): diff --git a/src/python/src/poly_bus.py b/src/python/src/poly_bus.py index 0a6df94..cca7a53 100644 --- a/src/python/src/poly_bus.py +++ b/src/python/src/poly_bus.py @@ -1,15 +1,15 @@ """PolyBus implementation for the Python version.""" from typing import Dict, Any, List -from src.i_poly_bus import IPolyBus -from src.transport.i_transport import ITransport -from src.transport.transaction.incoming_transaction import IncomingTransaction -from src.transport.transaction.outgoing_transaction import OutgoingTransaction -from src.transport.transaction.message.incoming_message import IncomingMessage -from src.transport.transaction.message.messages import Messages -from src.transport.transaction.message.handlers.incoming_handler import IncomingHandler -from src.transport.transaction.message.handlers.outgoing_handler import OutgoingHandler -from src.transport.transaction.transaction import Transaction +from .i_poly_bus import IPolyBus +from .transport.i_transport import ITransport +from .transport.transaction.incoming_transaction import IncomingTransaction +from .transport.transaction.outgoing_transaction import OutgoingTransaction +from .transport.transaction.message.incoming_message import IncomingMessage +from .transport.transaction.message.messages import Messages +from .transport.transaction.message.handlers.incoming_handler import IncomingHandler +from .transport.transaction.message.handlers.outgoing_handler import OutgoingHandler +from .transport.transaction.transaction import Transaction class PolyBus(IPolyBus): diff --git a/src/python/src/poly_bus_builder.py b/src/python/src/poly_bus_builder.py index 48e475a..66d6d2a 100644 --- a/src/python/src/poly_bus_builder.py +++ b/src/python/src/poly_bus_builder.py @@ -1,12 +1,12 @@ """PolyBus builder implementation for the Python version.""" from typing import Dict, Any, Optional, TYPE_CHECKING -from src.transport.transaction.incoming_transaction import IncomingTransaction -from src.transport.transaction.message.messages import Messages -from src.transport.transaction.outgoing_transaction import OutgoingTransaction +from .transport.transaction.incoming_transaction import IncomingTransaction +from .transport.transaction.message.messages import Messages +from .transport.transaction.outgoing_transaction import OutgoingTransaction if TYPE_CHECKING: - from src.poly_bus import PolyBus + from .poly_bus import PolyBus async def _default_incoming_transaction_factory(builder: 'PolyBusBuilder', bus, message): @@ -124,7 +124,7 @@ async def build(self) -> 'PolyBus': Returns: A configured PolyBus instance ready for use """ - from src.poly_bus import PolyBus + from .poly_bus import PolyBus bus = PolyBus(self) bus.transport = await self.transport_factory(self, bus) diff --git a/src/python/src/transport/i_transport.py b/src/python/src/transport/i_transport.py index 1331bf1..25627c8 100644 --- a/src/python/src/transport/i_transport.py +++ b/src/python/src/transport/i_transport.py @@ -1,8 +1,8 @@ """Transport interface for the PolyBus Python implementation.""" from abc import ABC, abstractmethod -from src.transport.transaction.transaction import Transaction -from src.transport.transaction.message.message_info import MessageInfo +from .transaction.transaction import Transaction +from .transaction.message.message_info import MessageInfo class ITransport(ABC): diff --git a/src/python/src/transport/in_memory/in_memory_endpoint.py b/src/python/src/transport/in_memory/in_memory_endpoint.py index 74a7c78..400e951 100644 --- a/src/python/src/transport/in_memory/in_memory_endpoint.py +++ b/src/python/src/transport/in_memory/in_memory_endpoint.py @@ -4,12 +4,12 @@ """ from typing import Callable, Optional, Dict -from src.i_poly_bus import IPolyBus -from src.transport.i_transport import ITransport -from src.transport.transaction.transaction import Transaction -from src.transport.transaction.message.incoming_message import IncomingMessage -from src.transport.transaction.message.message_info import MessageInfo -from src.transport.poly_bus_not_started_error import PolyBusNotStartedError +from ...i_poly_bus import IPolyBus +from ..i_transport import ITransport +from ..transaction.transaction import Transaction +from ..transaction.message.incoming_message import IncomingMessage +from ..transaction.message.message_info import MessageInfo +from ..poly_bus_not_started_error import PolyBusNotStartedError class InMemoryEndpoint(ITransport): diff --git a/src/python/src/transport/in_memory/in_memory_message_broker.py b/src/python/src/transport/in_memory/in_memory_message_broker.py index d435126..f3a345e 100644 --- a/src/python/src/transport/in_memory/in_memory_message_broker.py +++ b/src/python/src/transport/in_memory/in_memory_message_broker.py @@ -9,12 +9,12 @@ from datetime import datetime, timezone from typing import Dict from uuid import uuid4 -from src.i_poly_bus import IPolyBus -from src.poly_bus_builder import PolyBusBuilder -from src.transport.i_transport import ITransport -from src.transport.in_memory.in_memory_endpoint import InMemoryEndpoint -from src.transport.transaction.transaction import Transaction -from src.transport.transaction.message.incoming_message import IncomingMessage +from ...i_poly_bus import IPolyBus +from ...poly_bus_builder import PolyBusBuilder +from ..i_transport import ITransport +from .in_memory_endpoint import InMemoryEndpoint +from ..transaction.transaction import Transaction +from ..transaction.message.incoming_message import IncomingMessage class InMemoryMessageBroker: diff --git a/src/python/src/transport/transaction/incoming_transaction.py b/src/python/src/transport/transaction/incoming_transaction.py index 2240c13..0cf9103 100644 --- a/src/python/src/transport/transaction/incoming_transaction.py +++ b/src/python/src/transport/transaction/incoming_transaction.py @@ -1,8 +1,8 @@ """Incoming transaction class for PolyBus Python implementation.""" -from src.transport.transaction.transaction import Transaction -from src.transport.transaction.message.incoming_message import IncomingMessage -from src.i_poly_bus import IPolyBus +from .transaction import Transaction +from .message.incoming_message import IncomingMessage +from ...i_poly_bus import IPolyBus class IncomingTransaction(Transaction): diff --git a/src/python/src/transport/transaction/incoming_transaction_factory.py b/src/python/src/transport/transaction/incoming_transaction_factory.py index 0580316..aff02ce 100644 --- a/src/python/src/transport/transaction/incoming_transaction_factory.py +++ b/src/python/src/transport/transaction/incoming_transaction_factory.py @@ -1,8 +1,8 @@ """Incoming transaction factory for creating incoming transactions in the PolyBus Python implementation.""" from typing import Callable, Awaitable -from src.transport.transaction.incoming_transaction import IncomingTransaction -from src.transport.transaction.message.incoming_message import IncomingMessage +from .incoming_transaction import IncomingTransaction +from .message.incoming_message import IncomingMessage IncomingTransactionFactory = Callable[ ['PolyBusBuilder', 'IPolyBus', 'IncomingMessage'], diff --git a/src/python/src/transport/transaction/message/handlers/error/error_handlers.py b/src/python/src/transport/transaction/message/handlers/error/error_handlers.py index efcec2a..d65d5fa 100644 --- a/src/python/src/transport/transaction/message/handlers/error/error_handlers.py +++ b/src/python/src/transport/transaction/message/handlers/error/error_handlers.py @@ -4,8 +4,8 @@ import traceback from datetime import datetime, timedelta, timezone from typing import Callable, Awaitable -from src.transport.transaction.incoming_transaction import IncomingTransaction -from src.transport.transaction.message.outgoing_message import OutgoingMessage +from ....incoming_transaction import IncomingTransaction +from ...outgoing_message import OutgoingMessage class ErrorHandler: diff --git a/src/python/src/transport/transaction/message/handlers/incoming_handler.py b/src/python/src/transport/transaction/message/handlers/incoming_handler.py index c87e2dc..0e0ee56 100644 --- a/src/python/src/transport/transaction/message/handlers/incoming_handler.py +++ b/src/python/src/transport/transaction/message/handlers/incoming_handler.py @@ -1,7 +1,7 @@ """Incoming handler callable type for PolyBus Python implementation.""" from typing import Callable, Awaitable -from src.transport.transaction.incoming_transaction import IncomingTransaction +from ...incoming_transaction import IncomingTransaction # Type alias for incoming message handlers IncomingHandler = Callable[[IncomingTransaction, Callable[[], Awaitable[None]]], Awaitable[None]] diff --git a/src/python/src/transport/transaction/message/handlers/outgoing_handler.py b/src/python/src/transport/transaction/message/handlers/outgoing_handler.py index 3790de5..1a52f01 100644 --- a/src/python/src/transport/transaction/message/handlers/outgoing_handler.py +++ b/src/python/src/transport/transaction/message/handlers/outgoing_handler.py @@ -1,7 +1,7 @@ """Outgoing handler callable type for PolyBus Python implementation.""" from typing import Callable, Awaitable -from src.transport.transaction.outgoing_transaction import OutgoingTransaction +from ...outgoing_transaction import OutgoingTransaction # Type alias for outgoing message handlers OutgoingHandler = Callable[[OutgoingTransaction, Callable[[], Awaitable[None]]], Awaitable[None]] diff --git a/src/python/src/transport/transaction/message/handlers/serializers/json_handlers.py b/src/python/src/transport/transaction/message/handlers/serializers/json_handlers.py index 72aacd6..8bda38f 100644 --- a/src/python/src/transport/transaction/message/handlers/serializers/json_handlers.py +++ b/src/python/src/transport/transaction/message/handlers/serializers/json_handlers.py @@ -2,9 +2,9 @@ import json from typing import Optional, Callable, Awaitable -from src.headers import Headers -from src.transport.transaction.incoming_transaction import IncomingTransaction -from src.transport.transaction.outgoing_transaction import OutgoingTransaction +from ......headers import Headers +from ....incoming_transaction import IncomingTransaction +from ....outgoing_transaction import OutgoingTransaction class JsonHandlers: diff --git a/src/python/src/transport/transaction/message/incoming_message.py b/src/python/src/transport/transaction/message/incoming_message.py index f44d3c7..ea70de9 100644 --- a/src/python/src/transport/transaction/message/incoming_message.py +++ b/src/python/src/transport/transaction/message/incoming_message.py @@ -1,7 +1,7 @@ from typing import Any, Optional, Type -from src.transport.transaction.message.message import Message -from src.transport.transaction.message.message_info import MessageInfo -from src.i_poly_bus import IPolyBus +from .message import Message +from .message_info import MessageInfo +from ....i_poly_bus import IPolyBus class IncomingMessage(Message): diff --git a/src/python/src/transport/transaction/message/message.py b/src/python/src/transport/transaction/message/message.py index 689cdcf..53e8db6 100644 --- a/src/python/src/transport/transaction/message/message.py +++ b/src/python/src/transport/transaction/message/message.py @@ -1,5 +1,5 @@ from typing import Dict, Any -from src.i_poly_bus import IPolyBus +from ....i_poly_bus import IPolyBus class Message: diff --git a/src/python/src/transport/transaction/message/message_info.py b/src/python/src/transport/transaction/message/message_info.py index e9b19fe..a8418ff 100644 --- a/src/python/src/transport/transaction/message/message_info.py +++ b/src/python/src/transport/transaction/message/message_info.py @@ -1,6 +1,6 @@ import re from typing import Optional -from src.transport.transaction.message.message_type import MessageType +from .message_type import MessageType class MessageInfo: diff --git a/src/python/src/transport/transaction/message/messages.py b/src/python/src/transport/transaction/message/messages.py index a1f32c7..1900e63 100644 --- a/src/python/src/transport/transaction/message/messages.py +++ b/src/python/src/transport/transaction/message/messages.py @@ -2,10 +2,10 @@ A collection of message types and their associated message headers. """ from threading import Lock -from typing import Dict, Type, Tuple +from typing import Dict, Type, Tuple, Optional import threading -from src.transport.transaction.message.message_info import MessageInfo -from src.transport.transaction.message.poly_bus_message_not_found_error import PolyBusMessageNotFoundError +from .message_info import MessageInfo +from .poly_bus_message_not_found_error import PolyBusMessageNotFoundError class Messages: diff --git a/src/python/src/transport/transaction/message/outgoing_message.py b/src/python/src/transport/transaction/message/outgoing_message.py index 9a4b944..7167e63 100644 --- a/src/python/src/transport/transaction/message/outgoing_message.py +++ b/src/python/src/transport/transaction/message/outgoing_message.py @@ -1,8 +1,8 @@ from typing import Any, Optional, Type from datetime import datetime -from src.transport.transaction.message.message import Message -from src.transport.transaction.message.message_info import MessageInfo -from src.i_poly_bus import IPolyBus +from .message import Message +from .message_info import MessageInfo +from ....i_poly_bus import IPolyBus class OutgoingMessage(Message): diff --git a/src/python/src/transport/transaction/message/poly_bus_message_not_found_error.py b/src/python/src/transport/transaction/message/poly_bus_message_not_found_error.py index de3b14b..1db78c3 100644 --- a/src/python/src/transport/transaction/message/poly_bus_message_not_found_error.py +++ b/src/python/src/transport/transaction/message/poly_bus_message_not_found_error.py @@ -1,7 +1,7 @@ """ Exception raised when a requested type, attribute/decorator, or header is not found. """ -from src.poly_bus_error import PolyBusError +from ....poly_bus_error import PolyBusError class PolyBusMessageNotFoundError(PolyBusError): diff --git a/src/python/src/transport/transaction/outgoing_transaction.py b/src/python/src/transport/transaction/outgoing_transaction.py index 72fa30b..ba32a34 100644 --- a/src/python/src/transport/transaction/outgoing_transaction.py +++ b/src/python/src/transport/transaction/outgoing_transaction.py @@ -1,7 +1,7 @@ """Outgoing transaction class for PolyBus Python implementation.""" -from src.transport.transaction.transaction import Transaction -from src.i_poly_bus import IPolyBus +from .transaction import Transaction +from ...i_poly_bus import IPolyBus class OutgoingTransaction(Transaction): diff --git a/src/python/src/transport/transaction/outgoing_transaction_factory.py b/src/python/src/transport/transaction/outgoing_transaction_factory.py index 7ee1f19..5eb6782 100644 --- a/src/python/src/transport/transaction/outgoing_transaction_factory.py +++ b/src/python/src/transport/transaction/outgoing_transaction_factory.py @@ -1,7 +1,7 @@ """Outgoing transaction factory for creating outgoing transactions in the PolyBus Python implementation.""" from typing import Callable, Awaitable -from src.transport.transaction.outgoing_transaction import OutgoingTransaction +from .outgoing_transaction import OutgoingTransaction OutgoingTransactionFactory = Callable[ ['PolyBusBuilder', 'IPolyBus'], diff --git a/src/python/src/transport/transaction/transaction.py b/src/python/src/transport/transaction/transaction.py index 033d5fa..6d6a833 100644 --- a/src/python/src/transport/transaction/transaction.py +++ b/src/python/src/transport/transaction/transaction.py @@ -2,8 +2,8 @@ from typing import Dict, List, Any, Optional from abc import ABC -from src.transport.transaction.message.outgoing_message import OutgoingMessage -from src.i_poly_bus import IPolyBus +from .message.outgoing_message import OutgoingMessage +from ...i_poly_bus import IPolyBus class Transaction(ABC): diff --git a/src/python/src/transport/transport_factory.py b/src/python/src/transport/transport_factory.py index c2bba59..81e2b24 100644 --- a/src/python/src/transport/transport_factory.py +++ b/src/python/src/transport/transport_factory.py @@ -1,7 +1,7 @@ """Transport factory for the PolyBus Python implementation.""" from typing import Callable, Awaitable -from src.transport.i_transport import ITransport +from .i_transport import ITransport # Type alias for transport factory function # Creates a transport instance to be used by PolyBus diff --git a/src/python/tests/transport/transaction/message/test_messages.py b/src/python/tests/transport/transaction/message/test_messages.py index 79d7a2b..faac788 100644 --- a/src/python/tests/transport/transaction/message/test_messages.py +++ b/src/python/tests/transport/transaction/message/test_messages.py @@ -4,7 +4,7 @@ import pytest from src.transport.transaction.message.messages import Messages from src.transport.transaction.message.message_info import MessageInfo, message_info -from src.transport.transaction.message.message_info import MessageType +from src.transport.transaction.message.message_type import MessageType from src.transport.transaction.message.poly_bus_message_not_found_error import PolyBusMessageNotFoundError