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.10.tar.gz (46.4 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.10-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

modak-0.3.10-cp313-cp313t-musllinux_1_2_armv7l.whl (2.0 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13Windows x86

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

Uploaded CPython 3.13musllinux: musl 1.2+ i686

modak-0.3.10-cp313-cp313-musllinux_1_2_armv7l.whl (2.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.3.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

modak-0.3.10-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.10-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.10-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.10-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.10-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.10-cp313-cp313-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12Windows x86

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

Uploaded CPython 3.12musllinux: musl 1.2+ i686

modak-0.3.10-cp312-cp312-musllinux_1_2_armv7l.whl (2.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.3.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

modak-0.3.10-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.10-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.10-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.10-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.10-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.10-cp312-cp312-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.3.10-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.10.tar.gz.

File metadata

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

File hashes

Hashes for modak-0.3.10.tar.gz
Algorithm Hash digest
SHA256 096306096cd4baed03ebb5e7ffbbdcad290e7809874fde3820468017883725f9
MD5 7933e150bd5ce3274a38da7fe43078e9
BLAKE2b-256 d9af1e06348e0ae4d946d1115768c25808c382be0883a2c5256ab9287bfe00bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b43f494d57f6eeaf409a69cee64e7b4e702f2702e3fc77e1ed12624a17853049
MD5 c110463c69600d460cf5d01eb64323ea
BLAKE2b-256 38327ecf77a72de6cea51f2beb05faeeee0622b4252fc3c76baa8e3e7bb37e7b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 23796cb34f1a68a039c336c03ce21c3885c91fd84ac5208ed823d0443b69cc43
MD5 1270b8f646ca12ae12ed6482f1518b00
BLAKE2b-256 aea7e5232112cd6e83e376207e9c66de66b3665dfcd22a1ff5d185cb8ab8d39d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6cf0bf3544b031a385df7436f11e7325a01345bb0f39823fa78cc2f19aa268a7
MD5 d58571a7aafe0bd3d023a74392c62558
BLAKE2b-256 82d1b1a508435b39ba7be9e1b604b592fd08ddf31c8dca9c38fae95057f74715

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 174b8f96fbd4b6a1d6ce766283cc297432bc5c1140a2c56da378c6ac2025af14
MD5 1627029715c6381db415fa88892f0c35
BLAKE2b-256 0153126d465336ee46acc6ce638e4acc132a1dd318e8ec9f0e4bfdd6c7f5bd72

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 7de3bdb8a253bb914c630faae3ef608d7bbeebb2878141aef71de3d0dac3ae26
MD5 1f1fbdf6dddd91f33e22ab18c6d8238b
BLAKE2b-256 38776caffc55a367becaa010986296a4a0f57264bd7903007485da08f3f5e45e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5395517ab2ea9cb97e91834629ac18c5669116e78e38b574180cc0bde1d1211c
MD5 a53595d1f4b59be83ba77d1eff66d17a
BLAKE2b-256 b165cf1ea8090d5743cce968981ce7083236d7aa8555e2982cacb8d2740dce10

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 4d5a3a6e66f976d4dd327e887cb5d36804e6a265ea1ea2d05cc5c0587ced4f1d
MD5 010f8d8663b0d2a174eb5902ebf05068
BLAKE2b-256 7e130bbb6f8f560fd3a055bb622ba7613de2211740cd2c7a2530526bb9ce62a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 779c81c480697becbbe18292b46743fac23467607353cb6410b286a2bf4c3a6c
MD5 6d41944ffa78eef8f2667078c301e6f8
BLAKE2b-256 ff0a57a47954a79b95b84ecf2554e5e75b7b7193f8fe24722d84877e67670532

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 b7e0ccd747a21e5bd3d8e601d4313fc81295f90f396bf3a03b01929561eb2e51
MD5 42d62553fa2a2767c9a16683d4d7853b
BLAKE2b-256 4db8c4689d70a54ed7de10bee69f1414996cd3d43116420d229f84f9bb8d1332

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2d6f3a00cc672c10949fe385150b430a3d4515cc6948b4957bd3c63878a5541a
MD5 81f8f72ff6363bc98850a9779c36bd76
BLAKE2b-256 f3228309a7584419e1bf9314438dfee263eaf7b0d177168701d4b05325631b8f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.10-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.3

File hashes

Hashes for modak-0.3.10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 db0729743ee1bfff40cca17f32f72d1733b4b56408902781e5bae5fb098718f5
MD5 34fbc32748d19daa2a9e565c815c0f6c
BLAKE2b-256 bfabffe13e8304fb3322dbec14fe8c5df0b5a871b26cb850680d6ad8d75a8cd0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.10-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.3

File hashes

Hashes for modak-0.3.10-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 a3b0963804508f2669429b893af7714077ce0eac467247af7aa8110ae61cd282
MD5 d7197b5b1b2a16c2fa7bbe63f05fcf53
BLAKE2b-256 5e5109a965d6e096e78621c5984cd15adcbd57be91a9efcc74d200f89c8112a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bc2aadd26e944f69b17bfbf181912e0170cd404554b4b16d80aae6780a0e844f
MD5 10eba170d9a778ba9c5c6bb16f638232
BLAKE2b-256 1534aea100090da4b647cb3ad1bb3d4460a45323fd0948f23e484180bae711ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 d84353554e605309d1478739cb8869872f278f4f45a058fe37868f805fbc3417
MD5 22271c8ca55d0c1e4ea08a611656e466
BLAKE2b-256 1e3438e32fc0e3d4e919a15f68c5c32190738aef9feed1f7212fa3611c51f6a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 fa3e4cb75b6c78507a09684e7f9f89fdaa308489a0ddc731d391e88b7e801c96
MD5 839f5076e6bdc44ca80e6adddd666ad8
BLAKE2b-256 c26b2a920d325ef550db84b6a6b052d6c0ffff4be980ca58c839632934d897f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1703b093cf121cefe88e6fa0b5c363d614103f2eb0bead94af22c579684c1fbb
MD5 e2d42292fd503b1ed4f3190fd0fdbd9d
BLAKE2b-256 cdfbe3e6eae91a3d494b18be4af91992759f26691253ad5f74aac83429e6f80b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 029ba45d27330169e2cc7129d619ff1b1b8e4c05c49f36dd9f5d83c6134f4dc7
MD5 b76dec1c51999d33a97537b47a510bb8
BLAKE2b-256 25279bc3bba6a7da5582f98fab8fc4fd0590505da69de4866ff421e99ab6dc73

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 18b3299a2c059582f96975926768ce5951864859b773a9b7e3cfc9924745b63b
MD5 576c7d10f30ee270be1728b29aa07176
BLAKE2b-256 00316a95c4ac8df93e7a9487ef90280348774e8a169179c79ad924c97150572a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 a2524ba7b96cf56e5088c31b2c9766876572819b0277a8a5a3b281db5123f5f3
MD5 0844e0878d43a83887cb10eb42646dcb
BLAKE2b-256 9cda38de496245f7ce20028a08617dce9456f75c4b30859352952e51fa7e67e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3dd632aac8cf14ca0919d2af1d20e041168e8a0ce11b8025e8d734eec02e30c0
MD5 943d56784d89bd998b80f2dc79a41ea7
BLAKE2b-256 f7ba5f7e75ce22a000fc96c483239d097ee037896d2364d8483602db0af37fa9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 15801165ebd68f32db961858f5b233477aada024979dc3dd757a5a790b11150b
MD5 e298a01f922fc946e4533343b06cd9b6
BLAKE2b-256 29e23bb2e9fe014c3c006a6d531fabf0ddc30497ba2edae6d74662d68a663748

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d6fc9769f353c29f0c4e6c3b61e0f4a81d4646d1485f808b0f1a0ef289cbe72e
MD5 9a6f15b4766a89e5cf5ad96e51468a01
BLAKE2b-256 015dce8fdf6382337fadab2d21d8fc8923f7a2a491a90f073c52111554335d85

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 da6c0eb9ad8bf955d6c0aa32896726660ec6bc4c52616ccc9221395b0b2b18c0
MD5 0344d5b50efe9924f148d433ec5fedf6
BLAKE2b-256 45ed613fd9fe6fdf0cfd85a29f514fbbe423401111bce8ecf76fb0fb3836e205

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ef13dff2e500aff7c88e9ec16843a51ab46eb240b0c8589794a8c2f3924bf765
MD5 7b85531c3f3b78d4bd77aad81656a2f7
BLAKE2b-256 248f67ba4b289fef2c1c9079cf9a52c545e92833c0245d3ba7106b18530556ee

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.10-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.3

File hashes

Hashes for modak-0.3.10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2d2af70263e859414d0b9e918306927c7260b67df45b6fe972ef33242f8c1af4
MD5 68fe7831b46ca7abe8b1d5e5c173d331
BLAKE2b-256 cf5f27e2e00fb432b8938e6768efb11165abbf80c524b7052130b20b62c5f57e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.10-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.3

File hashes

Hashes for modak-0.3.10-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 9e30fabaf5e555a34f795cf266f4b48b847619754d4c82a5c6514a44ac169bed
MD5 7ddc1dd2d0dc8f2f762eaa791a0b9395
BLAKE2b-256 6f5a60a6276db392f3ada37aca50a3be2c2a8f8adb62bd36e25dce9d2c24d7a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 17b5b617f7e6531a1b5714ce668cc6c4f82c92ad7dd2903cd6dc63ba5ab0aa9d
MD5 8f3ddcb3d88f8706e5efa2e77d74f07a
BLAKE2b-256 154867834c274922aa3c18f2ef44ee40169437563438e408df9451b0ec0307c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f694510d8da3a97697db9d4d11056468a75a4d3c52ec7a709dbfc76b230d7274
MD5 acd1691ece85177af11ce05580e89a49
BLAKE2b-256 6874e1118a199c190b48f8bc124b584cc6d583c4c07c9007ff1edace7636a2b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 3937caa6d7314cc65c8b92b96f7008f625182218172c5813b0de27f7a24cf3ae
MD5 8736623cac207b23c686f75867456e60
BLAKE2b-256 70f89de13b95a23c01eb48e329529e8abbf4f848e0a9fd9e2f2032f7455356a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a2ba35b6d7da59406213284b1cf78ec67d820354c7dee1e913efb80c824cec7a
MD5 b64be78d214d1eaebd84b94cdc8be3e5
BLAKE2b-256 8ad69472add04906caf21b139d9d707cb4027dc6ecb1ed8093f98719c74225f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0093f3bb3070f865bc8f091a162808bce74f04c423fac723e3ba7aef167711ce
MD5 5d0245012d838e977c0dd3a647c45820
BLAKE2b-256 92b20c3a0d4baf05330ab9fbfd1e0ceffe7170bb45d10cea8a02914e3501715f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 bdba0db549a0074a003991c2a9612ed1fe076ade52ab0636824429823e0f0378
MD5 f3d844a911edbb10b96d8088dca76d0a
BLAKE2b-256 9247960bede732bc6e91f3c576d1b6dfb923ca6b748d7da4e1d905f42478e4a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 e45c118aa61ac4e51b321aa4a58f3e570dc111d63ad3145d7b907fd511246c29
MD5 0b66f2edb3ac172a1524817f5ee9ef8b
BLAKE2b-256 1e6bccab0cf45f6c0045a7c261d0efe043e221608ccf54fa3da1240c16c3f67e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ef432dd1879acd4bc05cd61424ea9f88fe60e10bc5f16c7a4c5afa110095bdbd
MD5 40fadaee17ae58b12a97278aa4157912
BLAKE2b-256 bb5a0a24bdba8b6b8cb565d42d25d698f6db81348773da49d2655534b5737216

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 c1572347d401af4aa0da344e7680c6d813b8e2d572e66839b3f48394d46e487f
MD5 e1f6d30f86fd5cb9e68718f243ad32a4
BLAKE2b-256 92ef89c5cab4520257fbc6f91463dd8d8e4f87da0230414de8cd30129a700b5f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6d48f7c1384b58415f6aab36fbbc4ae5828e722b9a39dab3fa79f075974dc027
MD5 87173108708736e3fb0f3cfa1ff11583
BLAKE2b-256 04eb6d371f2f7cee2453e66190f18d021a6137bec731e57ca816e91d6e967f12

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ee1f0f0deff4ecc3803c6001c198eb92c1e7f0bfbcb860c86bf6364d70017f8c
MD5 b93d96fad9254081cf8acdbf6e5dda73
BLAKE2b-256 012dd720be705aabe221a252cdd21d3e3d801fefebc82bf335a9ac84e7257c2a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.10-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ab8d45a37bea83508c36f4aa1de6396a8384654d7bd4d8ce2326488f31394337
MD5 59a3026b153c4767e33d5418196c5d74
BLAKE2b-256 a5ef56ce91a7f64ca777c36812389da371b88ce90c189ddae1c0b1b0a11df629

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