Skip to main content

A Rust HTTP server for Python applications

Project description

granian

The Rust HTTP server for Python


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

Rationale

The main reasons behind Granian design are:

  • Have a single, correct HTTP implementation, supporting versions 1, 2 (and eventually 3)
  • Provide a single package for several platforms
  • Avoid the usual Gunicorn + uvicorn + http-tools dependency composition on unix systems
  • Provide stable performance when compared to existing alternatives

Adopting Granian would thus be a good choice when:

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

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

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

Features

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

Quickstart

You can install Granian using pip:

$ pip install granian

ASGI

Create an application in your main.py:

async def app(scope, receive, send):
    assert scope['type'] == 'http'

    await send({
        'type': 'http.response.start',
        'status': 200,
        'headers': [
            [b'content-type', b'text/plain'],
        ],
    })
    await send({
        'type': 'http.response.body',
        'body': b'Hello, world!',
    })

and serve it using Granian CLI:

$ granian --interface asgi main:app

RSGI

Create an application your main.py:

async def app(scope, proto):
    assert scope.proto == 'http'

    proto.response_str(
        status=200,
        headers=[
            ('content-type', 'text/plain')
        ],
        body="Hello, world!"
    )

and serve it using Granian CLI:

$ granian --interface rsgi main:app

WSGI

Create an application your main.py:

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

and serve it using Granian CLI:

$ granian --interface wsgi main:app

Extra dependecies

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]
  --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 INTEGER RANGE
                                  The maximum amount of time in seconds 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 INTEGER RANGE
                                  Sets a timeout (in seconds) 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]
  --workers-lifetime INTEGER RANGE
                                  The maximum amount of time in seconds a
                                  worker will be kept alive before respawn
                                  [env var: GRANIAN_WORKERS_LIFETIME; x>=60]
  --workers-kill-timeout INTEGER RANGE
                                  The amount of time in seconds to wait for
                                  killing workers that refused to gracefully
                                  stop  [env var:
                                  GRANIAN_WORKERS_KILL_TIMEOUT; default:
                                  (disabled); 1<=x<=1800]
  --factory / --no-factory        Treat target as a factory function, that
                                  should be invoked to build the actual target
                                  [env var: GRANIAN_FACTORY; default:
                                  (disabled)]
  --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 INTEGER RANGE
                                  Cache headers expiration (in seconds) for
                                  static file serving  [env var:
                                  GRANIAN_STATIC_PATH_EXPIRES; default: 86400;
                                  x>=60]
  --reload / --no-reload          Enable auto reload on application's files
                                  changes (requires granian[reload] extra)
                                  [env var: GRANIAN_RELOAD; default:
                                  (disabled)]
  --reload-paths PATH             Paths to watch for changes  [env var:
                                  GRANIAN_RELOAD_PATHS; default: (Working
                                  directory)]
  --reload-ignore-dirs TEXT       Names of directories to ignore changes for.
                                  Extends the default list of directories to
                                  ignore in watchfiles' default filter  [env
                                  var: GRANIAN_RELOAD_IGNORE_DIRS]
  --reload-ignore-patterns TEXT   File/directory name patterns (regex) to
                                  ignore changes for. Extends the default list
                                  of patterns to ignore in watchfiles' default
                                  filter  [env var:
                                  GRANIAN_RELOAD_IGNORE_PATTERNS]
  --reload-ignore-paths PATH      Absolute paths to ignore changes for  [env
                                  var: GRANIAN_RELOAD_IGNORE_PATHS]
  --reload-tick INTEGER RANGE     The tick frequency (in milliseconds) the
                                  reloader watch for changes  [env var:
                                  GRANIAN_RELOAD_TICK; default: 50;
                                  50<=x<=5000]
  --reload-ignore-worker-failure / --no-reload-ignore-worker-failure
                                  Ignore worker failures when auto reload is
                                  enabled  [env var:
                                  GRANIAN_RELOAD_IGNORE_WORKER_FAILURE;
                                  default: (disabled)]
  --process-name TEXT             Set a custom name for processes (requires
                                  granian[pname] extra)  [env var:
                                  GRANIAN_PROCESS_NAME]
  --pid-file FILE                 A path to write the PID file to  [env var:
                                  GRANIAN_PID_FILE]
  --version                       Show the version and exit.
  --help                          Show this message and exit.

Logging

Despite being a Rust project, Granian is a good Python citizen and uses the standard library's logging module to produce logs. This means you can freely configure your logging level and format using the standard idioms you probably familiar with.

As many other web servers, Granian uses two different loggers, specifically:

  • the _granian logger for runtime messages
  • the granian.access logger for access logs

Access log format

The access log format can be configured by specifying the atoms (see below) to include in a specific format. By default Granian will use [%(time)s] %(addr)s - "%(method)s %(path)s %(protocol)s" %(status)d %(dt_ms).3f as the format.

Access log atoms

The following atoms are available for use:

identifier description
addr Client remote address
time Datetime of the request
dt_ms Request duration in ms
status HTTP response status
path Request path (without query string)
query_string Request query string
method Request HTTP method
scheme Request scheme
protocol HTTP protocol version

Workers and threads

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

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

In general, Granian will try its best to automatically pick proper values for the threading configuration, leaving to you the responsibility to choose the number of workers you need.
There is no golden rule here, as these numbers will vastly depend both on your application behavior and the deployment target, but we can list some suggestions:

  • matching the amount of CPU cores for the workers is generally the best starting point; on containerized environments like docker or k8s is best to have 1 worker per container though and scale your containers using the relevant orchestrator;
  • the default number of runtime threads and runtime blocking threads is fine for the vast majority of applications out there; you might want to increase the first for applications dealing with several concurrently opened websockets, and lowering the second only if you serve the same few files to a lot of connections;

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

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

