Skip to main content

A Rust HTTP server for Python applications

Project description

granian

The Rust HTTP server for Python


Granian is a Rust HTTP server for Python applications built on top of Hyper and Tokio.

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

Adopting Granian would thus be a good choice when:

  • wanting a modern, single dependency to serve both ASGI and WSGI applications
  • looking for the most performant way to serve your Python application under HTTP/2
  • you need great concurrency capabilities, especially with websockets
  • you care about performance more than everything else

On the other hand, Granian won't be the ideal option if:

  • you want a pure Python solution
  • you need advanced debugging features
  • your application relies on trio or gevent
  • you're looking for ASGI extensions not (yet) implemented like trailers

Features

  • Supports ASGI/3, RSGI and WSGI interface applications
  • HTTP/1 and HTTP/2 protocols
  • HTTPS and mTLS
  • Websockets
  • Direct static files serving
  • ASGI pathsend extension

Quickstart

You can install Granian using pip:

$ pip install granian

ASGI

Create an 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 using Granian CLI:

$ granian --interface asgi main:app

RSGI

Create an application your main.py:

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 CLI:

$ granian --interface rsgi main:app

WSGI

Create an application your main.py:

def app(environ, start_response):
    start_response('200 OK', [('content-type', 'text/plain')])
    return [b"Hello, world!"]

and serve it using Granian CLI:

$ granian --interface wsgi main:app

Extra dependencies

Mind that Granian also provides several extra dependencies you might be interested into, in particular:

  • dotenv (allows to load environment files)
  • pname (allows to customize processes' names)
  • reload (adds reload on changes functionality)
  • rloop
  • uvloop

You can combine the above extras to suit your needs, eg:

$ pip install granian[pname,uvloop]

For further information, check the options below.

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]
  --uds PATH                      Unix Domain Socket to bind to.  [env var:
                                  GRANIAN_UDS]
  --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]
  --blocking-threads INTEGER RANGE
                                  Number of blocking threads (per worker)
                                  [env var: GRANIAN_BLOCKING_THREADS; x>=1]
  --blocking-threads-idle-timeout DURATION
                                  The maximum amount of time in seconds (or a
                                  human-readable duration) an idle blocking
                                  thread will be kept alive  [env var:
                                  GRANIAN_BLOCKING_THREADS_IDLE_TIMEOUT;
                                  default: 30; 10<=x<=600]
  --runtime-threads INTEGER RANGE
                                  Number of runtime threads (per worker)  [env
                                  var: GRANIAN_RUNTIME_THREADS; default: 1;
                                  x>=1]
  --runtime-blocking-threads INTEGER RANGE
                                  Number of runtime I/O blocking threads (per
                                  worker)  [env var:
                                  GRANIAN_RUNTIME_BLOCKING_THREADS; x>=1]
  --runtime-mode [mt|st]          Runtime mode to use (single/multi threaded)
                                  [env var: GRANIAN_RUNTIME_MODE; default:
                                  (st)]
  --loop [auto|asyncio|rloop|uvloop]
                                  Event loop implementation  [env var:
                                  GRANIAN_LOOP; default: (auto)]
  --task-impl [asyncio|rust]      Async task implementation to use  [env var:
                                  GRANIAN_TASK_IMPL; default: (asyncio)]
  --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
                                  Sets the maximum buffer size for HTTP/1
                                  connections  [env var:
                                  GRANIAN_HTTP1_BUFFER_SIZE; default: 417792;
                                  x>=8192]
  --http1-header-read-timeout INTEGER RANGE
                                  Sets a timeout (in milliseconds) to read
                                  headers  [env var:
                                  GRANIAN_HTTP1_HEADER_READ_TIMEOUT; default:
                                  30000; 1<=x<=60000]
  --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 RANGE
                                  Sets the max connection-level flow control
                                  for HTTP2  [env var: GRANIAN_HTTP2_INITIAL_C
                                  ONNECTION_WINDOW_SIZE; default: 1048576;
                                  x>=1024]
  --http2-initial-stream-window-size INTEGER RANGE
                                  Sets the `SETTINGS_INITIAL_WINDOW_SIZE`
                                  option for HTTP2 stream-level flow control
                                  [env var:
                                  GRANIAN_HTTP2_INITIAL_STREAM_WINDOW_SIZE;
                                  default: 1048576; x>=1024]
  --http2-keep-alive-interval INTEGER RANGE
                                  Sets an interval (in milliseconds) for HTTP2
                                  Ping frames should be sent to keep a
                                  connection alive  [env var:
                                  GRANIAN_HTTP2_KEEP_ALIVE_INTERVAL;
                                  1<=x<=60000]
  --http2-keep-alive-timeout DURATION
                                  Sets a timeout (in seconds or a human-
                                  readable duration) for receiving an
                                  acknowledgement of the HTTP2 keep-alive ping
                                  [env var: GRANIAN_HTTP2_KEEP_ALIVE_TIMEOUT;
                                  default: 20; x>=1]
  --http2-max-concurrent-streams INTEGER RANGE
                                  Sets the SETTINGS_MAX_CONCURRENT_STREAMS
                                  option for HTTP2 connections  [env var:
                                  GRANIAN_HTTP2_MAX_CONCURRENT_STREAMS;
                                  default: 200; x>=10]
  --http2-max-frame-size INTEGER RANGE
                                  Sets the maximum frame size to use for HTTP2
                                  [env var: GRANIAN_HTTP2_MAX_FRAME_SIZE;
                                  default: 16384; x>=1024]
  --http2-max-headers-size INTEGER RANGE
                                  Sets the max size of received header frames
                                  [env var: GRANIAN_HTTP2_MAX_HEADERS_SIZE;
                                  default: 16777216; x>=1]
  --http2-max-send-buffer-size INTEGER RANGE
                                  Set the maximum write buffer size for each
                                  HTTP/2 stream  [env var:
                                  GRANIAN_HTTP2_MAX_SEND_BUFFER_SIZE; default:
                                  409600; x>=1024]
  --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]
  --ssl-ca FILE                   Root SSL cerificate file for client
                                  verification  [env var: GRANIAN_SSL_CA]
  --ssl-crl FILE                  SSL CRL file(s)  [env var: GRANIAN_SSL_CRL]
  --ssl-client-verify / --no-ssl-client-verify
                                  Verify clients SSL certificates  [env var:
                                  GRANIAN_SSL_CLIENT_VERIFY; default:
                                  (disabled)]
  --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]
  --rss-sample-interval DURATION  The sample rate in seconds (or a human-
                                  readable duration) for the resource monitor
                                  [env var: GRANIAN_RSS_SAMPLE_INTERVAL;
                                  default: 30; 10<=x<=300]
  --workers-lifetime DURATION     The maximum amount of time in seconds (or a
                                  human-readable duration) a worker will be
                                  kept alive before respawn  [env var:
                                  GRANIAN_WORKERS_LIFETIME; x>=60]
  --workers-max-rss INTEGER RANGE
                                  The maximum amount of memory (in MiB) a
                                  worker can consume before respawn  [env var:
                                  GRANIAN_WORKERS_MAX_RSS; x>=1]
  --workers-kill-timeout DURATION
                                  The amount of time in seconds (or a human-
                                  readable duration) 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)]
  --working-dir DIRECTORY         Set the working directory  [env var:
                                  GRANIAN_WORKING_DIR]
  --env-files FILE                Environment file(s) to load (requires
                                  granian[dotenv] extra)  [env var:
                                  GRANIAN_ENV_FILES]
  --static-path-route TEXT        Route for static file serving  [env var:
                                  GRANIAN_STATIC_PATH_ROUTE; default:
                                  (/static)]
  --static-path-mount DIRECTORY   Path to mount for static file serving  [env
                                  var: GRANIAN_STATIC_PATH_MOUNT]
  --static-path-expires DURATION  Cache headers expiration (in seconds or a
                                  human-readable duration) for static file
                                  serving. 0 to disable.  [env var:
                                  GRANIAN_STATIC_PATH_EXPIRES; default: 86400;
                                  x>=0]
  --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]
  --reload-tick INTEGER RANGE     The tick frequency (in milliseconds) the
                                  reloader watch for changes  [env var:
                                  GRANIAN_RELOAD_TICK; default: 50;
                                  50<=x<=5000]
  --reload-ignore-worker-failure / --no-reload-ignore-worker-failure
                                  Ignore worker failures when auto reload is
                                  enabled  [env var:
                                  GRANIAN_RELOAD_IGNORE_WORKER_FAILURE;
                                  default: (disabled)]
  --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

