Skip to main content

A Rust HTTP server for Python applications

Project description

Granian

A Rust HTTP server for Python applications.

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|uvloop]    Event loop implementation  [env var:
                                  GRANIAN_LOOP; default: (auto)]
  --opt / --no-opt                Enable loop optimizations  [env var:
                                  GRANIAN_LOOP_OPT; default: (disabled)]
  --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]
                                  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]
  --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.

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.

Event loop optimizations

With the --opt option Granian will use custom task handlers for Python coroutines and awaitables to improve Python code execution. Due to the nature of such handlers some libraries and specific application code relying on asyncio internals might not work.

You might test the effect such optimizations cause over your application and decide whether to enable 'em or leave 'em disabled (as per default).

Project status

Granian is currently under active development.

Granian is compatible with Python 3.8 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.6.3.tar.gz (79.7 kB view details)

Uploaded Source

Built Distributions

granian-1.6.3-pp310-pypy310_pp73-win_amd64.whl (2.8 MB view details)

Uploaded PyPy Windows x86-64

granian-1.6.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded PyPy musllinux: musl 1.1+ x86-64

granian-1.6.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl (3.1 MB view details)

Uploaded PyPy musllinux: musl 1.1+ ARM64

granian-1.6.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

granian-1.6.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.0 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

granian-1.6.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded PyPy macOS 11.0+ ARM64

granian-1.6.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded PyPy macOS 10.12+ x86-64

granian-1.6.3-pp39-pypy39_pp73-win_amd64.whl (2.8 MB view details)

Uploaded PyPy Windows x86-64

granian-1.6.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded PyPy musllinux: musl 1.1+ x86-64

granian-1.6.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl (3.1 MB view details)

Uploaded PyPy musllinux: musl 1.1+ ARM64

granian-1.6.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

granian-1.6.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.0 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

granian-1.6.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded PyPy macOS 11.0+ ARM64

granian-1.6.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded PyPy macOS 10.12+ x86-64

granian-1.6.3-pp38-pypy38_pp73-win_amd64.whl (2.8 MB view details)

Uploaded PyPy Windows x86-64

granian-1.6.3-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded PyPy musllinux: musl 1.1+ x86-64

granian-1.6.3-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl (3.1 MB view details)

Uploaded PyPy musllinux: musl 1.1+ ARM64

granian-1.6.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

granian-1.6.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.0 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

granian-1.6.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded PyPy macOS 11.0+ ARM64

granian-1.6.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded PyPy macOS 10.12+ x86-64

granian-1.6.3-cp313-none-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.13 Windows x86-64

granian-1.6.3-cp313-cp313-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.1+ x86-64

granian-1.6.3-cp313-cp313-musllinux_1_1_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.13 musllinux: musl 1.1+ ARM64

granian-1.6.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

granian-1.6.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

granian-1.6.3-cp313-cp313-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

granian-1.6.3-cp313-cp313-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.13 macOS 10.12+ x86-64

granian-1.6.3-cp312-none-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.12 Windows x86-64

granian-1.6.3-cp312-cp312-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

granian-1.6.3-cp312-cp312-musllinux_1_1_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ ARM64

granian-1.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

granian-1.6.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

granian-1.6.3-cp312-cp312-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

granian-1.6.3-cp312-cp312-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.12 macOS 10.12+ x86-64

granian-1.6.3-cp311-none-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.11 Windows x86-64

granian-1.6.3-cp311-cp311-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

granian-1.6.3-cp311-cp311-musllinux_1_1_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ ARM64

granian-1.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

granian-1.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

granian-1.6.3-cp311-cp311-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

granian-1.6.3-cp311-cp311-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.11 macOS 10.12+ x86-64

granian-1.6.3-cp310-none-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.10 Windows x86-64

granian-1.6.3-cp310-cp310-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

granian-1.6.3-cp310-cp310-musllinux_1_1_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ ARM64

