jararaca 0.3.20__tar.gz → 0.3.22__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.

Files changed (93) hide show
  1. {jararaca-0.3.20 → jararaca-0.3.22}/PKG-INFO +3 -5
  2. {jararaca-0.3.20 → jararaca-0.3.22}/pyproject.toml +1 -1
  3. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/messagebus/worker.py +2 -0
  4. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/observability/providers/otel.py +25 -5
  5. {jararaca-0.3.20 → jararaca-0.3.22}/LICENSE +0 -0
  6. {jararaca-0.3.20 → jararaca-0.3.22}/README.md +0 -0
  7. {jararaca-0.3.20 → jararaca-0.3.22}/docs/CNAME +0 -0
  8. {jararaca-0.3.20 → jararaca-0.3.22}/docs/architecture.md +0 -0
  9. {jararaca-0.3.20 → jararaca-0.3.22}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg +0 -0
  10. {jararaca-0.3.20 → jararaca-0.3.22}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.webp +0 -0
  11. {jararaca-0.3.20 → jararaca-0.3.22}/docs/assets/tracing_example.png +0 -0
  12. {jararaca-0.3.20 → jararaca-0.3.22}/docs/expose-type.md +0 -0
  13. {jararaca-0.3.20 → jararaca-0.3.22}/docs/http-rpc.md +0 -0
  14. {jararaca-0.3.20 → jararaca-0.3.22}/docs/index.md +0 -0
  15. {jararaca-0.3.20 → jararaca-0.3.22}/docs/interceptors.md +0 -0
  16. {jararaca-0.3.20 → jararaca-0.3.22}/docs/messagebus.md +0 -0
  17. {jararaca-0.3.20 → jararaca-0.3.22}/docs/retry.md +0 -0
  18. {jararaca-0.3.20 → jararaca-0.3.22}/docs/scheduler.md +0 -0
  19. {jararaca-0.3.20 → jararaca-0.3.22}/docs/stylesheets/custom.css +0 -0
  20. {jararaca-0.3.20 → jararaca-0.3.22}/docs/websocket.md +0 -0
  21. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/__init__.py +0 -0
  22. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/__main__.py +0 -0
  23. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/broker_backend/__init__.py +0 -0
  24. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/broker_backend/mapper.py +0 -0
  25. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/broker_backend/redis_broker_backend.py +0 -0
  26. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/cli.py +0 -0
  27. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/common/__init__.py +0 -0
  28. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/core/__init__.py +0 -0
  29. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/core/providers.py +0 -0
  30. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/core/uow.py +0 -0
  31. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/di.py +0 -0
  32. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/files/entity.py.mako +0 -0
  33. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/lifecycle.py +0 -0
  34. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/messagebus/__init__.py +0 -0
  35. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/messagebus/bus_message_controller.py +0 -0
  36. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/messagebus/consumers/__init__.py +0 -0
  37. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/messagebus/decorators.py +0 -0
  38. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/messagebus/implicit_headers.py +0 -0
  39. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/messagebus/interceptors/__init__.py +0 -0
  40. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/messagebus/interceptors/aiopika_publisher_interceptor.py +0 -0
  41. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/messagebus/interceptors/publisher_interceptor.py +0 -0
  42. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/messagebus/message.py +0 -0
  43. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/messagebus/publisher.py +0 -0
  44. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/microservice.py +0 -0
  45. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/observability/decorators.py +0 -0
  46. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/observability/hooks.py +0 -0
  47. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/observability/interceptor.py +0 -0
  48. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/observability/providers/__init__.py +0 -0
  49. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/persistence/base.py +0 -0
  50. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/persistence/exports.py +0 -0
  51. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/persistence/interceptors/__init__.py +0 -0
  52. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/persistence/interceptors/aiosqa_interceptor.py +0 -0
  53. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/persistence/interceptors/constants.py +0 -0
  54. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/persistence/interceptors/decorators.py +0 -0
  55. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/persistence/session.py +0 -0
  56. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/persistence/sort_filter.py +0 -0
  57. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/persistence/utilities.py +0 -0
  58. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/presentation/__init__.py +0 -0
  59. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/presentation/decorators.py +0 -0
  60. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/presentation/hooks.py +0 -0
  61. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/presentation/http_microservice.py +0 -0
  62. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/presentation/server.py +0 -0
  63. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/presentation/websocket/__init__.py +0 -0
  64. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/presentation/websocket/base_types.py +0 -0
  65. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/presentation/websocket/context.py +0 -0
  66. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/presentation/websocket/decorators.py +0 -0
  67. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/presentation/websocket/redis.py +0 -0
  68. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/presentation/websocket/types.py +0 -0
  69. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/presentation/websocket/websocket_interceptor.py +0 -0
  70. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/py.typed +0 -0
  71. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/reflect/__init__.py +0 -0
  72. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/reflect/controller_inspect.py +0 -0
  73. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/reflect/metadata.py +0 -0
  74. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/rpc/__init__.py +0 -0
  75. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/rpc/http/__init__.py +0 -0
  76. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/rpc/http/backends/__init__.py +0 -0
  77. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/rpc/http/backends/httpx.py +0 -0
  78. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/rpc/http/backends/otel.py +0 -0
  79. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/rpc/http/decorators.py +0 -0
  80. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/rpc/http/httpx.py +0 -0
  81. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/scheduler/__init__.py +0 -0
  82. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/scheduler/beat_worker.py +0 -0
  83. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/scheduler/decorators.py +0 -0
  84. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/scheduler/types.py +0 -0
  85. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/tools/app_config/__init__.py +0 -0
  86. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/tools/app_config/decorators.py +0 -0
  87. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/tools/app_config/interceptor.py +0 -0
  88. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/tools/typescript/__init__.py +0 -0
  89. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/tools/typescript/decorators.py +0 -0
  90. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/tools/typescript/interface_parser.py +0 -0
  91. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/utils/__init__.py +0 -0
  92. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/utils/rabbitmq_utils.py +0 -0
  93. {jararaca-0.3.20 → jararaca-0.3.22}/src/jararaca/utils/retry.py +0 -0