Workers and threads

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

  • workers: the total number of processes holding a dedicated Python interpreter that will run the application
  • blocking threads: the number of threads per worker interacting with the Python interpreter
  • runtime threads: the number of Rust threads per worker that will perform network I/O
  • runtime blocking threads: the number of Rust threads per worker involved in blocking operations. The main role of these threads is dealing with blocking I/O – like file system operations.

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 runtime threads and runtime blocking threads is fine for the vast majority of applications out there; you might want to increase the first for applications dealing with several concurrently opened websockets or if you primarily use HTTP/2, and lowering the second only if you serve the same few files to a lot of connections;

In regards of blocking threads, the option is irrelevant on asynchronous protocols, as all the interop will happen with the AsyncIO event loop which will also be the one holding the GIL for the vast majority of the time, and thus the value is fixed to a single thread; on synchronous protocols like WSGI instead, it will be the maximum amount of threads interacting – and thus trying to acquire the GIL – with your application code. All those threads will be spawned on-demand depending on the amount of concurrency, and they'll be shutdown after the amount of inactivity time specified with the relevant setting.
In general, and unless you have a very specific use-case to do so (for example, if your application have an average millisecond response, a very limited amount of blocking threads usually delivers better throughput) you should avoid to tune this threadpool size and configure a backpressure value that suits your needs instead. In that regards, please check the next section.

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

Backpressure

Since Granian runs a separated Rust runtime aside of your application that will handle I/O and "send work" to the Python interpreter, a mechanism to avoid pushing more work that what the Python interpreter can actually do is provided: backpressure.

Backpressure in Granian operates at the single worker's connections accept loop, practically interrupting the loop in case too many requests are waiting to be processed down the line. You can think of it as a secondary backlog, handled by Granian itself in addition to the network stack one provided by the OS kernel (and configured with apposite parameter).

While on asynchronous protocols, the default value for the backpressure should work fine for the vast majority of applications, as work will be handled and suspended by the AsyncIO event loop, on synchronous protocols there's no way to predict the amount of interrupts (and thus GIL releases) your application would do on a single request, and thus you should configure a value that makes sense in your environment. For example, if your WSGI application never does I/O within a request-reponse flow, then you can't really go beyond serial, and thus any backpressure value above 2 wouldn't probably make any difference, as all the requests will just be waiting to acquire the GIL in order to be processed. On the other hand, if your application makes external network requests within the standard request-response flow, a large backpressure can help, as during the time spent on those code paths you can still process other requests. Another example would be if your application communicate with a database, and you have a limited amount of connections that can be opened to that database: in this case setting the backpressure to that value would definitely be the best option.

In general, think of backpressure as the maximum amount of concurrency you want to handle (per worker) in your application, after which Granian will halt and wait before pushing more work.

Runtime mode

Granian offers two different runtime threading paradigms, due to the fact the 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 st mode Granian will spawn N single-threaded Rust runtimes, while in mt mode Granian will spawn a single multi-threaded runtime with N threads.

Benchmarks suggests st mode to be more efficient with a small amount of processes, while mt 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.

Proxies and forwarded headers

Since none of the supported applications protocols define a strategy for proxies' forwarded headers, Granian doesn't provide any option to configure its behaviour around them.

What Granian provides instead, for contexts in which is being run behind a reverse proxy, are wrappers you can use on top of your application, in order to alter the request scope based on the headers forwarded by the proxy itself. You can find such wrappers in the granian.utils.proxies module:

from granian.utils.proxies import wrap_asgi_with_proxy_headers, wrap_wsgi_with_proxy_headers

async def my_asgi_app(scope, receive, send):
    ...

def my_wsgi_app(environ, start_response):
    ...

my_asgi_app = wrap_asgi_with_proxy_headers(my_asgi_app, trusted_hosts="1.2.3.4")
my_wsgi_app = wrap_wsgi_with_proxy_headers(my_wsgi_app, trusted_hosts="1.2.3.4")

Free-threaded Python

Warning: free-threaded Python support is still experimental and highly discouraged in production environments.

Since version 2.0 Granian supports free-threaded Python. While the installation process remains the same, as wheels for the free-threaded version are published separately, here we list some key differences from the GIL version.

  • Workers are threads instead of separated processes, so there will always be a single Python interpreter running
  • The application is thus loaded a single time and shared between workers
  • In asynchronous protocols like ASGI and RSGI each worker runs its own AsyncIO event loop like the GIL version, but the loop will run in the worker thread instead of the Python main thread

Note: if for any reason the GIL gets enabled on the free-threaded build, Granian will refuse to start. This means you can't use the free-threaded build on GIL enabled interpreters.

While for asynchronous protocols nothing really changes in terms of workers and threads configuration, as the scaling will be still driven by the number of AsyncIO event loops running (so the same rules for GIL workers apply), on synchronous protocols like WSGI every GIL-related limitation is theoretically absent.
While the general rules in terms of I/O-bound vs CPU-bound load still apply, at the time being there's not enough data to make suggestions in terms of workers and threads tuning in the free-threaded Python land, and thus you will need to experiment with those values depending on your specific workload.

Customising Granian

Running Granian directly from Python instead of its CLI gives you access to some customization interfaces that let you alter its standard behaviour.

AsyncIO event loop initialization

As soon as you run Granian directly from Python instead of its CLI, you can customise the default event loop initialisation policy by overwriting the auto policy. Let's say, for instance, you want to use the selector event loop on Windows:

import asyncio
from granian import Granian, loops

