jararaca 0.3.9__tar.gz → 0.3.10__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 (82) hide show
  1. {jararaca-0.3.9 → jararaca-0.3.10}/PKG-INFO +1 -1
  2. {jararaca-0.3.9 → jararaca-0.3.10}/pyproject.toml +1 -1
  3. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/persistence/utilities.py +32 -20
  4. {jararaca-0.3.9 → jararaca-0.3.10}/LICENSE +0 -0
  5. {jararaca-0.3.9 → jararaca-0.3.10}/README.md +0 -0
  6. {jararaca-0.3.9 → jararaca-0.3.10}/docs/CNAME +0 -0
  7. {jararaca-0.3.9 → jararaca-0.3.10}/docs/architecture.md +0 -0
  8. {jararaca-0.3.9 → jararaca-0.3.10}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg +0 -0
  9. {jararaca-0.3.9 → jararaca-0.3.10}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.webp +0 -0
  10. {jararaca-0.3.9 → jararaca-0.3.10}/docs/assets/tracing_example.png +0 -0
  11. {jararaca-0.3.9 → jararaca-0.3.10}/docs/index.md +0 -0
  12. {jararaca-0.3.9 → jararaca-0.3.10}/docs/messagebus.md +0 -0
  13. {jararaca-0.3.9 → jararaca-0.3.10}/docs/scheduler.md +0 -0
  14. {jararaca-0.3.9 → jararaca-0.3.10}/docs/stylesheets/custom.css +0 -0
  15. {jararaca-0.3.9 → jararaca-0.3.10}/docs/websocket.md +0 -0
  16. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/__init__.py +0 -0
  17. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/__main__.py +0 -0
  18. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/broker_backend/__init__.py +0 -0
  19. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/broker_backend/mapper.py +0 -0
  20. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/broker_backend/redis_broker_backend.py +0 -0
  21. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/cli.py +0 -0
  22. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/common/__init__.py +0 -0
  23. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/core/__init__.py +0 -0
  24. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/core/providers.py +0 -0
  25. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/core/uow.py +0 -0
  26. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/di.py +0 -0
  27. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/files/entity.py.mako +0 -0
  28. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/lifecycle.py +0 -0
  29. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/messagebus/__init__.py +0 -0
  30. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/messagebus/bus_message_controller.py +0 -0
  31. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/messagebus/consumers/__init__.py +0 -0
  32. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/messagebus/decorators.py +0 -0
  33. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/messagebus/interceptors/__init__.py +0 -0
  34. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/messagebus/interceptors/aiopika_publisher_interceptor.py +0 -0
  35. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/messagebus/interceptors/publisher_interceptor.py +0 -0
  36. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/messagebus/message.py +0 -0
  37. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/messagebus/publisher.py +0 -0
  38. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/messagebus/worker.py +0 -0
  39. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/messagebus/worker_v2.py +0 -0
  40. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/microservice.py +0 -0
  41. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/observability/decorators.py +0 -0
  42. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/observability/interceptor.py +0 -0
  43. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/observability/providers/__init__.py +0 -0
  44. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/observability/providers/otel.py +0 -0
  45. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/persistence/base.py +0 -0
  46. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/persistence/exports.py +0 -0
  47. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/persistence/interceptors/__init__.py +0 -0
  48. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/persistence/interceptors/aiosqa_interceptor.py +0 -0
  49. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/persistence/session.py +0 -0
  50. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/persistence/sort_filter.py +0 -0
  51. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/presentation/__init__.py +0 -0
  52. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/presentation/decorators.py +0 -0
  53. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/presentation/hooks.py +0 -0
  54. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/presentation/http_microservice.py +0 -0
  55. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/presentation/server.py +0 -0
  56. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/presentation/websocket/__init__.py +0 -0
  57. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/presentation/websocket/base_types.py +0 -0
  58. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/presentation/websocket/context.py +0 -0
  59. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/presentation/websocket/decorators.py +0 -0
  60. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/presentation/websocket/redis.py +0 -0
  61. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/presentation/websocket/types.py +0 -0
  62. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/presentation/websocket/websocket_interceptor.py +0 -0
  63. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/py.typed +0 -0
  64. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/rpc/__init__.py +0 -0
  65. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/rpc/http/__init__.py +0 -0
  66. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/rpc/http/backends/__init__.py +0 -0
  67. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/rpc/http/backends/httpx.py +0 -0
  68. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/rpc/http/backends/otel.py +0 -0
  69. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/rpc/http/decorators.py +0 -0
  70. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/rpc/http/httpx.py +0 -0
  71. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/scheduler/__init__.py +0 -0
  72. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/scheduler/decorators.py +0 -0
  73. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/scheduler/scheduler.py +0 -0
  74. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/scheduler/scheduler_v2.py +0 -0
  75. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/scheduler/types.py +0 -0
  76. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/tools/app_config/__init__.py +0 -0
  77. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/tools/app_config/decorators.py +0 -0
  78. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/tools/app_config/interceptor.py +0 -0
  79. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/tools/metadata.py +0 -0
  80. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/tools/typescript/interface_parser.py +0 -0
  81. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/utils/__init__.py +0 -0
  82. {jararaca-0.3.9 → jararaca-0.3.10}/src/jararaca/utils/rabbitmq_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: jararaca
