Skip to main content

A Rust HTTP server for Python applications

Project description

Granian

A Rust HTTP server for Python applications built on top of the Hyper crate.

Rationale

The main reasons behind Granian design are:

  • Have a single, correct HTTP implementation, supporting versions 1, 2 (and eventually 3)
  • Provide a single package for several platforms
  • Avoid the usual Gunicorn + uvicorn + http-tools dependency composition on unix systems
  • Provide stable performance when compared to existing alternatives

Features

  • Supports ASGI/3, RSGI and WSGI interface applications
  • Implements HTTP/1 and HTTP/2 protocols
  • Supports HTTPS
  • Supports Websockets

Quickstart

You can install Granian using pip:

$ pip install granian

Create an ASGI application in your main.py:

async def app(scope, receive, send):
    assert scope['type'] == 'http'

    await send({
        'type': 'http.response.start',
        'status': 200,
        'headers': [
            [b'content-type', b'text/plain'],
        ],
    })
    await send({
        'type': 'http.response.body',
        'body': b'Hello, world!',
    })

and serve it:

$ granian --interface asgi main:app

You can also create an app using the RSGI specification:

async def app(scope, proto):
    assert scope.proto == 'http'

    proto.response_str(
        status=200,
        headers=[
            ('content-type', 'text/plain')
        ],
        body="Hello, world!"
    )

and serve it using:

$ granian --interface rsgi main:app

Options

You can check all the options provided by Granian with the --help command:

$ granian --help
Usage: granian [OPTIONS] APP

  APP  Application target to serve.  [required]

