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 throughput 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

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.

Human-readable durations

Whenever Granian accepts a duration, it can be specified either as sole number, in which case it is interpreted as a number of seconds, or using one of the following suffixes:

suffix meaning
s seconds (same as no suffix)
m minutes
h hours
d days

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")

With these wrappers, Granian will use:

and replace the relevant request scope attributes with these values.

Since altering the request scope based on values from headers is security-sensitive, Granian will check the request is coming from a trusted host as specified by the trusted_hosts argument. By default this value is set to 127.0.0.1, which means Granian will only intercept those headers if the proxy resides on the same machine, but most likely that's not the case in a production environment: you should thus provide the correct set of addresses to the wrappers.

The trusted_hosts argument accepts either a string or a list of strings, where valid values are IP addresses (for example, 192.0.2.1 or fd12:3456:789a::1) and CIDR ranges (for example, 192.0.2.0/24 or 2001:db8:abcd::/48). The special catch-all value "*" (or ["*"]) will make Granian trust all hosts and effectively disable the security check.

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 projects like paperless-ngx, reflex and searxng, 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.4.tar.gz (112.0 kB view details)

Uploaded Source

Built Distributions

granian-2.5.4-pp311-pypy311_pp73-win_amd64.whl (2.2 MB view details)

Uploaded PyPyWindows x86-64

granian-2.5.4-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl (3.2 MB view details)

Uploaded PyPymusllinux: musl 1.1+ x86-64

granian-2.5.4-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl (3.2 MB view details)

Uploaded PyPymusllinux: musl 1.1+ ARMv7l

granian-2.5.4-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl (2.9 MB view details)

Uploaded PyPymusllinux: musl 1.1+ ARM64

granian-2.5.4-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

granian-2.5.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

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

Uploaded PyPymacOS 11.0+ ARM64

granian-2.5.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded PyPymacOS 10.12+ x86-64

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

Uploaded PyPyWindows x86-64

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

Uploaded PyPymusllinux: musl 1.1+ x86-64

granian-2.5.4-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl (3.2 MB view details)

Uploaded PyPymusllinux: musl 1.1+ ARMv7l

granian-2.5.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl (2.9 MB view details)

Uploaded PyPymusllinux: musl 1.1+ ARM64

granian-2.5.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

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

Uploaded PyPymanylinux: glibc 2.17+ x86-64

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

Uploaded PyPymacOS 11.0+ ARM64

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

Uploaded PyPymacOS 10.12+ x86-64

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

Uploaded PyPyWindows x86-64

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

Uploaded PyPymusllinux: musl 1.1+ x86-64

granian-2.5.4-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl (3.2 MB view details)

Uploaded PyPymusllinux: musl 1.1+ ARMv7l

granian-2.5.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl (2.9 MB view details)

Uploaded PyPymusllinux: musl 1.1+ ARM64

granian-2.5.4-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

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

Uploaded PyPymanylinux: glibc 2.17+ x86-64

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

Uploaded PyPymacOS 11.0+ ARM64

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

Uploaded PyPymacOS 10.12+ x86-64

granian-2.5.4-cp314-cp314t-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.14tWindows x86-64