granian-1.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

granian-1.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

granian-1.6.3-cp310-cp310-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

granian-1.6.3-cp310-cp310-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.10 macOS 10.12+ x86-64

granian-1.6.3-cp39-none-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.9 Windows x86-64

granian-1.6.3-cp39-cp39-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

granian-1.6.3-cp39-cp39-musllinux_1_1_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ ARM64

granian-1.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

granian-1.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

granian-1.6.3-cp39-cp39-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

granian-1.6.3-cp39-cp39-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.9 macOS 10.12+ x86-64

granian-1.6.3-cp38-none-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.8 Windows x86-64

granian-1.6.3-cp38-cp38-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

granian-1.6.3-cp38-cp38-musllinux_1_1_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ ARM64

granian-1.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

granian-1.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

granian-1.6.3-cp38-cp38-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

granian-1.6.3-cp38-cp38-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.8 macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: granian-1.6.3.tar.gz
  • Upload date:
  • Size: 79.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for granian-1.6.3.tar.gz
Algorithm Hash digest
SHA256 718949b6031135297d8724516fc67d08defbda175d68834417880d36968a0917
MD5 f7377d4857e0ddc4d124ce7d32b71afa
BLAKE2b-256 40ba22e4d977c177a0624f322d6b4910d943b81655815e00212a4e495ea8655c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 575369b9823edde6971dd94569d807b778abe0168c7a0f661f3ae40a841068ab
MD5 9fc783d9378113dfdd710da6e26cc1dc
BLAKE2b-256 43aa744af5ad386a07cdaa63f51c3a534131bd9557652cb3ecaddd10bb095956

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 91f4fa15387b28001d770e74573e09530eee0ee95745c5aadb7380c146bae522
MD5 e7c820326e16d7bbdaa20921f67e105f
BLAKE2b-256 9707834c1f1613a1b8946f08f76e59d88ea81e41793d85b947686dbcc506c5bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 e158a9e074ad7509b985e1e94bdce8a9b6fda3a5b235193978ca761e41d25cab
MD5 916735264adbcfa6579d06b3ff28d9bc
BLAKE2b-256 1bbade7868b4354a03b168d884f496018e63ca343d19b94f086fc9a04834db48

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d9d29adfb9b8b2400a9879984388bbc99b90f83be8dfc479d7fbe1bb2478abd4
MD5 2bf7af30ec4e52b5d380c9dad651e3e6
BLAKE2b-256 09a68e7eecf1c28280c3407c8c0d1fe45cce1246a26f43958cf42e2bf012c6ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 450b2acd42814b59b70cad3ffda56f7ad2ae5c75fe5757b393d6cfd1c17b71d0
MD5 5ae4d9ee0ab48ba49ecac04dae0a09e4
BLAKE2b-256 cbdbff8e87eba63570c3331ba69e1347b925cefea70fca58907b25cd4507de88

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eb2a36ff33f8dcdcdf4f64a6ee0ca1e9ce2b4b35b5bcf306af34bdd0bca6c2db
MD5 f5fb520d41f6a5b6781d47ab5ce88313
BLAKE2b-256 8cbe40ca6ad33c6b7488aecec4714d751f3d92e23d9f028ed027dc31c4e0876b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 44325aa5fc9b7e2d4d1d21344c67388bebe6b471979d5371667c49d3aadf4bec
MD5 3bd88dbaae28ca3b56d992efac6b9ad2
BLAKE2b-256 325a5565d942ffa023b966a4c29391c100b5a3832964167b51cc58fd37b59829

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 e359e14f7cf826f25d5598fbb6223b6403e09be14cff822942d2c737fba84b29
MD5 13e7a8890a5002cb64de3e26556b1867
BLAKE2b-256 e5acc725dd55fc07cfc59742c09031d9fc4a8ccb8ccfa95906d7214a77383196

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 e49fdbf39995d2272c8edf3dea466c89a1de2167bd77fd894975bbe776cd9741
MD5 13e43b998e62b376e308de5e07726433
BLAKE2b-256 5fc8cad533d566176c738a7aaa038eb1ecd33ed925906004decc91fe25548827

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 6bc0b584c75a54c039e5381b95391a92964920104a8ff8319edf68272e34e130
MD5 7cd1adb91e3623628b17a11fd33fddbf
BLAKE2b-256 4ac9722af274088bf9221b7ff03aa952177eb7c05d48c18081d125a252fa4268

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 05f5e9d6ec9f05cd34a761d2c2e9623bd45821d5abc4ed29562bfb74db74891a
MD5 ecfdcd8df3ae9daec47d1cf10f9c54bf
BLAKE2b-256 11a2fb88588ef0224a3d143f3a951466899336cd091894f905857921e68b8458

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 41dc977453dffa351e4c265de5b8de2deb78bb77c536c4caf7190471b8e500b9
MD5 c8a91cd76f69c5991b4cc1057bcefa46
BLAKE2b-256 18207bb4dce91dedba04c87175c8247163203df119d2c7bdf0f4a7258c12fd7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e7cf13942b8683c8f469924d2aedcbe22613eec9106c20c55208ed71b22a5818
MD5 5978b5337fa81da8237815143ee43840
BLAKE2b-256 1eb5f1852610494327bc16db20504c6dc28d7b9c7f0e2a4bb444de36181a8a9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6617bd837fea5e5a39835ba4190f2de72e129eee7bf25ca3ad71c8c65bd4a4d1
MD5 ae95fa12d6122aaafe8589c077a584be
BLAKE2b-256 d379c70a5baf03e6949c41e2d1373e6de5570b25622ead45f30cbdbc451fd0d7

