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.0.2

Download files

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

Source Distribution

falcon-4.0.2.tar.gz (630.1 kB view details)

Uploaded Source

Built Distributions

falcon-4.0.2-py3-none-any.whl (318.4 kB view details)

Uploaded Python 3

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

Uploaded CPython 3.13 Windows x86-64

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

Uploaded CPython 3.13 musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.13 manylinux: glibc 2.17+ s390x

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

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.13 macOS 11.0+ ARM64

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

Uploaded CPython 3.13 macOS 10.13+ x86-64

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

Uploaded CPython 3.12 Windows x86-64

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

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

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

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.12 macOS 11.0+ ARM64

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

Uploaded CPython 3.12 macOS 10.13+ x86-64

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

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

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.11 macOS 11.0+ ARM64

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

Uploaded CPython 3.11 macOS 10.9+ x86-64

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

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

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

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.10 macOS 11.0+ ARM64

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

Uploaded CPython 3.10 macOS 10.9+ x86-64

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

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

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

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.9 macOS 11.0+ ARM64

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

Uploaded CPython 3.9 macOS 10.9+ x86-64

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

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

File details

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

File metadata

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

File hashes

Hashes for falcon-4.0.2.tar.gz
Algorithm Hash digest
SHA256 58f4b9c9da4c9b1e2c9f396ad7ef897701b3c7c7c87227f0bd1aee40c7fbc525
MD5 779e94857aed44e78536a9d36268e76c
BLAKE2b-256 374fd317952294dee1982cd930c8ee2b8b7fbf04140473882801061b3346c713

See more details on using hashes here.

Provenance

File details

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

File metadata

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

File hashes

Hashes for falcon-4.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 077b2abf001940c6128c9b5872ae8147fe13f6ca333f928d8045d7601a5e847e
MD5 fb61827cc770dbb55bd6281e71fd1bfe
BLAKE2b-256 20e2ef821224a9ca9d4bb81d6e7ba60c6fbf3eae2e0dc10d806e6ff21b6dfdc5

See more details on using hashes here.

Provenance

File details

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

File metadata

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

File hashes

Hashes for falcon-4.0.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a410e4023999a74ccf615fafa646b112044b987ef5901c8e5c5b79b163f2b3ba
MD5 783d9e6009cf47a27535f697ed254388
BLAKE2b-256 bfc7268cddb1f84ebe5b402acdf116083658f3fb0dd38a75571e0ee703cef212

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4b85f9c6f50a7465303290cb305404ea5c1ddeff6702179c1a8879c4693b0e5e
MD5 207a532a284951350d22c5bfe7bed48e
BLAKE2b-256 0161eb3d1d2076df85d5a7c2cd823ba5dbe0a928053a3102effb9006b2851377

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9bfd751dd898505e17152d7ecfcdc457c9d85bceed7e651a9915183bd4afc86b
MD5 d3b62ea266cfe70595f03bce996260b7
BLAKE2b-256 b73bdfdd9bd9f6114a49a55298b12048f1b65d0813b82c28676b956c4444f707

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ec939d26dd77f57f08f3e13fb14b4e609c0baf073dc3f0c368f0e4cc10439528
MD5 3ec643469701b72101e19637a12fda70
BLAKE2b-256 7a70c10acaa3486748f77d9b0e79aaa19d3023b760bb9b93389ac1883a52e366

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 56af3b8838da2e19ae56b4e1bac168669ba257d6941f94933dc4f814fe721c08
MD5 de84629bac7aa5e9996d8bbfd7453d98
BLAKE2b-256 fa4371e358d36ec4559737d63312d746fb5f8b0e64f1fe273cd6991e567a9225

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 14e0b4d41ce29c2b5c5b18021320e9e0977ba47ade46b67face52ee1325e2ea4
MD5 55bed1c4afeddeff05d69274105ee486
BLAKE2b-256 2f708c7bf8bf941238a87debce72fcdc7b2301d6599271a392c8216ea2f5d91e

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b3a5db14cf2ef05f8f9630468c03939b86dc16115a5250a1870dac3dca1e04ba
MD5 41239b816fb66a35ce6165cbe746949b
BLAKE2b-256 b713528d074e8a75a9236c9f060685e4cb813fbca774269afc89d31e821d8560

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 110b172afe337fbae802f1402c89a5dfe6392f3b8ce4f2ecdfd5cee48f68b805
MD5 a2b1af6cbaa6147b1778d438f4ca3d9d
BLAKE2b-256 1f3471ef64406ac7f83c5726a37c9fcae0578bc9d650de09c32148aa6c58502f

