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

Uploaded Source

Built Distributions

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

Uploaded PyPyWindows x86-64

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

Uploaded PyPymusllinux: musl 1.1+ x86-64

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

Uploaded PyPymusllinux: musl 1.1+ ARMv7l

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

Uploaded PyPymusllinux: musl 1.1+ ARM64

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

Uploaded PyPymanylinux: glibc 2.28+ ARM64

granian-2.5.1-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.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded PyPymacOS 11.0+ ARM64

granian-2.5.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl (2.8 MB view details)

Uploaded PyPymacOS 10.12+ x86-64

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

Uploaded PyPyWindows x86-64

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

Uploaded PyPymusllinux: musl 1.1+ x86-64

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

Uploaded PyPymusllinux: musl 1.1+ ARMv7l

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

Uploaded PyPymusllinux: musl 1.1+ ARM64

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

Uploaded PyPymanylinux: glibc 2.28+ ARM64

granian-2.5.1-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.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded PyPymacOS 11.0+ ARM64

granian-2.5.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl (2.8 MB view details)

Uploaded PyPymacOS 10.12+ x86-64

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

Uploaded PyPyWindows x86-64

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

Uploaded PyPymusllinux: musl 1.1+ x86-64

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

Uploaded PyPymusllinux: musl 1.1+ ARMv7l

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

Uploaded PyPymusllinux: musl 1.1+ ARM64

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

Uploaded PyPymanylinux: glibc 2.28+ ARM64

granian-2.5.1-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.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded PyPymacOS 11.0+ ARM64

granian-2.5.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl (2.8 MB view details)

Uploaded PyPymacOS 10.12+ x86-64

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

Uploaded CPython 3.14tWindows x86-64

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

Uploaded CPython 3.14tmusllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.14tmusllinux: musl 1.1+ ARM64

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

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

granian-2.5.1-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.1-cp314-cp314t-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

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

Uploaded CPython 3.14tmacOS 10.12+ x86-64

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

Uploaded CPython 3.14Windows x86-64

granian-2.5.1-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.1-cp314-cp314-musllinux_1_1_armv7l.whl (3.1 MB view details)

Uploaded CPython 3.14musllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.14musllinux: musl 1.1+ ARM64

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

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