@@ -1,16 +1,14 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.1
2
2
  Name: jararaca
3
- Version: 0.3.20
3
+ Version: 0.3.22
4
4
  Summary: A simple and fast API framework for Python
5
- License-File: LICENSE
5
+ Home-page: https://github.com/LuscasLeo/jararaca
6
6
  Author: Lucas S
7
7
  Author-email: me@luscasleo.dev
8
8
  Requires-Python: >=3.11,<4.0
9
9
  Classifier: Programming Language :: Python :: 3
10
10
  Classifier: Programming Language :: Python :: 3.11
11
11
  Classifier: Programming Language :: Python :: 3.12
12
- Classifier: Programming Language :: Python :: 3.13
13
- Classifier: Programming Language :: Python :: 3.14
14
12
  Provides-Extra: docs
15
13
  Provides-Extra: http
16
14
  Provides-Extra: opentelemetry
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "jararaca"
3
- version = "0.3.20"
3
+ version = "0.3.22"
4
4
  description = "A simple and fast API framework for Python"
5
5
  authors = ["Lucas S <me@luscasleo.dev>"]
6
6
  readme = "README.md"
@@ -1528,6 +1528,7 @@ class MessageHandlerCallback:
1528
1528
  logger.exception(
1529
1529
  f"Error processing message {message_id} on topic {routing_key}: {str(base_exc)}"
1530
1530
  )
1531
+ raise
1531
1532
 
1532
1533
  # Handle rejection with retry logic
1533
1534
  if incoming_message_spec.requeue_on_exception:
@@ -1543,6 +1544,7 @@ class MessageHandlerCallback:
1543
1544
  await self.handle_reject_message(
1544
1545
  aio_pika_message, requeue=False, exception=base_exc
1545
1546
  )
1547
+
1546
1548
  else:
1547
1549
  # Message processed successfully, log and clean up any retry state
1548
1550
  message_id = aio_pika_message.message_id or str(uuid.uuid4())
@@ -75,30 +75,50 @@ class OtelTracingContextProviderFactory(TracingContextProviderFactory):
75
75
  title: str = "Unmapped App Context Execution"
76
76
  headers: dict[str, Any] = {}
77
77
  tx_data = app_tx_ctx.transaction_data
78
- extra_attributes: dict[str, Any] = {}
78
+ extra_attributes: dict[str, str] = {}
79
79
  if tx_data.context_type == "http":
80
80
 
81
81
  headers = dict(tx_data.request.headers)
82
82
  title = f"HTTP {tx_data.request.method} {tx_data.request.url}"
83
83
  extra_attributes = {
84
84
  "http.method": tx_data.request.method,
85
- "http.url": tx_data.request.url,
86
- "http.status_code": tx_data.response.status_code,
85
+ "http.url": str(tx_data.request.url),
86
+ "http.path": tx_data.request.url.path, # Path with the key applied to the template
87
+ "http.route.path": tx_data.request.scope["route"].path,
88
+ "http.route.endpoint.name": tx_data.request[
89
+ "route"
90
+ ].endpoint.__qualname__,
91
+ "http.query": tx_data.request.url.query,
92
+ **{
93
+ f"http.request.path_param.{k}": v
94
+ for k, v in tx_data.request.path_params.items()
95
+ },
96
+ **{
97
+ f"http.request.query_param.{k}": v
98
+ for k, v in tx_data.request.query_params.items()
99
+ },
100
+ **{
101
+ f"http.request.header.{k}": v
102
+ for k, v in tx_data.request.headers.items()
103
+ },
87
104
  }
88
105
 
89
106
  elif tx_data.context_type == "message_bus":
90
107
  title = f"Message Bus {tx_data.topic}"
91
108
  headers = use_implicit_headers() or {}
109
+ payload = tx_data.message.payload()
92
110
  extra_attributes = {
93
111
  "bus.topic": tx_data.topic,
94
- "bus.message": tx_data.message.payload().model_dump_json(),
112
+ "bus.message.body": payload.model_dump_json(),
113
+ "bus.message.name": payload.__class__.__qualname__,
114
+ "bus.message.module": payload.__class__.__module__,
95
115
  }
96
116
 
97
117
  elif tx_data.context_type == "websocket":
98
118
  headers = dict(tx_data.websocket.headers)
99
119
  title = f"WebSocket {tx_data.websocket.url}"
100
120
  extra_attributes = {
101
- "ws.url": tx_data.websocket.url,
121
+ "ws.url": str(tx_data.websocket.url),
102
122
  }
103
123
 
104
124
  elif tx_data.context_type == "scheduler":
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