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()
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()
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.requirements}")
        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")], requirements={"cpu": 1})
pre_b = SimTask(name="PreB", outputs=[Path("b.pre")], requirements={"cpu": 1})
pre_c = SimTask(name="PreC", outputs=[Path("c.pre")], requirements={"cpu": 1})

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

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

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

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

queue = TaskQueue(
    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.2.6.tar.gz (43.2 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.2.6-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (694.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

modak-0.2.6-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (749.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

modak-0.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl (863.8 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

modak-0.2.6-cp313-cp313t-musllinux_1_2_i686.whl (909.1 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

modak-0.2.6-cp313-cp313t-musllinux_1_2_armv7l.whl (954.5 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

modak-0.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl (855.2 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

modak-0.2.6-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (761.5 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

modak-0.2.6-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (859.2 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

modak-0.2.6-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (694.1 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

modak-0.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (678.1 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

modak-0.2.6-cp313-cp313-win_amd64.whl (489.5 kB view details)

Uploaded CPython 3.13Windows x86-64

modak-0.2.6-cp313-cp313-win32.whl (480.1 kB view details)

Uploaded CPython 3.13Windows x86

modak-0.2.6-cp313-cp313-musllinux_1_2_x86_64.whl (863.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

modak-0.2.6-cp313-cp313-musllinux_1_2_i686.whl (908.0 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

modak-0.2.6-cp313-cp313-musllinux_1_2_armv7l.whl (955.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

modak-0.2.6-cp313-cp313-musllinux_1_2_aarch64.whl (855.9 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (694.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

modak-0.2.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (762.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390x

modak-0.2.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (860.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64le

modak-0.2.6-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (748.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

modak-0.2.6-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (694.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

modak-0.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (678.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

modak-0.2.6-cp313-cp313-macosx_11_0_arm64.whl (622.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

modak-0.2.6-cp313-cp313-macosx_10_12_x86_64.whl (638.8 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

modak-0.2.6-cp312-cp312-win_amd64.whl (489.8 kB view details)

Uploaded CPython 3.12Windows x86-64

modak-0.2.6-cp312-cp312-win32.whl (480.4 kB view details)

Uploaded CPython 3.12Windows x86

modak-0.2.6-cp312-cp312-musllinux_1_2_x86_64.whl (864.2 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

modak-0.2.6-cp312-cp312-musllinux_1_2_i686.whl (908.8 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

modak-0.2.6-cp312-cp312-musllinux_1_2_armv7l.whl (955.6 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

modak-0.2.6-cp312-cp312-musllinux_1_2_aarch64.whl (856.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (694.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

modak-0.2.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (762.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

modak-0.2.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (861.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

modak-0.2.6-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (749.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

modak-0.2.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (694.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

modak-0.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (679.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

modak-0.2.6-cp312-cp312-macosx_11_0_arm64.whl (623.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.2.6-cp312-cp312-macosx_10_12_x86_64.whl (639.1 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for modak-0.2.6.tar.gz
Algorithm Hash digest
SHA256 35a656b8b5c701d93f0643bdf85b59e9bdca4e95eb2fb3f8b2a7723baf8aa2d0
MD5 8e15b2953e06e2c43fae12a53132b554
BLAKE2b-256 5525899bcd418108b69fe45c80514f6679bf70f5c590374fc75a2871733864ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f2c340b485b3cce87f547101f59f32d82a35603d40984ae9ff28bab05828d500
MD5 813f7e2fae132c77178bc30518b3d881
BLAKE2b-256 919766694627985b86f3f81b01f078d97caf572e92a83a5c66b9b85d35846536

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 52d627973c8c444170f6e3455de4f4be0b57e035fd5d3a074be1d4c90e49d9c5
MD5 74f851706110c45f479da321a3cb7f54
BLAKE2b-256 d6b7ce527951dd3c498d634a1bd1445a745321b0f3aeab78a5baa847a0e5f1e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f08cf29c6a51a4bfc79fb81384a3918dfc7023ddfeca70656f08168ee4ca3eb2
MD5 edce5b3db092301d57a4686834d0b995
BLAKE2b-256 4bee1b8e0914c96d1046980bcef97de493e3a9aa7e8ad30fe84aba180f531fd1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 50f364630949ae4c652c0da814e89cc48dd327e2bb553e8a1c165e21c8bbe5b2
MD5 cc1a7495d8fd32787ae2c98526d6efb2
BLAKE2b-256 7e95d35c1d56700557c9cfc094964d188b3ccd4c81b7707c021a1e1dca3a6da6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 71915d2e443021ed3106fe86eb257b839887e11e0c88875dea4b41de2ee2ad80
MD5 a89bdec5170ef09e36d6fd1f73a2d8b7
BLAKE2b-256 d297665eb8a013db3fe55b6bcaba8837787164cb3f34e0200623a0dd49c96b9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 91f099040e7912007749257e15fc26f87b0cb3e398d1755ba5427edac0cc4ae6
MD5 ae56c483e633b5724417ca7e20d5d640
BLAKE2b-256 002c89c690247eb08d74feb1200a0e2684f3fb18cb896b9404bb58d40b96ebd4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 91bceb5f2442320ca5549a48ee0f5e9d7729eb5cd10db1d45ab51640b4152b2b
MD5 1acd9b62d156d5ff1c6bfd52c4d34b7b
BLAKE2b-256 a6211d0f5a3fc9692edbe3fc237d41fa607fa017a2f41fefaea4377b3f67b745

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 b9c7c4c24185633960d362025f7c1a49e60de4875aa715b9e6e83ff53d459ae9
MD5 6eab6c91e61fdf4eba67fa909e50fef9
BLAKE2b-256 f3cc80d5d0a75908bceeecab12c2837077cc101ff685e0d7ddc3e3df4f16cf74

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 e03f753d4b01a4b820da950b8eef1e323820412da4181f3ca400cf44f0e37622
MD5 26e2269a561f4163f43cdfa0f03c4eb4
BLAKE2b-256 7a0e1fd202ac55a9abc5ed132d893a61b0241900d7cfaceddbd50064b4d4b893

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 afe000f8212a6e966c8c9926cb2aaf83f9774d773a639259b2aec5a6c1f3e113
MD5 c0670ba3734eab5abcc6e1393c8a94da
BLAKE2b-256 340f97f4168a1ab0372f469a12da997c45265c65e919d91f43435ba8536fee8d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.6-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 489.5 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.8.6

File hashes

Hashes for modak-0.2.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f93e61909bbf442902444e99be14dc785d16ff0dc288e17995e94cd3aeef936b
MD5 b828248a0346b95e532c8967a3d7900a
BLAKE2b-256 78b5cb4919e1f4da8f153d3e006e3f75526e5383b9a907bd5a20deba125c8545

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.6-cp313-cp313-win32.whl
  • Upload date:
  • Size: 480.1 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.8.6

File hashes

Hashes for modak-0.2.6-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 0dd3cd5780db09f4d1db580608da4ecacf2e8acffa9aa8c6baaa81aed9d7af6b
MD5 fad9ca94d3f50ade26c454b8507f6761
BLAKE2b-256 f7c3a2ad9cbaf2c35f1b0e8cb36acb09b790df841f5461872f00471a70215620

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1b253c1eddf8f2c2c5fac934ccf8961e700ad26067097574ec2b828c4e6fd3a2
MD5 794427d24762eacb40fbc5dc3dcf37ba
BLAKE2b-256 fff763120e1d6e38b069c03984d7c93aa1591a9c433671fdff4e69ba87086bb0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 3e5525ee128c8e228ebeb6df3e0e52f93ea3b8db97284cffd4f511ccd0f2a898
MD5 95b33cb92c5d9e1d57027a8d38d3f356
BLAKE2b-256 ca0934331e1ae01051c8d89a4d1474c01feb87491663d2e17022dec6e7185cbf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 6a594e9381136878abb1befd49035ce36cb52697b46f33b927795b9abf46e8f5
MD5 f3b3b2c04bee0e6b3d0fd58247befd27
BLAKE2b-256 2ed650d81a609ef684d8ccee3b99d20ae566651951250c5ba61ca6c18a816101

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 10d3a896ff51ed90305c1f3c76dfb2d3656d32d67932d9d08f0e7f31fe80f33c
MD5 4193c396c917b127e2fdabc5cc99b1ba
BLAKE2b-256 e800fd41075d3eed02c42fd45ad8eb7f72ba614d708f9ef349316367ec29bf03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c6a2015770e67d79e68659fee5c6e015d6c9f2f349396ec7258b889034c7ecb5
MD5 5256859e16900efa8768c67315d9528a
BLAKE2b-256 861a8e8adb27cd77b913c9f72500259e6f304c36e203d8f7ec4af687ff2072d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 0337ee78b8bc1fed926dc1b2f481ca3fe5283cd7f47e5dea1676b68b004b6f53
MD5 35715426e2242cc66d9142736ef500b5
BLAKE2b-256 86937001ba7bd7b53387341d512a4a33d5e84333080b0c3d27b5962651c68328

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 dede829c6516c610f7c44275ea5d8bb1e526319143f7526812e4c70f07a65cd2
MD5 8371d2bffed01759cfc677fa26fe042c
BLAKE2b-256 e1647472eadd86a45e809a698613cd6f37293bcc6e7d17869fda77035e79be23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 dd1c77570d7cd16eaadab90ce14652efa6e6198a63355753f75b60896ea33526
MD5 fc719342bb25963cc586c34e42c545e5
BLAKE2b-256 56c427b5a4f95f1dc125983175a2f06b5fbac83ee2904a33e1834059e52b6a90

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 2e5302f300b7c60c1066fae90bd3cb1375fffaf83f233e7109851c7550591b7e
MD5 8d2e364c0edcbc93fd1d6d4b236987a8
BLAKE2b-256 548b9bf138527482b0ee5f52450388605b6dcee0f4c05e87abd18d3c30b8027d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 24e2f3f334dc38c54bfc1da108dbb700b2bb1287f6e7610b89a213ca15b3c8d6
MD5 01c24b6f57b22685d13f8f4230417e03
BLAKE2b-256 b4f0d2f9a683aeaf00af2b106c9b5502526ba0ada11dc61bf15aa19cf2f6cc03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 df2fa1242dc221fbd2362e5b610e8c089090a297153061385b24d2df37f4342b
MD5 9292872d3ba98ce1dee9196467dd34f9
BLAKE2b-256 0c1097c9cd757fe04d790e83831689e0dbc05baaf6fdfff0fe4889c6ec110203

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 75bbb1c1ac349a2114ba4614769ba55e17ac8a09cfd5d14e5d27d01651541a9e
MD5 2771222ed75812276a651f57642e31fc
BLAKE2b-256 b3c736d7d7d2210fa5bf54f2165ee4ff51a8f3b3f0947e3db6d409f0b3312bed

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.6-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 489.8 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.8.6

File hashes

Hashes for modak-0.2.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 307bc7fd40052820b142856ec9af31fbb49c2bafb870f778061c55eb67172a23
MD5 9453f8fffd27756064667886644d91d1
BLAKE2b-256 b963fb68ab1a9f4777a2c9464bf9bd1b720155926ca2a09311c17ee1bf8cbcc8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.6-cp312-cp312-win32.whl
  • Upload date:
  • Size: 480.4 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.8.6

File hashes

Hashes for modak-0.2.6-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 6b8391b2cb2f3e76a451d26dddd6cec2e517478d10d88f9475d26b062b70fb20
MD5 a789811e224f1701d0f7e847f6a95bbd
BLAKE2b-256 db4170fcfeb16aad361f63abf448308d87890b76f296846437cf5ac01c1f96c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 23d051453065bbac45f8a82cfe6e096fa274c79dbee6c860fe7c75f1ffa3c4f6
MD5 73ce51478c9801a614ffcb85ef615b22
BLAKE2b-256 73a91b82f088a99a9d5a60cf9e6a4db95e2a22204455d477c4f653e714a14f1e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 a74be1fc264816a64a9c67efa682ba9b54cf24289c6c46c18152ebadba014d9d
MD5 616c1dd4cf5fb767ef0b02d4e6e09c7c
BLAKE2b-256 a28d49cd09a1c75cda40a9eb0ddae77c5ddaa6e2f2c3578bbf61ca6f9c70ee2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 ae906d62e9174b2e1da947368d416eafa19ac2abaedd95e103dd09c1452c4bd7
MD5 31a26e760d6d9f3a755b39079bff8628
BLAKE2b-256 cf14ce3b53a8d777852ac92696ed3c14deaa008193ba0b98bb0a209cba24ffed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d5c0be551bbc80a324d09733f8efb6e00742c7a522252a00d6c271e3137c6179
MD5 3ec33c1be8d6a0cc97bd2837d5708eee
BLAKE2b-256 f56f177e923324b1c26fe6f308368a62e2afcdeaf69077a2946c6d7ebc709c7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 272d4a73ea30569a8d4178e540f50e3fc5622397b6cdfb7224b6bd4cc113c666
MD5 b684365d69c3d6bd0592aff078fb92cd
BLAKE2b-256 c4f141607b347bb07b275fa4b4e84a999ec939da432370eb3ee3d468456a5f94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 61aae22e463717e5eab348fc403b52438c5f2d48fe8d5a2f31646f0fa1c51446
MD5 a20fc20a6a180019422148d77ff81229
BLAKE2b-256 b34b0c08903f1b8df2f6f8393df17e393aeeabb80ae950664ae575f9de7e7169

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 06234547d6da4f40d9c9a8da04726e43ce3fd6d453a240dfe51e2e7b7032c661
MD5 0c09e8603f21a5eb905f63f56d2dff3c
BLAKE2b-256 3e2a52f195af54fa344f43ed536338726b71a9a7d21faea8681f137cb7aa4c6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 547240f73c0994b002a3743ff6f72818847286650b4d7b87bdc73b8ad02fb893
MD5 ce2b182ec5c1147937d614b881f26fbd
BLAKE2b-256 004a7ff8a3ab9446ed33c0e6c3a62f4b7e5238630e15b82a41802f2d96c4c575

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 383a8fda4d41d308d078909948346223ab01b6c52125dd9f9b5f3ac583626023
MD5 6d616c5f8e12ed12a15464cf7bb69350
BLAKE2b-256 beb33ac2ac0c0d5431a0fe6d4195b272b321869ee928981bb72c4a7c4892bb94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a463f8e7bb1b34adf8c3d60d81d55d7557de3c34d40e8f64d2ce402f64f93e8c
MD5 47f1b8ddade3879f835afb3fc38dc44c
BLAKE2b-256 2fa9a98401466bb56d28fa7f92f9468003dbff2db4e739c21ed71ae94181fb57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1304999da524937f35abbd5508b6d4f5cfa51b334660874eeebf177306ed05e2
MD5 c6aebc47cfd0ce0b9ebb224088157be0
BLAKE2b-256 11ecb49587d8534008ff48f548d9d06523e14d17a0abf1252103dba88ae2d724

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.6-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3bdfdbad579483cc9a815f423084ebe8b75a7ebcadaa354f7de11b5bf01614fb
MD5 f45af125ef86bc3e65c3b126bbbffeb5
BLAKE2b-256 d3a200c1498b060e5fed0cb45ab5fd90c2c9ef3541cefe9e7a173c89a146f2f4

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