Options:
  --host TEXT                     Host address to bind to  [env var:
                                  GRANIAN_HOST; default: (127.0.0.1)]
  --port INTEGER                  Port to bind to.  [env var: GRANIAN_PORT;
                                  default: 8000]
  --interface [asgi|asginl|rsgi|wsgi]
                                  Application interface type  [env var:
                                  GRANIAN_INTERFACE; default: (rsgi)]
  --http [auto|1|2]               HTTP version  [env var: GRANIAN_HTTP;
                                  default: (auto)]
  --ws / --no-ws                  Enable websockets handling  [env var:
                                  GRANIAN_WEBSOCKETS; default: (enabled)]
  --workers INTEGER RANGE         Number of worker processes  [env var:
                                  GRANIAN_WORKERS; default: 1; x>=1]
  --threads INTEGER RANGE         Number of threads (per worker)  [env var:
                                  GRANIAN_THREADS; default: 1; x>=1]
  --blocking-threads INTEGER RANGE
                                  Number of blocking threads (per worker)
                                  [env var: GRANIAN_BLOCKING_THREADS; x>=1]
  --threading-mode [runtime|workers]
                                  Threading mode to use  [env var:
                                  GRANIAN_THREADING_MODE; default: (workers)]
  --loop [auto|asyncio|rloop|uvloop]
                                  Event loop implementation  [env var:
                                  GRANIAN_LOOP; default: (auto)]
  --task-impl [auto|rust|asyncio]
                                  Async task implementation to use  [env var:
                                  GRANIAN_TASK_IMPL; default: (auto)]
  --backlog INTEGER RANGE         Maximum number of connections to hold in
                                  backlog (globally)  [env var:
                                  GRANIAN_BACKLOG; default: 1024; x>=128]
  --backpressure INTEGER RANGE    Maximum number of requests to process
                                  concurrently (per worker)  [env var:
                                  GRANIAN_BACKPRESSURE; default:
                                  (backlog/workers); x>=1]
  --http1-buffer-size INTEGER RANGE
                                  Set the maximum buffer size for HTTP/1
                                  connections  [env var:
                                  GRANIAN_HTTP1_BUFFER_SIZE; default: 417792;
                                  x>=8192]
  --http1-keep-alive / --no-http1-keep-alive
                                  Enables or disables HTTP/1 keep-alive  [env
                                  var: GRANIAN_HTTP1_KEEP_ALIVE; default:
                                  (enabled)]
  --http1-pipeline-flush / --no-http1-pipeline-flush
                                  Aggregates HTTP/1 flushes to better support
                                  pipelined responses (experimental)  [env
                                  var: GRANIAN_HTTP1_PIPELINE_FLUSH; default:
                                  (disabled)]
  --http2-adaptive-window / --no-http2-adaptive-window
                                  Sets whether to use an adaptive flow control
                                  for HTTP2  [env var:
                                  GRANIAN_HTTP2_ADAPTIVE_WINDOW; default:
                                  (disabled)]
  --http2-initial-connection-window-size INTEGER
                                  Sets the max connection-level flow control
                                  for HTTP2  [env var: GRANIAN_HTTP2_INITIAL_C
                                  ONNECTION_WINDOW_SIZE; default: 1048576]
  --http2-initial-stream-window-size INTEGER
                                  Sets the `SETTINGS_INITIAL_WINDOW_SIZE`
                                  option for HTTP2 stream-level flow control
                                  [env var:
                                  GRANIAN_HTTP2_INITIAL_STREAM_WINDOW_SIZE;
                                  default: 1048576]
  --http2-keep-alive-interval INTEGER
                                  Sets an interval for HTTP2 Ping frames
                                  should be sent to keep a connection alive
                                  [env var: GRANIAN_HTTP2_KEEP_ALIVE_INTERVAL]
  --http2-keep-alive-timeout INTEGER
                                  Sets a timeout for receiving an
                                  acknowledgement of the HTTP2 keep-alive ping
                                  [env var: GRANIAN_HTTP2_KEEP_ALIVE_TIMEOUT;
                                  default: 20]
  --http2-max-concurrent-streams INTEGER
                                  Sets the SETTINGS_MAX_CONCURRENT_STREAMS
                                  option for HTTP2 connections  [env var:
                                  GRANIAN_HTTP2_MAX_CONCURRENT_STREAMS;
                                  default: 200]
  --http2-max-frame-size INTEGER  Sets the maximum frame size to use for HTTP2
                                  [env var: GRANIAN_HTTP2_MAX_FRAME_SIZE;
                                  default: 16384]
  --http2-max-headers-size INTEGER
                                  Sets the max size of received header frames
                                  [env var: GRANIAN_HTTP2_MAX_HEADERS_SIZE;
                                  default: 16777216]
  --http2-max-send-buffer-size INTEGER
                                  Set the maximum write buffer size for each
                                  HTTP/2 stream  [env var:
                                  GRANIAN_HTTP2_MAX_SEND_BUFFER_SIZE; default:
                                  409600]
  --log / --no-log                Enable logging  [env var:
                                  GRANIAN_LOG_ENABLED; default: (enabled)]
  --log-level [critical|error|warning|warn|info|debug|notset]
                                  Log level  [env var: GRANIAN_LOG_LEVEL;
                                  default: (info)]
  --log-config FILE               Logging configuration file (json)  [env var:
                                  GRANIAN_LOG_CONFIG]
  --access-log / --no-access-log  Enable access log  [env var:
                                  GRANIAN_LOG_ACCESS_ENABLED; default:
                                  (disabled)]
  --access-log-fmt TEXT           Access log format  [env var:
                                  GRANIAN_LOG_ACCESS_FMT]
  --ssl-certificate FILE          SSL certificate file  [env var:
                                  GRANIAN_SSL_CERTIFICATE]
  --ssl-keyfile FILE              SSL key file  [env var: GRANIAN_SSL_KEYFILE]
  --ssl-keyfile-password TEXT     SSL key password  [env var:
                                  GRANIAN_SSL_KEYFILE_PASSWORD]
  --url-path-prefix TEXT          URL path prefix the app is mounted on  [env
                                  var: GRANIAN_URL_PATH_PREFIX]
  --respawn-failed-workers / --no-respawn-failed-workers
                                  Enable workers respawn on unexpected exit
                                  [env var: GRANIAN_RESPAWN_FAILED_WORKERS;
                                  default: (disabled)]
  --respawn-interval FLOAT        The number of seconds to sleep between
                                  workers respawn  [env var:
                                  GRANIAN_RESPAWN_INTERVAL; default: 3.5]
  --workers-lifetime INTEGER RANGE
                                  The maximum amount of time in seconds a
                                  worker will be kept alive before respawn
                                  [env var: GRANIAN_WORKERS_LIFETIME; x>=60]
  --workers-kill-timeout INTEGER RANGE
                                  The amount of time in seconds to wait for
                                  killing workers that refused to gracefully
                                  stop  [env var:
                                  GRANIAN_WORKERS_KILL_TIMEOUT; default:
                                  (disabled); 1<=x<=1800]
  --factory / --no-factory        Treat target as a factory function, that
                                  should be invoked to build the actual target
                                  [env var: GRANIAN_FACTORY; default:
                                  (disabled)]
  --reload / --no-reload          Enable auto reload on application's files
                                  changes (requires granian[reload] extra)
                                  [env var: GRANIAN_RELOAD; default:
                                  (disabled)]
  --reload-paths PATH             Paths to watch for changes  [env var:
                                  GRANIAN_RELOAD_PATHS; default: (Working
                                  directory)]
  --reload-ignore-dirs TEXT       Names of directories to ignore changes for.
                                  Extends the default list of directories to
                                  ignore in watchfiles' default filter  [env
                                  var: GRANIAN_RELOAD_IGNORE_DIRS]
  --reload-ignore-patterns TEXT   File/directory name patterns (regex) to
                                  ignore changes for. Extends the default list
                                  of patterns to ignore in watchfiles' default
                                  filter  [env var:
                                  GRANIAN_RELOAD_IGNORE_PATTERNS]
  --reload-ignore-paths PATH      Absolute paths to ignore changes for  [env
                                  var: GRANIAN_RELOAD_IGNORE_PATHS]
  --process-name TEXT             Set a custom name for processes (requires
                                  granian[pname] extra)  [env var:
                                  GRANIAN_PROCESS_NAME]
  --pid-file FILE                 A path to write the PID file to  [env var:
                                  GRANIAN_PID_FILE]
  --version                       Show the version and exit.
  --help                          Show this message and exit.

