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

Uploaded Source

Built Distributions

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

Uploaded Python 3

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

Uploaded CPython 3.13 Windows x86-64

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

Uploaded CPython 3.13 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13 macOS 11.0+ ARM64

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

Uploaded CPython 3.12 Windows x86-64

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

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.12 macOS 11.0+ ARM64

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.11 macOS 11.0+ ARM64

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

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.10 macOS 11.0+ ARM64

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

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.9 macOS 11.0+ ARM64

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

File metadata

  • Download URL: falcon-4.0.0b1.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.0b1.tar.gz
Algorithm Hash digest
SHA256 2ec6d6c736b3b6bc199014fe4700f6553bb1ff9020fb7ada8962a415207ce7be
MD5 ed61afcf45f21157e1a115e6128a24d5
BLAKE2b-256 9a52ca64b75e48d7efc88112ee60bb3619c98a0929b7b00ec29b23b7b1d1c0c8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: falcon-4.0.0b1-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.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 db184167993719b5738d1ad7c7675028054792b228e3ae6f6c80d81a51840dbd
MD5 4628d14ab235e9ff36d1bd573c7bf65c
BLAKE2b-256 ee1a86b0b1966dde40892de9432c1d487760a687f57a42f958edc76fd568e4fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 22c95382db4a78bc6ba65f109e89a1e67f1d5df6b321ef5dc3a1238db28920bc
MD5 1cdd430536276aa3bd639cab7f7428a6
BLAKE2b-256 05be8b28a951deba278ee3b747f1cacbbbc70f457b5e859afea1d3461168ff3e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7f8aff9367d04c708f55744904d986c2f31b7c8298ea008f60f69b65ecbc9a70
MD5 e166a75a611ec8b9feabb1fdb9a9b901
BLAKE2b-256 5b6b065877e4f9af334823ead318e1fcd3ecae2501ce955a0b4c4a9b41f9bf6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6cc3f6eee829cf9725f0f3aa090fc3be04fcdf6918e83ab42600e88d775f3d1e
MD5 c564a59a513e819616e0388bc634ba57
BLAKE2b-256 06a42d00b09df2055d562cc8fd989e6b555896b09078dbf0f84b556b64e00311

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 25bd42d3d9d132ec3452f4a785b99609408ebafe7e8dc830655820b604bcada4
MD5 7d89ef53aa3372178eb59af46d68ded4
BLAKE2b-256 13703d0115f266f5759301cbf47f3e90b9e4b8f06111ccc07e9f0f93b6017099

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 40cb3d0a914f1a371e54ec9513d8cc36f98ab47edad24ad9ad41de146d64cfc0
MD5 264d5d2c4bdeb7ef19d60ccaf8c6e487
BLAKE2b-256 8e11227bb017c5e9a68b7430bacfcda68479f8039f3b844c7ddb350753d6090c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 57304e255fb1815b4f7942a3aa883b99378ced0689f1e893a6633587e7934d6d
MD5 4dd47fe413021cde19b259ea89b92767
BLAKE2b-256 7c47ea9c356c16019a4d1556090d88ea1997be8394b371b7cb06369cd57b1058

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cc041198721a0d5b23159ef25ae61499cdbd342342571c609dae7f4d9414f90f
MD5 b020c771f4d1b26b8906387bc0009069
BLAKE2b-256 af96e1e934661dcf0afd900b11047c95a34a10ce5d42371a91d1fb7279594e96

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 54d054e69f5cca10b0f4a74c2bfc9409ec80035a08a7c8b86a79d7b24f6f615b
MD5 ef5dd7722cf93a0dabb170509076f822
BLAKE2b-256 df80ae786192d7676b21eb161d2eae5de6074f2322638088142b6c2db6d95aae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8bc7ef436c20786dbcded997177a7755094363f672edbc993ac655ca8ecef70d
MD5 56d1e1da991fc5cf90bdd3f377fcec5d
BLAKE2b-256 1d830c40f5542f1e01efa9fb2e2cb7fedaedd249f1f2cf0e2752bf0a7ae22ac7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 169461033cee7831fd048a5e301fa2531ecf25db1107ebc839ad3498fc4f9f64
MD5 c7b50d61e48dd0db6d0094925d688951
BLAKE2b-256 218564611a905f9a1c33c84167f8e600137176cfd1674d783169064d2f5e2f5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c1b0f47cda44585d73edeb04e172142589fd40d8e254bc364717985586416e89
MD5 3b8d5153c5ac005b663807b49125118f
BLAKE2b-256 19ac28412155fdef625cf35ea553c2ef7ac79cce674fb928e1d5febee2534328

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5f923302f3c7246b23b296217f02d8c623af808f17136bbbf940ec19c1c2c491
MD5 1c57738f51bdcce5d4e2ed545538a14c
BLAKE2b-256 4834ffd6656f970cc7b412b92bd12d4d7a2335611021915741c6f1d4caba69f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 41cbde92da524ead5e599a674478221c018648a98d056c4e7f443647d3720bda
MD5 f46bb44372257819a8c77bd58ec163de
BLAKE2b-256 d683a8326262392d70da149507f340a1848fa7110d27db202246c1ce24277e4a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f1b310ec0fd8183a50425c03c0ff2aa626fd8fbfb26e821a8571012717e0a7f0
MD5 75f14851ee1d593b5bc6991c77f3235e
BLAKE2b-256 e3a7d3c47c0c207bdfb48cfd92d7ec1fcc518e8e9e884b1f5bf5d63f6a90f40c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 200d22e557f5eac61c79fa77d2d4de20c96abe7b94f7aa8627dfd7a545a45386
MD5 de1cf8523d7321cd7c17df89deba9625
BLAKE2b-256 c9a153c463b87f7fc8e751dba67b0715e9f3e04d32deab37062571bef6917aa7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 e009458440fd20148d06a6382c77ffb62659d451aabcdd0ed6969344e296cdec
MD5 d1143aa28b6597be06588b3abedad92e
BLAKE2b-256 8a20fce8034393d786f2cc9c2a9956d30437153745cbda336ca65aecf6f0861a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ee4839473caf4fa9e3eeafb83052f57f5bfc8e549d42c4123caa30484ac7e077
MD5 bf96d25278ce1935098ef4b402e65c7f
BLAKE2b-256 7567f0b302a6f416d36a06b4369f30d33966a6f5be15f84c1218c9d28cac5414

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b707907312e02ff5572db1f20e367adb74f4c3b26db1afbcb104f17820770d09
MD5 19ba334345cea7ce0aeab0a8d615cf6f
BLAKE2b-256 807e2709780395003c44bbbd15d32af9bd6734c9254e55d0ab2704fe4651bd05

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 30342d1f03655542695c1bce109684b6f5dc0c85c70c878871f335d4791b0f1d
MD5 1fa1a5652e9fd13f88be024ac3dafe11
BLAKE2b-256 35b11cacb97e2806380df2789f29026dc7dd4de91eaa974674cf404d0cd8c5c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 70aa945d7db6ecb7bfbdc36b1625122498c52ce0e4f6d4174bb841f7f8c0d832
MD5 25e08a57c5977acfdb5cf4e9a387a6bb
BLAKE2b-256 76568549dfe6f4dd2e9beb0761d2b65b4cffc3df6d96c348232bc2bd1fdc36a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 e3571ff89f966cea0f47ea83a19b4c7588cbc5b2cbb3a8e0e70a4dd4e0372456
MD5 cf247971f499d603295030551dcfbac0
BLAKE2b-256 657263de97a2482e80502c64d4f843d253f59ff269fb92dfd6ef9a573841c952

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0ab828f677ef94b5f8e5f5a191e80670cae6128a916e5a27c19d579503603b8a
MD5 d144a50aca4308020797003c6da54b33
BLAKE2b-256 e4920f4d45cff1ac686749088928b7cc3c9685d8a3af38d8c2e6ae03808333c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c7e3112f52cdf440c27bed7dfc3260208f8bd056497ba3d412c390c5dba49c2f
MD5 c4014b3b169cd3b0bedf067ff8aab442
BLAKE2b-256 8495e2c7cdfddccec837f4347816378be929d6eefedc5996fcd2ae9292a731ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a8db1637f65e988e281c59a4129b37060b19af4b37119a3dd66a35f47f88247e
MD5 9039bd27c976809c3141bcd829b9fd25
BLAKE2b-256 d0e57ae990a61ea00f79fe51779d1ffdb7ee26b7e8e7ffa1639710252099f0a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8f98316a53e4fc1642bf982674ab81d5f133188901bf23ed1ca1fbb0d0ae1c5b
MD5 8097d684d42cfe0c1aee640496789bc5
BLAKE2b-256 94e47bbb480134217e45b4915b542c5bb2fce6a3e54125829f839ae2b0eea28e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cbcd67c5cf0c099d0cc3e9c66d626ce47e1d7e8a5bcaceeb09592e4b559662fd
MD5 ab68f77c4922c8587415b04cae2a545e
BLAKE2b-256 603b3cbb6142c667838a668e56b9ff8fbcd9033d08d50eb7222654411639b4f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 aeb5e41a34e9ebb3ab60c5dcfb1a4d795f357d2f9419cacbb0cff40a75e13102
MD5 0d2305707222397632203f4e8c50d938
BLAKE2b-256 e2dd71f770021a92f8c82f9431051e811a862b6ed85f5f6cc8253a32d560b2c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 193f6559978f113c59969d506a00139a946295fcf5363f72d4f73363f16a77d8
MD5 99b53f9ebcfbbf7c94252ba9ba9446ce
BLAKE2b-256 d1a8344369f127f309bd0a43c9e53027e493a0c087303761066e3bd3ce2b50a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 d96da49be69e82a44e4953812ea3aa1e3f9981f469a7b6fca0a2a020f6471826
MD5 48d90f00393e1290a9a8e6bc9641f7d9
BLAKE2b-256 fd38c76a74e3653f8ed19c796293c020957ce5976226c5573e09b7cfc493f918

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e7f68a6abf43e7c01a1c28ac39df3199b34e0ca00d69ba8692268771fa93da62
MD5 f92639aade492f58be030b7458c0baf1
BLAKE2b-256 3a5465528463da50dc9a703f0b31c3c7c7dd8475a3c7d048f2c0022f06b7d683

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 69051dab0a81fa3ef7faf1971998b55f0181e7e3aea0b36d825428a26af385c1
MD5 b64b3642837b7a91fe263c25b535a740
BLAKE2b-256 fb9a950436a71d61e248d96257d3605177b702ea4669f913901c5376a4e7f84c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ace3727864e3280577cd4901baee53470bab26ffabfd1de34ce2bae2ce741bca
MD5 5f8c44095f6206f71a01b6be50de001e
BLAKE2b-256 5b746fb3176c20966ff1490d23ba633dad719f04a676d42a685051736f427baa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: falcon-4.0.0b1-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.0b1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 a822368800c8436e1deb7d6f8683a51aa6bfc794859d7a193bdb1c49f2fc89ba
MD5 683fd54967ab6f51dc73da87a8d82e15
BLAKE2b-256 a56870ddcafef018d07bc07e4935509d630335db21733e3a9ca0033cb9d8f04f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 47b10da90039da719071930971f429c015a8d4e5c4045a74f72ddae9a75c05ca
MD5 e8f7a0f5c263150ec856fac0c913fe5a
BLAKE2b-256 e70e9c3c195069c9ae088705101ec80b24fc59ad3f290cc89a5b2fa90d388ad7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e9a69545a638af7279d8b52af13ae0d933632773c9b6d82d76f9f1398f4a9971
MD5 1a90a9d2731b9fa043b1d11f27d6514f
BLAKE2b-256 bf563cf216524c81f3527da45afc1c1dd8bc457a6f46cc28d8831e3ec2ef5ebc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 db8461729e11bc4aa09e8d61d2cf8d0dceaee2b19892b3c294510529ed1e8881
MD5 dcad92d27e7213b7725e17df25043a19
BLAKE2b-256 96bbbe0b99651b15eea0c9bdfb0ef195f7a01e5620189f2ab27c13b837aeb8ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 d5904ebea3aaab7e3f4ac1ec789e60018ecb07c374b838eab64a884ed3aa69c7
MD5 bbabecf28ee566a759eb9e1ce95a78d6
BLAKE2b-256 47701d03a98b686db631c7170bc04247b2de061953fcc0e7a801d9852de09af9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1e7380f83e5462a4e3066c0afad830cb73be2522d81459b6eaf712cbc811c3b1
MD5 53c23d757f8552809ae464965853b2dd
BLAKE2b-256 422e86b128147b4f06242b9b9401f37398a256fd0c406d0afb63a40865f5b797

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7040170cb233e81e3d3df2d3c910601b147f8b6581152d8959713400f794dbf2
MD5 6f70b63cc04da5883e0cfca284dafd5d
BLAKE2b-256 546475a9b2db3612e000891ac0d131f090dc8a94278cb87586559149a5802710

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 10e77403b0af4285f1529ebb1e7400cafd4a8511ef09ac634c9ec00201512cfb
MD5 fc74a5a890ee74d98bcac932dad41821
BLAKE2b-256 22aa99d8a027ae413bb719b966b92dfdcc7ad59d9455df6de3b77a02d6e1a2eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0af91150090842688502ee11ef008329b43dbc27d16b4e46c6933046fc0ab999
MD5 f2395e67afd1090b7584f42c51e93320
BLAKE2b-256 960ca3ad5543dbb2c8399a56a545df415deada8b9fe56404b8774bc32e9237b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0b1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1a579d813527d0672cd5377365fe583689522aad4cdd08efaf28c5869b0426e9
MD5 afb77bdfee842cd74a34bc3143914758
BLAKE2b-256 983f4cfaec8d3db15f6ddac0cd130781140c4c9639b16a09993732930c23cb2b

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