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.0b4.tar.gz (626.4 kB view details)

Uploaded Source

Built Distributions

falcon-4.0.0b4-py3-none-any.whl (586.0 kB view details)

Uploaded Python 3

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

Uploaded CPython 3.13 Windows x86-64

falcon-4.0.0b4-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.0b4-cp313-cp313-musllinux_1_2_aarch64.whl (11.4 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ ARM64

falcon-4.0.0b4-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.0b4-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.0b4-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.0b4-cp313-cp313-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

falcon-4.0.0b4-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.0b4-cp312-cp312-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.12 Windows x86-64

falcon-4.0.0b4-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.0b4-cp312-cp312-musllinux_1_2_aarch64.whl (11.6 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

falcon-4.0.0b4-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.0b4-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.0b4-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.0b4-cp312-cp312-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

falcon-4.0.0b4-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.0b4-cp311-cp311-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.11 Windows x86-64

falcon-4.0.0b4-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.0b4-cp311-cp311-musllinux_1_2_aarch64.whl (11.7 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

falcon-4.0.0b4-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.0b4-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.0b4-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.0b4-cp311-cp311-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

falcon-4.0.0b4-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.0b4-cp310-cp310-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.10 Windows x86-64

falcon-4.0.0b4-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.0b4-cp310-cp310-musllinux_1_2_aarch64.whl (10.5 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

falcon-4.0.0b4-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.0b4-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.0b4-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.0b4-cp310-cp310-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

falcon-4.0.0b4-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.0b4-cp39-cp39-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.9 Windows x86-64

falcon-4.0.0b4-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.0b4-cp39-cp39-musllinux_1_2_aarch64.whl (10.5 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

falcon-4.0.0b4-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.0b4-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.0b4-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.0b4-cp39-cp39-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

falcon-4.0.0b4-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.0b4-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.0b4-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.0b4.tar.gz.

File metadata

  • Download URL: falcon-4.0.0b4.tar.gz
  • Upload date:
  • Size: 626.4 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.0b4.tar.gz
Algorithm Hash digest
SHA256 21f13c392f8732e93ac56d7dcb0a5a69c8d6ba110e605c1a3ae5d8c08d61e31b
MD5 47f152fc4074dc37daed787667eb9998
BLAKE2b-256 206b91fa7c31e347ff26820582c3a1794873549a913e294376a7f83d7bd9ef34

See more details on using hashes here.

File details

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

File metadata

  • Download URL: falcon-4.0.0b4-py3-none-any.whl
  • Upload date:
  • Size: 586.0 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.0b4-py3-none-any.whl
Algorithm Hash digest
SHA256 c108245f851f8cc27e6a4ae38f88e0c5e362f81a79856e7d43a78a35194176cc
MD5 ffcf4d956731ddb4938907b3f53e2242
BLAKE2b-256 b311ddef8911647992694dbdb557ba46f002d5e9eab57ef296a5e62b2f7c9856

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6c017b2d1664ef1701c879d0a29b80a8c71be5fa194f27fd1c7e793260659044
MD5 87893d931de18eed9faa21de7990df11
BLAKE2b-256 b7ea35d53e2955dc527206e49385914057ef498d7f580cd122f5d42c4dab1d64

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0982b2ee9fe658826c7987b2b6640ce80b851cbb72b9e323449f01dbb69407f9
MD5 8c49e1980706c175cb79871d9e90312d
BLAKE2b-256 bc389d00294cbdd8e959c1e6d200e9c07f83f8bbff594039f19cc03f95c69704

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3e41385bebffa6a0142ddc39783ae5da667682b8d715ea5e988494c3130bc0c8
MD5 e744d6bd90fa1672b691e9c069ca84ad
BLAKE2b-256 078c5f344d89e91a37f1d7d30885af0f29a769b4ebb2137d91ee4d76c8ae657c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 194d293fb030678728e803ff5b1d20dad20efbc06d3ff07a2cbd444468aa5a91
MD5 74eaab8f6776a8f2f9f6efcd2967b9df
BLAKE2b-256 fded445d8594e8504df2ca1cf56cd40dfcf6dc675edc9b22aee7a2863d1e1b72

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 cf0c00e29c07aa38733320a18f8b66342c419c10b9f1c9d40e3b2c24f3e9697f
MD5 412018509d7bcbc6acd693f8645557aa
BLAKE2b-256 ac7657e23d2ee6e1e6a9b4c15e02d763b60d1c27b518d9f8e1eba699c4e5039a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8b56c633a118fef3504c89b21443f4c641c626c2cd3a831b2fcfe9bf646e41f9
MD5 b7e8b690118832671140909e72db91af
BLAKE2b-256 19d98b320bf5f7f1dd39eb19fd2b0797b0947df821d17bd3b727dfff48572ea9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 99ed3dc3c73f8a1e26392baf0df3c40771dc49b7c7723d1444eaab1cca2f484a
MD5 b3fe7ad0e7815874d520e18c099d38ca
BLAKE2b-256 068022caa642bc9b6a29f459f46ce5604d7cecb8f77c39e9f08cc0dc24e88221

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 7e6e95f2472e44010035807a1d22e3c35ff5f763e05ce7e1effcdd44e589ee47
MD5 28cdabf4ed443c09c20e2b75a16bd280
BLAKE2b-256 909fefe9e87849e1c1170a34b079d68f51bb0ff168290ed2db8ed7b7d343efb3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d5c15bc871801c5565ea2fee46c90a783dac8776b6ecd8bdcfd7ddf5216c9211
MD5 3b64cd68f5949518a8e8639d94319c36
BLAKE2b-256 d1a8344a815639066d20fcd2d3c6252876ecb01a964f8c8eb5ecfad707dc47ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b391e6e255e5781fae61e8f2f90110d63c35b42a426616f69b92d5f58981b4cb
MD5 1e092d2f128dfc0cb4fbc0aefcb5d0cb
BLAKE2b-256 4945d53e5ab5726ce1ee0a7838acff1626f10dc152873088e03deccadde097f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1190c6c349ea9dadc0c70122cd7176d4f436072f7f148fc6dde26ac1bd5f60e4
MD5 0fb0e019d1bce531537f4d1ba6131285
BLAKE2b-256 7be9b48009e3af71cf3f7b981d136fd63249924d3e7049e33f236a22f6edb38b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7e452fc22b89972408c6aaf59fdbf07e6d711280d213a162c9744ae5cc629582
MD5 1ba6bb0aeffeb62e8f85f2a92f43f948
BLAKE2b-256 728f079005814a1f59c0b36475ab40787e79721040fe1775e0042c4d24ff00ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 8425163ad23c70eef61d96f71a86c4adaa12677bf843e93c205712a7c10f7ea8
MD5 8132978648468e1797cdd7a465707cd1
BLAKE2b-256 796c389a87d58747619c875bfc4868dad70374a46321b0f19cc39f8d7b629abd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c64d209b5652e23a7030c7f656744e6c5212609bc0c455b540ece133c1f5ea7b
MD5 948e2db8a5d2f8949b71c4a38fd89acb
BLAKE2b-256 a19a126521ebf6fab076c04380be1aa392a0ba9b06d7f0608f3a2beb0379083d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 40e3ef3cda7f5c4e07db1245b4c25e37dfc5d2c948bb10e372297d5d73f3ac4a
MD5 c1e42edfd78dc002b7d68433534593e4
BLAKE2b-256 47d5e650935736fd6b4d4bcb281bb74373932ff40de56971f7d73896bc8a25fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f8880017ced09649e1e22234526a4b86cb4dda01f558facee746fbae785b4009
MD5 b8f244e2e343c4768662332ea7d874e7
BLAKE2b-256 490d84d5fe4fbbba568ba5a3b14e8adf72ea01e4ef01b2a7260e0d57fa0f6a35

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 545619647df17266bdd41de33966eeb642005aac179425189b62c714245ad785
MD5 645cfd8345308cbb8556b6f77844da1a
BLAKE2b-256 fd65d2a9b42ad1a7257fcac15c82577e0999894308ba5bfc8b52f92a8fdcdeea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6bec24fe8d5d2af76543ebfb1ca45887b5042bd1bc48ddb5843f86f50a979377
MD5 3f83986b52170a57d1b800a44abf7687
BLAKE2b-256 3a6d2bc92c3e7a9d11f2544e66673c78f86562c138c93a80e989f9280850ec31

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c0b14a60b21ab4f61dcca06a57c781465545d4d03cc2bcc45055f5a174921c92
MD5 682d44c6efe4f48caeedb19a24446ea0
BLAKE2b-256 47152fdff94915f9d7d2efa008b2f314747241d5042aa4910d1691ebe2f59b0e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a8474d3cea892d876f09a1142978ab5dcb3215a320ca46c80c3a24750d85fe55
MD5 adda683a4ee77adcaedfa8a4b0bcab05
BLAKE2b-256 33878618ef26a51dcf81e68d1855ae3e93efb1749be82e35270af1fa670156cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 ef1c0ebdb32298ce490fc6336515998e7e74b80024ae1b92f22a6983a2b2b144
MD5 000aeffd635909a683c58b613b5b8e19
BLAKE2b-256 5c17d3e0266b56545201c5ae15f00091141602c61e3ef443495154e07959c7a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 89ef80dbe92fb7dde5cf8a2f4e270fc3deee44f0dc095525e473d558780ff6fa
MD5 b54bea536f734b45cc05f17928e5a78b
BLAKE2b-256 8d444584d15f8f45af6530d5f737d9bab2dacdee33d6750e99cc092a56871778

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e99dc4cabd2809ce174731991658388a5985b8f1d608749fd99d3bc3b53ba36b
MD5 267eee2fc1ece7c116bdd54573c52ac7
BLAKE2b-256 065ea963e9d9be348615af78bd1c1e9dca40e0a099b974f71ff0fc5f31feca5f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 190ad30eb21ffa46cc1e98c79753720c92d4eb02d6b4d70d10d6e5103d54d953
MD5 2d7d9e92f64d8a977a2c2e5cc6aa675f
BLAKE2b-256 3d1b69f908771a6ebf37a990153ffb6c977322b0cba9a64b583b041e6c125b46

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 912c7d54d159dcd1bf2d0da4c2b2636e2c71e6610ec8ce97a1ed35ee21d37636
MD5 634cae7ed825f1b797c9b68b44e10606
BLAKE2b-256 99b97f226761137b0287711d9d5232d99ded64a4730b2478fa424b38e1cb56ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 34bb254a0e86aeceffbff75c20e575edacddf9d38c5076d480eeaf8bbe7acc6b
MD5 f9155baec7a2bd5cbbb9cd08c13cb303
BLAKE2b-256 c9a80d390dae27b267ca9fd6cdf5adb4e1dbbc64935b28445bde2a8d144ec4af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c04c0df7b2087d74a124f8004e8b2b2ee397895870d26671fc110f877e90566a
MD5 fb931437143377be596f77cd9d66040b
BLAKE2b-256 1bb0a713b80bd8d468a5b3c71ab5ed76fa222bbe78a2e15282b500534a3b605b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e210ebee0b9b1196697e50cc5d0bd8236d32705507dbe7fecea2bfce4e142104
MD5 a96494fa08bda51fe3da55ccf01a7065
BLAKE2b-256 d60dc3fe0275dd9ea4d65fa45997d5b0e4f4ac1f96d60414b9eec0d51fdfc91c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 e6435500b739245d13054c6296add13cb3d0c51a3b7712393a50f60502c95a20
MD5 c6f5fafede2fd47691d5d410ea2ee71f
BLAKE2b-256 dbafe757bd60e9ccf5fb35bbbde07e02c67605025afdcaab1e0226bf2eef8e30

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6ba26ff25b50646c1f0f4088185d881d621a55424f8d932ccea7bd92501d47dc
MD5 cb9ff2157130ed083d5d17c65ed66f90
BLAKE2b-256 52152e38b8143e00de3b5b2243d28098e3ebadb7a743550d8ba2c4416f8f6777

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 744dd1e33f595f9d8363e205720c238fe77d70777b91ba68edbd71afeec2afac
MD5 cbe5f50dd5292f8a71280364d1365ad4
BLAKE2b-256 b8ae1bf98ac4d778d4aebb711b643e8a56706720c26231b9997aac04407f342e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 949b9aa7a15f91dc5082e7896e7ca8787ec7fff1f717c974e65034942fdb9aba
MD5 3a61a61ed1e249740cc24ce789740219
BLAKE2b-256 2469df3bd70df48f4dd5f01474065d4fda5e8177dfd353cb439cfae75cd79782

See more details on using hashes here.

File details

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

File metadata

  • Download URL: falcon-4.0.0b4-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.0b4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 5ead5dcf9e626bd7496d9d6894f3801b6339cc3735f93f506d1dae6ec3eb9fda
MD5 cd387a438f6067464a8762188b21bbed
BLAKE2b-256 dce2b49037ba413d7615ead2f63e43396aeef1b22938adc7dec3dafb4d408972

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2775bea50423343f6766f47720e007b182f1b7e3dd776f4f0f24e02875e5138a
MD5 e497701ed0aea1f96a3df0ebdedbc5a0
BLAKE2b-256 063f2dd7efd21db2ff5b99b44803e844e96f74c8a5f790a96e46c7d6959cadaa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3b76c8efe627800dfc573845a1a4640a59dc2b8adc5f7b17719054b8b77c6d34
MD5 1aafc6c67737a866a3975107093041f2
BLAKE2b-256 c223872f8835569c3d62f4ffadd0d28e5d2fd341a792828e5228729720677f0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4d94cda4976491dc71679df5b987c0650f4555b857b0bfc8f4e88b57bc715946
MD5 820688b98262c0126d1681fc4bded688
BLAKE2b-256 8d8181059835dda82834f7eca5e14112bf0283da98aa659e859bbdfeb47027c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 c4a278271341a633bf37b66796f600dc5c91fad9c92f1a680e3d52627abc8643
MD5 d02cd36349ba2067c4cc2d07d6a4ef13
BLAKE2b-256 273ee9a7533dddba812433c7ba4e984207315b8487d0b8f1270b50df6680727d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 61ab96ff0db33c4e9d77dac1d6cd35a0cacc11288c808b179741d4708addc6c7
MD5 b51d0ccbd5b5fcc9a278f131ac935885
BLAKE2b-256 e084c2b68cc6f9398c49a0b57428116e34a4d5e1ce279808d47f633be5f08b68

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3b7829d2b2164ae10e588e5f9723a2331e2e460e49a14c2fe28d95980166d29a
MD5 1261b1b856be161191889ad52ea6e1e6
BLAKE2b-256 31a37861516c623aab981edf72780ef3347a588eb43df8a23e8da26aa77230f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 31dcf4e0e0f0b83aae3fc418c0c0e90c61650022b2f8de95152ef87dee01ddbd
MD5 85102fd9134daba98ea4c7f74aa31852
BLAKE2b-256 d3d8eeb281bb61ffdc5d14b97d20139e6f7591cb7ddedb5abffb058797c7d0b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a402c376b5a92fb529fe43f4fce35e1436237c37457dabf9a7acb8470a009039
MD5 f2b877878a44a11b6ddad50113b170fd
BLAKE2b-256 d9840bff99cd7aa36d1d27ea51bf4fc2fb9cd13b34e1ed512e4de1c1b8dc1e2d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4f9e588379b918bd5a5f72cf55d45e6b86eec58fe693e4d519a4adddb8ce56c0
MD5 ea81cbb43a40a7ae54e2b607d4db43c4
BLAKE2b-256 652a05e71a43532412b056acf250a2ef691b552fa706e1ae39fe499129657e54

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