stac-fastapi.api 7.0.0__tar.gz → 7.1.0__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: stac-fastapi-api
3
- Version: 7.0.0
3
+ Version: 7.1.0
4
4
  Summary: An implementation of STAC API based on the FastAPI framework.
5
5
  Project-URL: Homepage, https://github.com/stac-utils/stac-fastapi
6
6
  Author-email: ArturoAI <engineering@arturo.ai>
@@ -167,15 +167,33 @@ def add_direct_response(app: FastAPI) -> None:
167
167
 
168
168
  return wrapper
169
169
 
170
- for route in app.routes:
171
- if not isinstance(route, APIRoute):
172
- continue
173
-
174
- response_class = route.response_class
175
- if isinstance(response_class, DefaultPlaceholder):
176
- response_class = response_class.value
177
-
178
- if issubclass(response_class, Response):
179
- route.endpoint = wrap_endpoint(route.endpoint, response_class)
180
- route.dependant = get_dependant(path=route.path_format, call=route.endpoint)
181
- route.app = request_response(route.get_route_handler())
170
+ def wrap_routes(routes: list[BaseRoute]) -> None:
171
+ for route in routes:
172
+ # Since FastAPI 0.137, `include_router` keeps the included router
173
+ # instead of copying its routes into `app.routes`.
174
+ if hasattr(route, "original_router"):
175
+ wrap_routes(route.original_router.routes)
176
+ continue
177
+
178
+ if not isinstance(route, APIRoute):
179
+ continue
180
+
181
+ response_class = route.response_class
182
+ if isinstance(response_class, DefaultPlaceholder):
183
+ response_class = response_class.value
184
+
185
+ if issubclass(response_class, Response):
186
+ route.endpoint = wrap_endpoint(route.endpoint, response_class)
187
+ route.dependant = get_dependant(
188
+ path=route.path_format, call=route.endpoint
189
+ )
190
+ for depends in route.dependencies[::-1]:
191
+ route.dependant.dependencies.insert(
192
+ 0,
193
+ get_parameterless_sub_dependant(
194
+ depends=depends, path=route.path_format
195
+ ),
196
+ )
197
+ route.app = request_response(route.get_route_handler())
198
+
199
+ wrap_routes(app.routes)
@@ -1,3 +1,3 @@
1
1
  """Library version."""
2
2
 
3
- __version__ = "7.0.0"
3
+ __version__ = "7.1.0"