Skip to main content

An unladen web framework for building APIs and app backends.

Project description

Build Status Falcon web framework docs codecov.io

The Falcon Web Framework

Falcon is a reliable, high-performance Python web framework for building large-scale app backends and microservices. It encourages the REST architectural style, and tries to do as little as possible while remaining highly effective.

Falcon apps work with any WSGI or ASGI server, and run like a champ under CPython 3.5+ and PyPy 3.5+ (3.6+ required for ASGI).

What People are Saying

“We have been using Falcon as a replacement for [framework] and we simply love the performance (three times faster) and code base size (easily half of our original [framework] code).”

“Falcon looks great so far. I hacked together a quick test for a tiny server of mine and was ~40% faster with only 20 minutes of work.”

“Falcon is rock solid and it’s fast.”

“I’m loving #falconframework! Super clean and simple, I finally have the speed and flexibility I need!”

“I feel like I’m just talking HTTP at last, with nothing in the middle. Falcon seems like the requests of backend.”

“The source code for Falcon is so good, I almost prefer it to documentation. It basically can’t be wrong.”

“What other framework has integrated support for 786 TRY IT NOW ?”

Features

Falcon tries to do as little as possible while remaining highly effective.

  • ASGI, WSGI, and WebSocket support

  • Native asyncio support

  • No reliance on magic globals for routing and state management

  • Stable interfaces with an emphasis on backwards-compatibility

  • Simple API modeling through centralized RESTful routing

  • Highly-optimized, extensible code base

  • Easy access to headers and bodies through request and response classes

  • DRY request processing via middleware components and hooks

  • Strict adherence to RFCs

  • Idiomatic HTTP error responses

  • Straightforward exception handling

  • Snappy testing with WSGI/ASGI helpers and mocks

  • CPython 3.5+ and PyPy 3.5+ support

Support Falcon Development

Has Falcon helped you make an awesome app? Show your support today with a one-time donation or by becoming a patron. Supporters get cool gear, an opportunity to promote their brand to Python developers, and prioritized support.

Thanks!

How is Falcon Different?

Perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away.

- Antoine de Saint-Exupéry

We designed Falcon to support the demanding needs of large-scale microservices and responsive app backends. Falcon complements more general Python web frameworks by providing bare-metal performance, reliability, and flexibility wherever you need it.

Reliable. We go to great lengths to avoid introducing breaking changes, and when we do they are fully documented and only introduced (in the spirit of SemVer) with a major version increment. The code is rigorously tested with numerous inputs and we require 100% coverage at all times. Falcon has no dependencies outside the standard library, helping minimize your app’s attack surface while avoiding transitive bugs and breaking changes.

Debuggable. Falcon eschews magic. It’s easy to tell which inputs lead to which outputs. Unhandled exceptions are never encapsulated or masked. Potentially surprising behaviors, such as automatic request body parsing, are well-documented and disabled by default. Finally, when it comes to the framework itself, we take care to keep logic paths simple and understandable. All this makes it easier to reason about the code and to debug edge cases in large-scale deployments.

Fast. Same hardware, more requests. Falcon turns around requests significantly faster than other popular Python frameworks like Django and Flask. For an extra speed boost, Falcon compiles itself with Cython when available, and also works well with PyPy. Considering a move to another programming language? Benchmark with Falcon+PyPy first!

Flexible. Falcon leaves a lot of decisions and implementation details to you, the API developer. This gives you a lot of freedom to customize and tune your implementation. It also helps you understand your apps at a deeper level, making them easier to tune, debug, and refactor over the long run. Falcon’s minimalist design provides space for Python community members to independently innovate on Falcon add-ons and complementary packages.

Who’s Using Falcon?

Falcon is used around the world by a growing number of organizations, including:

  • 7ideas

  • Cronitor

  • EMC

  • Hurricane Electric

  • Leadpages

  • OpenStack

  • Rackspace

  • Shiftgig

  • tempfil.es

  • Opera Software

If you are using the Falcon framework for a community or commercial project, please consider adding your information to our wiki under Who’s Using Falcon?

Community

A number of Falcon add-ons, templates, and complementary packages are available for use in your projects. We’ve listed several of these on the Falcon wiki as a starting point, but you may also wish to search PyPI for additional resources.

The Falconry community on Gitter is a great place to ask questions and share your ideas. You can find us in falconry/user. We also have a falconry/dev room for discussing the design and development of the framework itself.

Per our Code of Conduct, we expect everyone who participates in community discussions to act professionally, and lead by example in encouraging constructive discussions. Each individual in the community is responsible for creating a positive, constructive, and productive culture.

Installation

PyPy

PyPy is the fastest way to run your Falcon app. PyPy3.5+ is supported as of PyPy v5.10.

$ pip install falcon

Or, to install the latest beta or release candidate, if any:

$ pip install --pre falcon

CPython

Falcon also fully supports CPython 3.5+.

The latest stable version of Falcon can be installed directly from PyPI:

$ pip install falcon

Or, to install the latest beta or release candidate, if any:

$ pip install --pre falcon

In order to provide an extra speed boost, Falcon can compile itself with Cython. Wheels containing pre-compiled binaries are available from PyPI for several common platforms. However, if a wheel for your platform of choice is not available, you can choose to stick with the source distribution, or use the instructions below to cythonize Falcon for your environment.

The following commands tell pip to install Cython, and then to invoke Falcon’s setup.py, which will in turn detect the presence of Cython and then compile (AKA cythonize) the Falcon framework with the system’s default C compiler.

$ pip install cython
$ pip install --no-build-isolation --no-binary :all: falcon

Note that --no-build-isolation is necessary to override pip’s default PEP 517 behavior that can cause Cython not to be found in the build environment.

