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.6.tar.gz (82.6 kB view details)

Uploaded Source

Built Distributions

granian-1.7.6-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.6-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl (2.4 MB view details)

Uploaded PyPy musllinux: musl 1.1+ ARM64

granian-1.7.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

granian-1.7.6-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.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded PyPy macOS 11.0+ ARM64

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

Uploaded PyPy macOS 10.12+ x86-64

granian-1.7.6-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.6-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl (2.4 MB view details)

Uploaded PyPy musllinux: musl 1.1+ ARM64

granian-1.7.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

granian-1.7.6-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.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded PyPy macOS 11.0+ ARM64

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

Uploaded PyPy macOS 10.12+ x86-64

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

Uploaded CPython 3.13 Windows x86-64

granian-1.7.6-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.6-cp313-cp313-musllinux_1_1_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.1+ ARM64

granian-1.7.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

granian-1.7.6-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.6-cp313-cp313-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

granian-1.7.6-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.6-cp312-cp312-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.12 Windows x86-64

granian-1.7.6-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.6-cp312-cp312-musllinux_1_1_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ ARM64

granian-1.7.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

granian-1.7.6-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.6-cp312-cp312-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

granian-1.7.6-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.6-cp311-cp311-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.11 Windows x86-64

granian-1.7.6-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.6-cp311-cp311-musllinux_1_1_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ ARM64

granian-1.7.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

granian-1.7.6-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.6-cp311-cp311-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

granian-1.7.6-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.6-cp310-cp310-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.10 Windows x86-64

granian-1.7.6-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.6-cp310-cp310-musllinux_1_1_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ ARM64

granian-1.7.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

granian-1.7.6-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.6-cp310-cp310-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

granian-1.7.6-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.6-cp39-cp39-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.9 Windows x86-64

granian-1.7.6-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.6-cp39-cp39-musllinux_1_1_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ ARM64

granian-1.7.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

granian-1.7.6-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.6-cp39-cp39-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

granian-1.7.6-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.6.tar.gz.

File metadata

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

File hashes

Hashes for granian-1.7.6.tar.gz
Algorithm Hash digest
SHA256 5e36d28b947b2c18bc7dc61072b3aa67c28b28d871f55a4daabea8eb6300e50e
MD5 1292fd6f0048529e675c26be07b42581
BLAKE2b-256 98ce165a84b8b950bbce3b2b8d2d2a6ab4309476c13df0ecd1cf4dc29d8c1cd3

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6.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.6-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 73e69fb2918a94d153feef6ee678084553f22e0c8ca0bc403d72f8ab9fa37bc1
MD5 357aadceb44f458f623d5b654595afdd
BLAKE2b-256 035dad8c7243b1e5c1de7d57202a25c4df4021ee0267d5801ddc3e7d769aedfb

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 94a4afbcf16d5bd78f5e278cede8b16150948b22e385533aa6727043a676edf5
MD5 38c2279949d3485ea437f3896f514e29
BLAKE2b-256 9367d58453b976a81a5b5484c1fdcbec3c173a50c9d0f4cff2ccd4a0c4412d94

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2f4222003d52e27da03070f72d8fdfa1043c70e2be6491daaae27fe2975c7441
MD5 24b2141e98a91372f5b19d9ee06a152c
BLAKE2b-256 15e0f6668df0ef157f92001fb717fa5fe41be2430f0ce04ba7ba211bf2e09750

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5e3511680d0045993e192cf24063907265be7f616a92f4cb3884828ff2a2938d
MD5 5ddb9e13e6f3f45add843cb436e26208
BLAKE2b-256 a3e1e695bc918c6f95f5d187f267f9176ea672231ef95436b2cc0667e085c3f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 63b6697d1725732ecb5610fd9716e9532f70b73c0dbd3d7c4b81d3b0d342c73d
MD5 ad7984a3f17d1e45f90616ab89e29640
BLAKE2b-256 54149c4a79ec657420e34b39bfdd0ac08626b2312ad32d1f418204ef5fde5aea

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-pp310-pypy310_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-pp310-pypy310_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b3eb90e46512ebce2b7f36754bf9f45708b0a1df57eba6ceb40ce7c6b50b98de
MD5 20abcdb9e946f724bffe4d34a58f90cb
BLAKE2b-256 63990a7ee88a114f4547394c3550f91dfa6508b4183c98cb24fd1a9ad9b458f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 738abe8da012b7d1b8a0e4f101fd748f05dce244637a77247fb2820eb8e8c94a
MD5 240fd82f751b5cfa9587fe3fcd4880f3
BLAKE2b-256 93c4d1b7434df6f7814362f1edc24ab6c71f64ffab585c8b30ce99b9f3000803

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 0efe03f6cf0804f83bd161262a8cb799c78ed8c13401f854bc911e2f3a9cb546
MD5 9c92fa5e1c53bcf0cd78983b2d427abe
BLAKE2b-256 bb46330264c13f56675e7c06fca5d5bb863a3bf19b0597df0d191d75ad80106c

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 029b1ada816400d6daf5dcc89ee16a107d2739158d2376204dfe8a363216fded
MD5 407cd6da3bac6b1238afc912b487de7f
BLAKE2b-256 d42172b6f4bde86262dd3a16ddad3a2421c562a10e3397b22b426d8299a2caaf

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 63e48fdd7e5744c038bbd8c14690c0203ca6cfdc07c90466866a6dabcf86029e
MD5 335a9bb458189c4c425d750580ab27cc
BLAKE2b-256 703a43830ef8db6ab9e8c3935e39333b3963f4db13f0ef7a81f2eb53e0a62879

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7804d534cf2b5b440930b9fd687b3d2aaa8a8fd78e6327572721d3cc18a7e3e7
MD5 3962208b74e18508de3a13de82b618f7
BLAKE2b-256 a693b3e657317b1ed1e1194faa8727fd60ae407f30f6eec13dc9277e845840f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-pp39-pypy39_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-pp39-pypy39_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1d37f1103d249d06e2562d641fd4a92dc48c4462c7ea4496b9fa61a7b5cfa1e5
MD5 4870f1b00fe3bb8dcda6f62647ff7bac
BLAKE2b-256 62239a6d9fa97c6de61e3463a3c921d2cd13e8af063058ef68520a9df90ff6cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: granian-1.7.6-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.1.0 CPython/3.12.8

