Generate Class & Decorators for your FastAPI project ✨🚀

Overview

Fastapi-Class 🦜

codecov Downloads


Source Code: https://github.com/yezz123/fastapi-class

Install the project: pip install fastapi-class


Classes and Decorators to use FastAPI with class based routing. In particular this allows you to construct an instance of a class and have methods of that instance be route handlers for FastAPI & Python 3.8.

  • Older Versions of Python:
    • Unfortunately this does not work with async routes with Python versions less than 3.8 due to bugs in inspect.iscoroutinefunction. Specifically with older versions of Python iscoroutinefunction incorrectly returns false so async routes aren't await'd. We therefore only support Python versions >= 3.8.

Example 🐢

None: """Constructor. The pong is injected here.""" self.__pong = pong @get('/user/{name}') def get_user_by_name(name: str) -> User: # Use our injected pong instance. return self.__pong.get_user_by_name(name) @delete('/user/{name}') def delete_user(name: str) -> None: self.__pong.delete(name) def main(): args = parse_args() # Configure the pong per command line arguments pong = pong(args.url, args.user, args.password) # Simple intuitive injection user_routes = UserRoutes(pong) app = FastAPI() # router member inherited from Routable and configured per the annotations. app.include_router(user_routes.router) ">
from ping import pong
# Some fictional ping pong class
from fastapi_class import Routable, get, delete

def parse_arg() -> argparse.Namespace:
   """parse command line arguments."""
   ...


class UserRoutes(Routable):
   """Inherits from Routable."""

   # Note injection here by simply passing values to the constructor.
   # Other injection frameworks also work.
   # supported as there's nothing special about this __init__ method.
   def __init__(self, pong: pong) -> None:
      """Constructor. The pong is injected here."""
      self.__pong = pong

   @get('/user/{name}')
   def get_user_by_name(name: str) -> User:
      # Use our injected pong instance.
      return self.__pong.get_user_by_name(name)

   @delete('/user/{name}')
   def delete_user(name: str) -> None:
      self.__pong.delete(name)


def main():
    args = parse_args()
    # Configure the pong per command line arguments
    pong = pong(args.url, args.user, args.password)
    # Simple intuitive injection
    user_routes = UserRoutes(pong)

    app = FastAPI()
    # router member inherited from Routable and configured per the annotations.
    app.include_router(user_routes.router)

Why 🐣

FastAPI generally has one define routes like:

app = FastAPI()

@app.get('/echo/{x}')
def echo(x: int) -> int:
   return x

Note: that app is a global. Furthermore, FastAPI's suggested way of doing dependency injection is handy for things like pulling values out of header in the HTTP request. However, they don't work well for more standard dependency injection scenarios where we'd like to do something like inject a Data Access Object or database connection. For that, FastAPI suggests their parameterized dependencies which might look something like:

app = FastAPI()

class ValueToInject:
   # Value to inject into the function.
   def __init__(self, y: int) -> None:
      self.y = y

   def __call__(self) -> int:
      return self.y

to_add = ValueToInject(2)

@app.get('/add/{x}')
def add(x: int, y: Depends(to_add)) -> int:
   return x + y

Development 🚧

You should create a virtual environment and activate it:

python -m venv venv/
source venv/bin/activate

And then install the development dependencies:

pip install -r requirements.dev.txt

Format the code 💅

Execute the following command to apply pre-commit formatting:

make lint

License 🍻

This project is licensed under the terms of the MIT license.