See more details on using hashes here.

Provenance

File details

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

File metadata

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

File hashes

Hashes for falcon-4.0.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 eec3feda4a9cd773203401e3cf425728a13bf5055b22243b1452e9ad963634f5
MD5 017332fe19bba3752451993261645bed
BLAKE2b-256 7a23f8a74294b5b0cb5b9e3eb44ccea310a5d480ef95e938704827db0dd97f99

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a601de7816138f17bf168262e0bceb128fdd1ea2f29ddae035585b5da9223a21
MD5 692f9bad0cf196917c6261d8fae4d85a
BLAKE2b-256 afac8098957dd5b97ed16788104b7acb33c64689f7ab04e0c6b07d6561182950

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0a12bbf3482b7ef1db0c6727c2ad8be5c3ac777d892e56a170e0b4b93651c915
MD5 486214f2a7f87d05475a6ad10c3cf9d2
BLAKE2b-256 f29a53f9ee7ee8758972d92bb3dfb2225a9c382fbd12f684616cab9126420602

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f26c9ed2912ee48e2e1e7eca3e7e85ab664ff07bd321097a26e4ad6168059424
MD5 c4f1aaabe1181c3e03a9c1533b63f2ec
BLAKE2b-256 8df8704b73fc76cf283504aaacc2f466a08fd5d440cddd8d50b6d5c288f0293b

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 59bb4a29626c5e610c62620a1395755e8c7b5509385b80d3637fbc8a604d29a3
MD5 bb4d90888ea1fda178408e3e0b3c3425
BLAKE2b-256 5ef30260f70dd080d23372e2ff0e330ca37897ab5e1b4890df281558bda8e34a

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2c6b1d7451d5dee4be9b67a75e2a4a0b024dccffedd4e7c7a09513733b5a11db
MD5 8ce1201e610faafbb81f2a56f06e8fa2
BLAKE2b-256 1d0c44abd34e38b88f15c5a7030f48ec079669218af3162de2bd1925e13a46a5

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 524d7b75f7368fe82e94ed16370db5a27bb4b2d066470cba53f02304264447e8
MD5 f6553e7ffc5f112c3fb1b90a31b1f2ba
BLAKE2b-256 630177b5b0214bc4ca717b6c6cbe8c3adaba653a7312c9c51a9b390f66efbce0

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 23b0419a9a025745734022aaa2e65447595e539ba27352b3f59d86b288f614db
MD5 214cb2b9a6675e4bbdcc08d64b4c2896
BLAKE2b-256 67db0b78b7ee3fe7e370ed430b7deabfa524b57a5b9eb32622ce1f1bb7aacf0d

See more details on using hashes here.

Provenance

File details

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

File metadata

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

File hashes