If you want to verify that Cython is being invoked, simply pass -v to pip in order to echo the compilation commands:

$ pip install -v --no-build-isolation --no-binary :all: falcon

Installing on OS X

Xcode Command Line Tools are required to compile Cython. Install them with this command:

$ xcode-select --install

The Clang compiler treats unrecognized command-line options as errors, for example:

clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]

You might also see warnings about unused functions. You can work around these issues by setting additional Clang C compiler flags as follows:

$ export CFLAGS="-Qunused-arguments -Wno-unused-function"

Dependencies

Falcon does not require the installation of any other packages, although if Cython has been installed into the environment, it will be used to optimize the framework as explained above.

WSGI Server

Falcon speaks WSGI (or ASGI; see also below). In order to serve a Falcon app, you will need a WSGI server. Gunicorn and uWSGI are some of the more popular ones out there, but anything that can load a WSGI app will do.

$ pip install [gunicorn|uwsgi]

ASGI Server

In order to serve a Falcon ASGI app, you will need an ASGI server. Uvicorn is a popular choice:

$ pip install uvicorn

Source Code

Falcon lives on GitHub, making the code easy to browse, download, fork, etc. Pull requests are always welcome! Also, please remember to star the project if it makes you happy. :)

Once you have cloned the repo or downloaded a tarball from GitHub, you can install Falcon like this:

$ cd falcon
$ pip install .

Or, if you want to edit the code, first fork the main repo, clone the fork to your desktop, and then run the following to install it using symbolic linking, so that when you change your code, the changes will be automagically available to your app without having to reinstall the package:

$ cd falcon
$ pip install --no-use-pep517 -e .

You can manually test changes to the Falcon framework by switching to the directory of the cloned repo and then running pytest:

$ cd falcon
$ pip install -r requirements/tests
$ pytest tests

Or, to run the default set of tests:

$ pip install tox && tox

See also the tox.ini file for a full list of available environments.

Read the Docs

The docstrings in the Falcon code base are quite extensive, and we recommend keeping a REPL running while learning the framework so that you can query the various modules and classes as you have questions.

Online docs are available at: https://falcon.readthedocs.io

You can build the same docs locally as follows:

$ pip install tox && tox -e docs

Once the docs have been built, you can view them by opening the following index page in your browser. On OS X it’s as simple as:

$ open docs/_build/html/index.html

Or on Linux:

$ xdg-open docs/_build/html/index.html

Getting Started

Here is a simple, contrived example showing how to create a Falcon-based WSGI app (the ASGI version is included further down):

# examples/things.py

# Let's get this party started!
from wsgiref.simple_server import make_server

import falcon


# Falcon follows the REST architectural style, meaning (among
# other things) that you think in terms of resources and state
# transitions, which map to HTTP verbs.
class ThingsResource:
    def on_get(self, req, resp):
        """Handles GET requests"""
        resp.status = falcon.HTTP_200  # This is the default status
        resp.content_type = falcon.MEDIA_TEXT  # Default is JSON, so override
        resp.text = ('\nTwo things awe me most, the starry sky '
                     'above me and the moral law within me.\n'
                     '\n'
                     '    ~ Immanuel Kant\n\n')


# falcon.App instances are callable WSGI apps...
# in larger applications the app is created in a separate file
app = falcon.App()

# Resources are represented by long-lived class instances
things = ThingsResource()

# things will handle all requests to the '/things' URL path
app.add_route('/things', things)

if __name__ == '__main__':
    with make_server('', 8000, app) as httpd:
        print('Serving on port 8000...')

        # Serve until process is killed
        httpd.serve_forever()

You can run the above example directly using the included wsgiref server:

$ pip install falcon
$ python things.py

Then, in another terminal:

$ curl localhost:8000/things

The ASGI version of the example is similar:

# examples/things_asgi.py

import falcon
import falcon.asgi


# Falcon follows the REST architectural style, meaning (among
# other things) that you think in terms of resources and state
# transitions, which map to HTTP verbs.
class ThingsResource:
    async def on_get(self, req, resp):
        """Handles GET requests"""
        resp.status = falcon.HTTP_200  # This is the default status
        resp.content_type = falcon.MEDIA_TEXT  # Default is JSON, so override
        resp.text = ('\nTwo things awe me most, the starry sky '
                     'above me and the moral law within me.\n'
                     '\n'
                     '    ~ Immanuel Kant\n\n')


# falcon.asgi.App instances are callable ASGI apps...
# in larger applications the app is created in a separate file
app = falcon.asgi.App()

# Resources are represented by long-lived class instances
things = ThingsResource()

# things will handle all requests to the '/things' URL path
app.add_route('/things', things)

You can run the ASGI version with uvicorn or any other ASGI server:

$ pip install falcon uvicorn
$ uvicorn things_asgi:app

A More Complex Example (WSGI)

Here is a more involved example that demonstrates reading headers and query parameters, handling errors, and working with request and response bodies. Note that this example assumes that the requests package has been installed.

(For the equivalent ASGI app, see: A More Complex Example (ASGI)).

# examples/things_advanced.py

import json
import logging
import uuid
from wsgiref import simple_server

import falcon
import requests


class StorageEngine:

    def get_things(self, marker, limit):
        return [{'id': str(uuid.uuid4()), 'color': 'green'}]

    def add_thing(self, thing):
        thing['id'] = str(uuid.uuid4())
        return thing


class StorageError(Exception):

    @staticmethod
    def handle(ex, req, resp, params):
        # TODO: Log the error, clean up, etc. before raising
        raise falcon.HTTPInternalServerError()