granian-2.5.1-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.1-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (2.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

granian-2.5.1-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.1-cp314-cp314-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 10.12+ x86-64

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

Uploaded CPython 3.13tWindows x86-64

granian-2.5.1-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.1-cp313-cp313t-musllinux_1_1_armv7l.whl (3.1 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.13tmusllinux: musl 1.1+ ARM64

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

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

granian-2.5.1-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.1-cp313-cp313t-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

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

Uploaded CPython 3.13tmacOS 10.12+ x86-64

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

Uploaded CPython 3.13Windows x86-64

granian-2.5.1-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.1-cp313-cp313-musllinux_1_1_armv7l.whl (3.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.13musllinux: musl 1.1+ ARM64

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

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

granian-2.5.1-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.1-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.1-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.1-cp313-cp313-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

granian-2.5.1-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.1-cp312-cp312-musllinux_1_1_armv7l.whl (3.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.12musllinux: musl 1.1+ ARM64

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

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

granian-2.5.1-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.1-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.1-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.1-cp312-cp312-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

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

Uploaded CPython 3.11Windows x86-64

granian-2.5.1-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.1-cp311-cp311-musllinux_1_1_armv7l.whl (3.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.11musllinux: musl 1.1+ ARM64

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

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

granian-2.5.1-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.1-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.1-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.1-cp311-cp311-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

granian-2.5.1-cp311-cp311-macosx_10_12_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

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

Uploaded CPython 3.10Windows x86-64

granian-2.5.1-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.1-cp310-cp310-musllinux_1_1_armv7l.whl (3.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.10musllinux: musl 1.1+ ARM64

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

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

granian-2.5.1-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.1-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.1-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.1-cp310-cp310-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

granian-2.5.1-cp310-cp310-macosx_10_12_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

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

Uploaded CPython 3.9Windows x86-64

granian-2.5.1-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.1-cp39-cp39-musllinux_1_1_armv7l.whl (3.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.9musllinux: musl 1.1+ ARM64

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

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

granian-2.5.1-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.1-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.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARMv7l

granian-2.5.1-cp39-cp39-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

granian-2.5.1-cp39-cp39-macosx_10_12_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: granian-2.5.1.tar.gz
  • Upload date:
  • Size: 111.9 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.1.tar.gz
Algorithm Hash digest
SHA256 c268be38053bd29351bf8f86d87a5862708033ee5322ac47465b99ff45670783
MD5 5146b75f7d47a75954a4753c80d26dfe
BLAKE2b-256 eb1811085d3d7c97ff93501ae6acc8217943d9e8f2ac45d9baf51ab146a2355b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 985a3b184a144767e3aaa836d4ff8f9a1ae20cedebc363529dce3e7a0c795f6e
MD5 82896133f4e41339026ba3305bbf7a01
BLAKE2b-256 2ad5c3592c66f2409f8c9f6867314f74d0bd9f9ad8a8c41bde49b97923875484

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 67bcecb791de0d63fed6d0c2c76efcdc12d046e63d9db3edb3ae3bf9881a3105
MD5 3fa2d30942aa6a426d40a4a3c839b5d8
BLAKE2b-256 5b1ee6d7c65d4745ce429daf396685345bde8fb82d52b148fb8c8434f5f98298

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 3c822ec0c88cdb5be7323f72e0a78ff29e36a8dec5c2c60e83797173562cf395
MD5 d6301aef76aeaf07ff23339e6215d8b0
BLAKE2b-256 d997b25bb52f3b43bd1baa3190b8bb7c837316e5bbca4c9a86c46c02d59f896e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 2bffcf01b067b109bf6e15410d0a7ea6bad45d69cb51b0661435815b57e71e23
MD5 01c142d9a8d67c90352fb157386acc57
BLAKE2b-256 286ec7952d669913fd876bc1428e8acc662ed2fdda4e23a4e36ca449ec843401

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 709014d3d103a843fe7db83ed77ad4781cba414c191428be7f94c5ada7151990
MD5 87964082becd884a7ae511d4027f1e19
BLAKE2b-256 840aa59e2ae4eacb60456d186627714268741b1c25eacaa225d6a74853811337

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8a469d1fd32923414926bfd4cc59c3e53bcfddbcea38409b09cbb0caf8823c75
MD5 c6204e0f11fbbf2549f38e9f7ec95231
BLAKE2b-256 27007b8ff7963510fbcb0fd6971eb098ad3099d529550347eb4bf2a24b3c6ea8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7c6169cd8d19f6d8ef4b7b67afe618b8a5ceafd9ac7430da7dadb282c1a35f67
MD5 f77220a5d7f1490d21ff2e7e2a239f03
BLAKE2b-256 1b19d606fa7383d5d20c7d8fe861ae07c61947c1bc41ef38cb0b2ef50b56dbd1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 08d92bdc91d91f0b5377a932faea36a640659994aa144d264995418992a4e01e
MD5 416126a791eceb7d66e8858a2cf0564a
BLAKE2b-256 53476bb6880cd97cc992185e404c216c85748d287bfe16dbc0c2e418935b6a3c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 c5cd1a60b5eb7a0645430473a0f2d75536038767658d55511c8051a92cf11d59
MD5 a0290fb4b09a22866601b55e0284a352
BLAKE2b-256 e48851dc12834fdce79e6c7019137353b6660b54836a2205c4ebd22ffae27f88

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c474ea7d5a12d7cfd4756f3bac4e51a2e17817015b028e97160beb988adae3e9
MD5 2efe2f7f4a6daf0e19afa5fe31eaa4fe
BLAKE2b-256 8168afce067d0ba6a14b4d247105bdd5293ef5661577b2023a0d81df27989b81

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 23bd2808c9c7d242c7dd66a5bda6d51c752ba76f525c7b85920376f792884b24
MD5 99f6976207acafd19a1d69699a62710f
BLAKE2b-256 9e7ba5b70c4e405175c314b7b3dfd4531a442e650c5264aa39a45517393146fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 1db2156e86950440e3b51682ac447e07ff9fb81fcb48a77cd9b83f7038dfe7b8
MD5 eb13cb3062a54777fb2c08960f584181
BLAKE2b-256 88f2e2d5ffaa92779778aaf019e4c3b2c8490f71d2e8c28d83d861d34cb1032d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b1a7a2d618eea134c704039d1a05a192709238f44036b27c4a25ae27467aec1e
MD5 1d4124382ae02c20d1ecad3256f6233f
BLAKE2b-256 ae02652e0846e5548c487fd70b92561dc61527355c5b25ab3fb7f8e687f72ed9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7c0101df410e74347930ca02d5c91db2f7436f607bf96631c920a76cd8b78c08
MD5 53102e7ff2cbdc4dd81c1d4171d4092e
BLAKE2b-256 0382ca20dac81d1ee596f8c9f61a6bf27abd6df670a31197bb58c78be46bf515

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 977f3f59a701272609883e44432470aa80442a763689223357fb62047072ecd7
MD5 1b41f3489e4fedb664ba1d0ce00c52ee
BLAKE2b-256 ee8c1560019c18f5449175324d0e497266fffcfcdd50bdd50409d111a04dbc8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e474146f634d77196b7d06f7f58f635cec88e0bd1a04c14084339824d3e162bb
MD5 bc3833ce8aacb2fe15ef8c466ce3a00c
BLAKE2b-256 9fea8e93e2fc0cb745fd4546195713d892a6a4f45e198bebe88c1d25c7db3ce6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 45ac1f6e3ec0c6a2ac29d5fab7067229c00484fb2d73ce2f81b17c8b4b81c445
MD5 8a707b3920543fabd5eedde6827be998
BLAKE2b-256 d05bf1f191a9a06266f6d0bef8be1724b4c83a86be15b7f0cc536e26500a6e35

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 08fc57da791363763df354a8158e9088ce7fe25bb462796d39f694374aa983f6
MD5 cbd18e061a04776102491adc2822c425
BLAKE2b-256 45163f18bd02b44da38c5178d2cb0ef547ccade028e1609e0ad35f1326a26d75

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 9be9e264e54660584df7f31900c6c531c8db7ca8e6299f6596047a4d15bad3d9
MD5 184c3a1674144ae9466afb962b86144a
BLAKE2b-256 45f1bca5e7e793e454f30a47b1a31fcb5da44e2266c468dbc41dc2b2c10c0f59

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 12b5425efada05c73df84e95d3ecf9baf032751747050bebdeb3437f38b5c473
MD5 00843e32b6dba2cd90d0b96afa22bb48
BLAKE2b-256 b953ba48b793e77ffe517c724809b37fbd4b5e53375e746d2773c2006f0bedf7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e493f2f7e578a7b5afe3b6c9f91d554a44fb977685be65dc8a7e0d896febd02f
MD5 09277d05037eb87c089c971986884543
BLAKE2b-256 7ddc9d43259838941e2aed3a100b6be27d0c0653fbbb08e10980a4a82a6b763b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 08ea0f1f38e215ccbaf8726166afc2ea2df25e0845d84cca6d4c239d94852731
MD5 d6173b62745f604762f9153be01e91c8
BLAKE2b-256 03889c2be356289efe6d39f92138490d0604fa0d4e938c15cf74c133974ee411

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ee56766d9e1a0bfa21aa380901e0880b6c1bd085c6b7284f711a74d40980b869
MD5 1442a94e459595c63d3501720f0ed401
BLAKE2b-256 f7c2a5eff0ddcfb2e5672abdf6adbce5386e40ea8474d27ad98eceb086b3f83a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8727bc1b2c4375d26d53c217d5aca676495777e03658d528b28ef8c331cbdca1
MD5 e998d61614119cfebf0a2d8dc3d268de
BLAKE2b-256 ac1e9edcd53942ab43bbb3d2c49455b77bd16b20a2f549d9c2da03a3b66abe7e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.5.1-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.12.9

File hashes

Hashes for granian-2.5.1-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 0b546e610919d18439b12dbd47cd342d2f80703157c96d642f18805694e4d110
MD5 6d12600680e1275e56162cd37f49467b
BLAKE2b-256 fded0296c6591fcadfe065611b9c07c71761a9c2f44ffbe34ef9e986f6d6e166

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp314-cp314t-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 f634d0ebb74778ce10d5d538e031bd0eb5fc04cdd56cbc6b39959ce5b7d1d71e
MD5 ce35b5aef7c74782353a6021402b422e
BLAKE2b-256 2cd16874f6d4a9c33e2c1563c5e2f9871b3fcbc6acc07b7978311a57d5567aa8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp314-cp314t-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 aef29beeb1e3a96aa513925fac9cbd7c71150264d9d52e904885b6b9f8419f4a
MD5 b8c9d3ede34fff954883a01f6df4c91c
BLAKE2b-256 f5def5b522781d48fa2c718d7bffe3789e6e9ed959028385fdf11c3a9f2f672c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp314-cp314t-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 685cf765ed9f6601fe2ad351b40b1da2ac528197f75b59c800f0c3974f10cae6
MD5 2ee73497240042bc2c23dabe4e3b901c
BLAKE2b-256 76b9dbe0c1fcae3b86758ad7146e6e00c75578d93ea98ffc523e7fbfac4740d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1b13e4abfa483ee277cf3eb736551315055f5b49f453bd5f27abbc2be0c1f3b7
MD5 8e65bc90811610112b88146a49b85268
BLAKE2b-256 f489a9adb5dff62f9b2c611c0e97fbb429dc80a73da83ae8ba41dd0d9cc386ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d2c9d387b7d9a3370a8431c810c1e1804ef7ee8ab2160732eda1fd70f214bf35
MD5 744390e85ed6911cff8b0af5a213186d
BLAKE2b-256 a6c95a6ec933c7d950bfa356f7726f0ba00a01f8e3313ee00603687e3bffd8cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 460a30eb0dd6f11a1bd61e827082bbdd372b8086bcbc509a9a8e071daaf2e618
MD5 70c37d091e0b14214ab5fb6732dbfe02
BLAKE2b-256 f8d8a402e949c68627175beec49410f08ca810a45be3f332a4b3fe172aa982d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1a525a64a6bcb77f361834a4f8aecdf981a8dccf1b2fca5ae8cdcbc20d7fc3a1
MD5 ec6fd5b6b4927f02a263272532974c3e
BLAKE2b-256 c64086be00d5acccae571e05789449c6a0bcd31bc2f09d304ef0574a8890a96b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.5.1-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.12.9

File hashes

Hashes for granian-2.5.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 734be6a75970f9ccb209af3184b70ae65a56a0e5a4749aa38a669c721d460948
MD5 a7ee999c952154b0c5ef0f7921508c93
BLAKE2b-256 9a4e5be3fad2be939ff0006e395d1b6f8c8e1dca66787cfe43ee93e53844047b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp314-cp314-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 23f07be31a0a20a699c9578e237f16dfa0523cae0c8347c85f888b52dc8b5705
MD5 a45a55cdb9bc4831f221993b026ada4a
BLAKE2b-256 0638af7cd91fe4960cea0f3c57e34829bc403e8fd3def6d690983d15aaa6dfe3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp314-cp314-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 342f27f799090fae2b0c90482a589d125d7c7024e07cac649c0d07a8ee8d7c88
MD5 e592e912df4a905438a78bfae98eab0d
BLAKE2b-256 3baa7dc32f2a742ca8b5a126662059b95d1b21adaab543b15537be3e0178be84

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp314-cp314-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 fbf8f6bb75df05970829d671a4fd75dcc207e55a7914f7f2f88b362a5559e250
MD5 152649df5142bb2c7b22a51e03406da4
BLAKE2b-256 c29423fba4bbd88f80be3abd7f2dc10506e151392916565babb179b4c0ef6bc8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 00006ea9b1dfe6a67a8c47b6f250d5413723186079c859d34ce1eddd449321e5
MD5 4a8bcee376b1d4bb125017b821466205
BLAKE2b-256 48681e76d77d27def47151afdf358cbfb361a7f18f99c5e54dbaf9d0490301d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e051e39c33fa284714529001c80b05a905ff886350fd3b95102d9590668bee75
MD5 d837e9fda417d7f159173a1fe79a8a78
BLAKE2b-256 0c1f2b875fee30050ef7f2d41956817c0c6ce4ac44899ff268ec0c8863fe5d80

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 cf077c825793934cb865e79018fa3337c61a1703c0328162365d8bb1cfe8546e
MD5 84aaca3da493224e13b6965cb8a9f520
BLAKE2b-256 4068040b1ae75b8fc1d9295cababaa34858f23e75098766658de16f60be1fd8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 23a36f4e25e5fe7b8f88bde9157e92c9c7aaed30e8268043f624f8ee770e6eb7
MD5 40583d2b0b773b6e248eaa99ba3ed6a6
BLAKE2b-256 a62759a15ba28a9a4843267a0a73fbee6283fe32b88ae4adae1bf6e98b15e4a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 46bb2cca97d6c6491079309993a8f8daf3c4c17f88009dda2b201b3689859148
MD5 896aa1a59ae6abbf3a1b047ba06f4ac1
BLAKE2b-256 86e2eeb561f9031c66614e51ef2752ef0ce1eeeb866d932e906abb985c1266ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 63ef825ff7d7cb27a4b6c0a46b47b13dd47db2dab0d6c29b8e1b19e32c5e95c8
MD5 ec4bbaea46784a5757aacd71e040b001
BLAKE2b-256 f1686da084fca257e5f90f98301a92680c98a428d05858f0a96d3389850b8af1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.5.1-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.12.9

File hashes

Hashes for granian-2.5.1-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 ea6303210fde16c1ad2b2575d396a218ca7195a5fb64640ccbcd6f9fb435c3a1
MD5 3765e1080af7833a78f7a9c36df15323
BLAKE2b-256 3bd1af6bee60a27ac77c5c79f51d60d15c94e98af7408d661ef3343cd6ff14f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp313-cp313t-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 3cab879ebff5efd65782200783c73e8ee963eaee59a4a0f33351c8cdb35656a9
MD5 ccecf68d96a59f7bfc14ae7046402132
BLAKE2b-256 1120689ca4eea01f907fdc740b0a344e650fd33cf36ee62326deedcd13d58f8a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp313-cp313t-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 f69b103556075f0156f796ee80bfcc7ad7743821b54dc33bc2e4ca20ed2b65ce
MD5 c997a3f2636cb28748de9544a9454afc
BLAKE2b-256 0b875db2bb3b2607bdbf5880e42e16e7c66713915f88500493bfb5c53f665cc8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp313-cp313t-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 ce8f94dfd3872fd6db5f18040b66e64c82506d19cb908a98f152ec6a58360840
MD5 dd10a18a299fed60039f9fccf196e5f3
BLAKE2b-256 7aa42c87003d9fa902488b7da880da5eb7f6a270519e82d967f422ac89de3fcb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 19fd929320f1fa9ddda569166a97427dc7f0cd92819bba6ca78e10435f4d7c02
MD5 919acabbbc3ad6980c151f4d25c4404a
BLAKE2b-256 52f95ade2b1f7d0f4a8b45a64aa533234df07d721e0a9d8495070324850be0c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8bb9aeadd6c843dc08c59f41f8e5c3de5f463eef069544ae2e18bea08d2158cb
MD5 6164cb7b22bedb23699a3dcc2883e982
BLAKE2b-256 0883b6fae91a9306aef0670ebf8b05a5a61624b8bcd9899a351fb46c03554b6d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 576f539cb5acb35b24ef1106e9be34b53f1b9c8bd87e60d90e371ddb3ed1f5af
MD5 1dd108372f65475a32ee6901bc9ac223
BLAKE2b-256 bccf8f58e3e47bc9cc78e5beb181916434b4601426c66c062ab8a8217626aad9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 913343c63ca84c76f864b73170fe9b13e197e081b70d0f8264d0e7ba305f24bd
MD5 925a5a6a8ed44941f67df7c07b4684ed
BLAKE2b-256 58d19af9f258c60fffc45901746879d008ed1303edea45cc150e6c9a28709c76

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.5.1-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.12.9

File hashes

Hashes for granian-2.5.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f56f32e7668b5d8b2f76c56a001b0053c775362d3117288cdbb1fb54afb4403c
MD5 0d54aa5ca99529a95772989abc6e3a8b
BLAKE2b-256 7e60382a0a22885d6be74678f88a570b258c379111fcbccd79de934cfd8496c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp313-cp313-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 8dbbcba5b3a0b76c4408106260b3f9a13d5946b611303c7f0916c60a5efb6ff5
MD5 84665e4249b551508ad1efc8fe4da230
BLAKE2b-256 4610ffe61ed0ca7ce2cb5bf7e37f31ebe27d1bd2693b4f05389db8f5b15f2f03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp313-cp313-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 4b1adddd027ec83a8000d7ea3dd3f7c7094e811f5a76a057d72e6f97d5f520ba
MD5 878896887fffc1b53fa06acbc4fb3884
BLAKE2b-256 dc199306cd660df0492a59a786b19f0689e4b5052d842541326ff3deb1444a9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp313-cp313-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 32974ba79997d50dca0ecaee8068b71630a0afbcb1b2f2aaa1a45d01a4fe81d3
MD5 c11d7b912fefe4a8740abafc52b578cc
BLAKE2b-256 cfdd2ff23d8c338eaa47f081103c2bc33b1be403a9c5bc0fe18c5815cc86dd9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a78afa9b7e328557ca3ec6cc7970c94cc7c7a2a1cb5c48801a884df14169d657
MD5 1d3395ec9f55349dc99fb0e76228991a
BLAKE2b-256 ddeaa280c781a3749988a46c0507c9964aad9f774e9564870401fc96167a55c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 914e571434bbfa0226e16a14409a088031cac7015c191614e936c64d60941744
MD5 f299955533703840dc719ac82970ace2
BLAKE2b-256 da7519e8ce4c39ba3d84603e1d31a06b2f9af28e747ad340aa344468b4f87faa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 24d7ad8616f5871a2bae40cfbc9476c65a77640c0eda0b4cb2fda882d773d451
MD5 7ee6ed9fe6528880eec295c545529126
BLAKE2b-256 a2d30035137dc8f2637018fbb3e5cb67c83bc4ff44f18b9ccb7bd6cec288471d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 04e728c12c0b3181bec64b09948e29045cf305128571ec2119c68b9904222b21
MD5 1cca68c13acf9a4d1ef62d4b67c058e1
BLAKE2b-256 698a29f07695cdb6f08e80bf7748f9bfb68d1e0f70c57e70049780d657caa1f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2d3c2275b1346e6445cd92fef3a67f5de8871150f3c71d20209c0f0974ce690d
MD5 2f8df784ef659868732959dedc9502ce
BLAKE2b-256 09e52d09f60e2140b738518356690877e72d8be64726c652ec849cdfcd1f794a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 673fd75d5c523238842abd2dfbbf13733f450e4734a16b01aedf2bdf8cf69881
MD5 9c9e11077877eb810265d082f03821e9
BLAKE2b-256 7cdd9b22b8e52d17c5472c061c81a14bb3b4cbb80ce37df33465775ff28781d5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.5.1-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.12.9

File hashes

Hashes for granian-2.5.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 999d6dbe6ddf7e96484848da6b1ecd41e77f29e5f21a7155186c11d1f258f1f2
MD5 bbffbb175af44905ea4d8cd7b4f5139b
BLAKE2b-256 9fc54010b30f02f0b3627aedc0e246bd7a6563f2313529e3e79fa1d592216161

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 eec44e5687d90b66b27477bc9b51e272cf884ff0260d31222a6a0651600c5cf5
MD5 682113696c05379b68c3affcc9e55c7f
BLAKE2b-256 2e51f94c8a26871f5e5f74d03f6bb4c1c588f0f11385107435eceb7d5b3a9834

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp312-cp312-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 20dcdd87134ea43a5deea9926ccf94b841a5d212801d4901e5316c3f0fee7a65
MD5 a3b7127d880c1dc6cebbfc35ee8d3568
BLAKE2b-256 02d1da10aa21f539cafa7dfd2f829c2264549dc6778c471c4855cf91c5b69b01

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 d45175bdf63ad9072a54c925f27114554ea3457d4a84d58cda84cb815d57178d
MD5 106acc59440cfa7829910408115508f7
BLAKE2b-256 d1fe2df61f54d24d53e2f326d6fad3ee409fcfd11424cf41d96c217a57c8219b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d086dc3509888b2855cfd7107cc30279ca004a8b40ab6e5bf12a6925649bf632
MD5 42a496e22059f81e2a22b3b19d85bb4e
BLAKE2b-256 086a20121270db16ea296372682e899a27a490445e1155eb49b7b3dee35a41b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 78172a29057f6d9794fd89c964eeb849dab7bc6b5f558a67daa0f10ed7fa742d
MD5 89bce55218b9c7742e3beb78af45e452
BLAKE2b-256 1f730bdf768f57720182301e818e01a368048de9777ce775c16db91ebd1bd593

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a45be4bc3f387fcf90ab332e455ef59c7f35ae96bc64ed9e6cdc751c0c7530b7
MD5 3f5bb5aefd6db7c69bdc4b3e4fd43002
BLAKE2b-256 3ccdbddcc1d15dd72530ac9fac930ebc0d94017020d35ef4497c871ff2adb7fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 e4ebfeb337f2f27cb7a5de6c5ae6ff309bb699cf4ac1f1714685650fb2daffeb
MD5 76ed4d58a41be77f4b502834c1f800ed
BLAKE2b-256 d5ef62c7bc3e79d5bde01d5f452acf2974848514f92ad71c28dbd3688536b6f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4462fa0a2ce1b419fdd1dc1039c29101dd84537bbbf1358e99ee15b35683c88e
MD5 c1fb170e0ca4c0c3af338a487e96872d
BLAKE2b-256 536cd8564ab4eb4b84408739c930888a6f7b6db80fed8a5a1fde636d6887bdfc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9c609c0f41f5f3eaccf2c2b6e190b40f75686cb9ebda8db09133b10457ae218a
MD5 5cd0ff95a927a7c8a7eb38e6c750f874
BLAKE2b-256 d709faab23dc6f49fa34dd63870080e74016fbfc2e0dd3f34340f219da0dcd5f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.5.1-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.12.9

File hashes

Hashes for granian-2.5.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bfa7d98c32757a1e079917607f8b65de4b6c886411efedbb03040dc7860121b1
MD5 45858614d362d1152c7f279d544914e3
BLAKE2b-256 0401ad821503d38a12f1028462ba702956a59f3172b6527960112787e9d85b7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 73a5657783cc4eaa1ea68599f4b471c00e573d31c8c66c9b8cba78baaa258e87
MD5 5b0aad27cbf6a97ffcbc942dd4253952
BLAKE2b-256 f0dc0cea90f9654231dcaf428137d93d62827cc22de45adc952d8bfd006af08b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp311-cp311-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 f40ea10e7348011ca85edeeb04a2afb2eae6baf775a493222d607fa7a3b175cd
MD5 e2c6c466a1973d59c243a60801939ef7
BLAKE2b-256 c93f4dda1c00f3420278268c3e65caa4c6de28e67443f71e5177c8a77fb7b4c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 ec827847fd41241f294e47eeb58b9db22eca0375f1f3bcefed55718188c31748
MD5 5b132203e018d4546db776a7768c18cd
BLAKE2b-256 229f65e1e328824fbbd2836969b8f8aa938df745df0219cb45201d0ab5a816a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 56651c3689daf8f133a786ce43c8f24926a75bdf61ed1f205c4648940dbb6e22
MD5 ab0fae0720ef092b86b67ec9540cc2d2
BLAKE2b-256 690a027bc8299d0d8e46b0a2529eb23937b934bd9e5f143311d4e3eb63bf4b96

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4b4319ce47b218bbf10e39affdf935f3caaf996f1c82fd9539bbe1086e9b636a
MD5 a894790d513ca937996473523cf339cd
BLAKE2b-256 b1eebd4d7746523105dd6750607b7c21577f2562d870ab24bb1f97a828d98f29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 873eb7e402ca59484ee8e41d495c6e8c7a659dd4bea4a72f711f6f5d591c6400
MD5 ca3fb8061bba98cdd6487da5f1f7eb57
BLAKE2b-256 9e9e5000edbd59a0f802930ed217a42f14a66835dda075c55d3ba433088fb2ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 a087b155f595c127f3dc331bc067ece1d55da5a5984649bf708cdee4b65d71cb
MD5 1fce13f1f8d6dc23e10a99ba4ba2803b
BLAKE2b-256 d7b70bea2dae12f78b0fd4dd9f2219817ba2417cd4a3a9d9000c088554986a56

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6fa641231b0e9ee89c72dcd3610fba9ffa0aa89ddab62a3da460d5bce2f13c1d
MD5 bb0420c3bd3f13c14cc2b48ee07db080
BLAKE2b-256 e5ea227d1e42ad86505bf49301b0047697f47e9b4ed61d8ce921d6f8d888a3e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2fcb9fd1c859d7576ff5262f01ed53981c70c831b3f64490333a4012c51aa338
MD5 26c219dbcfe0eebe03389b55ca0a5c64
BLAKE2b-256 0f20d9dbfca0979dfdb6a964520c2a4c92591ce33abe00747bcaf94c337bb438

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.5.1-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.12.9

File hashes

Hashes for granian-2.5.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 660f90a38b07f923e6883640a3f56307aefddf990b6adc014d78411beb5080e7
MD5 a52ebb397909be12542408fbc9dd46ae
BLAKE2b-256 003995d6769955160b1589cbae556a13fb080dc5faeec475bbc1bb0e9bd76c39

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 375ba658d2a592b1afe5315c534d7a5f7c65504cc6bf5ab32b9d0bc2a5ecb93b
MD5 2beae5b8b1560ca65218979efd1278da
BLAKE2b-256 222c89ae9a00a7c6d80070661801bfa25b7a1fa111643e96850756d577eee23c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp310-cp310-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 5f6cddd88f0e7a7f983a0b07563732fc3ee9da20dc3dc6c2303b67a03ba29206
MD5 9b257a444ad1724a73a3312d96bae0a3
BLAKE2b-256 51ab2e06d5e696351cbbf1967c500fd5b2edc3801015f22bb3206b36b0059f75

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 108d9a077d4ba138c24bfc9562cc0e94cafcc2efd23bc254c7a609d53e7ec8a8
MD5 e2a0b5aae215c3d8da58ed0e192829e9
BLAKE2b-256 456658dd2b2185262c0eba962fea3c11579b991a93b710d48dcb598957f1377c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cb8049f99089f91144309985290a1cc2d3df227eab847bd796e13a914c7133cf
MD5 721e464d1569124c5b9ca7f09f7e14aa
BLAKE2b-256 c168cfaabe9c3e1f2784488d35aa33000d2873a3f74193b0428c8fa47071056e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7dc8c59a2268339fe7b957bc6d50096c4a0e2106053e4391c76c04a61eb35364
MD5 eb4eb568f4751e2b8d5f393ece828407
BLAKE2b-256 395b48cc65208698bd88e9e59153ad9b9e5558e67feb248cfd6ef52faf6f659f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3abac5890e3a8e4fd69382fe32d8d6aa819927aa0e0c327362e6b9e43e458b33
MD5 22b392f69d358e134b2863217b78df1e
BLAKE2b-256 720cfe7a9301c7743ff467b8cababc62c8b66ea9759da8a4cf4648c9507a8ad7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 555d900cf1eab9b35bd3107e62a7eb8bb0ab66790fbcee764c157da1d3f98696
MD5 81aa6d5bbc8fd1fa7b7eae6d52cc5d7c
BLAKE2b-256 d264ca7853a1c0bab6bbe3e2b51b286e82d98cdecdbf80ec78a9ec448f026508

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 11cec357a02279ed283e2c4bc6083370f5de4fb9ea5b6a161536f95a4fbad5cd
MD5 d102e5f8b72c10a162586c6cee300cdc
BLAKE2b-256 657d99a34d3cb401d88b504a7e492cf44efce1cb6fb99250c0d8cf0d99840893

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 35cf2dc5d5ed98c3498331dd45021a9933cb24977baebc78a164d59e5f3d5625
MD5 30648e6b10e221d590d24fc439fcaa2a
BLAKE2b-256 5f0fb90aaa1e1b3cb19c3da1f1f0757a97031fdba247d6be0e0574a0efde8615

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.5.1-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.12.9

File hashes

Hashes for granian-2.5.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 7e8253444dfb931c5ead3599c894c66d158d7758b4f289680a6b85cb400dc372
MD5 c350d703cff25f480792bc2925cadae0
BLAKE2b-256 0186b114b3e5bedc6cd2dcfadd5a0c03ed465ec7695e5906190d2381cea31a6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 9a9e3824a52b2efc43abab849024577d45f28989f252cc659e2c8d1f3c92acd5
MD5 eb2f5dcb674f5caec07f2cb5273a37e6
BLAKE2b-256 6de85a58a7402d9dec86d568f1e07e81e05c8e9a52bfcb973a0f94d5c1bb5aea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp39-cp39-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 8a0318e8523b62abfcf73f89b2eb01e6d7c1f4a5d7aeece364e3d302896dfcdf
MD5 2f4ca144c8c35b1c16b12598e13e9c67
BLAKE2b-256 6789286623d42928e6912dfe567ba3b924b4ad691bfd871c90221ecd00f0c747

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 9f27a68513e8334ed84de367cc47aea32ffd54ba48a3c3851586065911b350f8
MD5 12f0cf1d00367a66ca26c45afa789d61
BLAKE2b-256 19a2e2985980009901daf2f30f8617092ee8ab233a03810f0d606f1f80773495

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 76ae2341286ab37c9310f35e69cc9ab53305496b2a6f198de514dca115194944
MD5 a6da99b191b786ad299fa4e1f23c15dd
BLAKE2b-256 476a595b3b40d402d0a1f55f3c2f9a82662e92d79afadbaf7310e36f19b02478

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0dd34f02cb6b0426c1666b1bf993e97fbba3b67f3e20113863b8ac50edca9a8b
MD5 5433d022c78b6ca270938979e97f66a7
BLAKE2b-256 82ae8d1eb0114fc8752a94912246827a6c807845656113d18c503834329d20d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 18b15fc7d9ba7c411ed0b8ac88e3df0670cc2c04242019607cdf888bc5ec01e1
MD5 a3beea16a07c1877556c3cc025c7e1c7
BLAKE2b-256 cbdae13dd58f5a83f010c5d56a83317cb107459e85317da166c76a6667d94708

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 69f16d14f918b875fcc70dc337e7258a7f34f3be3347c74ca830e68bd623d098
MD5 4402d25d2c920996785562f52da750c7
BLAKE2b-256 4bbf48285bba227c166d843c900a58c9b332ac5994009f23462332fb350f2e72

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6c1e41f7c469ee8b3904304029ddb162b137543dc54c6bbecab4d3138dcc848f
MD5 ce281901896472b4b94ca18d555b362a
BLAKE2b-256 e1dc2eb85991aceefb952e02012b41c9d16db971d044332782d0a60f058f9d16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.5.1-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b9d625a7eec29ac8c5eaaa9ad08bdf51e47d98310f6e711bd5ab9e3b4d65f95a
MD5 8c37a373d0a9eee4dda8b6310801cc45
BLAKE2b-256 4290063b47fcc1d25002e02683d080757da97e5a424a6e74c3c86f14075e86be

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