See more details on using hashes here.

File details

Details for the file granian-1.6.3-pp38-pypy38_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for granian-1.6.3-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 9bb7b79af4c977fedc5b530b40ce0d271dac0eb063fb835360ffe832416a4302
MD5 30b17343211700ac24a0fb9d6a47ad56
BLAKE2b-256 fc4835cf9910c1da1568988290f336afceceee925bd79e3ac8d5bd2b5ae022c4

See more details on using hashes here.

File details

Details for the file granian-1.6.3-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.6.3-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 897395510fa38a410aceaea3ab88f0cf9b7ef984642af8a625df7716ec4ed5ff
MD5 36096fe8d9e0ca6196e5e5ae6a4c2db2
BLAKE2b-256 f21f5e28cbcdd3d9b1e4a2ea2ce634098103781f3252f211a5fb45b3e95bfc7b

See more details on using hashes here.

File details

Details for the file granian-1.6.3-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.6.3-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 564c836119811b45ea7a8ed3cbd77900e51918a09bf795ae2c9477b7c79dd600
MD5 4c98044f4ca775f46210e05b8594b0b9
BLAKE2b-256 3ddb03d46a6a7c20a78e05d97572de4e8d583ab0243b5335cd7a2986cd6f6129

See more details on using hashes here.

File details

Details for the file granian-1.6.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.6.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9b978ebe5c920d44de8707d00791b736d396a84d6d5c5cebb04c55b2d2982b8b
MD5 6eb1c1c616e93d84cfc79c57970a3711
BLAKE2b-256 324add166bccc367fe5e1cd0f814b928ab4563796770e6aea6967eb5ee920917

See more details on using hashes here.

File details

Details for the file granian-1.6.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.6.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1ece398f68b6edebd90a053049c29e202eada76f8a3a948d8d3c73f64cc8d5c5
MD5 97715bcf62caa865d78c64c25da27774
BLAKE2b-256 bfe1c53700393306fa676073ea8233ba1d20803183765db176ddb4c8c5f60472

See more details on using hashes here.

File details

