Skip to main content

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

Project description

Falcon logo

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

The Falcon Web Framework

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

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

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

What People are Saying

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

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

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

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

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

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

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

Features

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

  • ASGI, WSGI, and WebSocket support

  • Native asyncio support

  • No reliance on magic globals for routing and state management

  • Stable interfaces with an emphasis on backwards-compatibility

  • Simple API modeling through centralized RESTful routing

  • Highly-optimized, extensible code base

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

  • DRY request processing via middleware components and hooks

  • Strict adherence to RFCs

  • Idiomatic HTTP error responses

  • Straightforward exception handling

  • Snappy testing with WSGI/ASGI helpers and mocks

  • CPython 3.8+ and PyPy 3.8+ support

A Big Thank You to Our Patrons!

CERT Gouvernemental Luxembourg Sentry

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

Thanks!

How is Falcon Different?

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

- Antoine de Saint-Exupéry

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

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

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

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

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

Who’s Using Falcon?

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

  • 7ideas

  • Cronitor

  • EMC

  • Hurricane Electric

  • Leadpages

  • OpenStack

  • Rackspace

  • Shiftgig

  • tempfil.es

  • Opera Software

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

Community

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

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

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

Installation

PyPy

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

$ pip install falcon

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

$ pip install --pre falcon

CPython

Falcon also fully supports CPython 3.8+.

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

$ pip install falcon

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

$ pip install --pre falcon

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

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

Dependencies

Falcon does not require the installation of any other packages.

WSGI Server

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

$ pip install [gunicorn|uwsgi]

ASGI Server

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

$ pip install uvicorn

Source Code

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

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

$ cd falcon
$ pip install .

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

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

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

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

Or, to run the default set of tests:

$ pip install tox && tox

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

Read the Docs

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

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

You can build the same docs locally as follows:

$ pip install tox && tox -e docs

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

$ open docs/_build/html/index.html

Or on Linux:

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

Getting Started

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

# examples/things.py

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

import falcon


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


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

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

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

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

        # Serve until process is killed
        httpd.serve_forever()

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

$ pip install falcon
$ python things.py

Then, in another terminal:

$ curl localhost:8000/things

The ASGI version of the example is similar:

# examples/things_asgi.py

import falcon
import falcon.asgi


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


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

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

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

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

$ pip install falcon uvicorn
$ uvicorn things_asgi:app

A More Complex Example (WSGI)

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

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

# examples/things_advanced.py

import json
import logging
import uuid
from wsgiref import simple_server

import falcon
import requests


class StorageEngine:

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

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


class StorageError(Exception):

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


class SinkAdapter:

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

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

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


class AuthMiddleware:

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

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

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

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

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

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

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


class RequireJSON:

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

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


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

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

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

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

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

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

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

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


def max_body(limit):

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

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

    return hook


class ThingsResource:

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

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

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

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

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

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

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

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

        proper_thing = self.db.add_thing(doc)

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

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

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

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

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

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

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

$ pip install requests gunicorn
$ gunicorn things:app

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

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

To test this example, open another terminal and run:

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

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

falcon-inspect-app things_advanced:app

A More Complex Example (ASGI)

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

# examples/things_advanced_asgi.py

import json
import logging
import uuid

import falcon
import falcon.asgi
import httpx


class StorageEngine:

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

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


class StorageError(Exception):

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


class SinkAdapter:

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

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

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

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


class AuthMiddleware:

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

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

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

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

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

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

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


class RequireJSON:

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

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


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

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

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

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

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

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

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

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


def max_body(limit):

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

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

    return hook


class ThingsResource:

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

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

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

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

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

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

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

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

        proper_thing = await self.db.add_thing(doc)

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


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

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

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

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

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

$ pip install falcon httpx uvicorn
$ uvicorn things_advanced_asgi:app

Contributing

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

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

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

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

Commit messages should be formatted using AngularJS conventions.

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

  • TODO(riker): Damage report!

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

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

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

The core Falcon project maintainers are:

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

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

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

  • Nick Zaccardi (nZac on GH and Gitter)

  • Federico Caselli (CaselIT on GH and Gitter)

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

See also: CONTRIBUTING.md

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

falcon-4.0.0b3.tar.gz (625.7 kB view details)

Uploaded Source

Built Distributions

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

Uploaded Python 3

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

Uploaded CPython 3.13 Windows x86-64

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

Uploaded CPython 3.13 musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.13 manylinux: glibc 2.17+ s390x

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

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.13 macOS 11.0+ ARM64

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

Uploaded CPython 3.13 macOS 10.13+ x86-64

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

Uploaded CPython 3.12 Windows x86-64

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

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

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

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.12 macOS 11.0+ ARM64

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

Uploaded CPython 3.12 macOS 10.13+ x86-64

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

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

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.11 macOS 11.0+ ARM64

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