3
- Version: 0.3.9
3
+ Version: 0.3.10
4
4
  Summary: A simple and fast API framework for Python
5
5
  Author: Lucas S
6
6
  Author-email: me@luscasleo.dev
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "jararaca"
3
- version = "0.3.9"
3
+ version = "0.3.10"
4
4
  description = "A simple and fast API framework for Python"
5
5
  authors = ["Lucas S <me@luscasleo.dev>"]
6
6
  readme = "README.md"
@@ -213,7 +213,7 @@ class CRUDOperations(Generic[IDENTIFIABLE_T]):
213
213
  # region PaginatedFilter
214
214
  class PaginatedFilter(BaseModel):
215
215
  page: Annotated[int, Field(gt=-1)] = 0
216
- page_size: int = 10
216
+ page_size: Annotated[int, Field(gt=0)] = 10
217
217
  sort_models: list[SortModel] = []
218
218
  filter_models: list[FilterModel] = []
219
219
 
@@ -307,51 +307,63 @@ class QueryOperations(Generic[QUERY_FILTER_T, QUERY_ENTITY_T]):
307
307
  Callable[[Select[Tuple[QUERY_ENTITY_T]]], Select[Tuple[QUERY_ENTITY_T]]]
308
308
  ] = [],
309
309
  ) -> "Paginated[QUERY_ENTITY_T]":
310
+ """
311
+ Executes a query with the provided filter and interceptors.
312
+ Args:
313
+ filter: The filter to apply to the query.
314
+ interceptors: A list of functions that can modify the query before execution.
315
+ Returns:
316
+ Paginated[QUERY_ENTITY_T]: A paginated result containing the items and metadata.
317
+ """
318
+
319
+ tier_one_filtered_query = self.generate_filtered_query(
320
+ filter, select(self.entity_type)
321
+ )
310
322
 
311
- query = reduce(
323
+ tier_two_filtered_query = reduce(
312
324
  lambda query, interceptor: interceptor(query),
313
325
  interceptors,
314
- select(self.entity_type),
326
+ tier_one_filtered_query,
315
327
  )
316
328
 
317
329
  if self.sort_rule_applier:
318
- query = self.sort_rule_applier.create_query_for_sorting_list(
319
- query, filter.sort_models
330
+ tier_two_filtered_query = (
331
+ self.sort_rule_applier.create_query_for_sorting_list(
332
+ tier_two_filtered_query, filter.sort_models
333
+ )
320
334
  )
321
335
 
322
336
  if self.filter_rule_applier:
323
- query = self.filter_rule_applier.create_query_for_filter_list(
324
- query, filter.filter_models
337
+ tier_two_filtered_query = (
338
+ self.filter_rule_applier.create_query_for_filter_list(
339
+ tier_two_filtered_query, filter.filter_models
340
+ )
325
341
  )
326
342
 
327
343
  unpaginated_total = (
328
344
  await self.session.execute(
329
- select(func.count()).select_from(query.subquery())
345
+ select(func.count()).select_from(tier_two_filtered_query.subquery())
330
346
  )
331
347
  ).scalar_one()
332
348
 
333
- filtered_query = self.generate_filtered_query(filter, query)
334
-
335
- paginated_query = filtered_query.limit(filter.page_size).offset(
349
+ paginated_query = tier_two_filtered_query.limit(filter.page_size).offset(
336
350
  (filter.page) * filter.page_size
337
351
  )
338
352
 
339
- filtered_total = (
353
+ paginated_total = (
340
354
  await self.session.execute(
341
355
  select(func.count()).select_from(paginated_query.subquery())
342
356
  )
343
357
  ).scalar_one()
344
358
 
359
+ result = await self.session.execute(paginated_query)
360
+ result_scalars = list(self.judge_unique(result).scalars().all())
361
+
345
362
  return Paginated(
346
- items=[
347
- e
348
- for e in self.judge_unique(
349
- await self.session.execute(paginated_query)
350
- ).scalars()
351
- ],
352
- total=filtered_total,
363
+ items=result_scalars,
364
+ total=paginated_total,
353
365
  unpaginated_total=unpaginated_total,
354
- total_pages=int(filtered_total / filter.page_size) + 1,
366
+ total_pages=int(unpaginated_total / filter.page_size) + 1,
355
367
  )
356
368
 
357
369
  def judge_unique(
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