Hashes for falcon-4.0.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1d06bbbccdb58522b2a6bb2e79074844b0db0da1fff407725858a02515e15bbd
MD5 158081b27c36600ff7776365dd1f6863
BLAKE2b-256 113e855c3051cb8aad61a921959e5e62416d759761241c1da8394103c3d1d6af

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 53d84de83abe1a2094b319a4f018ab6c5773d9c2c841b528662aa151ab9df35c
MD5 2268d48f1c2b14cac990f523d602893b
BLAKE2b-256 2d15f218b581df1447f743b16812c84ab8f6f7d51fb3c1950129744f6fd653bc

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 af68482b408bde53a77b36e45317767dfc5b6fce1525f5b25d65f57f35d33fca
MD5 4cb34fc1ef1c62bf64e727b926c10c79
BLAKE2b-256 7e2be03066e7be01f1b09c87ecd9c48e14a0ddafd9fc8fddd05db27b5ad4e3d9

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c2892ab1232d3a7cc9890b1b539c471fe04c54f826704f9d05efe5632f18efa1
MD5 9aeb44ff7771e6fceeb3ac055c3a0f59
BLAKE2b-256 e9cdef07fd256c2a29d3c3f1cc22e0ce59724450eb13ef5ca553e63b6abd19f7

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 9c1dbcec63d9118c3dfac1f810305128c4fffe26f4f99a7b4e379dec95fc3bfc
MD5 255e48debab55714a1474a4d79475da9
BLAKE2b-256 84efbc1d47ee32e2a211cffca346bd935009d2b37189c2119df95c31a9af6231

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 aee81fc4702eef5bccb640b93187fdf36ca2606fca511982069dbc60be2d1c93
MD5 5671bc1fa9fbd39af487ea39080e2f01
BLAKE2b-256 9f646fa45987bd0fc78d991be5ea0e30f0812eb26713c2e99ce07e35c959346b

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7f1a16d8bdc8ef9cf2832a6ca6d43b156b613fb1587cd08cc928c7b8a118ea0a
MD5 4048432453034fa65762f0eb306cb120
BLAKE2b-256 73028a1a68ddf9b6f9d4a7d0d63f0a485109318f08c0181a3d9f4b05dceab355

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cb6ee1aee9ff6a656762cf5fcd2e6c5dced410ca990016be2bc193e6b74ae9da
MD5 a35cf0230720cb5cee27fbbac0a96c41
BLAKE2b-256 01e3dfeff966d60f2308f765736044e0a62f046d2420baf50fa4872b06338fd5

See more details on using hashes here.

Provenance

File details

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

File metadata

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

File hashes

Hashes for falcon-4.0.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0d62e565b9e71b52b59e03130b2b71345a6873f5299aad6a141caf4a58661b41
MD5 3bee0ef37ef1f6f7c117bbd4659c3273
BLAKE2b-256 2f73bd689c2790c42b6287df1a43928ae3af6cd2541ac1d64d6fa2fc960dad5b

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5169e064bbe5dece52e088e3e8b17cae429f1e04c7aef8c31ae350303b19c620
MD5 d730c9d70b5454f83604a528522a3f0a
BLAKE2b-256 784f044454ad96a542f2c446a07b6ebc8da0bef8e7e689e32aeb2bf40594a712

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 da3d942dd34f7a5213987bd053c3b52b6eb75fcfd342dc4fea9241f79a6529b3
MD5 e698de6321e4751f7c39aad01d2d4762
BLAKE2b-256 2f730862e66b5b9c5295f065ee7c83571fd106dd84d63cf0479038986ddf2881

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9d7cfac5cfca69373d1f65211d75767ed4f2d53b46554307427ec00a6f7f87c1
MD5 88b45e06bdf1a3c71b0c672f62ccda1b
BLAKE2b-256 cb22aae29170b0947a5170844bf74b671b5e0e6dc218e2cc6262d2378ec44d15

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 330f1623e579575a9e3d90c2a15aebe100b2afa1e18a4bee2ddaa9a570e97902
MD5 f225cd57b4619beb4cdb21bbb82d7e5d
BLAKE2b-256 cb27a93dc68be1e70809cfa6d227424790ff502cc1f4272200bb91ebe92fafb1

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 60e7b6e5ee44bb2411a7f47bb64e0b225f11cca6ddf91e5130d456242095f0d7
MD5 22dbc1a2885ce32e520314295ce6322c
BLAKE2b-256 2899447d6f8618b3f8b882c7e74eafabb59f6e9112acbc3255dddd353fc75505

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 942129dd3bfb56342ac368f05ff4f9be53e98883b4227089fce2fd616ebc6ef3
MD5 50671412718ec874141d040f253d4635
BLAKE2b-256 905f4a3ccb6d8bdb4cfcc38aea9cd5e5c49aea400305f581c839be206c3a93e2

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8eab0212e77017385d48be2dfe9f5b32305fc9e4066cd298e4bb39e666e114c8
MD5 7417eb42d137b3aaf16d9544b04845df
BLAKE2b-256 b075e33013aedec976d13f2104ab2e054b5e3863b518c9b28239d2837b521d7f