Details for the file granian-1.6.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-1.6.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 03b2e2e549ced9b88808e7dcf624ccc51ad018e992d0e4106335fd3c00397df8
MD5 f577760bc40653da123e1ec74cdfb2e9
BLAKE2b-256 c350dc83f768bae99553e9eafb9d76f4aa7159031a4ed838bd242cd9185a76ba

See more details on using hashes here.

File details

Details for the file granian-1.6.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.6.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 edf6a6cb8318b11bf1bb90c3c1ad5af426b283849b28749e80d26e3aba3f8ad8
MD5 2126397f7ec5914512063d0ecf65320b
BLAKE2b-256 97cd5547fa23d8c7286bcbce85e0201a0ae9bb629d241cfbf2f8bc460aef54ee

See more details on using hashes here.

File details

Details for the file granian-1.6.3-cp313-none-win_amd64.whl.

File metadata

  • Download URL: granian-1.6.3-cp313-none-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for granian-1.6.3-cp313-none-win_amd64.whl
Algorithm Hash digest
SHA256 f4ea547a9cb850eaa6cd448374051c657eaa503bb720d2b0939945193da1f548
MD5 f4285cf6fa51b6a4724fa88f2c5d3317
BLAKE2b-256 36b7f12f5d50620030e13fcc6c9ebdb0b61584f9c99f03388ab55b437ee6f169

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp313-cp313-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 cdb49cd0a713f16f0f7bc879b4ea1d5a7fd72ff036da3a4e31f057fabb3662a3
MD5 8b174ac23308f9aed9ff9a5600121290
BLAKE2b-256 34c94a35cf94873739ddf5817d4a6f628ac7f2ffaa619ece3953c50a8dd4a184

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp313-cp313-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 5daa1ac67b97a36de8668af708b7d9d732ef8338224bf5a7333594fb78798710
MD5 b9aa3300130eb80d934f4f65875c1c04
BLAKE2b-256 c30629c127095568a9ee5eeb008b32664a90812a2001878665b2842f5446a413

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d2351934805b3828cacb9601849e535bf95ed0d84f3e57d83fdf88531a28575f
MD5 b74a46049ce5f9b496d82db796212eea
BLAKE2b-256 b6f34ff7d18abfaccb81f4ea0de5f0c694b4516874f59ce078dd8b690d0de7f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 479606359446e3713847cfa22926f491659552b95eff88b169cbcf30b2353e30
MD5 18a96b488acc64bb62c66b5daf7ef5f5
BLAKE2b-256 977214edaf7f7dacc66a98351eda3c3aa5221eab778328035ed2e8533ccca3e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 072bfb32a0a2c620538aa7d0aa8510768ad6018969b50a4e6237ac78232ac654
MD5 4bdd7b4b57fd0fb424b2d1ac3365611c
BLAKE2b-256 a81c4828147663c83758c2217a606adf4e79d66ea049201e12105864d2e44f26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 159e823616a735a98124bee9c2d29300688b61f01af418ec9e4dc3af3c6d093f
MD5 c4e9b69c46370bef87343647c4a9f5c8
BLAKE2b-256 dce580cf3d24ced6b69c566c5dd3641f5418197277fe56c71fcb02d7a36f5e56

See more details on using hashes here.

File details

Details for the file granian-1.6.3-cp312-none-win_amd64.whl.

File metadata

  • Download URL: granian-1.6.3-cp312-none-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for granian-1.6.3-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 b4accf60f48bdeb77e3eacdabddcdd28a46f4e716b9eb4348ec3b95b42add22d
