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.

Files changed (78) hide show
  1. {jararaca-0.2.31 → jararaca-0.2.33}/PKG-INFO +1 -1
  2. {jararaca-0.2.31 → jararaca-0.2.33}/pyproject.toml +1 -1
  3. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/persistence/sort_filter.py +33 -9
  4. {jararaca-0.2.31 → jararaca-0.2.33}/LICENSE +0 -0
  5. {jararaca-0.2.31 → jararaca-0.2.33}/README.md +0 -0
  6. {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/Message Bus/Decorators.md +0 -0
  7. {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/Message Bus/Interceptors.md +0 -0
  8. {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/Observability/Decorators.md +0 -0
  9. {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/Observability/Interceptors.md +0 -0
  10. {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/Presentation/Decorators.md +0 -0
  11. {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/RPC/RestClients/Decorators.md +0 -0
  12. {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/RPC/RestClients/Middlewared.md +0 -0
  13. {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/Schedule/Decorators.md +0 -0
  14. {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/Websocket/Decorators.md +0 -0
  15. {jararaca-0.2.31 → jararaca-0.2.33}/docs/Architecture/Websocket/Interceptors.md +0 -0
  16. {jararaca-0.2.31 → jararaca-0.2.33}/docs/Concept/Adapters.md +0 -0
  17. {jararaca-0.2.31 → jararaca-0.2.33}/docs/Concept/Hexagonal Architecture.md +0 -0
  18. {jararaca-0.2.31 → jararaca-0.2.33}/docs/Concept/Ports.md +0 -0
  19. {jararaca-0.2.31 → jararaca-0.2.33}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg +0 -0
  20. {jararaca-0.2.31 → jararaca-0.2.33}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.webp +0 -0
  21. {jararaca-0.2.31 → jararaca-0.2.33}/docs/assets/tracing_example.png +0 -0
  22. {jararaca-0.2.31 → jararaca-0.2.33}/docs/index.md +0 -0
  23. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/__init__.py +0 -0
  24. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/__main__.py +0 -0
  25. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/cli.py +0 -0
  26. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/common/__init__.py +0 -0
  27. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/core/__init__.py +0 -0
  28. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/core/providers.py +0 -0
  29. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/core/uow.py +0 -0
  30. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/di.py +0 -0
  31. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/files/entity.py.mako +0 -0
  32. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/lifecycle.py +0 -0
  33. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/messagebus/__init__.py +0 -0
  34. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/messagebus/decorators.py +0 -0
  35. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/messagebus/interceptors/__init__.py +0 -0
  36. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/messagebus/interceptors/publisher_interceptor.py +0 -0
  37. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/messagebus/publisher.py +0 -0
  38. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/messagebus/types.py +0 -0
  39. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/messagebus/worker.py +0 -0
  40. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/microservice.py +0 -0
  41. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/observability/decorators.py +0 -0
  42. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/observability/interceptor.py +0 -0
  43. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/observability/providers/__init__.py +0 -0
  44. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/observability/providers/otel.py +0 -0
  45. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/persistence/base.py +0 -0
  46. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/persistence/exports.py +0 -0
  47. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/persistence/interceptors/__init__.py +0 -0
  48. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/persistence/interceptors/aiosqa_interceptor.py +0 -0
  49. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/persistence/session.py +0 -0
  50. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/persistence/utilities.py +0 -0
  51. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/__init__.py +0 -0
  52. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/decorators.py +0 -0
  53. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/hooks.py +0 -0
  54. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/http_microservice.py +0 -0
  55. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/server.py +0 -0
  56. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/websocket/__init__.py +0 -0
  57. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/websocket/base_types.py +0 -0
  58. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/websocket/context.py +0 -0
  59. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/websocket/decorators.py +0 -0
  60. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/websocket/redis.py +0 -0
  61. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/websocket/types.py +0 -0
  62. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/presentation/websocket/websocket_interceptor.py +0 -0
  63. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/py.typed +0 -0
  64. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/rpc/__init__.py +0 -0
  65. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/rpc/http/__init__.py +0 -0
  66. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/rpc/http/backends/__init__.py +0 -0
  67. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/rpc/http/backends/httpx.py +0 -0
  68. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/rpc/http/backends/otel.py +0 -0
  69. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/rpc/http/decorators.py +0 -0
  70. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/rpc/http/httpx.py +0 -0
  71. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/scheduler/__init__.py +0 -0
  72. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/scheduler/decorators.py +0 -0
  73. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/scheduler/scheduler.py +0 -0
  74. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/tools/app_config/__init__.py +0 -0
  75. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/tools/app_config/decorators.py +0 -0
  76. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/tools/app_config/interceptor.py +0 -0
  77. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/tools/metadata.py +0 -0
  78. {jararaca-0.2.31 → jararaca-0.2.33}/src/jararaca/tools/typescript/interface_parser.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jararaca
3
- Version: 0.2.31
3
+ Version: 0.2.33
4
4
  Summary: A simple and fast API framework for Python
5
5
  Home-page: https://github.com/LuscasLeo/jararaca
6
6
  Author: Lucas S
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "jararaca"
3
- version = "0.2.31"
3
+ version = "0.2.33"
4
4
  description = "A simple and fast API framework for Python"
5
5
  authors = ["Lucas S <me@luscasleo.dev>"]
6
6
  readme = "README.md"
@@ -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 == filter.value)
166
+ return query.filter(field == number_value)
143
167
  case "!=":
144
- return query.filter(field != filter.value)
168
+ return query.filter(field != number_value)
145
169
  case ">":
146
- return query.filter(field > filter.value)
170
+ return query.filter(field > number_value)
147
171
  case "<":
148
- return query.filter(field < filter.value)
172
+ return query.filter(field < number_value)
149
173
  case ">=":
150
- return query.filter(field >= filter.value)
174
+ return query.filter(field >= number_value)
151
175
  case "<=":
152
- return query.filter(field <= filter.value)
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(f"Unsupported int operator: {filter.operator}")
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