File hashes

Hashes for granian-1.7.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f692eac9df4defceabc9ba345c16fc72699df788d6efba081e036880a325b1bd
MD5 2f11ad497cf9a9200fb42efce722ca9b
BLAKE2b-256 37a1fc415b7c7cc861202a997a2d37cbf5eeced8717ac5ec41c67c209f0e78e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp313-cp313-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp313-cp313-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 5d9c1064bb8fc2e80cc9c72956ef889c1dee495b1dddceb51f1bff56b2c641da
MD5 41273e15a716114162c367f724b0ad63
BLAKE2b-256 61e52895338112db8ebecc6010b0dc960765b86fc2c49299f326c1cfa9b5a170

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp313-cp313-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp313-cp313-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 9ec6facb4523a5bb1da3f124227570d87c92a571a5dae3d4b08be9e9ad0a747f
MD5 f7bf77cb87d834e574c87ed77a1d43b8
BLAKE2b-256 f0b47581a7e2abd51b59b8ec1def12fbaffce68471004892cfad30073c833670

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c63531136cde284f2bebc14e379d694756b2854f0b30b8755e834982f9673a92
MD5 42094c92a0aaa7223688e8c8f479014e
BLAKE2b-256 ee5ac875bb3a38b4a6b2d43fb7dc5b11768f1b5cddd49c0f5ef92d8985ff6065

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9781f87bb6e0fe1633bcc6b54d58cc0606f0113752b23a293de137c067258e37
MD5 12676b0dcd9ce1d18394d31b98f13504
BLAKE2b-256 e88e54a8cab46188e236f1a97954864ea1d830d11377bb2cda83cacb99eb2814

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bf5428aa4098473bf446e61ca10432298616484b3b731a480e98004633ea30f3
MD5 9a7b94485fa16c7b37f381c7cdbcc0ce
BLAKE2b-256 8e13478427f8e559956260397085d6032cce75ded62e27c59365f53f095e3cfc

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 553422e0ca14d68885c8ab5a592ddea275b1e03f32b07c4b1f9ff5ebdb577f64
MD5 98cc2b53de1609181e4b76b7eaa72876
BLAKE2b-256 62c66cf661d63c9e6f67d99827a0820e658ba4af220254eb41dbad6d5e7fa477

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: granian-1.7.6-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.1.0 CPython/3.12.8

File hashes

