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)
Screaming-fast Python 3.5+ HTTP toolkit integrated with pipelining HTTP server based on uvloop and picohttpparser.

Japronto! There is no new project development happening at the moment, but it's not abandoned either. Pull requests and new maintainers are welcome. I

Paweł Piotr Przeradowski 8.6k Dec 29, 2022
NO LONGER MAINTAINED - A Flask extension for creating simple ReSTful JSON APIs from SQLAlchemy models.

NO LONGER MAINTAINED This repository is no longer maintained due to lack of time. You might check out the fork https://github.com/mrevutskyi/flask-res

1k Jan 04, 2023
easyopt is a super simple yet super powerful optuna-based Hyperparameters Optimization Framework that requires no coding.

easyopt is a super simple yet super powerful optuna-based Hyperparameters Optimization Framework that requires no coding.

Federico Galatolo 9 Feb 04, 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
The comprehensive WSGI web application library.

Werkzeug werkzeug German noun: "tool". Etymology: werk ("work"), zeug ("stuff") Werkzeug is a comprehensive WSGI web application library. It began as

The Pallets Projects 6.2k Jan 01, 2023
Lemon is an async and lightweight API framework for python

Lemon is an async and lightweight API framework for python . Inspired by Koa and Sanic .

Joway 29 Nov 20, 2022
Djask is a web framework for python which stands on the top of Flask and will be as powerful as Django.

Djask is a web framework for python which stands on the top of Flask and will be as powerful as Django.

Andy Zhou 27 Sep 08, 2022
Swagger/OpenAPI First framework for Python on top of Flask with automatic endpoint validation & OAuth2 support

Connexion Connexion is a framework that automagically handles HTTP requests based on OpenAPI Specification (formerly known as Swagger Spec) of your AP

Zalando SE 4.2k Jan 07, 2023
Quiz Web App with Flask and MongoDB as the Databases

quiz-app Quiz Web Application made with flask and mongodb as the Databases Before you run this application, change the inside MONGODB_URI ( in config.

gibran abdillah 7 Dec 14, 2022
Library for building WebSocket servers and clients in Python

What is websockets? websockets is a library for building WebSocket servers and clients in Python with a focus on correctness and simplicity. Built on

Aymeric Augustin 4.3k Dec 31, 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
Asynchronous HTTP client/server framework for asyncio and Python

Async http client/server framework Key Features Supports both client and server side of HTTP protocol. Supports both client and server Web-Sockets out

aio-libs 13.2k Jan 05, 2023
Bionic is Python Framework for crafting beautiful, fast user experiences for web and is free and open source

Bionic is fast. It's powered core python without any extra dependencies. Bionic offers stateful hot reload, allowing you to make changes to your code and see the results instantly without restarting

⚓ 0 Mar 05, 2022
Asita is a web application framework for python based on express-js framework.

Asita is a web application framework for python. It is designed to be easy to use and be more easy for javascript users to use python frameworks because it is based on express-js framework.

Mattéo 4 Nov 16, 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
Sanic integration with Webargs

webargs-sanic Sanic integration with Webargs. Parsing and validating request arguments: headers, arguments, cookies, files, json, etc. IMPORTANT: From

Endurant Devs 13 Aug 31, 2022
WAZO REST API for the call management of the C4 infrastructure

wazo-router-calld wazo-router-calld provides REST API for the C4 infrastructure. Installing wazo-router-calld The server is already provided as a part

Wazo Platform 4 Dec 21, 2022
APIFlask is a lightweight Python web API framework based on Flask and marshmallow-code projects

APIFlask APIFlask is a lightweight Python web API framework based on Flask and marshmallow-code projects. It's easy to use, highly customizable, ORM/O

Grey Li 705 Jan 04, 2023
O SnakeG é um WSGI feito para suprir necessidadades de perfomance e segurança.

SnakeG O SnakeG é um WSGI feito para suprir necessidadades de perfomance e segurança. Veja o que o SnakeG possui: Multiprocessamento de requisições HT

Jaedson Silva 1 Jul 02, 2022
Cses2humio - CrowdStrike Falcon Event Stream to Humio

CrowdStrike Falcon Event Stream to Humio This project intend to provide a simple

Trifork.Security 6 Aug 02, 2022