Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
… into main
  • Loading branch information
Alexander committed Jul 13, 2024
2 parents c8fa389 + afa1a6d commit bbbff18
Show file tree
Hide file tree
Showing 27 changed files with 126 additions and 79 deletions.
6 changes: 3 additions & 3 deletions docs/docs_src/advanced/custom/cast_arg.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ def __init__(self):


def func(
h1: int = Header(), # <-- casts to int
h2: int = NotCastHeader() # <-- just an annotation
): ...
h1: int = Header(), # <-- casts to int
h2: int = NotCastHeader(), # <-- just an annotation
): ...
1 change: 1 addition & 0 deletions docs/docs_src/advanced/custom/class_declaration.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from fast_depends.library import CustomField


class Header(CustomField):
def use(self, /, **kwargs):
kwargs = super().use(**kwargs)
Expand Down
15 changes: 8 additions & 7 deletions docs/docs_src/advanced/custom/starlette.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,25 @@
from starlette.responses import PlainTextResponse
from starlette.routing import Route


class Path(CustomField):
def use(self, /, *, request, **kwargs):
return {
**super().use(request=request, **kwargs),
self.param_name: request.path_params.get(self.param_name)
self.param_name: request.path_params.get(self.param_name),
}


def wrap_starlette(func):
async def wrapper(request):
return await inject(func)(
request=request
)
return await inject(func)(request=request)

return wrapper


@wrap_starlette
async def hello(user: str = Path()):
return PlainTextResponse(f"Hello, {user}!")

app = Starlette(debug=True, routes=[
Route("/{user}", hello)
])

app = Starlette(debug=True, routes=[Route("/{user}", hello)])
6 changes: 3 additions & 3 deletions docs/docs_src/advanced/custom/usage.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from fast_depends import inject


@inject
def my_func(header_field: int = Header()):
return header_field

assert h(
headers={"header_field": "1"}
) == 1

assert h(headers={"header_field": "1"}) == 1
11 changes: 5 additions & 6 deletions docs/docs_src/home/1_async_tutor.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,14 @@

from fast_depends import inject, Depends


async def dependency(a: int) -> int:
return a


@inject
async def main(
a: int,
b: int,
c: int = Depends(dependency)
) -> float:
async def main(a: int, b: int, c: int = Depends(dependency)) -> float:
return a + b + c

assert asyncio.run(main("1", 2)) == 4.0

assert asyncio.run(main("1", 2)) == 4.0
11 changes: 5 additions & 6 deletions docs/docs_src/home/1_sync_tutor.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
from fast_depends import inject, Depends


def dependency(a: int) -> int:
return a


@inject
def main(
a: int,
b: int,
c: int = Depends(dependency)
) -> float:
def main(a: int, b: int, c: int = Depends(dependency)) -> float:
return a + b + c

assert main("1", 2) == 4.0

assert main("1", 2) == 4.0
15 changes: 9 additions & 6 deletions docs/docs_src/how-it-works/works.py
Original file line number Diff line number Diff line change
@@ -1,31 +1,34 @@
from pydantic import BaseModel
from fast_depends import Depends


def simple_dependency(a: int, **kwargs):
return a

def my_function(a: int, b: int, d = Depends(simple_dependency)) -> float:

def my_function(a: int, b: int, d=Depends(simple_dependency)) -> float:
return a + b + d


# Declare function representation model
class MyFunctionRepresentation(BaseModel):
a: int
b: int


args, kwargs = (), {"a": 1, "b": "3"}

# Cast incomint arguments
arguments_model = MyFunctionRepresentation(**kwargs)

# Use them
new_kwargs = arguments_model.dict()
base_response = my_function(
**new_kwargs,
d=simple_dependency(**new_kwargs)
)
base_response = my_function(**new_kwargs, d=simple_dependency(**new_kwargs))


class ResponseModel(BaseModel):
field: float


# Cast response
real_response = ResponseModel(field=base_response).field
real_response = ResponseModel(field=base_response).field
6 changes: 5 additions & 1 deletion docs/docs_src/tutorial_1_quickstart/1_async.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
import asyncio
from fast_depends import inject, Depends


async def simple_dependency(a: int, b: int = 3):
return a + b


def another_dependency(a: int):
return a