Comments
  • Bump pytest from 7.1.0 to 7.1.1

    Bump pytest from 7.1.0 to 7.1.1

    Bumps pytest from 7.1.0 to 7.1.1.

    Release notes

    Sourced from pytest's releases.

    7.1.1

    pytest 7.1.1 (2022-03-17)

    Bug Fixes

    • #9767: Fixed a regression in pytest 7.1.0 where some conftest.py files outside of the source tree (e.g. in the [site-packages]{.title-ref} directory) were not picked up.
    Commits
    • 0ffe9e0 Prepare release version 7.1.1
    • 6f2c1ec Merge pull request #9784 from pytest-dev/backport-9768-to-7.1.x
    • a65c47a Merge pull request #9783 from pytest-dev/backport-9780-to-7.1.x
    • 30d995e [pre-commit.ci] auto fixes from pre-commit.com hooks
    • 10a14d1 [7.1.x] testing: fix tests when run under -v or -vv
    • f4cfc59 [pre-commit.ci] auto fixes from pre-commit.com hooks
    • f1df807 [7.1.x] config: restore pre-pytest 7.1.0 confcutdir exclusion behavior
    • 7d4d1ec Merge pull request #9758 from pytest-dev/release-7.1.0
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Extra Small dependencies 
    opened by dependabot[bot] 3
  • Bump mkdocs-material from 8.2.3 to 8.2.4

    Bump mkdocs-material from 8.2.3 to 8.2.4

    Bumps mkdocs-material from 8.2.3 to 8.2.4.

    Release notes

    Sourced from mkdocs-material's releases.

    mkdocs-material-8.2.4

    • Fixed malformed Google Fonts URL when a font setting was omitted
    • Fixed #3648: Fixed specificity issue with admonitions in lists
    • Fixed #3653: Invalid outdated version banner URL when using instant loading
    Changelog

    Sourced from mkdocs-material's changelog.

    mkdocs-material-8.2.4+insiders-4.10.1 (2022-03-02)

    • Added missing build dependencies to Dockerfile
    • Fixed encoding issues in privacy plugin, now forcing UTF-8 encoding
    • Fixed #3624: Scroll to active navigation item unreliable in Firefox
    • Fixed #3642: Privacy plugin errors when font setting was omitted

    mkdocs-material-8.2.4 (2022-03-02)

    • Fixed malformed Google Fonts URL when a font setting was omitted
    • Fixed #3648: Fixed specificity issue with admonitions in lists
    • Fixed #3653: Invalid outdated version banner URL when using instant loading

    mkdocs-material-8.2.3+insiders-4.10.0 (2022-02-27)

    • Added support for offline plugin (supersedes offline search support)
    • Improved built-in privacy plugin to download nested JavaScript assets
    • Refactored configuration of built-in privacy plugin

    mkdocs-material-8.2.3 (2022-02-27)

    • Fixed #3578: Active element in table of contents off-by-one on large screens

    mkdocs-material-8.2.2 (2022-02-26)

    • Added automatic removal of query parameter when search is closed
    • Fixed #3599: Anchors always overriden when using navigation tracking

    mkdocs-material-8.2.1+insiders-4.9.1 (2022-02-21)

    • Fixed #3610: missing lxml dependency for privacy plugin
    • Fixed error when charset is missing in content-type header

    mkdocs-material-8.2.1+insiders-4.9.0 (2022-02-20)

    • Added privacy plugin: automatic downloading of external assets

    mkdocs-material-8.2.1 (2022-02-17)

    • Fixed module 'material.plugins' not being found (8.2.0 regression)

    mkdocs-material-8.2.0 (2022-02-17)

    • Added native support for Mermaid.js diagrams
    • Added native support for tags (with search integration)
    • Added support for staying on page when switching versions

    mkdocs-material-8.1.11+insiders-4.8.3 (2022-02-13)

    • Fixed #3560: Mermaid diagrams don't render for file:// locations

    ... (truncated)

    Commits
    • 2b32493 Prepare 8.2.4 release
    • cb95798 Documentation
    • a8c8c22 Added Elli to premium sponsors
    • bcc2c18 Fixed invalid outdated version banner URL when using instant loading
    • 1cc2506 Fixed specificity issue with admonitions in lists (#3648)
    • 60f586f Documentation
    • 64e5ed0 Fixed malformed Google Fonts url when a font setting was omitted
    • 791c69a Documentation
    • dfeb962 Updated dependencies
    • f7a1111 Documentation
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Extra Small dependencies 
    opened by dependabot[bot] 3
  • Bump fastapi from 0.73.0 to 0.74.0

    Bump fastapi from 0.73.0 to 0.74.0

    Bumps fastapi from 0.73.0 to 0.74.0.

    Release notes

    Sourced from fastapi's releases.

    0.74.0

    Breaking Changes

    • ✨ Update internal AsyncExitStack to fix context for dependencies with yield. PR #4575 by @​tiangolo.

    Dependencies with yield can now catch HTTPException and custom exceptions. For example:

    async def get_database():
        with Session() as session:
            try:
                yield session
            except HTTPException:
                session.rollback()
                raise
            finally:
                session.close()
    

    After the dependency with yield handles the exception (or not) the exception is raised again. So that any exception handlers can catch it, or ultimately the default internal ServerErrorMiddleware.

    If you depended on exceptions not being received by dependencies with yield, and receiving an exception breaks the code after yield, you can use a block with try and finally:

    async def do_something():
        try:
            yield something
        finally:
            some_cleanup()
    

    ...that way the finally block is run regardless of any exception that might happen.

    Features

    • The same PR #4575 from above also fixes the contextvars context for the code before and after yield. This was the main objective of that PR.

    This means that now, if you set a value in a context variable before yield, the value would still be available after yield (as you would intuitively expect). And it also means that you can reset the context variable with a token afterwards.

    For example, this works correctly now:

    from contextvars import ContextVar
    from typing import Any, Dict, Optional
    

    legacy_request_state_context_var: ContextVar[Optional[Dict[str, Any]]] = ContextVar( "legacy_request_state_context_var", default=None )

    </tr></table>

    ... (truncated)

    Commits
    • 1ce16c2 🔖 Release version 0.74.0
    • 03d4d4c 📝 Update release notes
    • 2d2f1de 📝 Update release notes
    • 59e3648 🔧 Add Striveworks sponsor (#4596)
    • 4fcb003 📝 Update release notes
    • 9d56a3c ✨ Update internal AsyncExitStack to fix context for dependencies with `yiel...
    • 78b07cb 📝 Update release notes
    • 6034f80 💚 Only build docs on push when on master to avoid duplicate runs from PRs (#4...
    • b93f8a7 📝 Update release notes
    • 618c99d 👥 Update FastAPI People (#4502)
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Extra Small dependencies 
    opened by dependabot[bot] 3
  • Bump mkdocs-material from 8.1.10 to 8.1.11

    Bump mkdocs-material from 8.1.10 to 8.1.11

    Bumps mkdocs-material from 8.1.10 to 8.1.11.

    Release notes

    Sourced from mkdocs-material's releases.

    mkdocs-material-8.1.11

    • Added Portuguese (Brasilian) translations
    • Fixed #3545: Color palette toggle and search overlaying version selector
    Changelog

    Sourced from mkdocs-material's changelog.

    mkdocs-material-8.1.11+insiders-4.8.2 (2022-02-10)

    • Fixed #3559: Mermaid diagrams don't render inside closed details

    mkdocs-material-8.1.11 (2022-02-10)

    • Added Portuguese (Brasilian) translations
    • Fixed #3545: Color palette toggle and search overlaying version selector

    mkdocs-material-8.1.10+insiders-4.8.1 (2022-02-06)

    • Fixed jump back to top on mobile when using anchor following

    mkdocs-material-8.1.10+insiders-4.8.0 (2022-02-06)

    • Added support for anchor following table of contents (= auto scroll)

    mkdocs-material-8.1.10 (2022-02-06)

    • Fixed cutoff of very wide logos in the sidebar on mobile

    mkdocs-material-8.1.9+insiders-4.7.2 (2022-02-02)

    • Fixed #3526: Transparent sidebar title due to Safari bug
    • Fixed #3528: Firefox sometimes clips text in flow chart diagrams

    mkdocs-material-8.1.9+insiders-4.7.1 (2022-01-30)

    • Fixed #3506: Tags index not respecting title set via front matter

    mkdocs-material-8.1.9 (2022-01-30)

    • Added support for mkdocs.yml validation and auto-complete
    • Fixed errors in Latvian translations

    mkdocs-material-8.1.8+insiders-4.7.0 (2022-01-25)

    • Added native support for offline search

    mkdocs-material-8.1.8 (2022-01-23)

    • Added Latvian translations
    • Updated Giscus example integration with dynamic theme change support
    • Fixed #3479: Back-to-top button not hidden when using sticky navigation tabs
    • Fixed #3491: Logo in header and drawer doesn't honor aspect ratio

    mkdocs-material-8.1.7+insiders-4.6.1 (2022-01-16)

    • Fixed #3459: Section index pages picking up wrong title

    ... (truncated)

    Commits
    • 81af7dc Prepare 8.1.11 release
    • 2754652 Added Portuguese (Brasilian) translations
    • 3d9fd71 Merge branch 'master' of github.com:squidfunk/mkdocs-material
    • 1f8ad09 Added Zenoss to premium sponsors
    • 40b6676 Added schema for RSS plugin (#3571)
    • 4da48e0 Added Datadog to premium sponsors
    • cf7f045 Fixed linter errors
    • f2fc90a Merge branch 'master' of github.com:squidfunk/mkdocs-material
    • ca9862c Updated dependencies
    • 079e18a Bump actions/setup-python from 2.3.1 to 2.3.2 (#3558)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Extra Small dependencies 
    opened by dependabot[bot] 3
  • Bump fastapi from 0.70.1 to 0.72.0

    Bump fastapi from 0.70.1 to 0.72.0

    Bumps fastapi from 0.70.1 to 0.72.0.

    Release notes

    Sourced from fastapi's releases.

    0.72.0

    Features

    Docs

    • 📝 Update Python Types docs, add missing 3.6 / 3.9 example. PR #4434 by @​tiangolo.

    Translations

    Internal

    0.71.0

    Features

    • ✨ Add docs and tests for Python 3.9 and Python 3.10. PR #3712 by @​tiangolo.
      • You can start with Python Types Intro, it explains what changes between different Python versions, in Python 3.9 and in Python 3.10.
      • All the FastAPI docs are updated. Each code example in the docs that could use different syntax in Python 3.9 or Python 3.10 now has all the alternatives in tabs.
    • ⬆️ Upgrade Starlette to 0.17.1. PR #4145 by @​simondale00.

    Internal

    Commits
    • f038891 🔖 Release version 0.72.0
    • 9e2f5c6 📝 Update release notes
    • 93e4a19 📝 Update release notes
    • e1c6d7d 🌐 Update Chinese translation for docs/help-fastapi.md (#3847)
    • d23b295 📝 Update release notes
    • 26e9411 🌐 Fix Korean translation for docs/ko/docs/index.md (#4195)
    • 2496893 📝 Update release notes
    • 5c5b889 🌐 Add Polish translation for docs/pl/docs/index.md (#4245)
    • 436261b 📝 Update release notes
    • 5c62a59 🌐 Add Chinese translation for docs\tutorial\path-operation-configuration.md...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Extra Small dependencies 
    opened by dependabot[bot] 3
  • Bump mkdocs-material from 8.1.4 to 8.1.7

    Bump mkdocs-material from 8.1.4 to 8.1.7

    Bumps mkdocs-material from 8.1.4 to 8.1.7.

    Release notes

    Sourced from mkdocs-material's releases.

    mkdocs-material-8.1.7

    • Improved back-to-top button behavior - now not shown on anchor jump

    mkdocs-material-8.1.6

    • Fixed spacing of blockquotes (8.1.5 regression)
    • Fixed edge cases for rounded corners on code blocks (8.1.5 regression)
    • Fixed issues with code annotation line heights

    mkdocs-material-8.1.5

    • Improved browser support: Chrome 49+, Safari 10+, Firefox 53+, Edge 79+
    • Improved rendering of inline code blocks in headlines
    • Added Bahasa Malaysian translations
    • Fixed #3354: MathJax formulas show vertical scrollbar
    Changelog

    Sourced from mkdocs-material's changelog.

    mkdocs-material-8.1.7+insiders-4.6.1 (2022-01-16)

    • Fixed #3459: Section index pages picking up wrong title

    mkdocs-material-8.1.7 (2022-01-16)

    • Improved back-to-top button behavior - now not shown on anchor jump

    mkdocs-material-8.1.6-insiders-4.6.0 (2022-01-11)

    • Added support for annotations (outside of code blocks)

    mkdocs-material-8.1.6 (2022-01-11)

    • Fixed spacing of blockquotes (8.1.5 regression)
    • Fixed edge cases for rounded corners on code blocks (8.1.5 regression)
    • Fixed rendering issues with code annotation line heights

    mkdocs-material-8.1.5 (2022-01-09)

    • Improved browser support: Chrome 49+, Safari 10+, Firefox 53+, Edge 79+
    • Improved rendering of inline code blocks in headlines
    • Added Bahasa Malaysian translations
    • Fixed #3354: MathJax formulas show vertical scrollbar

    mkdocs-material-8.1.4+insiders-4.5.2 (2022-01-08)

    • Fixed #3440: Content tab indicator not moving when using linking
    • Fixed #3445: Content tab switch flickers/jitters when using linking

    mkdocs-material-8.1.4+insiders-4.5.1 (2022-01-02)

    • Added support for setting initial state of cookie consent
    • Fixed #3396: Disappearing link in navigation due to Safari bug

    mkdocs-material-8.1.4 (2022-01-02)

    • Added indicator to navigation expander icon
    • Improved support for reduced motion preference
    • Fixed jitter of active content tab indicator

    mkdocs-material-8.1.3 (2021-12-19)

    • Added animation to active content tab indicator
    • Fixed #3360: Highlighted lines add blank lines in copied text
    • Fixed usage of subsequent index files when using section index pages

    mkdocs-material-8.1.2+insiders-4.5.0 (2021-12-16)

    • Added support for navigation icons

    ... (truncated)

    Commits
    • a919199 Updated Insiders changelog
    • c74a886 Prepare 8.1.7 release
    • 014ab60 Improved back-to-top button behavior on anchor jump
    • 0a08e67 Added missing extends pragmas
    • 2231aab Added extension pragma
    • 749c19c Fixed endless redirect in palette change example
    • f9e9418 Added guide for setting up Giscus
    • 29cc1dd Documentation
    • 9511569 Added dark mode support for Giscus
    • 09c0e1c Removed feedback section in blog for Giscus integration
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Extra Small dependencies 
    opened by dependabot[bot] 3
  • Bump mkdocs-material from 8.1.4 to 8.1.6

    Bump mkdocs-material from 8.1.4 to 8.1.6

    Bumps mkdocs-material from 8.1.4 to 8.1.6.

    Release notes

    Sourced from mkdocs-material's releases.

    mkdocs-material-8.1.6

    • Fixed spacing of blockquotes (8.1.5 regression)
    • Fixed edge cases for rounded corners on code blocks (8.1.5 regression)
    • Fixed issues with code annotation line heights

    mkdocs-material-8.1.5

    • Improved browser support: Chrome 49+, Safari 10+, Firefox 53+, Edge 79+
    • Improved rendering of inline code blocks in headlines
    • Added Bahasa Malaysian translations
    • Fixed #3354: MathJax formulas show vertical scrollbar
    Changelog

    Sourced from mkdocs-material's changelog.

    mkdocs-material-8.1.6-insiders-4.6.0 (2022-01-11)

    • Added support for annotations (outside of code blocks)

    mkdocs-material-8.1.6 (2022-01-11)

    • Fixed spacing of blockquotes (8.1.5 regression)
    • Fixed edge cases for rounded corners on code blocks (8.1.5 regression)
    • Fixed rendering issues with code annotation line heights

    mkdocs-material-8.1.5 (2022-01-09)

    • Improved browser support: Chrome 49+, Safari 10+, Firefox 53+, Edge 79+
    • Improved rendering of inline code blocks in headlines
    • Added Bahasa Malaysian translations
    • Fixed #3354: MathJax formulas show vertical scrollbar

    mkdocs-material-8.1.4+insiders-4.5.2 (2022-01-08)

    • Fixed #3440: Content tab indicator not moving when using linking
    • Fixed #3445: Content tab switch flickers/jitters when using linking

    mkdocs-material-8.1.4+insiders-4.5.1 (2022-01-02)

    • Added support for setting initial state of cookie consent
    • Fixed #3396: Disappearing link in navigation due to Safari bug

    mkdocs-material-8.1.4 (2022-01-02)

    • Added indicator to navigation expander icon
    • Improved support for reduced motion preference
    • Fixed jitter of active content tab indicator

    mkdocs-material-8.1.3 (2021-12-19)

    • Added animation to active content tab indicator
    • Fixed #3360: Highlighted lines add blank lines in copied text
    • Fixed usage of subsequent index files when using section index pages

    mkdocs-material-8.1.2+insiders-4.5.0 (2021-12-16)

    • Added support for navigation icons

    mkdocs-material-8.1.2 (2021-12-15)

    • Switched CSS sources to logical properties
    • Added transformation of logical properties to ltr/rtl equivalents
    • Fixed spacing for admonitions inside lists (8.1.1 regression)

    mkdocs-material-8.1.1 (2021-12-13)

    ... (truncated)

    Commits
    • f5a98fc Prepare 8.1.6 release
    • bcf2f78 Fixed blockquote spacing (8.1.5 regression)
    • 73331ee Fixed edge cases for rounded borders on code blocks
    • aa34402 Fixed overflow/clearfix issues for code result blocks
    • 50408bf Added new code block styles to reference documentation
    • ca1996b Updated distribution files
    • 9655c3a Updated dependencies and bumped copyright year
    • cd0eb23 Added missing entry to changelog
    • 97c920a Fixed issues with code annotation line height
    • d5fb8f1 Prepare 8.1.5 release
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Extra Small dependencies 
    opened by dependabot[bot] 3
  • Bump mkdocs-material from 8.1.4 to 8.1.5

    Bump mkdocs-material from 8.1.4 to 8.1.5

    Bumps mkdocs-material from 8.1.4 to 8.1.5.

    Release notes

    Sourced from mkdocs-material's releases.

    mkdocs-material-8.1.5

    • Improved browser support: Chrome 49+, Safari 10+, Firefox 53+, Edge 79+
    • Improved rendering of inline code blocks in headlines
    • Added Bahasa Malaysian translations
    • Fixed #3354: MathJax formulas show vertical scrollbar
    Changelog

    Sourced from mkdocs-material's changelog.

    mkdocs-material-8.1.5 (2022-01-09)

    • Improved browser support: Chrome 49+, Safari 10+, Firefox 53+, Edge 79+
    • Improved rendering of inline code blocks in headlines
    • Added Bahasa Malaysian translations
    • Fixed #3354: MathJax formulas show vertical scrollbar

    mkdocs-material-8.1.4+insiders-4.5.2 (2022-01-08)

    • Fixed #3440: Content tab indicator not moving when using linking
    • Fixed #3445: Content tab switch flickers/jitters when using linking

    mkdocs-material-8.1.4+insiders-4.5.1 (2022-01-02)

    • Added support for setting initial state of cookie consent
    • Fixed #3396: Disappearing link in navigation due to Safari bug

    mkdocs-material-8.1.4 (2022-01-02)

    • Added indicator to navigation expander icon
    • Improved support for reduced motion preference
    • Fixed jitter of active content tab indicator

    mkdocs-material-8.1.3 (2021-12-19)

    • Added animation to active content tab indicator
    • Fixed #3360: Highlighted lines add blank lines in copied text
    • Fixed usage of subsequent index files when using section index pages

    mkdocs-material-8.1.2+insiders-4.5.0 (2021-12-16)

    • Added support for navigation icons

    mkdocs-material-8.1.2 (2021-12-15)

    • Switched CSS sources to logical properties
    • Added transformation of logical properties to ltr/rtl equivalents
    • Fixed spacing for admonitions inside lists (8.1.1 regression)

    mkdocs-material-8.1.1 (2021-12-13)

    • Added support for #only-light and #only-dark image hash fragments
    • Fixed copy-to-clipboard adding blank lines when using line anchors
    • Fixed code annotation directionality for right-to-left languages
    • Fixed header title positioning for right-to-left languages
    • Fixed admonition borders for right-to-left languages (8.0.0 regression)
    • Fixed footer navigation link positioning (8.0.0 regression)
    • Fixed footer navigation title breaking out of container when too long
    • Fixed shrinking arrow in navigation title when too long
    • Fixed #3343: Filtered stopwords appear as missing search terms

    ... (truncated)

    Commits
    • d5fb8f1 Prepare 8.1.5 release
    • e063108 Fixed scrollbars on MathJax formulas
    • cffb403 Added Bahasa Malaysian translations
    • 24c8519 Documentation
    • db4648f Fixed remaining issues and added docs for browser support
    • 48bb814 Improved browser compatibility
    • 463e4b1 Disabled navigation.instant
    • ea02f33 Merge branch 'master' into refactor/compatibility
    • 0a43974 Documentation
    • 1712664 Documentation
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Extra Small dependencies 
    opened by dependabot[bot] 3
  • Bump fastapi from 0.70.1 to 0.71.0

    Bump fastapi from 0.70.1 to 0.71.0

    Bumps fastapi from 0.70.1 to 0.71.0.

    Release notes

    Sourced from fastapi's releases.

    0.71.0

    Features

    • ✨ Add docs and tests for Python 3.9 and Python 3.10. PR #3712 by @​tiangolo.
      • You can start with Python Types Intro, it explains what changes between different Python versions, in Python 3.9 and in Python 3.10.
      • All the FastAPI docs are updated. Each code example in the docs that could use different syntax in Python 3.9 or Python 3.10 now has all the alternatives in tabs.
    • ⬆️ Upgrade Starlette to 0.17.1. PR #4145 by @​simondale00.

    Internal

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Extra Small dependencies 
    opened by dependabot[bot] 3
  • Bump fastapi from 0.75.0 to 0.75.1

    Bump fastapi from 0.75.0 to 0.75.1

    Bumps fastapi from 0.75.0 to 0.75.1.

    Release notes

    Sourced from fastapi's releases.

    0.75.1

    Translations

    Internal

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • Bump mkdocs from 1.2.3 to 1.3.0

    Bump mkdocs from 1.2.3 to 1.3.0

    Bumps mkdocs from 1.2.3 to 1.3.0.

    Release notes

    Sourced from mkdocs's releases.

    1.3.0

    Feature upgrades

    • ReadTheDocs theme updated from v0.4.1 to v1.0.0 according to upstream (#2585)

      The most notable changes:

      • New option logo: Rather than displaying the site_name in the title, one can specify a path to an image to display instead.
      • New option anonymize_ip for Google Analytics.
      • Dependencies were upgraded: jQuery upgraded to 3.6.0, Modernizr.js dropped, and others.

      See documentation of config options for the theme

    • Built-in themes now also support these languages:

    • Support custom directories to watch when running mkdocs serve (#2642)

      MkDocs by default watches the docs directory and the config file. Now there is a way to add more directories to watch for changes, either via the YAML watch key or the command line flag --watch.

      Normally MkDocs never reaches into any other directories (so this feature shouldn't be necessary), but some plugins and extensions may do so.

      See documentation.

    • New --no-history option for gh_deploy (#2594)

      Allows to discard the history of commits when deploying, and instead replace it with one root commit

    Bug fixes

    • An XSS vulnerability when using the search function in built-in themes was fixed (#2791)

    • Setting the edit_uri option no longer erroneously adds a trailing slash to repo_url (#2733)

    Miscellaneous

    • Breaking change: the pages config option that was deprecated for a very long time now causes an error when used (#2652)

      To fix the error, just change from pages to nav.

    • Performance optimization: during startup of MkDocs, code and dependencies of other commands will not be imported (#2714)

      The most visible effect of this is that dependencies of mkdocs serve will not be imported when mkdocs build is used.

    • Recursively validate nav (#2680)

      Validation of the nested nav structure has been reworked to report errors early and reliably. Some edge cases have been declared invalid.

    Other small improvements; see commit log.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
Releases(1.1.2)
  • 1.1.2(Nov 30, 2021)

    What's Changed

    • Chore: Uncover some Functions by @yezz123 in https://github.com/yezz123/fastapi-class/pull/8
    • Bump mkdocs-material from 7.2.6 to 8.0.2 by @dependabot in https://github.com/yezz123/fastapi-class/pull/9
    • Bump fastapi from 0.68.1 to 0.70.0 by @dependabot in https://github.com/yezz123/fastapi-class/pull/11

    Full Changelog: https://github.com/yezz123/fastapi-class/compare/1.1.1...1.1.2

    Source code(tar.gz)
    Source code(zip)
  • 1.1.1(Oct 17, 2021)

    What's Changed

    Pull Requests

    • Create FastAPI Class Documentation ✨ by @yezz123 in https://github.com/yezz123/fastapi-class/pull/6
    • Bump to 1.1.1 ✨ by @yezz123 in https://github.com/yezz123/fastapi-class/pull/7

    Full Changelog: https://github.com/yezz123/fastapi-class/compare/1.1.0...1.1.1

    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Oct 10, 2021)

    What's Changed

    • Add More Classifiers & Fix Typo ✨ by @yezz123 in https://github.com/yezz123/fastapi-class/pull/3

    Full Changelog: https://github.com/yezz123/fastapi-class/compare/1.0.0...1.1.0

    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Oct 7, 2021)

    Classes and Decorators to use FastAPI with class based routing. In particular this allows you to construct an instance of a class and have methods of that instance be route handlers for FastAPI & Python 3.8.

    • Older Versions of Python:
      • Unfortunately this does not work with async routes with Python versions less than 3.8 due to bugs in inspect.iscoroutinefunction. Specifically with older versions of Python iscoroutinefunction incorrectly returns false so async routes aren't await'd. We therefore only support Python versions >= 3.8.

    Example 🐢

    from ping import pong
    # Some fictional ping pong class
    from fastapi_class import Routable, get, delete
    
    def parse_arg() -> argparse.Namespace:
       """parse command line arguments."""
       ...
    
    
    class UserRoutes(Routable):
       """Inherits from Routable."""
    
       # Note injection here by simply passing values to the constructor. Other injection frameworks also
       # supported as there's nothing special about this __init__ method.
       def __init__(self, pong: pong) -> None:
          """Constructor. The pong is injected here."""
          self.__pong = pong
    
       @get('/user/{name}')
       def get_user_by_name(name: str) -> User:
          # Use our injected pong instance.
          return self.__pong.get_user_by_name(name)
    
       @delete('/user/{name}')
       def delete_user(name: str) -> None:
          self.__pong.delete(name)
    
    
    def main():
        args = parse_args()
        # Configure the pomg per command line arguments
        pong = pong(args.url, args.user, args.password)
        # Simple intuitive injection
        user_routes = UserRoutes(pong)
    
        app = FastAPI()
        # router member inherited from Routable and configured per the annotations.
        app.include_router(user_routes.router)
    
    Source code(tar.gz)
    Source code(zip)
Owner
Yasser Tahiri
API Ninja / Backend Developer who speaks @python. Creator of @BnademOverflow. I love Open Source & Ancient Greece.
Yasser Tahiri
:rocket: CLI tool for FastAPI. Generating new FastAPI projects & boilerplates made easy.

Project generator and manager for FastAPI. Source Code: View it on Github Features ?? Creates customizable project boilerplate. Creates customizable a

Yagiz Degirmenci 1k Jan 2, 2023
Simple FastAPI Example : Blog API using FastAPI : Beginner Friendly

fastapi_blog FastAPI : Simple Blog API with CRUD operation Steps to run the project: git clone https://github.com/mrAvi07/fastapi_blog.git cd fastapi-

Avinash Alanjkar 1 Oct 8, 2022
Пример использования GraphQL Ariadne с FastAPI и сравнение его с GraphQL Graphene FastAPI

FastAPI Ariadne Example Пример использования GraphQL Ariadne с FastAPI и сравнение его с GraphQL Graphene FastAPI - GitHub ###Запуск на локальном окру

ZeBrains Team 9 Nov 10, 2022
Sample-fastapi - A sample app using Fastapi that you can deploy on App Platform

Getting Started We provide a sample app using Fastapi that you can deploy on App

Erhan BÜTE 2 Jan 17, 2022
Flask-vs-FastAPI - Understanding Flask vs FastAPI Web Framework. A comparison of two different RestAPI frameworks.

Flask-vs-FastAPI Understanding Flask vs FastAPI Web Framework. A comparison of two different RestAPI frameworks. IntroductionIn Flask is a popular mic

Mithlesh Navlakhe 1 Jan 1, 2022
FastAPI Server Session is a dependency-based extension for FastAPI that adds support for server-sided session management

FastAPI Server-sided Session FastAPI Server Session is a dependency-based extension for FastAPI that adds support for server-sided session management.

DevGuyAhnaf 5 Dec 23, 2022
fastapi-admin2 is an upgraded fastapi-admin, that supports ORM dialects, true Dependency Injection and extendability

FastAPI2 Admin Introduction fastapi-admin2 is an upgraded fastapi-admin, that supports ORM dialects, true Dependency Injection and extendability. Now

Glib 14 Dec 5, 2022
Code Specialist 27 Oct 16, 2022
Fastapi-ml-template - Fastapi ml template with python

FastAPI ML Template Run Web API Local $ sh run.sh # poetry run uvicorn app.mai

Yuki Okuda 29 Nov 20, 2022
FastAPI-Amis-Admin is a high-performance, efficient and easily extensible FastAPI admin framework. Inspired by django-admin, and has as many powerful functions as django-admin.

简体中文 | English 项目介绍 FastAPI-Amis-Admin fastapi-amis-admin是一个拥有高性能,高效率,易拓展的fastapi管理后台框架. 启发自Django-Admin,并且拥有不逊色于Django-Admin的强大功能. 源码 · 在线演示 · 文档 · 文

AmisAdmin 318 Dec 31, 2022
Lazy package to start your project using FastAPI✨

Fastapi-lazy ?? Utilities that you use in various projects made in FastAPI. Source Code: https://github.com/yezz123/fastapi-lazy Install the project:

Yasser Tahiri 95 Dec 29, 2022
Sample project showing reliable data ingestion application using FastAPI and dramatiq

Create and deploy a reliable data ingestion service with FastAPI, SQLModel and Dramatiq This is the source code for the data ingestion service explain

François Voron 31 Nov 30, 2022
Sample FastAPI project that uses async SQLAlchemy, SQLModel, Postgres, Alembic, and Docker.

FastAPI + SQLModel + Alembic Sample FastAPI project that uses async SQLAlchemy, SQLModel, Postgres, Alembic, and Docker. Want to learn how to build th

null 228 Jan 2, 2023
FastAPI Project Template

The base to start an openapi project featuring: SQLModel, Typer, FastAPI, JWT Token Auth, Interactive Shell, Management Commands.

A.Freud 4 Dec 5, 2022
FastAPI Auth Starter Project

This is a template for FastAPI that comes with authentication preconfigured.

Oluwaseyifunmi Oyefeso 6 Nov 13, 2022
Docker Sample Project - FastAPI + NGINX

Docker Sample Project - FastAPI + NGINX Run FastAPI and Nginx using Docker container Installation Make sure Docker is installed on your local machine

null 1 Feb 11, 2022
A dynamic FastAPI router that automatically creates CRUD routes for your models

⚡ Create CRUD routes with lighting speed ⚡ A dynamic FastAPI router that automatically creates CRUD routes for your models

Adam Watkins 950 Jan 8, 2023
Easily integrate socket.io with your FastAPI app 🚀

fastapi-socketio Easly integrate socket.io with your FastAPI app. Installation Install this plugin using pip: $ pip install fastapi-socketio Usage To

Srdjan Stankovic 210 Dec 23, 2022
A dynamic FastAPI router that automatically creates CRUD routes for your models

⚡ Create CRUD routes with lighting speed ⚡ A dynamic FastAPI router that automatically creates CRUD routes for your models Documentation: https://fast

Adam Watkins 943 Jan 1, 2023