Skip to main content

A simple, opinionated task manager

Project description

modak

GitHub Release GitHub last commit GitHub License PyPI - Version

modak is a simple-to-use, opinionated task queue system with dependency management, resource allocation, and isolation control. Tasks are run respecting topological dependencies, resource limits, and optional isolation.

This library only has two classes, Tasks, which are an abstract class with a single method to override, run(self) -> None, and a TaskQueue which manages the execution order. Additionally, modak comes with a task monitor TUI which can be invoked with the modak shell command.

The TaskQueue has been written in Rust to get past issues with parallelism and the GIL. Instead of using a thread pool or even a multiprocessing pool, the tasks are serialized into bytes and passed to the Rust-side manager, which handles dispatching and execution. Each task is then run as a separate subprocess spawned in a Rust thread. This means the only way to share state between tasks is by writing to an output file and having a task depend on that file.

By default, modak scripts will create a state file called .modak in the current working directory. This can be changed by setting it in the TaskQueue's initialization method. The modak CLI also supports an optional argument to point to the location of the state file.

Features

  • Topological task scheduling
  • Persistent state and log files
  • Resource-aware execution
  • Isolated task handling
  • Skipping of previously completed tasks

Installation

pip install modak

Or with uv:

pip install modak

FAQ

Q: What do you mean by "opinionated"?

A: The library is meant to do one thing (and hopefully do it well): run tasks and write output files. Some users might want more flexibility, like writing to a database or having a target that isn't written to at all, but that is not a goal of this library. If you need this level of control, try airflow or luigi.

Q: Why make another task manager?

A: luigi is nice, but I've been annoyed by the poor type hints for task parameters. It's also very confusing for first-time users, and has a lot of features that I don't really think people use unless they are working with products like Spotify. I built modak with research pipelines in mind, so I wanted something that was so simple to use, you don't have to think too hard about what you're doing and can focus on the data instead. I haven't used airflow much, but it also seems like a tool intended for enterprise. My goal here is simplicity and a minimal learning curve. There are only two classes. luigi has the added annoyance of running a web server to visualize the state of the DAG, which is very tricky to use on a remote server if you don't have the proper permissions.

Q: Isn't Rust a bit overkill?