class SinkAdapter:

    engines = {
        'ddg': 'https://duckduckgo.com',
        'y': 'https://search.yahoo.com/search',
    }

    def __call__(self, req, resp, engine):
        url = self.engines[engine]
        params = {'q': req.get_param('q', True)}
        result = requests.get(url, params=params)

        resp.status = str(result.status_code) + ' ' + result.reason
        resp.content_type = result.headers['content-type']
        resp.text = result.text


class AuthMiddleware:

    def process_request(self, req, resp):
        token = req.get_header('Authorization')
        account_id = req.get_header('Account-ID')

        challenges = ['Token type="Fernet"']

        if token is None:
            description = ('Please provide an auth token '
                           'as part of the request.')

            raise falcon.HTTPUnauthorized(title='Auth token required',
                                          description=description,
                                          challenges=challenges,
                                          href='http://docs.example.com/auth')

        if not self._token_is_valid(token, account_id):
            description = ('The provided auth token is not valid. '
                           'Please request a new token and try again.')

            raise falcon.HTTPUnauthorized(title='Authentication required',
                                          description=description,
                                          challenges=challenges,
                                          href='http://docs.example.com/auth')

    def _token_is_valid(self, token, account_id):
        return True  # Suuuuuure it's valid...


class RequireJSON:

    def process_request(self, req, resp):
        if not req.client_accepts_json:
            raise falcon.HTTPNotAcceptable(
                description='This API only supports responses encoded as JSON.',
                href='http://docs.examples.com/api/json')

        if req.method in ('POST', 'PUT'):
            if 'application/json' not in req.content_type:
                raise falcon.HTTPUnsupportedMediaType(
                    title='This API only supports requests encoded as JSON.',
                    href='http://docs.examples.com/api/json')


class JSONTranslator:
    # NOTE: Normally you would simply use req.media and resp.media for
    # this particular use case; this example serves only to illustrate
    # what is possible.

    def process_request(self, req, resp):
        # req.stream corresponds to the WSGI wsgi.input environ variable,
        # and allows you to read bytes from the request body.
        #
        # See also: PEP 3333
        if req.content_length in (None, 0):
            # Nothing to do
            return

        body = req.stream.read()
        if not body:
            raise falcon.HTTPBadRequest(title='Empty request body',
                                        description='A valid JSON document is required.')

        try:
            req.context.doc = json.loads(body.decode('utf-8'))

        except (ValueError, UnicodeDecodeError):
            description = ('Could not decode the request body. The '
                           'JSON was incorrect or not encoded as '
                           'UTF-8.')

            raise falcon.HTTPBadRequest(title='Malformed JSON',
                                        description=description)

    def process_response(self, req, resp, resource, req_succeeded):
        if not hasattr(resp.context, 'result'):
            return

        resp.text = json.dumps(resp.context.result)


def max_body(limit):

    def hook(req, resp, resource, params):
        length = req.content_length
        if length is not None and length > limit:
            msg = ('The size of the request is too large. The body must not '
                   'exceed ' + str(limit) + ' bytes in length.')

            raise falcon.HTTPPayloadTooLarge(
                title='Request body is too large', description=msg)

    return hook


class ThingsResource:

    def __init__(self, db):
        self.db = db
        self.logger = logging.getLogger('thingsapp.' + __name__)

    def on_get(self, req, resp, user_id):
        marker = req.get_param('marker') or ''
        limit = req.get_param_as_int('limit') or 50

        try:
            result = self.db.get_things(marker, limit)
        except Exception as ex:
            self.logger.error(ex)

            description = ('Aliens have attacked our base! We will '
                           'be back as soon as we fight them off. '
                           'We appreciate your patience.')

            raise falcon.HTTPServiceUnavailable(
                title='Service Outage',
                description=description,
                retry_after=30)

        # NOTE: Normally you would use resp.media for this sort of thing;
        # this example serves only to demonstrate how the context can be
        # used to pass arbitrary values between middleware components,
        # hooks, and resources.
        resp.context.result = result

        resp.set_header('Powered-By', 'Falcon')
        resp.status = falcon.HTTP_200

    @falcon.before(max_body(64 * 1024))
    def on_post(self, req, resp, user_id):
        try:
            doc = req.context.doc
        except AttributeError:
            raise falcon.HTTPBadRequest(
                title='Missing thing',
                description='A thing must be submitted in the request body.')

        proper_thing = self.db.add_thing(doc)

        resp.status = falcon.HTTP_201
        resp.location = '/%s/things/%s' % (user_id, proper_thing['id'])

# Configure your WSGI server to load "things.app" (app is a WSGI callable)
app = falcon.App(middleware=[
    AuthMiddleware(),
    RequireJSON(),
    JSONTranslator(),
])

db = StorageEngine()
things = ThingsResource(db)
app.add_route('/{user_id}/things', things)

# If a responder ever raises an instance of StorageError, pass control to
# the given handler.
app.add_error_handler(StorageError, StorageError.handle)

# Proxy some things to another service; this example shows how you might
# send parts of an API off to a legacy system that hasn't been upgraded
# yet, or perhaps is a single cluster that all data centers have to share.
sink = SinkAdapter()
app.add_sink(sink, r'/search/(?P<engine>ddg|y)\Z')

# Useful for debugging problems in your API; works with pdb.set_trace(). You
# can also use Gunicorn to host your app. Gunicorn can be configured to
# auto-restart workers when it detects a code change, and it also works
# with pdb.
if __name__ == '__main__':
    httpd = simple_server.make_server('127.0.0.1', 8000, app)
    httpd.serve_forever()

Again this code uses wsgiref, but you can also run the above example using any WSGI server, such as uWSGI or Gunicorn. For example:

$ pip install requests gunicorn
$ gunicorn things:app