Logging

Despite being a Rust project, Granian is a good Python citizen and uses the standard library's logging module to produce logs. This means you can freely configure your logging level and format using the standard idioms you probably familiar with.

As many other web servers, Granian uses two different loggers, specifically:

  • the _granian logger for runtime messages
  • the granian.access logger for access logs

Access log format

The access log format can be configured by specifying the atoms (see below) to include in a specific format. By default Granian will use [%(time)s] %(addr)s - "%(method)s %(path)s %(protocol)s" %(status)d %(dt_ms).3f as the format.

Access log atoms

The following atoms are available for use:

identifier description
addr Client remote address
time Datetime of the request
dt_ms Request duration in ms
status HTTP response status
path Request path (without query string)
query_string Request query string
method Request HTTP method
scheme Request scheme
protocol HTTP protocol version

Processes and threads

Granian offers different options to configure the number of processes and threads to be run, in particular:

  • workers: the total number of processes holding a dedicated Python interpreter that will run the application
  • threads: the number of Rust threads per worker that will perform network I/O
  • blocking threads: the number of Rust threads per worker involved in blocking operations. The main role of these threads is to deal with blocking I/O – like opening files – but on synchronous protocols like WSGI these threads will also be responsible of interacting with the application code.

In general, Granian will try its best to automatically pick proper values for the threading configuration, leaving to you the responsibility to choose the number of workers you need.
There is no golden rule here, as these numbers will vastly depend both on your application behavior and the deployment target, but we can list some suggestions:

  • matching the amount of CPU cores for the workers is generally the best starting point; on containerized environments like docker or k8s is best to have 1 worker per container though and scale your containers using the relevant orchestrator;
  • the default number of threads is fine for the vast majority of applications out there; you might want to increase this number for applications dealing with several concurrently opened websockets;
  • the default number of blocking threads should work properly with the majority of applications; in synchronous protocols like WSGI this will also impact the number of concurrent requests you can handle, but you should use the backpressure configuration parameter to control it and set a lower number of blocking threads only if your application has a very low (1ms order) average response time;

Also, you should generally avoid to configure workers and threads based on numbers of other servers, as Granian architecture is quite different from projects like Gunicorn or Uvicorn.

Threading mode

Granian offers two different threading paradigms, due to the fact the inner Rust runtime can be multi-threaded – in opposition to what happens in Python event-loop which can only run as a single thread.

