Skip to main content

The ultra-reliable, fast ASGI+WSGI framework for building data plane APIs at scale.

Project description

Falcon logo

Build status Falcon web framework docs codecov.io PyPI package Python versions

The Falcon Web Framework

Falcon is a minimalist ASGI/WSGI framework for building mission-critical REST APIs and microservices, with a focus on reliability, correctness, and performance at scale.

When it comes to building HTTP APIs, other frameworks weigh you down with tons of dependencies and unnecessary abstractions. Falcon cuts to the chase with a clean design that embraces HTTP and the REST architectural style.

Falcon apps work with any WSGI or ASGI server, and run like a champ under CPython 3.8+ and PyPy 3.8+.

What People are Saying

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

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

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

“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.”

“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.8+ and PyPy 3.8+ support

A Big Thank You to Our Patrons!

CERT Gouvernemental Luxembourg Sentry

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.8+ is supported as of PyPy v7.3.7+.

$ 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.8+.

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 automatically compiles itself with Cython under any PEP 517-compliant installer.

For your convenience, wheels containing pre-compiled binaries are available from PyPI for the majority of common platforms. Even if a binary build for your platform of choice is not available, pip will pick a pure-Python wheel. You can also cythonize Falcon for your environment; see our Installation docs for more information on this and other advanced options.

Dependencies

