jararaca 0.3.23__tar.gz → 0.3.24__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.
Potentially problematic release.
This version of jararaca might be problematic. Click here for more details.
- {jararaca-0.3.23 → jararaca-0.3.24}/PKG-INFO +1 -1
- {jararaca-0.3.23 → jararaca-0.3.24}/pyproject.toml +1 -1
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/observability/decorators.py +18 -2
- jararaca-0.3.24/src/jararaca/observability/hooks.py +59 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/observability/providers/otel.py +25 -2
- jararaca-0.3.23/src/jararaca/observability/hooks.py +0 -20
- {jararaca-0.3.23 → jararaca-0.3.24}/LICENSE +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/README.md +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/docs/CNAME +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/docs/architecture.md +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.webp +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/docs/assets/tracing_example.png +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/docs/expose-type.md +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/docs/http-rpc.md +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/docs/index.md +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/docs/interceptors.md +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/docs/messagebus.md +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/docs/retry.md +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/docs/scheduler.md +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/docs/stylesheets/custom.css +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/docs/websocket.md +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/__main__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/broker_backend/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/broker_backend/mapper.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/broker_backend/redis_broker_backend.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/cli.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/common/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/core/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/core/providers.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/core/uow.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/di.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/files/entity.py.mako +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/lifecycle.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/messagebus/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/messagebus/bus_message_controller.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/messagebus/consumers/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/messagebus/decorators.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/messagebus/implicit_headers.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/messagebus/interceptors/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/messagebus/interceptors/aiopika_publisher_interceptor.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/messagebus/interceptors/publisher_interceptor.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/messagebus/message.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/messagebus/publisher.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/messagebus/worker.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/microservice.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/observability/interceptor.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/observability/providers/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/persistence/base.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/persistence/exports.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/persistence/interceptors/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/persistence/interceptors/aiosqa_interceptor.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/persistence/interceptors/constants.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/persistence/interceptors/decorators.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/persistence/session.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/persistence/sort_filter.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/persistence/utilities.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/presentation/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/presentation/decorators.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/presentation/hooks.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/presentation/http_microservice.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/presentation/server.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/presentation/websocket/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/presentation/websocket/base_types.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/presentation/websocket/context.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/presentation/websocket/decorators.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/presentation/websocket/redis.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/presentation/websocket/types.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/presentation/websocket/websocket_interceptor.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/py.typed +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/reflect/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/reflect/controller_inspect.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/reflect/metadata.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/rpc/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/rpc/http/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/rpc/http/backends/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/rpc/http/backends/httpx.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/rpc/http/backends/otel.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/rpc/http/decorators.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/rpc/http/httpx.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/scheduler/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/scheduler/beat_worker.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/scheduler/decorators.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/scheduler/types.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/tools/app_config/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/tools/app_config/decorators.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/tools/app_config/interceptor.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/tools/typescript/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/tools/typescript/decorators.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/tools/typescript/interface_parser.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/utils/__init__.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/utils/rabbitmq_utils.py +0 -0
- {jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/utils/retry.py +0 -0
|
@@ -9,6 +9,7 @@ from typing import (
|
|
|
9
9
|
Callable,
|
|
10
10
|
ContextManager,
|
|
11
11
|
Generator,
|
|
12
|
+
Literal,
|
|
12
13
|
Mapping,
|
|
13
14
|
Protocol,
|
|
14
15
|
Sequence,
|
|
@@ -36,10 +37,25 @@ AttributeMap = Mapping[str, AttributeValue]
|
|
|
36
37
|
|
|
37
38
|
class TracingContextProvider(Protocol):
|
|
38
39
|
|
|
39
|
-
def
|
|
40
|
+
def start_trace_context(
|
|
40
41
|
self, trace_name: str, context_attributes: AttributeMap | None
|
|
41
42
|
) -> ContextManager[Any]: ...
|
|
42
43
|
|
|
44
|
+
def add_event(
|
|
45
|
+
self,
|
|
46
|
+
event_name: str,
|
|
47
|
+
event_attributes: AttributeMap | None = None,
|
|
48
|
+
) -> None: ...
|
|
49
|
+
|
|
50
|
+
def set_span_status(self, status_code: Literal["OK", "ERROR", "UNSET"]) -> None: ...
|
|
51
|
+
|
|
52
|
+
def record_exception(
|
|
53
|
+
self,
|
|
54
|
+
exception: Exception,
|
|
55
|
+
attributes: AttributeMap | None = None,
|
|
56
|
+
escaped: bool = False,
|
|
57
|
+
) -> None: ...
|
|
58
|
+
|
|
43
59
|
|
|
44
60
|
class TracingContextProviderFactory(Protocol):
|
|
45
61
|
|
|
@@ -101,7 +117,7 @@ class TracedFunc:
|
|
|
101
117
|
) -> Any:
|
|
102
118
|
|
|
103
119
|
if ctx_provider := get_tracing_ctx_provider():
|
|
104
|
-
with ctx_provider(
|
|
120
|
+
with ctx_provider.start_trace_context(
|
|
105
121
|
self.trace_name,
|
|
106
122
|
self.trace_mapper(*args, **kwargs),
|
|
107
123
|
):
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
from contextlib import contextmanager
|
|
2
|
+
from typing import Any, Generator, Literal
|
|
3
|
+
|
|
4
|
+
from jararaca.observability.decorators import (
|
|
5
|
+
AttributeMap,
|
|
6
|
+
TracingContextProvider,
|
|
7
|
+
get_tracing_ctx_provider,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@contextmanager
|
|
12
|
+
def spawn_trace(
|
|
13
|
+
name: str,
|
|
14
|
+
attributes: AttributeMap | None = None,
|
|
15
|
+
) -> Generator[None, Any, None]:
|
|
16
|
+
|
|
17
|
+
if trace_context_provider := get_tracing_ctx_provider():
|
|
18
|
+
with trace_context_provider.start_trace_context(
|
|
19
|
+
trace_name=name, context_attributes=attributes
|
|
20
|
+
):
|
|
21
|
+
yield
|
|
22
|
+
else:
|
|
23
|
+
yield
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def add_event(
|
|
27
|
+
name: str,
|
|
28
|
+
attributes: AttributeMap | None = None,
|
|
29
|
+
) -> None:
|
|
30
|
+
|
|
31
|
+
if trace_context_provider := get_tracing_ctx_provider():
|
|
32
|
+
trace_context_provider.add_event(
|
|
33
|
+
event_name=name,
|
|
34
|
+
event_attributes=attributes,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def set_span_status(status_code: Literal["OK", "ERROR", "UNSET"]) -> None:
|
|
39
|
+
|
|
40
|
+
if trace_context_provider := get_tracing_ctx_provider():
|
|
41
|
+
trace_context_provider.set_span_status(status_code=status_code)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def record_exception(
|
|
45
|
+
exception: Exception,
|
|
46
|
+
attributes: AttributeMap | None = None,
|
|
47
|
+
escaped: bool = False,
|
|
48
|
+
) -> None:
|
|
49
|
+
|
|
50
|
+
if trace_context_provider := get_tracing_ctx_provider():
|
|
51
|
+
trace_context_provider.record_exception(
|
|
52
|
+
exception=exception,
|
|
53
|
+
attributes=attributes,
|
|
54
|
+
escaped=escaped,
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def get_tracing_provider() -> TracingContextProvider | None:
|
|
59
|
+
return get_tracing_ctx_provider()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
from contextlib import asynccontextmanager, contextmanager
|
|
3
|
-
from typing import Any, AsyncGenerator, Generator, Protocol
|
|
3
|
+
from typing import Any, AsyncGenerator, Generator, Literal, Protocol
|
|
4
4
|
|
|
5
5
|
from opentelemetry import metrics, trace
|
|
6
6
|
from opentelemetry._logs import set_logger_provider
|
|
@@ -50,7 +50,7 @@ class OtelTracingContextProvider(TracingContextProvider):
|
|
|
50
50
|
self.app_context = app_context
|
|
51
51
|
|
|
52
52
|
@contextmanager
|
|
53
|
-
def
|
|
53
|
+
def start_trace_context(
|
|
54
54
|
self,
|
|
55
55
|
trace_name: str,
|
|
56
56
|
context_attributes: AttributeMap | None,
|
|
@@ -59,6 +59,29 @@ class OtelTracingContextProvider(TracingContextProvider):
|
|
|
59
59
|
with tracer.start_as_current_span(trace_name, attributes=context_attributes):
|
|
60
60
|
yield
|
|
61
61
|
|
|
62
|
+
def add_event(
|
|
63
|
+
self, event_name: str, event_attributes: AttributeMap | None = None
|
|
64
|
+
) -> None:
|
|
65
|
+
trace.get_current_span().add_event(name=event_name, attributes=event_attributes)
|
|
66
|
+
|
|
67
|
+
def set_span_status(self, status_code: Literal["OK", "ERROR", "UNSET"]) -> None:
|
|
68
|
+
span = trace.get_current_span()
|
|
69
|
+
if status_code == "OK":
|
|
70
|
+
span.set_status(trace.Status(trace.StatusCode.OK))
|
|
71
|
+
elif status_code == "ERROR":
|
|
72
|
+
span.set_status(trace.Status(trace.StatusCode.ERROR))
|
|
73
|
+
else:
|
|
74
|
+
span.set_status(trace.Status(trace.StatusCode.UNSET))
|
|
75
|
+
|
|
76
|
+
def record_exception(
|
|
77
|
+
self,
|
|
78
|
+
exception: Exception,
|
|
79
|
+
attributes: AttributeMap | None = None,
|
|
80
|
+
escaped: bool = False,
|
|
81
|
+
) -> None:
|
|
82
|
+
span = trace.get_current_span()
|
|
83
|
+
span.record_exception(exception, attributes=attributes, escaped=escaped)
|
|
84
|
+
|
|
62
85
|
|
|
63
86
|
class OtelTracingContextProviderFactory(TracingContextProviderFactory):
|
|
64
87
|
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
from contextlib import contextmanager
|
|
2
|
-
from typing import Any, Generator
|
|
3
|
-
|
|
4
|
-
from jararaca.observability.decorators import AttributeMap, get_tracing_ctx_provider
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
@contextmanager
|
|
8
|
-
def spawn_trace(
|
|
9
|
-
name: str,
|
|
10
|
-
attributes: AttributeMap | None = None,
|
|
11
|
-
) -> Generator[None, Any, None]:
|
|
12
|
-
|
|
13
|
-
if trace_context_provider := get_tracing_ctx_provider():
|
|
14
|
-
with trace_context_provider(trace_name=name, context_attributes=attributes):
|
|
15
|
-
yield
|
|
16
|
-
else:
|
|
17
|
-
yield
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
spawn_trace
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/messagebus/interceptors/publisher_interceptor.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
|
{jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/persistence/interceptors/aiosqa_interceptor.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jararaca-0.3.23 → jararaca-0.3.24}/src/jararaca/presentation/websocket/websocket_interceptor.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
|
|
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
|