MD5 b6199d7b5e75635fffef59c7e8be2c78
BLAKE2b-256 0c767a510897dc6ffbf1361e1ae3b3658e86c130daa17f625dcb5759637584ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 33396d610dd61bf7ce635aa8cefa0cc7ac26adc1f9d1d18703b40dca0dc761de
MD5 1fd5064d8e7a1760c0315e96bcd3be74
BLAKE2b-256 63de481625c3c98e87d6b66c4d2ee7e176176bd341dbcec963d2573144ec80bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 344b903673ef5da6457836d3464226b375fff9213fca469334c594c192d12182
MD5 ba4e29e1315f8f7fd04dc8c379e3f8b6
BLAKE2b-256 c96740ff6b936bb8e17e8764c10bd32b4795bb0d578eae45434fe56c80e06144

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e57b5beb23f4941ba478097cb9d8d41a554a0c1cb676f08dc07401ad3dc4cfce
MD5 cd260f9f59a94c5095e1483318454a0a
BLAKE2b-256 0ee96411951986b8bdda6699eb662df65059f2913806fa719128b433a4f15f4f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2943e4b3be967a200586bed800f1af44cd31f7cf84cb0c17012ef17e7db07421
MD5 7dc56f9db11c1f0bfa2a29d2c587983f
BLAKE2b-256 b5c2236382a10caea94384872b9948aaa92bf83f1a8f9e39214a4a36acd8cf7b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 32a3c27f62eafb30ac8175e65de75f799cd31d40de757e9c786fcfb969f1a8ef
MD5 eded6a6226655f97cf4ab4a4496ad2b3
BLAKE2b-256 b21762e40cc978ed98126e7838d593e2b5dff920bec655dad6db4c781e00ac58

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e23a1112ccff34d7c7758e4ea0461b129fcc54833d4d52b629bb414d4aa487b4
MD5 2488b658ec7949a672df61d29ecf5d82
BLAKE2b-256 3dba5a22735828697d5cb1e73dba5815b56cf48c4e33da674a986ffd00b817b7

See more details on using hashes here.

File details

Details for the file granian-1.6.3-cp311-none-win_amd64.whl.

File metadata

  • Download URL: granian-1.6.3-cp311-none-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for granian-1.6.3-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 103cd6f55a5fda69c9a65700b08a4ef6f2e3acc3e725bf5f7a74cdecd5270beb
MD5 60712c5581cd6a91c96510c2783e884e
BLAKE2b-256 3ac3cf2268bb800a890c9387aea447d675cf8f82eed3beccc2a37b7f2efad1fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ca10098d5b01cbd9464d15850f82a38109009ac62ad5920c1fdbca33a9fe8034
MD5 797aae2ce9570b0472c042f4b37ce4bd
BLAKE2b-256 1a22b466caebda6d95c91590e1bb17912a8e5c74f504d5f01e74d99032c31453

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 bd1f2c73d23f133d0c38039719b7de70fc5d7a6cfe3d0656e4b79bbb693de53d
MD5 c82341313fd6194c4b5381e1e2bde864
BLAKE2b-256 6da8a08d555dae7f5b966ec922d92206719b8e7d192036543d0c7ae3d7674a83

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1630526c7d1783f4074adae98a1977e3e888651c30e53423b1ff27d6dfaf1884
MD5 8ede446d27c54570b71c78526054f7d9
BLAKE2b-256 496400672f59206188227db982c73452b4218ed0665ed7e582499beaeff342e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1f6e922f79cea0471a9c3e782105edce9043e95f7a86ed87534a24c396ff91a2
MD5 4e43a566fa18ba1c58dc0e82c0d52986
BLAKE2b-256 c7ddfcce193b4fb298a50ef0789ede1bcbd021282b35f6ef3fbf574c810ce035

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bb4fbb1b5690a59ab0ab52c629d85ea53d6b20fdf2941239451def9c581ae45b
MD5 e67de790708303a3fe50a72c7eb85026
BLAKE2b-256 ac851f9d71c654d8fa7de3e7618072889c4a2320fdb4c33cb814057b36da2baf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 29055e1f9048f49c231c029c72af6d0221cb4f62f2cec6501f2bcda193d73059
MD5 b4f3ca7a6bbe3197b8ee3cf4714a572b
BLAKE2b-256 4f6d2573fcdb4ecb177881b5be0de195fff9deac9b75bfd6c062f01a2d59e435

