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.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(
    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.0.tar.gz (43.7 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.0-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.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (1.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

modak-0.3.0-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.0-cp313-cp313t-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

modak-0.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

modak-0.3.0-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.0-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.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.5 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

modak-0.3.0-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.0-cp313-cp313-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.13Windows x86-64

modak-0.3.0-cp313-cp313-win32.whl (1.2 MB view details)

Uploaded CPython 3.13Windows x86

modak-0.3.0-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.0-cp313-cp313-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

modak-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.3.0-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.0-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.0-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.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (1.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

modak-0.3.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

modak-0.3.0-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.0-cp313-cp313-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

modak-0.3.0-cp313-cp313-macosx_10_12_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

modak-0.3.0-cp312-cp312-win32.whl (1.2 MB view details)

Uploaded CPython 3.12Windows x86

modak-0.3.0-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.0-cp312-cp312-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

modak-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.3.0-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.0-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.0-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.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (1.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

modak-0.3.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

modak-0.3.0-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.0-cp312-cp312-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.3.0-cp312-cp312-macosx_10_12_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for modak-0.3.0.tar.gz
Algorithm Hash digest
SHA256 7a01416a36baa18dfe6e3618f5ae9bae4d659b656b48f9343e72344c74fff7bb
MD5 e474ddaefc7c2439586ad87b47a92db5
BLAKE2b-256 cd5a14e118fbc543581b4e37c1ba2fd5511390575b2b8d8e93e7e8c5487b34d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f537e07bab47d67bce1287063f8c8f6e2f1c93ddf85ad1d8c3480ff559bd192a
MD5 a0ad60f9f2cd480de46aae1498db8017
BLAKE2b-256 507c6794dc71b35deaee36d5fd0ffc139046d38fd46f55f95098a72eed221f3d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 76e0753b886f7cbba33229208bf6a97770c8669cedd5a1db9732306e6bb2e0b8
MD5 4bd8d433e703dca6789afaad2066a88b
BLAKE2b-256 3fb4090c730032cc04ff13f568db74f2a991092960b63a24b1bd1bfd3438e566

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bd3a315fe549e3b0a2e33553abc238f616e8355ae5236f47f3993e0ca28a654d
MD5 ab386cae158226959b0fd0ca34015f6b
BLAKE2b-256 a6c785287c55a0b618a958a902312bd9d90ec29ad73cdfb7144efa7afce02c37

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 ae5d972c24edfae41328a8a5e7cea51ecb3840edde867f84c8c93c100f337b0e
MD5 72541d88d92d3bb3f52b45ffbb8d1d50
BLAKE2b-256 47f2a48e561efd06ed9dd7d455c37e7eaa55fdfabe4b5c4e90ef8ed2386b23b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 53f9e8950bdc3371b76de97ec8b4e939b72f2a5506d01692062e08512abc09c9
MD5 033a186bdcb33c14c500489e2dbbf2b5
BLAKE2b-256 6f3e3214b33d1081a0e903629e4c7e8d10f2da98a3d709fc6669303f0fc476bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fcf79ad2137e6edd82998499e38ea606c359a8e94a3456a9573bb4ae7d0d3593
MD5 8eb60a0fe73f40afb8aa51ccba98bd41
BLAKE2b-256 7ef4b108fd51bc4fdbb8a4771d600611b57a5a6625e04d0e6a61bf9ad7f71d40

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 8c8bcd13e22d5aac79fcd800e4d0f0ccf0d52c18241b9a852a685acac5bceea1
MD5 03f770ffbb915b299da04760c1676999
BLAKE2b-256 532b346ebcddd04ad1325e8f60fcf3cd7413a7c618eaebea35d042681bf5ad54

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 f06eb31c1b461ffd034e33383f5cb3a0b8100b16ace16fd54d64f1a824a67bf0
MD5 faace40e0d1df5533c722eec16ca7815
BLAKE2b-256 ea9ff86b741918c011ccf1e450771786dbba92987de9102284fc1d7ede9cfb5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 f0ba576b8665b457210f269ab74b1685b7fb0d34a51d84dfa232bdd768657347
MD5 0dfdcc64fa4084429ee561a13d67ea74
BLAKE2b-256 e3fb6597a21e8cf4bd364a195d8fca14a367a05c2ce597869071a0f9f77edce5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d01f09a9bfcd5a594497fe0b334edc98a693fe67e399031837dcd6c90675aea3
MD5 f7036dc4e1139c358438d7c15e4fdf53
BLAKE2b-256 b877797a6bfc824b092495837a825ad9eed412d0200006b8304c51cb0bbe561c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.0-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.0

File hashes

Hashes for modak-0.3.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 dcd3c5a914797652068506fc09225312c05720f79f3b2c35f0ac3b7ceb5acdb6
MD5 834f662d09e9f5cf4e80a47f1d9a9527
BLAKE2b-256 ecc0ee1bf9943d5e9a6d04d05eb39b8b3063d1e58e8c0d72cdff5253d2b38b00

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for modak-0.3.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 80fb554a7eef3ce58ca88e7899c25c87c8fa018bc89a30652415d3f1a7e647f3
MD5 008e3e80435b4e939a1dcf308f0f7683
BLAKE2b-256 aa95398c0b5ac2b421a437f43e5caf292e465519a1fc8d3499e2c1b80138341a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cd353ab885096ae42a1a4fce1a5ce235f94ba30717a3a6da06fc0f248be7e821
MD5 9778de9aa6ee7d58fa8a002c0c3bef2c
BLAKE2b-256 6b6be9aa780d7e8576022147f63661628b4fde9878f880daeb2bf073ebe1c18c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 36d7a23a7b547d948c2ee046a41fb4f6266b3b3646d55d6ebcf76e7e3ad0e0e2
MD5 536b4a11893445c81fdf7d1f8c549af8
BLAKE2b-256 7d70419cf2d01b163db6e10051983e8606f0395b7cf5cafded20b6ac75671e74

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 bbe816ed3e31c200e87d2b30e06356ff38f5c00d8aee803eb1028d856109d183
MD5 535ef26d02c21827af40ca1b78b231ad
BLAKE2b-256 954536d5b12b2223b7e4e6865cc05bf5b731be0ae01981ef24f0ed130d1f3dfc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fc47875752d1ae290074a8e42e6ced57bb68165b6cd15c55323213413a80ae26
MD5 bcd79d7af2fb00393c1211f03aabdca5
BLAKE2b-256 b8c3d0de9e774f5e1115baa4d8e7686694801d39fc41fae611449a11e682c6f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 77c45f298650cfda8589ce280a5ec9a679a6707ae95cc994a3f45f7e25b0fb6f
MD5 adc2e7b8bac83ded33432ef50ec2d165
BLAKE2b-256 aec09209c1adfdcb25ee9a24624def343be1f2cb2527679b1bb88e86040c2008

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 ae0cb0648f879e3f258cb4c85da371e79f08aad8ea9b641b8e8b6c0882d6df5c
MD5 3428c2528c3079caffe3af016548324f
BLAKE2b-256 e5f4bdd58fcb830a8f32e854d145fdf2e15c8f93972af3bd7f329fee2749a1c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 4b4a58cc0bead51f96aed0255a95103ec6f8b9b1cf7bcf0da892ff1e2dc67948
MD5 b0802f64d6504e888024c483b4bec30a
BLAKE2b-256 8b113e0a27818f86f2ac6d6db40f1fe2dec7857e7f9322037719ac453a0dde17

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b253f36e1ab45e2b6dd97c0a5334aa309c6294a935f8d82dd269c003523e886d
MD5 e5352a4c97cf11cb4e68409d4b78b8ec
BLAKE2b-256 d86b7a2f57bd740b26034d62b405b5acd544e1728d35acde0024b10c03525723

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 7491406379f72983d45864b8103df0aad88a10596e1848f64d0324ae8a0c921b
MD5 d9b4efc24b541ce63686633a52492ce1
BLAKE2b-256 9a726968306b89fce703e2e4083963cb67542b304e9991dae59e7a4c83a3271a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 88b00758de817fa0419084aebc856d4e7a7f85879ba172722e920013e0a31898
MD5 6207b04d7e12e360ed9227a7e29b9a4a
BLAKE2b-256 a015adb545896acf1eb36f4f646d399ada7f09843c300b4955160dbf96f9314e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1581caae3374e13d4c3a8dd0994c9f3eee28fd65f82df26499342acd118bfff7
MD5 3c1cf9bda6adbe9e9736fb0b7980985e
BLAKE2b-256 2d1d41a891af6463b261c6be61775e6b6f0239e2d4216c1d8b2fafdf4f16e437

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5990eb36b89efc047a2b0274afb20ba6d7a84fc91586ec57380d8cdfad8a0adb
MD5 6e67aea4706b6b21ae59f8e1cb343e81
BLAKE2b-256 51ac408b004948e18e2c9bf3094d595934b90afb1f58ff553b2b1159ab840d69

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.0-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.0

File hashes

Hashes for modak-0.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 37425bd8709db71983be672812cf26f908914c766961c50cf823f08720d4bae0
MD5 aa05aba4169ed9afb40568aa7fce8e37
BLAKE2b-256 111533c8cb74f5c91fc4cb64734add2c92f34d14e6b17dcdcca22115b84a2ae9

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for modak-0.3.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 fb496d1fc45493a72e09ebbd3dc0bd64768f0c9af51c9bc5703006813defe8c5
MD5 b01131e7c6801d634e0be8a33aa50396
BLAKE2b-256 bd96bb08f1e77d0b378a59ba8574e0cc9e76e9d0b6eae0d28856b6a46e1c4e6d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ee32844f07c306e7bfd50accad7ca419cd35063535e976e59df4d3cfb9623d99
MD5 467c4cc6be614670ffe2028797a00559
BLAKE2b-256 005929c176f4a165749ee34948dad803227ef6cd3ceb3ee2fc6c3df09487aa81

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 bf86ac35f09539084f2d88dbdef93cadb7be59c0c6701235277ab4fd67a3ef0f
MD5 6cf438550ebaa19e46661bca43e252ff
BLAKE2b-256 1a8ecf4b640fc4f8652cb831bde6d5f4e66c57e7cc12bbaa737b262f66cf8b57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 618810ae9c04fdb88aac9a1931afb30f5e0d745800407ecc772e2d99278d5976
MD5 d1c77a3aa4b3783babdc2193cd1de79f
BLAKE2b-256 afecf5d4ab849c08e0ba53b63f9f8ab65ec07a4c7d936202793be37e9faef9cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5c24fe51d7d46eeba59e9fb932d7e6127ed136d4adb963513bb26e16ccb183f4
MD5 c99162d25af9ff541ee8d33c3770a42d
BLAKE2b-256 23a6a0c6c65c05a4b51c218f6462387abc4e1b4a6806dd3b93773b71f2b4b2f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c9cfb1b8b99833d6623af2448dc5c73a715bf3a7c7d2ae23bb83afb2f32d3401
MD5 5c4b594c5eff58ef5c39ac0f1ff40156
BLAKE2b-256 057fdc37840ce623a9ae8c9abc087eb5fd274a152bd65d12de3f54fe6024387e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 db96d2c76cae69e27ed8b7a67dc74529f457eef0f5cb6bc2c6d62cd87d360493
MD5 782f526e8ed6f108d57cee783cfe57cc
BLAKE2b-256 fea4cd356ea1af3872219871f824505d74c8c1f803450985f7ad18a5e95cbefc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 dcf2da259bafb8fb5c593a8209de248ddcb7218738dbca549db72153e65bca23
MD5 433c5cc70e47f81a012a1a49d4fd68e1
BLAKE2b-256 69175eb723db7591789ef67910899643750de98d9ca37533e08843db5e543076

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b6e324127e68092200f9443ad39940051a0dfcc11444ea7c107785eb86bd0ccb
MD5 28a58b6d12b498d93581dbb7e62439d4
BLAKE2b-256 88d5525aaaa147cb86be188d97328269de00f5f1786f8ce405be4648e1f6898d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 3e86c8edfea42d667d700f723375a26dea16f1627cc1d38eaefa5781a2d71ef0
MD5 6e3d740f56d53e63a93359d236923f8b
BLAKE2b-256 64583d8b2102bb8bb96a43940768d77762a2077042338650ccab79a40e1db6ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f5feeb9d8f50fb5d560bbf624689f22050f25b642202af059cb9ebaf6ada9f5c
MD5 cf72619d618350302bc23ee1009e57c5
BLAKE2b-256 61896dd61c9827265dee0a4b182aa37dd38a65c7c3e68c79a057271bc87ae3ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8f073664e39991beebe0ae1edcbaab03f046c446879519911c1678fb206c74e4
MD5 ed4dd00a41eb95ce04147d11f0f0b72b
BLAKE2b-256 35bb24028fd2b4db762c79489f7108522ddb7be08720c608a93c035f528544e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 cdd202a09c85b81c79aee8a4b3e5eb3a3fdfd016a728056f6bcc82fa52c3c42d
MD5 413341a15aa41fd0550956705641b4f8
BLAKE2b-256 aeed033568c74ab9fe100727fa22168da05abdd0846a831fa31ac2397205d693

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