acevo-sdk 0.1.0__py3-none-any.whl
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.
- acevo/__init__.py +27 -0
- acevo/_logging.py +45 -0
- acevo/capture.py +859 -0
- acevo/catalogs/__init__.py +9 -0
- acevo/catalogs/data/track_catalog.json +2604 -0
- acevo/catalogs/tracks.py +140 -0
- acevo/constants.py +55 -0
- acevo/context.py +54 -0
- acevo/decoder.py +1649 -0
- acevo/logs.py +1795 -0
- acevo/models.py +212 -0
- acevo/shared_session.py +767 -0
- acevo/tyre_state.py +51 -0
- acevo_sdk-0.1.0.dist-info/METADATA +193 -0
- acevo_sdk-0.1.0.dist-info/RECORD +18 -0
- acevo_sdk-0.1.0.dist-info/WHEEL +5 -0
- acevo_sdk-0.1.0.dist-info/licenses/LICENSE +21 -0
- acevo_sdk-0.1.0.dist-info/top_level.txt +1 -0
acevo/__init__.py
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"""Python SDK for Assetto Corsa Evo telemetry and logs."""
|
|
2
|
+
|
|
3
|
+
from .capture import CaptureMetadata, FrameData, RegionReader, TelemetryCapture
|
|
4
|
+
from .decoder import decode_graphics, decode_physics, decode_static
|
|
5
|
+
from .logs import LogParser
|
|
6
|
+
from .models import InProgressLap, LapData, LapState, SessionData, StintData
|
|
7
|
+
from .shared_session import SharedSessionManager
|
|
8
|
+
|
|
9
|
+
__version__ = "0.1.0"
|
|
10
|
+
|
|
11
|
+
__all__ = [
|
|
12
|
+
"__version__",
|
|
13
|
+
"CaptureMetadata",
|
|
14
|
+
"FrameData",
|
|
15
|
+
"RegionReader",
|
|
16
|
+
"TelemetryCapture",
|
|
17
|
+
"decode_graphics",
|
|
18
|
+
"decode_physics",
|
|
19
|
+
"decode_static",
|
|
20
|
+
"LogParser",
|
|
21
|
+
"InProgressLap",
|
|
22
|
+
"LapData",
|
|
23
|
+
"LapState",
|
|
24
|
+
"SessionData",
|
|
25
|
+
"StintData",
|
|
26
|
+
"SharedSessionManager",
|
|
27
|
+
]
|
acevo/_logging.py
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"""Internal logging helpers for acevo-sdk."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
from enum import Enum
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Component(Enum):
|
|
11
|
+
"""Component identifiers used in SDK log records."""
|
|
12
|
+
|
|
13
|
+
LOG_PARSER = "LOG_PARSER"
|
|
14
|
+
TELEMETRY = "TELEMETRY"
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
_logger = logging.getLogger("acevo")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _log(level: int, component: Component, message: str, **kwargs: Any) -> None:
|
|
21
|
+
if kwargs:
|
|
22
|
+
context = " ".join(f"{key}={value}" for key, value in kwargs.items() if value is not None)
|
|
23
|
+
if context:
|
|
24
|
+
message = f"{message} | {context}"
|
|
25
|
+
_logger.log(level, "[%s] %s", component.value, message)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def log_debug(component: Component, message: str, **kwargs: Any) -> None:
|
|
29
|
+
_log(logging.DEBUG, component, message, **kwargs)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def log_info(component: Component, message: str, **kwargs: Any) -> None:
|
|
33
|
+
_log(logging.INFO, component, message, **kwargs)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def log_warning(component: Component, message: str, **kwargs: Any) -> None:
|
|
37
|
+
_log(logging.WARNING, component, message, **kwargs)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def log_error(component: Component, message: str, **kwargs: Any) -> None:
|
|
41
|
+
_log(logging.ERROR, component, message, **kwargs)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def log_exception(component: Component, message: str, exception: Exception, **kwargs: Any) -> None:
|
|
45
|
+
_logger.exception("[%s] %s | error=%s", component.value, message, exception, extra=kwargs or None)
|