See more details on using hashes here.

File details

Details for the file granian-1.6.3-cp310-none-win_amd64.whl.

File metadata

  • Download URL: granian-1.6.3-cp310-none-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for granian-1.6.3-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 e5c8ebac4af9457cb4de3955fce51f1f0615dff4d4954b8991b8a40271e78886
MD5 e1d114f4b005f28c2d3506d5e81c8baa
BLAKE2b-256 20beda101cfc999c1ceeb56f1c574ebb7d8b4873866f8f87b6e1282caf1b0b5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 7347ad7a5ac779b6483ee5455ae180918462f38f7cc74aa51127bdbc6c5bf605
MD5 35e43d33aeaa51a060f70d408e9ef81d
BLAKE2b-256 30f84e0719004aa492c08ee71e53c5fdeb57e396ed268972383ac18873b78844

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 ade697aa216c736ca72f81bd9c375406f43501c99e683af5791fd315ecd2cb23
MD5 457b505b5b3a6435bea3ff31cdd07e54
BLAKE2b-256 22c40a97c80f6a1b980b747266a8760901e2092ba3a1b48f09103efe51dd4b7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cd5c049ae87be486858d2f3a5d2c4a2eb890a6fa811fa4b48ffce699cbe3800f
MD5 034da637fee57337036224828d02ebdb
BLAKE2b-256 8bb800b09ab865c87b084a0d9e853e731b15db4dcdbeb5a71bb610b28ab8beb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b43e2316a363c9acf23b2ffef2aa60672d3fa8540e421caf81cfe1d6fef6068b
MD5 5e24da06156f9fb550ec64f95e00f5dc
BLAKE2b-256 4bc942edb304d65ca5057e23cce7543c4f8bf46fdc2f60e2b999b2035cdd0b46

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9c658cd6516c517575571460f56d7838658de803031a569d908d9bbcf441073b
MD5 09719b024eca420eaf92ff48ffb506f1
BLAKE2b-256 3f64fc39285048625f10bd6420d7671a5d415a95fedb7c98bff76380efec10c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7f93cd82b41b31bb0d5582c50ed6088a94c3d055bb3bbff9987fe70cb1c27786
MD5 3c36934cd0e0d8523cf3c5a6a353b97a
BLAKE2b-256 01d03d0ff148dd2989b147f0f5f08901ca22af9e0d85bae06ec49de3ffbaa0ec

See more details on using hashes here.

File details

Details for the file granian-1.6.3-cp39-none-win_amd64.whl.

File metadata

  • Download URL: granian-1.6.3-cp39-none-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for granian-1.6.3-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 01b07913f3597cec96845fbb19348dfa33a11c1ebb9ff774e5033882c378493e
MD5 a7a54f49a1de4a58950eb16d5c743005
BLAKE2b-256 99d76ec9f3810276bf97e06b696c42d2d782af802629d9f137e1584b3b3b8ef5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 9df321ca53023bcf35163f465fa14660c7e7f621caa7a2d4b017baf6b545d4f4
MD5 d6f98a700ab475e37bb37dc2895e7e11
BLAKE2b-256 d62324d86d688a8e9b6f067c42d8c22db148dbe31b08a2d8fc0166a9acaf80f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 011154ce1f898037c3cad56a6756287e3f0eafa6f81e67052ece79fa9baae839
MD5 09fe5275144d1800821eda13a69edff8
BLAKE2b-256 549a1478915a369a66ef4e35965f58a4b5eaca4cab7aebc0a18db09188c4bbcb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4103ae9c92206eee33ad4ec0b8668295c022f78b06a00679bc0d818206b07a6a
MD5 f85c56f625f6eefea7ddd2bdd0d5118b
BLAKE2b-256 53270e754703ffbfa57959d97b1d53daac3fb68584947b4d7fe74cc0ed529e85

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d3fc0e694b7ac8529138f18bcc7f0d9adb2b7bb64875630265642d3fa46a605e
MD5 ca898cb935460c1ec24c3d3287d786ad
BLAKE2b-256 4bfbfe6f16afa5e080290a135713fbd4ab3bd7612d1bfaf44154887bbd2af675

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 91781dd34601c9906647dbffc1679cc06ccbb675a3fd396a46fadd959a208191
MD5 bd4bc99c5fb314cbf88664878337f1b8
BLAKE2b-256 9079c5518138cf1ba05a1d54c45f679511acb3dbb6a607f4470957c2fdfc1c5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-1.6.3-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5d1ef9fa5fe8acaba0f0fc15c663600cfac9c7f4fffb46a9a427e75dc7400a86
MD5 3779799862aa54f42ebdf19f1f0c790e
BLAKE2b-256 8914970abe7c6cc3caa215f35ea159c2dc3b9b4e2690262d140eb0d37f764179

