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

Uploaded Source

Built Distributions

falcon-4.0.0b2-py3-none-any.whl (584.8 kB view details)

Uploaded Python 3

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

Uploaded CPython 3.13 Windows x86-64

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

Uploaded CPython 3.13 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13 macOS 11.0+ ARM64

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

Uploaded CPython 3.12 Windows x86-64

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

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.12 macOS 11.0+ ARM64

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.11 macOS 11.0+ ARM64

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

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.10 macOS 11.0+ ARM64

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

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.9 macOS 11.0+ ARM64

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

File metadata

  • Download URL: falcon-4.0.0b2.tar.gz
  • Upload date:
  • Size: 625.0 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.0b2.tar.gz
Algorithm Hash digest
SHA256 141083fa58d30ac4cee142f0bf5532e494a9e2a2f9c93070042a1a1115f1a61f
MD5 0d9697f2b479ade4d7fe206f974970a4
BLAKE2b-256 98b35e8422690dab4407399993aadf78eee4e24482adceb4195f893dbee60803

See more details on using hashes here.

File details

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

File metadata

  • Download URL: falcon-4.0.0b2-py3-none-any.whl
  • Upload date:
  • Size: 584.8 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.0b2-py3-none-any.whl
Algorithm Hash digest
SHA256 5d493bad0fe84d1374c4fd9409e27e25a147560830b29e0c44837b22803a8052
MD5 f7260fd9d0303ab832eb018faae10ad9
BLAKE2b-256 76254212f9fde23b68e6dbc3a94659f7b60e7396f3604fa9ed38a09bbcd720c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e61f2c7645d92461819679721927c49d96460c2f4e4c9c9c5a57fdfaeef9b472
MD5 33ebf4387bcc1e7dd16a490c434c9c5b
BLAKE2b-256 ef344c39dc7e2704da9630eb95600c819c4ac4b8cdaabae72df168913a8df1ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ff9f6d085e06f1557ad6213eb74df9edbe45ba00a241aad199494de65f1f2748
MD5 831dcf20bfc5d6ab11f3a70810d1faab
BLAKE2b-256 95870e720214570709c0c99a80895627b69365c507ce0155727eaa9f1d673dbc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6da3ecb7b6c7dd27f91bd84fe886bb0bd9a756240a864c3a0630bb3ec9c0ff0b
MD5 f1920a5392b554fe34440d2a8ab6464b
BLAKE2b-256 ed02fccb163f25a6c23f64dd240b8270402bca946a55da239d26d298970ec5fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c553d415f9429a2ca44acd2a70b97b7043cec915ddb6f03c95eac308beb07f2a
MD5 91288eb2d55bebf6a1b789bc4620f12d
BLAKE2b-256 e963797868e8abb6e2b2101f409da7681cd36a88142337c5a11c26c318e69298

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 9902f679cd96a234359a756e6adacdead48ffc131fb024c05f5b692c004167ac
MD5 f4f94201ad6fd111060602151dea523f
BLAKE2b-256 60318f222f58c6e61d44a7b88bb75f57cf9faaa084cecd598f836d539edebdf6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7f7525a5b8f23eacd1be455c5c3cc480ca401df925258b17668c5e139123885b
MD5 3945192fb0ed887f14a47d7996596c24
BLAKE2b-256 df1645a214d6f29150df82dccb98401a167f4d9576e1805820cf8049669594a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 840e14a1d0f4e7ae6f824fa63b43411dbec26c5096c4bc3901dec04b8751e81c
MD5 faa4a94e30c3b4d97bede6cd688f0631
BLAKE2b-256 45a6e29826675f9393052c1f75b4610e40bde1e76511f3ebde22b67e48f0c0b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 33d3588da816a86efdf1a2b7ea1b31067213b455179fcad5eaaec0b7044a8286
MD5 3f98ee8bea2dc4ca082028fdd05da245
BLAKE2b-256 8003b8bc12cc270c0980f8740e34cb43c884f8513ed3bec889285f7f8fe337c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ac40afeff94b46604e0118ddbb01daf512ff34c7dcd0e432bab3faa3244e0e75
MD5 7a7a57169154cf69b02d81069bc62faa
BLAKE2b-256 e5212762e35c3163bc6df1ccab46e762757cdb31e1154419735c2b9d4a6741af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 936d9089a36b0d7fcb1fc4e5c90396632f64dabcae3727bf31409926793cd162
MD5 d89437cce13ad6dbb9c22f69c6343765
BLAKE2b-256 375006a9efe94182afe17cb6d915974df1154cae51016831398ae88b0e43d7c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0247113fe22dabb73c76176b7b46ff6993be3c6137b4b7b60e7b4fe462216926
MD5 6f91e1022730c28d3eaed0429e4249f4
BLAKE2b-256 e7a27729daead86bfc831115aee9c796e8c6f1ce314f2fd5e5326d42d04e6902

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c77a90ddffc722026ffe0389df849af1896d606bca3c8e4cbed0829e6d773026
MD5 87051b5f0ea4a6a643518a1f9d0c866c
BLAKE2b-256 8f0ac1edeeef74659914e9c544f27c302e240ac9e558e6c396962d4cce470e32

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 0af70632efab0b9b795a20d836885005059e3d8e642d2db41adc1768c33a71c4
MD5 6b856084af69056d6bcbbf57ecd8ea11
BLAKE2b-256 30f657a3e32e30948de5c88344a4addf3699c0b3a11a71b72d07f68557e6a91e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9b93b7cedee0d694a2e77ff830422af14c33bc5aa4747c9a79d10a1d05fd4893
MD5 c8ace1a1923befdfaaff9766ab8d5752
BLAKE2b-256 69dfb66f526cfd31ebf8da96417510a783cbb4c3e6e4bc286b2eb0fdf1510826

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f53d351c5ba92f6517c78b5cee260f8729b2338df0c42929d932dceba782b74
MD5 28f304ac8df97a2b63489afeba540ac7
BLAKE2b-256 2e4797b51a6dea76b3ee31bc7f1d6a1e960c867f3f61faae9c95eec6ba7dae13

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 5d1c307b3d99e43c9a2718f8e0ade551e857e3d5b45492a7db9cba7bd2ff6ff7
MD5 58b26fb308bc8c50bec4cb7dffb90456
BLAKE2b-256 746abee51600afc9db3a09bb45c36ae57a7446c163746d812c88149771d31345

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2f70d1d4b04098930dabd3f9b95b1038c7fda792f1d00ab1acb18e3e8fa97113
MD5 2a696034e88f51d20c720397bc3536a5
BLAKE2b-256 6e3bd4013dc26fd2172ba60eec4a5fdf11b6f87fce12f287bf1b6cc6a316892b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 625bf4a6e94889b691e4e7e66b5e960e213b6913c3d5e04e166fbd0210824c65
MD5 9d04cc3ce9d7ccc402165001ccc2a1e9
BLAKE2b-256 6eb886a833cbdcc922799b0e65c1005ba0de2eaa8632154ff5058e385154c54c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c3f4b50044d21955080d77ef44db9386eb80101690762b5d7b0848fcd792a6f7
MD5 9da938a585a1d7dc07c775a170b23104
BLAKE2b-256 2b7fa8e364b4e41c5d84b92ed032557a97bd5c3075e3be27c2dcdfc4d20351ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d204c6557d4cd196f21cf4122e1ed90b0c1c091bcfe588650e5db59146c1d0ab
MD5 6392ccf0d73a86639a767a0f30bb2659
BLAKE2b-256 d99a7795ce35e92f200d6b8b84f9dcfc51d79062c21e745256385be8f91c19f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 1ebdce22c26618c68fa2f0444f0c4fbe72dcb5c9b48cf38754ca8342bd4320d2
MD5 eb13984ee31f21e567826935cc244a82
BLAKE2b-256 b025e9bec43508c6383a2ccba26f4682f0105e436cfc0e3f046aa3d0f788dd70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 280ac4dbe29353c4ba466c10fca46ce5680d6b54637f08649a9720623a48e408
MD5 41456685a4a1e567b7c1e2ff6d743e15
BLAKE2b-256 039b1fc8fba52ab735b5f5b30e48e9c551f49ffb9b10a34f40431f3872e2fef5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 adb4f94c5cef0de6f4f5e24bf319bc9b8953325c00041d9209fc7e42001cc708
MD5 1fa0f4716e9960820710ed2de2297059
BLAKE2b-256 63bc721bf01004fa2a069417bae3ebd40d121452f24f8aee8c8e0eafdc18c6e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 569961fa7975d7212b6e41335872fd5c21278c6f4f1a9f6e12300132fceaf171
MD5 c786bc770ed28068aac378b9a9af59e1
BLAKE2b-256 640350acae0f33be705cb5b85df37bd5042883cc37e021f712e2c594727e5cc2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2f2d59f42e60785e91f3dca6cd358a7188c742ae1d445fb23a26e693a973acf4
MD5 c73d0bfa7010316066a2278affec61f1
BLAKE2b-256 71c3b8e33797f87705ff17fb597b38e11079f63b0b4d261deae8954f062120ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 03c9d40592b1990d38f677db72704f9f065ee0ef520f0c5aa8e08388d45707ff
MD5 a8adc5ca5c6bf5506f41057a9ac10aff
BLAKE2b-256 543cd6a5b9584f72596b50b580f4503007e9d0f625f59340119f52112428a1bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e46321222cd7f0b12f1b8d6079f81b536e5f573fc4556a5a61f6cb7ea73f7a78
MD5 890e37a9a7040bf4281c94677bcf1133
BLAKE2b-256 a67520292478fcdc05d345843f2ee57d2f08181f28e81dcf8730516a5b33ee95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f0cce812b89e8dd4455ccb163cd3e3ad6eb1f4fea69d1cb1c53e41c9fa348e31
MD5 e674e3d900c29b1b96f7a970e114af38
BLAKE2b-256 e04c28a609b7641cbcffa443bd832c5a0c60587f3098faf73a56e7a417bb56f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 1b344a0807d8dfd188ac1ce54092221b03f25af5d7cb77752abf2424f8c1aeb7
MD5 d4e597cd6cc100106d29f230774e9ca8
BLAKE2b-256 709fa6cf2db9411c1cb22b896fda3fcc3d0a80408aced21c643b6d93153c0dbc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 11cdf1bdfbe310d1e6ae0ce9d3b45fa918e9361558eadad1e660a625af8112dc
MD5 b8b01fd3fc8a1ad4a7a5a277ae968aa9
BLAKE2b-256 9d0f612926294c56be12058ec3db553bbd18ca227949207c509aa1c997b53f01

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7e543de1393f2689161230719f92af22c182e7f03e351d0edfb82ce1dcf1b32d
MD5 06749e02222651ec9ddf035992b986f8
BLAKE2b-256 4131588cbcb61a4f6d0cfae12f104240dbd6d32ca9366b034fe6fc047d1bd84a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d15fe55ca39b335b79be04eb6c7db0defbeacbd7fc39cf2b2ab609cba7326e34
MD5 61530717fffc62a81b524bcb8f50f58a
BLAKE2b-256 3272eb0841610dca0e601612ef778eded4659c9ab622c5c89e7ea59c7fcb393e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: falcon-4.0.0b2-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.0b2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 d1a54c49ac40d674dc7d4f2f5ee489df112e6e1343a5dcd8d37df09f438f59a9
MD5 7591798dbe6ccc54b52df5aa92e995ac
BLAKE2b-256 2fccc121d83a55d56263774ef95de5484f5adc30942980562595b8f7eb7a75ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 baf9d7d9af128f6d54b0f5ea5bde766ad8c3dde4a02ed270b02a7e471da045c3
MD5 785becc12e2b54659394b9096ca0bb89
BLAKE2b-256 6da4e3ee652cd4518abd157a212f66ec495ab5d9b81d2ca47a86b966c74d72d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e4f289c103a59bc49b00ccb06516c5799be0aa164931d4828c26cf2d18420190
MD5 b6c82625344311424747023507292d59
BLAKE2b-256 64bfa3c67f7f6aa7ce8482ab302b586614a39dd5cd504664b7d54a32d15271aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d9c245660212ef62deb949227ad111bb2380b312cbb7d20f1b7fda87c7897b4a
MD5 3a4ab196118347a48ac63f25eeff2fe4
BLAKE2b-256 94ff138a9f0bb9224cd5c65f5323c4eaba5640ddcd05f8014669eae017058ca9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 240d3d379f40984c852b2f4646784a4fda07c888d97cd88d8462b2e5209a35d9
MD5 50dd856cb87e6cfc5b318ca6aa16e589
BLAKE2b-256 1cfc39b2e6217b51d0532294505ea6dce862044529dc1abf85f66cffe5694d36

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 aa0373edadd5260000cbd8a5affb3027cff11ead6a3a4d2e2ccc6e28c959bb43
MD5 6062bb325d21c872f88f9933c6d6f24d
BLAKE2b-256 2b4e7f30076ae0b19d9bf4aec27083e87c9e670b6d5659b68d537a3805f7d97e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dd420c8db106abdd2c3b6b26b6bbae957d86368db5dc034fd1e5acdb3c65f61c
MD5 c2ee2d23d2e7390bccf23ac685bbdef5
BLAKE2b-256 a0ad9c479b0c96db00614e21bf86daa00dcb64de2b4188a054be7549ef436dbf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 82b001c77a4a05f1dda5f68368c6fc7496b3be3e1329df3cc74f3e9664e0f192
MD5 c49944848bcbbfb07f87be5b50eaaf58
BLAKE2b-256 668dc9836752e83e8cdf17132f7251815981c28fb17a4f5bb7f02e0d11229fff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a4809b72eaf01c4af240885173b28b6cea18e12bad2a62547be89eca9447ef92
MD5 4ea9b1d35ab1046028c635f3b94a8be7
BLAKE2b-256 7aaad218f7a8606e92c5c3b2d5ce27362052ffd9e0fb4a858449e26fc8c3e351

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 abee9e9404d90d9bce41f48761f416dca6538c79d9a14ea76e922024d361d7ca
MD5 5f371ac9dfbc7624b1e556e0f521bd45
BLAKE2b-256 af65323227a05634c8f4f0e98f632b0474ef873414f0c5f9e52cfae52598aa0b

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