Backpressure

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

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

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

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

Runtime mode

Granian offers two different runtime threading paradigms, due to the fact the runtime can be multi-threaded – in opposition to what happens in Python event-loop which can only run as a single thread.

Given you specify N threads with the relevant option, in st mode Granian will spawn N single-threaded Rust runtimes, while in mt mode Granian will spawn a single multi-threaded runtime with N threads.

Benchmarks suggests st mode to be more efficient with a small amount of processes, while mt mode seems to scale more efficiently where you have a large number of CPUs. Real performance will though depend on specific application code, and thus your mileage might vary.

Proxies and forwarded headers

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

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

from granian.utils.proxies import wrap_asgi_with_proxy_headers, wrap_wsgi_with_proxy_headers

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

def my_wsgi_app(environ, start_response):
    ...

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

Free-threaded Python

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

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

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

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

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

Customising Granian

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

AsyncIO event loop initialization

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

import asyncio
from granian import Granian, loops

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


Granian(...).serve()

Hooks

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

  • on_startup
  • on_shutdown
  • on_reload

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

from granian import Granian

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

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

Embedding Granian in your project

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

Warning: the embeddable server is still experimental.

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

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

from granian.server.embed import Server

server = Server(...)

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

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

  • stop
  • reload

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

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

Project status

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

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

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

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

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

License

Granian is released under the BSD License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

granian-2.4.2.tar.gz (105.9 kB view details)

Uploaded Source

Built Distributions

granian-2.4.2-pp311-pypy311_pp73-win_amd64.whl (2.8 MB view details)

Uploaded PyPyWindows x86-64

granian-2.4.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl (3.1 MB view details)

Uploaded PyPymusllinux: musl 1.1+ x86-64

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

Uploaded PyPymusllinux: musl 1.1+ ARMv7l

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

Uploaded PyPymusllinux: musl 1.1+ ARM64

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

Uploaded PyPymanylinux: glibc 2.28+ ARM64

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

Uploaded PyPymacOS 11.0+ ARM64

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

Uploaded PyPymacOS 10.12+ x86-64

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

Uploaded PyPyWindows x86-64

granian-2.4.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl (3.1 MB view details)

Uploaded PyPymusllinux: musl 1.1+ x86-64

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

Uploaded PyPymusllinux: musl 1.1+ ARMv7l

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

Uploaded PyPymusllinux: musl 1.1+ ARM64

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

Uploaded PyPymanylinux: glibc 2.28+ ARM64

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

Uploaded PyPymacOS 11.0+ ARM64

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

Uploaded PyPymacOS 10.12+ x86-64

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

Uploaded PyPyWindows x86-64

granian-2.4.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl (3.1 MB view details)

Uploaded PyPymusllinux: musl 1.1+ x86-64

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

Uploaded PyPymusllinux: musl 1.1+ ARMv7l

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

Uploaded PyPymusllinux: musl 1.1+ ARM64

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

Uploaded PyPymanylinux: glibc 2.28+ ARM64

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

Uploaded PyPymacOS 11.0+ ARM64

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

Uploaded PyPymacOS 10.12+ x86-64

granian-2.4.2-cp314-cp314t-win_amd64.whl (2.8 MB view details)

Uploaded CPython 3.14tWindows x86-64

granian-2.4.2-cp314-cp314t-musllinux_1_1_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.1+ x86-64

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

Uploaded CPython 3.14tmusllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.14tmusllinux: musl 1.1+ ARM64

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

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

granian-2.4.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.14tmacOS 11.0+ ARM64

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

Uploaded CPython 3.14tmacOS 10.12+ x86-64

granian-2.4.2-cp314-cp314-win_amd64.whl (2.8 MB view details)

Uploaded CPython 3.14Windows x86-64

granian-2.4.2-cp314-cp314-musllinux_1_1_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.14musllinux: musl 1.1+ x86-64

granian-2.4.2-cp314-cp314-musllinux_1_1_armv7l.whl (3.2 MB view details)

Uploaded CPython 3.14musllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.14musllinux: musl 1.1+ ARM64

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

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