Given you specify N threads with the relevant option, in workers threading mode Granian will spawn N single-threaded Rust runtimes, while in runtime threading mode Granian will spawn a single multi-threaded runtime with N threads.

Benchmarks suggests workers mode to be more efficient with a small amount of processes, while runtime mode seems to scale more efficiently where you have a large number of CPUs. Real performance will though depend on specific application code, and thus your mileage might vary.

Project status

Granian is currently under active development.

Granian is compatible with Python 3.9 and above versions.

License

Granian is released under the BSD License.

Project details


Download files

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

Source Distribution

granian-1.7.1.tar.gz (80.2 kB view details)

Uploaded Source

Built Distributions

granian-1.7.1-pp310-pypy310_pp73-win_amd64.whl (2.2 MB view details)

Uploaded PyPy Windows x86-64

granian-1.7.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl (2.5 MB view details)

Uploaded PyPy musllinux: musl 1.1+ x86-64

granian-1.7.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl (2.4 MB view details)

Uploaded PyPy musllinux: musl 1.1+ ARM64

granian-1.7.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

granian-1.7.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

granian-1.7.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded PyPy macOS 11.0+ ARM64

granian-1.7.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl (2.2 MB view details)

Uploaded PyPy macOS 10.12+ x86-64

granian-1.7.1-pp39-pypy39_pp73-win_amd64.whl (2.2 MB view details)

Uploaded PyPy Windows x86-64

granian-1.7.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl (2.5 MB view details)

Uploaded PyPy musllinux: musl 1.1+ x86-64

granian-1.7.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl (2.4 MB view details)

Uploaded PyPy musllinux: musl 1.1+ ARM64

granian-1.7.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

granian-1.7.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

granian-1.7.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded PyPy macOS 11.0+ ARM64

granian-1.7.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl (2.2 MB view details)

Uploaded PyPy macOS 10.12+ x86-64

granian-1.7.1-cp313-cp313-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.13 Windows x86-64

granian-1.7.1-cp313-cp313-musllinux_1_1_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.1+ x86-64

granian-1.7.1-cp313-cp313-musllinux_1_1_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.1+ ARM64

granian-1.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

granian-1.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

granian-1.7.1-cp313-cp313-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

granian-1.7.1-cp313-cp313-macosx_10_12_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.13 macOS 10.12+ x86-64

granian-1.7.1-cp312-cp312-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.12 Windows x86-64

granian-1.7.1-cp312-cp312-musllinux_1_1_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

granian-1.7.1-cp312-cp312-musllinux_1_1_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ ARM64

granian-1.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

granian-1.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

granian-1.7.1-cp312-cp312-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

granian-1.7.1-cp312-cp312-macosx_10_12_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.12 macOS 10.12+ x86-64

granian-1.7.1-cp311-cp311-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.11 Windows x86-64

granian-1.7.1-cp311-cp311-musllinux_1_1_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

granian-1.7.1-cp311-cp311-musllinux_1_1_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ ARM64

granian-1.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

granian-1.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

granian-1.7.1-cp311-cp311-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

granian-1.7.1-cp311-cp311-macosx_10_12_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.11 macOS 10.12+ x86-64

granian-1.7.1-cp310-cp310-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.10 Windows x86-64

granian-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

granian-1.7.1-cp310-cp310-musllinux_1_1_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ ARM64

granian-1.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

granian-1.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

granian-1.7.1-cp310-cp310-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

granian-1.7.1-cp310-cp310-macosx_10_12_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.10 macOS 10.12+ x86-64

granian-1.7.1-cp39-cp39-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.9 Windows x86-64

granian-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

granian-1.7.1-cp39-cp39-musllinux_1_1_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ ARM64

granian-1.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

granian-1.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

granian-1.7.1-cp39-cp39-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

granian-1.7.1-cp39-cp39-macosx_10_12_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.9 macOS 10.12+ x86-64

File details

Details for the file granian-1.7.1.tar.gz.

File metadata

  • Download URL: granian-1.7.1.tar.gz
  • Upload date:
  • Size: 80.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for granian-1.7.1.tar.gz
