fastapi-factory-utilities 0.3.0__tar.gz → 0.3.1__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 fastapi-factory-utilities might be problematic. Click here for more details.

Files changed (77) hide show
  1. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/PKG-INFO +1 -1
  2. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/pyproject.toml +1 -1
  3. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/app/__init__.py +10 -1
  4. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/plugins/odm_plugin/repositories.py +77 -1
  5. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/LICENSE +0 -0
  6. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/README.md +0 -0
  7. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/__main__.py +0 -0
  8. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/__init__.py +0 -0
  9. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/api/__init__.py +0 -0
  10. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/api/tags.py +0 -0
  11. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/api/v1/sys/__init__.py +0 -0
  12. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/api/v1/sys/health.py +0 -0
  13. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/api/v1/sys/readiness.py +0 -0
  14. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/app/application.py +0 -0
  15. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/app/builder.py +0 -0
  16. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/app/config.py +0 -0
  17. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/app/enums.py +0 -0
  18. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/app/exceptions.py +0 -0
  19. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/app/fastapi_builder.py +0 -0
  20. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/app/plugin_manager/__init__.py +0 -0
  21. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/app/plugin_manager/exceptions.py +0 -0
  22. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/app/plugin_manager/plugin_manager.py +0 -0
  23. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/exceptions.py +0 -0
  24. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/plugins/__init__.py +0 -0
  25. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/plugins/example/__init__.py +0 -0
  26. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/plugins/httpx_plugin/__init__.py +0 -0
  27. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/plugins/odm_plugin/__init__.py +0 -0
  28. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/plugins/odm_plugin/builder.py +0 -0
  29. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/plugins/odm_plugin/configs.py +0 -0
  30. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/plugins/odm_plugin/depends.py +0 -0
  31. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/plugins/odm_plugin/documents.py +0 -0
  32. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/plugins/odm_plugin/exceptions.py +0 -0
  33. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/plugins/opentelemetry_plugin/__init__.py +0 -0
  34. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/plugins/opentelemetry_plugin/builder.py +0 -0
  35. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/plugins/opentelemetry_plugin/configs.py +0 -0
  36. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/plugins/opentelemetry_plugin/exceptions.py +0 -0
  37. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/plugins/opentelemetry_plugin/helpers.py +0 -0
  38. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/protocols.py +0 -0
  39. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/security/jwt.py +0 -0
  40. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/security/kratos.py +0 -0
  41. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/services/kratos/__init__.py +0 -0
  42. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/services/kratos/enums.py +0 -0
  43. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/services/kratos/exceptions.py +0 -0
  44. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/services/kratos/objects.py +0 -0
  45. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/services/kratos/services.py +0 -0
  46. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/services/status/__init__.py +0 -0
  47. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/services/status/enums.py +0 -0
  48. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/services/status/exceptions.py +0 -0
  49. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/services/status/health_calculator_strategies.py +0 -0
  50. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/services/status/readiness_calculator_strategies.py +0 -0
  51. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/services/status/services.py +0 -0
  52. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/services/status/types.py +0 -0
  53. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/utils/configs.py +0 -0
  54. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/utils/importlib.py +0 -0
  55. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/utils/log.py +0 -0
  56. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/utils/status.py +0 -0
  57. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/utils/uvicorn.py +0 -0
  58. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/core/utils/yaml_reader.py +0 -0
  59. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/__init__.py +0 -0
  60. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/__main__.py +0 -0
  61. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/api/__init__.py +0 -0
  62. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/api/books/__init__.py +0 -0
  63. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/api/books/responses.py +0 -0
  64. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/api/books/routes.py +0 -0
  65. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/app.py +0 -0
  66. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/application.yaml +0 -0
  67. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/entities/books/__init__.py +0 -0
  68. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/entities/books/entities.py +0 -0
  69. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/entities/books/enums.py +0 -0
  70. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/entities/books/types.py +0 -0
  71. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/models/__init__.py +0 -0
  72. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/models/books/__init__.py +0 -0
  73. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/models/books/document.py +0 -0
  74. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/models/books/repository.py +0 -0
  75. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/services/books/__init__.py +0 -0
  76. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/example/services/books/services.py +0 -0
  77. {fastapi_factory_utilities-0.3.0 → fastapi_factory_utilities-0.3.1}/src/fastapi_factory_utilities/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: fastapi_factory_utilities
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: Consolidate libraries and utilities to create microservices in Python with FastAPI, Beanie, Httpx, AioPika and OpenTelemetry.
5
5
  License: MIT
6
6
  Keywords: python,fastapi,beanie,httpx,opentelemetry,microservices
@@ -3,7 +3,7 @@ name = "fastapi_factory_utilities"
3
3
  homepage = "https://github.com/miragecentury/fastapi_factory_utilities"
4
4
  repository = "https://github.com/miragecentury/fastapi_factory_utilities"
5
5
  keywords = ["python", "fastapi", "beanie", "httpx", "opentelemetry", "microservices"]
