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.0.tar.gz (627.3 kB view details)

Uploaded Source

Built Distributions

falcon-4.0.0-py3-none-any.whl (587.0 kB view details)

Uploaded Python 3

falcon-4.0.0-cp313-cp313-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.13 Windows x86-64

falcon-4.0.0-cp313-cp313-musllinux_1_2_x86_64.whl (12.1 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ x86-64

falcon-4.0.0-cp313-cp313-musllinux_1_2_aarch64.whl (11.4 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ ARM64

falcon-4.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.9 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

falcon-4.0.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (12.3 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ s390x

falcon-4.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (11.7 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

falcon-4.0.0-cp313-cp313-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

falcon-4.0.0-cp313-cp313-macosx_10_13_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.13 macOS 10.13+ x86-64

falcon-4.0.0-cp312-cp312-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.12 Windows x86-64

falcon-4.0.0-cp312-cp312-musllinux_1_2_x86_64.whl (12.3 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

falcon-4.0.0-cp312-cp312-musllinux_1_2_aarch64.whl (11.6 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

falcon-4.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.1 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

falcon-4.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (12.5 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

falcon-4.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (11.9 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

falcon-4.0.0-cp312-cp312-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

falcon-4.0.0-cp312-cp312-macosx_10_13_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.12 macOS 10.13+ x86-64

falcon-4.0.0-cp311-cp311-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.11 Windows x86-64

falcon-4.0.0-cp311-cp311-musllinux_1_2_x86_64.whl (12.0 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

falcon-4.0.0-cp311-cp311-musllinux_1_2_aarch64.whl (11.7 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

falcon-4.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.0 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

falcon-4.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (12.4 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

falcon-4.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (11.9 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

falcon-4.0.0-cp311-cp311-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

falcon-4.0.0-cp311-cp311-macosx_10_9_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

falcon-4.0.0-cp310-cp310-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.10 Windows x86-64

falcon-4.0.0-cp310-cp310-musllinux_1_2_x86_64.whl (10.9 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

falcon-4.0.0-cp310-cp310-musllinux_1_2_aarch64.whl (10.5 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

falcon-4.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

falcon-4.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (11.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

falcon-4.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (10.7 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

falcon-4.0.0-cp310-cp310-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

falcon-4.0.0-cp310-cp310-macosx_10_9_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

falcon-4.0.0-cp39-cp39-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.9 Windows x86-64

falcon-4.0.0-cp39-cp39-musllinux_1_2_x86_64.whl (10.9 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

falcon-4.0.0-cp39-cp39-musllinux_1_2_aarch64.whl (10.5 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

falcon-4.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

falcon-4.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (11.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

falcon-4.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (10.7 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

falcon-4.0.0-cp39-cp39-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

falcon-4.0.0-cp39-cp39-macosx_10_9_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

falcon-4.0.0-cp38-cp38-musllinux_1_2_x86_64.whl (11.2 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

falcon-4.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.1 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

File details

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

File metadata

  • Download URL: falcon-4.0.0.tar.gz
  • Upload date:
  • Size: 627.3 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.0.tar.gz
Algorithm Hash digest
SHA256 2a63c7503aef1139cb4c9d3d0ab1a901870215c0ea9bc2740307df2b4a288854
MD5 41d81cda85e6d841ea5d3c78ac4aa387
BLAKE2b-256 ce10c14b45fcf3c78c8851441678b59d7d50cf6c5f8d0d816a4485d62b076ce1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: falcon-4.0.0-py3-none-any.whl
  • Upload date:
  • Size: 587.0 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 87d294700b0b62a3c5ed1f70a61e776d7ed4c9844324e61bac4a0b9c8af4927d
MD5 f8bbad9d167466e87bdf87e4903b55ad
BLAKE2b-256 3747433d614ed99eafdab13670988377f0a2e3929b573c62e43945f079430468

See more details on using hashes here.

File details

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

File metadata

  • Download URL: falcon-4.0.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.3 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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a37d03fa6644cf234b4c23f8950557c8e89aa4cfb4c733a935e504bade9ccad7
MD5 761d326d74d84d3f8fdd66ac7a76218b
BLAKE2b-256 155dfd3eed1e35126495b58b2fef9213d80eaf24c012b1b0ad16c624726b466d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 31aea205e03fa7cff583c0d7515e39cbf071831e0db234cf1158c15966e607fa
MD5 eea0598234fd36955e14f696f2462b37
BLAKE2b-256 ff1dde894ca16a004703ac08d218f1d5c745f97c6f87d9001f5d2ab34f8d7e0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 804add1eca47fda3aed77f9bb9fa6a013f2b41e374071faeddceff9428dc5a7b
MD5 e2bf5f59fcacf5b9760952e50dd3b399
BLAKE2b-256 673a71dc9a5d7c584f72448c9ba2dff7afc846011e0949d3af6e99ac0897f082

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 93a9bd863b72431bb9a70265b20dea0e6d1139b8bac943d8f64884af2834f17c
MD5 083cf03f12d2114e9ead6bb0c0dd1734
BLAKE2b-256 72efe8d0727cb16a17fb5a94c90dda677b4c2317d63acd2ed58993251118e543

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 87e8365ae3018db009ed907f5999243299fadcc2ee895198acf0628ffb0d769f
MD5 73463837999c4285e79e64719b203b26
BLAKE2b-256 9d3c8b2447a09d8bcdba1311404a95c4b142717182372f976f1bc80c1d0f3cad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 459511541b0b8638bb773a31ceb8a9b1beee341bf0902a45b7c24548b9fc58e6
MD5 f50abae70b6a3ba92c9aeb83162fd832
BLAKE2b-256 5ae865c428363d95cb001822767ee010bccbc01e6009df460e29c7bcd26ca3f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 860f1e0923d62cd3dd6fe14a7d19edd95106ddd1aa48304511da74b694930fa4
MD5 4e0bbf36464d4833e074c37bc5d888d2
BLAKE2b-256 deb4bfa31d482c2eb225a5d7b72da6a81b7b18529194f74c03425408defa61d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 e99c7d272625c348f74e511e19c6d9103809650dff7866dcaa37d0040f862005
MD5 e4cbb3aa9d0ed8826d15daeb161e2ba4
BLAKE2b-256 2515287abab1a3eec7e22812393f8e491016c1e797431cc1cd4356b7fa71dedc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: falcon-4.0.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.3 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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 13f83d8b5313e96ad047364430f9ff018903105409c0befdc64f6fa3c27f1dbf
MD5 f10a30e755fde19fcc9afc42acd6e4f4
BLAKE2b-256 54f736e254af1be3e6b5ae56e7b4524ffe85f54b738e8408bf572fc00d92c24e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b4ace5559c7792378a3a786989234004edc39d165080e38a300e315845f98dfe
MD5 a40742373f99ad6ea0cb2006e2c3206d
BLAKE2b-256 1076d4caf82abea3465f861dfe3752b3f991ff2990df4735feebfea3b9eb8067

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 05ba04f45c0ec8cc56138cb2b23ab364bd53e2be639ec0ef3041c282af8950e3
MD5 c83d5cf18b40d5e11d758fc23f9d103a
BLAKE2b-256 3b2411daeeb98d5d9642eaeaa3486a06134f745ac338039a2f03cc0aae714bf8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a94ca3cab737799ee61457295e5a1074395c11c5cb2d8cffc0969997bf979009
MD5 55e822f4eff2be8a34c2c22a365b0527
BLAKE2b-256 1d9bb4afcc91b92e33fe9f46da33d85faf456671f24cd8ddcf9b491f66b8d35d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 490b841e7cb264c7a2881d697033909005b08b48ccf7890f13de50d82eb6c935
MD5 5bfaef1197ee8a9debda0002293e7b7b
BLAKE2b-256 ae5064cf5a3717b72bc919771cba49d760092dfaf5eefc008ae8ec4da0876bca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 535f5abd605e5c263dfebaaec3e2e04f87743ea9d5c23f1ebc19431819c10ee7
MD5 edf9bbe00be568998bc05159e06fca64
BLAKE2b-256 75cf17f85a7b5e44a962857fd9060f1e2d2adf37555b2adfb03e80f3331be7b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a58d0bd9190c5adc75950ab745a9e39e79f83597ab019c47d5b2e714f4780f44
MD5 f02c7bc0c6c14476beaad94767e902cd
BLAKE2b-256 a9819f79b32c40581f2cc26236b06398d92972d45166256c2a0f83fde5dd483c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f279121d797d48fff99b31fe561653a60e4439e285b817894838f44e403b6e06
MD5 008f4038f1e891c0fb117e75b4344891
BLAKE2b-256 e8e3b1fd17a9e742f23bb256c7bcf3053eb12de6c3f96d81fa51ff2016907f85

See more details on using hashes here.

File details

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

File metadata

  • Download URL: falcon-4.0.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.4 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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6f7a0b8602a9796452c08240063e4e3e4884b86bbc126b04431c003be37e5373
MD5 255897a1f27832e5ac24f4dd4e1bc2d2
BLAKE2b-256 30b13e650a3ea86e4314e3edd9709140ae733a217d14cb1ffdd57ed255daf342

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 18a7daee294f77d9991be250018f9e22826e9f246b2618357597faf19e62a20d
MD5 09fe0e7e70b0587b27eb2371d53097c2
BLAKE2b-256 35bd13396d5256af16883fc8b6bd16d0f316b6cadeb22d351056edd79f2dabcb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b1de53b7737ab015711046f234d41c77894cfb03bbbcf370c21be858db8e441d
MD5 2a7bb904cb419e9d0fcc4fd278f81cb2
BLAKE2b-256 ec7bff5de4c3a17c85372ebfa32e7829ebea5162372357ad1340ca69a5ece481

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f112076ec76a48d226a81d0b05787eabfbf6f307c97f9a0b4141c55c0a384fd4
MD5 661456a53e6a1c6615c46507267bb772
BLAKE2b-256 bb88062b8c46600a0f6ab04589530ef9310ce182551262e642d9559e720f3d25

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 4c30fa42783e8ae8b688fb3a66fdf1fc5f52802be7bc69dd9b21f2929efcdcc7
MD5 a462e8c202543ed65872607c2453afc0
BLAKE2b-256 d9bc44f89954ac14d584cbdcce85bfe1c21da9cc357a211bcb1736e6e4295a9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ff149e5cf1a1ab1c74dc592fdf9a0caf17417efbebeb275f4102edeb9f74e0d8
MD5 68ae4c708b42098cc329e5b94218697b
BLAKE2b-256 f668ff24f6a87ea191758d69a321a1581fa900b59b10cd9a661c28075ee88b29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c1ea7d9c87dc4d948d42261db446e4456894925d552666ebd955b0bc9ccf98f7
MD5 2b935e136dbff72411912d53c3aa54e2
BLAKE2b-256 d80063ce8cfd67c411a59b77189b1bffef3ee7262abcd74677e2f44abc68ac1f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a4239c89232aedbff6be0ceb10ead5093fa0327234d99af1387330554bd88355
MD5 458ba54c2aeb9f62d13bd85877917172
BLAKE2b-256 332249101ea22f5847340d7cb5384159423cabea25e57f83ffa701917092e90c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: falcon-4.0.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.4 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.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 9e5bb70afdcf47c91a7b974e78dccd3315311873eb738cf99ccfb364439e8898
MD5 7a94c1b9418096506a17553f0b7c2723
BLAKE2b-256 fd6d160990cb3937459498766e5a81883d8aeb7fddc87654bcb19d2b03263b15

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d622658e49cfc7758e72437bf76e0c75ba4908e4c1ba6036f222a130fb18a9bb
MD5 95280f7048349737e6087d58750f2b21
BLAKE2b-256 90f06f52fa1a4e4cab454096fd62d386bccd7a3e1a3a3fe8ea0ae40249c21db4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5f4b5c23ba4da6964174b091c692f4d45d6c5884d4f0a38fdc2bfbddde0957ff
MD5 dba8ee9dbfd2e35e1345d1ff7426341b
BLAKE2b-256 4eba24ee93bb83446ffdf4d6f0e92c40391bfa09b002e3a643d04b4dbd1c9030

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0d611254ca1fca13cfdf8eeb72d44ad062b7c70501cd649065dda688a4268b9c
MD5 10a717ebe704df7cc6317ead991e614b
BLAKE2b-256 94680397e1df87923791bae1319f9fab8bc62a9476c19bb0e55e4a6e7e9023a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 9a40d256a931da930cb05c7d30312487ceaac535bce6cb5ee31dc756010113c6
MD5 4932f2359bb40ee2ec4aa228aabe08a6
BLAKE2b-256 218bff6560842541b0cd585d00792f9a463025e3996860949070657392454a62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 49cda80b389fbd6198873114cbd259029e67f43c11fe2cba2577a67f5b1b9421
MD5 fb2509f716080fab7e9227ece647bbe7
BLAKE2b-256 a3e821da48b3cc1ff0acef7712665162ed299c0f031c4116e77015e0c19ff569

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 37aea638333a9d07b540c0e36e4d4b486643bf99061b3ed0e46fc626250d4840
MD5 48a548d59d98c28a2860271ddec86d1d
BLAKE2b-256 c769990976720660c9ad71ffadc408c931c6e725fba2af60bb9a4cd6e435b469

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7f93f4bc55480f019446bfd962ae0422a9907d237b1ea52549c20437e7448c71
MD5 870c74e30434c1663ecd602999f15354
BLAKE2b-256 b5705ddb7aa4501cda5860df381d3b9af6ee83bf051d16c0cd8310ba6e62bb43

See more details on using hashes here.

File details

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

File metadata

  • Download URL: falcon-4.0.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.4 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.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 c136c597f3a155167382350440b089cd2e67e7c6504208fa0d0bc237b90895d2
MD5 10ca55d1559b844a4b01cdcf797a4795
BLAKE2b-256 124b990e38bf63c0bd326f34510cbca77578ed6fd04b439340ec6719a0211934

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6e5f28af0995297d0068b9f00d82fdd72403555a55c05b542fee99fc15a94deb
MD5 aee221e92bec75b70dafbb87a59f3db3
BLAKE2b-256 11dda07db6f8bdb4d2520f525ff581f78070dd18166a92929b9a581d71680e52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 283559eb0de0a17812ef8b5779b957517e8100840bc7641129ba0430be24bc30
MD5 f75c2ac91582cf280e72a022b38d32e9
BLAKE2b-256 75aa132fad82bb2f0004207d78dd2b674753735790d246f062351b9109d5edeb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a24680ca1c758a880e2e90f922ae96026a42145559ef683da5189c95855b00d6
MD5 26d5207aad4ac464d09a843638302704
BLAKE2b-256 bfb79b764bb5d78a9705fbed4f8a2815f113630248336fb9714e19631f1601c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 93682fabd2e99c0da58a83c5107756db685a2b43eda3db37b7a3ba2b1f93f3e9
MD5 e51b9cba2bacb99e87222bbce17c34a8
BLAKE2b-256 92e140c0ced410daf44bce740732099dd1325c0ba7bbe7b9ff86d0b61586631a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7dc254c10c0b7cecf3e10ea98fd3a0fe1d6fc414d016cbc12e2a495138b2322f
MD5 d9dc79ce219fbf554bf1d169a0a92cee
BLAKE2b-256 2f4461f937c4a7657c8be58bf530e1d127a04def7ce80718cd18ce52a5e7c2bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 508e5f065f65c192aa94ac5c0d1ff075a38fb33adf461054a6febc6bf0f7a4da
MD5 12839a7b546a333d2f295cb1412b361e
BLAKE2b-256 c0881015e4ed30e8f728e4b99d516ec226428e0d3c8f4569f5ec9143f24c7271

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8ef5aa23a843d4a260d297c9d57007822fb643e1f05c8cc7e487ae695fcc679c
MD5 a35683114f0320be616e0c42ae046a25
BLAKE2b-256 ec877dcbbfd326818773a1630d2a0f673bfa152389acb9980adbc23e6ac3bc39

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 102761c44d66fc48cbadda2b8bdbee5fe6a0d0eff502a8edb95cdf4763a538a5
MD5 fa510f43c3f7d84e6b052accc6d96a27
BLAKE2b-256 e718764be958f7c200d41dd5de28e6a40babf3b49711d50b2a0c14ecf99e5354

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5bbde06606db37cb8514ad7d84c9448e0115964127da9681495b9e03b995acb5
MD5 cef6b9adb651c5403f6ae5aa5b2aa27d
BLAKE2b-256 ca4af7ee4a1573fea43c818450fab9264500b4d5795aba825440f299c8edb36e

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