Skip to content

Commit 10c7545

Browse files
authored
2.4.0 (#71)
1 parent 7884ccb commit 10c7545

File tree

5 files changed

+56
-38
lines changed

5 files changed

+56
-38
lines changed

docs/docs/index.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ hide:
2424
<img alt="GitHub" src="https://img.shields.io/github/license/Lancetnik/FastDepends?color=%23007ec6">
2525
</a>
2626

27-
2827
FastDepends - FastAPI Dependency Injection system extracted from FastAPI and cleared of all HTTP logic.
2928
This is a small library which provides you with the ability to use lovely FastAPI interfaces in your own
3029
projects or tools.

docs/mkdocs.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ theme:
4141
- content.tabs.link
4242
- content.code.copy
4343
- content.code.annotate
44+
- navigation.top
45+
- navigation.footer
4446
i18n:
4547
prev: 'Previous'
4648
next: 'Next'
@@ -51,6 +53,13 @@ plugins:
5153
- search
5254
- markdownextradata:
5355
data: data
56+
- minify:
57+
minify_html: true
58+
minify_js: true
59+
minify_css: true
60+
htmlmin_opts:
61+
remove_comments: true
62+
cache_safe: true
5463

5564
markdown_extensions: # do not reorder
5665
- toc:

fast_depends/core/model.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -165,14 +165,6 @@ def __init__(
165165
self.positional_args = tuple(positional_args or ())
166166
self.response_model = response_model
167167

168-
self.dependencies = dependencies or {}
169-
self.extra_dependencies = extra_dependencies or ()
170-
self.custom_fields = custom_fields or {}
171-
172-
for name in chain(self.dependencies.keys(), self.custom_fields.keys()):
173-
params.pop(name, None)
174-
self.params = params
175-
176168
self.use_cache = use_cache
177169
self.cast = cast
178170
self.is_async = (
@@ -182,6 +174,10 @@ def __init__(
182174
is_generator or is_gen_callable(call) or is_async_gen_callable(call)
183175
)
184176

177+
self.dependencies = dependencies or {}
178+
self.extra_dependencies = extra_dependencies or ()
179+
self.custom_fields = custom_fields or {}
180+
185181
sorted_dep: List["CallModel[..., Any]"] = []
186182
flat = self.flat_dependencies
187183
for calls in flat.values():
@@ -191,6 +187,10 @@ def __init__(
191187
(i, len(i.sorted_dependencies)) for i in sorted_dep if i.use_cache
192188
)
193189

190+
for name in chain(self.dependencies.keys(), self.custom_fields.keys()):
191+
params.pop(name, None)
192+
self.params = params
193+
194194
def _solve(
195195
self,
196196
/,

fast_depends/use.py

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
Optional,
99
Sequence,
1010
Union,
11+
cast,
1112
overload,
1213
)
1314

@@ -77,7 +78,10 @@ def inject(
7778
pydantic_config: Optional[ConfigDict] = None,
7879
dependency_overrides_provider: Optional[Any] = dependency_provider,
7980
wrap_model: Callable[[CallModel[P, T]], CallModel[P, T]] = lambda x: x,
80-
) -> Union[Callable[P, T], _InjectWrapper[P, T],]:
81+
) -> Union[
82+
Callable[P, T],
83+
_InjectWrapper[P, T],
84+
]:
8185
decorator = _wrap_inject(
8286
dependency_overrides_provider=dependency_overrides_provider,
8387
wrap_model=wrap_model,
@@ -178,7 +182,7 @@ def injected_wrapper(*args: P.args, **kwargs: P.kwargs) -> T:
178182

179183

180184
class solve_async_gen:
181-
iter: Optional[AsyncIterator[Any]]
185+
_iter: Optional[AsyncIterator[Any]]
182186

183187
def __init__(
184188
self,
@@ -193,27 +197,30 @@ def __init__(
193197
self.overrides = overrides
194198

195199
def __aiter__(self) -> "solve_async_gen":
196-
self.iter = None
200+
self._iter = None
197201
self.stack = AsyncExitStack()
198202
return self
199203

200204
async def __anext__(self) -> Any:
201-
if self.iter is None:
205+
if self._iter is None:
202206
stack = self.stack = AsyncExitStack()
203207
await self.stack.__aenter__()
204-
self.iter: AsyncIterator[Any] = (
205-
await self.call.asolve(
206-
*self.args,
207-
stack=stack,
208-
dependency_overrides=self.overrides,
209-
cache_dependencies={},
210-
nested=False,
211-
**self.kwargs,
212-
)
213-
).__aiter__()
208+
self._iter = cast(
209+
AsyncIterator[Any],
210+
(
211+
await self.call.asolve(
212+
*self.args,
213+
stack=stack,
214+
dependency_overrides=self.overrides,
215+
cache_dependencies={},
216+
nested=False,
217+
**self.kwargs,
218+
)
219+
).__aiter__(),
220+
)
214221

215222
try:
216-
r = await self.iter.__anext__()
223+
r = await self._iter.__anext__()
217224
except StopAsyncIteration as e:
218225
await self.stack.__aexit__(None, None, None)
219226
raise e
@@ -222,7 +229,7 @@ async def __anext__(self) -> Any:
222229

223230

224231
class solve_gen:
225-
iter: Optional[Iterator[Any]]
232+
_iter: Optional[Iterator[Any]]
226233

227234
def __init__(
228235
self,
@@ -237,27 +244,30 @@ def __init__(
237244
self.overrides = overrides
238245

239246
def __iter__(self) -> "solve_gen":
240-
self.iter = None
247+
self._iter = None
241248
self.stack = ExitStack()
242249
return self
243250

244251
def __next__(self) -> Any:
245-
if self.iter is None:
252+
if self._iter is None:
246253
stack = self.stack = ExitStack()
247254
self.stack.__enter__()
248-
self.iter: AsyncIterator[Any] = iter(
249-
self.call.solve(
250-
*self.args,
251-
stack=stack,
252-
dependency_overrides=self.overrides,
253-
cache_dependencies={},
254-
nested=False,
255-
**self.kwargs,
256-
)
255+
self._iter = cast(
256+
Iterator[Any],
257+
iter(
258+
self.call.solve(
259+
*self.args,
260+
stack=stack,
261+
dependency_overrides=self.overrides,
262+
cache_dependencies={},
263+
nested=False,
264+
**self.kwargs,
265+
)
266+
),
257267
)
258268

259269
try:
260-
r = next(self.iter)
270+
r = next(self._iter)
261271
except StopIteration as e:
262272
self.stack.__exit__(None, None, None)
263273
raise e

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ dependencies = [
4848
[project.optional-dependencies]
4949
test = [
5050
"coverage[toml]>=7.2.0,<8.0.0",
51-
"pytest>=7.4.0,<8",
51+
"pytest>=8.0.0,<9",
5252
"dirty-equals>=0.7.0,<0.8",
5353
]
5454

0 commit comments

Comments
 (0)