Hashes for granian-1.7.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0fc6b439cf6581d5dfc27e0f4fdbda475e2dc096d4e5325a8d1778e990dbf1e7
MD5 2f2b6933a00794cf87f269f6ccc88364
BLAKE2b-256 f77a7a0827be2a7b62ee27df9d2225a03adde7020c1e78b43abb340992b3875a

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp312-cp312-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ac123facbde9cea601f633a76767a6e91ce009d7b0837f54cc472881730986b3
MD5 fd7d65e8bbf33c51788a9da868372d67
BLAKE2b-256 43f7f4f4f386d1775dff7b7fe327c9c999aa766cdb882f3f82634b048ace561f

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp312-cp312-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 c3c60f8ed1e8c00c63640ff0b52a2c7f9afd0cbbaf873e5ee1e989bbff6829a6
MD5 84a54a7ce58cb4fb4429d22fd2a4960d
BLAKE2b-256 5ae268524eddfd81b506acda8d6dd6e3bb7161f62cc70bc05435a416de9e6fdd

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3375f1a1d6d9d514dc6cd614262c508b4d232615a98f0d0cddaf092d9bb32661
MD5 4c49c97e320ebc6853e131d2e7575746
BLAKE2b-256 9e03eb9071203aec1267547ca1e674a18f6610d5f78ed7ccd7787b3e244abbe5

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 97b77d4827971e35245db52e22df22fc570524c0a47434a2e80b80a7c6930d59
MD5 91f082406126fd8bdd085be5d883bc84
BLAKE2b-256 285798ec5c558c9759a7c5ccd1720527fa7842c167422637bab53943ecf9692c

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5fc920bef1704b41da9db12f59818c876916bbeab35a77da9d38a6d0b685d05a
MD5 44668df75fd27b754aa03ba9bce08f22
BLAKE2b-256 b866a012d28413145ce257ec01b79af30823af6264c016511315abd447613167

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8ac0c2f6c276aefee71f4b5cb52aca01fa2904eb80f93aaa89972ef2f7e61512
MD5 f0f510d878a4b2ccb912e68f1a26e6a4
BLAKE2b-256 d5af8a5d77ef2d80be4ddb7b117d4dfffa29fc17deea46b2ae8285581a210619

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: granian-1.7.6-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.1.0 CPython/3.12.8

File hashes

Hashes for granian-1.7.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 00a1bdd070bd38547b84e70523636a1fca346b721b8ba160feb7e747639976b8
MD5 0e7dad1e300eee267723ac79571baf78
BLAKE2b-256 803b1506faa510e1dd2de3dc1ec7c739c8dd259186fe0760694191347509fc4b

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 38facbb095c2e4e7c41c3070101fa8ccc1782b26dd6c4f504fca6419cb48b5ae
MD5 1d4f8b023ecbc467610f988e4aa1e0d9
BLAKE2b-256 667ee89ad3c0ef0f4e36a24aa4a22fd27e06da437291755081c9bcc5d301bb96

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp311-cp311-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 2acd12b1ebdab7995fd39ec796b0ccae6a1650a0cae4aec29746e3c707ccfa33
MD5 43e1bf4633a9a2a6f56c1569b0cb1383
BLAKE2b-256 e2b1632278eaf3abd05a7bc4f294149cc7592ee06464031700b33ce9e74f614d

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c0f778d28e73a4fadc6dd9d559d32e30700739cb53f71e0f3aa282fee1ec2bdd
MD5 2241b2863616a637a4ba027eaed2bcf3
BLAKE2b-256 99f9b1cd3612059f710b8f093780f90a9f3ff111f61cded3928f7f032ad69a2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bd3aa566a958194b9e727829e2efc8d4451b415e9df0b9abdf879a79c737c5f1
MD5 1527c3f43db22caa95e689456cdc4ccf
BLAKE2b-256 76628fa26963d85371a945e396d2a575e6fe40bfe3cc1f490f80f6e87f36a744

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c1fa2660923d4c27f5a827ad0fcb8156f9213fdcac94fe75f68d502e9c432a92
MD5 4349a513b982183618a7d2525e62f531
BLAKE2b-256 f6d9e3a19940ca8038f1dbe6a96b3248e4684a693cdd9211a7408692050a6dfd

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b09bc979299e5b3c77fcc55ac3f430125e5f4739e139321851f61f4f49aaf490
MD5 317d4b1babdbf9ec373cff735dfb0e3c
BLAKE2b-256 485d96c291d8308b30f4c78cafe664267876a0251acc462d0359c80547fcecc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: granian-1.7.6-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.1.0 CPython/3.12.8

File hashes