Algorithm Hash digest
SHA256 d15d715063c1e6119438fa1449913673b28b220613062c7518fa3095fdc6b881
MD5 29c2587d29aaeda7cc55951ea2f342b6
BLAKE2b-256 523ad88828fb585b7acad8a5ee8c36cbfbc860b4fc750315b5f95e3028087c2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1.tar.gz:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-pp310-pypy310_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 0629cd2b2089fa9b24b6ffa69abe3f69708846b21dde05bec8d9df93e7bb7d6b
MD5 20d7657f8c0b498f0e1954ae4b450e74
BLAKE2b-256 9e92e9910e1619fe262e1e15d16d55cdc5676604c2103526dccb5d443068cb20

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-pp310-pypy310_pp73-win_amd64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 893a3e774796a86646eb4a5982a869e5c538ec3b874f868c3e7950f1aaedd92a
MD5 c19081e2849c4d6c83aa9a2e39c32e28
BLAKE2b-256 8be0a425950e9ed513b7b8eff67c447806bbbbffef1c901a349efc3487e71eb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 d5bd955228c848a238c131b104bee055e1a1245b3c699fb450c362538845728e
MD5 6bf7bdd2f5ddf726f8bd4a8060cc3c7e
BLAKE2b-256 128cd28e2cff7ab0ec37981ab57cbfa23a25b2ea6611fd007973773235a83262

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e82d97e12bad15a2c14c2ff26f015f6e2099aa3e6fdea95a14202085f88e5345
MD5 f2bc6c5ff48dfff1d00697f6f775c639
BLAKE2b-256 5d0bd8db66293616e9f8765819762533724479f9934881e2b744acc746b8b64b

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dd8292ed7d4293905420ca5468f85be6b1245a9214380c8a0df4fa864ebd6521
MD5 49316cf784ceea05433f78e48d0f657f
BLAKE2b-256 0985cd3c54918bd88f210b10d6484289ef29aad81115a80ddd386d672bf0738b

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0e97b62f241a3dc830de7ded811897ecce506909b507a56f6e8b02031462445c
MD5 88874634df180a25cb3ec72387db3fb3
BLAKE2b-256 4755066877feca2904745b6fc17378066e75f20a41bdd95960e3498997ef2c19

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fc2195ed7c369c59c81ec3b94c625ac061512a9e17b3d17c63cdc131307fd50a
MD5 e026c5f01482aa51dcfe2f9beca12eec
BLAKE2b-256 01020edff6499b13e0de110516b60fa64c5ee7e7285be404be1aa3efadc7d6ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-pp39-pypy39_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 66d0dc46f40ef857e0235b9e497f72c35505f7e4a71e02207b87726fefc57186
MD5 1d6aa29a9c19162c19431244cca80369
BLAKE2b-256 f42a0e5b8a4330cc7e5d54bee4705730b2e4fd91100fcd5c239ce98ebf73f477

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-pp39-pypy39_pp73-win_amd64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 4c7fab4826c6c488cc0a4c9e56bd417a31a32bcf3a091ab59a84ed81b8c5a538
MD5 1d5abbaf75ea945440c77f997a4ec7a3
BLAKE2b-256 861360ab7d890fe39dcb5fd840c57dc51c61770c8b8fe6d6f4125e24a483a80d

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 0ffe8d12ca27c72299a6d56e1d0f64bd44b099ebb6bcc87528b99aab7497903c
MD5 5e5296507ae3c1bc78c1afe20bd944c4
BLAKE2b-256 78ee999b302fb426182dd18b162a1078474a215c192498440f1eb91767f06c42

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 17e482842c7a64a1712fc8aa49c6bfdf57906cbd03605e2cf6df57633a66824d
MD5 bbdbcadb8540b6d28f77a958d13d6707
BLAKE2b-256 dc0c5508a49baa6b72c441c1b4a1574e3ee48df6437c48c24c239c82f0ddcb21

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7f7a9b9bc4693b824b036a0f45bfa28893f7430404a67b7a9c353af101269432
MD5 caebf8b78cbd79101539d192f3d1fd86
BLAKE2b-256 fb52ea1ede41d35f5a9ea69368b7b524600bca09c05f153bbc58686957bfbf19

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 95404c1899f81361f64eda8917d4ac6bb099528690b4a695d64f4d962a996403
MD5 a4b1e515fe360217f63b71340fce7c5c
BLAKE2b-256 e27a888dd3e9360583db53215db59d02158efa4bc3054442015d134d053a230b

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8df660acd998dd28015f6745e4a48775f05228512c62f0a6800004321959c8a9
MD5 734fd19551aa79bf4c10cce495c37327
BLAKE2b-256 34011b956fd4703ca1ca2dad8b02e3031c61c7c0a226536f8035f26fc47e952f

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: granian-1.7.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for granian-1.7.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c71d3a4c7d1b6219682fa4c01125deac45596efe0603e38c5a29d635fc3c3363
MD5 ecda6523e66554f0673211a1bfbfb60a
BLAKE2b-256 0fcf394bda56fb75575d6dab3d4ae104c1d5edb0fba812096d3732a1f6b2fbc8

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp313-cp313-win_amd64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp313-cp313-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp313-cp313-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 17e0b9551a51f71d7fb55290c4469fd8d256c7f9a0625b072758ae1a3feb0334
MD5 de0463ea5cddc536c50b419782e984e1
BLAKE2b-256 1d89e5e6d600e3fb9b9a671937fa65ce91968ff20a2d717a94b606cfea26f95f

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp313-cp313-musllinux_1_1_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp313-cp313-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp313-cp313-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 de17ba29b3ddf1e51a5d6c0205ca4c17c54e4c45a29427ce5f40b9d156415238
MD5 1b6ac78e6a2d3d1d89c56c1a6439bf0f
BLAKE2b-256 933c432f15f6d88ba8e3febb0e63c85e8a84832efdd854522100f9eb20ba108f

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp313-cp313-musllinux_1_1_aarch64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 527a20731d936213e108ae020f6fdc92c7aebe739787eba3050b6fcdad2b56f7
MD5 ef1b8b05110b6ab1133ae5d72581a16d
BLAKE2b-256 249df731c92401648e238062de1b83230dbb2229dc24fb0c4f84139cfbb3502a

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e8e5814cf24e6179221db20fc34997be173568331b8561c3fdfcce93febe6f5d
MD5 20636d54ac5f87a81f4971763c218ed5
BLAKE2b-256 7582ed4d9e20aef0f9924bf4130ceb581bd25b87ffd4c21fd792b8ce29f89488

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af84050c58d7697dda1caf3f644a6c7eb6c11ff8ca1d561e23643d9d99016d05
MD5 bd4a2a7369054b315f9498951674b5d8
BLAKE2b-256 2959ebf4db5063447062e78f61953b019dfb73dd1de30d54a860da081f06c9bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ea11fbe99f7046022ac5e3ac3b8448d89368d39eca34d7ab64706193485065ef
MD5 25930b933befef8572ca3870f824ebd5
BLAKE2b-256 99bf0a724bcc4b8afbd23340e89ddf108b332c57839a609d893dd3a6e44a5d47

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: granian-1.7.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for granian-1.7.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 be9db2b8406f4b57393414c9171b92a8c38eafec1fe0bb79bc19bbca9cf47c55
MD5 449bd1ca88896eccca9ba53caaab146a
BLAKE2b-256 531b5325f4a63a5021bf720e7a30bbb2072dedc1e253f6fa072ffd074df781be

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp312-cp312-win_amd64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp312-cp312-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 8fd42175ab79dc607e8775de3195449ba6e0340154d5e968a8ff08b8f49cb7c0
MD5 c9567fbf7d7b294b8c0ea6ad780f3be8
BLAKE2b-256 a8d21af39c983916c2ea54f384ba1de2b0eb2ac33993c168a865d4a82f9c62ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp312-cp312-musllinux_1_1_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp312-cp312-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 8bd8b333f80b0f413e5f16d5668732e31e0f84429a68e6c792d71b3f7867096c
MD5 5a46879e6585e8f5e6ae9e1af8f79730
BLAKE2b-256 9ca04b3af959b8512eab3032477489c83602f1c3aaa851391edc3a5b66240d83

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp312-cp312-musllinux_1_1_aarch64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 db4d3e4060c871d7ec12363c59af40beb71c573fb0a81029b97528930faf3488
MD5 29daae49ef682e36a40f65827405fdc4
BLAKE2b-256 316250ce5a5eb74562333db8c9ca181d70a316f5c73802c0044156053eb8544c

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 492f4dc8fb795ea4651b5013bed058c7ae7fbad771277a7dfa7fbc5d4c8490eb
MD5 bfe3acad74a1161650b36b974fb2d57f
BLAKE2b-256 ee2d232174f6fce5c7d6e95a7f62e2a30abed86a0baae8da9bf44290f18d1a15

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f07a8ef9e06189409fc0c496f600e9d759720043fd7e53da0d6ff7a1640f47f9
MD5 95c8b5007970bb467194f791dcd4aa6b
BLAKE2b-256 04bd006a3bf71821d3a8d17e3b56073b2003207f6b8a49350bbc6500f4fcc8fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0d8d2ff49b39008518c2828578ecec6f66e5679f7478089c793077becde7cd04
MD5 89ba7c8b77a6850657aa99d73c2f656c
BLAKE2b-256 28694fd93111f44f16908a483b0fcd4c00a0f42a70463c6bbcf16f3a04ee7664

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: granian-1.7.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for granian-1.7.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1c1bde4adc55802970aa66bdc41e65e31c5e5c60eceb27ed16fed74d572f14b9
MD5 55b60ab79d4e94dcb26ae40a9e79a9da
BLAKE2b-256 5f9f938a98f9b329fe717d73b3ef79fb114de68bb6be3e9812d163bd0535cdfd

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp311-cp311-win_amd64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 11bfb4ce486aac0154416a254aadef7f0626359ffe19be21166b08b04160a6f4
MD5 69c9fb23abaae1251483ffb1bcf85d61
BLAKE2b-256 3afa12003cbbc5db8df54553df75f27105d436b8afafad8f3c838e7de8746337

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp311-cp311-musllinux_1_1_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp311-cp311-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 557db0c117b92476a6f081a8f1b97b7e7ca486ec6ec425b14d59b92a09e1bc2b
MD5 8f9b83d73e3378900cbbfe27f7ebdef3
BLAKE2b-256 9a6db7f10909772a429986f6d333157feba49e4e142fcb7b430ac5f4105260b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp311-cp311-musllinux_1_1_aarch64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 594c21cc98f0d85d9c96b4232f2cf448ea8f85019d48a8f7cc2f7cae4bb88f2e
MD5 32f9a80ed2ce12c676e468bea6a5c8c6
BLAKE2b-256 348e2a192926a7478ae8084dd8c4f9f5f0f391c6496e64149987cc1786eab8f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 39a5d1186099e0e227477131809b598ce9ba16a8cda4f9ddee3e10274b2fc4d5
MD5 3ed08fcca94af756fb09d25a7fa7d88e
BLAKE2b-256 9549101f93828315c1dcbbdd1870d3df8af0689a36b73868439ab5f70de5917a

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 424caab6b69c248bf10bda654ab28377769057d74d9c939f641078d1458d78f6
MD5 98cc7f5c18cc5aa87231f2cebd667b6d
BLAKE2b-256 a70cdced29be7e724251b23be92df2476703fc3763624c5a3bf90b28456b5c21

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fd5c38015a6a2ade9a78cc2db1b46af9d9390b551ac8d865553fee07d607c892
MD5 ca7f076bcc4752f9e52382f15d932b8c
BLAKE2b-256 745ef1d62230fb6b123fe641b9b46563be2207f962b33190d18bed5b2078522e

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: granian-1.7.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for granian-1.7.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 37aaa001ef0e5930c1c135002617e53bdf8ef63fedd46c73fb7d8418e150a525
MD5 083643df24b131d78b9276086e91a473
BLAKE2b-256 6b62adf72a5cf4ea34ee64f4130c73abcd934f3f3491553781603a67feee5504

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp310-cp310-win_amd64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 0eb53abaff555c0d637814d8f2f32155d30193d8c6d47c09d6004f26a3582ccb
MD5 b6c72499a7da1408251af5718d32f1b7
BLAKE2b-256 1c93dcd358b35f3da5e78bf0564a086a23cda3e02f2e043e570af414a9ee4b8d

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp310-cp310-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 240c7afa77de8368f54c4cf2eb614151915bbd9ab47b28d68c19a23c54a6237a
MD5 f6a71de7c8e0d64e080c173da277a766
BLAKE2b-256 386b64f60eb81a1849d54ecfeb1e6a1d8591487c6fffbcd5b102332b0efaa8f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp310-cp310-musllinux_1_1_aarch64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a5e68182def3d5d0069d1ec66a3a16a89eabc28ff9d59bbaf213fb89195cec1b
MD5 03972b1ce2533e1c3ac84839976b5f16
BLAKE2b-256 30f6158106d14f3a5ebfdba1980bd0f1bd9065ca2f1f74780c12b67ab1751692

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b51c706e1d19b273e615a1c714656c65d6922a3c7cee1aefd2d60e6a11da4416
MD5 328eecf2215fd14e10a2898712309b1e
BLAKE2b-256 947d6faa302354121b431fc32c74cbc378604bdb9df7f7f42083d87cd8ef55be

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 60630626303cb3e4d2730ebf2b93a7f3536137b3c97c16d7c36a58d8e9ddb3bc
MD5 583d5da2946677917cd15f916ee912b9
BLAKE2b-256 92ca655d2e92007dc85a8ff95624dd3df88f334e91e4ed89fa4f753bbcea484f

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fa52dc0785e23f9b899c712aa0695c2b320ddf1ac40671c997094e2a60334a3e
MD5 2d92a0d65d6022578760628ecaf6eb6e
BLAKE2b-256 6e4f18ccee38241efa631cd99e68704061faafb1de649b833f753d8fb78b299b

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp310-cp310-macosx_10_12_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: granian-1.7.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for granian-1.7.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 344d11eea67ed31903044e0a216a4a90a8ab381b1d37da35026f416cf94ef2d9
MD5 5d077bc3a51ec313b1947df872b7a306
BLAKE2b-256 8abb955d6766037c8317cf7c5d9dc152f36e5e2f8ba84b46b87108c1cc0fb5c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp39-cp39-win_amd64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 8dda08357dc005b762896cc14eeeb46cd50b584a9f72936ea87f607dfb178827
MD5 2caa73396fc64be1125e43bc6577fc14
BLAKE2b-256 a6eb9e79969c850b418932c78f029b475bc8f910298c2e03ee6a51a6fe64199a

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp39-cp39-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 b492148aed8e524a17f619691566fc010efdf0f706eecc0f0cb0b257ee8bb6da
MD5 02f1653cebd14bde665a3cb1bd86725b
BLAKE2b-256 21dafa34eaa960096f9d23c7b01d57251bcec2e952fdb2980ffbae35d124c953

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp39-cp39-musllinux_1_1_aarch64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4c17d9195c7c1fc44452bd568d31fc901a0e5d33db4bb8cf55a888c7d5a5a8ec
MD5 f6772a98d495da17f90c6521844cbb5e
BLAKE2b-256 6ed41161f0e2e9c5e485bbfa559036f1abdaf07a781769c1ccd8ce45aa4419ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9dafe6b358db416c1516d50b88006742ba52bc1164a69144f5acf816dacb5671
MD5 ce6c5fa2dd2f9991a946f4274a4341d4
BLAKE2b-256 f18f0d5f6e6e45e31e86cd2556e718b6bb763386a8a27bfd6bbcf2b51a388621

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 97327f27d0f658e48cefa8dfee8bcb1c371c4e47533919079047ce260b583850
MD5 105814aa307219901c1d77e454f016bf
BLAKE2b-256 086ff60a806178655c91bcbe555861eec5c8396bf706e96bd0b1195042798d32

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file granian-1.7.1-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.1-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fc9803eeaad1350644ba9176ca2d70ebcd0164c6774792cda674ac0cdd6971e0
MD5 9bccc1b2ff5e0de4bbf10b4b7f44b941
BLAKE2b-256 5e4558df46eafee1b20cef6e6b6fcfeb03dbdfd77fcd2cedfc282c2b11ebd346

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.1-cp39-cp39-macosx_10_12_x86_64.whl:

Publisher: release.yml on emmett-framework/granian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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