fastapi-factory-utilities 0.4.0__py3-none-any.whl → 0.4.2__py3-none-any.whl

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 (22) hide show
  1. fastapi_factory_utilities/core/api/__init__.py +1 -1
  2. fastapi_factory_utilities/core/app/__init__.py +4 -4
  3. fastapi_factory_utilities/core/app/fastapi_builder.py +2 -1
  4. fastapi_factory_utilities/core/app/plugin_manager/__init__.py +1 -1
  5. fastapi_factory_utilities/core/app/plugin_manager/plugin_manager.py +0 -1
  6. fastapi_factory_utilities/core/plugins/odm_plugin/__init__.py +4 -2
  7. fastapi_factory_utilities/core/plugins/odm_plugin/builder.py +2 -2
  8. fastapi_factory_utilities/core/plugins/odm_plugin/helpers.py +16 -0
  9. fastapi_factory_utilities/core/plugins/odm_plugin/repositories.py +1 -0
  10. fastapi_factory_utilities/core/plugins/opentelemetry_plugin/__init__.py +1 -1
  11. fastapi_factory_utilities/core/security/jwt.py +6 -5
  12. fastapi_factory_utilities/core/services/status/__init__.py +2 -2
  13. fastapi_factory_utilities/core/utils/status.py +2 -1
  14. fastapi_factory_utilities/core/utils/yaml_reader.py +1 -1
  15. fastapi_factory_utilities/example/app.py +2 -1
  16. fastapi_factory_utilities/example/entities/books/__init__.py +1 -1
  17. fastapi_factory_utilities/example/models/books/__init__.py +1 -1
  18. {fastapi_factory_utilities-0.4.0.dist-info → fastapi_factory_utilities-0.4.2.dist-info}/METADATA +2 -2
  19. {fastapi_factory_utilities-0.4.0.dist-info → fastapi_factory_utilities-0.4.2.dist-info}/RECORD +22 -21
  20. {fastapi_factory_utilities-0.4.0.dist-info → fastapi_factory_utilities-0.4.2.dist-info}/LICENSE +0 -0
  21. {fastapi_factory_utilities-0.4.0.dist-info → fastapi_factory_utilities-0.4.2.dist-info}/WHEEL +0 -0
  22. {fastapi_factory_utilities-0.4.0.dist-info → fastapi_factory_utilities-0.4.2.dist-info}/entry_points.txt +0 -0
@@ -22,4 +22,4 @@ api_v2: APIRouter = APIRouter(prefix="/v2")
22
22
  api.include_router(router=api_v1)
23
23
  api.include_router(router=api_v2)
24
24
 