@inject
async def method(
a: int,
Expand All @@ -15,4 +18,5 @@ async def method(
):
return a + b + c

assert asyncio.run(method("1")) == 6

assert asyncio.run(method("1")) == 6
5 changes: 4 additions & 1 deletion docs/docs_src/tutorial_1_quickstart/1_sync.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
from fast_depends import inject, Depends


def simple_dependency(a: int, b: int = 3):
return a + b


@inject
def method(a: int, d: int = Depends(simple_dependency)):
return a + d

assert method("1") == 5

assert method("1") == 5
8 changes: 6 additions & 2 deletions docs/docs_src/tutorial_1_quickstart/2_async.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
import asyncio
from fast_depends import inject, Depends


def another_dependency(a: int):
return a * 2

async def simple_dependency(a: int, b: int = Depends(another_dependency)): # (1)

async def simple_dependency(a: int, b: int = Depends(another_dependency)): # (1)
return a + b


@inject
async def method(
a: int,
Expand All @@ -15,4 +18,5 @@ async def method(
):
return a + b + c

assert asyncio.run(method("1")) == 6

assert asyncio.run(method("1")) == 6
12 changes: 7 additions & 5 deletions docs/docs_src/tutorial_1_quickstart/2_sync.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
from fast_depends import inject, Depends


def another_dependency(a: int):
return a * 2

def simple_dependency(a: int, b: int = Depends(another_dependency)): # (1)

def simple_dependency(a: int, b: int = Depends(another_dependency)): # (1)
return a + b


@inject
def method(
a: int,
b: int = Depends(another_dependency),
c: int = Depends(simple_dependency)
a: int, b: int = Depends(another_dependency), c: int = Depends(simple_dependency)
):
return a + b + c

assert method("1") == 6

assert method("1") == 6
5 changes: 4 additions & 1 deletion docs/docs_src/tutorial_2_classes/tutorial_2.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
from typing import Any
from fast_depends import inject, Depends


class MyDependency:
def __init__(self, a: int):
self.field = a


@inject
def func(d: Any = Depends(MyDependency)):
return d.field

assert func(a=3) == 3

assert func(a=3) == 3
5 changes: 4 additions & 1 deletion docs/docs_src/tutorial_2_classes/tutorial_3.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
from fast_depends import inject, Depends


class MyDependency:
def __init__(self, a: int):
self.field = a

def __call__(self, b: int):
return self.field + b


@inject
def func(d: int = Depends(MyDependency(3))):
return d

assert func(b=3) == 6

assert func(b=3) == 6
7 changes: 5 additions & 2 deletions docs/docs_src/tutorial_2_classes/tutorial_4.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
from fast_depends import inject, Depends


class MyDependency:
@staticmethod
def dep(a: int):
return a ** 2
return a**2


@inject
def func(d: int = Depends(MyDependency.dep)):
return d

assert func(a=3) == 9

assert func(a=3) == 9
5 changes: 4 additions & 1 deletion docs/docs_src/tutorial_2_classes/tutorial_5.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
from fast_depends import inject, Depends


class MyDependency:
def __init__(self, a):
self.field = a

def dep(self, a: int):
return self.field + a


@inject
def func(d: int = Depends(MyDependency(3).dep)):
return d

assert func(a=3) == 6

assert func(a=3) == 6
11 changes: 7 additions & 4 deletions docs/docs_src/tutorial_4_annotated/annotated_36.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,21 @@
from fast_depends import Depends, inject
from pydantic import BaseModel, PositiveInt


class User(BaseModel):
user_id: PositiveInt


def get_user(user: id) -> User:
return User(user_id=user)


CurrentUser = Annotated[User, Depends(get_user)]


@inject
def do_smth_with_user(user: CurrentUser):
...
def do_smth_with_user(user: CurrentUser): ...


@inject
def do_another_smth_with_user(user: CurrentUser):
...
def do_another_smth_with_user(user: CurrentUser): ...
11 changes: 7 additions & 4 deletions docs/docs_src/tutorial_4_annotated/annotated_39.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,21 @@
from fast_depends import Depends, inject
from pydantic import BaseModel, PositiveInt


class User(BaseModel):
user_id: PositiveInt


def get_user(user: id) -> User:
return User(user_id=user)


CurrentUser = Annotated[User, Depends(get_user)]


@inject
def do_smth_with_user(user: CurrentUser):
...
def do_smth_with_user(user: CurrentUser): ...


@inject
def do_another_smth_with_user(user: CurrentUser):
...
def do_another_smth_with_user(user: CurrentUser): ...
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
from pydantic import Field

CurrentUser = Annotated[User, Depends(get_user)]
MaxLenField = Annotated[str, Field(..., max_length="32")]
MaxLenField = Annotated[str, Field(..., max_length="32")]
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
from pydantic import Field

CurrentUser = Annotated[User, Depends(get_user)]
MaxLenField = Annotated[str, Field(..., max_length="32")]
MaxLenField = Annotated[str, Field(..., max_length="32")]
Loading

0 comments on commit bbbff18

Please sign in to comment.