The Python micro framework for building web applications.

Overview

Flask

Flask is a lightweight WSGI web application framework. It is designed to make getting started quick and easy, with the ability to scale up to complex applications. It began as a simple wrapper around Werkzeug and Jinja and has become one of the most popular Python web application frameworks.

Flask offers suggestions, but doesn't enforce any dependencies or project layout. It is up to the developer to choose the tools and libraries they want to use. There are many extensions provided by the community that make adding new functionality easy.

Installing

Install and update using pip:

$ pip install -U Flask

A Simple Example

# save this as app.py
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, World!"
$ flask run
  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Contributing

For guidance on setting up a development environment and how to make a contribution to Flask, see the contributing guidelines.

Donate

The Pallets organization develops and supports Flask and the libraries it uses. In order to grow the community of contributors and users, and allow the maintainers to devote more time to the projects, please donate today.

Links

Comments
  • Method `render_template` does not use blueprint specified `template_folder`

    Method `render_template` does not use blueprint specified `template_folder`

    1. File structure:
    project -
          - templates \
                    - a \
                          search.html
                    - b \
                          search.html
          - start.py
          - myapplication \
                    - test.py 
    
    1. Start file:
    # start.py
    from flask import Flask
    from myapplication.test import test_blueprint
    
    app = Flask(__name__)
    app.register_blueprint(test_blueprint)
    
    1. my application
    # test.py
    from flask import Blueprint, render_template, abort
    from jinja2 import TemplateNotFound
    
    test_blueprint = Blueprint('test_blueprint', __name__,
                            template_folder='absolute_path_to_project/templates/a')  
                            # YES, I specified the absolute path to the template a
    
    @test_blueprint.route('/test')
    def show():
        try:
            return render_template(''search.html") # HERE is the problem
        except TemplateNotFound:
            abort(404)
    

    Is this a problem? # Actually, I want to render a/search.html # But, render_template() does not use test_blueprint's template_folder # render_template() search the template list, find the first search.html, then render # So, maybe render a/search.html or b/search.html # This depend on the sequence of the template list

    blueprints 
    opened by Kevin922 57
  • What is the release schedule for 1.0?

    What is the release schedule for 1.0?

    What are the plans for the 1.0 release. This was brought up last year and there hasn't been any announcements since then. What progress is being made and what still remains?

    opened by lipis 46
  • BUG in

    BUG in "send_file" and "send_from_directory"

    L496 in helpers.py If i use flask as a package instead of a module, I want to expose a file which is not in package. checks in send_from_directory will be passed because of rel path. However, in send_file, added abs folder, it occur an error.

    bug 
    opened by baisk 40
  • allow using alternative json library

    allow using alternative json library

    It looks like flask.json does not allow the user to specify an alternative json library (such as rapidjson). Instead it just does this:

    try:
        from itsdangerous import simplejson as _json
    except ImportError:
        from itsdangerous import json as _json
    

    This currently un-overridable behavior also means that, due to differences in when default(..) is called between simplejson and json, bugs can mysteriously appear when simplejson is installed that didn't appear without it.

    Would you consider giving the user some control over which json library is used?

    json 
    opened by jab 39
  • send_file fails when filename contains unicode symbols

    send_file fails when filename contains unicode symbols

    Hi.

    I've detected an issue with supporting unicode filenames in send_file. If send_file attempts to respond with utf-8 in http headers, the answer is empty, the log contains something like "http-headers should containbe latin-1". I know that browser support IS A MESS, but it seems, that sending two filenames (filename= and filename*=) separated by semicolon should work.

    I'd like this to be handled by flask or werkzeug. Will you accept such pull request?

    opened by georgthegreat 38
  • host_matching is in Werkzeug since 0.7 but not in Flask

    host_matching is in Werkzeug since 0.7 but not in Flask

    having 'example.com' and 'example.org' running on the same server with the same data backend I thought it would be simple to serve both from a single Flask app, especially since Werkzeug has host_matching but it isn't.

    I currently workaround this by 'injecting' hostname into urls with nginx's url rewrites but this is a bit too hackish, you know.

    I would like to have syntax like this:

    @app.route("/", host="example.org")
    def hello():
        return "Hello World!"
    
    opened by constb 37
  • Message Flashing's implementation is broken and should be removed anyway

    Message Flashing's implementation is broken and should be removed anyway

    Message flashing as implemented in Flask is currently broken, under certain conditions it's possible for messages to be flashed to the wrong tab or in extreme cases the wrong device/browser.

    A correct implementation would require functionality beyond Flask's scope, message flashing itself is arguably beyond Flask's scope already.

    Why not make a piss-poor user account system that exists solely in session cookies? It seems like the same logic behind Flask's message flashing functionality.

    opened by mcilrain 35
  • Incomplete mod_wsgi documentation

    Incomplete mod_wsgi documentation

    I have been having issues for 3-4 days now to get a hello world up and running on the remote server. I figured out that it would be nice if there was a documentation from A-Z how to get that done and working.

    http://flask.pocoo.org/docs/deploying/mod_wsgi/

    The current documentation does not provide an example what to put into an exact python file, and what url to open up in the web browser to get the desired python module running on the remote server. It is okay to have references to other places if that is more logical, but the idea is to have a self-contained page which I can start reading, and by I reach the end, I will have a working remote hello world.

    This would be well appreciated.

    opened by lpapp 35
  • Add `async` support

    Add `async` support

    This will require Python 2 support to be dropped, which as I understand isn't likely to happen till 2020. Which is a bonus as it gives time to consider this change and the implications of it. (I also need to spend some time cleaning up this implementation, yet it serves as a proof of concept).

    I've written this blog post to add some extra context, but I see a key aspect to this change is that whilst it adds async support it does not do so throughout and specifically does not support ASGI. This means that Flask is constrained (when using async) to have worse performance than the ASGI equivalents. This is necessary as I don't think Flask can be async throughout (or support ASGI) whilst being backwards compatible. Yet this change is good overall, in that users would be able to add some async usage to their existing codebases. I would also like to note that they can switch to Quart if their usage becomes mostly async.

    This allows for async functions to be passed to the Flask class instance, for example as a view function,

    @app.route("/")
    async def index():
        return "Async hello"
    

    this comes with a cost though of poorer performance than using the sync equivalent.

    async 
    opened by pgjones 34
  • Nestable blueprints

    Nestable blueprints

    I'd like to be able to register "sub-blueprints" using Blueprint.register_blueprint(*args, **kwargs). This would register the nested blueprints with an app when the "parent" is registered with it. All parameters are preserved, other than url_prefix, which is handled similarly to in add_url_rule. A naíve implementation could look like this:

    class Blueprint(object):
        ...
    
        def register_blueprint(self, blueprint, **options):
            def deferred(state):
                url_prefix = options.get('url_prefix')
                if url_prefix is None:
                    url_prefix = blueprint.url_prefix
                if 'url_prefix' in options:
                    del options['url_prefix']
    
                state.app.register_blueprint(blueprint, url_prefix, **options)
            self.record(deferred)
    
    blueprints 
    opened by teozkr 33
  • Flask Multi-Server Development Hooks

    Flask Multi-Server Development Hooks

    I don't have a good description for the issue yet but one of the issues I keep running into myself in 2017 is that it's not convenient to marry Flask and webpack. The issue here is that one wants to both have a server app as well as a client app and each uses a hot reloader for code.

    There is a lot of boilerplate to make two services work and there is absolutely no support on the side of Flask to make it work. So here is what Flask most likely should do:

    Environment Awareness

    Flask needs to know about environments. For now I would propose to mirror the node model where we have an environment flag and depending on the environment flag some flags get flipped automatically. In development for instance we would turn on debug by default. This discourages apps to make too many assumptions about the debug flag but instead use an environment flag instead.

    This means debug can be flipped on and off in development mode. A potential webpack integration extension can then forward that flag to webpack.

    Proxy or be-proxied Capabilities

    Right now one either needs front/backend to be running different servers on different ports or use some manual proxy setup to make this work. Right now the webpack server can pass through to the Flask server but it's quite hacky and non trivial.

    In an ideal case Flask in development mode can spawn another process (like a webpack server, ngrok etc.) and manage this process. It would work independently of the Flask reloader but shut down together.

    If it spawns a process on a different port Flask should itself be proxied through that other server or proxy to another server if that's easier. This would most likely require that the Werkzeug server learns HTTP proxying as we might not be able to do this on the WSGI level.

    opened by mitsuhiko 31
  • Bump dessant/lock-threads from 3 to 4

    Bump dessant/lock-threads from 3 to 4

    Bumps dessant/lock-threads from 3 to 4.

    Release notes

    Sourced from dessant/lock-threads's releases.

    v4.0.0

    Learn more about this release from the changelog.

    Changelog

    Sourced from dessant/lock-threads's changelog.

    4.0.0 (2022-12-04)

    ⚠ BREAKING CHANGES

    • the action now requires Node.js 16

    Bug Fixes

    3.0.0 (2021-09-27)

    ⚠ BREAKING CHANGES

    • input parameter names have changed

      Rename the following input parameters when upgrading from v2 to v3:

      • issue-lock-inactive-days --> issue-inactive-days
      • issue-exclude-created-before --> exclude-issue-created-before
      • issue-exclude-labels --> exclude-any-issue-labels
      • issue-lock-labels --> add-issue-labels
      • issue-lock-comment --> issue-comment
      • pr-lock-inactive-days --> pr-inactive-days
      • pr-exclude-created-before --> exclude-pr-created-before
      • pr-exclude-labels --> exclude-any-pr-labels
      • pr-lock-labels --> add-pr-labels
      • pr-lock-comment --> pr-comment

    Features

    • add new filtering and labeling options, update input parameter names (26fd836)
    • allow manual triggering (a0c7da3)

    2.1.2 (2021-08-17)

    Bug Fixes

    • ignore error when commenting on issue converted to discussion (60d2a1a), closes #24

    2.1.1 (2021-07-09)

    Bug Fixes

    • update GitHub API calls (a3ccc71)

    ... (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 github_actions 
    opened by dependabot[bot] 0
  • Type of SessionMixin underspecified, flask.session.get() fails strict type-check

    Type of SessionMixin underspecified, flask.session.get() fails strict type-check

    To reproduce:

    from flask import session
    
    session.get("foo")
    

    Produces a pyright/Pylance error in VSCode in strict typing mode:

    Type of "get" is partially unknown
      Type of "get" is "Overload[(__key: Unknown, /) -> (Unknown | None), (__key: Unknown, /, default: Unknown | [email protected]) -> (Unknown | [email protected])]"Pylance[reportUnknownMemberType]
    

    mypy --strict doesn't seem to mind, but it also accepts session.get({"a": 7}) without complaint, so perhaps not a good measure.

    Changing the offending line like this fixes the problem:

    cast(MutableMapping[str, Any], session).get("foo")
    

    Based on this observation I changing this line in the SessionMixin declaration, which also fixes the problem: https://github.com/pallets/flask/blob/main/src/flask/sessions.py#L21

    # --- from ---
    class SessionMixin(MutableMapping):
    
    # --- to ---
    class SessionMixin(MutableMapping[t.Hashable, t.Any]):
    

    I'm not sure if I've gotten those types exactly right, I believe they are the broadest possible types, but perhaps keys are limited to str or values could be narrowed.

    Happy to submit a pull request if that's a help. Thanks so much for Flask, it is an immensely important contribution to the Python ecosystem I make my living in :)

    Environment:

    • Python version: 3.10.7
    • Flask version: 2.2.2
    typing 
    opened by scanny 1
  • docs should explain the `@setupmethod` behavior

    docs should explain the `@setupmethod` behavior

    The appcontext documentation should explain the new @setupmethod 'shell_context_process' behavior, linked to https://github.com/pallets/flask/pull/4577.

    Flask raises an Assertion Error.

    AssertionError: The setup method 'shell_context_processor' can no longer be called on the application. It has already handled its first request, any changes will not be applied consistently. Make sure all imports, decorators, functions, etc. needed to set up the application are done before running it.

    The error should be documented, and a correct implementation should be provided.

    docs 
    opened by HLFH 1
  • Fix subdomain inheritance for nested blueprints.

    Fix subdomain inheritance for nested blueprints.

    When child blueprints are mounted onto parents, they don't inherit the subdomain set by the parent.

    This PR ensures that routes in child blueprint will be available at the same subdomain set by the parent.

    However, children can also specify their own subdomain if necessary.

    • fixes #4834

    Checklist:

    • [x] Add tests that demonstrate the correct behavior of the change. Tests should fail without the change.
    • [x] Add or update relevant docs, in the docs folder and in code.
    • [x] Add an entry in CHANGES.rst summarizing the change and linking to the issue.
    • [x] Add .. versionchanged:: entries in any relevant code docs.
    • [x] Run pre-commit hooks and fix any issues.
    • [x] Run pytest and tox, no tests failed.
    opened by confuzeus 0
  • Celery Background Tasks: Property

    Celery Background Tasks: Property "Task" defined in "Celery" is read-only

    Currently, the documentation says to replace celery.Task with a custom ContextTask. But this raises an error using mypy:

    $ cat minimal.py 
    from flask import Flask
    from celery import Celery, Task
    
    def make_celery(app: Flask):
        celery = Celery(app.import_name)
        celery.conf.update(app.config["CELERY_CONFIG"])
    
        class ContextTask(Task):
            def __call__(self, *args, **kwargs):
                with app.app_context():
                    return self.run(*args, **kwargs)
    
        celery.Task = ContextTask
        return celery
    $ mypy minimal.py
    minimal.py:13: error: Property "Task" defined in "Celery" is read-only
    minimal.py:13: error: Incompatible types in assignment (expression has type "Type[ContextTask]", variable has type "Task[Any]")
    

    Instead one should initialize Celery with a string of the desired Task class. See Celery docs.

    $ cat minimal.py 
    from flask import Flask
    from celery import Celery, Task
    
    
    class ContextTask(Task):
        def __call__(self, *args, **kwargs):
            with app.app_context():
                return self.run(*args, **kwargs)
    
    
    def make_celery(app: Flask):
        celery = Celery(app.import_name, task_cls="minimal.minimal:ContextTask")
        celery.conf.update(app.config["CELERY_CONFIG"])
    
        return celery
    $ mypy minimal.py
    Success: no issues found in 1 source file
    
    docs 
    opened by sr-verde 0
Releases(2.2.2)
  • 2.2.2(Aug 8, 2022)

    This is a fix release for the 2.2.0 feature release.

    • Changes: https://flask.palletsprojects.com/en/2.2.x/changes/#version-2-2-1
    • Milestone: https://github.com/pallets/flask/milestone/25?closed=1
    Source code(tar.gz)
    Source code(zip)
  • 2.2.1(Aug 3, 2022)

    This is a fix release for the 2.2.0 feature release.

    • Changes: https://flask.palletsprojects.com/en/2.2.x/changes/#version-2-2-1
    • Milestone: https://github.com/pallets/flask/milestone/23?closed=1
    Source code(tar.gz)
    Source code(zip)
  • 2.2.0(Aug 2, 2022)

    This is a feature release, which includes new features and removes previously deprecated code. The 2.2.x branch is now the supported bug fix branch, the 2.1.x branch will become a tag marking the end of support for that branch. We encourage everyone to upgrade, and to use a tool such as pip-tools to pin all dependencies and control upgrades.

    • Changes: https://flask.palletsprojects.com/en/2.2.x/changes/#version-2-2-0
    • Milestone: https://github.com/pallets/flask/milestone/19?closed=1
    Source code(tar.gz)
    Source code(zip)
  • 2.1.3(Jul 13, 2022)

    • Changes: https://flask.palletsprojects.com/en/2.1.x/changes/#version-2-1-3
    • Milestone: https://github.com/pallets/flask/milestone/22?closed=1
    Source code(tar.gz)
    Source code(zip)
  • 2.1.2(Apr 28, 2022)

    This is a fix release for the 2.1.0 feature release.

    • Changes: https://flask.palletsprojects.com/en/2.1.x/changes/#version-2-1-2
    • Milestone: https://github.com/pallets/flask/milestone/21?closed=1
    Source code(tar.gz)
    Source code(zip)
  • 2.1.1(Mar 30, 2022)

    This is a fix release for the 2.1.0 feature release.

    • Changes: https://flask.palletsprojects.com/en/2.1.x/changes/#version-2-1-1
    • Milestone: https://github.com/pallets/flask/milestone/18?closed=1
    Source code(tar.gz)
    Source code(zip)
  • 2.1.0(Mar 28, 2022)

    This is a feature release, which includes new features and removes previously deprecated features. The 2.1.x branch is now the supported bugfix branch, the 2.0.x branch will become a tag marking the end of support for that branch. We encourage everyone to upgrade, and to use a tool such as pip-tools to pin all dependencies and control upgrades.

    • Changes: https://flask.palletsprojects.com/en/2.1.x/changes/#version-2-1-0
    • Milestone: https://github.com/pallets/flask/milestone/13?closed=1

    We also encourage upgrading to the latest versions of the other Pallets projects as well.

    • Werkzeug 2.1 changes: https://werkzeug.palletsprojects.com/en/2.1.x/changes/#version-2-1-0
    • Jinja 3.1 changes: https://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-1
    • Click 8.1 changes: https://click.palletsprojects.com/en/8.1.x/changes/#version-8-1-0
    • MarkupSafe 2.1 changes: https://markupsafe.palletsprojects.com/en/2.1.x/changes/#version-2-1-1
    • ItsDangerous 2.1 changes: https://itsdangerous.palletsprojects.com/en/2.1.x/changes/#version-2-1-2
    Source code(tar.gz)
    Source code(zip)
  • 2.0.3(Feb 14, 2022)

    • Changes: https://flask.palletsprojects.com/en/2.0.x/changes/#version-2-0-3
    • Milestone: https://github.com/pallets/flask/milestone/17?closed=1
    Source code(tar.gz)
    Source code(zip)
  • 2.0.2(Oct 4, 2021)

  • 2.0.1(May 21, 2021)

  • 2.0.0(May 12, 2021)

    New major versions of all the core Pallets libraries, including Flask 2.0, have been released! :tada:

    • Read the announcement on our blog: https://palletsprojects.com/blog/flask-2-0-released/
    • Read the full list of changes: https://flask.palletsprojects.com/changes/#version-2-0-0
    • Retweet the announcement on Twitter: https://twitter.com/PalletsTeam/status/1392266507296514048
    • Follow our blog, Twitter, or GitHub to see future announcements.

    This represents a significant amount of work, and there are quite a few changes. Be sure to carefully read the changelog, and use tools such as pip-compile and Dependabot to pin your dependencies and control your updates.

    Source code(tar.gz)
    Source code(zip)
  • 2.0.0rc2(May 3, 2021)

  • 2.0.0rc1(Apr 16, 2021)

  • 1.1.2(Apr 3, 2020)

    1.1.x is the last version to support Python 2.7 and Python 3.5. It also contains deprecation warnings for code that will be removed in 2.0. Please pay attention to deprecation warnings in your project!

    This release contains a couple bug fixes.

    • Changelog: https://flask.palletsprojects.com/en/1.1.x/changelog/#version-1-1-2
    Source code(tar.gz)
    Source code(zip)
  • 1.1.1(Jul 9, 2019)

  • 1.1.0(Jul 9, 2019)

  • 1.0.4(Jul 9, 2019)

  • 1.0.3(Jul 9, 2019)

  • 1.0.2(May 2, 2018)

  • 1.0.1(Apr 30, 2018)

  • 0.12.4(Apr 30, 2018)

  • 1.0(Apr 26, 2018)

    The Pallets team is pleased to release Flask 1.0. [Read the announcement on our blog.](https://www.palletsprojects.com/blog/flask-1-0-released/

    There are over a year's worth of changes in this release. Many features have been improved or changed. Read the changelog to understand how your project's code will be affected.

    JSON Security Fix

    Flask previously decoded incoming JSON bytes using the content type of the request. Although JSON should only be encoded as UTF-8, Flask was more lenient. However, Python includes non-text related encodings that could result in unexpected memory use by a request.

    Flask will now detect the encoding of incoming JSON data as one of the supported UTF encodings, and will not allow arbitrary encodings from the request.

    Install or Upgrade

    Install from PyPI with pip:

    pip install -U Flask
    
    Source code(tar.gz)
    Source code(zip)
    Flask-1.0-py2.py3-none-any.whl(95.49 KB)
    Flask-1.0-py2.py3-none-any.whl.asc(488 bytes)
    Flask-1.0.tar.gz(628.36 KB)
    Flask-1.0.tar.gz.asc(488 bytes)
  • 0.12.3(Apr 26, 2018)

    This release includes an important security fix for JSON and a minor backport for CLI support in PyCharm. It is provided for projects that cannot update to Flask 1.0 immediately. See the 1.0 announcement and update to it instead if possible.

    JSON Security Fix

    Flask previously decoded incoming JSON bytes using the content type of the request. Although JSON should only be encoded as UTF-8, Flask was more lenient. However, Python includes non-text related encodings that could result in unexpected memory use by a request.

    Flask will now detect the encoding of incoming JSON data as one of the supported UTF encodings, and will not allow arbitrary encodings from the request.

    Upgrade

    Upgrade from PyPI with pip. Use a version identifier if you want to stay at 0.12:

    pip install -U 'Flask~=0.12.3'
    

    Or upgrade to 1.0:

    pip install -U Flask
    
    Source code(tar.gz)
    Source code(zip)
    Flask-0.12.3-py2.py3-none-any.whl(86.29 KB)
    Flask-0.12.3-py2.py3-none-any.whl.asc(488 bytes)
    Flask-0.12.3.tar.gz(518.92 KB)
    Flask-0.12.3.tar.gz.asc(488 bytes)
Pyrin is an application framework built on top of Flask micro-framework to make life easier for developers who want to develop an enterprise application using Flask

Pyrin A rich, fast, performant and easy to use application framework to build apps using Flask on top of it. Pyrin is an application framework built o

Mohamad Nobakht 10 Jan 25, 2022
A boilerplate Flask API for a Fullstack Project with some additional packages and configuration prebuilt. ⚙

Flask Boilerplate to quickly get started with production grade flask application with some additional packages and configuration prebuilt.

Yasser Tahiri 32 Dec 24, 2022
A minimal, extensible, fast and productive API framework for Python 3.

molten A minimal, extensible, fast and productive API framework for Python 3. Changelog: https://moltenframework.com/changelog.html Community: https:/

Bogdan Popa 980 Nov 28, 2022
A Simple Kivy Greeting App

SimpleGreetingApp A Simple Kivy Greeting App This is a very simple GUI App that receives a name text input from the user and returns a "Hello" greetin

Mariya 40 Dec 02, 2022
Online Boutique is a cloud-native microservices demo application

Online Boutique is a cloud-native microservices demo application. Online Boutique consists of a 10-tier microservices application. The application is

Matt Reider 1 Oct 22, 2021
A public API written in Python using the Flask web framework to determine the direction of a road sign using AI

python-public-API This repository is a public API for solving the problem of the final of the AIIJC competition. The task is to create an AI for the c

Lev 1 Nov 08, 2021
Containers And REST APIs Workshop

Containers & REST APIs Workshop Containers vs Virtual Machines Ferramentas Podman: https://podman.io/ Docker: https://www.docker.com/ IBM CLI: https:/

Vanderlei Munhoz 8 Dec 16, 2021
Pulumi-checkly - Checkly Pulumi Provider With Python

🚨 This project is still in very early stages and is not stable, use at your own

Checkly 16 Dec 15, 2022
Flask Sugar is a web framework for building APIs with Flask, Pydantic and Python 3.6+ type hints.

Flask Sugar is a web framework for building APIs with Flask, Pydantic and Python 3.6+ type hints. check parameters and generate API documents automatically. Flask Sugar是一个基于flask,pyddantic,类型注解的API框架

162 Dec 26, 2022
Flask like web framework for AWS Lambda

lambdarest Python routing mini-framework for AWS Lambda with optional JSON-schema validation. ⚠️ A user study is currently happening here, and your op

sloev / Johannes Valbjørn 91 Nov 10, 2022
A comprehensive reference for all topics related to building and maintaining microservices

This pandect (πανδέκτης is Ancient Greek for encyclopedia) was created to help you find and understand almost anything related to Microservices that i

Ivan Bilan 64 Dec 09, 2022
You can use the mvc pattern in your flask application using this extension.

You can use the mvc pattern in your flask application using this extension. Installation Run the follow command to install mvc_flask: $ pip install mv

Marcus Pereira 37 Dec 17, 2022
FastAPI framework, high performance, easy to learn, fast to code, ready for production

FastAPI framework, high performance, easy to learn, fast to code, ready for production Documentation: https://fastapi.tiangolo.com Source Code: https:

Sebastián Ramírez 53k Jan 02, 2023
A high-level framework for building GitHub applications in Python.

A high-level framework for building GitHub applications in Python. Core Features Async Proper ratelimit handling Handles interactions for you (

Vish M 3 Apr 12, 2022
Ape is a framework for Web3 Python applications and smart contracts, with advanced functionality for testing, deployment, and on-chain interactions.

Ape Framework Ape is a framework for Web3 Python applications and smart contracts, with advanced functionality for testing, deployment, and on-chain i

ApeWorX Ltd. 552 Dec 30, 2022
The web framework for inventors

Emmett is a full-stack Python web framework designed with simplicity in mind. The aim of Emmett is to be clearly understandable, easy to be learned an

Emmett 796 Dec 26, 2022
Pyramid - A Python web framework

Pyramid Pyramid is a small, fast, down-to-earth, open source Python web framework. It makes real-world web application development and deployment more

Pylons Project 3.7k Dec 30, 2022
REST API framework designed for human beings

Eve Eve is an open source Python REST API framework designed for human beings. It allows to effortlessly build and deploy highly customizable, fully f

eve 6.6k Jan 07, 2023
Serverless Python

Zappa - Serverless Python About Installation and Configuration Running the Initial Setup / Settings Basic Usage Initial Deployments Updates Rollback S

Rich Jones 11.9k Jan 01, 2023
cirrina is an opinionated asynchronous web framework based on aiohttp

cirrina cirrina is an opinionated asynchronous web framework based on aiohttp. Features: HTTP Server Websocket Server JSON RPC Server Shared sessions

André Roth 32 Mar 05, 2022