Hashes for granian-1.7.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 30f7242b62cbd6b0ec62fc87686adfe83391f1047c105020fcf514c52c4cddc2
MD5 c6e6d7de75d32e4549b6b1f62f02da1a
BLAKE2b-256 2f8629484747c591e6fe26a95cd1120baf44869a01e515d40474d6d33d03a978

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 1f1a3440a1b323acf8a0be131cda5dffb696172a0253960cdbf453b4472dcbfd
MD5 7e9f43e9768eecc001df69f329bb20be
BLAKE2b-256 3f172f4f98898074bc19b20b60b5a527e3639770e47f35c4bb9891e2dc809fd0

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp310-cp310-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 8a8a24b8807a5672e951a77afed70f178f0680d0ef487cbbec8a14e337a4628f
MD5 89b991b1fa405d25c76565784781ae66
BLAKE2b-256 980bc134dc19f93925d9a0f9362cb19744d7f3cf3d05a831ffd2214600afde8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a7bb9783788ce91171554016bc51c2f8994cee8eb8ecb4eb699ce0e6d243d6e7
MD5 def820a4ced1fa8b9caa62d3613bf410
BLAKE2b-256 ff7163e433614f6fab2c2663703dbde5fb9b7dfd96591c78e5ff34b388129d6f

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1ca512eae9ce0f8b916ab8defc130daa3107b09fe6e7ba70819ee5631d637d0f
MD5 2cf3701ee76dbd6eb27f6c0e33bf83a7
BLAKE2b-256 c284e9143ea3e1e264c9a9aa29ef38945da4067704a65344b5b6cbbaec3b5164

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 48ba113324096ebce1e5804fcf96a6682a35ed7de81ccc60080d4ff5fd0542ec
MD5 11a070dafe2f33d04c85f414a32d66e2
BLAKE2b-256 e8726a1a69d1ef8b611ac0b25df5cdaedbc20dbd2ee83c42d4fb7dfc52b6ef9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b26888912ebe1a2359862de7c9110a9c508521a34ee75a376a9022d54772d17a
MD5 6784c34d9ffcce9b846cb7fc87789b9a
BLAKE2b-256 6b8763723fad20d0e06373dcc7ebd1f6edf4a4c38b39b2c7bc400ca6c6a64c1c

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: granian-1.7.6-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.1.0 CPython/3.12.8

File hashes

Hashes for granian-1.7.6-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f33341347623ee7378dd8776941014bd14d7f055621fc2b0c8286415bcfa9b92
MD5 a52ec633b6d3c9574ffb2ffdba140334
BLAKE2b-256 8b8290d75d7e013ff51974de6d20c1bb563e68306140388996e83c2bbb875836

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 7604541dce0fd7073dfee9833d737437d5eb7c00411c7292e99c90ff5a0c3dbb
MD5 293b696c0a2d80cfb05480bcb7aba40b
BLAKE2b-256 3f174ad504724c191dbfea41820ba935443030806fcfff106699ca1b952350ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp39-cp39-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 e7dbc1f7f3eb795a3c8568e9f46c0a96a400992462d83d64a6c40158fde91f0e
MD5 b1604fdd200ab351fb2c4be76fe67c32
BLAKE2b-256 70fcb048c8cdd95d82811d501a109db2bbde44da6b4f725e9972632e9effedba

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0f7562802265f0c3344954ca39eb857426ef15394fa3b571f0a87718a960b588
MD5 ffec3401e2b76f2493089265a248913a
BLAKE2b-256 d0473957e5b37ca904bc32c7d198592eb8da7663d002b54489a242f3a02aa18f

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ccd74531924313f5fc4079c34361662a565ed856edc0885d90e8dfd2165dbf21
MD5 e8a8990068668a498cea5f48acec9a29
BLAKE2b-256 133d5375a079dd6d9e04b18adeb27c4626bfa7c05e576c38fd004b3ba143c5e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 925971b8bfb5b5064c3fe0f1c6bae370795d415e0f004fa51428eb256dabf0be
MD5 9b49314628ce7fdb114d41abc07f4a96
BLAKE2b-256 caaffdbdeaefaefc0db14bec55eaddaa6bb2687567d6411ed5d5403fe852e682

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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.6-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.7.6-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a229d480ce1c7242d56dd1b63737854eed850bc10357773785dd1ff017c7cccb
MD5 dd99f2664432308410df5bdc906a87d8
BLAKE2b-256 14971a8d9357259a463368a199077969448334e65da39e827ac19b423a9fae6f

See more details on using hashes here.

Provenance

The following attestation bundles were made for granian-1.7.6-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