Uploaded CPython 3.11 macOS 10.9+ x86-64

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

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

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

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.10 macOS 11.0+ ARM64

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

Uploaded CPython 3.10 macOS 10.9+ x86-64

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

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

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

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.9 macOS 11.0+ ARM64

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

Uploaded CPython 3.9 macOS 10.9+ x86-64

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

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

File details

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

File metadata

  • Download URL: falcon-4.0.0b3.tar.gz
  • Upload date:
  • Size: 625.7 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.0b3.tar.gz
Algorithm Hash digest
SHA256 15265cde4ad6c4ddfce6ce5252ac4b9ee4db6945355bf694015401f062c8a9d5
MD5 4b20fbd02f0e67ec716caf7a5e202906
BLAKE2b-256 da8c78ba48aae07c65d43e92f53b004289fe712aa0517a079c9f6f4ec0df5d49

See more details on using hashes here.

File details

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

File metadata

  • Download URL: falcon-4.0.0b3-py3-none-any.whl
  • Upload date:
  • Size: 585.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.0b3-py3-none-any.whl
Algorithm Hash digest
SHA256 927052ac5b21c90d53154fc1370136483cb68c0bb43b97f11a126134bff2ab2e
MD5 50a9e968cde4f4ac72ec63ff5df62e6d
BLAKE2b-256 dc9b3292ef4760e8312fd7509c0b7d258193354f21432bc947fbc7cad64222fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 817d1656cddd610020ee7a768e62c078a5b584005874689ce3388db074fbff18
MD5 bc1d98b517eb37eb744d710c90141aa6
BLAKE2b-256 3475313340b868a291d77de222e83c34b80003531a4d0dadb407de07014c405e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 69c2176a0d761247f13874e81d77b0d5e6b55e89b1f9e795adaa602f4c91615d
MD5 d0d4d6250c573549dcf504efe0a0fd98
BLAKE2b-256 998de14d333c65dc337ddd720fb683829c8bad403b989d49f61c130233323176

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fdf5d0808913e8ae777a6a1b3d6e383e1c35670fd58e0ee93992f4b8d85cd5d2
MD5 a12a97e73a18f66d7589a62d5aa5aed9
BLAKE2b-256 2b6ab4abb5f0951885872c2d344fe01b85429397d0a09f3ec114ebc84fd27242

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b7f30af1c887bfd5bd247f42efcd369ee3eed1b398a9318f22760ce1e5c813fe
MD5 11882b38e5a1826e2a1b47b6c8cb2d12
BLAKE2b-256 8a97e9fbf661343652a5743fe3cacbfb15dcc63d8ccc804ae5618aa49447c5e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 6088d16179c530d03a62ebf4bf8749352508322a4493dc34aa1d332b21809f4a
MD5 278ea56a533ec1a50392221c6ef98bc0
BLAKE2b-256 eb220c005c6f402a3076946e5783ed7d3c63bfc390dd9ed640f85cb4e97f57f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 964ee6b28073bc8d5dcc14920e47e4b9f7b3c69497620e54988d7bd43d6d5f9d
MD5 34875efe33a69c4b436131ed320592ed
BLAKE2b-256 d67fcc7b9a5be486f8cfe126a4b6f24cad9e6951a760d19102b02bad4aa20c51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 32d285690b182f38132d25d66d8eeaa0ffb7b84bf380afee3ab00bf8cc7a9048
MD5 1ed58c3c5cc5381c302b86084fb91e50
BLAKE2b-256 b385d0ac8badae1579bf4743184a7f7e7acc54f8503b5db9776329ef281f3016

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 eccfc8b1cd21740397b51792a071d4262f50e32187217e3864101434c2c12abb
MD5 677724d657a58fca89fd79d06ad8405f
BLAKE2b-256 bcc0bf0f67f452d0e19d94686d4dbb897a20611baa983e5225913536b71f6329

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 70abf1fc308c1d64a2595b19816d4e0f358072ee44f5fff28fcddd521e34bb1d
MD5 40050f055420c1b11f2158e4da796320
BLAKE2b-256 177339a8e20ca74df927e95dd301389815a5caf8617d91774f2223ad3bc502bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4114574cbcb0361c6ab921042789350c5e8be2d34ff4a315ca4de9b2b10c42c5
MD5 68de37278864624c8eb0fa30962b9360
BLAKE2b-256 dcd5781bcefe77f636dbd87fdc0679ebc3e23dd2efa4369d5ba0aef8a295449b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9c15ba55fa6a66ad1535125b1892bbfdc6e27b914090c9a1da1f503fd177f72f
MD5 da99875a0a79311cabcac87bd83e8e5f
BLAKE2b-256 737d9b24fce3685bc17c18daf8791c7c83263e346581a00497b0103e1fd50ee2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 09ddea9f64a22d53ed87837ebfbbfcbd5f141ea14fcd7afd11b51b37d6e240b8
MD5 e55a61e637ed093ce519881f7e82d0ca
BLAKE2b-256 e04eea8adcb096de605acfa4b2e0bc49a42b8c512f84eeddda94fe4abeaea35e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 1343603d73f5390d580feac969a59534a4827bc6df4f69adcd9c90c406c0d5e6
MD5 43eae97045ca8fe8106c9aa581b90399
BLAKE2b-256 845a7fe271e897a9e5abf82ad9c2deaacada676a636df1337383f3a2f17acc14

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b663598cb220d1dcffc5e7f51ef4b0d7ff8c5292ca762217b87ffa0740c3dadc
MD5 95b03fe952d3eac408a88e0dcc0e7ee4
BLAKE2b-256 08a62d3669b0439918119d2dac891eea0b70d0267cb0c4cce531f77ae38398e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fbaec34b861321dd5f6aedfe8ed51b1124978b777bfa0533c90ed1b229432fb0
MD5 f6eee2c05253fb367be438db987a1163
BLAKE2b-256 34f99e283be8e453e834a550e1d131763382a61bc046e68987c67a4b0df53b4b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 652aa9a4f3c559d16816a4cf3115a02a1aeec8b190f0b4a6ffa997011c3d9937
MD5 2bc0ad48194823f761792a307b122ba5
BLAKE2b-256 c9a8280ebe1ff4a50a3f609b7fab4e6402b51db1699742be22dd01298256042e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d5070d93c6b414afa9e95843a8ca65ca639dd2ea4c57c561ff5e96026ed66c62
MD5 6120f802cbd62dc5bfaa4281ea283e4f
BLAKE2b-256 fff232575a46ba0a32f33e6c77726b9b025755840b53aa8df13962903f7e1bee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e0150850751e4ec0909143fde1d2ddff591be97973dd33d6affb7872088a5ea8
MD5 af12a0502c59aba1ef05b9bf66a7cac2
BLAKE2b-256 3c14132a4acb70df1c3cf999ace3aa6dde841f201b21427860356d0ebc62f5c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 64ec6efaad4ab0abe699d01df41dfd8b098955ac301a990800bd3c385bb971fd
MD5 3afc945aa111f4d30be52f6ef29dcfc0
BLAKE2b-256 57a318cc875f1f1edc9807143a6901ffd2ae296a15841291967b979e756a98ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a3d4ca1e7173e8a498487201c8caa575caf55a53cd681d9b24a55acb545aa310
MD5 05bd8d1433773b4b3acbd615948cfbce
BLAKE2b-256 e78ed021ac2b28defeb1fe3f1a85959a6f4f2d0f2703e67293755363f055f2e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 de8dd496f5c479757623c758ce4b0ff73c3a1bb83af2ead9ac5552ebcbd33e64
MD5 f832a5dd7ffc379aab6014cc93dac2fa
BLAKE2b-256 a9a9cb1a388fc069aa37176069939b6acefd19ee014bf1f1d0616b8d07130f7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7b0dbcd9f98b90b39cd0b972b9c48012ed065318b7fec465483449d5d3beccd9
MD5 b88c04765898ebdbc781b23eef47e626
BLAKE2b-256 5cdba550b18db430fe224d44bad3f7d3f1823104d965bf82dc557977ad2712fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 121719ad942dff14136bc78ce176183d3b4de6072f63cd9c17eb33475f57c12f
MD5 d50b585f978ac9e0bdc2b447d71a741a
BLAKE2b-256 b9fc52294a117078c8215cf1cb8a65235e7d9a11dd4b0dd4d0b7e157e0f3b041

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 da0c5e1abbf1eba335c4dedf59fb5332d1d0482c69000ce590b4329319956fa6
MD5 1b5bae6cd805b01a34bcde4d980ebe48
BLAKE2b-256 6115921f9721b2a5e31f4fc42cc19456acd5e1cc784013e7b0925a5ad365f433

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4e779080806355b3feb79be5fdbb2e09a82ac877dcc954999a53d16144560e58
MD5 a3feed46ae50e9e666ce148c428271d2
BLAKE2b-256 e3efefad9eef4867b856dee3ce8beb8c7281515811c2a0266c2f217d45dfcfd0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5d6ccf4e29a59f5018e3dfb3c26e8dc73ffda4e2faaf9ddf6945a974688551e7
MD5 4dcb1ef4e7c74c0ed692e4ccf1ef71ef
BLAKE2b-256 79bac2421f486b3230d19c09c920185fd8cf9d65729d122d3288d15f5270f05c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9c32d87c48642d5a201ee444d7c008d27f86448dedca994ec095845695c401dd
MD5 e977abfa6588aec453ec8a976d8fbcdc
BLAKE2b-256 37033031c34d86b7207c2b3a16dec7e919ccc268f3f52a0cda38f1f60df82150

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a996c033b6da575554429b3a0a10e65d47da37493dd28ed6ab7551bd1c2f0199
MD5 08ac13f8e31d8161d1cc4eb8699199f7
BLAKE2b-256 e11b607ab7676dbc4ff3dddd3b7528e8ae34021cd26166922bb6620e00378f58

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 8339096e4893f3bc58bdb454f2d48e9b6c8d8a1441dd8841f63cb8391bb04596
MD5 3530d121d26281878cf5c5807550a5dd
BLAKE2b-256 48c7f5cb7b46eefec783876fdd29b65b78fcb8c8e3bdafafccb1f62dea0a3e76

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 317d128db4b19d95fa56c487ee6a6d9c70d7d4016c3c652f3d961c2c85b1b4a8
MD5 1d4d5caaac4a5c1eedccb871bb554d1d
BLAKE2b-256 8cd4a0963d979d814eb80196418394b29ec798bed88cc975fc2f354a90fbd90b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0a805623342aa92a20e89a973e4235c5de3463ab43b07fb5b317448ba04451d3
MD5 558c702464ca1400a7d90c16d0abca5f
BLAKE2b-256 da8af475b7bee1c9175e117f887d1c3c1c0c32b2c212723ca4e12cd25d72ee12

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 667562ad67ec06dd4a117aa1d93fab1cef49f4e89be1257702675566f9f181e9
MD5 e5ca65560491e2856194341fc48757ad
BLAKE2b-256 eb20918e212b38e0258bfc4dedbcb8cbf95bb024f9be90f54bc75b13c4eacb15

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for falcon-4.0.0b3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 68e1ddec4bfa9e22c6c5d70e77f45ec421aa263cbf2f071b01a72d39abfe6190
MD5 6f63e6eca6f302a68a598da17a5dacb2
BLAKE2b-256 25caf42030e58a1530e54c99e14a30dd23a9c273f787ae4c633e433ca8a27b7f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5d92b663b163e0e33b91ab58a8bd57667a102e32a0d58ba43b86871dafdd1055
MD5 0472ae6bdfbf39d11ee4d2820366942a
BLAKE2b-256 fe6e6013e99fab46f9ad731f6dcc537d288cd610e2b0b6aed584d3967a3da91f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9b927d7059ebc07fc77c8e03329bd84b4699a34f82b16dbd4253ce76f526835c
MD5 01e1b863bb4dcd0698b130112d63360c
BLAKE2b-256 4f6fe4f78d8a8aa28901227ce325ceb2934a22825021bb00540554c1d87a4831

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 45bf92a36cc1ba7f49b818c08a43d4a94984103b68f448271bbbce30c2fcca9b
MD5 fc97a312cc07353886d3a296f04d3af3
BLAKE2b-256 b3f62da64035a469fc974a09c881e4c35ffcacf4721beb58fe6c0ceb324df773

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 a9f85415d4a96642b00a9ebff747cb4c9d7e13ad77f87dc12578a00b50c0f00f
MD5 07e37b04613815daf57df98266f19d39
BLAKE2b-256 2ef292fdfb38cca71a839132add865f4b20b1ecb3d2161f114b346be5d9a5269

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7818f8d4e6c955a68a268db09133e73f0d5c66e1e8ad441df784590d1530983c
MD5 8baf7b1c603462859107fb2521b40d5d
BLAKE2b-256 5df7d8732b8e97b747e81fb32830ace794f193effc3713bece2269c22d1a4d8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 81e344348adc5af2c4883d7d9f974ff4cd8d32a7f7365eb7ed1293458f0c67c7
MD5 ac23fc5cbd461c7d1def4717d4d61103
BLAKE2b-256 c5ee7b328557d60fd84956f2424750065072b50e76486e59ec879b762434e3ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ac20a7efc49ec074eaf02527a1f556787b2c12cc153a34d82d90f16c05738ef3
MD5 5f4c90a5823647e4c311559a98e2eee3
BLAKE2b-256 4d3f4f9c9d779cf677c2b3ee2caabc6b5bca1097060cdad0e890c69d49bfce0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f36a32b8f585c82634173c8c07a6f7a66fdd8237b6aebfc973929bd223fbcf31
MD5 24960b86188a10774557225db0a3585b
BLAKE2b-256 833abae8ff2b21ab18bb9a423d4a1a038e32a7879b36166b78bd43b927ec6b63

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ccf9e4a1d447e7c15916de640822f7d51497f61416c45c3f30f81698b1a2cea6
MD5 d1e4e88dbc0e16710a1c734b22a1dfe1
BLAKE2b-256 3f283a7b8aa32dfc990295a42e1eef77336e3a867a9c08212060c24f75e50927

See more details on using hashes here.

Supported by

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