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.3.tar.gz (42.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.3.3-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.3-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.3-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.3-cp313-cp313t-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13Windows x86

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

Uploaded CPython 3.13musllinux: musl 1.2+ i686

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12Windows x86

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

Uploaded CPython 3.12musllinux: musl 1.2+ i686

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.3.3-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.3.tar.gz.

File metadata

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

File hashes

Hashes for modak-0.3.3.tar.gz
Algorithm Hash digest
SHA256 ee75abafc67f63881fa04868cd4b70ae3834c4613a5bf698486c4175aba0f605
MD5 12197e9b8654623e708f4cc748c4f2f2
BLAKE2b-256 e5a18cad2fb6c9f9b1bbeb13efc13334453bb739ff325dfc74e34072e1cd41d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aa5951dd978bcc863c62362f04ee33c5941c996f272c6ea4ac5c64ee809f19aa
MD5 d90018e97901d412445120b479f2558e
BLAKE2b-256 aad6a7f2862df586ad4672006663417af11b6e2e20fe4d5bf7f5863249093c40

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e78304d5980464fdc846f77fec619e9006674bfad3c244ad92e3af3a8e1d37fd
MD5 75d4248095a1b9d7dd1ceb09dd6cce04
BLAKE2b-256 5927b94a4383ab91ec909aeaeb69547d5427ff7ec28e0d24ddf32ad8d6c05e1a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6a9e7c180e0bfb43ae2f0c9bcd85ce01dbae71f9b35bf96f0d841e82871d63a2
MD5 27458f5c5e1387268645eb2a367a4b16
BLAKE2b-256 009129029c6b5bf3f103edc2104b650674c69adfb1ca0126e3e3ae59da5d76e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 16a972d4ec6b03badaf16535182517d46a9dec34a20734167ed835c2b9c27a09
MD5 ac9bfea17f9b5393eff10483a879d418
BLAKE2b-256 6cf673014701d5580e843d994f9797b0dd38ac563d28f997c4d6ad71a592053a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 49bec9980f5b63959603880730df1d85558bc8f6e1fa13985f4b55b2ae9a6261
MD5 d42cecc7cd62921f0cca9d723cba9fae
BLAKE2b-256 7c963cde9dbc0b299d8208cb3d63e780ddcb1d81d8dfb6ac62e501287c35a0d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 cd51ec6fffc742e23b89492ee564092810714c95f49d7d86dc3c23c7ab3de69d
MD5 6ec0f6466bba5da783c259a51640c2bb
BLAKE2b-256 e41698283ac1c8ea62910ea6e736b44a294cb1a552eb05c9756a0534e4923670

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 0e578fc433e7d1f03ba166de547742a2c48682426dc6f2f7c8ee163ba368deb4
MD5 065d50130dc2b2d31344a59620e651d4
BLAKE2b-256 f7201a3dccfe4675f5a7eaae1a285e5c4c9dd0177b850098f576e54149fbc3b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 04b14cca73e6725e6806f74ece4d99e0b6b36b2cb2ef146ec64cee5815b8a3b7
MD5 548813fb9a0a7689f5212afd08d44e3b
BLAKE2b-256 e0caec2fdcb858b9f8ac84fcb0229f1e3fc4356432c0752b799a747a3811e513

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 563bb46135a8925b5cc9d5f52ce1b3d58166a03b59ed5a621b48db4485628c13
MD5 b97ebde4e27811a8077f432fb7482807
BLAKE2b-256 3560f55813d873ef02adb9fa54692f6d71cb687999eb4f391e50d821e1cdc209

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8b7e8ef5ee8d52d5c43bab1b9298a2b2ec574464649b208dddd6ff6a3af77bc1
MD5 72c68021ddfab08aea06fd996363587b
BLAKE2b-256 2bbf5a37ab0928bf3fec033e9a08124dfec2af8f43d2471c2a81dcbbc40538e2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.3-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.1

File hashes

Hashes for modak-0.3.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d95ac0bdc12a2a9bdc68f07be1f93e4d91d1f33fea8ab75379442e1ff75b4618
MD5 9f9bc559fccc52ac2d332ce470a7ca1e
BLAKE2b-256 6fcaa32ce0d6557fdb35c7649ad418ad17394518a2b7a286d1e9090d4e2b89c5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.3-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.1

File hashes

Hashes for modak-0.3.3-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 a91337ed29b4d69539337566d14280f2ef99968a75e8b1366305a25f7dcec016
MD5 35c122ce0ca824c8a5e07bce3568bc02
BLAKE2b-256 fc8ff8d462e1de55d87027cd847c7e005d414bc4ed626aa914330fea21b73500

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2684d07e8f9d6d316a230494c04d6163dfd5c44933b0ea2737b43dba396721be
MD5 cbb1ac649d59299f13ec047de5299e8b
BLAKE2b-256 eb4d8f287f79f00558b4d4c423cee8b74e4d04842a4d6d816ddcea126e152410

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f939d06d5d82381bafe951f983e54c3f655e4e91e49d3e2f68391ece7fe25598
MD5 c9bbb2810b4a0b07959d15f9e45ba1ac
BLAKE2b-256 f6ac627ef7ac11c2d1c0d43b2f305b0d0b8fb06757fe8a6a478c669e5b5eb181

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 b55f7f7289ee275231c2c987fa17815f80c975fc6ba927cc73b8894f29b1a6a9
MD5 8db0b90c323769b23be062f33549a197
BLAKE2b-256 72b29079ad3b59643c6d986bff55cadc089ecf90c3a3d6ada5f2388b78d887ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bbf98df47b8064416215fd3ea5e302fe82a8f6f432ca8747b0fc9361ea6532c0
MD5 55560190a1b2484f4259296673258ec9
BLAKE2b-256 1c06c943c1dfff9339a4feb7c005b8453aed9979c362cbf0a97fc7103ae4c9b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d6d0d6937df2b97abf2b6677a2dfbce3e3ffc9caa0d8a49e90a6f8794b14e206
MD5 6ef6267e707edd294a103e528928303d
BLAKE2b-256 f145b364434cf634fb7f4d62cd2abd96803f28b4d1ba144c532ab6a252c70171

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 c6a25dc4b8360c53b49f386b693282b7dccdffa1532a2ceb5baadc57682a570a
MD5 a15157426474f35ebba920ddaa4c10c8
BLAKE2b-256 ec2a45ed99c3cfb40fde4e927f96272bb1222a9eca3790e361aae0c2e0f7b645

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 1c9e9b7f84f8b8d2f8d3196914bdc0f8ebe90ea6c931a6fc68dd8f46649aa033
MD5 cc34e590a97b0e7f703313f7e0ad445d
BLAKE2b-256 0212da80b4a202baaeb7b0a90a406e3e8e12891c6ec4818522fdb608757ab705

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b3ee208c4b7bc2d768746b557f930b236efd4a4eab44e63b571c6f9ab35beb88
MD5 bef5002d2529380649eb0fe4fbeb01be
BLAKE2b-256 90a2cf92617ef1ff052f5bf900f4fe83aa082ec47542265b198012c76d755647

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 891b9d57a22f55fde39545cd9b948bc70bf0b8bb33b46e6c85055bce6753bc21
MD5 1d82577539679c094ac2d249adfe75c9
BLAKE2b-256 97a526e778178bc2f7302df941fdda8bd9b683e9664e9d777dc7326ebeff7c5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5069b875796c5207d4ed2539fafcb66f19be63987703cd7470193f57aeaadf77
MD5 f9e00f8ad47d62b4149e8f6304aa4ca2
BLAKE2b-256 1c2d49aaee0c8df7553c94043dfeb879feadca695acb585e1e8c6dd36bd8c5a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 405210a32b0946eaed0214c54f243df59b49741065540f97581cd42f9efe34cf
MD5 2899f7e4912206746f132b1a18968d4a
BLAKE2b-256 07db6128d18389f761f534809a87d0242c6f2163be4bdcb985c14b03e516eb81

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8550a55f6f1e0f2652e520bcd6891df4aec67a8fbf4c34d48fcdd9c012a71e6c
MD5 e16e5b2ce7e4fbd22f6b87cf75adff0a
BLAKE2b-256 5f7d8cf44d3e72d56cf5d0b91a6b96cdfb5f451d2f1cbcd6290188cc91120f8d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.3-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.1

File hashes

Hashes for modak-0.3.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4cfe7b495ace18a60b3266627db057c4535df3bb12e7274e9881e437ab742603
MD5 fb12615966f3b9b2c155b7f998db7d55
BLAKE2b-256 33790eb8fb5d61d50f94430a03f00a7b08b75f9b1a9c4a4f7e7d21885dca177a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.3-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.1

File hashes

Hashes for modak-0.3.3-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 0e8b8d441492cb7c160014b35ea440270886eec8d59a3b0ccf4770a065e51011
MD5 1764cbc7d1c185c7b3c6b6a89be8e502
BLAKE2b-256 1c5b7cc3d734914ca1dd054c0af4e19c8e6555054e67617397e839fb77fb3fe1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c358624ec0593500c687d194c4e873af7996068a150e8e91a423bbb1c40304f4
MD5 d81b77daaa99c7a69d823619304fce8a
BLAKE2b-256 8789f2a420c0c4e9f5f102f6b8d6d7fd76fadd74cdf492652044cd29538260ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f3c24f31aba9242869897582a6137cec15d446c6317e5668d48d03a67d1347de
MD5 31b9eca2afa5d81e109d991f98b3d780
BLAKE2b-256 070586a34f6695e83dc41d5c8dce1e111e30f3962dbe9934d9179921800ef92a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 1e39c91fb3a527e49e37c83ad056a89619d42f78e87e81a4b31641eb6c99d5bf
MD5 21e2caf477e62037513fa34304e5abc0
BLAKE2b-256 2388d80809a463dccf4915c2b722fe293adac665c8abe1555f2fd2eae9a867b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 99c34a72cb0d7702371580ae295c691a8bf29096c9c496f3dc0d9c1d06d22883
MD5 2d7bf211c17aab848410dc87ab68b682
BLAKE2b-256 5cd9062a4e7bb6735417be872f81571736a0414beefa1d161307c880a07e01b7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d14c8fc336c5db9bf0cefd66e6efb0cf9dd598e90f1a4239f51e97333a999299
MD5 0424b14e9e426a255a6aac5dd39974fb
BLAKE2b-256 05b53a3b8fa33652ab33f35552cdc96337c91771292014c12cf5ad78a5ebce6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 92e692817ccb55bb47c4407de1b95859d206d60b7ef6a8f2bb077006a78e2dbd
MD5 9422e65aad174f54017227712c0b57c8
BLAKE2b-256 9d111970bda4bfeb8f061fffe1c617626f94fb091e970487f15b59bbf8332097

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 632f09cededc03ce05c89a67174cb75c63767a222423c6b3fed158d83d214988
MD5 65fa40aac147e19f6ea64cebfe0c2c76
BLAKE2b-256 6f557f92707ea4257305123c9ccb1bd0d3185c520cf8f2568745948e29c4b2c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0e744b14c5a7f8df26982aa78d50464ece502df769c5a73d89771cc5cb5423c1
MD5 579d185b342a4a747c371e6202c11d1e
BLAKE2b-256 2a6a7c5099945530cbfdba064a699bf9d0f1b51fa03d365dbb268ea6a454dc05

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 aca9a22714c8d28b6309e42cc30fafc39504734b0ee3ecb7a8e60b15468ba8d3
MD5 303a4592003f7966072f92bbd7538f22
BLAKE2b-256 54fb0d5e619402a1012ef022f564849e8faa2d7dfaabca761af08724a9efc32e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d5f13bb1aee6ba41b11227b69eabdc5e7fda78ff89caf194659567b2ef921ab8
MD5 3d1e7427ac519fba599b16e7c79be0e9
BLAKE2b-256 61d8e805c4bd50d14cbb864ff6ed8a7a8effdcd90a46285fdbdd8cebdc491c3f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 be3c89109beeabfcbe5a1d4088b2f5bb76840f7cbb8f31d024cb404dab8143fd
MD5 afceb875881e6c48793bc620a8c1a414
BLAKE2b-256 9c0fb9ee8a229bfdc0670219192b5bad3c81b6112ab3dc6ba73b17343a7bd10f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.3-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 698b1e0de594980e5ed8f738909f2cafc6f4d695a472a1f21d3a743512dc1e30
MD5 2e838f5612ee917df8d541796727630d
BLAKE2b-256 e3f72da14a081c48534307d86f4360eaa5c4d785e92f5b518674d78f4e83951c

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