granian-2.4.2-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (2.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

granian-2.4.2-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARMv7l

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 10.12+ x86-64

granian-2.4.2-cp313-cp313t-win_amd64.whl (2.8 MB view details)

Uploaded CPython 3.13tWindows x86-64

granian-2.4.2-cp313-cp313t-musllinux_1_1_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.1+ x86-64

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

Uploaded CPython 3.13tmusllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.13tmusllinux: musl 1.1+ ARM64

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

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

granian-2.4.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.13tmacOS 11.0+ ARM64

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

Uploaded CPython 3.13tmacOS 10.12+ x86-64

granian-2.4.2-cp313-cp313-win_amd64.whl (2.8 MB view details)

Uploaded CPython 3.13Windows x86-64

granian-2.4.2-cp313-cp313-musllinux_1_1_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.1+ x86-64

granian-2.4.2-cp313-cp313-musllinux_1_1_armv7l.whl (3.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.13musllinux: musl 1.1+ ARM64

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

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

granian-2.4.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (2.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

granian-2.4.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

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

Uploaded CPython 3.13macOS 11.0+ ARM64

granian-2.4.2-cp313-cp313-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

granian-2.4.2-cp312-cp312-win_amd64.whl (2.8 MB view details)

Uploaded CPython 3.12Windows x86-64

granian-2.4.2-cp312-cp312-musllinux_1_1_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ x86-64

granian-2.4.2-cp312-cp312-musllinux_1_1_armv7l.whl (3.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.12musllinux: musl 1.1+ ARM64

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

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

granian-2.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

granian-2.4.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (2.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

granian-2.4.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

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

Uploaded CPython 3.12macOS 11.0+ ARM64

granian-2.4.2-cp312-cp312-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

granian-2.4.2-cp311-cp311-win_amd64.whl (2.8 MB view details)

Uploaded CPython 3.11Windows x86-64

granian-2.4.2-cp311-cp311-musllinux_1_1_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

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

Uploaded CPython 3.11musllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.11musllinux: musl 1.1+ ARM64

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

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

granian-2.4.2-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.4.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (2.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

granian-2.4.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARMv7l

granian-2.4.2-cp311-cp311-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

granian-2.4.2-cp310-cp310-win_amd64.whl (2.8 MB view details)

Uploaded CPython 3.10Windows x86-64

granian-2.4.2-cp310-cp310-musllinux_1_1_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

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

Uploaded CPython 3.10musllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.10musllinux: musl 1.1+ ARM64

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

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

granian-2.4.2-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.4.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (2.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686

granian-2.4.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARMv7l

granian-2.4.2-cp310-cp310-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.10macOS 10.12+ x86-64

granian-2.4.2-cp39-cp39-win_amd64.whl (2.8 MB view details)

Uploaded CPython 3.9Windows x86-64

granian-2.4.2-cp39-cp39-musllinux_1_1_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

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

Uploaded CPython 3.9musllinux: musl 1.1+ ARMv7l

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

Uploaded CPython 3.9musllinux: musl 1.1+ ARM64

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

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

granian-2.4.2-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.4.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (2.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686

granian-2.4.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARMv7l

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

Uploaded CPython 3.9macOS 11.0+ ARM64

granian-2.4.2-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.4.2.tar.gz.

File metadata

  • Download URL: granian-2.4.2.tar.gz
  • Upload date:
  • Size: 105.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.4.2.tar.gz
Algorithm Hash digest
SHA256 b6ff836875373886e4ad937ce1e4e706d4d3e0066432fe81d55354bd4471be3e
MD5 9a406a3060ebc2a09137dd9ba850137f
BLAKE2b-256 c8653a0e83802aa618105aeec14acb753e72e3d700ef97ca68395f0179bbe692

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 05cd0e39ea5099aedd5833d164d7ef1e0059f6f9e3c63e5d78f7aacae9f69b08
MD5 37d4c05ac132d1d1c1a0df9e8d7ece20
BLAKE2b-256 c369e2800216902be13c0e5457f977be69c088d25a54229a0443a05c81a0c505

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 5e1d007a02088b21b8c453f5822d7d085c7651d27fc68574fa218ce73fc49c14
MD5 7faf981043607bc60e7835c740276f5d
BLAKE2b-256 87822c723ee02dc615533f92b2a954b8ec62583c1b2e3994066db9d53d8c615c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 6449d834cb90c147281f1a48b703223c0afaa2fc132a1a6342334853f81c8257
MD5 c64412ea62c23364fd7bfafe6bec652c
BLAKE2b-256 a665ae255a2f09a4c0e92dbbfe07ab53fd2ab4de11ba19e54a6e6e38d0fa8df7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 90e37e1419ec91daf37188a706b1a7243b6c59a32c8565c487f98884d265e904
MD5 76b5e503afc09c621ccea1cb66567bd1
BLAKE2b-256 1d05cb80f2a10d17bdc5ff2300b30be68e3ee90879da1af522f0f1f8a92d6f5e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b132bfbbe2d03ebb82261e64f7b07c21c83143b0e1b53e02e8280eff8f4d85f1
MD5 abe6d2df6c8ecb255ecce64a0716a582
BLAKE2b-256 9c3a05520fffb1fa73b3755bdabf962c5708eaf820bb3449481c76b244fec15d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cd53a899568a7238623a166b87adb0f1f35195530b178f23479a8280e2cc670f
MD5 fa9fa07d9a3c3a443c46afb148940af1
BLAKE2b-256 96504962cba3f0bb9fedf1271c62c09704f909e072cee34fcaf4e176092c8558

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 08356672b3384171956e82ccfc73c1a8364a477a3c499174dd754a63142292d8
MD5 3f6fd7525ac82106b838973ef731fd80
BLAKE2b-256 f23a36ceabf94cb94c2eb119705e3977c0953e6d13873cf4176e8b5c6d0ed89f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6e9925f6a00327e92c5acb6e3f5d0395d3a4471145564f23e5193ab70905b48c
MD5 fafa39146e7429b30a63db1a5df6a7fa
BLAKE2b-256 c46797c3907949edf4585ae5ad0c7cf2f06f2feb3f171f412eaa854ce45f7bca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 57036054b4378d53f2420bef338d31bdc26ab846629cfc3e2fa639ac122bffc3
MD5 8cd89a3095d9814066d0741ef5e1ec28
BLAKE2b-256 44b1bea78dab5ce4c22de33eaabd8a59804f86a7b09abfc9b4e9ec4586748565

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 8575ec62b137cedf81e886f1f27d1f8f5557ab79e97a78789e9be2b43023a248
MD5 0a6124893d9153948bfa0163ca6c506d
BLAKE2b-256 ca4241fcee57559af20382b91de6e6fd72308d47226074b33276336d24b62349

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 bd0d41908a3e529175ec4a024a817ca0b77c470f549c3dcf514e475bfdf5b6db
MD5 ff7eab1efd8c74a09bceca6cc7edf365
BLAKE2b-256 d38a6601c64bf05f13f28f9c822869b17bc39784e5ef04b148c40deb18795ef9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 3f238207b95303ac42b1000c47e221e13670c125d2116df3f6bf9544ad0012d6
MD5 e7a3299078c9b7fd43ad139cfa4822d4
BLAKE2b-256 29e20421ffe4079bc599b763f1d73b1f2f2639a0a58422bf6f132275ff233572

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 15c7684549bcefb06261379354d569b9013ad6e6d6a9640286b31062b2254097
MD5 58c520c8adf3c027e7d4ac034e4fdea0
BLAKE2b-256 3aecc3bc4646b7f2fe8e66770b13f9114194aae1dc319dc93125b26de46a0a80

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2a44e2d894b719c6ffa2cbce40707f01c5648f1296be940303e250e5d169b527
MD5 4ca57b795bf6cf8f676ad32c5e76eeab
BLAKE2b-256 d9e23e61ed7251160120f450d674acc236b63939d9069502acfe2a74452692b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bafc6bc78f7a4140b4f434eef2404d7d12a4872acf183351ed7e9b4ee1288deb
MD5 53faaa7f6dcebfcf534cdd41ff8446ad
BLAKE2b-256 c3f84b1b76a8067e90ea7e7917eae66d8abac389d1cfec8c475504dcebe45258

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0194509fde4415a2468fd67495e650178faa9cc1e6fafa388bcd2349254e1f96
MD5 00fdf9a418fafabe770861e499ff0693
BLAKE2b-256 118a0d91ecbca575bf261b3afd55fed98e42f6897120bd72aac8225c6bb62466

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 abaadb859edce52d5d46dcd6b6dd4fd72123b154cb37a0a2a6eaf1ccc3cfa0e8
MD5 d5e55a7e11306a0ba9c214e330ff92ee
BLAKE2b-256 340bb6c9616ca0f620164b663c52e05b119ce54889264acfa216d986ab4d267f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ddbcea24210ef8c9ddc0901087a0b37f40d13b03c465573a6b9ed39283114ae5
MD5 ea5adf50b2ada2aae53778061321c199
BLAKE2b-256 00bed7d3d010fbe5bf6b721ad5da0a5aed0a984dc2e6d0867543d8dae13b0ff6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 e72f4fd36fac67a9e201790228333d1b18edcf45381a533345cf4706e3f45aea
MD5 3c9e39c1dda2aca7d8e687b1a305e7fd
BLAKE2b-256 b2aa310ec00a4c59b9da4d4f87b5bb0407a78d1ef27447ba598710ab5675723d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 f7fec1a05a7eb11cb3edb03c8488839493d29dd06d761dbf82f0c922cf874f0e
MD5 8f8500f45c321c57f3e3923b287fe298
BLAKE2b-256 622079bcc8275b3e437f96f4b2bb220de8dfe072c606dd6a12c773b797bd3a6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b0a0f00ec529440d92ae4f2e5db522a0cd2c403345c7c606ae6d5718d7428d38
MD5 87f093d9e8046bfbac4ebb3dbd0aba72
BLAKE2b-256 d864d2d1cae35317de1e8761dec4ed3830b2407999e4cd964e2029cb05a5caae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e03a1405840f8d060637ae4a5cc82024eb503abf913ef547aa9ec0dd97e9373f
MD5 834093a4c40640607a624473187c6c0f
BLAKE2b-256 8d2ca1793fe15b868c1ed0b6b1cc4885ce4245236c039d3078c18c2fddda7095

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6d71e7b860a0968c1a94452a5e199cba8ebf4a3a471939ff325ab9f5644fcb0a
MD5 b6e2f6a3a9da7e39849a480f4777e995
BLAKE2b-256 d5b2d4227a7217a4fbd6ddd618f948d5a509788e2ea2e3bf892eb6e4b660947f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 451385ff27fdaa679d3bf63f670685effa503bbb478e73e2283cea78aef928e3
MD5 a2a276954b46fa9fb71cfb746c968024
BLAKE2b-256 c0c0379582032dd44eb65f96c6e2ed3efa5493af1146774e8e5377357ce33501

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.4.2-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 2.8 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.4.2-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 f644f1f2c8a0573421fe4b19ee8b7a420f579617a7da3a4172265752888fd71e
MD5 15abb68c342ee99df01b9b68adb975f2
BLAKE2b-256 1a0d5ee90e3b02a07ff8b9e6828c680df2ad0a404e568aee0fc9460923d46020

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp314-cp314t-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 2691958f51f49d79d39795dbc8e52caae43836c98c62a2bc79e2f4afbc77e292
MD5 4d6e3b284db1356df4cca57634dcae87
BLAKE2b-256 5b4827e99fe808227d41c1bbeabab3235a9c6c77d8bde412d49d030317b9b8c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp314-cp314t-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 b8c35aeb9b85a9ff160eeefcfdefd0beec30da17e218f743ca9506ff644712cf
MD5 2d0e50502d8c0ad611b9626d83bcb321
BLAKE2b-256 0b76cd5804f8a4b1d83ce59c41bb060040762bb1053dc1a55cc70b2ef865cf61

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp314-cp314t-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 15f091092437020973a15fc4d99b9c49ca9dd42a07ed3c09596d192151738818
MD5 a6c65166df6be969f2a787895832c2d0
BLAKE2b-256 ae151c6780369b969fc76336953e310bd43b627cf959b2a031b3a4701d579a31

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3684266f59d585a3577a929fc5ec04c31fc9864a7ae640fb01774566db49bb44
MD5 05d996e4efa33a4b4b0f9083caa100bf
BLAKE2b-256 8632a16a02aebea6e7c81cca3e52304134aa7e46753152de334dae1374df6adf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b7efa569dcd3f80773b705503e16ef41290ee06c84494fe32fc530e0833c2c20
MD5 c07f5ae2f55b8abd56443d00e2d4adf4
BLAKE2b-256 efe7632c6001cda926f670bfaca517dd37f2d1e455f63408a493ddb2e21e35ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 801466bdce5f47e540526ca0ef29771cf7a8e1a9680ed61151912009c009990e
MD5 b2bda77e2b053ec224dccbe27eb37330
BLAKE2b-256 545ce281a46fe90b55e31e3aa78c511908e4de503957f33cc4c5d8db334d963d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6bfad70d2b2f9ab6be82152acb1c49e300667e246791fab9c2da357496c45b93
MD5 a747fec7272b69630fc0f30764a3b2a3
BLAKE2b-256 e22c61d9bc6b5f1bf6df866ebcfa648268f67d76b71e01e57ae36f3da21ab6ea

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.4.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 2.8 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.4.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 61a3be045ffa29deefbf4cdf31b62b1b5fb086d3d70be39a09074f47211e6dc6
MD5 ffed6b5934f918b78ee568bb2a179f84
BLAKE2b-256 45353c14d4c24d6aa3fb40d26ba1e7310287b85019d08ddb65261d9626ec3e53

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp314-cp314-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 e3dc91a9b33c81a8944e4b64397fc1026668965cb68a00a28298c26e333e4175
MD5 abdfb561abd3c893b4acaeef22b0d3f2
BLAKE2b-256 199c573e99084e76434fc914870a7e36a0f401d4c1400ffce18cfdd5edb2c4b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp314-cp314-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 2e40996c3a83658775698ee53fd98aa7b12cd145cce9fc8ba4cc47fb32996747
MD5 f89e105bf4c943765b8277099e84e2b6
BLAKE2b-256 26ed2a0c8560181d0f06ca38f7cd205196900fef3c48f861745eab0c0bfb2b74

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp314-cp314-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 b6abbe67a4530dd97c6643c5563e46d2940337332d7985c5aaea144e3c4014c5
MD5 8cd528dc8f980b439b806eb2e4719115
BLAKE2b-256 61c927bf7ddba696a823442403268a0e4279fa41df67fce21f77b333a005440d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a04b419e0b8f82a0d13d811f77a90977e61a8568217ae67fa0dfa1697477e994
MD5 6cc2bf18cf8a1255b6597110d0a5b2fd
BLAKE2b-256 1ac4b0ad308041634419179ea9c1648de0aa18a57395a0973f8a597798a890a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a793f3c67c0b53dea2bf4e7760c671291b0d76286bddee2ae2e77ac7a72bf6a0
MD5 9fa2067aa600edcff1b9ab10c41e74ea
BLAKE2b-256 85c48f36c9a1a6155e166b45bc78a88b793607b665e2bf65ab59d04160762863

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 856895472aea005acbe2d2d8cc7cb620b77cdb1aa5b5db3ad534205322a97a48
MD5 ec054fb7bea46213d4e1cae9858f8821
BLAKE2b-256 89b78809a6911396de91999b9ad85734ba51eb5bb0f63978d17b4d76e05f947d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 feb070ded4851931f27da1b8469151bd9a4e3e91814b03c0929cf3bfac02adaa
MD5 418950f7ee687e7e49a80981510a1957
BLAKE2b-256 ec7329e2e258cdef1b560f5ba48ad9abd04ccb491135e31e0834ba91abfda64d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2e212151dc49fa274910b0643f43b87681e2b29072f69a42e156db3e07dc821c
MD5 b89ff9f59b59d3eb65554c2859ec453c
BLAKE2b-256 7ba5298661e6fbc700ea140c34f9be3c0a11528d0c12140f2e940679f143c884

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1b6999ecb1e7d1beed922e03345481b03abfa08d95c4c66482e2fb463d2cbd0b
MD5 79b12ab6a2e5823a65d8257c019d50af
BLAKE2b-256 be5b6057cccfe161fbd7fe0c6f04b40d7c8fec0c48ddda48f798468cf239920c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.4.2-cp313-cp313t-win_amd64.whl
  • Upload date:
  • Size: 2.8 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.4.2-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 5fbc433effc8121ba9050f5a8d82373759d87220f9a3773e2cb5305dd1641290
MD5 e5f96f393363262fcbf2e29a428f3810
BLAKE2b-256 e740bec6e1719695fd53b5697e2d9cd5e82b20403187df16962eb5b8c492de19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp313-cp313t-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c42617d4a49dd04a8947fae27b09c6c329efc185bed2a15f56e08829c0ecb674
MD5 f7759316e7ef2ab47f6fc1f86166dec7
BLAKE2b-256 7a79469c58daa95ec45d7bcb5326b698c8badcc4377112ff563cd29d2284fa5e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp313-cp313t-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 32e3c76938b06f87bddd96a4544f01f72c2d544ea60085c57e4ba64dfc255fc8
MD5 0c512b7a94569655a9b4c1c8be4a0a41
BLAKE2b-256 3aa27c84e116333292968c7619fb10762d17a2504bc4276b28fdfc3193450431

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp313-cp313t-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 5d75695a10742c7ee79a9724ac54e845d3700885471eebd00183c6a3823ec562
MD5 5f6d2a2cab3ea1099657668bca982c73
BLAKE2b-256 d8acbae2bb7e6ab4952888efdc456a0057a596d04c419b4ada428b98a4c8ec02

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 22f99b52e7d769b65e1a62a763447655ac1a2eafe67901a75d360a22624a93cb
MD5 30053945c2e060d5fa1f769e16ef8908
BLAKE2b-256 7eef86d81d361f3ca4d32d24432b852d65b54fb97a7024884d6b78b427a96c3a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3b71147b78788faeed0a1753fbdc276e4052a1093a367124de7910d793d04a81
MD5 2e86b92adb7243a118ca7bc432452116
BLAKE2b-256 2971eed17fa79c5565850d9be5a802502541d7e59f9484574fcf4332652a068e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dbb9e9e6aae8dfc42bbe4dcaa53e4fea422299622883c221fea47f1c8af44af7
MD5 6b45a4c5c2776b41ea7d6450204fafca
BLAKE2b-256 7d56bc40aac00e079895e2786f0241c64cd9f4807c935edecb07750995d1fae3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 162c3f6ace924809693eebb47970c35658916778e0023f0c46e2e861ffcd5ca2
MD5 73c42fce0542b1673ef9254a12de6abe
BLAKE2b-256 5e7a61bfa510fcb52d4abf99942b309fa7bd84c3826efec548505ffe163d3619

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.4.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.8 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.4.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5391f4c09dfdf8a1690e46d414cab7d1e6ee49ad3007ff190c210192a352862b
MD5 182c5e991661abdd553a6f6f93ee0504
BLAKE2b-256 79b2daa9bc61c37ed2a3cf4328100536376292aa3d47b7af4162f45c80d2c4f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp313-cp313-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 29bdbcde1ce615bd81583eab6508f9a6aeb6f8372b03bea784810b853e8fd47d
MD5 65556b3449497fd6f2275f1ab5d6e30a
BLAKE2b-256 d74a230318005c6ece8eef6a2e5e918d443cc98dae7837e1598292f6e1ba8e43

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp313-cp313-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 8536b165847acd8a5e894356434a25a3e263b8a0aeeb405f413b18f0a041798a
MD5 8668520a00c86c67ed8a4fe6cf3b329c
BLAKE2b-256 45135b99c3312884ce86607e0ca5a939c413280a6a69648d13685e95b0a6edef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp313-cp313-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 85c8ec1efb59b46ca2528353404639423816071788c450aa145ce32a2e2dad7a
MD5 93690e76327ad69b6a74b5510a4e8604
BLAKE2b-256 f8a31c5d84d46ec2e8179ebd73b59fa4076afec8187ea4470617a2987f1c6250

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 27bb57c8250f5a9c85890b57934f6a5828d2691a2b9bc3634adc455387d1cdd6
MD5 258eb3d54b5964a2f2d156d03bcda684
BLAKE2b-256 3b0d4670885ed5662ebba0759bcc9834d07ca3c722ff115fe334f7acf25c3bc1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 47e3c70e0421325a9e8d0f4c351243edca12732cd7bdcdb157feac5e0c91ce3b
MD5 ef09178642a6138145022ba63aaefe90
BLAKE2b-256 4fde7b75e48e6728170a22754665aa4d30095dd80b068dcce0192a0d5f4f1616

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0d911bf98b3f121f8479755e9474cc0d90002775bd8e7a720f9d95363ce6021e
MD5 f80e80e20c1f2ef80417af423e813825
BLAKE2b-256 db637a539b8c81f1778ba478dfcce7c7932f0cd33797440ecd012e8ed4a363d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 9b0aa7a3b831530aecd4d1dcbea23b92969277c296c637e1c81d8b2aafad58da
MD5 38c04e2a86d2f73935e57585287985a7
BLAKE2b-256 219e70b47d86c853ff2a1f12c4c0b32341c3d025526229e1484b2438eb9d4a5e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5c111a4c4ff11369a83b7d8410e56d25678f6cd15530ec587cbbd10e859e936f
MD5 19a2780471c6fd148e3d14a08b0dd540
BLAKE2b-256 54b0d1798be93c1febf66aec6b79d9536a6c82bacc2f5b25a3d0ec67cf0b7cbe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a581cae0db4eb4bff980aa7028ee6f1f9808c5b6f41cd14de601462fb0c836ed
MD5 8bef3d82be26f836b962a267fd9ed5a8
BLAKE2b-256 102b34c093bc98f435846bb10a13a0ed63a970538566a445d8b8b30a4c93237d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.4.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.8 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.4.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 03ddb45371140774bc71a9f0995972d90a83a083d6dc27eb37931cd76418a0f8
MD5 cf3f8fb7fa99b7a6a8f3e2b2b40abf48
BLAKE2b-256 cfb141f768ca26ac7e2297e62799db04f87eaab3f08d1e17e484f54cb143490f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 e56ec859e760481435a97810ecbccea4ff073ce321aa84132bafd70cb055a8e9
MD5 423719280e6e8d95f6724caf1f68abda
BLAKE2b-256 8a15d39ba79446afac6fff7df51ad38d303ea0ed285847f649af9498a7300056

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp312-cp312-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 8dfc8746f810ac35c06abe34418c87acf493c825c2b16013f9797e47f7b3eb33
MD5 1ff708c97bec309220ad3e8561bfd528
BLAKE2b-256 b93792e55ec5524868e1055aed5b4c5cebf2db1182ceb0117870f0fc13a2af22

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 ad25979d9d9fa5d88f2e41df61d51da60f590b6968fb28b964c2790b7e7ec016
MD5 cb31065e90aaaabb79392664b8ab200b
BLAKE2b-256 63ce52ee75ad662902789b46b4f8e629ac48cb61060d867d1c568ef071ecc309

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 27bdc4e3166feef3a562eba80cd6596f623954f6c142849bb0ac135d1b6a056b
MD5 0368396a568ba1faf158e3fb264652dd
BLAKE2b-256 1174a19f2a76224e10251ddf0dc827139aed27fc908d2469f146f4bfd291d252

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6ad2775cd9c67eecceb3542e7a93077f2e7df154cddfb891b3e4362d8d41f23a
MD5 441a659b11e608b2a343b33ee6ecfa0d
BLAKE2b-256 2a739281fdccfd4fc42652693b6fcca676f8b2ebe95efb1349e7ea044d77b6f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3e79eef6ba5bd3b14da7a45456632f49f32767f6732dc297e06cb0b2bff77ac1
MD5 ff703952426d02ae9bc8710f4c9cf121
BLAKE2b-256 70143247391e6f239b43e35fad5ea2591b98fe45fe165e6dba2dae70fc06bbb7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 32f0403c2281a7593569947d832347f3559971edf3aca8f599f0e861c39061a1
MD5 a0d5f95809e7e2642b0630dcdc94c005
BLAKE2b-256 dd9e75e0849730dd527748f78b5ba824e904f72a8e1289bbb311cfc1d3ea8381

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 43562368e817763137d431146deb164a6e1f3c216e6c2e0ff6e1415ea22641e1
MD5 008e135d126872fd23990b9fc6292e0c
BLAKE2b-256 caa77ae02f9e4ddb5ce28d481ce659e9db4494bfbd1e9ee5fd5e2c534d121fbc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9068678156be35c9068e07c75f6643af42c35df7c48e8f3356bc389a4c991b32
MD5 e3285d0e94694bc9fe5b5b844a9317c3
BLAKE2b-256 868f915ccdb5a5a36a7872b416e888c945979d6ded9cb63bb38f2b0ab2973314

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.4.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.8 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.4.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d8b046dc6dae020f001fe5021cf8bb1f0625c9f1518dc9478ef3f8be685c09ba
MD5 f6592830a5ca6ec0b0b1cbc0133ba95e
BLAKE2b-256 63825f03f735eb829f9b9ec0e87210a925538aeed13c332526dfaa3d5d551e2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 69c4ac42c1b00aa17bbc8e39efc847ce1f7d8c32b56c0fc22167e7b2da8edd98
MD5 e197de862e5970ee3979a6b8556bb0bb
BLAKE2b-256 76cfc691321455d832f2bc96aa856cfa473623aa255a9bbbec216500c24fb313

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp311-cp311-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 77a987def1dbd230da70dbdf379a2b3a9f8107375c477907c8c88f4c820d1a44
MD5 be4f3dfc93adcf7d1d8abee39c5a2538
BLAKE2b-256 0baccc693759579215ae1a32de04d7914c442ed9b0a46015ebd705609eb2f2a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 b936b8484b2960176261222196ddca091fbf7c2e3d218ad8885a0bad80d10f03
MD5 5addb7b69aac66de3267e7a5d036d8aa
BLAKE2b-256 5c8aaa6c46d7b7f43c6db136d5351df95d42cff3bcffb0e4b14048618b01f929

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 98d95e5c9a5a87aa8cb3a94c67fc1bf5de09627ef50f10c93ecd1f460d6ad079
MD5 66c39ca41f2f767b86ec1e321f173553
BLAKE2b-256 bba8499c416bc2548d7aff9b99e187d7c7d6493a27024747fa6c969d8a2ff89d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a1a2c8da80c14ec2e1db0a22612133ff71f7334c3b24d7131d6bb900dfeb4757
MD5 8038581c80b1dd638b0a6a0ef9e56564
BLAKE2b-256 b28e69526ebccd5c3f17640a006b57f3df6fcc8d8876f522ebc804c4911740be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 75558ddf5757cf12944c4ac59c82e57c2e6d41f24637c43f9b8b1a373548638a
MD5 ab38775eb5f3039d5c85a131222d6fcf
BLAKE2b-256 860bf0832e002d08785b761cd1ccd901106be24959d1bed4f6974a84ff78606f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 b03f8308f8e56cb2f8adbb20393838fcc508515f88fc402c01bda3d1398f61a7
MD5 807d35d48eb5f4e918fb8bb4304f66c4
BLAKE2b-256 163e94019e504b52ef594d94b53c0f5e191015a4fec748b0d269af7529abdd58

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5285e8accd1cebe3259e201c6b422186c21130fc86f39f9d406600f185d7992c
MD5 8053b466490bb1d49d051a3b7065725d
BLAKE2b-256 f4336ebab8a50610798b4daea858c6dc16f734cef5ed446839e541cdc9ded7df

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7e19380a103485c02116329bbe38f6294c287213416d49141397343b4c989259
MD5 609883054dcfba6efc801c4b5e68a4dc
BLAKE2b-256 f19d3ec5b6801cf02dd3ca50bddddd0ed8d39d829234e4278f6411408843ce46

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.4.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.8 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.4.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 19e5cd89a3def6b04b0582744f675f055472a8c5894c0adef8f3fbce563278e1
MD5 1c9b285a1077379fcdc66723883c1c88
BLAKE2b-256 7cc7454afa41e1fb3bd1dfd7ed45ff2af421ddb783e51b31c3e1efdc2d530b09

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 5602b323101949676571e62174d659e965f24bf13628ddbe09cbe15e0b615e5f
MD5 60f84c679763664c772dda73a82347f8
BLAKE2b-256 cc7ea7b9403ffa69fc31728bffec4e47269fc1d9a7628cad98214977a8b1a49b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp310-cp310-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 483d6eda92a6c52744b43b7f750c064de2534b91bbc50a685518762b585a8f28
MD5 70b04590c6894eb3f3608a85b84c319f
BLAKE2b-256 5526d3333972320eaeb71024441a28243fea1db1116a1a288a221fae4e7d7825

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 b6eb07449cdd74d4d80dca17bd9266b7a36cedb7127627199190b982fc64ee18
MD5 ecdfe19b1a54c7351470cfafab571a88
BLAKE2b-256 9a3ad6bfb08ddde60808dcbce4ee672f6b3cfe834e1213d0cd0331c6cf2274c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4bbf6049a0cfe531de1d117611f7b6857505f5ad5608f46cdf88573f1ddaa4b8
MD5 842022cb9e2b19e89bd316349ee56859
BLAKE2b-256 a7b71c5a853cb30f47c9c04acf1d0e241efd296517cce7acfb7eceaf8de1c4b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 637a7091fb3933431fde25b34bc7dbfbf464a78016522b21b0bc830be63f72e1
MD5 e06b02667a263b162d84195cfa7fb115
BLAKE2b-256 fdbf1af095eb8059d206165acd1d9d7ea849b46364e9ee89c36ec24330af1216

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3c0db8c66afb704679d4048ae709638c560798b9662843a08236f1beee422ba5
MD5 ede87dd9e4b051a871e1df437835455b
BLAKE2b-256 563faee0dde374f59a5b199a1c91047fe7ae31cd2c1c528ebdc72a4c49550f26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 b7603db54b349c899895c21709a3fdffcbeaeea888c106e342ec3dd8f623bbbb
MD5 477b85a911e22745618699892fa23e78
BLAKE2b-256 583bf6f4a2e716a28d769f5bd8fcf8751eec44158b50179c90358ec3b839752c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 61ce1a2d27eccbd962eba0201648dae260433a3a039f6de7ca36bcb25694c3cb
MD5 2b748fca42427c51d9ddfa8fe74c92c6
BLAKE2b-256 1181342bb135cc6bb825a1a284b39ca0276b3827d6396a2b8275c8d21102500f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 83c08dd27f067119e5eba4cebec76f76373a5a00492abc182ef08b84ddd50cbf
MD5 f976ada880d19854061d32dce9e5c690
BLAKE2b-256 ba9f37f6db96e78933b0a3514301f7cd22eb00a974c9e4a4e29d10667635431a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: granian-2.4.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.8 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.4.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 820bf344e00ae188658ccc7ea87c74b06cacdd60a3fb0f8878d3d84dd7ffd824
MD5 771807549aa686b37b3d88adc3337935
BLAKE2b-256 d4cd0b57e3d5725b37f77da0cf11f9fc88ea4d9e14181827b53cf53198da536f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 9a2d1a8fde7f02b15b6be8ba16f66029a65c371b708d36c1fff8f228414511d5
MD5 e8e0a3cd88acc509db22951521a039d6
BLAKE2b-256 d8640b528704af45ba34639ee987cd146a24054795ccc1984c50da439b30d751

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp39-cp39-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 14dcd807f0f61277f8889681547ec15957fcc9a54738f728dfb37ef339a52cd0
MD5 bb9abe033f447b4a1f587aa430b9ca7c
BLAKE2b-256 e0cacaad6d30ff8af34f0a2a2a1519f01bf949345b07b81b76e6ef368426a912

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 a7a750bb4fe4e174d825b27c620e99ade0689bedd02ec16492f87312587b9018
MD5 00351a5224e60b056d2b7d7d7652093d
BLAKE2b-256 771a2a38f15bd8cccc438a5e5082d7d857d684c5a19ebb6dcc8bcc85ec6d353e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 411c7c2ececbb0c59bf2913ac5756e9209fd2ff50ccba447b018d3db7b864a0f
MD5 734401832785b4133c4f5b0d3ad30c78
BLAKE2b-256 8fa5ca10dbe4402bf0b8c1814c4b768ca89c24eeb4544d9ed3239d14e442b9f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aed5d4ffa16bcafe1abe241e3e79445386ad69ea95e72c1509e07c902e6ff85b
MD5 e5594fac625b8b5e2c94fbd5529757e8
BLAKE2b-256 42eb6011a45674f80cec3672f0843e0a26573269c0776bd297fd6819190a3958

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a93024eced3ca610c80139dfd55f73433f80dfcb8bb42a836a7c6b6af5e6042f
MD5 fb1f01f1022bb2cf05543906a137c998
BLAKE2b-256 030541368a0b933db38f327473cc6e18b7b8689fbabd481fb705dc7d643e5ae6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 705e55bed2aefe8c1271f8e0c9d9671b6d8bdd0ebf6d0e21faa1cef45462e5de
MD5 76a53f0c25eb3ad3ab5243fdbe3daa99
BLAKE2b-256 b89c64b5fa71f875ea47584b93062bf65d191ccb2e74f1498fffef9afe8f5c7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc5f84ec1203d9734bae53ad6dd534eb495e5d0ae0116fbced8f248717125188
MD5 de1bf2a3a16ef89c8367713a621e9f25
BLAKE2b-256 0ab18909da2f09d1098f72a69e0aee996cc82b59a92e5a97aa939de0ddfbb840

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for granian-2.4.2-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a6fc8dc359dc5622b120b5aad33a09c0b440417d215f4e7d6cfd0aed93057c0a
MD5 b0c459afd19321de4ad51e53e644bd58
BLAKE2b-256 519f59671e548443d9331a052b577666e36213052cf525d8170b64b7f7d38b27

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