Falcon does not require the installation of any other packages.

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
$ FALCON_DISABLE_CYTHON=Y pip install -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.HTTPContentTooLarge(
                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 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.HTTPContentTooLarge(
                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

Download files

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

Source Distribution

falcon-4.0.1.tar.gz (627.7 kB view details)

Uploaded Source

Built Distributions

falcon-4.0.1-py3-none-any.whl (318.1 kB view details)

Uploaded Python 3

falcon-4.0.1-cp313-cp313-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.13 Windows x86-64

falcon-4.0.1-cp313-cp313-musllinux_1_2_x86_64.whl (11.8 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ x86-64

falcon-4.0.1-cp313-cp313-musllinux_1_2_aarch64.whl (11.2 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ ARM64

falcon-4.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

falcon-4.0.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (12.0 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ s390x

falcon-4.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (11.4 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

falcon-4.0.1-cp313-cp313-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

falcon-4.0.1-cp313-cp313-macosx_10_13_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.13 macOS 10.13+ x86-64

falcon-4.0.1-cp312-cp312-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.12 Windows x86-64

falcon-4.0.1-cp312-cp312-musllinux_1_2_x86_64.whl (12.0 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

falcon-4.0.1-cp312-cp312-musllinux_1_2_aarch64.whl (11.3 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

falcon-4.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.8 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

falcon-4.0.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (12.2 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

falcon-4.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (11.6 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

falcon-4.0.1-cp312-cp312-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

falcon-4.0.1-cp312-cp312-macosx_10_13_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.12 macOS 10.13+ x86-64

falcon-4.0.1-cp311-cp311-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.11 Windows x86-64

falcon-4.0.1-cp311-cp311-musllinux_1_2_x86_64.whl (11.8 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

falcon-4.0.1-cp311-cp311-musllinux_1_2_aarch64.whl (11.4 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

falcon-4.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

falcon-4.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (12.1 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

falcon-4.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (11.6 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

falcon-4.0.1-cp311-cp311-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

falcon-4.0.1-cp311-cp311-macosx_10_9_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

falcon-4.0.1-cp310-cp310-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.10 Windows x86-64

falcon-4.0.1-cp310-cp310-musllinux_1_2_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

falcon-4.0.1-cp310-cp310-musllinux_1_2_aarch64.whl (10.2 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

falcon-4.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

falcon-4.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (11.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

falcon-4.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (10.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

falcon-4.0.1-cp310-cp310-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

falcon-4.0.1-cp310-cp310-macosx_10_9_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

falcon-4.0.1-cp39-cp39-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.9 Windows x86-64

falcon-4.0.1-cp39-cp39-musllinux_1_2_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

falcon-4.0.1-cp39-cp39-musllinux_1_2_aarch64.whl (10.2 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

falcon-4.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

falcon-4.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (11.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

falcon-4.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (10.4 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

falcon-4.0.1-cp39-cp39-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

falcon-4.0.1-cp39-cp39-macosx_10_9_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

falcon-4.0.1-cp38-cp38-musllinux_1_2_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

falcon-4.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

File details

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

File metadata

  • Download URL: falcon-4.0.1.tar.gz
  • Upload date:
  • Size: 627.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for falcon-4.0.1.tar.gz
Algorithm Hash digest
SHA256 fc0d2dd661dea0a61e149d81960a9cbd5b7bd0857749c8aa41fbd69c3a054755
MD5 52f6ca66eb192890b703e99699d9f8e7
BLAKE2b-256 291166692243aff20eec2269cbc553af1d30c029a6caebd3bd8bf301ba8b2aad

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-py3-none-any.whl.

File metadata

  • Download URL: falcon-4.0.1-py3-none-any.whl
  • Upload date:
  • Size: 318.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for falcon-4.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 529b1da23cb8274688ae7befdcb5edd9c88f3af18a02281f4ec00a1daab33444
MD5 d96d230efc53b81a47668f438c61a416
BLAKE2b-256 bfcb74884e0ac1a272727ec2ba7bcda2b70bcb786ea5d55d58b95547435c48b5

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: falcon-4.0.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for falcon-4.0.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 60c1579ee6ee473f5c97970191d961afa0f641826eee575cf5dda930763ec516
MD5 50d5c250c5a0dd74f5d555154328f101
BLAKE2b-256 5017d44b65e1ac7c05f7eaacd1fe049f2770c89b55bb662eec5c50da31677431

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f4ec582c2325982d4a3372e5a003d44d6600293c030a80b6be8c5a86e099b21c
MD5 0f73d63545c5ba18ae22e6f5da80f368
BLAKE2b-256 934d96607bd557c5ec8cad7bf251e3ff3abc7febce3de7dc2066a6737bcbb367

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 675d180fc2a2f6488af7eb86205a0ed01466851e1215fa2d8796ee9569d3821d
MD5 80599007f11b40309694e1890a97d767
BLAKE2b-256 0753a13410357182806fcf2dd42a3c89ade2d7a01002469a3cad1ef3347b120f

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8afdca95d56c7535f4f6a5b0a5352c84a348c187899bb69512e957566d897582
MD5 5a2fd27ccd59f70c7f7b3a8db0fca9c8
BLAKE2b-256 24d5de46081df7e5b68343bc435e868e563f16193dfcd3622abd47b5458e07e0

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 9be2f7db812dd04f3770512dbf00b59c109a4761dea4079b22d92fce35ed5e7f
MD5 fa19dcb49b9ca2229c2d3a624a581d8e
BLAKE2b-256 da8c00d8ddec8c6dc5177d8b66d67a212f31a469fea8b47efdaef44ab59033fe

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5feebae703e5caa4a6dafe5687cbcb5dbd9230a14d8e47b2435a6039b4de25f9
MD5 6f8adf21b0b99bfa9b256ff979d70744
BLAKE2b-256 8696cc44114a7b0e70d834a8a09dfe869e5995d77223e443278ba0cb842c30d1

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e3104b850cb01223531bbea4067ff13ef23693eeea4ea53409cf555ef8ca8c18
MD5 8d46d8320e451afd9ee88e307b5e7087
BLAKE2b-256 a8cb239e0d1848e6cecab2082b845c167f73034478bf1246c61744bf23b10048

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 e1b626ff2a1063eb353d962bdcede4c833d9aa6e12205879aedacd15c5283073
MD5 6884d02b14fb60840ddd5060110f33ea
BLAKE2b-256 96068dc785f5258d4f60a5a89c666a471dade1a0273e8a76d50b18fd32d2fa67

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: falcon-4.0.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for falcon-4.0.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9a8174aca71f462ec6f230b954d7d8778b4d770a7e433c91965736ecda237acf
MD5 fccafb6b4a3662cdfa19770db6e6e4bb
BLAKE2b-256 3b32745ab2a79004db46632543c883545cf1f3daa0032db1833f9816d5598196

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cb9607e8f2e549ef9cd071a56bd424b856b0938a5889d5bddb31f3a2df616bd0
MD5 9d69970caec0e714bc8270a4018615de
BLAKE2b-256 739157f2e1c97f95f0312663af94e92116f2411731745cf27b9898df2e72d453

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b6166cdf93932e9a1065b21664f1b3b274ad51493a901123b40eb7bef72178eb
MD5 4596941b458d2cb717af586788b2822f
BLAKE2b-256 eb9fa321abba223e9464ba41bf97e60fbf83f93019098d629dfbcd013b40445f

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 070756ee91b1b064fb8cb2c1b9465fa0aa610c913741ea07314fd0f570a1aa8f
MD5 f86a0fae0f64539148d0a09ef8770dfa
BLAKE2b-256 913f76990e9524e92dce699c74cbe05560318c6a4d9c7a35b84ccc82d639103a

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 bb8cbf785b42968ba3b024c2b1ca6481c2054077df8f642b25477e6b94e818f7
MD5 69e6a742f423fc59d461ba2476d478d0
BLAKE2b-256 a7ab0adf8f66e7256d36568681e32acba7065f2b9a35a1386f3d981f380d7673

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0abcc4c3cad27f1a1ed5b1718435ac81a3767f5f3f7c741db260fe030ea58750
MD5 ea6c69586dd10a952eb880f39ca8b5de
BLAKE2b-256 333687e55b81d2637b7cdfda076bc8d02d719df63d0037b3cb1ba1323194dc38

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 87cd1b10f82d0ac5c0b213f5056639a2073149f6114a334a29bd6bce1a1bc83a
MD5 d0976124b653e723ee38c55f74bf524e
BLAKE2b-256 c523acfdd6c6f9f5e8ba911f707fa9fa87f42addeb0354c106b8c90fcd42b2fd

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 50b18493d31dee9aeb44b446fb00cd4f40088cb3ebbb24c7860f16589f0cbd0c
MD5 7272119ec414a8f27b061d311a403b61
BLAKE2b-256 d6b66edaaa8b3a3402cb2051983ac720f933672d0066fb23c930cd8bf9f65d0f

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: falcon-4.0.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for falcon-4.0.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 062c4f5565bf519a00406a92e8336dd3ef3af95cde6426511168d135c23e43be
MD5 459f97a8065d1c81b6dccf39a601b9cc
BLAKE2b-256 ed857d5147277b13557f34002ffc5b4c2ce98c17686327f4dc33792c20b02ed7

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e082d178fba348294ed16b568ccb0ce470c218b51baa7610339881f716e5195f
MD5 8cda99f734a9d9008bd5f590be42c35d
BLAKE2b-256 5e944a68e0a0f065918f0a1757ca5fccad0a1822f2b4eb32db8172bd17769b73

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c25063f24b5a341a127214d396dee42e7f819992730d0b57c5d64542888d10b2
MD5 360cc79e63af0a9c184488c68eff6948
BLAKE2b-256 259d62b1cadde98506daa9b5696ad934ef339deddcb2479f1909c722dd873d0f

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 92466ccd7c4b42bb4da01f6a19fedd7b6575a5c4eff8be1c936d25c0de9aef5d
MD5 09a2abfbc532955d410ed4d311a5f7ad
BLAKE2b-256 7fde4672a60370ff1889f2ea8e40842c1baa5ad690e62ceca9a78d391319ca61

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 3950cc1f989a212aef05ffeb01e7d08fc5c50e682784ced2a2f68d7398b4643d
MD5 999c286fe8e54535b47fc2a8a872bedb
BLAKE2b-256 7b199315bac9c69b34a3da67c0bf14cd1760ea208ad9d033bc200c3b876e8c08

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dc7c9d8c262a42ad6e49b89a7314516551219b713c369d4c49f51d32c4e364ad
MD5 de37b958401fdfbf6dab028331c02850
BLAKE2b-256 ae03495f55062fb7dcdcd3ca6ffab0a331a76e7783aa13719ebe1dec75e26652

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 275daab307281bf33efdbc97a720e517b68c50e6bbe9ce2db3e8548dc9e9b672
MD5 e518b08ce2d5c940ec6fe18513f87937
BLAKE2b-256 3342f2efb56363078baf64dab05e0879b2893019e616aae0c89b75c92da05687

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9b45ea9cd48e0968144b98802652b08ba7356f91126d334fa25080a453b632f7
MD5 57e5fc4c0ef2e802a7ec731e4402eefd
BLAKE2b-256 bb1e948285f24bb755c8eefd43b4cbfc24bbe833c7f31a23675182cf2e0c7d85

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: falcon-4.0.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for falcon-4.0.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a748b47750f0aaa1373d0b646a43f5d35c1c399bc98b4c42fbb3f57cf1562f10
MD5 a75d6294a13bbbed02b2a82329a7f671
BLAKE2b-256 918700085c21808a480cf166691296bd7d1345dc0404b3c226535ed55304c518

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2ec7b00d6439e1e69e0efe0b3c244401e19408822b14bb2914384837b9275e64
MD5 3102eb736bd3a1e5eeb813040f8e5621
BLAKE2b-256 88ea50252401f9fbc5dab78518af90636146670af57df11ba28bd8a6a317a9bb

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fe5c10ab6dc75d2cf2d37ea55e9f138e5084a0881c282efe95748541395ba353
MD5 e3d5ffdb94f873e7f91bd0dd72adae69
BLAKE2b-256 a7a20969fbaca7266b784d5d3c1609c6d73c5f02cdf99d4980a97d1ed398eb47

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0b9a5691e3b7a492ad56949323f9420c57e3305a43d3f2938a00f2df073a3a80
MD5 18f84b9c1a7d55cb6f4506ed6f385a49
BLAKE2b-256 0649b7cbcaf774b3f56e2a2d8ac363389f5a9375257acc1d4541ba0f53962d49

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 4f67dec6ad91fe0a9009b8372d96e64013d8cf06d2915470c7ffb5cd607fd978
MD5 2c1681150bd47a45207201db55939448
BLAKE2b-256 ba3a9d0e40b74ac912975668218d30d1966804635d7a5cedbce2ae24d215000e

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c5339ab960cb210516843717f3206e06f105345bc6675da1f9fb5f1815df70b2
MD5 20286d1c197b54d145f70bbf7fbc6e4e
BLAKE2b-256 d22dcb0a29d27d64f4568f2e158e45af7cb160e5d5e43158b871e4232406ad2d

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 32e56700a0b248b119e20d338ed8777f05410775712f858861bc06e48577827f
MD5 c451d7916c6eb0a794e4ff6582b1f855
BLAKE2b-256 7bf31d67be9dcdd2d8ae582f322a0b1d2bd8b5cfff3c1c31623901482f8c2c07

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 66780774767c631243d73a6e3267e39eaeda2c4e2f68d5c89786269de80efcfa
MD5 48dacfb4c8003d672ba5ada294685ced
BLAKE2b-256 902cbffc30dc955125c9f8677e3e062ead115be06a6c0efaab886b071b891a32

See more details on using hashes here.

File details

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

File metadata

  • Download URL: falcon-4.0.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for falcon-4.0.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 6dc79cc951539c0da6d88d46a8c8fc882cb1c764e9fbcfce062c7e1ee2e91df7
MD5 1b5e39c81b7785338c06af70e15e8e6f
BLAKE2b-256 3012a4c8a50018aed125c2abf0e4b337a28da927ab5105717929ba31f3ad0ee6

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 451a746cfff628c08bd0d396881d15c3d39bd900eee1848e7bd1a4bf9847589a
MD5 5f98c75677a2114eb49b2973b37cbea9
BLAKE2b-256 6c6a46f9da4c6da4cdae3ed73741c6fb18f7d873a8f49ede533e381f67021b20

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5bf685061fd5e5c44d8c4c1e98bfe39de4e9385af943e46e4df23de20fdc727d
MD5 003b4585b78af72c1d1a538d2eefb6c1
BLAKE2b-256 0cba8fa903bf42b223683d55dbbade5ca47d99ac75467ef7001250a246a0349e

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e8c7f257500d1a3444908d37ee4dc4bf78864141badafa11017d7ee1bf94a0b4
MD5 6304dfb8237dfcaadd3bc1960555e6e9
BLAKE2b-256 1d7e8f99d39d3265619570a254c7a551eb1d10f9466805b480385a4572359d1b

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 a5e66897760842ee86fd7936b1f97f62402af90acb76d17c301517bca2042077
MD5 2fc600bca2bc5e9c2e9a713bbf0ed380
BLAKE2b-256 bb9ffe8205248d0031672fcd9cec4c90721b2947acba0d9cfd4a26cfa1b56b16

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b3e92ac6808712d6e924d62e859651b8bf966364d40e07dc306be8926269a488
MD5 9de125fd718b33e0f716acd3acc3b62d
BLAKE2b-256 419a03d55515aa651772609257e99086a913fa52005fb0eaf69149a079702b27

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5ca8d10851d74071355626c75621a6e723f793176e9f9aa8b5578d1e4db524b0
MD5 a5fa537a4424184d25abd6dbe9f6e2ba
BLAKE2b-256 23bca7e026eef54bbfedee7c57d052f18a492c08d563cb8825b3cb9428387be7

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 96051598e731412080b9fb946e70d6c87978e6398101fe1621e2e39ccc1405b3
MD5 2d65da3d19cb4fb8ee2527e168b88744
BLAKE2b-256 897f9e275fb862858687eb3595828923ee16f335f6a27c220912c34d914e550e

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cccc222a1c8d7c7bf032c67e2bf9b89cc4f90de65d3a73b1485522ed59a6b45a
MD5 d903764e53485bfb554d647a7b3ca362
BLAKE2b-256 bd50c37e5ef932aac5529ee4c56dc074b88a0ea0c1e91f9c59dc6ce254956db1

See more details on using hashes here.

File details

Details for the file falcon-4.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ecfb5751c162a2f1cbd56696a627584d4516957d9d88249f72f80736dcdb8134
MD5 1207b0485182f4581b00e6148f30e66e
BLAKE2b-256 d656b71fd70e870fbf682558222cd3bfe82705156223be2c0a22a04d5ebd79ed

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