Skip to main content

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

Project description

Falcon logo

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

The Falcon Web Framework

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

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

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

What People are Saying

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

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

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

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

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

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

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

Features

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

  • ASGI, WSGI, and WebSocket support

  • Native asyncio support

  • No reliance on magic globals for routing and state management

  • Stable interfaces with an emphasis on backwards-compatibility

  • Simple API modeling through centralized RESTful routing

  • Highly-optimized, extensible code base

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

  • DRY request processing via middleware components and hooks

  • Strict adherence to RFCs

  • Idiomatic HTTP error responses

  • Straightforward exception handling

  • Snappy testing with WSGI/ASGI helpers and mocks

  • CPython 3.8+ and PyPy 3.8+ support

A Big Thank You to Our Patrons!

CERT Gouvernemental Luxembourg Sentry

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

Thanks!

How is Falcon Different?

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

- Antoine de Saint-Exupéry

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

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

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

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

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

Who’s Using Falcon?

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

  • 7ideas

  • Cronitor

  • EMC

  • Hurricane Electric

  • Leadpages

  • OpenStack

  • Rackspace

  • Shiftgig

  • tempfil.es

  • Opera Software

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

Community

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

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

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

Installation

PyPy

PyPy is the fastest way to run your Falcon app. PyPy3.8+ is supported as of PyPy v7.3.7+.

$ pip install falcon

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

$ pip install --pre falcon

CPython

Falcon also fully supports CPython 3.8+.

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

$ pip install falcon

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

$ pip install --pre falcon

In order to provide an extra speed boost, Falcon automatically compiles itself with Cython under any PEP 517-compliant installer.

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

Dependencies

Falcon does not require the installation of any other packages.

WSGI Server

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

$ pip install [gunicorn|uwsgi]

ASGI Server

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

$ pip install uvicorn

Source Code

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

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

$ cd falcon
$ pip install .

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

$ cd falcon
$ FALCON_DISABLE_CYTHON=Y pip install -e .

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

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

Or, to run the default set of tests:

$ pip install tox && tox

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

Read the Docs

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

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

You can build the same docs locally as follows:

$ pip install tox && tox -e docs

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

$ open docs/_build/html/index.html

Or on Linux:

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

Getting Started

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

# examples/things.py

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

import falcon


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


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

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

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

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

        # Serve until process is killed
        httpd.serve_forever()

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

$ pip install falcon
$ python things.py

Then, in another terminal:

$ curl localhost:8000/things

The ASGI version of the example is similar:

# examples/things_asgi.py

import falcon
import falcon.asgi


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


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

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

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

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

$ pip install falcon uvicorn
$ uvicorn things_asgi:app

A More Complex Example (WSGI)

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

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

# examples/things_advanced.py

import json
import logging
import uuid
from wsgiref import simple_server

import falcon
import requests


class StorageEngine:

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

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


class StorageError(Exception):

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


class SinkAdapter:

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

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

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


class AuthMiddleware:

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

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

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

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

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

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

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


class RequireJSON:

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

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


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

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

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

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

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

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

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

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


def max_body(limit):

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

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

    return hook


class ThingsResource:

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

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

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

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

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

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

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

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

        proper_thing = self.db.add_thing(doc)

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

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

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

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

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

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

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

$ pip install requests gunicorn
$ gunicorn things:app

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

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

To test this example, open another terminal and run:

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

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

falcon-inspect-app things_advanced:app

A More Complex Example (ASGI)

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

# examples/things_advanced_asgi.py

import json
import logging
import uuid

import falcon
import falcon.asgi
import httpx


class StorageEngine:

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

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


class StorageError(Exception):

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


class SinkAdapter:

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

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

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

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


class AuthMiddleware:

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

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

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

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

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

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

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


class RequireJSON:

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

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


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

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

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

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

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

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

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

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


def max_body(limit):

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

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

    return hook


class ThingsResource:

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

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

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

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

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

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

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

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

        proper_thing = await self.db.add_thing(doc)

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


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

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

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

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

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

$ pip install falcon httpx uvicorn
$ uvicorn things_advanced_asgi:app

Contributing

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

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

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

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

Commit messages should be formatted using AngularJS conventions.

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

  • TODO(riker): Damage report!

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

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

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

The core Falcon project maintainers are:

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

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

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

  • Nick Zaccardi (nZac on GH and Gitter)

  • Federico Caselli (CaselIT on GH and Gitter)

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

See also: CONTRIBUTING.md

Project details


Release history Release notifications | RSS feed

This version

4.1.0

Download files

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