granian-2.5.4-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.4-cp314-cp314t-musllinux_1_1_armv7l.whl (3.1 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.1+ ARMv7l

granian-2.5.4-cp314-cp314t-musllinux_1_1_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.1+ ARM64

granian-2.5.4-cp314-cp314t-manylinux_2_28_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

granian-2.5.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.14tmacOS 11.0+ ARM64

granian-2.5.4-cp314-cp314t-macosx_10_12_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.14tmacOS 10.12+ x86-64

granian-2.5.4-cp314-cp314-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14musllinux: musl 1.1+ x86-64

granian-2.5.4-cp314-cp314-musllinux_1_1_armv7l.whl (3.1 MB view details)

Uploaded CPython 3.14musllinux: musl 1.1+ ARMv7l

granian-2.5.4-cp314-cp314-musllinux_1_1_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.14musllinux: musl 1.1+ ARM64

granian-2.5.4-cp314-cp314-manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

granian-2.5.4-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.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARMv7l

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

Uploaded CPython 3.14macOS 11.0+ ARM64

granian-2.5.4-cp314-cp314-macosx_10_12_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

granian-2.5.4-cp313-cp313t-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.13tWindows x86-64

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

Uploaded CPython 3.13tmusllinux: musl 1.1+ x86-64

granian-2.5.4-cp313-cp313t-musllinux_1_1_armv7l.whl (3.1 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.1+ ARMv7l

granian-2.5.4-cp313-cp313t-musllinux_1_1_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.1+ ARM64

granian-2.5.4-cp313-cp313t-manylinux_2_28_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

granian-2.5.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.13tmacOS 11.0+ ARM64

granian-2.5.4-cp313-cp313t-macosx_10_12_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.13tmacOS 10.12+ x86-64

granian-2.5.4-cp313-cp313-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13musllinux: musl 1.1+ x86-64

granian-2.5.4-cp313-cp313-musllinux_1_1_armv7l.whl (3.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.1+ ARMv7l

granian-2.5.4-cp313-cp313-musllinux_1_1_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.1+ ARM64

granian-2.5.4-cp313-cp313-manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

granian-2.5.4-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.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

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

Uploaded CPython 3.13macOS 11.0+ ARM64

granian-2.5.4-cp313-cp313-macosx_10_12_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

granian-2.5.4-cp312-cp312-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12musllinux: musl 1.1+ x86-64

granian-2.5.4-cp312-cp312-musllinux_1_1_armv7l.whl (3.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ ARMv7l

granian-2.5.4-cp312-cp312-musllinux_1_1_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ ARM64

granian-2.5.4-cp312-cp312-manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

granian-2.5.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

granian-2.5.4-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.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

granian-2.5.4-cp312-cp312-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

granian-2.5.4-cp312-cp312-macosx_10_12_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

granian-2.5.4-cp311-cp311-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

granian-2.5.4-cp311-cp311-musllinux_1_1_armv7l.whl (3.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ ARMv7l

granian-2.5.4-cp311-cp311-musllinux_1_1_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ ARM64

granian-2.5.4-cp311-cp311-manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

granian-2.5.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

granian-2.5.4-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.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARMv7l

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

Uploaded CPython 3.11macOS 11.0+ ARM64

granian-2.5.4-cp311-cp311-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

granian-2.5.4-cp310-cp310-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

granian-2.5.4-cp310-cp310-musllinux_1_1_armv7l.whl (3.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ARMv7l

granian-2.5.4-cp310-cp310-musllinux_1_1_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ARM64

granian-2.5.4-cp310-cp310-manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

granian-2.5.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

granian-2.5.4-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.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARMv7l

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

Uploaded CPython 3.10macOS 11.0+ ARM64

granian-2.5.4-cp310-cp310-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

granian-2.5.4-cp39-cp39-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

granian-2.5.4-cp39-cp39-musllinux_1_1_armv7l.whl (3.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ARMv7l

granian-2.5.4-cp39-cp39-musllinux_1_1_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ARM64

granian-2.5.4-cp39-cp39-manylinux_2_28_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

granian-2.5.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

granian-2.5.4-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.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARMv7l

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

Uploaded CPython 3.9macOS 11.0+ ARM64

granian-2.5.4-cp39-cp39-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for granian-2.5.4.tar.gz
Algorithm Hash digest
SHA256 85989a08052f1bbb174fd73759e1ae505e50b4c0690af366ca6ba844203dd463
MD5 d38b9c85a226085dad7a61e9307e265d
BLAKE2b-256 789b6ac903de211e5874824e7349387c9e0467459dc1ad0cd960cb4196f38ae6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 602fc22b2fde1c624cbc4ee64b0c8e547d394fbef70927ec7b0ca5e2d1ccea31
MD5 203b87fc8f0dc1b725fcc9ddfff39daf
BLAKE2b-256 2b016fed17eab6232a19defdb42f5bd2fe51785e1de2e2086c78586ee1463898

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 10ae5ce26b1048888ac5aa3747415d8be8bbb014106b27ef0e77d23d2e00c51d
MD5 6bb3f22f8c358a736d6af926daf48d2e
BLAKE2b-256 4c2f2abc969b206033d789c87d0ed7ee17a8831b0740e30590348abb544dba13

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 b78b8a6f30d0534b2db3f9cb99702d06be110b6e91f5639837a6f52f4891fc1d
MD5 28cf0dd7805e75181b99ed1a27112394
BLAKE2b-256 4942ecb762dbf7a1447a89b4884907d07fa505fd89f904c1e2d3bd4f30aeb9d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 d1712a8ede152c2648557de6a23dbeb05ed499bfd83c42dad0689d9f2ba0621d
MD5 a51f06f89262fc6d1436160dfb199172
BLAKE2b-256 27dd3a8f99363b05d33049ea8cd94e0d40792aebddfa39f6f14120b71613fdca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cbadc8e49f90716b8f8aa2c2cee7a2e82c5a37dab5f6fbd449e76185ce205715
MD5 3b781abda377f3b6708ac120b6e43f2e
BLAKE2b-256 ecf6dd0ef6a7f3f4fea28b57014bc69b925995c7c6006451653b115440bf432b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 48356114113ac3d48f70ea05cf42e560384c93318f5ef8f5638cb666f8243f2b
MD5 8e9686957ce6845a9efa1122fb238893
BLAKE2b-256 3210871e8d09eae976613b3b0812eb927d39e7960fecf1ac885e21962bbc8ff3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c5550d533a61053fc4d95044bdc80ba00118ca312ed85867ed63163fa5878f85
MD5 292a83a45894230d06cdab4d28447bce
BLAKE2b-256 6f744ac398a54f718db5fd13e92ed1198a76c7c332dee4ab7af9c06ded51c884

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f3fcf2e6c8a150f48e4b77271b33ebfc7c2d8381e692b5177d4bd7fcefbb691d
MD5 2d97f0e8a55fc4f5275a236f8a6881db
BLAKE2b-256 6a69e4c77826239bf3d612dced6a3a0007ef378bb454d602d5751a16c8b74d2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 d069aba17c966a7809fe373b772685110e6e5e472f97ff9155dcd8e681027a9f
MD5 3db9e84806cfe298fb36dc37e5223d72
BLAKE2b-256 54962290a0b496756ce5a6d5bd6102a24e291713a45cad48e4cc5ed881364266

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ff9996929a16a72a61fb1f03a9e79e830bf7a6a4e9eb0470c6ef03f67d5ea5c0
MD5 cc1d2e7a3802141841fb42c1231d7e7b
BLAKE2b-256 d2b00323368449a05b2693ebbbbd4f61bcaef858a3df0255b6ee3dd460112549

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 c711335619a6936728b7773052fb0ec9d612b19abb2c786972ce3efee836df9d
MD5 71658a08a24fda2ac0df276a8953adfc
BLAKE2b-256 0b5234d3e17753c20ea56b88e48778e8c2b6fa01593e6febc0123bb6edfae7d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 4403600ac0273d4169c4c73773f57c5a3b44cc8aa8384a2f468c98c4294a3f27
MD5 a889d8846280fb61778088a1f5096b6d
BLAKE2b-256 6f95c55889554ef4471b786853707c3fa68f8ef4fafa3257054bd6990042db1f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a7782a25ab78a55b61cb9b06f8aac471e9fafa3e1c20d6cdf970e93c834f6ddf
MD5 bac8bd36de489f9598c94bed1407d948
BLAKE2b-256 b1aed1df545edeafbfd787c73863e47b269ff5646ec68b025db692a1c6aafbd5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f6d5bd05c6e833d54b77c2ee19130cfa5d54ae4eb301ffca56744f712c4a9d03
MD5 254fcf08dc9ce2e33fa82728f09f0942
BLAKE2b-256 5443e105894f0ae2711080c827f71d04d63ec7b4b881e0c4ae8a22a41500c800

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a09d2bef7805f10093aa356d976fdb3607d274252ef9429c6c1a24d239032c29
MD5 5431f2f7e958a056d098b65fd9b75677
BLAKE2b-256 a2f4fb23d1958b52a1546f25da03c459e11ea634d166dc7ef6024c7662c949fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9b970a50230ae437615d754e1bc4aaa740fbe3f1418cc0c8933b260a691bb8f5
MD5 b4d80948f19e144be98426279d22f19b
BLAKE2b-256 7b7f37896fc4180fd0f59146e3bd88e21fb71ce28c705d482540cfc8fc532cc9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 f73edfcc140259195c1ad8b556a986d3044e1225f50ca38aa8da7514fc7ea170
MD5 da6c4e9f34a37ee0610561d1debb6af6
BLAKE2b-256 1ec045856a1becb5280cf6ab9a8353d938aef73f9012521ee80176200b74a5f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ac3fe7dbef11059c24cf7461a88210b23e69ab34389e5c49387d926658bb53e7
MD5 e7bab17860fa9e0914bd5dde0e2b5934
BLAKE2b-256 d7db28405ca283ce6370f546a0469c0b008ea504aa1a0f20d8a0e3307ad1c631

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 cab6062978fd3494216c2e8bf1edd88444fe2ccd58fc6a5a39f899993001d44c
MD5 cf7a700a550f3e599b7c80bbecf452de
BLAKE2b-256 c2e28f4634c702b888a0d2e361bd9ccc8e4a2db47fc5065cc9d4bba748992ae3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 0846be8ba1d8ac536607e0e5a4538bb4556eac322224a0d18edad2498f2ea318
MD5 0e52e3373f7c28575325ce60f26594db
BLAKE2b-256 6938e48d86bf40badc89736445a2a934c467c4c9a1b64b14f64409da10702da4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a9cd021fcece7572d16f0560b375539ff06b1ee468fc991ec6718925cd1f07e6
MD5 520a15508834898ed80aab09b28401fe
BLAKE2b-256 5ddeb98fd45acdd0ab86a3d28634c5b6ed0adbf799aec394761ddb92c687aa00

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 09422fde80f418577cd16c7a2f4fb9c917f5282760694f36bb225c0864f139b5
MD5 1efcbd1979a4b617d808e18049ce4474
BLAKE2b-256 30aaa5371c0f87bbb6d7b3431718936f7794a5cebbf2c3a288ba832967d10cd4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 29a0d2a5d2e77ae72292e56d7b66dbbabaf13ba3249e0d26c7a0e479384839ce
MD5 beaaea51c4eb605cb06a92f2c7de3354
BLAKE2b-256 80158aa43de6f4fbfa32aee341e5f36564a1d555d7aafacf6e356e820f0a2f5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b860e75c7755cfcf65c7f241e13750e78fb9b144d591ce0ec0dab02fae989fb5
MD5 8f58c9ae3f5f86842f80b92c7d1a69b1
BLAKE2b-256 764d9de8ca59d92f2b69de3afbf00029c1cb9e4bdfad6eb2ea29a67e7578b3db

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for granian-2.5.4-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 6635c18a4af7dea3c16f81143831ef540dd671829712fa1d8fcedd2da1cd8ae3
MD5 2e2907a078092af4517ad1be67887c2b
BLAKE2b-256 d5c459b27bfadba623c5ebbd6132e1d6d5fbe4e2a6a14fc6b1342c38188b8f81

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp314-cp314t-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 5f642a4fa1d41943d288db714bd1e0d218537bfa8bc6355d7063e8959b84c32b
MD5 79d7dd6b40b066db41560014cd118ab3
BLAKE2b-256 947c5c24c3d17ae24eee4af34bc46ecf6d9fc5d3a23b7b974c7ef3ff0f51cea9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp314-cp314t-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 97735bdbc2877583ea1c8dbfca31bcaf118a6e818afe6000eb8a9d09fd9d07e0
MD5 c3fa52966096df229de0ce02bb731422
BLAKE2b-256 4a6e928b37a9a8a863339f5e37d4154de6faf1b8c58c8684799e117caf66b3a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp314-cp314t-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 539ee12b02281929358349e01a0c42c0594ebcf4f44033c8a4d7a446f837e034
MD5 e493075cbc7ef8adeb721952f1abc8cd
BLAKE2b-256 e491e76301bf0411ede4739b273c972f959c4675702418b00228ed7c278aac05

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2dc03e2f375354b95d477c9455fb2fb427a922740f45e036cdf60da660adbf13
MD5 9ade46a6e97091ca87779fa3d523dd11
BLAKE2b-256 31e709e44ece7ebcd5a70cd313ca3a0fa5b21632697c20412ddf169c51f16894

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 73c136bac23cd1d2c969a52374972ec7da6e0920768bf0bcce65e00cabb4ebb9
MD5 5daa4311e094539bb9d024b7af1608c3
BLAKE2b-256 18c02f3594892055c465c0035d5fc174da95c01a4902f9c63e7ea05d49fad892

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc27bff6ea5a80fd5bf28297ac53fa31771cbdfa35650a6eb4f2c4efc751097d
MD5 576a0092125dfc4faa3b62f3842f4a45
BLAKE2b-256 71151d27cd429a4fb0cb066848ca7ba432e5887b2506873832136444a6aa24d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3f0940963f6c6e50de19195014902d9a565a612aa0583082c9082bd83f259446
MD5 abebc961327c64a8b345168c89bd37fb
BLAKE2b-256 d8d0cdab820b2f5c692dc4c67879f937fb223eae1599784755362a53872f512c

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for granian-2.5.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 e8082ae43ac2f080071bdef557b205bcc4b2f71d8a148a33e389329935533e17
MD5 e14c02fc91f59d266154b618b923f806
BLAKE2b-256 fbc174b869f9d3760853780b7e6195a35fce10ffd784437a06b1b59c2be10028

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp314-cp314-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 294c574fcd8005587671476b751e5853b262ecb1b1011e634ac160d6a0259abd
MD5 13b5b87f067fadbb9a4539f97c6356d0
BLAKE2b-256 174c78650e1d54a9a8460add62643a57a0042880592e5a6f5574370954d7e91d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp314-cp314-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 14129339f0ed9bbd2d129f82ed16e0c330edca7300482bd53cef466cc7b3ec6d
MD5 d7f4970826d3a598311092d5cede8b6c
BLAKE2b-256 a033e8810b11004e9139b6dd71dfa4a1a56ae60331e8d72dfa8bc7121158abff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp314-cp314-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 c4bb60b122971326d0d1baf10336c67bdecdd7adc708cf0b09bf1cde5563e8f5
MD5 de7200bcf5821dc94982c37c5fb58a40
BLAKE2b-256 9f28ab53dcab1d55636eca417a4263114d24872958609ceb853b84887b12cc38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3cad64e8e41d6f3daf3e7a3eea88023aa7e64ee81450443ac9f4e6cae005079d
MD5 82accbbafc297e4e85694ea9ade651be
BLAKE2b-256 7d41cbda436041e46116647d804d2eada3fab144883b0e6ce75f3d967a116c6c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d3eaaf38851308af616ad5fdc35f333857f128493072ea208c1bb2fb557dcf2e
MD5 6bbe9255088126b6d6e281a5e6b2b033
BLAKE2b-256 ffaead9cc1729d12b9699318c66015999efef14c7fd17836393a09a1bbbf5185

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3accc02c981436e783772b12ea8cead35e8e644437881d7da842ff474f8e30f9
MD5 e286c3491cd0005388d1a297d204deb1
BLAKE2b-256 19785c0b43af33b18bd528b10ff770aaeb158a4fbeb0ac5cc0371921759b6b59

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 a6778b9f7ecef8a423dd203aa5b0644a18d53eb749e830b2fe33abecad5d7e84
MD5 6dc5c70ec9ba2a5a67dbba45d2f59e92
BLAKE2b-256 ff0673580eef85ac4ac4da7205d320e449a46db0e613b6df706a5feb46809e96

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a76d7033a8d68c8353293fae8365e3b649bb155ab39af14387f3e9e870d503fb
MD5 d1aca7e40d39773f5826617903b28269
BLAKE2b-256 73600f7b994feaca68c2585fa96338369fc8f928281cb1f7da2a377ec698f6a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c237db56e5ff3fdad6539a3fbfcb9b57ce71463db55a016ba08296828043112f
MD5 facb8a56d49ee02a0170965418e2ba8f
BLAKE2b-256 aa32d1776652352df81c420e61a1d79711c9992ba6dcd1a419b1c9df83c925ce

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for granian-2.5.4-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 bb6be969da8b9c76274850214ba070dacd330ee61e5d9cc3c5390f865a0cf67c
MD5 6327d02b214f18354986ea6b227d6c52
BLAKE2b-256 99a5079d4f8f2174c8592d99333b1d44eb96fbc2f72a334bd4c67237d5596596

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp313-cp313t-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 27b3e7906916ad6e84a8b16d89517d8652bece62888cb9421597eb14767a9d92
MD5 ab06130a4bd2a4b09c93c02d3199c6cf
BLAKE2b-256 f3fc4d93870feebc547bbc68dcbfa3a6c491107a6ac634636c7e332441ef9077

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp313-cp313t-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 76cd55ab521cc501a977f50ace9d72a6a4f9a6849e6490b14af2e9acc614ce55
MD5 6e31e3bbbab76083a7d95a95a54f29c6
BLAKE2b-256 d976c52fdfcd536584ed01a878e13139e338083fac4fde32d6fbfb0f3b29f380

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp313-cp313t-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 487bdc40b234ef84510eac1d63f0720ca92daca08feb7d2d98a1f0a84cc54b0e
MD5 fb987d9726a63ea085c1f138ebd21e63
BLAKE2b-256 c3cc65073d6f08d9251ceaa5eb9a485e1a8fda9cfb4bac3c03c9f28e01abf416

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 54bd0604db172a964b1bc4b8709329b7f4e9cff6b8f468104ca7603a5e61d529
MD5 2ae8abd3691c876d3157453cee78dab2
BLAKE2b-256 b73722a86b369b140b3684f8aecfd9c80ed2765421c09cb3d3ef06245a6aaaf8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8a067c27e733b0851e6f66175c1aac8badda60b698457181881c08a4e17baecf
MD5 271cf7dcbea229a623b6953a054e7185
BLAKE2b-256 749fa889cc30f2ee67acdcfccd10c3da239c828c584cb9e7f04e54717ff0c42b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c6309d729f1b022b09fd051a277096a732bd8ed39986ac4b9849f6e79b660880
MD5 c081fe97916f3165426f5887f6db33e3
BLAKE2b-256 ad840a302005e3c1c254c592d29aaa11a281ef4a84dfab45ccfe3072223f9c5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d04a1432ed98b7e4b4e5cff188819f34bd680785352237477d7886eb9305f692
MD5 91516e11b952404a89121565d250dc61
BLAKE2b-256 d540a9d9e976bfbd6274d1fe052676fb02c055c1476a9936961218a211785cef

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for granian-2.5.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 7fa841c10420b2c0a2001db6d75bcc8d171ed2e93edd00d8223b4e7cc0d47500
MD5 4e12f9e6a024a10953fa80fcb8acb9e0
BLAKE2b-256 1e33b84b5064d3af0a09005e774cec56397e846d537a13e3a04dd91377ac9015

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp313-cp313-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d6d1b462ccb57af3051def8eae13f1df81dc902e9deff3cc6dfbb692c40a5a1f
MD5 bb1082a7ac4e79f6784e4d3e07b7e5ff
BLAKE2b-256 43a5826dab4703261d0f500b5d1d0cc8a965157856b0266ca3679185d316d5f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp313-cp313-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 9bd438bb41cbac25f5f3155924947f0e2594b69f8a5f78e43c453c35fa28a1f0
MD5 d01b9f6d509d5c29755c04998ee650b0
BLAKE2b-256 771013e04a2ef44f711474ca68a095e65f72fb6ced28f5c0930980a012386f8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp313-cp313-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 328ed82315ccbd5dedc8f5318a1f80d49e07eb34ebc0753bc2930d2f30070a34
MD5 6a66254264875ca0d8a827ffd30797c5
BLAKE2b-256 0d849f1dbcb6a2228fd9bbf548d81f17225ae26dbbcef33f61d7e14971d78d2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 23b2e86ea97320bbe80866a94e6855752f0c73c0ec07772e0241e8409384cde5
MD5 e24103bc2bc9948279a7fb6c6079e21d
BLAKE2b-256 7e5bf361708fd275763f1436bc1584bf3171ea5b6b12255e7cf3d5a2d7280546

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9bb902636271f9e61f6653625670982f7a0e19cbc7ae56fc65cd26bf330c612f
MD5 6c43f6fa0c0b4aca071aae1c126e83bf
BLAKE2b-256 6e85061748715e5c213c8f5e58c9a7f95741fc5787a0c45c7b066b1df0f59453

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8b3b24b7620df45752bbf34f93250f733a6996a7409879efbea6ab38f57eff69
MD5 ba127bba762ac99cc2390aa69dfe15b2
BLAKE2b-256 4473d05f0cd49764feedfc91b418e060c212a35077154209e22654891c08d2dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 b0341a553fe913b4a741c10f532f5315d57deaa34877494d4c4b09c666f5266c
MD5 981be9ab96e565148422f5e1d70f7167
BLAKE2b-256 a6994c630712f95ce6105f070631242fbafe4c045a00cd5e00f437a03085a9cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d1efb111f84236a72d5864d64a0198e04e699014119c33d957fac34a0efb2474
MD5 c1a6b794c026ca10c3bd85eca91a6afc
BLAKE2b-256 04a3a63b04b67fb44578ce5d2d6c2b669932d6adb9a4844d86dc0f0cd0adb409

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 533bf842b56c8531705048211e3152fb1234d7611f83257a71cbf7e734c0f4a1
MD5 ba9863d0974815df548f90951119ece0
BLAKE2b-256 50aaed7cee53c0663fbb4d64b9a143d176f76000100f8a5ccef8a166df2bb9a9

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for granian-2.5.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1fb3c2a76eff474b4a9611441fbf14da760d002a7bc6b37dee6f970dc642c862
MD5 3287a58ddfcc206078e89eabe0ef6f5e
BLAKE2b-256 4b21adffe61c318aeeaef03908b75aaeae8a01928159924c5f8127bdb956defc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 7f58116ab1300ca744a861482ce3194e9be5f1adad9ac4adda89d47b1ba3fa50
MD5 a0dc1984f3eadabba0fd5aaf81f07f07
BLAKE2b-256 684281f848d9cf6cd77f24d0625d5c49caf6471477c97a760827d41cbb90a214

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp312-cp312-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 6a477b204fca30218b3cc16721df38f1e159c5ee27252b305c78982af1995974
MD5 0550920511a81957ccb732fb89aa90fd
BLAKE2b-256 8a3c51670c8d83334ea1ce1b54aae93f6066ff101ca81ccd6ab01832309b2156

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 b78ab23495e384521085c33fecb3987779e1b1e43f34acd5b25e864b699933f9
MD5 1459c4af8f60c8969843b270856e221e
BLAKE2b-256 a2013d2eda00cbaa09f5a734d57fb4f52f68a1a48137a262e46d59ffecb54bd6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e52f65acd4da0a3af7a5d2d6a6445d530e84fe52057ee39f52ce92a6598fe37b
MD5 761718917deb7777ebc54d42fc7a8701
BLAKE2b-256 2840babaaf6b95bf690cf3af1ff0c3a1d9c33b23f2c18dabb373c805653834bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f6c50539f654ce5f8fadd9b360fac0361d812c39c7a5f1e525889c51899a10f0
MD5 90c52c9e77956f97eb316fd7776d33f1
BLAKE2b-256 f3ae188342234ed4f842ad63fd6a0328a05a8e2b991293496527b30654b6710c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 07c47847163a1bcce0b7c323093b20be8a8ec9d4f4eba596b4d27f85ddbe669f
MD5 e10d475316faeee9311a24a6ae7b74ed
BLAKE2b-256 1aada3b8a773ee347f1a9b52d37caeb373eff590363c478cd6d9d20422a842de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 b44dc391bf9bc1303bcb2cb344bbb5c35de92f43a3e8584f2a984dfda2fea8e3
MD5 9f89e66437d2afa32b6c40f63ce09c02
BLAKE2b-256 55eb4df4fd10fb0ca0aa7ccbbe6b805e8019dc83d3a7861a8e0ec73a4f671bcf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a126b75927583292a9d2cfae627cd4b1da3e68d04dd87ba5a53b4860768d9e04
MD5 9a2d581878486efa51083358e4eb53ea
BLAKE2b-256 0abdf9b9f57e14f778665e5b56a5b98d20187136517188a39ac404b13812bb34

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c4387cca4e38ec7579cac71a2da27fd177ced682b1de8bf917b9610f2ac0ba5e
MD5 b7ab36f33fe68b87a27ff9b0c62b9e79
BLAKE2b-256 ea9f2a419461f2696bd95ba6b4d2a1c09b7372b79e66ac3b7dd4a985bf35f7d6

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for granian-2.5.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e28453632093da4e31b1d346396362d1f002ac1bf766486b4f8943362e081021
MD5 ff950bf14fe830bfbf924b7d3fd20270
BLAKE2b-256 c051249673a7cadf0d9b5fa95a8941138a666ef4f75192228e18dfce4b3541a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 5a4e74bf6d91dd7df6ffc7edb74e74147057fc947c04684d2d9af03e5e71ad71
MD5 46262f3e8b623001fb952467c1e63df1
BLAKE2b-256 ab3418b038e4b67a97eb776bf84307a0d5c8bff79290024973def614d8052596

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp311-cp311-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 1e580f5fa30ed04e724c71de099dcacc4722613f8a53e41454bac86242887da7
MD5 a55572f9605339a43fe1048e74207903
BLAKE2b-256 c4af1f87d4bfabf09d16dcf3a355cc356daa33185c561a5f3c5904f6fd0f0e5f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 25a1d03fc93184009d5e76a5bfb5b29222e7debacfc225dd5d3732f6f6f99c10
MD5 4cab078e39f276a6f3db92be15a4b002
BLAKE2b-256 0f7742e06595c441c14f934858351acacc28fb2552798ab7eefed2e0e3920d15

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8b3faa2eec6dbbb072aae575d6a6a5e5577aef13c93d38d454a6a9fffc954ce7
MD5 407c9c70de0126b26fb8a84a6acf4e3b
BLAKE2b-256 4dc0eb3b94d2eb40d5b94bfad94da018f5daf539e09e8fc33742a8330707913a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ce9ec6baebb83ba7d1ed507dc7d301f7f29725f9b7a8c9c974f96479dea3a090
MD5 6acbcfff3d952065d5470fcf7e4d7ffb
BLAKE2b-256 c1f7c98302718f58a3ee47ab1db83e8c0834b91016fc3c83f3a23f7b256a02a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 2466523c14724d2d68497cd081ffd2aa913381be199e7eb71347847a3651224c
MD5 5212497420ab3ab2a3e40addfa54e63e
BLAKE2b-256 39949bd7e8248c438ac7861653ea4fb071a2ed2dcb4b7a1ec5cf034282d4079a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 6aa6b4ad4d479fe3e7d42ca4321ae7febad9cdae5c269032234b8b4ac8dbd017
MD5 f0bb94cba2d90b1aec4a69249db41052
BLAKE2b-256 66677bdd9b1b63c811439ac7b8b4e52112abb5a38b575f033b9c7672d0355a70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d91b4642283ea8169aad64b74b242c364a3ce24d6aeed9b5a4358f99a5ab4d84
MD5 8a02652f3d35dab65c3b1a6e7493b174
BLAKE2b-256 859081706bbe0f23737c3c1cf8a4e76a6e2c9ec9c5a950a023aea2aed6ef74c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a404bff75dc29c01566a4e896237f6cb8eda49a71b90770b8316ebe1b08a3d46
MD5 280839dc11b3c3f5750e64fc687ab752
BLAKE2b-256 a9a389471ae2ff6d3111964ef9e0b8ac00c5a68046aca93965048b94ec0ec952

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for granian-2.5.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 9b1d2e2af1829e7022dd89bcbfda0e580a1bc1440105757f16ef262f8ab3aa5e
MD5 277e72381209c4ca124d61811e48b48a
BLAKE2b-256 65d4b740c8356527fa1a403e1543fa401d461f0f5eabeadbf7058ac164714a02

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 2caeee9d12144c9c285d3074c7979cdf1ad3d84a86204dec9035ca6cec5d713f
MD5 2c5106f82e1c9348e83ee9e0cb99cf7f
BLAKE2b-256 02e905eaa62200693b31a75e3767f5716a55aeb07572f1a41e2d31b6f8bb115d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp310-cp310-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 cc75f15876415054c094e9ef941cf49c315ee5f0f20701fdfb3ffc698054c727
MD5 e7cc9a87d25bdfc0f4ca2a996bcee1b7
BLAKE2b-256 c7746857f59e1ae9a556b7293c60258963063d74ad154c0411f94dc235aa02ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 79db7d0eac7445a383e22b6d3e9323882bc9a9c1d2fd62097c0452822c4de526
MD5 80316e9230761f0adec7df637f21cb55
BLAKE2b-256 4b1e0e43ee8a4a97c4b2a413964448917cabe154aabc99be46ae0f487ce094e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1da588e951b3e0bce94f2743158750c9733efcbe5c27b31f50e9bda6af8aac1f
MD5 04b4255fa10b2ac79b8d2dbc0ed41534
BLAKE2b-256 e2a31ba8d0d534ab993e1f84eab3320b4e3071e9bec166131e663c60160e5192

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8478d777971d6c1601b479c70a5c1aaaba7b656fa5044b1c38b4ba5e172f0fc7
MD5 aafcbc82677bedb05b7f217941787c15
BLAKE2b-256 3eaa542ef36aee53a21ff868a38c4d567eb253b1338501091e36b6ad8090c862

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f52aee85459304f1e74ff4cb5bb60d23db267b671b1199ff589b1a5a65f5638f
MD5 0ad0b851eedff43bac6662d12040c710
BLAKE2b-256 cf9eaba367c3c372d641e78aaaaa4ec8a4452bb8a2259bdb8b7484d537969864

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 3cb602ac3ea567476c339e8683a0fa2ffe7fd8432798bd63c371d5b32502bdb9
MD5 13fdd4c4c516c6d52f9232235ac3eea8
BLAKE2b-256 7cca1cdbd669ee4bf85208b96e0bcaf5b51cba67907b71679c18a1da6bea61e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a009e99d3c4a2a70a15a97391566753045a81641e5a3e651ff346d8bb7fe7450
MD5 883699534a69fd2754adb79459b1e0fc
BLAKE2b-256 a9a56ae10379f21415255dd36b4d26a69a0a8ec80d4ba4fe26ca563e46a1ca62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 907d17f94a039b1047a82386b4979a6a7db7f4c37598225c6184a2b89f0ae12d
MD5 f0499afb734a54fe7024a10b771a7a8b
BLAKE2b-256 e3a0b6782563716dfd178f094fe7fe6d28fc6c13857926bb9efac6ddc73dec54

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for granian-2.5.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 aec61eb6b2031860704c8c1e462148b3c59759a28e19df72702c49bf15caa276
MD5 4808fa7120d98dade5cdbf9d3852685e
BLAKE2b-256 06c702153fba70c8d2fc02c901740a7e2cde9ca4dd7e0af4c4b5b4c404935f10

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 89b884962aa03c98743304dd85f1ccff216cd4d8125889bdc2fe4260025c9db0
MD5 5ff1887049f443b5f330d2f50add84b1
BLAKE2b-256 c38f2ac2a73a032e08adfba6fc1ea5aa16aaa972174b09ddd86178f4974f6dc8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp39-cp39-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 3923fb93dbf51e88492f61244c4ddc1980eaf9cb0c2ee212d83c3e6ffb97c3d9
MD5 1150fa20dd0bf32d8f4727b6c9e7eb3a
BLAKE2b-256 2df8aec0a4469ca6fb26d75f199dca1f4f889f367bc08248cd6a5dca3aaeaabe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 9e3cc6fbfc0a8ed35e2237fe2aee706cc7ca16c59bf332b44508d1bffdc33c69
MD5 0df7de09033c5fbf61eab547ec002b0b
BLAKE2b-256 a465dacb3b3c3385c388d55181f73fec3a9e34cafdd63695e089bb6c36304be6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ab64839e7395b45fc9918eacc4da3768b02256a0eb231d9bc533ab83ab60af40
MD5 284b0eaaa20960105d21482a148ead84
BLAKE2b-256 a4f98f81562597e7b8c7c62b24c4056e15730b683bd462639c3e290ad6ec7ac8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4a2197096e82f31388f329d6f0e4c13746a1e7a07db5331a77becb1ac6fb18fd
MD5 52d2cbae76b7faedf323ea2b2f66db75
BLAKE2b-256 86cb320c0e1f303dfc45bf31dd13807f7a3a3d8cd504725e2da3446286c514fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e39bc221a08b3afdb6d5e53dadff929d76f3b725d9534a00acc7a1260099c727
MD5 341d15d22a968f4ac084bb5350ad3a10
BLAKE2b-256 a3a0a27b1ca9a2624e34798ccb74a499edd6f35251cb8d65a751d48051f84c38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 71378e1c0201a418fce6852c09d80de6ed0e6ff89dd019e4efb7ab42bff3461d
MD5 c65eb1b04ff757473666d66298c432ea
BLAKE2b-256 42de1cff5453540c07cdebeaaec3826f3690cc988ba71f9e3116ad85efcf04d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c7e6f92f87115c86162e294eb1bd809cca7fc68c75a1c1b3a4bd916568c74ee7
MD5 cd6dbcb8e06e4f81fa635183f0d33db6
BLAKE2b-256 6164124315a21c843cc1993bb6a04aecc811b1fab11cc722d1b279c42ff67c7f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.4-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 16bf4d4f78a9703c8ecd1484a5321c9edb001d9d7e59a0e7cf044462afc9cd77
MD5 53929daa7c85516225d6ab12f45c691b
BLAKE2b-256 a13e8f882e295cce18735f0900810efc8b64779db04b65837d4cb8b9fc7bf40e

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