Skip to content

Releases: yezz123/fastapi-class

3.6.0

20 Apr 16:47
c7a8be0
Compare
Choose a tag to compare

Fixes

  • πŸ› Fix issue with @endpoint decorator & Setup uv by @yezz123 in #182

Dependencies

3.5.0

07 Feb 22:00
34efdde
Compare
Choose a tag to compare

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

13 Dec 21:32
b8d2be6
Compare
Choose a tag to compare

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

24 Apr 01:35
b93c8dc
Compare
Choose a tag to compare

What's Changed

  • Supporting python 3.8 & 3.9

New Contributors

Full Changelog: 3.2.0...3.3.0

3.2.0

22 Apr 21:23
1947b22
Compare
Choose a tag to compare

What's Changed

  • Feat: Customise status code & Enhance exceptions by @yezz123 in #100

Dependencies πŸ”¨

Full Changelog: 3.1.0...3.2.0

3.1.0

25 Mar 11:48
8e3ed62
Compare
Choose a tag to compare

⚠️ 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

08 Jan 14:41
85947c4
Compare
Choose a tag to compare

What's Changed

New Contributors

  • @lgtm-com made their first contribution in #56

Full Changelog: 1.1.2...2.0.0

1.1.2

30 Nov 15:44
f05440f
Compare
Choose a tag to compare

What's Changed

Full Changelog: 1.1.1...1.1.2

Build Documentation & Switch to Python 3.10 ✨

17 Oct 02:49
9333bad
Compare
Choose a tag to compare

What's Changed

Pull Requests

  • Create FastAPI Class Documentation ✨ by @yezz123 in #6
  • Bump to 1.1.1 ✨ by @yezz123 in #7

Full Changelog: 1.1.0...1.1.1

Add More Classifiers & Fix Typo ✨

10 Oct 00:51
fb59eba
Compare
Choose a tag to compare

What's Changed

  • Add More Classifiers & Fix Typo ✨ by @yezz123 in #3

Full Changelog: 1.0.0...1.1.0