See more details on using hashes here.

File details

Details for the file granian-1.6.3-cp38-none-win_amd64.whl.

File metadata

  • Download URL: granian-1.6.3-cp38-none-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for granian-1.6.3-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 e8be2824acae19438eed1d5b472ed46e65431e7d8a1e90167a02bfe4cd4a0855
MD5 386ad2c4383aba70e231bc958d98d5af
BLAKE2b-256 d1a7f4f47ace85f07406371e52d0bc7a744e49cd7a2237978d05befc273ddb84

See more details on using hashes here.

File details

Details for the file granian-1.6.3-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.6.3-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 9decea15810f55fd60fbf6a727e1510e9bd56c9088e039aa7be3716dd7b464bd
MD5 eecdad5508ad61107cf5c314dd99be3b
BLAKE2b-256 3887156efad407d6a2443f7beb30639dbef07521ca2e81ac32ea1dd51cfa7d7d

See more details on using hashes here.

File details

Details for the file granian-1.6.3-cp38-cp38-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.6.3-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 de96d8c87e5e5e7fd3f795eb676010379d9176fb5fbb2b3b11d332c6cbe8f33f
MD5 5df2f09832117ed2d504ebb1bc893a09
BLAKE2b-256 ccdfb3e9307f5db24544cff55a3b0023656a615f6aeaadd96805a32d4e2c2e3e

See more details on using hashes here.

File details

Details for the file granian-1.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a777f8265bbb55fb191303be1a4c8a92fb3fe5c6b67d8ac0b9d171c801fba2d0
MD5 a930d127fb325f68d70c45cbbd35e60e
BLAKE2b-256 a71fd944de10629f0d6deb11f31ded2ef8f5519f03e094b2bffe8bad80b142eb

See more details on using hashes here.

File details

Details for the file granian-1.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for granian-1.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 70f8b59882adfbbd45851655d12897c2d9735fb3f25a029d979eeeb1f49c3895
MD5 5ae7b8c890cc60d6b72c9e1efebcf8a9
BLAKE2b-256 f9db621d1f16734bc65773f47d7805357a0b94119056a6f4fea0ebcb1c6ed969

See more details on using hashes here.

File details

Details for the file granian-1.6.3-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-1.6.3-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cebd3a610f49f213c7de7b91bc080780212dd9e9164c09fac37bfa04cb75ffc0
MD5 198b2397530953e0d3853b8a5cbbf3b6
BLAKE2b-256 3ddba3c582c3358d6ec42313781f3e281e8adaa32c421fcc392b7841188f13c6

See more details on using hashes here.

File details

Details for the file granian-1.6.3-cp38-cp38-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-1.6.3-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 37a94bcc93ce2358d0648125ea18049e58c292fb5a516213073e7be477f08672
MD5 51c50068080ca3c0f405a1e801f221b5
BLAKE2b-256 087ae04b82b671109ee29bdc961f757cd9dd8f7c42ef88a18ae54de9dc8ff57e

See more details on using hashes here.

Supported by

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