Releases: yezz123/fastapi-class
3.6.0
Fixes
Dependencies
- ⬆ Bump pre-commit from 3.6.0 to 3.6.1 by @dependabot in #164
- ⬆ Bump pre-commit/action from 3.0.0 to 3.0.1 by @dependabot in #166
- ⬆ Bump pytest-asyncio from 0.23.4 to 0.23.5 by @dependabot in #165
- ⬆ Bump pytest from 7.4.4 to 8.0.1 by @dependabot in #168
- ⬆ Bump pre-commit from 3.6.1 to 3.6.2 by @dependabot in #167
- ⬆ Bump pytest from 8.0.1 to 8.0.2 by @dependabot in #170
- ⬆ Update fastapi requirement from <0.109.3,>=0.65.2 to >=0.65.2,<0.110.1 by @dependabot in #169
- ⬆ Bump pypa/gh-action-pypi-publish from 1.8.11 to 1.8.12 by @dependabot in #172
- ⬆ Bump pytest from 8.0.2 to 8.1.0 by @dependabot in #171
- ⬆ Bump pypa/gh-action-pypi-publish from 1.8.12 to 1.8.14 by @dependabot in #176
- ⬆ Bump pytest from 8.1.0 to 8.1.1 by @dependabot in #173
- ⬆ Bump mypy from 1.8.0 to 1.9.0 by @dependabot in #175
- ⬆ Bump pytest-asyncio from 0.23.5 to 0.23.5.post1 by @dependabot in #174
- ⬆ Bump pytest-asyncio from 0.23.5.post1 to 0.23.6 by @dependabot in #177
- ⬆ Bump pre-commit from 3.6.2 to 3.7.0 by @dependabot in #179
- ⬆ Bump pytest-cov from 4.1.0 to 5.0.0 by @dependabot in #178
- ⬆ Update fastapi requirement from <0.110.1,>=0.65.2 to >=0.65.2,<0.110.2 by @dependabot in #181
3.5.0
What's Changed
Fixes 🐛
- ♻️ Refactor CI workflow for linting and testing by @yezz123 in #162
- ♻️ Update ruff to v0.2.0 & fix type hints by @yezz123 in #163
Dependencies ⬆️
- ⬆ Update fastapi requirement from <0.105.0,>=0.65.2 to >=0.65.2,<0.106.0 by @dependabot in #152
- ⬆ Bump mypy from 1.7.1 to 1.8.0 by @dependabot in #153
- ⬆ Update fastapi requirement from <0.106.0,>=0.65.2 to >=0.65.2,<0.109.0 by @dependabot in #154
- ⬆ Bump pytest from 7.4.3 to 7.4.4 by @dependabot in #155
- ⬆ Bump pytest-asyncio from 0.23.2 to 0.23.3 by @dependabot in #156
- ⬆ Update fastapi requirement from <0.109.0,>=0.65.2 to >=0.65.2,<0.110.0 by @dependabot in #157
- ⬆ Bump actions/cache from 3 to 4 by @dependabot in #158
- ⬆ Bump codecov/codecov-action from 3 to 4 by @dependabot in #161
- ⬆ Bump pytest-asyncio from 0.23.3 to 0.23.4 by @dependabot in #160
Full Changelog: 3.4.0...3.5.0
3.4.0
What's Changed
Fixes 🐛
Dependencies 📦
- ⬆ Bump requests from 2.28.2 to 2.29.0 by @dependabot in #106
- ⬆ Bump requests from 2.29.0 to 2.30.0 by @dependabot in #107
- ⬆ Bump pre-commit from 3.2.2 to 3.3.1 by @dependabot in #108
- ⬆ Bump pypa/gh-action-pypi-publish from 1.8.5 to 1.8.6 by @dependabot in #109
- ⬆ Bump mypy from 1.2.0 to 1.3.0 by @dependabot in #110
- ⬆ Bump pre-commit from 3.3.1 to 3.3.2 by @dependabot in #111
- ⬆ Bump requests from 2.30.0 to 2.31.0 by @dependabot in #112
- ⬆ Bump pytest-cov from 4.0.0 to 4.1.0 by @dependabot in #113
- ⬆ Update fastapi requirement from <0.96.0,>=0.65.2 to >=0.65.2,<0.97.0 by @dependabot in #114
- ⬆ Update fastapi requirement from <0.97.0,>=0.65.2 to >=0.65.2,<0.98.0 by @dependabot in #116
- ⬆ Bump pytest from 7.3.1 to 7.3.2 by @dependabot in #115
- ⬆ Bump pre-commit from 3.3.2 to 3.3.3 by @dependabot in #117
- ⬆ Bump pytest from 7.3.2 to 7.4.0 by @dependabot in #119
- ⬆ Bump pypa/gh-action-pypi-publish from 1.8.6 to 1.8.7 by @dependabot in #121
- ⬆ Bump mypy from 1.3.0 to 1.4.1 by @dependabot in #120
- ⬆ Update fastapi requirement from <0.98.0,>=0.65.2 to >=0.65.2,<0.100.0 by @dependabot in #123
- ⬆ Update fastapi requirement from <0.100.0,>=0.65.2 to >=0.65.2,<0.101.0 by @dependabot in #124
- ⬆ Bump pytest-asyncio from 0.21.0 to 0.21.1 by @dependabot in #125
- ⬆ Bump pypa/gh-action-pypi-publish from 1.8.7 to 1.8.8 by @dependabot in #126
- Fixed typo by @kjurel in #131
- ⬆ Bump pypa/gh-action-pypi-publish from 1.8.8 to 1.8.10 by @dependabot in #130
- ⬆ Bump mypy from 1.4.1 to 1.5.0 by @dependabot in #129
- ⬆ Bump mypy from 1.5.0 to 1.5.1 by @dependabot in #132
- ⬆ Update fastapi requirement from <0.101.0,>=0.65.2 to >=0.65.2,<0.102.0 by @dependabot in #128
- ⬆ Bump pre-commit from 3.3.3 to 3.4.0 by @dependabot in #135
- ⬆ Bump pytest from 7.4.0 to 7.4.1 by @dependabot in #134
- ⬆ Update fastapi requirement from <0.102.0,>=0.65.2 to >=0.65.2,<0.104.0 by @dependabot in #133
- ⬆ Update pydantic requirement from !=1.7,!=1.7.1,!=1.7.2,!=1.7.3,!=1.8,!=1.8.1,<2.0.0,>=1.6.2 to >=1.6.2,!=1.7,!=1.7.1,!=1.7.2,!=1.7.3,!=1.8,!=1.8.1,<3.0.0 by @dependabot in #122
- ⬆ Bump actions/checkout from 3 to 4 by @dependabot in #137
- ⬆ Bump pytest from 7.4.1 to 7.4.2 by @dependabot in #136
- ⬆ Bump pre-commit from 3.4.0 to 3.5.0 by @dependabot in #139
- ⬆ Bump mypy from 1.5.1 to 1.6.0 by @dependabot in #138
- ⬆ Bump mypy from 1.5.1 to 1.6.1 by @dependabot in #140
- ⬆ Update fastapi requirement from <0.104.0,>=0.65.2 to >=0.65.2,<0.105.0 by @dependabot in #141
- ⬆ Bump pytest from 7.4.2 to 7.4.3 by @dependabot in #142
- ⬆ Bump pytest-asyncio from 0.21.1 to 0.23.1 by @dependabot in #146
- ⬆ Bump mypy from 1.6.1 to 1.7.1 by @dependabot in #144
- ⬆ Bump pypa/gh-action-pypi-publish from 1.8.10 to 1.8.11 by @dependabot in #145
- ⬆ Bump actions/setup-python from 4 to 5 by @dependabot in #149
- ⬆ Bump pytest-asyncio from 0.23.1 to 0.23.2 by @dependabot in #147
- ⬆ Bump pre-commit from 3.5.0 to 3.6.0 by @dependabot in #148
New Contributors
- @kjurel made their first contribution in #131
Full Changelog: 3.3.0...3.4.0
3.3.0
3.2.0
What's Changed
Dependencies 🔨
- ⬆ Bump pre-commit from 3.2.0 to 3.2.1 by @dependabot in #89
- ⬆ Bump pytest-pretty from 1.1.0 to 1.1.1 by @dependabot in #90
- ⬆ Bump pypa/gh-action-pypi-publish from 1.8.1 to 1.8.3 by @dependabot in #91
- ⬆ Bump pypa/gh-action-pypi-publish from 1.8.3 to 1.8.4 by @dependabot in #92
- ⬆ Bump pytest from 7.2.2 to 7.3.0 by @dependabot in #93
- ⬆ Bump pytest-pretty from 1.1.1 to 1.2.0 by @dependabot in #94
- ⬆ Bump pre-commit from 3.2.1 to 3.2.2 by @dependabot in #95
- ⬆ Bump mypy from 1.1.1 to 1.2.0 by @dependabot in #96
- ⬆ Bump pypa/gh-action-pypi-publish from 1.8.4 to 1.8.5 by @dependabot in #97
- ⬆ Bump pytest from 7.3.0 to 7.3.1 by @dependabot in #98
Full Changelog: 3.1.0...3.2.0
3.1.0
⚠️ Drop Support of Python 3.8 | 3.9 & New Break Changes
As you create more complex FastAPI applications, you may find yourself frequently repeating the same dependencies in multiple related endpoints.
We Introduce this new version showcases the usage of CVB in FastAPI by @yezz123 in #82
A common question people have as they become more comfortable with FastAPI is how they can reduce the number of times they have to copy/paste the same dependency into related routes.
fastapi_class
provides a class-based view
decorator @View
to help reduce the amount of boilerplate necessary when developing related routes.
Highly inspired by Fastapi-utils, Thanks to @dmontagu for the great work.
- Example:
from fastapi import FastAPI, APIRouter, Query
from pydantic import BaseModel
from fastapi_class import View
app = FastAPI()
router = APIRouter()
class ItemModel(BaseModel):
id: int
name: str
description: str = None
@View(router)
class ItemView:
def post(self, item: ItemModel):
return item
def get(self, item_id: int = Query(..., gt=0)):
return {"item_id": item_id}
app.include_router(router)
Response model 📦
Exception
in list need to be either function that return fastapi.HTTPException
itself. In case of a function it is required to have all of it's arguments to be optional
.
from fastapi import FastAPI, APIRouter, HTTPException, status
from fastapi.responses import PlainTextResponse
from pydantic import BaseModel
from fastapi_class import View
app = FastAPI()
router = APIRouter()
NOT_AUTHORIZED = HTTPException(401, "Not authorized.")
NOT_ALLOWED = HTTPException(405, "Method not allowed.")
NOT_FOUND = lambda item_id="item_id": HTTPException(404, f"Item with {item_id} not found.")
class ItemResponse(BaseModel):
field: str | None = None
@view(router)
class MyView:
exceptions = {
"__all__": [NOT_AUTHORIZED],
"put": [NOT_ALLOWED, NOT_FOUND]
}
RESPONSE_MODEL = {
"put": ItemResponse
}
RESPONSE_CLASS = {
"delete": PlainTextResponse
}
def get(self):
...
def put(self):
...
def delete(self):
...
app.include_router(router)
Customized Endpoints
from fastapi import FastAPI, APIRouter, HTTPException
from fastapi.responses import PlainTextResponse
from pydantic import BaseModel
from fastapi_class import View, endpoint
app = FastAPI()
router = APIRouter()
NOT_AUTHORIZED = HTTPException(401, "Not authorized.")
NOT_ALLOWED = HTTPException(405, "Method not allowed.")
NOT_FOUND = lambda item_id="item_id": HTTPException(404, f"Item with {item_id} not found.")
EXCEPTION = HTTPException(400, "Example.")
class UserResponse(BaseModel):
field: str | None = None
@View(router)
class MyView:
exceptions = {
"__all__": [NOT_AUTHORIZED],
"put": [NOT_ALLOWED, NOT_FOUND],
"edit": [EXCEPTION]
}
RESPONSE_MODEL = {
"put": UserResponse,
"edit": UserResponse
}
RESPONSE_CLASS = {
"delete": PlainTextResponse
}
def get(self):
...
def put(self):
...
def delete(self):
...
@endpoint(("PUT",), path="edit")
def edit(self):
...
Dependencies 🔨
- ⬆ Bump requests from 2.28.1 to 2.28.2 by @dependabot in #62
- ⬆ Bump pytest from 7.2.0 to 7.2.1 by @dependabot in #63
- ⬆ Bump pre-commit from 2.21.0 to 3.0.0 by @dependabot in #64
- ⬆ Bump pre-commit from 3.0.0 to 3.0.1 by @dependabot in #65
- ⬆ Bump pre-commit from 3.1.1 to 3.2.0 by @dependabot in #85
- ⬆ Update fastapi requirement from <0.95.0,>=0.65.2 to >=0.65.2,<0.96.0 by @dependabot in #86
- ⬆ Bump pytest-asyncio from 0.20.3 to 0.21.0 by @dependabot in #87
- ⬆ Bump pypa/gh-action-pypi-publish from 1.7.1 to 1.8.1 by @dependabot in #88
Full Changelog: 2.0.0...3.1.0
🔖 2.0.0
What's Changed
- Bump mkdocs-material from 8.0.2 to 8.0.3 by @dependabot in #12
- Bump mkdocs-material from 8.0.3 to 8.0.4 by @dependabot in #13
- Bump mkdocs-material from 8.0.4 to 8.0.5 by @dependabot in #14
- Bump mkdocs-material from 8.0.5 to 8.1.0 by @dependabot in #16
- Bump fastapi from 0.70.0 to 0.70.1 by @dependabot in #15
- Bump mkdocs-material from 8.1.0 to 8.1.1 by @dependabot in #17
- Bump mkdocs-material from 8.1.1 to 8.1.2 by @dependabot in #18
- Bump mkdocs-markdownextradata-plugin from 0.2.4 to 0.2.5 by @dependabot in #19
- Bump mkdocs-material from 8.1.2 to 8.1.3 by @dependabot in #20
- Bump pydantic from 1.8.2 to 1.9.0 by @dependabot in #21
- Bump mkdocs-material from 8.1.3 to 8.1.4 by @dependabot in #22
- Bump requests from 2.26.0 to 2.27.0 by @dependabot in #23
- Bump fastapi from 0.70.1 to 0.73.0 by @dependabot in #31
- Bump mkdocs-material from 8.1.4 to 8.1.8 by @dependabot in #30
- Bump requests from 2.27.0 to 2.27.1 by @dependabot in #24
- Bump mkdocs-material from 8.1.8 to 8.1.9 by @dependabot in #32
- Bump pytest from 6.2.5 to 7.0.0 by @dependabot in #33
- Bump mkdocs-material from 8.1.9 to 8.1.10 by @dependabot in #34
- Bump pytest from 7.0.0 to 7.0.1 by @dependabot in #36
- Bump mkdocs-material from 8.1.10 to 8.2.1 by @dependabot in #37
- Bump fastapi from 0.73.0 to 0.74.1 by @dependabot in #39
- Bump mkdocs-material from 8.2.1 to 8.2.3 by @dependabot in #40
- Bump fastapi from 0.74.1 to 0.75.0 by @dependabot in #42
- Bump mkdocs-material from 8.2.3 to 8.2.5 by @dependabot in #43
- Bump pytest from 7.0.1 to 7.1.0 by @dependabot in #44
- chore(feat): add explicit arguments by @yezz123 in #52
- chore(feat): Migrate from setuptools to Flit by @yezz123 in #53
- feat: Add patch function by @yezz123 in #54
- 🐛 Overwrite the partial function by @yezz123 in #55
- Add CodeQL workflow for GitHub code scanning by @lgtm-com in #56
- 🔖 Version 2.0.0 of FastAPI Class by @yezz123 in #58
- ⬆ Bump requests from 2.27.1 to 2.28.1 by @dependabot in #61
- ⬆ Update fastapi requirement from <0.87.0,>=0.65.2 to >=0.65.2,<0.90.0 by @dependabot in #60
- ⬆ Bump codecov/codecov-action from 1 to 3 by @dependabot in #59
New Contributors
- @lgtm-com made their first contribution in #56
Full Changelog: 1.1.2...2.0.0
1.1.2
What's Changed
- Chore: Uncover some Functions by @yezz123 in #8
- Bump mkdocs-material from 7.2.6 to 8.0.2 by @dependabot in #9
- Bump fastapi from 0.68.1 to 0.70.0 by @dependabot in #11
Full Changelog: 1.1.1...1.1.2
Build Documentation & Switch to Python 3.10 ✨
What's Changed
- We Just Build the Documentation using MKdocs https://yezz123.github.io/fastapi-class/
- Improve README.
- Bump to Python3.10
Pull Requests
Full Changelog: 1.1.0...1.1.1