qena-shared-lib 0.1.20__tar.gz → 0.1.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.
Files changed (50) hide show
  1. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/PKG-INFO +1 -1
  2. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/pyproject.toml +1 -1
  3. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/mongodb.py +44 -17
  4. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/README.md +0 -0
  5. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/__init__.py +0 -0
  6. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/alias.py +0 -0
  7. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/application.py +0 -0
  8. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/background.py +0 -0
  9. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/cache.py +0 -0
  10. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/dependencies/__init__.py +0 -0
  11. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/dependencies/http.py +0 -0
  12. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/dependencies/miscellaneous.py +0 -0
  13. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/enums.py +0 -0
  14. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/eventbus.py +0 -0
  15. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/exception_handling.py +0 -0
  16. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/exceptions.py +0 -0
  17. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/http/__init__.py +0 -0
  18. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/http/_base.py +0 -0
  19. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/http/_exception_handlers.py +0 -0
  20. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/http/_request.py +0 -0
  21. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/http/_response.py +0 -0
  22. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/kafka/__init__.py +0 -0
  23. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/kafka/_base.py +0 -0
  24. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/kafka/_consumer.py +0 -0
  25. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/kafka/_exception_handlers.py +0 -0
  26. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/kafka/_producer.py +0 -0
  27. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/logging.py +0 -0
  28. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/py.typed +0 -0
  29. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/rabbitmq/__init__.py +0 -0
  30. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/rabbitmq/_base.py +0 -0
  31. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/rabbitmq/_channel.py +0 -0
  32. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/rabbitmq/_exception_handlers.py +0 -0
  33. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/rabbitmq/_listener.py +0 -0
  34. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/rabbitmq/_pool.py +0 -0
  35. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/rabbitmq/_publisher.py +0 -0
  36. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/rabbitmq/_rpc_client.py +0 -0
  37. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/rabbitmq/message/__init__.py +0 -0
  38. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/rabbitmq/message/_inbound.py +0 -0
  39. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/rabbitmq/message/_outbound.py +0 -0
  40. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/redis.py +0 -0
  41. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/remotelogging/__init__.py +0 -0
  42. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/remotelogging/_base.py +0 -0
  43. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/remotelogging/logstash/__init__.py +0 -0
  44. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/remotelogging/logstash/_base.py +0 -0
  45. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/remotelogging/logstash/_http_sender.py +0 -0
  46. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/remotelogging/logstash/_tcp_sender.py +0 -0
  47. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/scheduler.py +0 -0
  48. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/security.py +0 -0
  49. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/sync.py +0 -0
  50. {qena_shared_lib-0.1.20 → qena_shared_lib-0.1.22}/src/qena_shared_lib/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: qena-shared-lib
3
- Version: 0.1.20
3
+ Version: 0.1.22
4
4
  Summary: A shared tools for other services
5
5
  Requires-Dist: fastapi[all]==0.115.6
6
6
  Requires-Dist: prometheus-client==0.21.1
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "qena-shared-lib"
3
- version = "0.1.20"
3
+ version = "0.1.22"
4
4
  description = "A shared tools for other services"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -388,25 +388,28 @@ class RepositoryBase(Generic[T]):
388
388
  session: AsyncClientSession | None = None,
389
389
  ) -> T | P | None:
390
390
  if projection is not None:
391
- return projection.from_raw_projected_document(
392
- await self.collection.find_one(
393
- filter=filter,
394
- projection=projection.get_projection(),
395
- skip=skip,
396
- sort=sort,
397
- session=session or self.session,
398
- )
391
+ document = await self.collection.find_one(
392
+ filter=filter,
393
+ projection=projection.get_projection(),
394
+ skip=skip,
395
+ sort=sort,
396
+ session=session or self.session,
399
397
  )
400
-
401
- return self.document_type.from_raw_document(
402
- await self.collection.find_one(
398
+ else:
399
+ document = await self.collection.find_one(
403
400
  filter=filter,
404
- projection=projection,
405
401
  skip=skip,
406
402
  sort=sort,
407
403
  session=session or self.session,
408
404
  )
409
- )
405
+
406
+ if document is None:
407
+ return None
408
+
409
+ if projection is not None:
410
+ return projection.from_raw_projected_document(document)
411
+
412
+ return self.document_type.from_raw_document(document)
410
413
 
411
414
  async def replace(
412
415
  self, replacement: T, session: AsyncClientSession | None = None
@@ -584,16 +587,40 @@ class RepositoryBase(Generic[T]):
584
587
 
585
588
  return cast(int, await self.collection.estimated_document_count())
586
589
 
587
- async def aggregate(
590
+ @overload
591
+ def aggregate(
588
592
  self,
593
+ *,
589
594
  aggregation: type[A],
590
595
  let: dict[str, Any] | None = None,
591
596
  session: AsyncClientSession | None = None,
592
597
  ) -> AsyncGenerator[A, None]:
598
+ pass
599
+
600
+ @overload
601
+ def aggregate(
602
+ self,
603
+ *,
604
+ aggregation: type[A],
605
+ pipeline: list[Any],
606
+ let: dict[str, Any] | None = None,
607
+ session: AsyncClientSession | None = None,
608
+ ) -> AsyncGenerator[A, None]:
609
+ pass
610
+
611
+ async def aggregate(
612
+ self, *_: Any, **kwarg: Any
613
+ ) -> AsyncGenerator[Any, None]:
614
+ aggregation = cast(AggregatedDocument, kwarg.get("aggregation"))
615
+ pipeline = kwarg.get("pipeline")
616
+
617
+ if pipeline is None:
618
+ pipeline = aggregation.get_pipeline()
619
+
593
620
  async with await self.collection.aggregate(
594
- pipeline=aggregation.get_pipeline(),
595
- let=let,
596
- session=session or self.session,
621
+ pipeline=pipeline,
622
+ let=kwarg.get("let"),
623
+ session=kwarg.get("session") or self.session,
597
624
  ) as cursor:
598
625
  async for document in cursor:
599
626
  yield aggregation.from_raw_aggregated_document(document)