See more details on using hashes here.

Provenance

File details

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

File metadata

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

File hashes

Hashes for falcon-4.0.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 7bffb4cadcbf7c5994695d421ef5305ad8315cfbefe971713046967614f0ffa4
MD5 b50327e4671b365df4079ec6cc75f7cb
BLAKE2b-256 38974021fce87e3feb67839405ca8d2560d989da141692214c6f1b297af23443

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0adc6c2887f9d7ed55fe38edef055cc85c26762e392d80dca8765184c180b921
MD5 99b666157e69117ee5416533eb1ed50c
BLAKE2b-256 2c88d96a3e9d93aee74280a82be844c2eaa603283c5548b3293165deb2d55b4e

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9095a36b8eeb80207322393b3bc88edaacd0426c2907e8427617618421bde9cc
MD5 40d6960e3dbf35195c648812056b55fd
BLAKE2b-256 e2b8503d3574be76a09b64dd48214e012fd1b911a158400bc04b1ee0d4caec0f

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e04b30a7f89e5413e00c5cd1ea62bf7948323eb0220f8a5bbf705abae266a384
MD5 167d40850e3c6952d3fcba9f5890332a
BLAKE2b-256 8fb2cf4c9567ad571e3304743e6f65c42576929cc16d494cb234f972fa70a150

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 628c450e14af811f13db6334265d7ff8a7b8a25ece1bde35d09a367a72046533
MD5 5b060857e28b3984c4d1de55eee66e8e
BLAKE2b-256 bfe5660262ee87a90aab812d2d10ab42e6e0bffe853890b2e14268863c4dd659

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1fb50cebc3cae6720ccf4a05fccb233ea6a88e803828a07c063d6dce10a74e0e
MD5 c57ec313d0164025b3e9bd2e62cc1a83
BLAKE2b-256 803082ff9d61d6baa5f908ccbbb775585cd1ac24dd47fcc2d2e6c5b9b0f44ce4

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 427c20ceb367039b856506d7baeef17c7f0c40b8fcbf1147c0e76f33a574a7cf
MD5 cf73f1903bdce9d926be5d05c898b681
BLAKE2b-256 c47165266fc8433e396f42a2b045e7b7069390c4314e8b66e66c4e092166226f

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f9709fd9181f58d492463b951cc42fb33b230e8f261128bc8252a37a4553f318
MD5 c2506b46e1f3ecc815a387e087098631
BLAKE2b-256 d0007be6347247812e6553be50d83b0951e569d597b9c3a71e4c0de5b00789b7

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 90c8614f8fc7bf144338cbd9f9ac2ccf824c139e57f8122d3e873e92e4a4b053
MD5 8d96fe8038ab0801a7f16dea54c2e21c
BLAKE2b-256 d21b9ac7cbdfc98d752d2ee10f7ff2c6e5848bbd72836b77860951e8c05b1211

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for falcon-4.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 90ba6475a6dc591e72f23f3751476711f9a820a6eca05cb9435c9d039f7c534c
MD5 93428cd2c6c3e129d28e273a8657178f
BLAKE2b-256 da34167b5ce980d1aab9228e2eb0e9f181fd6fc8ac81bc7cb3e090bf0e7f6d92

See more details on using hashes here.

Provenance

Supported by

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