@loops.register('auto')
def build_loop():
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
    return asyncio.new_event_loop()


Granian(...).serve()

Hooks

Granian provides hooks registration interfaces to run code during specific phases of its lifecycle. Specifically, you have the following methods available:

  • on_startup
  • on_shutdown
  • on_reload

The mentioned methods accept a callable with no arguments that will be invoked during the relevant lifecycle phases. You can register your hooks simply passing them to the relevant method:

from granian import Granian

def my_hook():
    print("hello from reload!")

server = Granian(...)
server.on_reload(my_hook)

Embedding Granian in your project

For projects requiring advance lifecycle management, or implementing their own process management strategy, Granian provides an embeddable server implementation, which provides async interfaces and won't spawn workers as processes or threads, but will run them as AsyncIO tasks.

Warning: the embeddable server is still experimental.

Note: the embeddable server only supports async protocols, thus WSGI is not supported. It's also limited to a single worker, as it runs over an existing event loop.

To embed Granian in your project, you can import the server from the relevant module:

from granian.server.embed import Server

server = Server(my_app, interface="asgi")

async def my_main():
    await server.serve()

Note: as you might already figured out, the embed server accepts the application object as its first argument, instead of the import target string of the standard servers.

Given the serve method is now async, the embeddable server also provides two methods to manage its lifecycle, specifically:

  • stop
  • reload

The idea is that you can spawn the server as a task, and later on interact with it in your own process loop:

async def my_main():
    server_task = asyncio.create_task(server.serve())
    await my_logic()
    server.stop()
    await server_task

Project status

Granian is being actively maintained and is compatible with Python 3.9 and above versions.

Granian follows a semantic versioning scheme for its releases, with a {major}.{minor}.{patch} scheme for versions numbers, where:

  • major versions might introduce breaking changes
  • minor versions introduce new features and backward compatible changes
  • patch versions only introduce bug and security fixes

Mind that bug and security fixes are usually provided for the latest minor version only.

Granian is used in production by some popular projects like paperless-ngx and reflex, and by famous companies like Mozilla and Microsoft.

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

Uploaded Source

Built Distributions

granian-2.5.0-pp311-pypy311_pp73-win_amd64.whl (2.3 MB view details)

Uploaded PyPyWindows x86-64

granian-2.5.0-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl (3.3 MB view details)

Uploaded PyPymusllinux: musl 1.1+ x86-64

granian-2.5.0-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl (3.5 MB view details)

Uploaded PyPymusllinux: musl 1.1+ ARMv7l

granian-2.5.0-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl (3.1 MB view details)

Uploaded PyPymusllinux: musl 1.1+ ARM64

