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

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
$ 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.0a2.tar.gz (620.8 kB view details)

Uploaded Source

Built Distributions

falcon-4.0.0a2-py3-none-any.whl (590.9 kB view details)

Uploaded Python 3

falcon-4.0.0a2-cp313-cp313-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.13 Windows x86-64

falcon-4.0.0a2-cp313-cp313-musllinux_1_2_x86_64.whl (13.0 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ x86-64

falcon-4.0.0a2-cp313-cp313-musllinux_1_2_aarch64.whl (12.3 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.2+ ARM64

falcon-4.0.0a2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.8 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

falcon-4.0.0a2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (13.2 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ s390x

falcon-4.0.0a2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (12.6 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

falcon-4.0.0a2-cp313-cp313-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

falcon-4.0.0a2-cp313-cp313-macosx_10_13_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.13 macOS 10.13+ x86-64

falcon-4.0.0a2-cp312-cp312-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.12 Windows x86-64

falcon-4.0.0a2-cp312-cp312-musllinux_1_2_x86_64.whl (13.2 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

falcon-4.0.0a2-cp312-cp312-musllinux_1_2_aarch64.whl (12.5 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

falcon-4.0.0a2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.0 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

falcon-4.0.0a2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (13.4 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

falcon-4.0.0a2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (12.8 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

falcon-4.0.0a2-cp312-cp312-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

falcon-4.0.0a2-cp312-cp312-macosx_10_13_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.12 macOS 10.13+ x86-64

falcon-4.0.0a2-cp311-cp311-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.11 Windows x86-64

falcon-4.0.0a2-cp311-cp311-musllinux_1_2_x86_64.whl (12.9 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

falcon-4.0.0a2-cp311-cp311-musllinux_1_2_aarch64.whl (12.5 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

falcon-4.0.0a2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

falcon-4.0.0a2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (13.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

falcon-4.0.0a2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (12.7 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

falcon-4.0.0a2-cp311-cp311-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

falcon-4.0.0a2-cp311-cp311-macosx_10_9_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

falcon-4.0.0a2-cp310-cp310-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.10 Windows x86-64

falcon-4.0.0a2-cp310-cp310-musllinux_1_2_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

falcon-4.0.0a2-cp310-cp310-musllinux_1_2_aarch64.whl (11.2 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

falcon-4.0.0a2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.6 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

falcon-4.0.0a2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (12.1 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

falcon-4.0.0a2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (11.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

falcon-4.0.0a2-cp310-cp310-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

falcon-4.0.0a2-cp310-cp310-macosx_10_9_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

falcon-4.0.0a2-cp39-cp39-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.9 Windows x86-64

falcon-4.0.0a2-cp39-cp39-musllinux_1_2_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

falcon-4.0.0a2-cp39-cp39-musllinux_1_2_aarch64.whl (11.3 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

falcon-4.0.0a2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

falcon-4.0.0a2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (12.1 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

falcon-4.0.0a2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (11.5 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

falcon-4.0.0a2-cp39-cp39-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

falcon-4.0.0a2-cp39-cp39-macosx_10_9_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

falcon-4.0.0a2-cp38-cp38-musllinux_1_2_x86_64.whl (12.1 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

falcon-4.0.0a2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.9 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

File details

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

File metadata

  • Download URL: falcon-4.0.0a2.tar.gz
  • Upload date:
  • Size: 620.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for falcon-4.0.0a2.tar.gz
Algorithm Hash digest
SHA256 b4596ffc4d5a2dc5207e7fdb2e893ec022d977aa0e755c73430965e4bcc19932
MD5 8d7462c99e95a2a114c3a5ba84bef351
BLAKE2b-256 dc791d344d2b9ccefc3c343b491d0fc83b4fc18f58d86a30d016116fc35f7449

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for falcon-4.0.0a2-py3-none-any.whl
Algorithm Hash digest
SHA256 e38aa836535d42eb4df1512eb9c5864ed310da803dc6d01b3ac2b74e0ae333a0
MD5 85169d57d70817b9b006a7c5af425971
BLAKE2b-256 67024805751350c16577d5fcce7bc85e212e5ae3a9a9ad216fd150a8d2e945fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a809eb7f4ee96d5ca8cd0c6f8f80043c4e6d170b1bbed98b4292220266883266
MD5 adc60c2343d62c86c91b4bda015468e8
BLAKE2b-256 93ca7fa01db6cc40da089ad43c050172d5e2e018cec4633d85291a98331bd7e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ce9fb60d92d05fbbefdf999ae5757486462a3068002ecfbf3288031131d0fc5a
MD5 504c6f930181e6a171abdb5dc54f3318
BLAKE2b-256 c4c790c0dd72df5f349b1f9f1029e527bef4d799315e0c378c5862a552cdbd9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9549592e9058e81c87cadb3795b6d2f79ab5b3a0a86d7aecb1568d80d4bbb1c4
MD5 ab7028d4f89bd6364b718da6c19ec292
BLAKE2b-256 47525d2a258b8ea56f21f76932405acbd2ba6a57918626dc8add388b5fb38df4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ee63fc480f045b50944bd4cf67bc443153e660ccb63a57f3638e840f8e1dd4f8
MD5 fbe1a83a172951b03864efeeb9187a80
BLAKE2b-256 f187bedb39649b5de9b6801eddff4675b46a5e6173b79b7c9ba2038d3d768aca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 a809c35fdc2343636acb21f051e8deffea8e65921d0aad10a2bbb1f724f6dc05
MD5 b45102c59981878bdf8d07ec7ab23f96
BLAKE2b-256 349f9f820cd3da7ae0ccea7cd3fe8f583820d8dc156f85b36b2d6c9eace735b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1ea4d66b2a6d59eb8ffb9b84aaddedfa3b6c2bde3f201a7093b02b72d2956ee7
MD5 7ace6166f60c2ffe46a8f12787613a08
BLAKE2b-256 8b9bc9c7598fe07bcdb4761509f5082cc574cb81ee88d7fff52355f5b381b254

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3e7ef8402562d526061ef06fe23c400541996137a542cef2a0bf4db7684249f8
MD5 080587a41635063bf3a9007a1b3cd222
BLAKE2b-256 f63e8f7cf65ed66f90f6ef9b999e6ddf23b15cb75e6bb12649177865ac2ab801

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 84776cd6093dcf113a12f0811e2e5b259cfd577810bc7323546f51179fbc4813
MD5 15a3370a53da376c9d1e78391bae700a
BLAKE2b-256 abeb32027f2ed17efa6d2cbb421d0a752be2a4c68adae1b7927f708559211bc3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a9c268d0ac0c8ac720b36f49f2e4ddf4385be9efd30c6f7fec7a1c8a98184205
MD5 0e1ff6521ab3e08747a9dbdf31ee19ad
BLAKE2b-256 a5fd053718af8b07d2bf257947309a812e87972cdfa925541b4c474643048a03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ce374950ec2280bfa3d299430ed5a2c91d3dc1d674cbcc767069da0fd7d51fd1
MD5 1c02e6decaace3462a6ad02ee95b37c1
BLAKE2b-256 dfcd11c6da5aa1e3c7d9ed6568650c6f6c0828acf7f0c1bc5bed5524fb682edf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 315adb63e819f58a3186a849486131ec69d5f10289c403c84f11bf6c01e5500d
MD5 ce2f73aac67dfc121fb49aa9883889a4
BLAKE2b-256 b0868c6c09256491f9cea30bebb56009d0d3d6ca42584d3d9bc0e8d4e3296763

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 71d2b5bad0df2edab9f767f8231ea68c008783d0ce6d312cb31942f1d9f9da77
MD5 afaaed85a4445bbb6703bf36f299712e
BLAKE2b-256 d32007ca90a435a20eca2778cb26f23e50b039d2b6e291cf9dbd3bb438211df0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 9a6b0dbd4eb81776dac03ed228de098e91188e034489b69cb9bcc35828d5d26f
MD5 477175b2a7e0cd5425e3612f2558a661
BLAKE2b-256 76ba559b9d21c466896cae6b4936d65f52f75ac12099a656734b73c82c2735ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e9814a882ef69f3ad4be8b16b50291561cf4d07735ac06b6b2ba41ddc4362d49
MD5 4413fb13d24c9cdddaea1573addb3ca0
BLAKE2b-256 67a68a487ed049ce96f4dd80744d3db46d5c0d035c38038f255ac9ec967e67c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4bc947dc6e1d168c614c9411e9620893e5f9468dd6b8c21c01a4ed97f2ba6def
MD5 20cafc7f1ea0a657493c02f2691d5a47
BLAKE2b-256 b709f5e95e63909b6ee6e586602fbfd0aee48f748d2464b4f308f2c5213ebf46

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 46ee01943870aaf1a427e9592db113bf0b106ba59e8a25c234714fb9a2fa2c2c
MD5 805e982a51304e9ef9dc0e3478d0077a
BLAKE2b-256 31655eefcc97ad10f3c102f6e501a1a83d103a6093e69ec622d1146b68cadb48

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4b3e5431b2759d0d8fd8b2111b6fde175c670a5aea62786e6546fd5df61157ce
MD5 ee52a03b505043fd2579e574047b46df
BLAKE2b-256 81c2ff7fa288cf53f4f4e49a2121ac9324956ad622700a48b5bc437950177994

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bb897b2f862c29ec604c43faff96f943b8276ee492d30175f9367a161eeac519
MD5 e068a81dc9e25cd84ef82b7f5828c0cd
BLAKE2b-256 21506ed5d7a336e98473ae5dcbabfa8b44bbf00769750883f2453c3bf13102f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2510ecb7269290e5a40dba3c1bcfd6dcd63f8580419989bb78c141f521491da7
MD5 638ce11029488fb4e62a3ab3d5376e45
BLAKE2b-256 e88192580e04b5c9150f8920a7474b71a5f1c134fe1fec10b2632031888faf49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f8430328f0b1775e95fc99e3643cf8b6066b4f3bec8c904156057567095cd4ad
MD5 84e58faa3ea403658ec484b367da12a4
BLAKE2b-256 e8accb5f04058cbee30bb1d0741a76fd46e2898349f40906cf7deab7d91b6d01

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 3ffaccd6e81cdc62bca4a6f0c18cc31cc1082bf761813029822aad291f0449b0
MD5 b8da67db02eb3c1ea69802d42534925e
BLAKE2b-256 2a1cf4b3fc6bc224fdd1cdda3ecd6c44a7a32e54cec7e1e154dbf6bfea20ff8e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 30b067cf3c96de7b2fb43bd3f161028fdc01bb12bb8b83977ce69510ad1c58d9
MD5 262352d46161dd6b26fdcc7d0ae2a156
BLAKE2b-256 1692be6a38c1e3c34d71b64b424256a88eaa6c21ac97b1bc317a3ca9407e847f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7cd2820982b39fc9c40e382514a0b663c3a3eb792321200fc7896143d45dd205
MD5 c200963082f621317ee62e1e86f054f3
BLAKE2b-256 52d4495fc9f39e1fa39184499db91732e3b2a7db39812ca60f2f1afc5ce300a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 78e1b9019ea983b879738d1ea0ec273faa242297bcb5c87b1ba3dd4f54518392
MD5 12f5d14462bee01f3b9f01a337c074dd
BLAKE2b-256 f27e372a050e7da9d1f89099d979c81a75f02b4777982533a9c40ac7e02cd3e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 cb68ce7a9641b395ae8fcee53829964cf1c7c3b9d773c0d3249b9e4436a796f2
MD5 2d95cf63ae574e09564d42089e45d6e1
BLAKE2b-256 0b0353474db3785fc6e3a2c72a91da8f3cc4247a8540a29d62bca2d528ed810e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7c4eed5ccf1e0ad6f47efefc00f7d107b05c20b698bf88c3aa3dae538400ae1c
MD5 0e7e52b16dbb5a6c813b9a4614c57354
BLAKE2b-256 8a06e990c723a3d3642abf34c2f3fcaba12bdd9ef4ee0cb2af07b90fec00b426

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d91ec58ba3deba319a6bb46cdad8bcc3db92c74b57c33a055ef694300b991ae5
MD5 58ca8a036182741a19b28d8600aceeed
BLAKE2b-256 f40ce638592cbe084054c9c91e5c3bdb2901806dc1e132d8e909a1de9c237b93

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d747340df1fe4bb1bfe1b41dd4273163999c56f5303446fc2ee286fb37f3cd0e
MD5 2fafb06832c4abc0cb75c165ddbbda39
BLAKE2b-256 eee6a4d80aacbc4f2fe38b33dfeeb2fb9a130bf3fd91ccfdd7b85e00e4bd5edb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 5cefae16e4f7f93d2600605fc31c616510421cc6bb331483f72a5b65f0ecaae8
MD5 e11bf6e0b73bcc841c072defc11810ed
BLAKE2b-256 f7f2eb34a2de6b5533f973738254564c626ab81ed0604ee615ea00666b7b610b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ab841ea9b952056692080eaa5c9677ce9055a430af4b256f5c45ffea452109bc
MD5 37970f5a82af447e3398e55ab881a7c3
BLAKE2b-256 bee34d4de54f426c72e757817879e93880039a04aa4e6135a5a2021d0b88a6e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e0109d74ce99e0b18e3d97e58a588f474a93241e906cc86bb7cd7e3c056342c6
MD5 574eab2f90f505f38684b90f85b7a68c
BLAKE2b-256 246005a32882f390504d04986936574fb0ecee0efd258646c84b3c9382c86c79

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2a8817ab58f482b4250e82d1c248d09eadb1dc477179e0a3571d4a57e2143474
MD5 67f1e6919e4c96d99c0a631cbbc93704
BLAKE2b-256 6adcb871bbce30bac6ec4c35dc42f3a08e2378ded17a2c8ddeac2672ebc4cdbd

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for falcon-4.0.0a2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 48836501bc9cccffb15dedf78a8a32c06ef54046c4d5e89bca58113b324a7174
MD5 ba5bd9cd3a9b700bdc5e8c1b5f01d581
BLAKE2b-256 5cf435d4bd08db71b61e8a143f5a21871ac463cbb9f0803412ca95362808149f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 93c4ab8e60a6799414570253807368c4dfcd2fef1046003e1cad06c3d72314b9
MD5 b412c68050f76f5c754851c3ece3dc98
BLAKE2b-256 15109c2d403e4979925f8c304580ec94096acdb9b0bec565d626e0cfc70dfd6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3d868421056f135ec7849c6a7f6779abd61b0a43d5bef838119d9ecc53416d66
MD5 3ad6e3830e2ca7b0cbc1a9190d62e3a2
BLAKE2b-256 2896904cec3173f7d76efbb5032ff09942595af672cff2d5f8057dfc7f2bbfd7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 118f056c4a6997907606928ee3d4652f36af10db49df5cd7d3703f48ab9397bf
MD5 6379d14bd035ce78c93379c39f6ee211
BLAKE2b-256 c8d187e6fc54872095e2574dfd98fff18dd50b5d273217329968dd5114d142b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 5ef57b927670956859d28e277e8c006debba31465ba77c011d80d33f7be85a27
MD5 466fd80a83cf9b2be84dc57310a7ddd8
BLAKE2b-256 7b9f476da5f202e4faa21deff196128d2677316d6a730fbc3305526d0e19c36a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 511a37a389d55ccd98299e46d26fe2af062c530d6c905467e8e6c146d5673756
MD5 c5e4caa42a73069061c25ad2eed6aed8
BLAKE2b-256 884f3d634223cd07e915004af269d10221d9055f273276f19b7fdcd6555c08f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1325bdbd64bd5c456c518ce39ce84b7bc33b0d1bffd0cf9e13376bb1b627d9e6
MD5 636a57eba1f3af08ad23e9494be81333
BLAKE2b-256 c70e92522db11706fc51c4e2b9a98dc3cbf5b01297d4bfecbb41f682fdbaf3d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e0b70d54cd028641801d27fecf8f3f9be6c0888ff3e0232492f5f8932e25238e
MD5 63801ee4878d6c083910f72eb76bf3b8
BLAKE2b-256 8ff310f70c1d235cd7d5a558ae7ae251a1e2496df7eba294982441df9bda16a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 14878beca228fc6ed72577accdfe7a69de028f353c8a548c34e4e54b2dd912e5
MD5 5965766080b184fc26d3422e73a00908
BLAKE2b-256 e39125b085976abf7ea3109e82f6123ae809bdee250a2127a8940cb3304ff8d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for falcon-4.0.0a2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 239c72ca67481292916a4d051c6e3047df2b6b96ea27411a1435b2fd64711ff0
MD5 82584017992b765da3cf30477fa4b31f
BLAKE2b-256 d814c56361745966bdd7ebd1d0f6140c23622da3c459db23884bec21ef0a4ed8

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