jararaca 0.3.28__tar.gz → 0.3.29__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.28 → jararaca-0.3.29}/PKG-INFO +1 -1
- {jararaca-0.3.28 → jararaca-0.3.29}/pyproject.toml +1 -1
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/__init__.py +9 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/observability/decorators.py +13 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/observability/hooks.py +22 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/observability/providers/otel.py +27 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/LICENSE +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/README.md +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/docs/CNAME +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/docs/architecture.md +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.webp +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/docs/assets/tracing_example.png +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/docs/expose-type.md +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/docs/http-rpc.md +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/docs/index.md +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/docs/interceptors.md +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/docs/messagebus.md +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/docs/retry.md +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/docs/scheduler.md +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/docs/stylesheets/custom.css +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/docs/websocket.md +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/__main__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/broker_backend/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/broker_backend/mapper.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/broker_backend/redis_broker_backend.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/cli.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/common/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/core/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/core/providers.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/core/uow.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/di.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/files/entity.py.mako +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/lifecycle.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/messagebus/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/messagebus/bus_message_controller.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/messagebus/consumers/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/messagebus/decorators.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/messagebus/implicit_headers.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/messagebus/interceptors/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/messagebus/interceptors/aiopika_publisher_interceptor.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/messagebus/interceptors/publisher_interceptor.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/messagebus/message.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/messagebus/publisher.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/messagebus/worker.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/microservice.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/observability/constants.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/observability/fastapi_exception_handler.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/observability/interceptor.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/observability/providers/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/persistence/base.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/persistence/exports.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/persistence/interceptors/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/persistence/interceptors/aiosqa_interceptor.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/persistence/interceptors/constants.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/persistence/interceptors/decorators.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/persistence/session.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/persistence/sort_filter.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/persistence/utilities.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/presentation/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/presentation/decorators.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/presentation/hooks.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/presentation/http_microservice.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/presentation/server.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/presentation/websocket/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/presentation/websocket/base_types.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/presentation/websocket/context.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/presentation/websocket/decorators.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/presentation/websocket/redis.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/presentation/websocket/types.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/presentation/websocket/websocket_interceptor.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/py.typed +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/reflect/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/reflect/controller_inspect.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/reflect/metadata.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/rpc/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/rpc/http/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/rpc/http/backends/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/rpc/http/backends/httpx.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/rpc/http/backends/otel.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/rpc/http/decorators.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/rpc/http/httpx.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/scheduler/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/scheduler/beat_worker.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/scheduler/decorators.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/scheduler/types.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/tools/app_config/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/tools/app_config/decorators.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/tools/app_config/interceptor.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/tools/typescript/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/tools/typescript/decorators.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/tools/typescript/interface_parser.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/utils/__init__.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/utils/rabbitmq_utils.py +0 -0
- {jararaca-0.3.28 → jararaca-0.3.29}/src/jararaca/utils/retry.py +0 -0
|
@@ -23,6 +23,9 @@ if TYPE_CHECKING:
|
|
|
23
23
|
)
|
|
24
24
|
from jararaca.observability.hooks import (
|
|
25
25
|
add_event,
|
|
26
|
+
add_span_link,
|
|
27
|
+
get_current_span,
|
|
28
|
+
get_current_span_context,
|
|
26
29
|
get_tracing_provider,
|
|
27
30
|
record_exception,
|
|
28
31
|
set_span_attribute,
|
|
@@ -239,6 +242,9 @@ if TYPE_CHECKING:
|
|
|
239
242
|
"TracedClass",
|
|
240
243
|
"traced_class",
|
|
241
244
|
"start_span",
|
|
245
|
+
"add_span_link",
|
|
246
|
+
"get_current_span",
|
|
247
|
+
"get_current_span_context",
|
|
242
248
|
"spawn_trace",
|
|
243
249
|
"set_span_attribute",
|
|
244
250
|
"add_event",
|
|
@@ -427,6 +433,9 @@ _dynamic_imports: "dict[str, tuple[str, str, str | None]]" = {
|
|
|
427
433
|
),
|
|
428
434
|
"set_span_attribute": (__SPEC_PARENT__, "observability.hooks", None),
|
|
429
435
|
"start_span": (__SPEC_PARENT__, "observability.hooks", None),
|
|
436
|
+
"add_span_link": (__SPEC_PARENT__, "observability.hooks", None),
|
|
437
|
+
"get_current_span": (__SPEC_PARENT__, "observability.hooks", None),
|
|
438
|
+
"get_current_span_context": (__SPEC_PARENT__, "observability.hooks", None),
|
|
430
439
|
"add_event": (__SPEC_PARENT__, "observability.hooks", None),
|
|
431
440
|
"set_span_status": (__SPEC_PARENT__, "observability.hooks", None),
|
|
432
441
|
"record_exception": (__SPEC_PARENT__, "observability.hooks", None),
|
|
@@ -35,6 +35,12 @@ AttributeValue = Union[
|
|
|
35
35
|
AttributeMap = Mapping[str, AttributeValue]
|
|
36
36
|
|
|
37
37
|
|
|
38
|
+
class TracingSpan(Protocol): ...
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class TracingSpanContext(Protocol): ...
|
|
42
|
+
|
|
43
|
+
|
|
38
44
|
class TracingContextProvider(Protocol):
|
|
39
45
|
|
|
40
46
|
def start_span_context(
|
|
@@ -63,6 +69,13 @@ class TracingContextProvider(Protocol):
|
|
|
63
69
|
) -> None: ...
|
|
64
70
|
|
|
65
71
|
def update_span_name(self, new_name: str) -> None: ...
|
|
72
|
+
|
|
73
|
+
def add_link(self, span_context: TracingSpanContext) -> None: ...
|
|
74
|
+
|
|
75
|
+
def get_current_span(self) -> TracingSpan | None: ...
|
|
76
|
+
def get_current_span_context(self) -> TracingSpanContext | None: ...
|
|
77
|
+
|
|
78
|
+
|
|
66
79
|
class TracingContextProviderFactory(Protocol):
|
|
67
80
|
|
|
68
81
|
def root_setup(
|
|
@@ -6,6 +6,8 @@ from jararaca.observability.decorators import (
|
|
|
6
6
|
AttributeMap,
|
|
7
7
|
AttributeValue,
|
|
8
8
|
TracingContextProvider,
|
|
9
|
+
TracingSpan,
|
|
10
|
+
TracingSpanContext,
|
|
9
11
|
get_tracing_ctx_provider,
|
|
10
12
|
)
|
|
11
13
|
|
|
@@ -84,3 +86,23 @@ def set_span_attribute(
|
|
|
84
86
|
|
|
85
87
|
def get_tracing_provider() -> TracingContextProvider | None:
|
|
86
88
|
return get_tracing_ctx_provider()
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def get_current_span_context() -> TracingSpanContext | None:
|
|
92
|
+
|
|
93
|
+
if trace_context_provider := get_tracing_ctx_provider():
|
|
94
|
+
return trace_context_provider.get_current_span_context()
|
|
95
|
+
return None
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def get_current_span() -> TracingSpan | None:
|
|
99
|
+
|
|
100
|
+
if trace_context_provider := get_tracing_ctx_provider():
|
|
101
|
+
return trace_context_provider.get_current_span()
|
|
102
|
+
return None
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def add_span_link(span_context: TracingSpanContext) -> None:
|
|
106
|
+
|
|
107
|
+
if trace_context_provider := get_tracing_ctx_provider():
|
|
108
|
+
trace_context_provider.add_link(span_context=span_context)
|
|
@@ -40,12 +40,26 @@ from jararaca.observability.decorators import (
|
|
|
40
40
|
AttributeValue,
|
|
41
41
|
TracingContextProvider,
|
|
42
42
|
TracingContextProviderFactory,
|
|
43
|
+
TracingSpan,
|
|
44
|
+
TracingSpanContext,
|
|
43
45
|
)
|
|
44
46
|
from jararaca.observability.interceptor import ObservabilityProvider
|
|
45
47
|
|
|
46
48
|
tracer: trace.Tracer = trace.get_tracer(__name__)
|
|
47
49
|
|
|
48
50
|
|
|
51
|
+
class OtelTracingSpan(TracingSpan):
|
|
52
|
+
|
|
53
|
+
def __init__(self, span: trace.Span) -> None:
|
|
54
|
+
self.span = span
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class OtelTracingSpanContext(TracingSpanContext):
|
|
58
|
+
|
|
59
|
+
def __init__(self, span_context: trace.SpanContext) -> None:
|
|
60
|
+
self.span_context = span_context
|
|
61
|
+
|
|
62
|
+
|
|
49
63
|
class OtelTracingContextProvider(TracingContextProvider):
|
|
50
64
|
|
|
51
65
|
def __init__(self, app_context: AppTransactionContext) -> None:
|
|
@@ -90,8 +104,21 @@ class OtelTracingContextProvider(TracingContextProvider):
|
|
|
90
104
|
|
|
91
105
|
def update_span_name(self, new_name: str) -> None:
|
|
92
106
|
span = trace.get_current_span()
|
|
107
|
+
|
|
93
108
|
span.update_name(new_name)
|
|
94
109
|
|
|
110
|
+
def add_link(self, span_context: TracingSpanContext) -> None:
|
|
111
|
+
if not isinstance(span_context, OtelTracingSpanContext):
|
|
112
|
+
return
|
|
113
|
+
span = trace.get_current_span()
|
|
114
|
+
span.add_link(span_context.span_context)
|
|
115
|
+
|
|
116
|
+
def get_current_span(self) -> TracingSpan | None:
|
|
117
|
+
return OtelTracingSpan(trace.get_current_span())
|
|
118
|
+
|
|
119
|
+
def get_current_span_context(self) -> TracingSpanContext | None:
|
|
120
|
+
return OtelTracingSpanContext(trace.get_current_span().get_span_context())
|
|
121
|
+
|
|
95
122
|
|
|
96
123
|
class OtelTracingContextProviderFactory(TracingContextProviderFactory):
|
|
97
124
|
|
|
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.28 → jararaca-0.3.29}/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
|
|
File without changes
|
|
File without changes
|
{jararaca-0.3.28 → jararaca-0.3.29}/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.28 → jararaca-0.3.29}/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
|