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.1.tar.gz (33.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.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (417.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

modak-0.2.1-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (443.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

modak-0.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl (588.0 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

modak-0.2.1-cp313-cp313t-musllinux_1_2_i686.whl (617.2 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

modak-0.2.1-cp313-cp313t-musllinux_1_2_armv7l.whl (683.5 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

modak-0.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl (586.4 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

modak-0.2.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (466.4 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

modak-0.2.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (539.4 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

modak-0.2.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (422.8 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

modak-0.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (408.0 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

modak-0.2.1-cp313-cp313-win_amd64.whl (285.1 kB view details)

Uploaded CPython 3.13Windows x86-64

modak-0.2.1-cp313-cp313-win32.whl (273.3 kB view details)

Uploaded CPython 3.13Windows x86

modak-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl (588.0 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

modak-0.2.1-cp313-cp313-musllinux_1_2_i686.whl (616.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

modak-0.2.1-cp313-cp313-musllinux_1_2_armv7l.whl (683.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

modak-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl (587.6 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (417.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

modak-0.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (466.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390x

modak-0.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (540.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64le

modak-0.2.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (443.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

modak-0.2.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (423.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

modak-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (409.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

modak-0.2.1-cp313-cp313-macosx_11_0_arm64.whl (368.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

modak-0.2.1-cp313-cp313-macosx_10_12_x86_64.whl (384.0 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

modak-0.2.1-cp312-cp312-win_amd64.whl (285.8 kB view details)

Uploaded CPython 3.12Windows x86-64

modak-0.2.1-cp312-cp312-win32.whl (273.5 kB view details)

Uploaded CPython 3.12Windows x86

modak-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl (588.6 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

modak-0.2.1-cp312-cp312-musllinux_1_2_i686.whl (617.1 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

modak-0.2.1-cp312-cp312-musllinux_1_2_armv7l.whl (684.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

modak-0.2.1-cp312-cp312-musllinux_1_2_aarch64.whl (588.1 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (418.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

modak-0.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (467.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

modak-0.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (541.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

modak-0.2.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (443.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

modak-0.2.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (423.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

modak-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (409.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

modak-0.2.1-cp312-cp312-macosx_11_0_arm64.whl (368.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.2.1-cp312-cp312-macosx_10_12_x86_64.whl (384.1 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for modak-0.2.1.tar.gz
Algorithm Hash digest
SHA256 a1865bc43b3a43f53cb540c0de8f36f4be64f4b12493993548824b45d5efd53b
MD5 a17c338ffdacdd8d3f4c8a442a7de008
BLAKE2b-256 26a50e5a218f21f41d3f08977889919e51b0fb9e122996cc3264419923ce5338

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e34e4f59156114bd749e062cdac7ee4edef9b37b402e879687b0b7d472e60ab9
MD5 1db8d9a6c44a1a2c9869b876edad6c81
BLAKE2b-256 d02424bb3df355f453fd01df19481d8d4077e5fff214acbe2bc8d49f4db2c787

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4ab6184008397ce7c5ce5752dee44c9ce7f00ec723a2dc65f33c94ea21baa05f
MD5 a705b7354829f5b44b85aadf214ff3d8
BLAKE2b-256 6407fe072a8fd649f24d9635a0d32ff48ea1f8ae76410c2725f79e23461b3f08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 151cae32c3393f36be9a8271b1cda675d2f141b2863fd125dd8b00cb7b6690cc
MD5 56a1562b3ac3b45430193ed3688b42c3
BLAKE2b-256 b695c78c3557fc13d5816f5d479e0bb91828deef68808bc4b62222d45a091932

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 05b73efc3de1de1e047531462a3ac0c75a89229e426865721e120d2da7274e98
MD5 27756274747c259419e876fa26c376f2
BLAKE2b-256 fe969027f461c2d8d75b1bf876e708c243b6e2b1511a3f93af97ea3fe6ec52b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 d7a7bed5920b8406023ee7fa0fb42d179b290affa97ac0426d8744b7f99dc46d
MD5 98b9864cc011f92145df437f18a50620
BLAKE2b-256 e28a0f9d7a17d38366a045620d01a4e524f1b3d8bf86e5688709ea8fdc6e80ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 03bdb9fd9fc2fef7aacda3eb4e1ba18b488d9e75447021a77b50c252c0e9685d
MD5 d405658bbd1b429becbefa15b37457af
BLAKE2b-256 f5235c57ed5919258ba944679e000e2173192604b992d9ddfd24951f9cb06687

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 9687ccf15b603c1b35bf5ef3ca3940639e1d4e7459ded15ceafb371a33fa8dfc
MD5 3c9f91a97fc70060934d715b50ee094b
BLAKE2b-256 9c4b604db0641283cc93c47724a5ee48ada0a35da9989ca25d800608215349e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 7c71dd780c435ba2b2f8a6fcb2658b8b6ccf34ab08738528904adb0c572e7060
MD5 68a78ff8b6a3e9c1df6a847101c26ac4
BLAKE2b-256 b0feaa66f80219b1c0b2447bd5ddc3f487c1eeecc9c219e50d55e0b808804a28

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 e79b033e6a6e7bd47ca15257c0475e592c5e4cd0141a4a5caa33c087548f447d
MD5 19801bc18e3e97383cde7a9235e35617
BLAKE2b-256 b21ad9b6fb5634f69566a44f7a2c3985e509560045c9b3fb69a04e16ebe824d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b34cffe897af8d2c86e6b2f2dbb9dabcfbf0ae6f9f1bb36939bbc82f3811dcaf
MD5 72f48a7c92b3918b07296507b284a7ce
BLAKE2b-256 19d5838dadc8188097d8793f93e484ecb4338d761ef8683d7be19ad1962dcf10

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 285.1 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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1134ac26892c394c4563d599d721912100826ef92f626f9453faf01e9e083560
MD5 480a826d32d9768870ef7038fe00668d
BLAKE2b-256 74b67a6199494387aca4da49cd4df3bdedefac6fe248dd458028f527b6b8cf39

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.1-cp313-cp313-win32.whl
  • Upload date:
  • Size: 273.3 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.1-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 dca96244bb6cc6328e91e923a8820dc3df599dbd480607e5eff9bedadba40faf
MD5 f479caec7f1f127ad9d5b775609b16b4
BLAKE2b-256 063f96bd9bc407a1a4b3133902758052e29d45f5b1a998433001a796ba7b5ef6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3190c6c932d741b4de5a61585e283e4bcd25f81e72957e3006a8c08af40bd533
MD5 5a687772b5f192ad28f3e236491b8677
BLAKE2b-256 8d9c53e5dd4f5d66bf9c941945166dae0c3e7e24c956fd479a2b83a8eb14a8d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 01488cd1e3adc60afbed9751ea0a7d48be18da0ae9ac9b004f1be01c6dc48b19
MD5 e3d9ff773b8633a38453cd62272d4e32
BLAKE2b-256 d61b8f2ef3e52f15c8d1fc21a30f98c8ca3d3acfb1dd6e3b89861d21b96d2288

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 a47ae9a278c6a04042489d4c0ed333fc5257909c66bc14e0f6187a13dfa26970
MD5 bd34da11b88139a9327bcfac40c10730
BLAKE2b-256 dffc2344e312d0a4a7dbb9656d79b0c9cec82077fb824f26eb21a178985d6c60

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f993a29713faeb4db72290913ca89b4563d754a9431b27b1e98f450ba9b2354a
MD5 db28fb738f3e0d1cb17c7368970daace
BLAKE2b-256 cab74fb97cfb9d9405f80432f51bad7b8f24b7484b85fdf94714e65cb1ff8a2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cfefe3210753aa436b2b244e0bc2b02a040df92b1bb9e545f06d893d16707bf5
MD5 f29168fe57bd2e83b3122db78e083c65
BLAKE2b-256 adfc56724773b6f26dcecacfd9b7db6310753c5d90fe84c762e05ebc615dc562

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 d8d382afb97862a19ab46e5ea444ccae105da25b3c81896d661463c2c1d05cdd
MD5 7e13a9566a17804235c2020827ca06d4
BLAKE2b-256 2f1d65b76d34356ac375e5935f7f2ff737dfe9cd93975d42a20aae72292f7b9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 1ae16b30338869eb5ce74c8906e37c8474b7c5f7b20fe35b5829f4d1891e03c0
MD5 8178a49b8fef544cd6a50f24ba0508b6
BLAKE2b-256 9c63a190631847d0468c760e0688fd27ac942a42063f69ecf63633387b5521d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1c9454c4a11be779888707cbb33dcc7618a2f4881462ae73e6cd49e9fcce87a9
MD5 dcb3e60b8233d46beb155cedcc6101c1
BLAKE2b-256 7cbf8e5f7387578aedf064e97b139bd75e79a0e2c0c69608caa07d43c23074e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 73b9bf0cd0927e5847a3d0f45ec1efedf08751eedc741b53b9967fb9843a6132
MD5 d8eb49fa4d0ed7d63721e3b574bf518e
BLAKE2b-256 2b8005ee2913b5d2be27b065ce5847e19017d48bf2ce21072558d83f26fab495

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f217345496deff73172c9a63bc196d0acd3b087fb6e6c87b8b9306b2e811da57
MD5 027b19c4976bf9fe72c70a76e696ca49
BLAKE2b-256 3e02ad3ed31ecf64f7c0b2d9bd572114882c570708744400dfbe2c00a69fee26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 034951bf68a433d01aeb4d34c4a41aa18b6721ba7a2d5fcb0d869e26d7bad875
MD5 53af1e6f1661f37d00f51031c29e1818
BLAKE2b-256 265058e4d760c147105360b5ece9c555c113320ed86bbc9e4df701f613f2cf98

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 aa9f730faff2a0bbcb86a3f76f23df6aff8115771d69a2b24b949f4c53250df7
MD5 13ff31535237fcbcc32d48cab7f5eb9d
BLAKE2b-256 d442b063a7638441c6d2e9537a4b848f55defeaafa8f5faa96dce1cc5d9568af

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 285.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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a17ff5a31626565a23851e12a4eeaaba79e10415aee7e6142373c47a0c4662d1
MD5 10605d111f5c64d8fedc34110f26dcfb
BLAKE2b-256 37a7847c7ace91cf7db17c01a5f77b9128fa45515ad9b969db7143f057e5b524

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.1-cp312-cp312-win32.whl
  • Upload date:
  • Size: 273.5 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.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 2e7b11315aafe003361538598e045bb945dad3a9d2c07ce9f5479d6ee116b5a6
MD5 b969803c5efde700c0a1b7b0a0a3ebb5
BLAKE2b-256 72794ea1b2bcf3eb98250bd91824c6a3fc7ad3d5f53a1dcb0ef6554841ab285a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 35a226b0ac8adb70996d4c0d3eef3a8263d46003ca9c676cd94c00e18212ef18
MD5 cd5e777835ddf563ec8bfdeb151eb8fd
BLAKE2b-256 feb33bee515563a6678074d20743b9697185d12b24f33b87abccd180a1e27ef0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 d94c17ec90e97ca4fc9950e57b443569a0dc238ca8cfb7ab76d65700abaa0202
MD5 6f35f1c15e3d0a2a04b9d1104181d3dc
BLAKE2b-256 fff315bec1d8ea914f420b3048678957ff0702fcfea97c5803f2df00cf166896

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 490d972c1d88615909009df2f2d53572ec61e3c6943b529dc5b4187133240e84
MD5 3b839b89c705d315900a7551c0b3817f
BLAKE2b-256 cd57014dc330d567f4679ac2af6ce485de708a5a3821c8226f1061617b4ebda5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 07288bb2103b4ace911153c444baa581c3b7dde096f2edd0472953af83783b11
MD5 86c539860ae0d4e3bba2f9061a9c8867
BLAKE2b-256 1a45cfefe50939441470b9e315fa16e34e655a3afac54a37b8405c4df203fc70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ddc612622484f82da2c2586df24442513c21a46fcc5db2b0d8cb779f464ccac4
MD5 7f40e33b112bcb1a9f1e080ef536dcd8
BLAKE2b-256 23a4b753f99f4c1304e5f2f1e7ebcd16c9c404c0e56ad67986e600415f401aeb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 2e93c368ec4c83b55a2805f294d6eeac335432a4c158af4e1373bceeb53a1a90
MD5 60594433e7113f73afed6efaf7b9a142
BLAKE2b-256 a5a9683c28e41f552e622fae8044818096f7e0a639fd95ef3bbec6ec874ef093

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 d55bda1ed739596ae1cf3ebf54b116b1614874bfbc43e033e2242c49c2bcdb90
MD5 17424549b12b2cf15b6ba227e4e1578c
BLAKE2b-256 e414d1d785a81f926f0938576d06de53006ee9def084c4378c3e4cf7a20b7fea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5d65050628469caaac2668e860f99054b1cd59fb08efb898599515ec3878d06b
MD5 37fd9af9bec701bafe96a17cd6f33e8e
BLAKE2b-256 0c6041c18dfc7fcd5f9f77eeb109629e4a7278387c5042a2be921580d97ee783

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 a440f3cd7f9e802e11e7bb7c6f02071b05a36f2b1bfb3af195b972460bfc83ae
MD5 9e48a5204d250eb442b0089edf4f5b38
BLAKE2b-256 7706f0b79b524a6c8065288c067dd3af81bff28fbc17c46ff6652fce0ae5d3b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 14359dd69030dc89b3a64c33da1055d15ce010416d0f958506ffccb6bf948d83
MD5 5449d49d82f00747a4521bf790a8a15f
BLAKE2b-256 19ce7b0511a565ea13660352a05887fbdb184126732f2810d9f90a0ea288bd3b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 82610e280bb4b8ca6408d2f7ef2a469e28de8d52e8a938a2743189e195a87d9e
MD5 0c6515fdc6d905319978d039398f1a05
BLAKE2b-256 d58cf3e7ac0a9b3fe446c15f41d4bb23484ccd4c3388030798c6f461b9552d7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 385e893b4edc3f583cada48060df3b2c008c4e252e29be490f638c73c3d339a7
MD5 f9183c82395596f10bb47bab3083e3c0
BLAKE2b-256 cf10ae42acbd70ed6c2c27f1744c42d24c7ba23e75cf0e6302ee0d17adf2b480

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