Skip to content

Commit 4deea19

Browse files
TexasCodingclaude
andcommitted
fix(client): add super().__init__() calls to all mixins for proper initialization
- Add super().__init__() to AuthenticationMixin, HttpMixin, and CacheMixin - Add super().__init__() to ConnectionManagementMixin and MemoryManagementMixin - Fixes AttributeError: 'ProjectX' object has no attribute 'api_call_count' - Ensures proper initialization order in multiple inheritance hierarchy All mixins now properly call super().__init__() to ensure parent classes are initialized 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent def87ae commit 4deea19

File tree

5 files changed

+5
-0
lines changed

5 files changed

+5
-0
lines changed

src/project_x_py/client/auth.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class AuthenticationMixin:
2323

2424
def __init__(self) -> None:
2525
"""Initialize authentication attributes."""
26+
super().__init__()
2627
self.session_token = ""
2728
self.token_expiry: datetime.datetime | None = None
2829
self._authenticated = False

src/project_x_py/client/cache.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class CacheMixin:
2020

2121
def __init__(self) -> None:
2222
"""Initialize cache attributes."""
23+
super().__init__()
2324
# Cache for instrument data (symbol -> instrument)
2425
self._instrument_cache: dict[str, Instrument] = {}
2526
self._instrument_cache_time: dict[str, float] = {}

src/project_x_py/client/http.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class HttpMixin:
2626

2727
def __init__(self) -> None:
2828
"""Initialize HTTP client attributes."""
29+
super().__init__()
2930
self._client: httpx.AsyncClient | None = None
3031
self.api_call_count = 0
3132

src/project_x_py/realtime/connection_management.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class ConnectionManagementMixin:
1919

2020
def __init__(self) -> None:
2121
"""Initialize connection management attributes."""
22+
super().__init__()
2223
self._loop: asyncio.AbstractEventLoop | None = None
2324

2425
async def setup_connections(self: "ProjectXRealtimeClientProtocol") -> None:

src/project_x_py/realtime_data_manager/memory_management.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class MemoryManagementMixin:
1818

1919
def __init__(self) -> None:
2020
"""Initialize memory management attributes."""
21+
super().__init__()
2122
self._cleanup_task: asyncio.Task[None] | None = None
2223

2324
async def _cleanup_old_data(self: "RealtimeDataManagerProtocol") -> None:

0 commit comments

Comments
 (0)