25
- __all__: list[str] = ["api", "TagEnum"]
25
+ __all__: list[str] = ["TagEnum", "api"]
@@ -12,12 +12,12 @@ from .config import (
12
12
  from .enums import EnvironmentEnum
13
13
 
14
14
  __all__: list[str] = [
15
- "BaseApplicationConfig",
16
- "EnvironmentEnum",
17
15
  "ApplicationAbstract",
18
16
  "ApplicationGenericBuilder",
19
- "RootConfig",
20
- "HttpServiceDependencyConfig",
17
+ "BaseApplicationConfig",
21
18
  "DependencyConfig",
19
+ "EnvironmentEnum",
20
+ "HttpServiceDependencyConfig",
21
+ "RootConfig",
22
22
  "depends_dependency_config",
23
23
  ]
@@ -77,7 +77,8 @@ class FastAPIBuilder:
77
77
 
78
78
  for middleware_args in self._middleware_list:
79
79
  fastapi.add_middleware(
80
- middleware_class=middleware_args.middleware_class, **middleware_args.kwargs # type: ignore
80
+ middleware_class=middleware_args.middleware_class,
81
+ **middleware_args.kwargs, # type: ignore
81
82
  )
82
83
 
83
84
  fastapi.include_router(router=self._base_router)
@@ -8,8 +8,8 @@ from .exceptions import (
8
8
  from .plugin_manager import PluginManager
9
9
 
10
10
  __all__: list[str] = [
11
+ "InvalidPluginError",
11
12
  "PluginManager",
12
13
  "PluginManagerError",
13
- "InvalidPluginError",
14
14
  "PluginPreConditionNotMetError",
15
15
  ]
@@ -67,7 +67,6 @@ class PluginManager:
67
67
  plugins: list[PluginProtocol] = []
68
68
 
69
69
  for plugin_enum in want_to_activate_plugins:
70
-
71
70
  try:
72
71
  # Using a custom import function to be able to mock it in the tests.
73
72
  plugin_module: ModuleType = cls._import_module(name=plugin_enum.value, package=plugin_package)
@@ -25,6 +25,7 @@ from .builder import ODMBuilder
25
25
  from .depends import depends_odm_client, depends_odm_database
26
26
  from .documents import BaseDocument
27
27
  from .exceptions import OperationError, UnableToCreateEntityDueToDuplicateKeyError
28
+ from .helpers import PersistedEntity
28
29
  from .repositories import AbstractRepository
29
30
 
30
31
  _logger: BoundLogger = get_logger()
@@ -94,7 +95,7 @@ async def on_startup(
94
95
 
95
96
  if odm_factory.odm_database is None or odm_factory.odm_client is None:
96
97
  _logger.error(
97
- f"ODM plugin failed to start. Database: {odm_factory.odm_database} - " f"Client: {odm_factory.odm_client}"
98
+ f"ODM plugin failed to start. Database: {odm_factory.odm_database} - Client: {odm_factory.odm_client}"
98
99
  )
99
100
  # TODO: Report the error to the status_service
100
101
  # this will report the application as unhealthy
@@ -160,9 +161,10 @@ async def on_shutdown(application: ApplicationAbstractProtocol) -> None:
160
161
 
161
162
 
162
163
  __all__: list[str] = [
163
- "BaseDocument",
164
164
  "AbstractRepository",
165
+ "BaseDocument",
165
166
  "OperationError",
167
+ "PersistedEntity",
166
168
  "UnableToCreateEntityDueToDuplicateKeyError",
167
169
  "depends_odm_client",
168
170
  "depends_odm_database",
@@ -215,7 +215,7 @@ class ODMBuilder:
215
215
 
216
216
  if self._odm_client is None:
217
217
  raise ODMPluginConfigError(
218
- "ODM client is not set. Provide the ODM client using " "build_client method or through parameter."
218
+ "ODM client is not set. Provide the ODM client using build_client method or through parameter."
219
219
  )
220
220
 
221
221
  self._odm_database = self._odm_client.get_database(
@@ -250,7 +250,7 @@ class ODMBuilder:
250
250
  """
251
251
  if self._odm_client is None:
252
252
  raise ODMPluginConfigError(
253
- "ODM client is not set. Provide the ODM client using " "build_client method or through parameter."
253
+ "ODM client is not set. Provide the ODM client using build_client method or through parameter."
254
254
  )
255
255
 
256
256
  try:
@@ -0,0 +1,16 @@
1
+ """Helper functions for ODM plugins."""
2
+
3
+ import datetime
4
+ import uuid
5
+
6
+ from pydantic import BaseModel, Field
7
+
8
+
9
+ class PersistedEntity(BaseModel):
10
+ """Base class for persisted entities."""
11
+
12
+ id: uuid.UUID = Field(default_factory=uuid.uuid4)
13
+
14
+ revision_id: uuid.UUID | None = Field(default=None)
15
+ created_at: datetime.datetime = Field(default_factory=datetime.datetime.now)
16
+ updated_at: datetime.datetime = Field(default_factory=datetime.datetime.now)
@@ -268,6 +268,7 @@ class AbstractRepository(ABC, Generic[DocumentGenericType, EntityGenericType]):
268
268
  lazy_parse=lazy_parse,
269
269
  nesting_depth=nesting_depth,
270
270
  nesting_depths_per_field=nesting_depths_per_field,
271
+ **pymongo_kwargs,
271
272
  ).to_list()
272
273
  except PyMongoError as error:
273
274
  raise OperationError(f"Failed to find documents: {error}") from error
@@ -20,8 +20,8 @@ from .exceptions import OpenTelemetryPluginBaseException, OpenTelemetryPluginCon
20
20
  __all__: list[str] = [
21
21
  "OpenTelemetryConfig",
22
22
  "OpenTelemetryPluginBaseException",
23
- "OpenTelemetryPluginConfigError",
24
23
  "OpenTelemetryPluginBuilder",
24
+ "OpenTelemetryPluginConfigError",
25
25
  ]
26
26
 
27
27
  _logger: BoundLogger = get_logger()
@@ -140,11 +140,12 @@ class JWTBearerAuthentication:
140
140
  # by the request or by the jwt parameter
141
141
  if self.jwt_raw is None and request is None:
142
142
  raise HTTPException(status_code=HTTPStatus.UNAUTHORIZED, detail="Missing Credentials")
143
- jwt_raw: str = (
144
- self.jwt_raw
145
- if self.jwt_raw is not None
146
- else self._extract_raw_token(request=request) # type: ignore[arg-type]
147
- )
143
+
144
+ if self.jwt_raw is None:
145
+ jwt_raw: str = self._extract_raw_token(request=request) # type: ignore[arg-type]
146
+ else:
147
+ jwt_raw: str = self.jwt_raw
148
+
148
149
  # Execute the io bound and cpu bound tasks in parallel
149
150
  async with TaskGroup() as tg:
150
151
  # TODO: Can be disabled by configuration (for operation purposes)
@@ -5,10 +5,10 @@ from .services import StatusService
5
5
  from .types import ComponentInstanceType, Status
6
6
 
7
7
  __all__: list[str] = [
8
- "ComponentTypeEnum",
9
8
  "ComponentInstanceType",
9
+ "ComponentTypeEnum",
10
10
  "HealthStatusEnum",
11
11
  "ReadinessStatusEnum",
12
- "StatusService",
13
12
  "Status",
13
+ "StatusService",
14
14
  ]
@@ -3,6 +3,7 @@
3
3
  ```python
4
4
  # Example of using the MonitoredAbstract
5
5
 
6
+
6
7
  class MyMonitored(MonitoredAbstract):
7
8
  def __init__(self, status_service: StatusService) -> None:
8
9
  super().__init__(
@@ -63,9 +64,9 @@ class MonitoredAbstract(ABC):
63
64
 
64
65
 
65
66
  __all__: list[str] = [
66
- "MonitoredAbstract",
67
67
  "ComponentInstanceType",
68
68
  "ComponentTypeEnum",
69
+ "MonitoredAbstract",
69
70
  "Status",
70
71
  "StatusService",
71
72
  ]
@@ -72,7 +72,7 @@ class YamlFileReader:
72
72
  try:
73
73
  yaml_data = yaml_data[key]
74
74
  except KeyError:
75
- logger.warning(f"Base key {key}" " not found in YAML file" + " from {self._yaml_base_key}")
75
+ logger.warning(f"Base key {key} not found in YAML file" + " from {self._yaml_base_key}")
76
76
  return dict()
77
77
  return yaml_data
78
78
 
@@ -31,7 +31,8 @@ class App(ApplicationAbstract):
31
31
  def configure(self) -> None:
32
32
  """Configure the application."""
33
33
  # Prevent circular import
34
- from .api import api_router # pylint: disable=import-outside-toplevel
34
+ # pylint: disable=import-outside-toplevel
35
+ from .api import api_router # noqa: PLC0415
35
36
 
36
37
  self.get_asgi_app().include_router(router=api_router)
37
38
 
@@ -4,4 +4,4 @@ from .entities import BookEntity
4
4
  from .enums import BookType
5
5
  from .types import BookName
6
6
 
7
- __all__: list[str] = ["BookEntity", "BookType", "BookName"]
7
+ __all__: list[str] = ["BookEntity", "BookName", "BookType"]
@@ -3,4 +3,4 @@
3
3
  from .document import BookDocument
4
4
  from .repository import BookRepository
5
5
 
6
- __all__: list[str] = ["BookRepository", "BookDocument"]
6
+ __all__: list[str] = ["BookDocument", "BookRepository"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: fastapi_factory_utilities
3
- Version: 0.4.0
3
+ Version: 0.4.2
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
@@ -31,7 +31,7 @@ Requires-Dist: opentelemetry-sdk (>=1.26.0,<2.0.0)
31
31
  Requires-Dist: pyaml (>=25.1.0,<26.0.0)
32
32
  Requires-Dist: pydantic (>=2.8.2,<3.0.0)
33
33
  Requires-Dist: pyjwt (>=2.10.1,<3.0.0)
34
- Requires-Dist: pymongo (>=4.9.2,<4.10.0)
34
+ Requires-Dist: pymongo (>=4.9.2,<4.14.0)
35
35
  Requires-Dist: reactivex (>=4.0.4,<5.0.0)
36
36
  Requires-Dist: structlog (>=24.1,<26.0)
37
37
  Requires-Dist: typer (>=0,<1)
@@ -1,38 +1,39 @@
1
1
  fastapi_factory_utilities/__main__.py,sha256=w8o9KpyHcxGyLHmTK8ixbIqJIsB3NbIGuAMY7OfnxrA,147
2
2
  fastapi_factory_utilities/core/__init__.py,sha256=tt5a-MgeFt_oACkc9K5xl2rynIbca9DGqsKBDEqGzto,34
3
- fastapi_factory_utilities/core/api/__init__.py,sha256=eehUFVDPk07MUPIorGdC8WqDRB8NjdSy7Za55CdLrps,542
3
+ fastapi_factory_utilities/core/api/__init__.py,sha256=fAwgRcRry1nIyAL7CsCbpwR87n5tWnBWKEPH6QZCpp8,542
4
4
  fastapi_factory_utilities/core/api/tags.py,sha256=3hQcTeW0FS78sPTJ2PB44dMDTSkoW-xKj7rrfKX2Lk0,154
5
5
  fastapi_factory_utilities/core/api/v1/sys/__init__.py,sha256=mTXhpn3_KgQ1snt0-0PFmGvFr4n5srQRRADEdRSGFJM,345
6
6
  fastapi_factory_utilities/core/api/v1/sys/health.py,sha256=IF51Z1seOFn91m3FC57U8uWfAA7c_EhhBpjbu_ly9WQ,2807
7
7
  fastapi_factory_utilities/core/api/v1/sys/readiness.py,sha256=xIY8pQLShU7KWRtlOUK5gTDyZ8aB1KBvLczC6boT-tg,1711
8
- fastapi_factory_utilities/core/app/__init__.py,sha256=IHHkcu3t-fX8vxQk12A36cE-yTjGn_PInDpL_OlRSE8,596
8
+ fastapi_factory_utilities/core/app/__init__.py,sha256=6Ee_zK-KzJWoOElsAnGdBz8giRJlhAPMaEzs0I3gvrA,596
9
9
  fastapi_factory_utilities/core/app/application.py,sha256=WrDXh00r_jzQTtZGeFO43lIzvDraplitejTaSJj_uFE,5091
10
10
  fastapi_factory_utilities/core/app/builder.py,sha256=XKtJuRxvaqzNdhfNXGkyyxEH4MkZCgAUjkqYnOws8n0,4728
11
11
  fastapi_factory_utilities/core/app/config.py,sha256=MuV4G_M4QgZWYHoulusJLv_m4Qr2php-Cg9Jum4qkNA,7303
12
12
  fastapi_factory_utilities/core/app/enums.py,sha256=X1upnaehYU0eHExXTde5xsH-pI9q7HZDNsOEF5PApdg,226
13
13
  fastapi_factory_utilities/core/app/exceptions.py,sha256=tQDf0_4j5xgCbku7TL7JaZGs3_bjsWG2YLBCydQJpPw,664
14
- fastapi_factory_utilities/core/app/fastapi_builder.py,sha256=DgIqiCnJK6cqsG-sg4H7Pi0lkhaxOhSLQt_ksHjpjW0,2835
15
- fastapi_factory_utilities/core/app/plugin_manager/__init__.py,sha256=eMfxCsk41Caw_juAawmDZHhytNI_ubXmqfRDug2AzvQ,319
14
+ fastapi_factory_utilities/core/app/fastapi_builder.py,sha256=KoywPbWu9wY5s1KpBAwxgqH07PYT3Y6Mtlq-PP4__5I,2852
15
+ fastapi_factory_utilities/core/app/plugin_manager/__init__.py,sha256=hHk_fet3d41I-MzohGlvbNjqWQtAbxWaaEfbt41Zweo,319
16
16
  fastapi_factory_utilities/core/app/plugin_manager/exceptions.py,sha256=CFrZvROT7mLzNpXWwDra1j08lA_7ZrSrOHN94sEEfnQ,1026
17
- fastapi_factory_utilities/core/app/plugin_manager/plugin_manager.py,sha256=5E_Qp535xNJHNujZ_QRiMfIkDUy9F_3Rbjlclny5P08,6682
17
+ fastapi_factory_utilities/core/app/plugin_manager/plugin_manager.py,sha256=b6wDStsjAdCKExFFNCFEmeMERNsVCeIp1qseKfn5TO4,6681
18
18
  fastapi_factory_utilities/core/exceptions.py,sha256=HAd0RDJNBVc1NOcwfHQo_Xya8SCYuD9edynx3VKMYVs,1784
19
19
  fastapi_factory_utilities/core/plugins/__init__.py,sha256=W-BCkqP0xG980980z3mc8T6Vrp1Akv4szA0PRzkUbiU,756
20
20
  fastapi_factory_utilities/core/plugins/example/__init__.py,sha256=GF69IygLXxzrCh7VryekEWun663kKBhWtRS3w-1tzBc,1030
21
21
  fastapi_factory_utilities/core/plugins/httpx_plugin/__init__.py,sha256=P5FUyv7mQr8RZWQ8ifkoK8GXvqSI71q2b2dm-ag2JhQ,1028
22
- fastapi_factory_utilities/core/plugins/odm_plugin/__init__.py,sha256=L6iZW7beZLpvXbcXoTjP6iALEwWWymworb6Mok72s2w,5741
23
- fastapi_factory_utilities/core/plugins/odm_plugin/builder.py,sha256=Wf9Geo2ayCX9no8ENJcsfLRo-zrAuZFfUJkvnb01PRk,8759
22
+ fastapi_factory_utilities/core/plugins/odm_plugin/__init__.py,sha256=EyjshkhEseri659k7YISJEVH0-cpSlAWaKvhnCPNNbY,5797
23
+ fastapi_factory_utilities/core/plugins/odm_plugin/builder.py,sha256=D6UUDOJYv6IWugilodi6x9fwj_kZkqzPfKT_pL9UW7c,8753
24
24
  fastapi_factory_utilities/core/plugins/odm_plugin/configs.py,sha256=zQoJC1wLNyq2pZyFhl0bKeNsTl4y_4_82BHCCaOEjCQ,331
25
25
  fastapi_factory_utilities/core/plugins/odm_plugin/depends.py,sha256=OcLsfTLzMBk_xFV6qsMy_-qFkiphEbbEuaHUooagxg8,730
26
26
  fastapi_factory_utilities/core/plugins/odm_plugin/documents.py,sha256=BFQYHxHBmTacJRfhZi2OffvT_RAFvAAiDVQAa_d6Y7w,1141
27
27
  fastapi_factory_utilities/core/plugins/odm_plugin/exceptions.py,sha256=acnKJB0lGAzDs-7-LjBap8shjP3iV1a7dw7ouPVF27o,551
28
- fastapi_factory_utilities/core/plugins/odm_plugin/repositories.py,sha256=pOOADEe8mz6FuZkNzV46H8RNvi77FojJqb3bz9RQapo,11279
29
- fastapi_factory_utilities/core/plugins/opentelemetry_plugin/__init__.py,sha256=4mq4a6U_nRxe3VxpHnC0FhRh0hpKO8l6QSUE7AazeBw,4689
28
+ fastapi_factory_utilities/core/plugins/odm_plugin/helpers.py,sha256=s9iEujDZbTmTb9FByJAVUzLkjQpsciQT9dytkeosKuE,463
29
+ fastapi_factory_utilities/core/plugins/odm_plugin/repositories.py,sha256=GJ3ovlxzTpiJ2_XlgARtwn6j0SbQxxAray_r8QWvGok,11313
30
+ fastapi_factory_utilities/core/plugins/opentelemetry_plugin/__init__.py,sha256=gXM-apuR1xdjVxfOzurF-db3SauKyeWjK_7SFWkVWxw,4689
30
31
  fastapi_factory_utilities/core/plugins/opentelemetry_plugin/builder.py,sha256=9npQImifYAbEg0lFG7KwZ8V78SNrPoaINgd8vKitdMw,12509
31
32
  fastapi_factory_utilities/core/plugins/opentelemetry_plugin/configs.py,sha256=pMG9leMB7rtdkdGFLIxXflV7bf9epGrrYPt2N97KZcM,3750
32
33
  fastapi_factory_utilities/core/plugins/opentelemetry_plugin/exceptions.py,sha256=CpsHayfQpP0zghN8y5PP6TBy-cXhHoNxBR--I86gAdE,327
33
34
  fastapi_factory_utilities/core/plugins/opentelemetry_plugin/helpers.py,sha256=qpTIzX67orJz7vy6SBIwRs24omMBoToJkhpurZRjPuk,1533
34
35
  fastapi_factory_utilities/core/protocols.py,sha256=TzZKr_KfmTphk2LL-TD2XzxNlLbihbGM2DxWMhc5lEQ,2428
35
- fastapi_factory_utilities/core/security/jwt.py,sha256=LuNVmTlONrmoKl7ghNv5JHV4qzMNOwuxJQlWgGSvBoo,5631
36
+ fastapi_factory_utilities/core/security/jwt.py,sha256=jO3FNOiqVvCCbvShUmCyfii8oLXNbYk_Sfsb_O29dng,5630
36
37
  fastapi_factory_utilities/core/security/kratos.py,sha256=yP9-TkELeXRPRYE9aQRlOPlwvaUJ7VQpyAea8ucWUfg,3364
37
38
  fastapi_factory_utilities/core/services/hydra/__init__.py,sha256=AKBYNc3zW5OsCLLeFSXqmDbWbQefHUJxstLpsXLQEUQ,369
38
39
  fastapi_factory_utilities/core/services/hydra/exceptions.py,sha256=ePMrfZturU2IVcxOebR0CbVKKqprce_fK-4UXbPPgNI,450
@@ -43,7 +44,7 @@ fastapi_factory_utilities/core/services/kratos/enums.py,sha256=ULJppowlZbOjdnUIX
43
44
  fastapi_factory_utilities/core/services/kratos/exceptions.py,sha256=xAX01-lQvPpADgcwhB5YWSy1UqAxG38s2rlU9AJBJd8,472
44
45
  fastapi_factory_utilities/core/services/kratos/objects.py,sha256=a0npt4Q6d9UbF0w3e6EvyKLwMWO2l639_dFjruA8_2c,980
45
46
  fastapi_factory_utilities/core/services/kratos/services.py,sha256=RFKrME6M6omWiHORMBCSyvIG0BsimQaCfnmtsOdFfsg,3158
46
- fastapi_factory_utilities/core/services/status/__init__.py,sha256=N5H0cCN9ZFu_0YZar4RLdCDEjKMICrIhNtfKgB0LI78,370
47
+ fastapi_factory_utilities/core/services/status/__init__.py,sha256=kkR2Xx-kbHb_QXkkBSUNIK5y_eNM4YCElFftBAooIY0,370
47
48
  fastapi_factory_utilities/core/services/status/enums.py,sha256=IUxWAd0Ecknri4BqzaqoDRRhT_8LdcgtQcNqgNVDXGE,599
48
49
  fastapi_factory_utilities/core/services/status/exceptions.py,sha256=_fQFGqHKnG54Hs-ZtC4gs0xwzSH246_WwQOonraoGKw,856
49
50
  fastapi_factory_utilities/core/services/status/health_calculator_strategies.py,sha256=p2KKJo-dq1j9iWHT0mvlBKtldH9m8l31aytLkUsb9nQ,1634
@@ -53,30 +54,30 @@ fastapi_factory_utilities/core/services/status/types.py,sha256=GJOGRra6NtpUS4q1c
53
54
  fastapi_factory_utilities/core/utils/configs.py,sha256=qM0pCrsK8ZyfCoyova_VrhR4eUX3LSPCbWunGMWcSVg,2581
54
55
  fastapi_factory_utilities/core/utils/importlib.py,sha256=DYcPo7K0s95WV5xxtucpufWsTj8Pxv25sWunDmmNUYI,797
55
56
  fastapi_factory_utilities/core/utils/log.py,sha256=6V9CL3bQio4e47YxcSXM2JQRGhVxuBfmcEbcF4RtCfQ,6393
56
- fastapi_factory_utilities/core/utils/status.py,sha256=1zxur98Wfum3JzpuzoAPoRIwQmXhFsTS2oxgbn5uFfg,1933
57
+ fastapi_factory_utilities/core/utils/status.py,sha256=ADdi4NzkJy0qNVC86tKV09wdpuPhuCKSrvYn9tzNVn8,1934
57
58
  fastapi_factory_utilities/core/utils/uvicorn.py,sha256=XThylG-nOPVL00w6MIWGODnweoM7VxmpSFcyoPcmqns,2609
58
- fastapi_factory_utilities/core/utils/yaml_reader.py,sha256=KNlwHvpraAp04JjeXSSk72BLuILH3lhEKrmRaUUgo2k,6103
59
+ fastapi_factory_utilities/core/utils/yaml_reader.py,sha256=2XenSHqymZsgff70upPZtyx0-BsiUdTENKmrxaOBLeE,6100
59
60
  fastapi_factory_utilities/example/__init__.py,sha256=LEKnPTBcgDyfHeOjlVxjK5lFdFqS-7-mHDuVuM2Jh_Y,206
60
61
  fastapi_factory_utilities/example/__main__.py,sha256=Iwp_6rK7Lcv2F-XAKn6xjxQHOWjx2OjgwKAr91tfUfk,135
61
62
  fastapi_factory_utilities/example/api/__init__.py,sha256=qI82eeSwVjR6jSkX1pxm8ALv9WPQ_iHurFY4G2K7VzE,554
62
63
  fastapi_factory_utilities/example/api/books/__init__.py,sha256=zXARBnjywJwg1XsLbcixYWcHH4uC9mF-kbbX4P8cVgA,160
63
64
  fastapi_factory_utilities/example/api/books/responses.py,sha256=21WeD6bdg0MCD_0vRHwmsL4W79iDcG9NnDLemXysc84,540
64
65
  fastapi_factory_utilities/example/api/books/routes.py,sha256=bwg8Bhvoj9vx2SdwunzFS-Z3cHECtjl_yGdo8MfiGEM,1529
65
- fastapi_factory_utilities/example/app.py,sha256=mcXQOg0A74mc8xFT0XuRHne3YjXXI7dTMV48G_Ypng8,1555
66
+ fastapi_factory_utilities/example/app.py,sha256=SkQwK2Z29I0Kz36wiWyoh2V_CvBexQ5LJ3Ka-npCQUI,1579
66
67
  fastapi_factory_utilities/example/application.yaml,sha256=5xRyFSuMxmgZ5Mikai94UqKYJ7PxJp8omlXobTjv14M,485
67
- fastapi_factory_utilities/example/entities/books/__init__.py,sha256=q2UTwLyCs3te38n7RgwT0go3Hp0bE9-NvoX7P-DR-3o,185
68
+ fastapi_factory_utilities/example/entities/books/__init__.py,sha256=cpTMhLpenb359lOT9HHUv6DzKX8fKl4WCzcsB3ddk6Q,185
68
69
  fastapi_factory_utilities/example/entities/books/entities.py,sha256=rLE01lE7U6WizrD5ZHMRwkynd8_dWF6DltBFH61f-Do,405
69
70
  fastapi_factory_utilities/example/entities/books/enums.py,sha256=lXYUvhIkT1pi0teflMpnqeafeiBZMokyWxoFLgzV6a8,330
70
71
  fastapi_factory_utilities/example/entities/books/types.py,sha256=7LYGPu-CcI3noIORJyIZlVF-CBugWPXEqgDzWrO3XmQ,1558
71
72
  fastapi_factory_utilities/example/models/__init__.py,sha256=RJmp3R9bhbQv7n0WOlsHP65LqbEs_DjF9hzYKwYTRGo,22
72
- fastapi_factory_utilities/example/models/books/__init__.py,sha256=1GJFCYMGZugQRxlFl-q7fPBFvNsl2ykeW8lV7rpURHU,181
73
+ fastapi_factory_utilities/example/models/books/__init__.py,sha256=IPS3rLLnZncV-VAxgsipxUD7l4r04ewo_Hx2Naj2lT0,181
73
74
  fastapi_factory_utilities/example/models/books/document.py,sha256=lYJfMGr5GqEEsn7L--PFs75hC2q-jQx77wl7EhTrp5U,568
74
75
  fastapi_factory_utilities/example/models/books/repository.py,sha256=7K63uAsSEGZ2EXqufU4Tc8KpymgXK8JX8WjAE2Sw8ok,387
75
76
  fastapi_factory_utilities/example/services/books/__init__.py,sha256=Z06yNRoA7Zg3TGN-Q9rrvJg6Bbx-qJw661MVwukV6vQ,148
76
77
  fastapi_factory_utilities/example/services/books/services.py,sha256=-x7d4hotUWLzWo5uImMjFmtNcSTHwWv2bfttIbYYKbA,5380
77
78
  fastapi_factory_utilities/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
- fastapi_factory_utilities-0.4.0.dist-info/LICENSE,sha256=iO1nLzMMst6vEiqgSUrfrbetM7b0bvdzXhbed5tqG8o,1074
79
- fastapi_factory_utilities-0.4.0.dist-info/METADATA,sha256=BKswnNy_dt9__jBRcefkF5Ol2AxoI1TMDUs_UQ8_L-M,3478
80
- fastapi_factory_utilities-0.4.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
81
- fastapi_factory_utilities-0.4.0.dist-info/entry_points.txt,sha256=IK0VcBexXo4uXQmTrbfhhnnfq4GmXPRn0GBB8hzlsq4,101
82
- fastapi_factory_utilities-0.4.0.dist-info/RECORD,,
79
+ fastapi_factory_utilities-0.4.2.dist-info/LICENSE,sha256=iO1nLzMMst6vEiqgSUrfrbetM7b0bvdzXhbed5tqG8o,1074
80
+ fastapi_factory_utilities-0.4.2.dist-info/METADATA,sha256=TQga1orWq9y3GXz54xm-7WkZRX-8gAl-iWJ3g7XE3lM,3478
81
+ fastapi_factory_utilities-0.4.2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
82
+ fastapi_factory_utilities-0.4.2.dist-info/entry_points.txt,sha256=IK0VcBexXo4uXQmTrbfhhnnfq4GmXPRn0GBB8hzlsq4,101
83
+ fastapi_factory_utilities-0.4.2.dist-info/RECORD,,