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.3.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.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (418.6 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

modak-0.2.3-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (444.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

modak-0.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl (588.8 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

modak-0.2.3-cp313-cp313t-musllinux_1_2_i686.whl (617.9 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

modak-0.2.3-cp313-cp313t-musllinux_1_2_armv7l.whl (684.4 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

modak-0.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl (587.5 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

modak-0.2.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (468.2 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

modak-0.2.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (540.2 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

modak-0.2.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (423.4 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

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

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.13Windows x86-64

modak-0.2.3-cp313-cp313-win32.whl (273.7 kB view details)

Uploaded CPython 3.13Windows x86

modak-0.2.3-cp313-cp313-musllinux_1_2_x86_64.whl (588.8 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

modak-0.2.3-cp313-cp313-musllinux_1_2_i686.whl (617.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

modak-0.2.3-cp313-cp313-musllinux_1_2_armv7l.whl (684.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

modak-0.2.3-cp313-cp313-musllinux_1_2_aarch64.whl (587.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (418.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

modak-0.2.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (467.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390x

modak-0.2.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (541.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64le

modak-0.2.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (444.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

modak-0.2.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (423.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

modak-0.2.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (409.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

modak-0.2.3-cp313-cp313-macosx_11_0_arm64.whl (369.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

modak-0.2.3-cp313-cp313-macosx_10_12_x86_64.whl (384.9 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

modak-0.2.3-cp312-cp312-win_amd64.whl (285.5 kB view details)

Uploaded CPython 3.12Windows x86-64

modak-0.2.3-cp312-cp312-win32.whl (274.0 kB view details)

Uploaded CPython 3.12Windows x86

modak-0.2.3-cp312-cp312-musllinux_1_2_x86_64.whl (589.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

modak-0.2.3-cp312-cp312-musllinux_1_2_i686.whl (618.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

modak-0.2.3-cp312-cp312-musllinux_1_2_armv7l.whl (685.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

modak-0.2.3-cp312-cp312-musllinux_1_2_aarch64.whl (588.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (419.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

modak-0.2.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (468.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

modak-0.2.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (542.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

modak-0.2.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (444.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

modak-0.2.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (424.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

modak-0.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (410.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

modak-0.2.3-cp312-cp312-macosx_11_0_arm64.whl (369.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.2.3-cp312-cp312-macosx_10_12_x86_64.whl (385.1 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: modak-0.2.3.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.3.tar.gz
Algorithm Hash digest
SHA256 1901db00447cb40601e4f4c4fba21c9ef54a52ba19fe54f7b0049841eea38726
MD5 04e0c65e806be8990c3054bcaa79ec11
BLAKE2b-256 c161d47cdc90d38f28068c6822b2a3ea3cec63fa3cee0850d9f2adcfaa02c642

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 49d74e009d98776f4532f08685795d5ea7e951f77517d91f43527c933f79bb92
MD5 047a6ea7e5a66cf6f94c2e6a0fe68e8d
BLAKE2b-256 6a48a1837bd5d27359f82101579d57a7313dd9669f062be5ec3afdcaa8af7a18

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 26114e1e58f02ddf4f17678adc9214ed9e5f421d2bc1f3f7267f56265d2ccf05
MD5 b71f0f62a61ede953596a1a715db5076
BLAKE2b-256 84ad13642a6f39474e5afdcba0f0cab5cc3beeff1e8b91717f9de750882e8291

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 703a5657e462d89626dfbdea49b295054308c6b76fd1c30a5d6dca9cc6ca0a36
MD5 2309af8c1de23c6135f29ddb081b7990
BLAKE2b-256 a5f72f02079f8b15e84f2589611c55746f3c6ebdde5b124319480f4f284f89a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 df41fbdd48b550dea7a2d366bc51024cefddf9e297a0d053cd17758910675951
MD5 c7ecf53ce8e124c55c4d86a2636f930e
BLAKE2b-256 aebcc5bcc61e2817cfcef1e5edeccef5a850d652110b26defc656018f05233a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 3607b0e3a846335aa6e9e6b9b720e237503349dc630d88ead46945e677b92e4a
MD5 96ac3252d193cdf08968004b8deffae7
BLAKE2b-256 93c663db05294a2e897792e03296b0081e8c9ad0759311da6f8ff88a124915d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5fad61052e762a152765fdc12335a367610b24403bdb1b4aad982d8bd53485a1
MD5 69a114bab3f4caf3acb107ef220142c7
BLAKE2b-256 00722e4c3e947b0f83018e1d395326df8adbdc50e1d5de9adda4f47e9503de04

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 de74ca835e20ee02dc02489310258536fdc5a63401cb8a12038fd963a1e8c442
MD5 6137eca448843729932d2bcac853447c
BLAKE2b-256 a1c4a51942d832b0473c648cc7c619337c1d1897e5ffeeebc1ab0420c56d5841

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 4cdd9e8c8a5a7b230f27dbeb4ed552d1e76d447e60e9197ec978aa621202641f
MD5 bfb0a11c21fd33580ff9edd84758f011
BLAKE2b-256 4e7f140ef7e9b26912b4083c8397832624eb646cdf92e391cfbb28694c5700e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 ac69069f73d692f0d4ba04ce242553b32bd4bf606c6b385c201771180f424632
MD5 af5ffb002433c7dd5fe8ed07c7c6ee3f
BLAKE2b-256 7e48684eea1cf2001aef81c0f6f47479cec3ff0bf81a6c10af85041395478e04

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9b88a8fe518d5e3b944fbd330ed29c684139789ce4b8cb755aa84be25a341d95
MD5 1dddbb6c89b737ed02ed7784dd56271d
BLAKE2b-256 20bb7b5f62f6e649bd359af4899d756230e55891b3b7f9da380509da181c8915

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.3-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.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8b7769aed2b0ceeaf76ba6902e08f5074ff94b183b7b3d26635ab1b183614053
MD5 40a016d7f8126e0cb6ca3e3525e2df92
BLAKE2b-256 c7c73a02d8027658a00b7e38bcc974eae7f5c7564034ff4e21ab5c431d3a69e2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.3-cp313-cp313-win32.whl
  • Upload date:
  • Size: 273.7 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.3-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 a4ca012a433f76091b4be5409b6f55d04bed2e1bb10db621641b84c79d44b595
MD5 419e1b3da2b757ded0ce96859819da0f
BLAKE2b-256 836947a813b42e9e5e702887388f5c2f61d66e9f9b6e4511fa74fd216551819a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 af89e5d7e1f0503ab87e5d3201a78bb2007b560e0cf79f8b564de7d69c8bbcd5
MD5 69931e4e4c745db5d72debd1a11e69c7
BLAKE2b-256 e8e15c9ed94207c3b1bcfe33f8bbfd617ae7883a8960abacc337bf862192c5d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 fd6eccd504422a92c00c56a0ba94b7feca34ee90ae1b2ab91fbb6eb170435c1b
MD5 3c90a31b8685245d65ab9405185e5188
BLAKE2b-256 0977c37a5a510f163d210b4a2d1048c8a7b4a7adefe8b98945683ad0a2650794

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 2731a5bc64ee9992a9ea267d5b7fe7d370f82b7a36776a579abd0eb95831c7d8
MD5 1495e86e26578e334e9bf0106a2b6fe5
BLAKE2b-256 b6eaefc12af8b50c303d962d0ddcb4fb42e3bdf836844a26f89ba48dcbf0c75c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3f9e9e97797319673ff62aadbc322f6beec97aacad44d2f415cf6ace8615ce83
MD5 9993e786568ef847db8441f0d4d02132
BLAKE2b-256 ced1ae9f222a899356a71044f73481157b8971d01f93843d6ad0c40e9b5be479

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 03082d26c2ff4486172aeb8c75913926720f9b24af218afc7d94202e187c109a
MD5 22576e6548d5592780232af5f7cbb43e
BLAKE2b-256 b3012325abe6ef24adf01bdeb663cfa4f6f60d228753ce485f7f6f2d8e4eb283

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 cc7d672049382b4266f9632b1e30883e6ff02a4b729eb7c396005841b5e3496f
MD5 d1a0c85c695ccbe0f93f95c4cc3462aa
BLAKE2b-256 22703f148b97df2ffe3a1c99d2a298a6ba47a8033c5d7712c314ab01c4ed0c04

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 85b4fe3e615b445b9c480db5b53b96f12294149fd6c18e0f7227e03e8a79c0a3
MD5 1cc801973183ee6a855becc21b7a766f
BLAKE2b-256 aa650dda86b9db8afc9dd5ff135e5430557f33bea0fe288ab3e6084e2c5bd5cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8e30e2d16d9cb161aa1e32d1f35ed93e9f4b6d80944adf93aa47ca9d4bced562
MD5 a3ea568065df8c89ff9cbb75cff65bb3
BLAKE2b-256 3806b1f3d2393851ee42ca6539ce569bcf0597f5814831eebd93928593651fc0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 5e133d904acbbee49d7ac28c41376e3528eb15db3a0e6441dfb2c510940752ce
MD5 898e9296b9230b10aeefeb2041c081a8
BLAKE2b-256 a77dbfec6177715acf47f8b03230f8187b58d053b063dc76338a1fa048b5b573

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 891f1559998f4e2489cd283fb08e9cd99e288fa1d27e9f63df437829bacf946a
MD5 9f6cd792fa9101a2fc07ba58d471d7c4
BLAKE2b-256 23bd9a88418a7b8f5f84a694bcb1f7ddcb7d02876d3b4d48d55ce41239a80153

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 39c17cdda453d6003bac5b428d090b67751cc049db6d44a028d56f30f30270bb
MD5 4f9c3146d1fa9666f38085f107f688a4
BLAKE2b-256 01fdd3ee3572245daa0b987795fa25e02c394be628f9d78c2371d452bcf01e91

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7970f26b3cc189498c0b66ac30e2bb127d40602da932366ae468af86b2c0d1ff
MD5 976db39dad16d89804753c3f0165e8c2
BLAKE2b-256 122cd93eeffedb65d6a559b5cc2e732154fd4ecaccd188b251cb74883a80e2b6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 285.5 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.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b5cb3bd6ceed64842d6f0b3698e77c55726eb07733ce01d13a9384ae83d7046d
MD5 1ed62bbb54dc844e2644582eaf5a409a
BLAKE2b-256 5174852b5e01f5a9afd6fcdebcc905c7a7249bf864a9d7250e4be09e7981439a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.3-cp312-cp312-win32.whl
  • Upload date:
  • Size: 274.0 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.3-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 2397f93b40f459664c6fa449b06cead1206e04d6538c3399b95f5e9dde5298a8
MD5 c17ced23e28be480f5ac7893e4910777
BLAKE2b-256 b9900f79390f3fec074ff33edc85c52fcbedb78209276ec72009f546118baed3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 386a3680a94b4d44b9046c1742dd1607202dc87c539a45810f297ac9c87dd7dd
MD5 31b31fff60289a0be43b79a70c87f2d2
BLAKE2b-256 f7d44b80837016e1bd7bc75beeeb1cef4127dac3d88892d55fe589314f4b210f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 4b5737ac6fb371746009677359ed25b28a6fea8a9f52c497e2c5f9c247ac9313
MD5 d04db07de6d14a64c6d931c741ee3332
BLAKE2b-256 422abd7cfe0e530b26a079f0b7d4a4e33164504478bb86ca897bb4586711c243

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 2dd9c267451476478749fe10ab36fd0fa2dd9190fbd5c0da58453a1b2e06df44
MD5 2f9f96a56e03b90c7d46e8ae130c76a2
BLAKE2b-256 bce8a881ac4fb1306bdacdade52dec9f7e7050bb21b8b7982f7f56dc71e6504e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5c1daed493f252bbcccf840a0551c435f0a67c7dc91deb682b62ee3dd08cfc6a
MD5 d04903525a633b8789cbe6c054a72f23
BLAKE2b-256 b9b8d1e345bcd24f1d86f9b78b3d73fd275a51ad8da312a57f530c3404bd2752

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4c01eff7fce8b4f82ce0a0a18214badaced04f59a485737e9b7ee441ee713261
MD5 482a8738180a9aecf617228bea7feac5
BLAKE2b-256 f2c0d1b4fcf0ddb56b589eadfb1f9ee65b8d991c362afd4f00a310678c57f44e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 54bfc0badc44b09e39992dc4762e1e0fed30209f3e946b074791479558a06c1d
MD5 12a9a6602550874fc4dc5cc6b3a0c57d
BLAKE2b-256 2a160579c057a776f85af6eda8d6eb0e7ce4a9e4aad6ce780790fde12420bfd4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 d785952cd5dc67ce52f3e379281579354650aea2e96d0d40901ad3736a17586c
MD5 7ab73bc9c5904910c5fb755d19a7b08f
BLAKE2b-256 b6f2941957f537678b5aff8f81b1c3e0db998e206fb2a622d2635d4626afd6d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 579aaa0079c7c2ef9703bbf7455f12c12c02964dc32eda2614ff8cbd45ec6ebf
MD5 e0f53c0f7c0303207c45b05eea4ecfe2
BLAKE2b-256 bf39e84b8eea9aca36681181e2ed3a338400ba4293765eb37ba39233c0c2c8b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 a95033f55a6c645b05815b2d62392fbb273964022a194225ae2f3aa2103f3c67
MD5 f8e7a14f832395717dc7985df989d7b9
BLAKE2b-256 2da67ed35c957d1eb7d43f92129bd33c4f601810fbfe1522c28f8e59dc5caa1a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7d2eaa8d08eff9819a22fb3100a75b66f5470aaacd48e4f342fff558b9667cdc
MD5 ffedeed73438aee5ec10e56a3d8787da
BLAKE2b-256 84a46a05b56f418fd845df1ac4a1fe4006193be0097b3a011252bcee2a26ff41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 21b09a9bf2c6830fee5880b8b103a772b46ee96c978ef0dcbd73a5dde9583635
MD5 3de77dae5386a7918ad895fa6344de33
BLAKE2b-256 b974cf1a7c463a7d2338c00622339ee597efa4fd3aa5e6b7589882236837176b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.3-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 cdb8abe7820c4adcd3e7a630f4b43690c1e48106dd7af68045d5f545d8c2a7b5
MD5 3a3b68c0a1d9100602c9f75421e3e9d9
BLAKE2b-256 98a1ba16877842fd161f462d51ec0c72c7dd8325794f38f2a50ce057378a9d4b

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