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.9+ and PyPy 3.9+.

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.9+ and PyPy 3.9+ support

A Big Thank You to Our Patrons!

LambdaTest 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.9+ is supported as of PyPy v7.3.10+.

$ pip install falcon

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

$ pip install --pre falcon

CPython

Falcon also fully supports CPython 3.9+.

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

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

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

falcon-4.2.0-py3-none-any.whl (324.6 kB view details)

Uploaded Python 3

falcon-4.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl (957.9 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

falcon-4.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl (951.8 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

falcon-4.2.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (966.3 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

falcon-4.2.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (979.1 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

falcon-4.2.0-cp314-cp314-win_amd64.whl (414.6 kB view details)

Uploaded CPython 3.14Windows x86-64

falcon-4.2.0-cp314-cp314-musllinux_1_2_x86_64.whl (865.0 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

falcon-4.2.0-cp314-cp314-musllinux_1_2_aarch64.whl (852.0 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

falcon-4.2.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (865.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

falcon-4.2.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (896.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

falcon-4.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (862.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

falcon-4.2.0-cp314-cp314-macosx_11_0_arm64.whl (418.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

falcon-4.2.0-cp313-cp313-win_amd64.whl (411.9 kB view details)

Uploaded CPython 3.13Windows x86-64

falcon-4.2.0-cp313-cp313-musllinux_1_2_x86_64.whl (866.9 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

falcon-4.2.0-cp313-cp313-musllinux_1_2_aarch64.whl (850.2 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

falcon-4.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (870.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

falcon-4.2.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (899.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

falcon-4.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (861.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

falcon-4.2.0-cp313-cp313-macosx_11_0_arm64.whl (417.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

falcon-4.2.0-cp312-cp312-win_amd64.whl (412.7 kB view details)

Uploaded CPython 3.12Windows x86-64

falcon-4.2.0-cp312-cp312-musllinux_1_2_x86_64.whl (884.6 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

falcon-4.2.0-cp312-cp312-musllinux_1_2_aarch64.whl (867.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

falcon-4.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (888.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

falcon-4.2.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (921.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

falcon-4.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (880.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

falcon-4.2.0-cp312-cp312-macosx_11_0_arm64.whl (417.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

falcon-4.2.0-cp311-cp311-win_amd64.whl (411.7 kB view details)

Uploaded CPython 3.11Windows x86-64

falcon-4.2.0-cp311-cp311-musllinux_1_2_x86_64.whl (845.4 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

falcon-4.2.0-cp311-cp311-musllinux_1_2_aarch64.whl (838.6 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

falcon-4.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (848.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

falcon-4.2.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (881.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

falcon-4.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (847.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

falcon-4.2.0-cp311-cp311-macosx_11_0_arm64.whl (417.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

falcon-4.2.0-cp310-cp310-win_amd64.whl (411.5 kB view details)

Uploaded CPython 3.10Windows x86-64

falcon-4.2.0-cp310-cp310-musllinux_1_2_x86_64.whl (819.5 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

falcon-4.2.0-cp310-cp310-musllinux_1_2_aarch64.whl (811.1 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

falcon-4.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (821.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

falcon-4.2.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (854.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

falcon-4.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (821.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

falcon-4.2.0-cp310-cp310-macosx_11_0_arm64.whl (418.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: falcon-4.2.0.tar.gz
  • Upload date:
  • Size: 665.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for falcon-4.2.0.tar.gz
Algorithm Hash digest
SHA256 c13e86e49696d6655411fe09473c34997e49ff45e8cdf7576297b0ca71ceac3d
MD5 d4d156864d62dfd93abc2fde90ad6fa0
BLAKE2b-256 ba155a4d8d62e8b338d2ec4430965b51b592695e859d0c6bf104afa1ce927eed

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0.tar.gz:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: falcon-4.2.0-py3-none-any.whl
  • Upload date:
  • Size: 324.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for falcon-4.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1d64afeca0dc03e7bed0202681dab4844544d8f6855c23e13f11a6eb10ac50ff
MD5 01e3f5a18b56cd14b64ee1b8138704f6
BLAKE2b-256 5927502e9778d40f5f8ff2979c40a019733bfc9aacf249a89633666708407899

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-py3-none-any.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6c132bb94351bddde993aad5147f9f3d9a942e2d93aece9d693723fb96fc8f51
MD5 3bbb9547475b382955857c6939e6c384
BLAKE2b-256 22637593a5212c62e9cda7b62b214f7fc73826ceaa5bb983e5536c7cdebf7ac5

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 aef6cd21a6e1b51c79038ff2e0b30746a68c7710307e5f5f0839338d7129577c
MD5 0f1ae7d78a0937548809c34d79bdeeba
BLAKE2b-256 f27ad8c713978a5f1b99a2431d06823dd84157c2824dcbf0f7f92157477c8e83

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bd8c19241aa66ecf494cd16d1cdc71de2cfbb3f76cafb7176e92708786001340
MD5 07e1f03f9fcd54c2909f6cbad9ace68d
BLAKE2b-256 2f294dfe7abea2a4c684ce8c1fd715e03eb4053f23af20a697cc9f078432bf8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 de67c7ed58a124f9f04337d254ec9db0e9fa0772d25f1c8f260c1c47878dc556
MD5 a3cb87f67139d18303c52d56757c0943
BLAKE2b-256 832c598bcac53375ad12e8691efdac9fa98df6118dba5810c20904aa9677ae63

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: falcon-4.2.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 414.6 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for falcon-4.2.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 e0bd6384952b9e12d3ae84675df4862bdbaa1111cd52db17d70cdf60f8abe4b6
MD5 a873a182af6cf8fea4f1ac0cf14824ef
BLAKE2b-256 b69c1dc2f1cae75163c4cd1b89a7fe95971ed139d41a4c0c8c80a98319ab8673

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp314-cp314-win_amd64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2ca9194a3e8a9eace3bc0efaef50b4244beabd75cdd716611e244646efc6828a
MD5 13c0b90f25b953e417834a883a67d6b9
BLAKE2b-256 35b54d0d70efd0f8fec641e7f500fdaab093b92062d103a4ca8979a17f81f6ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 402f38101b434415ecff72e5aa440c4f71ab45a879f455ab7d5655050e8ed218
MD5 4fc07c1e99622f574a478dd47b8722de
BLAKE2b-256 1fcd98edd3a09aede9b22add51b803e386b9a5199bc13b6b8532fdae6c71ed91

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp314-cp314-musllinux_1_2_aarch64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d0c501f8206b9bf361826bfe8f108c7368afcae64df3ed38589b9becefdfad63
MD5 be954b6a1549df6096e5099ae3556163
BLAKE2b-256 4f9b11c0abc444795087c8d60e070383531ce7d35b4acca59adf37a468f956f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 1f3ddffc958d4e625281a321164c77ebbf537c0f2f5290b06ee1144b90386a5f
MD5 028e68d2662ad99e20826e248e6836bb
BLAKE2b-256 8c7a5472153506db663531e50a4c47325eb9c837d6f0dbfccaa5fe54cc4dad8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 16533a0ade619cc8e7f670330d4c12fa0bff74de88bfb29f3d3cf1b2023d31b8
MD5 84e9236f59458e5135e42e8edaeab41c
BLAKE2b-256 2d66ff03c5f75c0106d68744585d099f6de4cd279338fb7f6cb2173b7ea77c07

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ae9304c60b5fe84ffb35e91e1a1f071543a303edb252999800531ea01133c0d4
MD5 a21fcc09fe48dd594d7f4fecf06395c4
BLAKE2b-256 fc3d768211a8fe05f3a5ebfa78b481e860acbd68fc813692384bf92134046564

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: falcon-4.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 411.9 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for falcon-4.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 584d000e9ffae5044f5fe6bf74d399edebb54926bb4a133d3caf03e529b8c616
MD5 361e50703101d2914cf309033c6645d7
BLAKE2b-256 1b0052149f315d7cc2c2ca1964906b35eb13eacc3d08192103b5829882902e77

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp313-cp313-win_amd64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for falcon-4.2.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f998402bf889cdd23cde29e7421469cdf2ef95afc71b2cdef7ed4957d0cd97f6
MD5 1e71dcb3a8ef233a9454b73d2a7e1206
BLAKE2b-256 411046a8dc6bbdb6eaca3ebac6afedc54084455cb928358b322ccbd815009f3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for falcon-4.2.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 801e2c77c72b1777d09be7a72163b38209f5f9e42930bfe3dfdf027e7d84d035
MD5 4ef324d47ee691baf5125d1afa2016ea
BLAKE2b-256 b3157251ec24c8adef5d53cbde701eb057ec63c1697fe8deb1bda4c2f39dc4d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4a54fa6c5f8a428a2e9b7ff7b936c566fe7bdcc50f965cea37fee9523eab1b74
MD5 8c63628ad628de8c58a82bee2c2a0c8a
BLAKE2b-256 10072a2b28e7170cedd085398a1024344aafb64645edd4d527f9c4055acde524

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 e0b1f69a97b3406feba07f41dde177b4c3dfa7046f6b977d4554772dc26252e7
MD5 8497a41e86a76b9ecf806063fcbe3fda
BLAKE2b-256 028e77f9a539f119874e3d17cfeb2317b1053ab20dc8a0a83d31519bff8eeb84

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cd2059695f107e867fd12141d05771d5c6cbecc30a135f7d91ef06bfea94f05e
MD5 4abade51f2653b9af189c0816cbef2fb
BLAKE2b-256 a45b2614b6b77708a4322bbf8f17ae4218cf05ebcb536e77376744d52da7bc6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for falcon-4.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 00363f9d9273a1281ca7aa1d9dbecea09c172e7bb08e0acefa0a0234a3f94593
MD5 9b0ecee5dc1061e4ebaccb456d199d68
BLAKE2b-256 c04e297ea3daeca5421e9a3ab10f18de6b8abcd226e8e10963a793de30826868

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: falcon-4.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 412.7 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for falcon-4.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d3c9882f8bf98bd2bf0ab2a9378c108dfba33a41625cfe2f8106e060258b52ef
MD5 07450ee7ce4098f0b8528af9c3ad100f
BLAKE2b-256 487c1458dcb1cfef59e5176740b8330b477163dc8eaeb733070614a280ae8692

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp312-cp312-win_amd64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for falcon-4.2.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 02d3b1fb18393ed55315e04533eefd3f86d85d294212bf49895c5768007e58c9
MD5 034f8651262e2c0b89ae52373c43e6d1
BLAKE2b-256 36a11c2dd65b0a4ac2143051e2cb847096832f387f6f6bdd235577e37e45b323

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for falcon-4.2.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5d89a61285b49fb503c30cb11203694aba6d3e0f2e7cc5cad3676ce221d3a514
MD5 3b55c8a8db36d2e69c127a1146bd6282
BLAKE2b-256 c725985d4aca30edc48f38d5074de7a97ed192aa688a573579fc246f1056e624

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 66db3bd0e51723b299e31746a6c28c063ee0048988d9ef2f1d05245fd97bebf8
MD5 f7d6034d5124c147dd70ae17bbfe3a4b
BLAKE2b-256 72fde34d2b9dc0a203d1322159ea1c30842d86e78b4be8bd3e55bebb00e10777

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 353c69fe78b23dfa4fbe0ae78aa7d1ec2fe1c9db3c46b5a3e20d8f731b483b65
MD5 cffebc0f6da4ac46cd07be4f6831dfe6
BLAKE2b-256 e3f5685b0521043041982f86cbf25763dc644b4ac7f8cbd5db451a22f9f5b134

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2f7d454888ed6238f6d00406bfedf976b05157e001fc6a18a473ec1e2be35e6c
MD5 d6e7af6ad0706229cd049a8f3d815489
BLAKE2b-256 3b99e09f0b10ab34223c56493002f0d93e51bfed110fabf58bccab097124b6b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for falcon-4.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 05832f66d54e178ae1df1dffe25c80a076448dc261cf6c50b271051b6cf56f0e
MD5 3e68b720587829f1b7c781f22391d86b
BLAKE2b-256 30b5e1c1a66e2347ea4ebcec4211ed8717faf31f6d6f2d61236427f4e447faf1

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: falcon-4.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 411.7 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for falcon-4.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 429974363bbb9ed4e98401c71be54f319559695e499238a51905895371c40fa7
MD5 f12116e67ed656d6adc752a41f89631a
BLAKE2b-256 d7da72322d0dbd004c30f5bbadb61d611972ceceae83a85d804ff3188816e217

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp311-cp311-win_amd64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for falcon-4.2.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9c93dd7770e3b1cc5f0bc08f23ec954ae00d1b408f7255efa806697fdf38b345
MD5 b5a5f975fd31178f0f5c7ee6ec761c7e
BLAKE2b-256 0ffaa64fa7e1e3948b5196dfddfd751d881fd8453ea058f0ec81d6deae9c0099

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for falcon-4.2.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f159b8334686716d61f7e5c82c897f2d21013f38904fe3aafe7d83c5fbd98a4d
MD5 e692b984baa2f317de69b4d183bb1128
BLAKE2b-256 b86dc2415ceef40ed6305fe5da2079d80bda7c0b256ffe2044a460e44e3e735b

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4e146967a4ff16c1a8f84971f5d2af81ba0b4ef13caf583e8094aa5ec9511d80
MD5 2f36f026954093b9b347cd688f5dba4b
BLAKE2b-256 1a7b1f1eabfe2124bfc3dcf32c876e8353eca184425d6a7d22f821fccac43847

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 99ea076c290d092d052d4ec132238bbe5c414bee30b42621f814133ad62aad93
MD5 232acad3e5709257b31f03af99f16067
BLAKE2b-256 94e233512e6604da942ca06785644066f7f943cf13a08843ca03d880d37f2665

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0ea18a598686b6a84cb59ce9afdd518f6bd5e79d9301290636645b5c81277621
MD5 fb3d369b97e3d4e67b69c2070da59b1d
BLAKE2b-256 2c40c08a7b2abf2bc72845babad487f1a05075f3e0b9d87ea606c810fdb0133c

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for falcon-4.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2faf74b996ad36fed2981a479f1d1d5e2f01b36f648746197285f38002022ad4
MD5 e87a8504815f2c1044dc0ffcfaf3f345
BLAKE2b-256 aa309a1a622d07e4373b0938abe60c58e99adfe307e2fbd8a2f7f23dcc5c9fea

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: falcon-4.2.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 411.5 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for falcon-4.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 03c80035378b8b03375f7a7debd11d3b33cdb5b732d882e65b580afe9f937832
MD5 7d1645fbacf42d8d679b3da493ea521e
BLAKE2b-256 c3ee7761999aa063a8febfb8b8e3946669fab2d036db5293d0164bfc380b2c51

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp310-cp310-win_amd64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for falcon-4.2.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9a0e2de9bd9a9b7d8644e44e49f26675fa753665b6a2ab3e9539c64bc636e398
MD5 e1441d9afd4e82108b825373aee5d024
BLAKE2b-256 b3d5cfa5476fe5a1bb157a86ddd89df734e42831d1d652ac3d7acf4d1253cadc

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for falcon-4.2.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bd62565115df5b8b0780713979c285f3d84d4300f8d1c367b0678315eac6db63
MD5 1b97b56bef1413f9258ecf96b73ba054
BLAKE2b-256 ebb651a53e6eceadaf542c6f0b7693353e679f4943dad8d90621783b5b5362dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp310-cp310-musllinux_1_2_aarch64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d045396a6d40f5d1bbe3eaf59496a382840db1c8841fe38ba8d45018fd3a184b
MD5 2531268cbfc3fb5acb4b4b2e7c5a72e8
BLAKE2b-256 6fb3aa238151021bbb61c3af52cdc30bda50f9e424e7e48aeef25badc544ed3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 05cd6dcf4cae4ad1cbbe6a11c9d63b35bb6f35422f778a292bc13f91f2504ad5
MD5 fb2a5f5e249ca9726f38c89ee6890726
BLAKE2b-256 2211bacc80a7a67853ecbe2fb8619ce95160459e9739c3c15c59c1b3a7eadb36

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file falcon-4.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bd6b0c04c5e8ee56ec3acec2c8603cfcc39658d7793ea86ecf058b094840c222
MD5 2e4d0ce761a43293bc27da9e3bb1ec3f
BLAKE2b-256 c0a53d8c85e2322ade0882768b713973a16e492e65f59d904a226c969ee1a86f

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for falcon-4.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8b179c9de6aa29eaa2ab49cac94eb304f279b66c7073be915cef5d6ae1f8b69d
MD5 bd25c969042eeb225b5f6c6c2108facf
BLAKE2b-256 ac191371930e6a4cfa06636963b9348030fe2c6c3432a8b0c39ab57c48aaa68b

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.2.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: cibuildwheel.yaml on falconry/falcon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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