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!

TestMu AI 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 requests

import falcon


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(req, resp, ex, 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 = falcon.code_to_http_status(result.status_code)
        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.bounded_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 = '/{}/things/{}'.format(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.3.1.tar.gz (687.4 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.3.1-py3-none-any.whl (332.7 kB view details)

Uploaded Python 3

falcon-4.3.1-cp314-cp314t-musllinux_1_2_x86_64.whl (965.5 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

falcon-4.3.1-cp314-cp314t-musllinux_1_2_aarch64.whl (960.9 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

falcon-4.3.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (973.5 kB view details)

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

falcon-4.3.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (988.0 kB view details)

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

falcon-4.3.1-cp314-cp314-win_amd64.whl (417.6 kB view details)

Uploaded CPython 3.14Windows x86-64

falcon-4.3.1-cp314-cp314-musllinux_1_2_x86_64.whl (874.4 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

falcon-4.3.1-cp314-cp314-musllinux_1_2_aarch64.whl (862.8 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

falcon-4.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (875.9 kB view details)

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

falcon-4.3.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (905.8 kB view details)

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

falcon-4.3.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (872.7 kB view details)

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

falcon-4.3.1-cp314-cp314-macosx_11_0_arm64.whl (426.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

falcon-4.3.1-cp313-cp313-win_amd64.whl (415.6 kB view details)

Uploaded CPython 3.13Windows x86-64

falcon-4.3.1-cp313-cp313-musllinux_1_2_x86_64.whl (875.6 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

falcon-4.3.1-cp313-cp313-musllinux_1_2_aarch64.whl (859.6 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

falcon-4.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (880.2 kB view details)

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

falcon-4.3.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (909.7 kB view details)

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

falcon-4.3.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (870.0 kB view details)

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

falcon-4.3.1-cp313-cp313-macosx_11_0_arm64.whl (425.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

falcon-4.3.1-cp312-cp312-win_amd64.whl (416.6 kB view details)

Uploaded CPython 3.12Windows x86-64

falcon-4.3.1-cp312-cp312-musllinux_1_2_x86_64.whl (894.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

falcon-4.3.1-cp312-cp312-musllinux_1_2_aarch64.whl (877.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

falcon-4.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (898.3 kB view details)

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

falcon-4.3.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (930.2 kB view details)

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

falcon-4.3.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (889.5 kB view details)

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

falcon-4.3.1-cp312-cp312-macosx_11_0_arm64.whl (426.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

falcon-4.3.1-cp311-cp311-win_amd64.whl (415.6 kB view details)

Uploaded CPython 3.11Windows x86-64

falcon-4.3.1-cp311-cp311-musllinux_1_2_x86_64.whl (855.1 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

falcon-4.3.1-cp311-cp311-musllinux_1_2_aarch64.whl (847.7 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

falcon-4.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (857.4 kB view details)

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

falcon-4.3.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (889.6 kB view details)

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

falcon-4.3.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (856.2 kB view details)

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

falcon-4.3.1-cp311-cp311-macosx_11_0_arm64.whl (426.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

falcon-4.3.1-cp310-cp310-win_amd64.whl (415.6 kB view details)

Uploaded CPython 3.10Windows x86-64

falcon-4.3.1-cp310-cp310-musllinux_1_2_x86_64.whl (829.2 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

falcon-4.3.1-cp310-cp310-musllinux_1_2_aarch64.whl (820.2 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

falcon-4.3.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (831.0 kB view details)

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

falcon-4.3.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (862.6 kB view details)

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

falcon-4.3.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (830.2 kB view details)

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

falcon-4.3.1-cp310-cp310-macosx_11_0_arm64.whl (426.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for falcon-4.3.1.tar.gz
Algorithm Hash digest
SHA256 b5081be62f1e2d4f5140f4bad6993fd2bf8b1e503ee7261f56d324b87e41a67a
MD5 f6ed9db875cb6ea8d26791b5345cb0a6
BLAKE2b-256 a002a51af369a4feded77801d744f2d4669c7fa0a294bc117acf6ee06439937b

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1.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.3.1-py3-none-any.whl.

File metadata

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

File hashes

Hashes for falcon-4.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5402602d14bc426afc01c388538f2ad402ac4c8c2477415dfe972a2deee17248
MD5 03457adb0fbbd5f2fb1a37bb6a5537f2
BLAKE2b-256 daef5790e74a7b39d2c085554f347be22a1882649a29a7a65e9c81bfaf9e8fc6

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2bb8cb5c4e5cfb7819169f3bd11683ca9ef57e0169f9fee0189d0a1b71af6b77
MD5 3bf170e9752ccdd7a58da957a1e59132
BLAKE2b-256 59da99632e285b4622aa9687bac3e682270b09f9f857309158b9668582d71297

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9c78fdd7fa7c39f9e179c494716efb5c75b476938078e83a7ff6b247d461b64a
MD5 6025a160e07111260feee1b40ee8707f
BLAKE2b-256 30f341a4c8fe25af0f7f84b437b87d2b654387bc2a1efcae8076c33079651a7d

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3f4cdd80ffd112766e3e53a166b9f46218bebb3619dd2abeaf4e618386a0cfec
MD5 df6e95e42514051684414edbb6b4e31e
BLAKE2b-256 f1615caa5986123dc0378a0f296be251502543c55f7d98a06647ff050eb57772

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b76706dcede435bbf6dcbbde8e63ce223454e379f9f0463d3d686c10a9b2c844
MD5 682b2053895798373c0a5872f343c3aa
BLAKE2b-256 927dd5dd88d6afcf5dade4090115635d34a78fdacede7c8deff6636e8d3aa6d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp314-cp314-win_amd64.whl.

File metadata

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

File hashes

Hashes for falcon-4.3.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 1d8d54db0fa01d232c05cc16e17dd69f76628789afac49beef85fcad61af1668
MD5 44ad3ddf1f0daa481f1d3dd59c2f1791
BLAKE2b-256 1121a9b295702898c688d7c0f5aaed4d33dcd26ac1f47683d27f55dcaccc9e1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9449bc13e0f8ebaedf80a1ce2344d7935183d45680a9fd75057e40fa0ebc5409
MD5 a811f695b0ed8080abe94c84c13a2ff4
BLAKE2b-256 eb07aa1e2be6c63306cba060cec3500f047b041b4f26129ed352ee5a02f3c86a

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 318837add4ec1ad04a28d507911985f2b08cfcb56b34b69eb87188bd98e017c0
MD5 de98f4786d12e68e27af35e28efe838a
BLAKE2b-256 0efafc02220e7ab96fb7fec86c72e5ba317732cebb3a088986d32584e64a0061

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 761c79d34480e3f9fe4cd89bc82fa554b8d54a56810f796e5cddc5b8314780a4
MD5 5816ff4a70390ba04e6106666948c9e3
BLAKE2b-256 217368bfa5e7db8a039a71e7c0e99c067aa192c4eeddaad8427c38a1ec4bb584

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 3504fa4c63d2ab892434b1375706b6f89d8ca73488cc1a69976562928d5a658f
MD5 0e8b5277c096a431a3adf19d229666a6
BLAKE2b-256 4c7072d281b4181851e8e9f4bb8d2fd8bf3b35c3ecc269358b67bf24cb8f0388

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 974a4f8efc0b33268ae56dd4379c4386bd7f7c8b3635c236a9289bea1e899c17
MD5 552b7a34ff964b750b769a05a0b13c40
BLAKE2b-256 9eeb7f711c2be80eb8a297727ab17ce5dfa013a3b6275c7d8a9b23a9a27e19f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7baf12d82e48998efdb6a270d384ac18bd3ec12665ca4356498c35a707e37359
MD5 451641dc882e8c946f96e21f68bf1880
BLAKE2b-256 995468a589193349f7db5c25ccc0823b22e5395ad7325551e20590680eecbddf

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp313-cp313-win_amd64.whl.

File metadata

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

File hashes

Hashes for falcon-4.3.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3648849d0a0426d571ad846aa20a5cb20718db3b040447ffc6c4436de728a9a7
MD5 dcda4eac4d658e024b792e3187df6b1b
BLAKE2b-256 93a0f9f1d46d7ba5fa4de5bdb71fe1ca53690458a54909fdf1a98a97231c102c

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2ed6e8e2a89ea1fc5cb9ecddd488ea0c89321f852390a1be31ef44034005b565
MD5 31060967223a043b972438fa572a511b
BLAKE2b-256 b85016605e42475dc363ec74007bc017262dcd06660ca5a6c3110caf1af2bd06

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c99f7f8d50ac3240182ad2f5ef22dee1d1852762ba594c7029f7b65d804c2057
MD5 aaf0b38c2a21e1acc3e79c3b42071776
BLAKE2b-256 d0136e15639ac0e0e20940fa66087411e3e4b964f6da9c72f8a684c65d3d0774

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ed2566579cda476dbceddc29d356c6bfd56501d9109ac4d3eacd1f994653b9ba
MD5 45fbf0ee3861072953996a9003b7e9d7
BLAKE2b-256 bbf3c930cf8309c4e46e50de8c29d5023d3fe8c307dbb9d146322e8ab9cab9c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 7b9462c55ee6b83f6897361b711649c3981d3cc31dc90b1efca18e16bba4c872
MD5 75d80015a5ca49f284f2a22982077fef
BLAKE2b-256 159982fda8e5da5953454c174b9570f0e6ff9e9a3d7f818e39d43c2ae6f864d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0462c4f2125c5656826b4a4b4bbb262e77d9cdedfedfe03ababf2480e1a6f342
MD5 13cde9b877b71d7a2ba96bad95e4fff5
BLAKE2b-256 13db034e0929c5af463dc1b96fde707b1d6dd55ff5224ec53ccc4341180b80f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 23ec85650482a719902321627258b8297c7ecc38227001ce602078d9a157481c
MD5 79aa10b9d8926b1b30a818cfdd26c7c8
BLAKE2b-256 edd19e5c219a283ac39f41d88ae5ea3951537d373c10f3f500049706cd3087d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp312-cp312-win_amd64.whl.

File metadata

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

File hashes

Hashes for falcon-4.3.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ab4c4df2784eda8d4a2089649fba0f0575a0989b608e23079009ec71a552b23a
MD5 294df5f0b2871e7bbc99c1bce8a5c6e8
BLAKE2b-256 6c5c9f14f408d26c781ea640eda84053ad5a5699cf80dcbd3ca02632aa0f0304

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 86c1f3ebcf321a81248fdb3c9d1dd468569740069a3ad584888b89ba799bdf77
MD5 1148138a714a749ea4019e9fa837fa00
BLAKE2b-256 c92b62d0d7a4f119b9d5d3aea9244899731b691c6819da429779d29cf76c2af3

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1bcd4c02401b5f969cdc2aa93b7f1d8b9067360bafe4e3b4d710293eddc50652
MD5 c9e7cbe8e1c60e579f4b779c9d24535d
BLAKE2b-256 b1eb3723f1fa828ae15d67a1954bb1128529cd870a192d2b59f8fe5eb0a4fec6

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c15edd6f2a512aa01c5feb3a685ab0f4dd85df6a6d50ad624d0f95fb467c8e55
MD5 28c4ed13045317b4ab7b8fca7c601c5f
BLAKE2b-256 43971890b8e9bbd5b8bba59059483e5588d2b31f3c31d58cd1d1784e422db6ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 a813f35a0ae68b50358084fb6eedb28f42e04f1d0db0aa9e792d059804cbbdfa
MD5 52298a05e9f4236f5e4dc9e831ed23d5
BLAKE2b-256 2b6938bba172e199de9bfdbdef7f013b37e18da40ad721e288cb73a160dbc6d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8b1c6604233d42bccdbf290680e08a3f2757ba826181bdc8a350afad39919d2a
MD5 6ebd686a220cd839e28bc2e47b121cb8
BLAKE2b-256 13c3865280fa52e2714d337e2b022938075b5306eb693fb734bd792cfad052ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6b8ade932d130c370ac53405f8d86f88d17017ba440a350ec62e8d5e69fef37a
MD5 d950f88b8d4de2294057b24f20d875d4
BLAKE2b-256 951580a2d45ed40963eda6fd4e37f636203de2c89ec31ce87d1a718abce9358c

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp311-cp311-win_amd64.whl.

File metadata

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

File hashes

Hashes for falcon-4.3.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 10b6822e9413cc968083c88aebc905de2ecdeab0f9ffaa6e76449a51ce9d3624
MD5 d2e04748149881ce0cbfc0959d08da78
BLAKE2b-256 8ded7da444afe0fc2d6051a813af5a56184301227343f991b69b58453f4b0a79

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d25a7762f38db5dfb2136841b7845d675117e989bd3e2b1356ffb1b7b5220ecc
MD5 7eed7a65869558a6a27268ce1de913a7
BLAKE2b-256 b93d063d0b40166ac54bf6a7a894a24d5c178fff575aed466209aace57e0458d

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9edc63eec91395ed7e04a7031a36abacbb87b9215b45711870c2fe0b399bd3e5
MD5 2302de0139c27ec6161d5ac5a7326b45
BLAKE2b-256 93568c6e6a4cf011dca0acc1a9efc13a999c125c9e6305374ea4c86601ee4bd8

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 54da8078000be4ed935a6b9a601be890d2d31d1d9cdb1d150a9950af71e895f2
MD5 7ee6733168b0e7e0eeda424acf27cf4d
BLAKE2b-256 35ed1694fa4be4ef5fa5e969c67489c2086a719f51e8f4b129ef5fb4d6d34978

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 67919093747e6adc7decc84d4df1ee2d71d0d281929d733865948f94d419e279
MD5 fd14741d8b85a3312bee1a212792e85f
BLAKE2b-256 20fe869b086a8546a0c48a2c8a85f08b902660dabb488bd613d199a53ff73fb2

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 703a1fc6de0a4d506e70854b84530b888ffa09f5af9a2a2f7a48e906809715a1
MD5 091c1898dc40929ec7d95f2f5ca13f7a
BLAKE2b-256 3ce7851ad3104a0fd4c18254e76d05a1303a6afb9cd683da2548e538832b0c6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a89d2cc1c004ee1840115dafc7ed0fee6f3f5bad1c9e7177edc6a844e296fd97
MD5 bf30f4300dc8aa9e1e9251c2aa58facc
BLAKE2b-256 5ff9c4d672e28d76ed6c1676fb21254ab70f3665d99d00c43fcd50d18547fbac

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp310-cp310-win_amd64.whl.

File metadata

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

File hashes

Hashes for falcon-4.3.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1639cbf6a49a8450a34ae43961f43e12ff0d50666412280a58d67ea4821e1da9
MD5 86396e55cfd1cdd4ec6c53fb59729b9f
BLAKE2b-256 a6fe41f226f77d57681e758eae690d9d216ca5ce9add5ef633ca8a199842f79d

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 508bad80e00438e3f99fc60bf3e4dd8bb3aae3cf0a0ecec546074648cc7b35e2
MD5 8ee14e8a05e19ae9d762e3977ec03f9e
BLAKE2b-256 f07227673348a076e85f215365231a706d1a6f03c2c9929485bbcdac97a17632

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e75b6f840fae3c74a81b8caca269e06a2a95e6681f2e459bb414aeae1926495a
MD5 652b6e376303952faded41eb07299739
BLAKE2b-256 9c4fa222885905418f61a9e2a259e53b3dc4b21b7957cb4e75966afd2314eeca

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 617cc212b3d6fd79685bb37541053043418bb2d5788189b1c5621f7d83b6efce
MD5 0808195a5dade01a28fb33e2f2c87567
BLAKE2b-256 3377dd15a34749d505350890b316ec1bd703251d17818f69da7707c8c3159f38

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 d06262b828126f4bfbc2507286d237d69393ca7cca683c5ea9b86f13b65e2706
MD5 12d7baae8c1f420692468daae48d8000
BLAKE2b-256 3dced71d3eba8c90958af83e3399a22dacfe49bd9449ea1b8a72f4cb71c9e6f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 04e3c32e124e7dad3e1aa499f5ad9e9cd47ec472de2a10340692700cb2543371
MD5 65887ebd6dcb91b7241635553d00ea1d
BLAKE2b-256 11ad9042ede1b1f96b4c3426f0ec0eba8eb70dccae84eae93db599368fb6098e

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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.3.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for falcon-4.3.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ee842e59de8bd3961bb64b3f922524069187be6d050f09a5e008a10c69952d62
MD5 b35652182663f659341d42a959e13297
BLAKE2b-256 2f05f620a7dcf22de682dbc3f976470a2f8f586bf8ea87bc14093619e00b2fd6

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.3.1-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