A: Rust isn't as scary as it sounds. I don't actually care much about memory safety (although I'll take it for free), I like the development experience.

Q: Any sharp corners?

A: In development, I've found that libraries that do something when imported need to be handled with care. Such libraries should be imported inside the run method of the task. This is because the task gets serialized and sent to the __main__ module, but the imports from your code are run before serialization. An example of this is the loguru library, which sets up the global logger on import. If loguru is only imported outside the task, the logger instance will have no sink added because these lines will not be run when the task is deserialized. This will not effect most code, it's just something to be aware of.

Examples

A simple chain of tasks

from modak import Task, TaskQueue

class PrintTask(Task):
    def run(self):
        self.logger.info(f"Running {self.name}")

t1 = PrintTask(name="task1")
t2 = PrintTask(name="task2", inputs=[t1])
t3 = PrintTask(name="task3", inputs=[t2])

queue = TaskQueue('example1')
queue.run([t3])

Fan-in, fan-out

from pathlib import Path
from modak import Task, TaskQueue

class DummyTask(Task):
    def run(self):
        self.logger.info(f"Running {self.name}")
        for output in self.outputs:
            output.write_text(f"Output of {self.name}")

# Leaf tasks
a = DummyTask(name="A", outputs=[Path("a.out")])
b = DummyTask(name="B", outputs=[Path("b.out")])
c = DummyTask(name="C", outputs=[Path("c.out")])

# Fan-in: D depends on A, B, C
d = DummyTask(name="D", inputs=[a, b, c], outputs=[Path("d.out")])

# Fan-out: E and F both depend on D
e = DummyTask(name="E", inputs=[d], outputs=[Path("e.out")])
f = DummyTask(name="F", inputs=[d], outputs=[Path("f.out")])

queue = TaskQueue('example2')
queue.run([e, f])

A complex workflow

from pathlib import Path
from modak import Task, TaskQueue

class SimTask(Task):
    def run(self):
        self.logger.info(f"{self.name} starting with {self.resources}")
        for out in self.outputs:
            out.write_text(f"Generated by {self.name}")

# Raw data preprocessing
pre_a = SimTask(name="PreA", outputs=[Path("a.pre")], resources={"cpu": 1})
pre_b = SimTask(name="PreB", outputs=[Path("b.pre")], resources={"cpu": 1})
pre_c = SimTask(name="PreC", outputs=[Path("c.pre")], resources={"cpu": 1})

# Feature extraction (can run in parallel)
feat1 = SimTask(name="Feature1", inputs=[pre_a], outputs=[Path("a.feat")], resources={"cpu": 2})
feat2 = SimTask(name="Feature2", inputs=[pre_b], outputs=[Path("b.feat")], resources={"cpu": 2})
feat3 = SimTask(name="Feature3", inputs=[pre_c], outputs=[Path("c.feat")], resources={"cpu": 2})

# Aggregation step
aggregate = SimTask(
    name="Aggregate",
    inputs=[feat1, feat2, feat3],
    outputs=[Path("agg.out")],
    resources={"cpu": 3}
)

# Final model training (expensive, must be isolated)
train = SimTask(
    name="TrainModel",
    inputs=[aggregate],
    outputs=[Path("model.bin")],
    isolated=True,
    resources={"cpu": 3, "gpu": 1}
)

# Side analysis and visualization can run independently
viz = SimTask(name="Visualization", inputs=[feat1, feat2], outputs=[Path("viz.png")], resources={"cpu": 1})
stats = SimTask(name="Stats", inputs=[feat3], outputs=[Path("stats.txt")], resources={"cpu": 1})

queue = TaskQueue(
    'example3',
    workers=4,
    resources={"cpu": 4, "gpu": 1}
)

queue.run([train, viz, stats])

Future Plans

I'll probably make small improvements to the TUI and add features as I find the need. Contributions are welcome, just open an issue or pull request on GitHub and I'll try to respond as soon as I can.

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

modak-0.3.4.tar.gz (42.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

modak-0.3.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

modak-0.3.4-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (1.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

modak-0.3.4-cp313-cp313t-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

modak-0.3.4-cp313-cp313t-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

modak-0.3.4-cp313-cp313t-musllinux_1_2_armv7l.whl (1.9 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

modak-0.3.4-cp313-cp313t-musllinux_1_2_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

modak-0.3.4-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.8 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

modak-0.3.4-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.9 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

modak-0.3.4-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.6 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

modak-0.3.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

modak-0.3.4-cp313-cp313-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.13Windows x86-64

modak-0.3.4-cp313-cp313-win32.whl (1.3 MB view details)

Uploaded CPython 3.13Windows x86

modak-0.3.4-cp313-cp313-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

modak-0.3.4-cp313-cp313-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

modak-0.3.4-cp313-cp313-musllinux_1_2_armv7l.whl (1.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

modak-0.3.4-cp313-cp313-musllinux_1_2_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.3.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

modak-0.3.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390x

modak-0.3.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64le

modak-0.3.4-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (1.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

modak-0.3.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

modak-0.3.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

modak-0.3.4-cp313-cp313-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

modak-0.3.4-cp313-cp313-macosx_10_12_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

modak-0.3.4-cp312-cp312-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.12Windows x86-64

modak-0.3.4-cp312-cp312-win32.whl (1.3 MB view details)

Uploaded CPython 3.12Windows x86

modak-0.3.4-cp312-cp312-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

modak-0.3.4-cp312-cp312-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

modak-0.3.4-cp312-cp312-musllinux_1_2_armv7l.whl (1.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

modak-0.3.4-cp312-cp312-musllinux_1_2_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.3.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

modak-0.3.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

modak-0.3.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

modak-0.3.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (1.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

modak-0.3.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

modak-0.3.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

modak-0.3.4-cp312-cp312-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.3.4-cp312-cp312-macosx_10_12_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

Details for the file modak-0.3.4.tar.gz.

File metadata

  • Download URL: modak-0.3.4.tar.gz
  • Upload date:
  • Size: 42.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.9.1

File hashes

Hashes for modak-0.3.4.tar.gz
Algorithm Hash digest
SHA256 385503153cd2933dd83711d9ea8d7d0cb6a2d6b181273b57c7f08fea09b7e5e6
MD5 f144703a7661d1bb1e92a08a781b8005
BLAKE2b-256 a835ca5a820b59d48ea3da9ccdaabd90a8c1d7c37d35653a3623f78fd720ecb3

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 241152a18edb63474d34d859f9c7a222a940e09929853e48acfdd0ab782840ed
MD5 81e14a6bc4ad1fb0a0b770a3b9296773
BLAKE2b-256 7ff65020657bea1ba912eb0eeebb7c7a04c647784ad908b1750d2a822e62b39e

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 cef7edbeee4ed53517b4e455640e009f33014d6f9e9a638bdb57070ff46d9fc0
MD5 5f35e3280d2c91916d980b768cd3082d
BLAKE2b-256 70ef1cc74e14934da879e580b59ce405df0cb854bfde62d5a285b8cfd9be46e4

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e239ebd269c447c09430c40cd15b7dd2c0fdc39a285d7b7d190635f6a9f45993
MD5 16eaacdb582ccebacf4a39600e8590ad
BLAKE2b-256 f320ede02fab0773325c322f5e05787a373db74c9cc2944ee9b95e3a51727765

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 a23f212f21f3527bb1e0c981e6023ee91841dc13d71acbac25052caa9fa452e8
MD5 be4fe09395a494f2bd50fdf4fd2da520
BLAKE2b-256 e501ebaf98deb468936810a9b5cddf61d3821dcaf943ae12ed2a824fdef44ad4

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313t-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 22574f47b6f3895bf2b825885ffeb0b091af7da3c82a3114a9672fde8085b43b
MD5 e49b6649af0c85eef165d26d5e0435a0
BLAKE2b-256 49cc7d6beb84c403982e2aede7d1670cae5a4735dec24df8d3bd56f85a6917a9

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f0d18d6ac3b3b76412f875e46c3ef2dc7a33abac7eebc3f2a08c8c981e8ebf13
MD5 e604c59e3365701bde1c0cf310df7f98
BLAKE2b-256 e0ed860fe34c726199960c98fd741dc5d0a2065786680b426eab37241bbf91c5

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 792714ecf47d75430690cdd002a0525dd079ce6b14da3d6b42a32bb9d5a89fe5
MD5 dd9f7e3a29a7b3646048a3da9034aac3
BLAKE2b-256 218bf847da8ae8a74b327b7758f61f0b74d7cc5871f461397d3534ea27c7c6dc

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 3d291e6a1ebfbdc157b4650d34371e88950f1aa73de8527113d8d568a2ffb37d
MD5 770733847c4b93c6fac18a2ee41b3d4c
BLAKE2b-256 18d7942ed432808d7712c4106213cf68ec46da2128779ba32d361938f88b6f77

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 a2c5e0457d2fe926879a4e865d9e5077a4fcd2b519a977d89c2d31b9dc3c43fc
MD5 4f100e6b56a9e73956dd483782161bef
BLAKE2b-256 30ef1a32bff771734b1cb7b4331446545807928773e752da33da91227e6fbe06

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a29f60ca23ad82711e6d1b8ec576b1642703ce6bc1fc13474b206aa855fcef63
MD5 b611f8ed0d3d16cd56c7696b9fe792e2
BLAKE2b-256 8c90cb838f81e37d4ada263653a37986d8c10c5ad106d4d59556669ceacfbb1a

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: modak-0.3.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.9.1

File hashes

Hashes for modak-0.3.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6067fd289ea4865231dbb5f61fc728563602abc3be59bdd974c07e20b1c9bfca
MD5 466823999951d582b75b29d332e4ec3a
BLAKE2b-256 ce968aea9d0d48a9f2e34c7e7c1271091731c4239409891eeb75f0a25515368d

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313-win32.whl.

File metadata

  • Download URL: modak-0.3.4-cp313-cp313-win32.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.9.1

File hashes

Hashes for modak-0.3.4-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 e00dcd26ab0600bfe5493f230746df73653fbf3922fa71769ad221518dd1a724
MD5 0bef888df0a14518afbde51bd5c59056
BLAKE2b-256 b5c63481b2c7359b2e4222f8d910f951e2c0d68b7b65443674e17f4f7cbbc558

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 88150eaf1ddec09f12482a80fbbf69242ab570c6dd3076196ebf616e1a68bbed
MD5 46cc9ff12c64c8d598ddd742e26fc1b1
BLAKE2b-256 f9828980640f65865461797e5b44d2d32c79a03938da77c01d8f6a80db255dd1

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 3af2993c970cf3bbe3e337dd7b3cea6c238a6f7abe9176ee666668bb28727530
MD5 b2a2f57168cc36043906b62b234ed83b
BLAKE2b-256 ca67094b8a498e499d4ccfefc097842794993395fec2048fbf9a5cd7c431438c

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 8e7eb31388451d8b91493ee968913606fc5c15a48da68db6da3b27e264b534e1
MD5 8669d37a43de3724110f9092c2371c61
BLAKE2b-256 b387e62fc5ffa64757857528fd36086821cabb940c417b4867a5e3f64be0c2f7

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c7b08d63d89f6ba4af8652537a565239fde29238de925dab225190fc37fbedbf
MD5 d140db26f39fe74095ed8ad86dc10e4a
BLAKE2b-256 49baef1af6d24e249abd17d067160b016ee95a7ae3bce28a13345848342faf28

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 52a2d86af2d7fac57903e59868ec2a65a0d771ddb43f346afbc4ee3b981c56bf
MD5 3152a34f5f8fc92e1cd5fa1b00a0d4a2
BLAKE2b-256 f5a90740ae7f4ee145ced5c2c0621cf5420a2f5741f368dba455e0c4ea960bf9

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 5c37f0211c4657bd47b26ed0b53473097e8c4a43b6133738743a7ece70eaac73
MD5 039400916e68ff6896b7d9143171a82f
BLAKE2b-256 186a8c4238480a3202ee7abe8d4ff323b31f23d995e7a45d91b3802d6c094507

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 402532f3e1dc1f6570df98a89e517536e2c83f9c9fe8b12a382a1ce629478681
MD5 64238cc112a7a4573e0a17905dc2cf5d
BLAKE2b-256 367a05ddb1fedf1022a7878f9ffab8d000ebb40a1a7388b9717d8d4a19b9acff

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1d726e7fdd51b44dc2da92dce4da9492066621f0ff46f3df97d28cd0eb55754d
MD5 1fb5d829289530c10723469769b5ace4
BLAKE2b-256 3a7324866c5a8af5e2a047ee06c2ae11eb2659d2651aae79181fe59a65e9aebc

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 f7ce6aabdb646eae8e386b35a5ca85798b022b3bc9e4631da5967a21b84e73ee
MD5 8136d341a572bf473dda2f3a598da562
BLAKE2b-256 1708ecf817fe3bc5cc11659215808e82a39ecf4c869b39cafdc660806f9fcf5c

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3fe33e88bed1ade32f07352db3182d1036a4d32a9a7d7033c7f6cdf28a375894
MD5 f32797c60f32b8a6ebcd0cf39be44ff2
BLAKE2b-256 5fa07e0c5ae42d2fb1fbc1c858a60e337e725774648583e70f39574c60c6adda

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8177226bb0e0dff34f2f48607c4daac64b9d8076259afc7b2cbcdaa7de383ca3
MD5 dd0114e36969cd2547e94dceeba0c2b0
BLAKE2b-256 18fc8f55a30a4ef893e1f87ac8d4cb100a63319a004f9714fcd0faa8e5393ee9

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0d3ef8aa6edba956bbb8ed98df25d4d6fc17538e6e0aa7c4e01da4b360125c01
MD5 a269265a615ee3ab61d0255b07c41733
BLAKE2b-256 1392fcca3eb055603fdb401453ec647fbedd6dea06481fd0432711e9a9eb6355

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: modak-0.3.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.9.1

File hashes

Hashes for modak-0.3.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d0a860f115d68188e16cc93421bc4646e4db37761100747071b88d046fb411cf
MD5 322532b26ac4fb64c7d8fac4acd501ea
BLAKE2b-256 fb98a75f907002822549f26f37cdabaa1ec7cbe9414b1c12d5b6dd67256ecce2

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp312-cp312-win32.whl.

File metadata

  • Download URL: modak-0.3.4-cp312-cp312-win32.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.9.1

File hashes

Hashes for modak-0.3.4-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 0e8056221aec0776c0d472a3042237c33dd8da24493ce916ff0a6b534997728e
MD5 88ce5c15c41510ed3eb89ccf6fa9bda7
BLAKE2b-256 bf603984405d0ae36ad025d6baaaa4f85342d7fae314a771708d843329618f39

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7c74743d043d1a08be437d620ae9505018cf40445ad05ca5c07b8df511815679
MD5 8b1e5a2b3131e03d4e0553913c7bdd18
BLAKE2b-256 8d587e2ca8b87c0897139cab9f670aa36b93d0859d8f4e5b3fb599092c42c59d

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 a7fde6b1171afb09523a56fcd305bd1ff21db9bbdf51001ee4c5f1b5941bb567
MD5 46be22b014df06922645575f61b49932
BLAKE2b-256 3c1477ecb5d1fe2ebe2665264b131a70c6c74d38c620cf84b0fba778664ada45

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp312-cp312-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 2ba47812b7a67c8a4b0b972e18724960ea91682a094fea9e087cb74573564abd
MD5 e2d7d2dbcf5bd04724b580b23b3f5ed9
BLAKE2b-256 c879c72955bdbf0f6529ff862077593de7c984f52562ff527fc9f13bde67d119

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 dc7e8e9d89617930a7a062b0f8a95abc855ef445f74c77b352df258dced94b4b
MD5 df6845547617936c164a7980531c2917
BLAKE2b-256 0d49eed72f78ed84e796b21a5da7f49d900f15fbc0443d17c31e09ce905aa415

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bf98780154e6084aa028f17482e3bd2b0b18102ad41c6042e8064c6c648cded3
MD5 b184250664805239030f5964b712f01f
BLAKE2b-256 cd87660c6bba7a87f888fdb563abf0163cf9d04746aa254e74d0d59467e925c0

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 26d03219af4a1617debd8a7ef819a80487149c980c45f334419c3b15696c899d
MD5 22cf1144fc034e5090ab4c9c3d8662ee
BLAKE2b-256 4d581781bfbf30237228a780b5b68d78db263d848d9acbdd6e0458d7797d6c27

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 05b191d3007034d279f65cc3eff3945378405709bc552f03a8ee7319d199648a
MD5 93fa037ae34f39450bbdcca92a210646
BLAKE2b-256 f07e8de3f584f8e8a283efd01e231251ec1e25f2ce411065174730915a7630f5

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 2e191a4c56f9a4a7f22d23ba8712745513e400655dfc1d2a3a162fdb5d4903a5
MD5 afdad5105f7de985ec4091821d4212b7
BLAKE2b-256 c4e5dca76033a70ce1c5bec0221183ea8b01585e452d235ca74b068b2753d921

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 1587a30cb4cafb4e88fdb104dbee6d4e446ba0937e8d46f7b0e6c9b08342cf1a
MD5 d6203409f4b34076b342dfa5708a9aa1
BLAKE2b-256 e2e1d1cd1772a2448aca19261c0e0fb9fe5b21b7e8b8c52b1702f88cd70721f7

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5c67959286a1900894ccbe8ceb73eec87fb48eb12ed9683e06e5699156373a98
MD5 c4c7d3e1eed54752e5ba9aeac59632e6
BLAKE2b-256 abafd792c42bb11ef2eb69158e95aec46be05d8ccb914b90ce9493b31edf6931

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 456f4a74659dd886e0360472eeedb6bb7749e45a183bcca9015299292157989c
MD5 1e04301872eff1ceb06c1995599afa94
BLAKE2b-256 12d43d90bf8b5ce5a2abac9bbcdcabf11d7c662ff2d594b522c01d404890e237

See more details on using hashes here.

File details

Details for the file modak-0.3.4-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for modak-0.3.4-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b0beaf1e2d3bf99387bd43d9828a6b4bdcdd97a310fda38174f8e4d3e63624cb
MD5 1eee4ec54d12ad4ffc4c0d3647ab8327
BLAKE2b-256 38ac85ce85e81ed621331a5b5ac8b67a1a12908dd42faadc96180704a38409f8

See more details on using hashes here.

Supported by

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