jararaca 0.2.31__tar.gz → 0.2.33__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.2.31 → jararaca-0.2.33}/PKG-INFO +1 -1
- {jararaca-0.2.31 → jararaca-0.2.33}/pyproject.toml +1 -1
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/persistence/sort_filter.py +33 -9
- {jararaca-0.2.31 → jararaca-0.2.33}/LICENSE +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/README.md +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/Message Bus/Decorators.md +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/Message Bus/Interceptors.md +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/Observability/Decorators.md +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/Observability/Interceptors.md +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/Presentation/Decorators.md +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/RPC/RestClients/Decorators.md +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/RPC/RestClients/Middlewared.md +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/Schedule/Decorators.md +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/Websocket/Decorators.md +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/Websocket/Interceptors.md +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/docs/Concept/Adapters.md +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/docs/Concept/Hexagonal Architecture.md +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/docs/Concept/Ports.md +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.webp +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/docs/assets/tracing_example.png +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/docs/index.md +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/__init__.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/__main__.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/cli.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/common/__init__.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/core/__init__.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/core/providers.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/core/uow.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/di.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/files/entity.py.mako +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/lifecycle.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/messagebus/__init__.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/messagebus/decorators.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/messagebus/interceptors/__init__.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/messagebus/interceptors/publisher_interceptor.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/messagebus/publisher.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/messagebus/types.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/messagebus/worker.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/microservice.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/observability/decorators.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/observability/interceptor.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/observability/providers/__init__.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/observability/providers/otel.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/persistence/base.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/persistence/exports.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/persistence/interceptors/__init__.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/persistence/interceptors/aiosqa_interceptor.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/persistence/session.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/persistence/utilities.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/__init__.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/decorators.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/hooks.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/http_microservice.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/server.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/websocket/__init__.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/websocket/base_types.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/websocket/context.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/websocket/decorators.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/websocket/redis.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/websocket/types.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/websocket/websocket_interceptor.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/py.typed +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/rpc/__init__.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/rpc/http/__init__.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/rpc/http/backends/__init__.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/rpc/http/backends/httpx.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/rpc/http/backends/otel.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/rpc/http/decorators.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/rpc/http/httpx.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/scheduler/__init__.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/scheduler/decorators.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/scheduler/scheduler.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/tools/app_config/__init__.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/tools/app_config/decorators.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/tools/app_config/interceptor.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/tools/metadata.py +0 -0
- {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/tools/typescript/interface_parser.py +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import re
|
|
1
2
|
from datetime import date, datetime
|
|
2
3
|
from functools import reduce
|
|
3
4
|
from typing import Literal, Tuple, TypeVar
|
|
@@ -137,27 +138,50 @@ class FilterRuleApplier:
|
|
|
137
138
|
case _:
|
|
138
139
|
raise ValueError(f"Unsupported bool operator: {filter.operator}")
|
|
139
140
|
elif field_type is int:
|
|
141
|
+
|
|
142
|
+
if isinstance(filter.value, list):
|
|
143
|
+
match filter.operator:
|
|
144
|
+
case "isAnyOf":
|
|
145
|
+
if not len(filter.value):
|
|
146
|
+
return query
|
|
147
|
+
|
|
148
|
+
number_values = [
|
|
149
|
+
int(v) for v in filter.value if re.match(r"^-?\d+$", v)
|
|
150
|
+
]
|
|
151
|
+
return query.filter(field.in_(number_values))
|
|
152
|
+
case _:
|
|
153
|
+
raise ValueError(
|
|
154
|
+
f"Unsupported int operator: {filter.operator} for list"
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
if not re.match(r"^-?\d+$", filter.value):
|
|
158
|
+
raise ValueError(
|
|
159
|
+
f"Invalid integer value: {filter.value} for field {field}"
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
number_value = int(filter.value)
|
|
163
|
+
|
|
140
164
|
match filter.operator:
|
|
141
165
|
case "=":
|
|
142
|
-
return query.filter(field ==
|
|
166
|
+
return query.filter(field == number_value)
|
|
143
167
|
case "!=":
|
|
144
|
-
return query.filter(field !=
|
|
168
|
+
return query.filter(field != number_value)
|
|
145
169
|
case ">":
|
|
146
|
-
return query.filter(field >
|
|
170
|
+
return query.filter(field > number_value)
|
|
147
171
|
case "<":
|
|
148
|
-
return query.filter(field <
|
|
172
|
+
return query.filter(field < number_value)
|
|
149
173
|
case ">=":
|
|
150
|
-
return query.filter(field >=
|
|
174
|
+
return query.filter(field >= number_value)
|
|
151
175
|
case "<=":
|
|
152
|
-
return query.filter(field <=
|
|
176
|
+
return query.filter(field <= number_value)
|
|
153
177
|
case "isEmpty":
|
|
154
178
|
return query.filter(field == None) # noqa
|
|
155
179
|
case "isNotEmpty":
|
|
156
180
|
return query.filter(field != None) # noqa
|
|
157
|
-
case "isAnyOf":
|
|
158
|
-
return query.filter(field.in_(filter.value))
|
|
159
181
|
case _:
|
|
160
|
-
raise ValueError(
|
|
182
|
+
raise ValueError(
|
|
183
|
+
f"Unsupported int operator: {filter.operator} for single value"
|
|
184
|
+
)
|
|
161
185
|
|
|
162
186
|
raise ValueError(f"Unsupported field type: {field_type}")
|
|
163
187
|
|
|
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.2.31 → jararaca-0.2.33}/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.2.31 → jararaca-0.2.33}/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
|
{jararaca-0.2.31 → jararaca-0.2.33}/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
|