6
- version = "0.3.0"
6
+ version = "0.3.1"
7
7
  description = "Consolidate libraries and utilities to create microservices in Python with FastAPI, Beanie, Httpx, AioPika and OpenTelemetry."
8
8
  authors = ["miragecentury <victorien.vanroye@gmail.com>"]
9
9
  maintainers = ["miragecentury <victorien.vanroye@gmail.com>"]
@@ -2,7 +2,13 @@
2
2
 
3
3
  from .application import ApplicationAbstract
4
4
  from .builder import ApplicationGenericBuilder
5
- from .config import BaseApplicationConfig, RootConfig
5
+ from .config import (
6
+ BaseApplicationConfig,
7
+ DependencyConfig,
8
+ HttpServiceDependencyConfig,
9
+ RootConfig,
10
+ depends_dependency_config,
11
+ )
6
12
  from .enums import EnvironmentEnum
7
13
 
8
14
  __all__: list[str] = [
@@ -11,4 +17,7 @@ __all__: list[str] = [
11
17
  "ApplicationAbstract",
12
18
  "ApplicationGenericBuilder",
13
19
  "RootConfig",
20
+ "HttpServiceDependencyConfig",
21
+ "DependencyConfig",
22
+ "depends_dependency_config",
14
23
  ]
@@ -4,9 +4,22 @@ import datetime
4
4
  from abc import ABC
5
5
  from collections.abc import AsyncGenerator, Callable
6
6
  from contextlib import asynccontextmanager
7
- from typing import Any, Generic, TypeVar, get_args
7
+ from typing import (
8
+ Any,
9
+ Dict,
10
+ Generic,
11
+ List,
12
+ Mapping,
13
+ Optional,
14
+ Tuple,
15
+ TypeVar,
16
+ Union,
17
+ get_args,
18
+ )
8
19
  from uuid import UUID
9
20
 
21
+ from beanie import SortDirection
22
+ from beanie.odm.queries.find import FindMany
10
23
  from motor.motor_asyncio import AsyncIOMotorClientSession, AsyncIOMotorDatabase
11
24
  from pydantic import BaseModel
12
25
  from pymongo.errors import DuplicateKeyError, PyMongoError
@@ -214,3 +227,66 @@ class AbstractRepository(ABC, Generic[DocumentGenericType, EntityGenericType]):
214
227
  return
215
228
 
216
229
  raise OperationError("Failed to delete document.")
230
+
231
+ @managed_session()
232
+ async def find(
233
+ self,
234
+ *args: Union[Mapping[str, Any], bool],
235
+ projection_model: None = None,
236
+ skip: Optional[int] = None,
237
+ limit: Optional[int] = None,
238
+ sort: Union[None, str, List[Tuple[str, SortDirection]]] = None,
239
+ session: Optional[AsyncIOMotorClientSession] = None,
240
+ ignore_cache: bool = False,
241
+ fetch_links: bool = False,
242
+ lazy_parse: bool = False,
243
+ nesting_depth: Optional[int] = None,
244
+ nesting_depths_per_field: Optional[Dict[str, int]] = None,
245
+ **pymongo_kwargs: Any,
246
+ ) -> list[EntityGenericType]:
247
+ """Find documents in the database.
248
+
249
+ Args:
250
+ *args: The arguments to pass to the find method.
251
+ projection_model: The projection model to use.
252
+ skip: The number of documents to skip.
253
+ limit: The number of documents to return.
254
+ sort: The sort order.
255
+ session: The session to use.
256
+ ignore_cache: Whether to ignore the cache.
257
+ fetch_links: Whether to fetch links.
258
+ lazy_parse: Whether to lazy parse the documents.
259
+ nesting_depth: The nesting depth.
260
+ nesting_depths_per_field: The nesting depths per field.
261
+ **pymongo_kwargs: Additional keyword arguments to pass to the find method.
262
+
263
+ Returns:
264
+ list[EntityGenericType]: The list of entities.
265
+
266
+ Raises:
267
+ OperationError: If the operation fails.
268
+ ValueError: If the entity cannot be created from the document.
269
+ """
270
+ try:
271
+ documents: list[DocumentGenericType] = await self._document_type.find(
272
+ *args,
273
+ projection_model=projection_model,
274
+ skip=skip,
275
+ limit=limit,
276
+ sort=sort,
277
+ session=session,
278
+ ignore_cache=ignore_cache,
279
+ fetch_links=fetch_links,
280
+ lazy_parse=lazy_parse,
281
+ nesting_depth=nesting_depth,
282
+ nesting_depths_per_field=nesting_depths_per_field,
283
+ ).to_list()
284
+ except PyMongoError as error:
285
+ raise OperationError(f"Failed to find documents: {error}") from error
286
+
287
+ try:
288
+ entities: list[EntityGenericType] = [self._entity_type(**document.model_dump()) for document in documents]
289
+ except ValueError as error:
290
+ raise ValueError(f"Failed to create entity from document: {error}") from error
291
+
292
+ return entities