On Windows you can run Gunicorn and uWSGI via WSL, or you might try Waitress:

$ pip install requests waitress
$ waitress-serve --port=8000 things:app

To test this example, open another terminal and run:

$ http localhost:8000/1/things authorization:custom-token

You can also view the the application configuration from the CLI via the falcon-inspect-app script that is bundled with the framework:

falcon-inspect-app things_advanced:app

A More Complex Example (ASGI)

Here’s the ASGI version of the app from above. Note that it uses the httpx package in lieu of requests.

# examples/things_advanced_asgi.py

import json
import logging
import uuid

import falcon
import falcon.asgi
import httpx


class StorageEngine:

    async def get_things(self, marker, limit):
        return [{'id': str(uuid.uuid4()), 'color': 'green'}]

    async def add_thing(self, thing):
        thing['id'] = str(uuid.uuid4())
        return thing


class StorageError(Exception):

    @staticmethod
    async def handle(ex, req, resp, params):
        # TODO: Log the error, clean up, etc. before raising
        raise falcon.HTTPInternalServerError()


class SinkAdapter:

    engines = {
        'ddg': 'https://duckduckgo.com',
        'y': 'https://search.yahoo.com/search',
    }

    async def __call__(self, req, resp, engine):
        url = self.engines[engine]
        params = {'q': req.get_param('q', True)}

        async with httpx.AsyncClient() as client:
            result = await client.get(url, params=params)

        resp.status = result.status_code
        resp.content_type = result.headers['content-type']
        resp.text = result.text


class AuthMiddleware:

    async def process_request(self, req, resp):
        token = req.get_header('Authorization')
        account_id = req.get_header('Account-ID')

        challenges = ['Token type="Fernet"']

        if token is None:
            description = ('Please provide an auth token '
                           'as part of the request.')

            raise falcon.HTTPUnauthorized(title='Auth token required',
                                          description=description,
                                          challenges=challenges,
                                          href='http://docs.example.com/auth')

        if not self._token_is_valid(token, account_id):
            description = ('The provided auth token is not valid. '
                           'Please request a new token and try again.')

            raise falcon.HTTPUnauthorized(title='Authentication required',
                                          description=description,
                                          challenges=challenges,
                                          href='http://docs.example.com/auth')

    def _token_is_valid(self, token, account_id):
        return True  # Suuuuuure it's valid...


class RequireJSON:

    async def process_request(self, req, resp):
        if not req.client_accepts_json:
            raise falcon.HTTPNotAcceptable(
                description='This API only supports responses encoded as JSON.',
                href='http://docs.examples.com/api/json')

        if req.method in ('POST', 'PUT'):
            if 'application/json' not in req.content_type:
                raise falcon.HTTPUnsupportedMediaType(
                    description='This API only supports requests encoded as JSON.',
                    href='http://docs.examples.com/api/json')


class JSONTranslator:
    # NOTE: Normally you would simply use req.get_media() and resp.media for
    # this particular use case; this example serves only to illustrate
    # what is possible.

    async def process_request(self, req, resp):
        # NOTE: Test explicitly for 0, since this property could be None in
        # the case that the Content-Length header is missing (in which case we
        # can't know if there is a body without actually attempting to read
        # it from the request stream.)
        if req.content_length == 0:
            # Nothing to do
            return

        body = await req.stream.read()
        if not body:
            raise falcon.HTTPBadRequest(title='Empty request body',
                                        description='A valid JSON document is required.')

        try:
            req.context.doc = json.loads(body.decode('utf-8'))

        except (ValueError, UnicodeDecodeError):
            description = ('Could not decode the request body. The '
                           'JSON was incorrect or not encoded as '
                           'UTF-8.')

            raise falcon.HTTPBadRequest(title='Malformed JSON',
                                        description=description)

    async def process_response(self, req, resp, resource, req_succeeded):
        if not hasattr(resp.context, 'result'):
            return

        resp.text = json.dumps(resp.context.result)


def max_body(limit):

    async def hook(req, resp, resource, params):
        length = req.content_length
        if length is not None and length > limit:
            msg = ('The size of the request is too large. The body must not '
                   'exceed ' + str(limit) + ' bytes in length.')

            raise falcon.HTTPPayloadTooLarge(
                title='Request body is too large', description=msg)

    return hook


class ThingsResource:

    def __init__(self, db):
        self.db = db
        self.logger = logging.getLogger('thingsapp.' + __name__)

    async def on_get(self, req, resp, user_id):
        marker = req.get_param('marker') or ''
        limit = req.get_param_as_int('limit') or 50

        try:
            result = await self.db.get_things(marker, limit)
        except Exception as ex:
            self.logger.error(ex)

            description = ('Aliens have attacked our base! We will '
                           'be back as soon as we fight them off. '
                           'We appreciate your patience.')

            raise falcon.HTTPServiceUnavailable(
                title='Service Outage',
                description=description,
                retry_after=30)

        # NOTE: Normally you would use resp.media for this sort of thing;
        # this example serves only to demonstrate how the context can be
        # used to pass arbitrary values between middleware components,
        # hooks, and resources.
        resp.context.result = result

        resp.set_header('Powered-By', 'Falcon')
        resp.status = falcon.HTTP_200

    @falcon.before(max_body(64 * 1024))
    async def on_post(self, req, resp, user_id):
        try:
            doc = req.context.doc
        except AttributeError:
            raise falcon.HTTPBadRequest(
                title='Missing thing',
                description='A thing must be submitted in the request body.')

        proper_thing = await self.db.add_thing(doc)

        resp.status = falcon.HTTP_201
        resp.location = '/%s/things/%s' % (user_id, proper_thing['id'])