granian-2.5.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl (3.1 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

granian-2.5.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

granian-2.5.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded PyPymacOS 11.0+ ARM64

granian-2.5.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded PyPymacOS 10.12+ x86-64

granian-2.5.0-pp310-pypy310_pp73-win_amd64.whl (2.3 MB view details)

Uploaded PyPyWindows x86-64

granian-2.5.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl (3.3 MB view details)

Uploaded PyPymusllinux: musl 1.1+ x86-64

granian-2.5.0-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl (3.5 MB view details)

Uploaded PyPymusllinux: musl 1.1+ ARMv7l

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

Uploaded PyPymusllinux: musl 1.1+ ARM64

granian-2.5.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl (3.1 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

granian-2.5.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

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

Uploaded PyPymacOS 11.0+ ARM64

granian-2.5.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded PyPymacOS 10.12+ x86-64

granian-2.5.0-pp39-pypy39_pp73-win_amd64.whl (2.3 MB view details)

Uploaded PyPyWindows x86-64

granian-2.5.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl (3.3 MB view details)

Uploaded PyPymusllinux: musl 1.1+ x86-64

granian-2.5.0-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl (3.5 MB view details)

Uploaded PyPymusllinux: musl 1.1+ ARMv7l

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

Uploaded PyPymusllinux: musl 1.1+ ARM64

granian-2.5.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl (3.1 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

granian-2.5.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

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

Uploaded PyPymacOS 11.0+ ARM64

granian-2.5.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded PyPymacOS 10.12+ x86-64

granian-2.5.0-cp314-cp314t-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.14tWindows x86-64

granian-2.5.0-cp314-cp314t-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.1+ x86-64

granian-2.5.0-cp314-cp314t-musllinux_1_1_armv7l.whl (3.5 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.1+ ARMv7l

granian-2.5.0-cp314-cp314t-musllinux_1_1_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.1+ ARM64

granian-2.5.0-cp314-cp314t-manylinux_2_28_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

granian-2.5.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

granian-2.5.0-cp314-cp314t-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

granian-2.5.0-cp314-cp314t-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.14tmacOS 10.12+ x86-64

granian-2.5.0-cp314-cp314-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.14Windows x86-64

granian-2.5.0-cp314-cp314-musllinux_1_1_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.1+ x86-64

granian-2.5.0-cp314-cp314-musllinux_1_1_armv7l.whl (3.5 MB view details)

Uploaded CPython 3.14musllinux: musl 1.1+ ARMv7l

granian-2.5.0-cp314-cp314-musllinux_1_1_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.14musllinux: musl 1.1+ ARM64

granian-2.5.0-cp314-cp314-manylinux_2_28_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

granian-2.5.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

granian-2.5.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (2.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

granian-2.5.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARMv7l

granian-2.5.0-cp314-cp314-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

granian-2.5.0-cp314-cp314-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

granian-2.5.0-cp313-cp313t-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.13tWindows x86-64

granian-2.5.0-cp313-cp313t-musllinux_1_1_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.1+ x86-64

granian-2.5.0-cp313-cp313t-musllinux_1_1_armv7l.whl (3.5 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.13tmusllinux: musl 1.1+ ARM64

granian-2.5.0-cp313-cp313t-manylinux_2_28_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

granian-2.5.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

granian-2.5.0-cp313-cp313t-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

granian-2.5.0-cp313-cp313t-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.13tmacOS 10.12+ x86-64

granian-2.5.0-cp313-cp313-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.13Windows x86-64

granian-2.5.0-cp313-cp313-musllinux_1_1_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.1+ x86-64

granian-2.5.0-cp313-cp313-musllinux_1_1_armv7l.whl (3.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.13musllinux: musl 1.1+ ARM64

granian-2.5.0-cp313-cp313-manylinux_2_28_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

granian-2.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

granian-2.5.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (2.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

granian-2.5.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

granian-2.5.0-cp313-cp313-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

granian-2.5.0-cp313-cp313-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

granian-2.5.0-cp312-cp312-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.12Windows x86-64

granian-2.5.0-cp312-cp312-musllinux_1_1_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ x86-64

granian-2.5.0-cp312-cp312-musllinux_1_1_armv7l.whl (3.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.12musllinux: musl 1.1+ ARM64

granian-2.5.0-cp312-cp312-manylinux_2_28_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

granian-2.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

granian-2.5.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (2.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

granian-2.5.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

granian-2.5.0-cp312-cp312-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

granian-2.5.0-cp312-cp312-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

granian-2.5.0-cp311-cp311-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.11Windows x86-64

granian-2.5.0-cp311-cp311-musllinux_1_1_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

granian-2.5.0-cp311-cp311-musllinux_1_1_armv7l.whl (3.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.11musllinux: musl 1.1+ ARM64

granian-2.5.0-cp311-cp311-manylinux_2_28_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

granian-2.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

granian-2.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (2.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

granian-2.5.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARMv7l

granian-2.5.0-cp311-cp311-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

granian-2.5.0-cp311-cp311-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

granian-2.5.0-cp310-cp310-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.10Windows x86-64

granian-2.5.0-cp310-cp310-musllinux_1_1_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

granian-2.5.0-cp310-cp310-musllinux_1_1_armv7l.whl (3.5 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.10musllinux: musl 1.1+ ARM64

granian-2.5.0-cp310-cp310-manylinux_2_28_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

granian-2.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

granian-2.5.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (2.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686

granian-2.5.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARMv7l

granian-2.5.0-cp310-cp310-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

granian-2.5.0-cp310-cp310-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

granian-2.5.0-cp39-cp39-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.9Windows x86-64

granian-2.5.0-cp39-cp39-musllinux_1_1_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

granian-2.5.0-cp39-cp39-musllinux_1_1_armv7l.whl (3.5 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.9musllinux: musl 1.1+ ARM64

granian-2.5.0-cp39-cp39-manylinux_2_28_aarch64.whl (3.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

granian-2.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

granian-2.5.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (2.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686

granian-2.5.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARMv7l

granian-2.5.0-cp39-cp39-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

granian-2.5.0-cp39-cp39-macosx_10_12_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for granian-2.5.0.tar.gz
Algorithm Hash digest
SHA256 bed0d047c9c0c6c6a5a85ee5b3c7e2683fc63e03ac032eaf3d7654fa96bde102
MD5 b55ca593d68d4c7ebf7730219c63d70e
BLAKE2b-256 e7916b51c5749a58e5d86063b193c15914700464f0d64eda84178bf432dbbcf9

See more details on using hashes here.

File details

Details for the file granian-2.5.0-pp311-pypy311_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 6bd767b7f456472eef6597570c588ce8ff2351809cd64ecbb5e0b4f41f74044d
MD5 e45fed5a1de8926bb1e17539f3060251
BLAKE2b-256 3907a39bb33f26c422d5548d9b928fc06da41f50314d3f47ed443791be51d147

See more details on using hashes here.

File details

Details for the file granian-2.5.0-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 534a0922c460a8bf9c85937edbc7aac00497d05b64bf9ccc5f5b93006882ecd7
MD5 90dbf2999672e45dfdc9d4bc34616eb4
BLAKE2b-256 3c4924c811233d11756182ad13dd30e5323dd88faeb76879493dccb484f8d8fe

See more details on using hashes here.

File details

Details for the file granian-2.5.0-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl.

File metadata

File hashes

Hashes for granian-2.5.0-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 168762227d94b74dddff066b2f3519f22426e09f8394ed1a2f48072f80be9275
MD5 820c91e4951336f72a1f99b326894e11
BLAKE2b-256 378f9910ac8585fe0f8f0d55bb197a08cccea27e7cd778d059302e5d4c78dfdf

See more details on using hashes here.

File details

Details for the file granian-2.5.0-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 5a8eea72a37c582fe2653587f5b4bb5323bd8882fcbccff3054311b0735d3814
MD5 a68c200bcd85082cf386d9279f973da3
BLAKE2b-256 c7516776580a11e0966af4919735072b7d6fd95feea2907753a77046f1f8fbe3

See more details on using hashes here.

File details

Details for the file granian-2.5.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3ce4c44ebb949980cc02e0c8a823fb4352c94f2443004fe4c39eb0262fcb2e6e
MD5 456feb451434060a370e2e5e744cacbf
BLAKE2b-256 d95ff18826ae61861c6e20a1887a359c71074f423e4cd7237faf186618d0f7ee

See more details on using hashes here.

File details

Details for the file granian-2.5.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0f1a05836852ff70745ec094940d9edc62bb3f1a1f7ffb8ee692d6727ebc8b95
MD5 c8fb6c6015d143710f0dd26f3386cc09
BLAKE2b-256 e7a02a3348f6a1291a50cc0b6535b6cdf7fbb73998a5ced6536c0026834a781d

See more details on using hashes here.

File details

Details for the file granian-2.5.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 53b10f7996c9a732cb3e4cf30890badbac5f9ec4baa2898851a68100767cc754
MD5 c48e5c529f1d44b3af9e39829c852374
BLAKE2b-256 08f9263fd8d1d2f0904ead415a19a1b05980180ee647edcb6b0727e2a942e4ad

See more details on using hashes here.

File details

Details for the file granian-2.5.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a80f23e904f23ca9a90d613444a477a8df8bb2ef1df7bf279ffa6ab7cbbf042a
MD5 bde0c88598eed2dc842e6a5090bee5bd
BLAKE2b-256 17ee97010d532c4ac48fb2c6dd03e296c8d6ad5829e09f399bfd0a33b6098953

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 b27eb3fa435e703730a418d3355ecfffc868fa5892fdde33a48dc0f99c742760
MD5 623c82f54f3bb803502af17d2a129878
BLAKE2b-256 908b846c7e5e6e1645f7e8e3e5d2cfdc762af82316cdac839918144c11ef2869

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 1db48cf24f3230c748e59d0f6d40616289e549cfe51fa908e1a2a85575b9ca54
MD5 a16643160f601805ba555b1bc7b218d6
BLAKE2b-256 f7f9b57edf4f5f90c5bc01880a51ae257810bb479048c333532173677fc2212b

See more details on using hashes here.

File details

Details for the file granian-2.5.0-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl.

File metadata

File hashes

Hashes for granian-2.5.0-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 d2258cdc480327a6d0552acdb1005cd2cd65caffc79ebb796c900ece43b66c1d
MD5 7aad4bcaa029b7a5ebc233e32259d10c
BLAKE2b-256 6ce8f4f9239f1d932c73a96efb930a8278c36e44d5ec051a08a4d98bd3bc4ce5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 ac08d7f6c44643228220c33c3e697601bd785e970e587ab8c7bac11a661e91b6
MD5 622c2089e70b86bbb953d045802b0728
BLAKE2b-256 9f1125b0b7ac30af79d4390149cc96aa8e8bf4d5dbe605feeaec7b832c05c156

See more details on using hashes here.

File details

Details for the file granian-2.5.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d0c41cc1c58c75f6bedde20e958a54cd09c40c924cb8e07e516c76a308e9e64d
MD5 4ca3747c79e327d6658058432e44630b
BLAKE2b-256 c9d8226cc1864814e738fd53971159662cb9d55c5191681a080a4cb73555b760

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4df376a99fed695aeadbd239cda670431184a5e69615ee5aab1624b35dbddbdf
MD5 f772d37916c5de68378f245f9ff97365
BLAKE2b-256 3f2f807528573ddcad450a282133389d83ee4582e3ae0eff1de20e8d70768e6c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 88de6d16de826897a83eb971af4ff6b82275771f6504e802e36cb2749836502d
MD5 75d6b18b0632d101cad3d75d952ca802
BLAKE2b-256 9b0fcb32b490e1aff8dde99b730013e4cc429e9b15b884dfbb95fcf423973cab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8e0ba96062b56d76311b2ce990065ae5580539e97e1609ab1949ce9f29114b3e
MD5 3099041874a8e6d58154a16c9631753f
BLAKE2b-256 392c4e51fe7d7539d5629df74735529220bb7f21155151ad50ff346c117b9199

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 32c331b04b56098733970ced9d75e5fb31ea419cff054804ae8038f35f18fbfc
MD5 01267fdb099f764247b350c5675fcd15
BLAKE2b-256 c9fd01da21341f259880de2e906236e1a963352ddd1833fe4aa40e563d76a1f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 44962226d038592569937b396f02ae626f72a68fc3d0aa722f0163f6dc6179cb
MD5 eb619a941588b8feb3df56276df0941c
BLAKE2b-256 d5b84fc00ffc99f1f67cefa0cef6522576553565b83c17affab4fff9b2ce79af

See more details on using hashes here.

File details

Details for the file granian-2.5.0-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl.

File metadata

File hashes

Hashes for granian-2.5.0-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 241cec81b878869218e8615e125253a3021be42cb5933d72504dca77c8e6cccc
MD5 3621e923841bb22c1cb231cb5d47fc9a
BLAKE2b-256 67d7d948c745da3451b0e6d114d82b9baa765c16590b75bfbeadb7e94b2f6027

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 37ef93a222acfc34a335a8a41cb3542f15b688acbe1a45d1c9a6fe456f9cf0bd
MD5 0546868dd113a650f53394e8f0b8efa0
BLAKE2b-256 432a0efbe4076890b35e3a8849ddf8eb44bc704da18932442d187985c16512ae

See more details on using hashes here.

File details

Details for the file granian-2.5.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 47fc997b4ceda234189bc7c26f89aa3579f0fcb32b370b4c58dcc70624353c87
MD5 d11607a627fe91b2386113956ff79bcf
BLAKE2b-256 11de36d1efd092a44eee520daea6ed5c8f232a22d1828989e11538e9e7343086

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dc62b9dcc9bb38fe3a3d96b6c01dbb588b4344685304c9da6d94fb653bca8580
MD5 31c74390d7619b4d010d501bde139b95
BLAKE2b-256 bb48917e23d962ba9abf47006e8848f9ce6ac1d0b48db04e880ef0f5b4a1f068

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6257e475353f116c55bb61669b501d513b57310457d97f93ae71214788101931
MD5 b071eaed1d0f1dfbdd09ff9d9fa7d85e
BLAKE2b-256 4fa2cc78210b3aadbe42e6b6f3892afe07f3334b77da316cae8fb00a99f54469

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a506c86460370487c9e8a662298c7ae6d47573f863095f4d88fc6fad7eaa5b3c
MD5 4be333dc1cf647989985bf4a77ef9987
BLAKE2b-256 baca0d8b28dd3b413b25c1d960975b390f069bfca4e53e35c780a7c71053291f

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: granian-2.5.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for granian-2.5.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 468cb5b61ee86f2075e714ad3d4f4b3bec4b10067fcf0c8341f76fd11b08c7df
MD5 31c3b93bec7d54a4b53638542ed7db8b
BLAKE2b-256 0e3720e42e881d6cebaf72ba4ceee319c8241f35c6f7f89485bec20cfe8b6320

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314t-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp314-cp314t-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 fe1f870d24c0f9e4a2dfb6f44ef2173fac90425dcc7e35538028fa5ada75876b
MD5 cd16353ec790bd3f799dcd3784966e14
BLAKE2b-256 e6240575774a57278db4bf49da156e02ad11aa65e564a2070d66c1b0849f9ae7

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314t-musllinux_1_1_armv7l.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp314-cp314t-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 141bb4aff1c83b51b2d34381b515d9db38d0481603119e4519fdc9ae932e7a2e
MD5 684fd5846cf1445dcba8aa38bd9e2c3b
BLAKE2b-256 151ced2d4e3029ffd0d3f3522e38c022b5bbe23d4b27ea919c4737fc307b43dc

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314t-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp314-cp314t-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 000952722eb63bb1811e391142872bf1ebe7f4434b1d39bbf4e91090d4af9429
MD5 4e4ffe326720818221e7b7d033ea436a
BLAKE2b-256 1d1a3ba12fd7466741cf3fe7e67d36153261099acd94ff29f6096b8ee62db4f2

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 48968902d351f1bfc70ac5fa69157ee86e5f2947f49df5a84c0965213dbb4ee0
MD5 fca2f73f210d0c8a6703e2c11499005a
BLAKE2b-256 686f28e7ddf79de6244a69a0c5e283a2ab7a4089185f9f3007fb9fed86ec11d0

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5e5fd23b02bd2c7cc9ca86d780f262b63a53bc5d7846e96a15edf4ac7aa10a79
MD5 60eb81d2ba9aee95613a634107eeb24b
BLAKE2b-256 2ea046733fbde3f19bcd07b16619113a898ebe0c2762e6a63eb8eed234c48bfc

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d6f209d06723fe20808be7206fc2b86f5fabc015eac1a5d458b1a6e98f005b7a
MD5 e90f5f8ea53a210ff2609d82a3bc82ce
BLAKE2b-256 dba627e2ea416d87b23df767454b7898bc85f184056f4cbfc208a10b56193e79

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314t-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f69e54a136725e7d2911968571fe9a5685282d0097497799b6453d9d4dffee31
MD5 d1a0fe4709639e557d64d561e0495575
BLAKE2b-256 2f7eb6742dab22285aecbdf59169b3098fb2ec7ad5b98a49b40dde45701bfc97

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: granian-2.5.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for granian-2.5.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0136e869c03dc77230c894d90ac0d97e61fb59984988b933d3623142edb12fd9
MD5 0af4ad5e084bca69298af33b3a63c21f
BLAKE2b-256 12694c65487a1746674d0cee1ff665a7fbea15ab74eeb64ba81de1d5a8e7d5f8

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp314-cp314-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 846550b371057e3b1e151ef30fe25026e9882a525d0fa66929650eb9ecf75c21
MD5 932b580094e3ec3b62b3bc2297df5e8c
BLAKE2b-256 3a5bec4c8673fba9b240680bf9fbe8c8be049a127a3dbedab926546f3b22e214

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314-musllinux_1_1_armv7l.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp314-cp314-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 9a11f339ba11940218c0f8ac2c6da872ca1832789e4e2ce10958e8da931bc0b7
MD5 c6f385ac872b8c98b1f9aa4840775e21
BLAKE2b-256 1adeb344e0237e64d7bd1733b8ff418f616e91028f19e6199169cbffa3b203f6

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp314-cp314-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 e5142c8dcbe66c9a5c611ba46de47d1ae2cda5f6efdc11d223b586d980158caf
MD5 6c15cccfa4b48e7f350fb80b4f675b19
BLAKE2b-256 8446ea6c67008ac403fb40d01b8c792827ce8a1625504d1811cd4533219c1e9e

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 99edb7c9875f91341d40143d14d45919385a29470056f5a2da94e14746cbcf74
MD5 edb30e9e8bd288680470ca148f485f9f
BLAKE2b-256 e8c526871d3f8658fdc832768dfe26a005d711c1af358d3b651bab3658220be4

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fd30fe55ba2f9f6ed85b91d6804d042a426480c504b322d42403bec42c1e303c
MD5 dbdecaf1b1749f72b9493dc01723a8f7
BLAKE2b-256 48609bd62de29df75911f26672bfed13e05273560c51c76cddda25516f53583c

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ee2bb9dc2c93aa441175d7cc1e75aa670a757100945844646de1b7cb3777f50b
MD5 b5e9ecbb8d362edbe2fead0fc1d6b4c6
BLAKE2b-256 f266476ecee6b8fa9c5f61a71f0b26b15c8230fed9ceb4a0e1f2206e7ffe0a40

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 b0755ee98a021c223df203f6d5bc7a57131422ba579addfc5f3b5f3d2e362c81
MD5 238623c5254039977e8c51d09b1b6b00
BLAKE2b-256 6af1841256d8a21af9a7980a8888e9aa15ce2bcf08d314ca3a0878228fa4bca6

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 64327e137b36e648598c595aad4eda92f54e97262cdd3a0ef28dfdaf7998cfed
MD5 7ad89196f771625cf72ea39e0fb803ee
BLAKE2b-256 57c1f83ed5c17e66867f0ff91cee530a8c0bf72a31db5dbfcaa41373f5f4bf3b

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2959482f9907206c11a059ababe2705ab10d2ddd68004aaf6f6977e193ffc3e1
MD5 9402b8c25cff55897fb4bdbc8c719dcf
BLAKE2b-256 6d7fb4bbe3b818ec058afc0b5c19d46d4955b1b94297c503d2d92470f60e7e20

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp313-cp313t-win_amd64.whl.

File metadata

  • Download URL: granian-2.5.0-cp313-cp313t-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.13t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for granian-2.5.0-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 9f6d080e45735dd93e4c60a79e42ee9ed37124a9580a08292d83b0961c705e39
MD5 bacb7b55ea87703de752ab22e4e1d67f
BLAKE2b-256 ab8ebbe7564e28385ebb35e94dd7127238b9ba5c29ee09791f3f69d77b3985d4

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp313-cp313t-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp313-cp313t-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 944ea3bd400a7ccc8129835eda65bd6a37f8fb77828f4e6ded2f06827d6ec25f
MD5 738ea66c19f0ea5fbe74d74c82560945
BLAKE2b-256 a1c54d45042c86a924703f0c9617859742e929cdfe31b644bb16f9845c75342c

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp313-cp313t-musllinux_1_1_armv7l.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp313-cp313t-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 c28a34951c1ed8eea97948882bdbc374ce111be5a59293693613d25043ba1313
MD5 5f6d1dade602852c8ab42e61b021ca79
BLAKE2b-256 abbae70f0de5cd6e5bca15ea5e5bc6c5598d34f9d4e9e6707e79e6edb63f1fac

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp313-cp313t-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp313-cp313t-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 8f9918bee3c21eb1410f4323440d76eaa0c2d2e6ca4fa3e3a20d07cc54b788f6
MD5 a0815570eeab8c8aa8e404d414831aea
BLAKE2b-256 4758e828bd5a02c412484b4056cef9aa505b014cc0bb1882f5dbdaf26782f147

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp313-cp313t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9a53151c2d31dbcf1acbe6af89ce0282387614b6401650d511ca4260ba0e03c1
MD5 4762a690255ff47717ebe9b35b7bff19
BLAKE2b-256 ce49cf0c89eaa41ac81271e3ae33834f71db945cc09dba609f6dc0e75247fd35

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3152037d799ea97e5736de054a48bf75368fb79b7cfee7e6aa46de1076a43882
MD5 684f526b04a97e705f59e14a15140245
BLAKE2b-256 79b38944acd78ff37a2effcdaf1d6163179e38c46c67c98bb1a68e93a75eb2c2

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f7bf7ed30bcda9bbc9962f187081c5dfa6aa07e06c3a59486bc573b5def35914
MD5 fdfbff9e39d3d6a4aa604affa74f74fe
BLAKE2b-256 c23514c2c050f3df95eb054f2a44b41a02c30c8a04dc8cca888330f55c43a436

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp313-cp313t-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f371dd9eedae26158901fee3eb934e8fa61491cc78d234470ce364b989c78a1f
MD5 bddf407750b8c213b17f68331650dd4b
BLAKE2b-256 e943af71556ea889c28b8c1c74e9f50a64c040a92bae5e4412b8617638a8aa0e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.5.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for granian-2.5.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 76dc084d1c528683a88c2d1a00786c9bc013b695b1776ad8a3c71419c45e1df0
MD5 7468f9766c2a73c8592d4d7402417c37
BLAKE2b-256 9742c1a8f51d7ce3408a6aeebf68338e0282f0123b65c2fef1d7c202a407062d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp313-cp313-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 74601bda3aedb249a3d5059d48108acfa61d6f71686162bda0bedc013a443efb
MD5 f822b40099261a25cfae4dc3dc7c081c
BLAKE2b-256 fd64bd41efc6bfbca0ff871ce28a13b9e687055dd70913dfce92c4a21a264bf7

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp313-cp313-musllinux_1_1_armv7l.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp313-cp313-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 879fdeb71fe279175a25d709d95dd2db01eb67cd12d300e51e3dc704ca5e52fd
MD5 3dae647c0ee346ed91c90920c10670e8
BLAKE2b-256 c1877cdd96fbeabbceea3820736e65bd6d8c0021983605cee26ef1bf2e11e24b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp313-cp313-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 fb157c3d66301ffad4113da4c51aed4d56006b9ebe9d0892c682a634b5fff773
MD5 e1b367791a282c08ec1c19982ef6a8ea
BLAKE2b-256 4a49acc3f1e02e35009d9486e4e00d2c951798a8098935d2374f52c7d2728438

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 afafac4908d5931e4b2c2a09612e063d7ccd05e531f16b7f11e3bccc4ca8972c
MD5 7de0237338d07503417e092503628371
BLAKE2b-256 a58c6c294cf3d77dc9524530d30057f9b6e334cc12c5414feb604fb277d030a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 36493c4f2b672d027eb11b05ca6660f9fd4944452841d213cb0cb64da869539b
MD5 f1defffe303d1a7848b30969f4fe17df
BLAKE2b-256 fe918ae8aa9f0c3bbdf42fada15d623a5ab9fffd38acc243ec5619b6cbd60b9a

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 af272218076663280fdc293b7da3adb716f23d54211cefad92fcf7e01b3eed19
MD5 81d5ecc6a3f3ec5f57aefe43754d47ef
BLAKE2b-256 0757c8b5f014673717e850db6d551057e74e330aadad5250d3f312cee432b1ec

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 bbc4ebc727202ad4b3073ca8148c2af49904710d6fce84872191b2dd5cd36916
MD5 7c032b39b3379ee68640d00ab80b461d
BLAKE2b-256 6a2d718620f393b6030d4a9ac5d1bc66cc5d159fb7f7c60c5d4483fd43902f7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 31705782cd616b9b70536c1b61b7f15815ebc4dcccdb72f58aa806ba7ac5dfa1
MD5 65ea57704704f37b36719494f297e7d5
BLAKE2b-256 89f0e7038189d4e3b5f1e10bc23547b687bcdecdefbddef87013db64efea6800

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 50d4dc74ab763c1bf396cf85d93a8202bf1bfb74150b03f9fd62b600cd0c777c
MD5 eb5f2639250cca2d61cf9404e2b8dde6
BLAKE2b-256 c9d8c3c8a452f1b590400bb2cdef1ca61da8e9913762884cf3e6ba801fd3fdad

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.5.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for granian-2.5.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f60c46cf8684a6b5c1d9bf88cc9a248682a753874e14bd2cc6c81c2001449dab
MD5 be3a00bccd629d2e176b33679b6e7662
BLAKE2b-256 f55c3176f48ef4c723a0bd5143b59c598957749d05a4f88db5e03760858deae7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b1573755288d70f37b55acb14f01cb3a7f7cdca7bf143f908c649ada254e9cb6
MD5 a87b96e376f21d31f40e9e1edeb89f8e
BLAKE2b-256 498c7e5d0187a4e53830cc49231a55f01d3d251eec0cbb09209a0ffde8b33741

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp312-cp312-musllinux_1_1_armv7l.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp312-cp312-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 760275d286142775fb21c85d96fc4996e00de9d3b054c424b2c8519679aa14b5
MD5 2efab520a53498d511e07c749e534dba
BLAKE2b-256 8a4e80578d06426a40a2718b3183c5e32ba570001153cbbb3fe523d3f9e89880

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 a9c5670171a97c35aeea79fd7100058e461b0271a7e81fdecd586c770cdd2b41
MD5 7161b0de0ec73d4001d0a6ae86790ef6
BLAKE2b-256 0a64837131cd49e17c219e2a04ed711459e0f93bd5c1db7fc243666e1b9d412a

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c8a51bcb7e533ab75d2d9e13432e9b63c90eeb7fdde700875253efbfb2dcdcbc
MD5 0a0065575dd5f03cd4bcbbee0734a9f4
BLAKE2b-256 8a7bded645443ec95921d407e3d277418987a4aed955830f67d6b151c8c095f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eda01a9027f2921f42b4f8bb16e46f8ab67a5345e52b3ffeedd2f921a09c87b6
MD5 f5ce52572407c2145a8bbf044f82463f
BLAKE2b-256 176c858a7cce6ce07adc2f0e7b1809af61d1af2affbc07edaecd127f16207b37

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 def250f04c0374069278152bf3e08ecb1f67e0c99d3eb14d902df1e1558b93fa
MD5 35e51b1872fbd968f97383027b445ee2
BLAKE2b-256 bf7d7ca304dde1ce475b83e4add007e36a87284e6838f158db87c11a2c93f379

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 35eb58b0f80fc9f55d5210d339ba8f5f8d9c126a2e29f051e8b62353e3f84b1d
MD5 e7cd624431017f4363522c509035a14d
BLAKE2b-256 2c5b44089c2384ba2e3e5a3cdf08e8a000bff07cf7382fa2d9a0e4e1a9ba6451

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b0a4c317f30c227baf16f541f0c93cb08ee45fbf8a2ef5317ba07b6bd6b7c877
MD5 75961a334377fdeddd8abb98c99e9424
BLAKE2b-256 50946bcd3d0cec40994112dfd2b3102f4ff3bd2e62928f6524fb95f38fae6647

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0e7627c3b7e3f9c024c4edd80636e8326fbce0420889e0951da349d13742e503
MD5 5a7bafdfe21d992bafac876158f89108
BLAKE2b-256 d131590b932524f43289aa9f735d0b92ccdd97b2d9e388a5acad171fc01382e4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.5.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for granian-2.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 29da6a1c6dfc728fc96649b514e26b38848e40e4e78676f51f2ed90c51da733e
MD5 d0f4521f804e514a0674dd872b946206
BLAKE2b-256 d508047b3004ebbad8934b4b963c1ab5a0cd449c94c68f95557d57a7d561695d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c6141582757eb2bb8c8390637a3ac29dbba0c10db93192adb360c7060f149782
MD5 df316f1435e69c267e0ec49f311d1166
BLAKE2b-256 2958984b53efc3b245f5f9b8d76822061b3fb4c5c1024d526ffe59da55b5405c

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp311-cp311-musllinux_1_1_armv7l.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp311-cp311-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 0429dd0c4c21c123b06b7f9057ecb4c1fc3d6228f442276e27545a5ad6fc780c
MD5 ee7621559e07e3a30096719ea7955694
BLAKE2b-256 fb7fa8d2fce7f810aa3b7b16550cfbde4756eeb3efcd3646b0adb6c6b7d4bf95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 22bac6aace54e4183831a46a4033c076100150527676e666eeb84df9829e0e1c
MD5 8e2f71de09090f9e26d4dfcbd38e813a
BLAKE2b-256 6a06815fde5195f40a2a1be4e78ad0c3cdd05727dcca59a5a231d0df95fb6f68

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 651cbad3a137b762885b7e57dea77b5d11262b0a2c16d4b61b4812bc8bc5ffa4
MD5 d8457dfe750db61f14b43c44c21d5766
BLAKE2b-256 04e0988993586ba3d5e80cc87fc464601df55634ec440eb10889c8fdd3b613ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5f6d70f6e7edd183afb62468a7fc175348145aec303297a41b1714a9b6d8150d
MD5 7d01a2e86bc952968f311ba4006804d5
BLAKE2b-256 0754f29100152e7dd6f5dfdff2626b040711735aff2ec9f61cba8e7d04614a5e

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 604c544273b36091b54fdf66d4e9a0f98dc0369b380ba5dd328478ba65cda320
MD5 b0735383b740840e03a4df792d70a72a
BLAKE2b-256 8212ba9be1b7a9ad28b66735a648a996578b64873c580a3a0681575e60cfa0f8

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 cf9dc480d481ae834a085f1f46213ebf80512b1ace0559f6c0335edb24be0e92
MD5 088cc78dc17d56c92f79adc8e262e530
BLAKE2b-256 2ad95f94af3cbdbe023774d24616648e428cfd307f18232a64d82caa2ad8113a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 58aea28ebb2cdf7545ee3cb1c8593c8b2f857a9fa6219589ecd3f5a4b365262f
MD5 d1929ee3796da588f228ae232354ed82
BLAKE2b-256 efb8fcb93a7bddcedc0af11a446094b33dc99af93a338abd8e95747aae3d1112

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0eda4c389c222aa5455b7205640df0207201a86c46e5be98dd0040b6cc45146a
MD5 dea3c5281bac661f594e8b3bf960da74
BLAKE2b-256 e3f37d9cee103d91f4d1b934ebaa0cea944638a7b4940c5af72163e486cd4989

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.5.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for granian-2.5.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 bbf329f0110e9a873b4c1d2290d4b9ac00e9ae1b91949097aeed1309f37518b7
MD5 6d148fecba531771ab69b4e88988d70d
BLAKE2b-256 30ef13969786858cd2a5e687dfdcaeb2c4b593ed557fbb0282b2f1e2c0e7a5e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 5aec8050fc01706d27d74fffc32c29eb483530ea3ad383e885e8b7315ae1c699
MD5 c7372b6459f548a512b81a4dd1aace3b
BLAKE2b-256 a3dd5e3bab1c332ca2194ef3c58075b1533d944e2cf66b6a242c60c81957e962

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp310-cp310-musllinux_1_1_armv7l.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp310-cp310-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 d09f33aa20fa0f7f9e48f12e87573b3819b357235cac602ec6cef1b5b3ca33a9
MD5 811de0f805992e4022b180c3f340ee51
BLAKE2b-256 8f71aa85e2ab2d183efcdbc199107d7683629ff5aeabad409cccecc8197c73d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 e08ce1768433327720a754a78a3134100b989663c6e924626ba8ce8cdb3ee0a4
MD5 2e69bf8f8f6ecca7a702ac1c23757893
BLAKE2b-256 5fe213caaaf3a5f8eea1c265567486927035244a8ae8b5f357d697d8c09a7474

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 92271019ee283cd74d137e6d8e4fda836a80846a7a006d986246d3e300d8229a
MD5 368ea819c11fc4ad133b70b8d4eb7253
BLAKE2b-256 21cac67684afa272dbde2898b6eed6b51679c16b40e0f2562ef36030fc63fb45

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c5d01fb578ab52b95c8cc39fe09a01ef5682011f4eea67d0e5e33ab941c9ef38
MD5 65039c5f3cdeec299a7c2168fd3bffa0
BLAKE2b-256 8aa4c11b542bae8d7d02e1f5f07a0925b4bb1ad084fa1438e9ec2f89369154fd

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a5f8b1a0b82fa3af2a94572664a3382e3d786981a9cda3bf8b118a0f10338f89
MD5 58143a43e4338ccfe989db93b985c251
BLAKE2b-256 8b0d2d0ab45ba4bd68e70129ebe6d14ab8a41263e66a4b3b25b80c8d60ccf704

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 0ff75ceeae4c9015c1c5fc5d699bb75b7b10d05f5d69aa091ced11be1e145e43
MD5 ac2d7be1d1707379c990caa469005de1
BLAKE2b-256 8621f40d46af2ce98b7b883d5d34730103afbd5a7bb8fd1af8989cb617275be5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aba86bae39b4e8f770d7e6664490e0abdcdcd742300d16cf1cb370dc159a09c1
MD5 40651a59620fd500c25da372aba980ee
BLAKE2b-256 bac80b48fd67dfe88ce7a21de0fe7030789f71c26223f5523bd5e951dd98afde

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 49c1c5059b39db0863e3e967ba18f1ab55fa0f86388537d937aa18baf2934f71
MD5 8227d2d55aaefff64ecf7a2043b58d02
BLAKE2b-256 95312d837432708230fc281fce10d5db2eb1755005c9d8f4fdac0707729d442d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.5.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for granian-2.5.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 dbfd65d04a7d4fdc441550d2e60bb1cca283f50a3dbf1d1dcfcc279158fd50f2
MD5 4851269d89a15edbbee8c58b7a073126
BLAKE2b-256 928cdda9dfd36f9b79f521c411d10b4e06bbf262fef2dc7cf9f67dfa815e8cf0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 429083f21c4cc8537481ef7a8b2754a0f6c603ac836ee0729aa8435abca27020
MD5 cf7caee8dc1a47567bc226bf2d22f6b1
BLAKE2b-256 edb95545d69350f1dc28b71f0a005e14ce7d74e203c70e7ab7c6f85caf5fc142

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp39-cp39-musllinux_1_1_armv7l.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp39-cp39-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 4af6c17009cf6ae7d6f3139b4e2b7b2e20e443b22279ba89381d08aca42df9ec
MD5 40f93343d89c1c72515aabd22d7a982c
BLAKE2b-256 b88119d68b7104eda8ed4c7477855d3daa2044d254aa4c1acbd00ff2e4db9f1b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 ceb1b6e070697501c80ea50fce40f50cec374b5f5952121bb3da1792c6f1bb41
MD5 e2c1bcf3a5cbd650db87f82a6b22f73b
BLAKE2b-256 9f82e50410bf757165297a75a7683143ab2514ce54d08a205d4b0de1d3e4ff9b

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 65795bd3a3b6f0f65c4ed37a3c6b7c34530c895638a5d9f25fe302db9807a3a5
MD5 5f1667f796205620fc83dc9af41cf589
BLAKE2b-256 82a4c6b951c03e891e6dd829e0c2106494c2855d197deb17792a561b59e5d201

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 859fddb94fcb782b8257de5c2d4c7769495fe25590db014952c923147acf3dc1
MD5 de820202c6a9ccc5b34004cf711c2567
BLAKE2b-256 e6b91fb582225908a322d1842b753e17be2456537299ead5bb6574d6cdec78d0

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 33618a911f91fa9f10457b7130d66e4ffe4f51ed8c66544e8e4db188ffb520b2
MD5 f4a027659c52b8d24c0438549f7dc843
BLAKE2b-256 68b9a8ccc5ee2f0d2d18d2b17006cc02e734f7cca806a9d1ea28968223973585

See more details on using hashes here.

File details

Details for the file granian-2.5.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for granian-2.5.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 47aa39b08c17b0a2795bcd38ac453f92d027820cfac42c48fcdf16ed91c03d32
MD5 88d2665e3400430b2ef87b57e50d7b8a
BLAKE2b-256 072b5ab0c0b20d8a1a550da92df6973e857ca5027c0a93c90e529d151d25cde2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a0a3a59f041a4e6dbaebb1fa92e469a28e490f3c51894994b8a64f426db64890
MD5 d19f74d7cb59860233c4a94b0d5bff60
BLAKE2b-256 e923d946e54e3d4c58c41410d765000f91d46d6f7b6a4cd5ba5bf82c9c187c47

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.0-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c04d78abef25514c3deefcc233cc13e240f0268daae503bc8e11cc2c651868d2
MD5 1b696f15d8ec9ce311ef1ee0a9bed1e4
BLAKE2b-256 bfe02e55223115e607e251aaacb1f1c090d363130f17adcafd4b63f21c565c2a

See more details on using hashes here.

Supported by

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