Source Distribution

falcon-4.1.0.tar.gz (659.3 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.1.0-py3-none-any.whl (323.2 kB view details)

Uploaded Python 3

falcon-4.1.0-cp314-cp314-win_amd64.whl (407.4 kB view details)

Uploaded CPython 3.14Windows x86-64

falcon-4.1.0-cp314-cp314-musllinux_1_2_x86_64.whl (829.3 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

falcon-4.1.0-cp314-cp314-musllinux_1_2_aarch64.whl (817.3 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

falcon-4.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (828.5 kB view details)

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

falcon-4.1.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (854.8 kB view details)

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

falcon-4.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (824.9 kB view details)

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

falcon-4.1.0-cp314-cp314-macosx_11_0_arm64.whl (404.4 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

falcon-4.1.0-cp314-cp314-macosx_10_13_x86_64.whl (408.1 kB view details)

Uploaded CPython 3.14macOS 10.13+ x86-64

falcon-4.1.0-cp313-cp313-win_amd64.whl (405.3 kB view details)

Uploaded CPython 3.13Windows x86-64

falcon-4.1.0-cp313-cp313-musllinux_1_2_x86_64.whl (830.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

falcon-4.1.0-cp313-cp313-musllinux_1_2_aarch64.whl (816.1 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

falcon-4.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (832.9 kB view details)

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

falcon-4.1.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (858.0 kB view details)

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

falcon-4.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (824.2 kB view details)

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

falcon-4.1.0-cp313-cp313-macosx_11_0_arm64.whl (403.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

falcon-4.1.0-cp313-cp313-macosx_10_13_x86_64.whl (407.9 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

falcon-4.1.0-cp312-cp312-win_amd64.whl (406.8 kB view details)

Uploaded CPython 3.12Windows x86-64

falcon-4.1.0-cp312-cp312-musllinux_1_2_x86_64.whl (846.2 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

falcon-4.1.0-cp312-cp312-musllinux_1_2_aarch64.whl (833.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

falcon-4.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (850.7 kB view details)

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

falcon-4.1.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (878.5 kB view details)

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

falcon-4.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (843.8 kB view details)

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

falcon-4.1.0-cp312-cp312-macosx_11_0_arm64.whl (406.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

falcon-4.1.0-cp312-cp312-macosx_10_13_x86_64.whl (409.6 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

falcon-4.1.0-cp311-cp311-win_amd64.whl (406.7 kB view details)

Uploaded CPython 3.11Windows x86-64

falcon-4.1.0-cp311-cp311-musllinux_1_2_x86_64.whl (833.3 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

falcon-4.1.0-cp311-cp311-musllinux_1_2_aarch64.whl (825.4 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

falcon-4.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (832.1 kB view details)

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

falcon-4.1.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (863.3 kB view details)

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

falcon-4.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (831.3 kB view details)

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

falcon-4.1.0-cp311-cp311-macosx_11_0_arm64.whl (407.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

falcon-4.1.0-cp311-cp311-macosx_10_9_x86_64.whl (410.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

falcon-4.1.0-cp310-cp310-win_amd64.whl (406.5 kB view details)

Uploaded CPython 3.10Windows x86-64

falcon-4.1.0-cp310-cp310-musllinux_1_2_x86_64.whl (805.6 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

falcon-4.1.0-cp310-cp310-musllinux_1_2_aarch64.whl (797.8 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

falcon-4.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (802.5 kB view details)

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

falcon-4.1.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (835.8 kB view details)

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

falcon-4.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (803.3 kB view details)

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

falcon-4.1.0-cp310-cp310-macosx_11_0_arm64.whl (407.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

falcon-4.1.0-cp310-cp310-macosx_10_9_x86_64.whl (409.5 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for falcon-4.1.0.tar.gz
Algorithm Hash digest
SHA256 dbc3fa642b43e7662f121d0a7b5d7ea42a1a31fb22ae63572c42ee3ecd1f79d0
MD5 062a6d925bdf9c0be791d736ab6b0e82
BLAKE2b-256 9085a4abc8357f6bc6b6b0b3d80e2c319c895900c518a3528279a222d7a53b7e

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for falcon-4.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 07cb9690525fd69ca48bcf52dca8f32cff823564e89f3d0a04a2674c4c598176
MD5 f6d6d500f5d71faec8aac6f9f054879f
BLAKE2b-256 9136ee359d6d8d201ddafd124919ec65432d48796e4181537c991e9b1cb70a15

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for falcon-4.1.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 25be29328b39e384bd7fdd0cc46c0e86f232fcf37d9e3fb7033200df92cf1940
MD5 e731a331d1be70a64bebd34f0ee5fafb
BLAKE2b-256 60bb15816f6dbad103a277de19f924bcd370bf86330513c655c691f9ad883c63

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 aa12c4422ba789fdeb90f66f39fb5f9a359b5ddb4ff2c8d51d2e1f59277af7b9
MD5 a4561d14eb9dde32e763d9ad55ffa716
BLAKE2b-256 0b2cc745aafe9f09ab0263a11fff2c7235db5bcc52717d993dc68e32a03ed9a1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 90cc61a36d3e0375042b3c6a28ead19e969f8ba238beed17a887784625b9ee78
MD5 7aab4e3dae4f3ce40e02a19722d1e63a
BLAKE2b-256 9e545423672a17525d8aa678cfc0d942ed8ae7c6b31afef7d49861887267fb6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.1.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.1.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.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 903501f334d5135e6c74e11141a94f1dd0fbf80344b3dc96b57e8a1a3c5a62cb
MD5 a4e3289fbf7e583427d0ffd28f106f27
BLAKE2b-256 7d47157be9e4ffe6a3430f12b6c42be2badf34f4f8afc95a415b691ae0e8c0f6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 c38afcbb1b475974572859c6cc48fbdcda9a5d4094d06fd0ce54f321b3490975
MD5 3ebf19ed4d51e845b27a9737a3e50f3b
BLAKE2b-256 d48d814cd47e6b5f9be2a0ae1c3b5f57306b63d5f1a80806ed31c5991c8c4991

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d569fde899c813a229108c689aa3bd88511db49d904dd35fc111949267d2ecd1
MD5 9de09914088783b16532a90e04271161
BLAKE2b-256 8c60e856790f93840bd75267e62405e6507e15d9fa60b502b05a8409ce1539be

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 214b437c03f9d0273f5b6f2e139e7d83b3f8748925d495ae9826e739608f6155
MD5 ad8ad9e8367a1755b4db5050b2f3fb7f
BLAKE2b-256 424e2f9bf0c3a4621b6c5f4f4181e35791a17f0a6765fb6ef9d0af8360f7990b

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.1.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.1.0-cp314-cp314-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.1.0-cp314-cp314-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 91e4dacdfc5681c13294d42caf951a2837a17b413539d3c71f21650ddf6b0b27
MD5 a039c23d2d22fc8a6821661219b4a324
BLAKE2b-256 aa4f2818c15070e693bcb85a4766397d6bb3b673b39fe3f154d2b6dd17cedc00

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.1.0-cp314-cp314-macosx_10_13_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.1.0-cp313-cp313-win_amd64.whl.

File metadata

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

File hashes

Hashes for falcon-4.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e3fefde1f590fff4ccd404dd932f10c9b91b42a1735e8205aa7551432a5e870a
MD5 10dd3347fa3653b584c09edf1d3e5a6a
BLAKE2b-256 db9465d8d73ee69e3934221aff6a5384a5eaf76f583450aa33573563f41e03e3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9a01511d6ef24eeb228b4bd47ba05e8e74f50834b5530223e834be84c0eae506
MD5 74ac2850e96ff9d0a29db3baf700e03f
BLAKE2b-256 a21485b7026a265678b50cdbbb2efbafd106669b6347b1f8de5cd445d8f0e51e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 06e554c1448fbad75de4747247d02a29a944b666f44279928efcac1324e941b4
MD5 20a45ccdb1f0ac62c7baa9ab9cdeffa5
BLAKE2b-256 5ff1ca585ad0848b664d1b4c34118140ef8aac2ee3c27a167463c5dcaadc5410

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.1.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.1.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.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ccc7302a0056f8a03b98c9aa9acb96ad4cae4aabf3aa857f0c9f1871b58ae799
MD5 ab35a1c0d15a71c9dc39a6981607276e
BLAKE2b-256 ffa397f7be3e4e47a3e5c4f417ca015feb3b4bfe70b77ce00e4fd2a5c4408095

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 b0c7cc2a2b3a715086a3b7877f6a6ddfcac7261c15ceb671c6a09f442b06ef66
MD5 848ad6e8c35fe3a529dcc843b8859c1c
BLAKE2b-256 fdfc527e46842af688d4f532573446399ec48872596b32d1273f9b467b009ee6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b3dbb2648f8d0670f48d5cdfa0b2b1decba6d1e505679291ffeaa5c4cb7e15df
MD5 bc5a7413b2d4521c7edc0fb0649e1e95
BLAKE2b-256 1d716c9a0335a35b1e914ca1a53a4520b6abce4f2b18c1a447a8d6e84c4e1c3f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 84063a5242696c4cd9040ca53d178604445e8ce8b0a112c9461465554784644b
MD5 b18760708fd17641b316c1865b2eddc7
BLAKE2b-256 601a7bbd6f5d192a8ccd0a83f429740549f2d3308464982ea47bd4d9863bdb45

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.1.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.1.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.1.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 8ea3954305fcf7ebc1aac90f36c01d26ce12b77b059281166b95a553b3cc9d45
MD5 8f3fd32ceffeecc226204f3bb48e2f26
BLAKE2b-256 aa5d3b76f1582bb3cb17d21bd7d5187a6fa38ed43517569ee3235c94f0746b78

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.1.0-cp313-cp313-macosx_10_13_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.1.0-cp312-cp312-win_amd64.whl.

File metadata

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

File hashes

Hashes for falcon-4.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6060146aad636931fdc88275740343e336fdb40c67b3ab43c40d48cb30964891
MD5 4603bd6f0aa602fa23e4106feb0c1435
BLAKE2b-256 c7383a2244f67e5b107732bdef184fcf5deb64116799918a6cca90a6e5569a64

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3ef8a4c30da27ae8707c1994d4b2728492e7e173c04e79dac49f22711db285bc
MD5 e7d85749fa18075d0aa5999288f557d5
BLAKE2b-256 522e135aed83a24c856f1200843efe4728408e1a6898532bcf84175954ff1ca1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 27c27f7144d2c705a47c17de3e19b58d0d64bafc17006cbf57064c5a56c4c0f2
MD5 e6e8f896e6e148d0fbc53f628d76fc89
BLAKE2b-256 6f68f280840cd33fcd6b9dd632a628d2123b6d44ae69fba20d9b5d4a13b6eb83

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.1.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.1.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.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cece1561c6766b733136306c07a4198a1b760583651fd45bd071378d353b0fae
MD5 8da12c877bb912a24a98d8dcdc975ca5
BLAKE2b-256 82465a3bc1c08e5302f9a84c52c0b3ac42ac032a25eb9299968a644f4a530432

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 41368d586b58d68bb39c672654baef0dcbc130b371e2c59e093f2699892637f2
MD5 7b0e73748b6d20491bbf764bcda98580
BLAKE2b-256 922c21a0aff6363095b0dc3694d4dc9880c4a18d82e7cf5c358b7dd7194e766b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 85cf8446d54625e67b219a29ba1cd1d72a28166973c4ead07086a0a0991be161
MD5 efcebdfebd550dc1a0bc948659b86dfa
BLAKE2b-256 df2ea272d9b96d5c8f2b7144a6bae3a5b4a28c8a90f1f3db17382ad5f23a9222

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 76a6af9f8142b7e10cee1b835b5548d73b6c65f2a1dc71aa75786bb61f3db5aa
MD5 db38da7961d32bbb2d742d2a393bd668
BLAKE2b-256 5d7336c724f0fb825bc2172c72ec55377256543fb06283d3b228ec3e0663b575

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.1.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.1.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.1.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 971def6f088f433092538a8409431c7001ed4eb4a6c908d5bb932111749e36e9
MD5 785c70c89c12232addd53f99923d6df8
BLAKE2b-256 02afe1e7109ae1a77076e2c690c04ce3dd95644ad77e8543ab08bebaec659666

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.1.0-cp312-cp312-macosx_10_13_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.1.0-cp311-cp311-win_amd64.whl.

File metadata

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

File hashes

Hashes for falcon-4.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 cda1a53580014f35f1314d66c74205f79e4cfb620dd1b952f581b81415477c60
MD5 87a9cc46ace7c0b01ba3c87776ca562c
BLAKE2b-256 cefa144de2c8725080495560ad6b9ef5140a7ace6fcdb0da98482aac8e6108fe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6e88c8a4f7bf125068d8f34bda094443ce7a2dd9bfef05c0da97a8eb5a8cb568
MD5 baca5a5d85bf36a827c6d86c82218333
BLAKE2b-256 766e6980b8bfe107816f74cfc5f342a3f7c1d18af407e400c61eb64e78350eaa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 eea2063c49e3b327a545dadb9e445e00bf44edbfd492b92f81de582e3ce461ca
MD5 d73c38d0d43b9aa0331e47c2bef59a88
BLAKE2b-256 3d0cfafa157e7a039d750b1f6f23aa98e27d60e6a18d11bfac11a0d5df22dc2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.1.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.1.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.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fdad618359822f577c3ae9db73107b511e22d55715ffd4543a5096559bf1f18f
MD5 69ecc24e72985383de5ce5d7cabf2473
BLAKE2b-256 ca52b80d409c712a0ec97c085fdd56997f71cedb284d4052eeb7f1ecc8db7a1d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 43aed2194c804b64aeaf331384e2ef2ff69f29047cca65fb71e47d56f44c646f
MD5 bb17708bbe0c1cef0bb84de848181dfc
BLAKE2b-256 7f02fe51c596da54854c38766b274c5cb827922bbdcfef5c53d1e7fc7c2a1867

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c41a3f208e28d2ff59beaaa503900c57a4d59ab17ddb3946efbad0817a314936
MD5 90d16c57621642e6e081d135f9c3545c
BLAKE2b-256 7f03508d444bf71df55dd70c7f341abf681922a7a135e7a385c4ff77b2823f46

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 589e9a1cde0f84c9cb25327f6431a017a1b17e9d2c42b4b927e0ffbde6e42315
MD5 9322d58bff22171410cb7d87e208ef18
BLAKE2b-256 77e7405d54c3f81a8d869f0d7bdbefa45a35a6e225f12f809e823e02c67f85f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.1.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.1.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for falcon-4.1.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a2105cd03cd7accad2f2a4b875a9f588d37293e9c202929762ea94e446bfb6ee
MD5 cf18620e69c0f6f37f311c7b73b697f1
BLAKE2b-256 98c7c4e39259046749fc4227ecb965484fa0d44e4f199e4cc591c2cddcb2120f

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.1.0-cp311-cp311-macosx_10_9_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.1.0-cp310-cp310-win_amd64.whl.

File metadata

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

File hashes

Hashes for falcon-4.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 600183fecbd121fbe55590645618ae1af12e02a4ca6ac035d6857b628cbee5ca
MD5 ee970b503b7f9df94d1f1c77c409e491
BLAKE2b-256 f55a2aaba3f41ff0dbb134a7bcb377a11f902edda8e512bc2b06df83fe9ca7c6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f783cfb370ed8ccaf658b0b6c766dad3ad945f1eaf27ee1f5016706618ac6f3c
MD5 cf348764b037fb6194df257b938f01ff
BLAKE2b-256 1feec4286c4261ccd10fac1c11708e1946dc363c6dc23cb9956d51860cfab1ee

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 758fcf3416842b8b431429873accbee34e92206600358a02e8d418e7a968983e
MD5 2179ec7ebb889b4e93f3a670ce801f0c
BLAKE2b-256 cc3206c5ae5aedcf0f7d92755f273b4a6835c295423b9fc8929db7b73a04283c

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.1.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.1.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.1.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a2a8324259cd47c1fe21f352a4b34b97ca29c064813115a1dddb8d95168ed154
MD5 fa5fc7aecea3450e217c4565103f30f7
BLAKE2b-256 de1120d9aca668d5c327f143306c21b4e81a39cd89185d157b24c77d1e40e31c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 033b74c3e512441cef122cd7d9caa61571bf9cfef1cc60dc2c2c1c23bcf14727
MD5 5b8e738387538eb9071024ef9c949b20
BLAKE2b-256 30f74b2482f9f9e7f8ad366773c8b960ab8258df65f92c6e62906408a229774a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a294092ff27ac6038a36169e99175af86ea03c5e054d60c5d219fab36ad6cec7
MD5 d898702f508c523d15cde849c3d810d8
BLAKE2b-256 9d80694ec817bd338b41adfe0cb45f4181ac5e712ccd332c0ff3f061e44bde47

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 71ca6b380ddd09458127ddd5af73f302aad6de8da5690b610c9165209f5766bc
MD5 7d379e4a7666498e0407fddf53d9e68f
BLAKE2b-256 0f08024972673db6706e23898a8f0daed7c5af747f3acd9f65eadcc712ace10d

See more details on using hashes here.

Provenance

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

File details

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

File metadata

File hashes

Hashes for falcon-4.1.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c4aa85dbf9af10ee0d48f6c409551d7c7226953b2479a24eaad42d39c05bd4b2
MD5 fdf97e3825948cc943fb46214f092de2
BLAKE2b-256 0c9e8168712ac4d9f585479b1516796e43669ddb4fde4d77dbac3d6d47a3cbaf

See more details on using hashes here.

Provenance

The following attestation bundles were made for falcon-4.1.0-cp310-cp310-macosx_10_9_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.

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