# The app instance is an ASGI callable
app = falcon.asgi.App(middleware=[
    # AuthMiddleware(),
    RequireJSON(),
    JSONTranslator(),
])

db = StorageEngine()
things = ThingsResource(db)
app.add_route('/{user_id}/things', things)

# If a responder ever raises an instance of StorageError, pass control to
# the given handler.
app.add_error_handler(StorageError, StorageError.handle)

# Proxy some things to another service; this example shows how you might
# send parts of an API off to a legacy system that hasn't been upgraded
# yet, or perhaps is a single cluster that all data centers have to share.
sink = SinkAdapter()
app.add_sink(sink, r'/search/(?P<engine>ddg|y)\Z')

You can run the ASGI version with any ASGI server, such as uvicorn:

$ pip install falcon httpx uvicorn
$ uvicorn things_advanced_asgi:app

Contributing

Thanks for your interest in the project! We welcome pull requests from developers of all skill levels. To get started, simply fork the master branch on GitHub to your personal account and then clone the fork into your development environment.

If you would like to contribute but don’t already have something in mind, we invite you to take a look at the issues listed under our next milestone. If you see one you’d like to work on, please leave a quick comment so that we don’t end up with duplicated effort. Thanks in advance!

Please note that all contributors and maintainers of this project are subject to our Code of Conduct.

Before submitting a pull request, please ensure you have added/updated the appropriate tests (and that all existing tests still pass with your changes), and that your coding style follows PEP 8 and doesn’t cause pyflakes to complain.

Commit messages should be formatted using AngularJS conventions.

Comments follow Google’s style guide, with the additional requirement of prefixing inline comments using your GitHub nick and an appropriate prefix:

  • TODO(riker): Damage report!

  • NOTE(riker): Well, that’s certainly good to know.

  • PERF(riker): Travel time to the nearest starbase?

  • APPSEC(riker): In all trust, there is the possibility for betrayal.

The core Falcon project maintainers are:

  • Kurt Griffiths, Project Lead (kgriffs on GH, Gitter, and Twitter)

  • John Vrbanac (jmvrbanac on GH, Gitter, and Twitter)

  • Vytautas Liuolia (vytas7 on GH and Gitter, and vliuolia on Twitter)

  • Nick Zaccardi (nZac on GH and Gitter)

  • Federico Caselli (CaselIT on GH and Gitter)

Please don’t hesitate to reach out if you have any questions, or just need a little help getting started. You can find us in falconry/dev on Gitter.

See also: CONTRIBUTING.md

Project details


Release history Release notifications | RSS feed

This version

3.0.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

falcon-3.0.0.tar.gz (633.2 kB view details)

Uploaded Source

Built Distributions

falcon-3.0.0-cp39-cp39-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.9 Windows x86-64

falcon-3.0.0-cp39-cp39-manylinux2014_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.9

falcon-3.0.0-cp39-cp39-manylinux2014_s390x.whl (9.2 MB view details)

Uploaded CPython 3.9

falcon-3.0.0-cp39-cp39-manylinux2014_aarch64.whl (8.9 MB view details)

Uploaded CPython 3.9

falcon-3.0.0-cp39-cp39-manylinux2010_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64

falcon-3.0.0-cp39-cp39-manylinux1_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.9

falcon-3.0.0-cp39-cp39-macosx_10_14_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.9 macOS 10.14+ x86-64

falcon-3.0.0-cp38-cp38-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.8 Windows x86-64

falcon-3.0.0-cp38-cp38-manylinux2014_x86_64.whl (9.8 MB view details)

Uploaded CPython 3.8

falcon-3.0.0-cp38-cp38-manylinux2014_s390x.whl (10.2 MB view details)

Uploaded CPython 3.8

falcon-3.0.0-cp38-cp38-manylinux2014_aarch64.whl (9.8 MB view details)

Uploaded CPython 3.8

falcon-3.0.0-cp38-cp38-manylinux2010_x86_64.whl (9.2 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

falcon-3.0.0-cp38-cp38-manylinux1_x86_64.whl (9.2 MB view details)

Uploaded CPython 3.8

falcon-3.0.0-cp38-cp38-macosx_10_14_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.8 macOS 10.14+ x86-64

falcon-3.0.0-cp37-cp37m-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.7m Windows x86-64

falcon-3.0.0-cp37-cp37m-manylinux2014_x86_64.whl (8.1 MB view details)

Uploaded CPython 3.7m

falcon-3.0.0-cp37-cp37m-manylinux2014_s390x.whl (8.4 MB view details)

Uploaded CPython 3.7m

falcon-3.0.0-cp37-cp37m-manylinux2014_aarch64.whl (8.0 MB view details)

Uploaded CPython 3.7m

falcon-3.0.0-cp37-cp37m-manylinux2010_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

falcon-3.0.0-cp37-cp37m-manylinux1_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.7m

falcon-3.0.0-cp37-cp37m-macosx_10_14_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.7m macOS 10.14+ x86-64

falcon-3.0.0-cp36-cp36m-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.6m Windows x86-64

falcon-3.0.0-cp36-cp36m-manylinux2014_x86_64.whl (8.1 MB view details)

Uploaded CPython 3.6m

falcon-3.0.0-cp36-cp36m-manylinux2014_s390x.whl (8.4 MB view details)

Uploaded CPython 3.6m

falcon-3.0.0-cp36-cp36m-manylinux2014_aarch64.whl (8.0 MB view details)

Uploaded CPython 3.6m

falcon-3.0.0-cp36-cp36m-manylinux2010_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64

falcon-3.0.0-cp36-cp36m-manylinux1_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.6m

falcon-3.0.0-cp36-cp36m-macosx_10_14_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.6m macOS 10.14+ x86-64

falcon-3.0.0-cp35-cp35m-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.5m Windows x86-64

falcon-3.0.0-cp35-cp35m-manylinux2014_x86_64.whl (7.8 MB view details)

Uploaded CPython 3.5m

falcon-3.0.0-cp35-cp35m-manylinux2014_s390x.whl (8.0 MB view details)

Uploaded CPython 3.5m

falcon-3.0.0-cp35-cp35m-manylinux2014_aarch64.whl (7.7 MB view details)

Uploaded CPython 3.5m

falcon-3.0.0-cp35-cp35m-manylinux2010_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.5m manylinux: glibc 2.12+ x86-64

falcon-3.0.0-cp35-cp35m-manylinux1_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.5m

falcon-3.0.0-cp35-cp35m-macosx_10_14_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.5m macOS 10.14+ x86-64

File details

Details for the file falcon-3.0.0.tar.gz.

File metadata

  • Download URL: falcon-3.0.0.tar.gz
  • Upload date:
  • Size: 633.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for falcon-3.0.0.tar.gz
Algorithm Hash digest
SHA256 8d7c3d52ae4590ddfa0b3d9c75d44ab573340a5e78d72ee687712e757ac53929
MD5 0ebd5316cd7f59b9be4ea13650ea3a0d
BLAKE2b-256 f1592748d63922a46e040be06cd175a6242a33ade7839aac37f441544bb6d651

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for falcon-3.0.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 d334ad5a5d1abdd04df642f0cc1b29e2644736e081b9c06a7819b7b469ce21d9
MD5 36b28177e46cd84c2115aa1db355d119
BLAKE2b-256 1463f9c4d54fd7228dc0b8440740425921aef77f8337c71a958a65c643b7b5db

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp39-cp39-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 8.9 MB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for falcon-3.0.0-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1d6074a7f8d3f5b4cd6b10e0da5e6051e3b842fb4173f61a7bd9480c5d3830ce
MD5 c21ee66315aca5209874f812bbc556c7
BLAKE2b-256 bd0cba0185675f7c4cd1a491c3716789614862e5da3e66e9b640a6c82847d369

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp39-cp39-manylinux2014_s390x.whl.

File metadata

  • Download URL: falcon-3.0.0-cp39-cp39-manylinux2014_s390x.whl
  • Upload date:
  • Size: 9.2 MB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for falcon-3.0.0-cp39-cp39-manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 a0fcfdc88991c3b15b82126532be3ba7560d9855565a0892d7a0043c64ae0ba6
MD5 e8940e2374c8ed127a33c2a70ea5c877
BLAKE2b-256 bf6c8eadfc89d400d76e11e1c8a3a0dc0717539bac837d456ab0919ce5b4fa25

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp39-cp39-manylinux2014_aarch64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp39-cp39-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 8.9 MB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for falcon-3.0.0-cp39-cp39-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 60c078bd382336afbe355d23d278b34f9b993e54f1273c17825b7efd37d95e1f
MD5 16c5219bec99853d37dd69e5e5447410
BLAKE2b-256 09b422aab55ef313fa733fc856ba795adaa70254a053e1d0a73734073cbcaacb

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp39-cp39-manylinux2010_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp39-cp39-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 8.3 MB
  • Tags: CPython 3.9, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for falcon-3.0.0-cp39-cp39-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 756ceeb2eea5a90d9fdc5d98772b3588abcb51568f7196cb96a7530d4d9732d1
MD5 2c1b05284e1c5b2c82ee6ad340b6838e
BLAKE2b-256 ba9c6a4714405ce7a1ab71403a0dd808430329a08b6cf6155b5700935c27fbc2

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp39-cp39-manylinux1_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp39-cp39-manylinux1_x86_64.whl
  • Upload date:
  • Size: 8.3 MB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for falcon-3.0.0-cp39-cp39-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a6b4d78fef4b8a59333f6a08315bb757d38406e8f25b9289fe2d5f057e5431a6
MD5 5eab3e1c0a5eb77107f8d7e07de65395
BLAKE2b-256 4d4ac862ebc2db5dd9a87c5b122d8ace3c043fc94703e15f0603ad77ffee2724

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp39-cp39-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp39-cp39-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.9, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for falcon-3.0.0-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 80911b9d5d81a1214a6de7935596d19f95b5f6895497c788fe789d013ce55e0c
MD5 f775e5227b5ed5d88dbb4bf0ee9ac41c
BLAKE2b-256 98e199d23837ead269ed0a7d30590af27c4650966ab4053d55780ca355459165

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for falcon-3.0.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 46590d87f63f1acb51a54da76680971e2a882b4ffc075ee6eea8a9cda09e8b3e
MD5 efedc9965832ce2a3eabdd55597900b3
BLAKE2b-256 ff4f36f230c01d4ed81697ee78dadc27a6c6baa4efb6be05e9b9fa7aac32f384

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 9.8 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for falcon-3.0.0-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5c077bc5c7a2a813d5bc627033dcbd93e9942a412c51ceae99553c0eb1f57353
MD5 00e42169c809e602f7a26435768103d3
BLAKE2b-256 9533ac0e7c0bf19aec327109aa54377998822e11ad970c1caeb8dcb79acc6af3

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp38-cp38-manylinux2014_s390x.whl.

File metadata

  • Download URL: falcon-3.0.0-cp38-cp38-manylinux2014_s390x.whl
  • Upload date:
  • Size: 10.2 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for falcon-3.0.0-cp38-cp38-manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 5a6d5ea9b22f768306e51260d40260b6c5fa4eb42247a4af21a3ed477ce1891b
MD5 1582456b40363bb716c4be3bd87aba73
BLAKE2b-256 717e5fee51777a6987f985356e6ae1f6dc1238c4b7a2287ae4793c62185840af

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp38-cp38-manylinux2014_aarch64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp38-cp38-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 9.8 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for falcon-3.0.0-cp38-cp38-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 20fc821c9a9a9f60559db80c9dca5921e8717bafcc2d385b2add1d9fcda6b70b
MD5 f117f8d4e720ac9e0c75448a79e9b9ed
BLAKE2b-256 2a2736ac520b1edff547b8143a3191febcaa6b5306fcb2d1b18ddfea4bb626ee

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp38-cp38-manylinux2010_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp38-cp38-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 9.2 MB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for falcon-3.0.0-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 7d6bbe61057fca5856c80eac7f8b66e2c3f1c08ae316e00097e969a64f2b0317
MD5 26e0433ac77685164be6f8b028e82ffa
BLAKE2b-256 3c500b8b7d690d759e619578bd6e6f691160c069e3a58ed968b32ec76ed3c7d1

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp38-cp38-manylinux1_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 9.2 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for falcon-3.0.0-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 0f8dd3ac65843d783e3491ad9c822a469683cc759298cf772b1aef98cba7a0a6
MD5 96fb9e05370cb2876dd7633cd54cc142
BLAKE2b-256 fbb4607a798a89b73b8d11e5660de099b938f55da3dcf6c9e41adab71da3e3d2

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp38-cp38-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp38-cp38-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.8, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for falcon-3.0.0-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 4f3ca5f43e945963dd5947f8b5d73771362c94be726a6b55d7e98e37c242d739
MD5 dd3d65fbff356c788d9ed488af225d5a
BLAKE2b-256 05459c7952fc141c3648ea1bc497c6c048224ed5484527a791afdcd3ca0d8de9

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.7.9

File hashes

Hashes for falcon-3.0.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 e37531b2dc1552160813562e8c0ffd45e45e08d8c57c125257f227cb4a9bba55
MD5 fd9c97369be91d109033ccbb99b660e9
BLAKE2b-256 dae4e6729bc206488c1dc7040e359a64f8e0226c11ac034dac9d213524f5fd99

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 8.1 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.7.10

File hashes

Hashes for falcon-3.0.0-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1acb58a52edea4d85ec5cf80e8ae2d4a5c12d12c4f48f98ba921876241a7f485
MD5 d52280768afa8c4ca35ac9b5d780f3f3
BLAKE2b-256 1ca216777c7b65bb24ac9fc57d95a23a915b59dedad7802af243f88453db880e

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp37-cp37m-manylinux2014_s390x.whl.

File metadata

  • Download URL: falcon-3.0.0-cp37-cp37m-manylinux2014_s390x.whl
  • Upload date:
  • Size: 8.4 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for falcon-3.0.0-cp37-cp37m-manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 760e537d8420d2388b792a72cea995c7e97d15bae47bd8f23144d4e4b31f8c2b
MD5 11e115c89f77ca4836064039ad32224a
BLAKE2b-256 2ace78e28d586e6db34e52a32709af2bff8ae07f487e48819c12eb7aa4d31246

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp37-cp37m-manylinux2014_aarch64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp37-cp37m-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 8.0 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for falcon-3.0.0-cp37-cp37m-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 31ffc922664e591a617e4626aa8ce5be4249c5ac90c9a8bf51aec0c8136c4945
MD5 8745879ee0fcf9f575708ab2c8f5e471
BLAKE2b-256 0e1e6fb4006fc209fc8ccfe28c5476667c022ec6e3d417ae540f0018869776d4

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp37-cp37m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 7.4 MB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.7.10

File hashes

Hashes for falcon-3.0.0-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 c2a015ce7a81e24a3ce87461e01cac8607f71b76942edc2d65cdbe9e7b9eda64
MD5 27e8e2b5ea915c16ee5395bc62bd2071
BLAKE2b-256 90dbbacdd5ee1d6eac82b010da988bf0cd988bd095ee9029212759dd7cafc737

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 7.4 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.7.10

File hashes

Hashes for falcon-3.0.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 25b126a043a2af50d78d20da88d202d75f6db74a51922a7d091cd0c6cc3cf226
MD5 36a7814b6ec047a0717979e7e2fab9db
BLAKE2b-256 7b1d98ff7e3e53593883015e6b490e6c6e2158454818556743cc6590e2206276

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp37-cp37m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp37-cp37m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: CPython 3.7m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.7.10

File hashes

Hashes for falcon-3.0.0-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 18345b954e33bfc9f6307eba3e04036db0706cb74c7162ed306174fb334efd97
MD5 f727b5b6902cd9bf2c2d7df8619a86c7
BLAKE2b-256 08aa6d80cf61c4b1d64f54f51fe5312806cf5eedfd2b39167f965cf1bb9bfee7

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.6.8

File hashes

Hashes for falcon-3.0.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 bfc475355b110d355f007702fb5d5da98f96051541e24385d5d3a94f7f71d044
MD5 37dfb506d36b54892a3037c679c40276
BLAKE2b-256 8740b48fa2505606fd9bbcf7126cc34bc379c9aa0613cac58a17610cdd1aa9b6

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp36-cp36m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp36-cp36m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 8.1 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.6.13

File hashes

Hashes for falcon-3.0.0-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1f9cdda87bd0b44a5a4bf64c38899519b373aa5d12cb48e655a568b2003229d6
MD5 cb65dbb0275fd7b1bd7ee5c9557808db
BLAKE2b-256 be6ad0e0df606fcd6d57c5d24ec316e3832fc36db3e22ee7ce4f6cde71c883aa

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp36-cp36m-manylinux2014_s390x.whl.

File metadata

  • Download URL: falcon-3.0.0-cp36-cp36m-manylinux2014_s390x.whl
  • Upload date:
  • Size: 8.4 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for falcon-3.0.0-cp36-cp36m-manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 3ae8b3dfac661827f3f7adb00967b9713ff7d3cd6e145a211580e53bace1b90e
MD5 7665bf6e8420836bfcdbbc0bb4d402cd
BLAKE2b-256 14034830b062c8a59d14a94b833b06b55ac2e4ed7cc5eec8b104010844b5be71

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp36-cp36m-manylinux2014_aarch64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp36-cp36m-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 8.0 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for falcon-3.0.0-cp36-cp36m-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a934a65b7e0d15b44b0d25c17027a8a6b8f37e4320ad39318654673bb73e7d30
MD5 633020bebc99a5a69498550ab905a337
BLAKE2b-256 5f6f8c9a3a42216bb95fecc47df4ed20bf90167b09386601a11e4d8b7338d017

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp36-cp36m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 7.4 MB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.6.13

File hashes

Hashes for falcon-3.0.0-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 b875f1b293056ffe4a30f0b9e126a7b3a62e4fa4cc30f96a301d9a95636e0107
MD5 51f8d1dbe788954353add811d300b961
BLAKE2b-256 81d2b2d867a5ec5816afac5d3b1dcdda1a86e389620397d0ca55b6bc008d353a

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 7.4 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.6.13

File hashes

Hashes for falcon-3.0.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 0931f152083136f311bb4714d0896c45a9dbb6e41193524c1e46e49601f3cf1a
MD5 6b7b81372e2d025d2059fb676b81e328
BLAKE2b-256 6b3feb7a260514f81dfd6c09c465eaf661700169bf5b972112649e1921e1400e

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp36-cp36m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp36-cp36m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: CPython 3.6m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.6.13

File hashes

Hashes for falcon-3.0.0-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 3703e351ce9ff3234934e48d3eaa4f531fc599cea06c705ff4f424401dc8c782
MD5 e9def1e88b5f8b1de039d33fd31af9f2
BLAKE2b-256 6b00a38215e5e435ff3e3742eec7798ddd702dae4811b46dcc4d42d7f0586634

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp35-cp35m-win_amd64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.7.0 requests/2.25.1 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.5.4

File hashes

Hashes for falcon-3.0.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 0bb2cd012b54bbc09e721d6c1c469c9fc65801938796dda9cb478595d3fe0102
MD5 c4d9066c67ee487a881ab92e5774be6e
BLAKE2b-256 e6c4c09470f87dcec9270ea68ab1a8382e050da1bd8628554cf43d1c00a1814a

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp35-cp35m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp35-cp35m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 7.8 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.7.0 requests/2.25.1 setuptools/28.8.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.5.10

File hashes

Hashes for falcon-3.0.0-cp35-cp35m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 55aeee10314c71cd712856229327c958e852f6ebffaec4f15f7747f1fce2b768
MD5 701065ab29d16c66b631fbac0077ab73
BLAKE2b-256 44822eecc2920242d7c26ca3d876aeb8bb19c2661b4ef3d07a3402e1291d1494

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp35-cp35m-manylinux2014_s390x.whl.

File metadata

  • Download URL: falcon-3.0.0-cp35-cp35m-manylinux2014_s390x.whl
  • Upload date:
  • Size: 8.0 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for falcon-3.0.0-cp35-cp35m-manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 2bea37ecae785e5b414c4e6c2a28b0f7b7713603f4609751922b92363911f506
MD5 ef5cb83aa2bb61bdec164b04e2b75be9
BLAKE2b-256 e8953746e8e97d6587b1cdbad593e1d3535920f335a9b2d20e1dc08f8887cdea

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp35-cp35m-manylinux2014_aarch64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp35-cp35m-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for falcon-3.0.0-cp35-cp35m-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8e2425e23bdc93477b8f9eb762f6a8e0db8dcd4f5504e9fc16e9730214c8a7b1
MD5 56bd4518e68e69d612108292c9ae811c
BLAKE2b-256 1666e723d346f85521f27aa17a449e26faa4ef84db50feb9e08ed408d75baa82

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp35-cp35m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp35-cp35m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.5m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.7.0 requests/2.25.1 setuptools/28.8.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.5.10

File hashes

Hashes for falcon-3.0.0-cp35-cp35m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 71240ccb1ea844508b338e52c0bcc14dc26c5f69ac135f394e438fa7757c9932
MD5 58071499c12d7064ea010e8c165d9d39
BLAKE2b-256 e53b7a6aa119be6d7b79049d4cc3f31a11eec49f1756fa84a60226f2c5a2d378

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.7.0 requests/2.25.1 setuptools/28.8.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.5.10

File hashes

Hashes for falcon-3.0.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ed47e10a7f85458163bb9190c6f7202a3c101ebcd085f9972abc8912ddb50ee9
MD5 5864b6abfa4258ca42f83f64d81947fe
BLAKE2b-256 3f0873421cf04aa9e94ec4d26e973bb0eb2b007a7c9250a1c17428f7e4328170

See more details on using hashes here.

File details

Details for the file falcon-3.0.0-cp35-cp35m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: falcon-3.0.0-cp35-cp35m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.5m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.7.0 requests/2.25.1 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.5.10

File hashes

Hashes for falcon-3.0.0-cp35-cp35m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 a482859138954b6f08132ba2d8be3d7f8f9e1b15cf62e4835b724ad7040e857c
MD5 452b1ae5e16b6a168a7283e7e5e4092a
BLAKE2b-256 a2e7df5d2ec4689696ad8974d5881e7a22de8e8dcefc12616fd02a928e752125

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page