Skip to main content

A simple, opinionated task manager

Reason this release was yanked:

forgot to change some as_ptr to hash

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.2.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.2-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.2-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (444.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

modak-0.2.2-cp313-cp313t-musllinux_1_2_x86_64.whl (588.1 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

modak-0.2.2-cp313-cp313t-musllinux_1_2_i686.whl (617.5 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

modak-0.2.2-cp313-cp313t-musllinux_1_2_aarch64.whl (587.0 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

modak-0.2.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (467.0 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

modak-0.2.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (539.7 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

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

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

modak-0.2.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (408.6 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

modak-0.2.2-cp313-cp313-win_amd64.whl (285.3 kB view details)

Uploaded CPython 3.13Windows x86-64

modak-0.2.2-cp313-cp313-win32.whl (273.5 kB view details)

Uploaded CPython 3.13Windows x86

modak-0.2.2-cp313-cp313-musllinux_1_2_x86_64.whl (588.4 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ i686

modak-0.2.2-cp313-cp313-musllinux_1_2_armv7l.whl (683.9 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (418.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

modak-0.2.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (466.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390x

modak-0.2.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (540.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64le

modak-0.2.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (443.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

modak-0.2.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (423.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

modak-0.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (409.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

modak-0.2.2-cp313-cp313-macosx_11_0_arm64.whl (368.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

modak-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl (384.5 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

modak-0.2.2-cp312-cp312-win_amd64.whl (285.7 kB view details)

Uploaded CPython 3.12Windows x86-64

modak-0.2.2-cp312-cp312-win32.whl (273.9 kB view details)

Uploaded CPython 3.12Windows x86

modak-0.2.2-cp312-cp312-musllinux_1_2_x86_64.whl (589.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

modak-0.2.2-cp312-cp312-musllinux_1_2_i686.whl (617.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

modak-0.2.2-cp312-cp312-musllinux_1_2_armv7l.whl (684.6 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

modak-0.2.2-cp312-cp312-musllinux_1_2_aarch64.whl (588.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (419.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

modak-0.2.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (467.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

modak-0.2.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (541.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

modak-0.2.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (444.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

modak-0.2.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (423.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

modak-0.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (409.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

modak-0.2.2-cp312-cp312-macosx_11_0_arm64.whl (368.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl (384.7 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: modak-0.2.2.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.2.tar.gz
Algorithm Hash digest
SHA256 ae2f07f7dcfdf1db5bc2ffd3adad07529982ad0325146dd880f00b7e3dc53b74
MD5 20cac2ffe2a82f9edb20ecabc613656c
BLAKE2b-256 ed5618058a7076af728490b2b0a66df94aa8d2886ad1989da2f0320b19ed8cbe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0dc1fceb01a11d7d8ded47a7e6aa67b95a523438dca1758e2c0af25148193b4c
MD5 a2036d8caac2c1a32fcfaefbb0d52d26
BLAKE2b-256 36235198b097195e3f7b3d764623dd212b5374d7b71dea23ad51682226533172

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0b826c0e46b1e1cdc7b666631025234866916e0db33653d8dcd38454c9d47d7d
MD5 41e6840630c5cf74972372a36d425333
BLAKE2b-256 795d33e58978f5d62362dec9022e4087e827e3eecc06b624da80a52c36e74dc0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 eb96135f0047e67d8d220f2f883c60420c9ab2ed0218fccbf35ab3fc7c306631
MD5 4f73f23d4e46beb7dfbe9d5538422ddd
BLAKE2b-256 57d0cbd2fc7e213ee494bc14da6f502be9f9d2d0ba7955ec7c373739cf74b733

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 1bbad66827ca673bf41ded603aa94221772cbbbc129edd9087037c09b6c40cba
MD5 307baf039d6bbddb39039995e57962cc
BLAKE2b-256 b7ed9aca6bf332ba0e1df5a9bbaad575dc7fd93c1bd0fe1804e92157408ef61f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 bc71d90b37ead001ffb7d7b9c8c70615602d29a8376ae21ca14b6d2b6c59977f
MD5 872e7772b64d0113dedfd4cf365fb31e
BLAKE2b-256 ce2e5172be23005d78fb4bce8ac13a8929bf3a3e9ed053be84fde90633a531fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e926713945c19970ff611fb378df0edd4f49476274c2d5a3c1cd54f29d2deceb
MD5 5c469567d5253ecaa3e18992065a16cd
BLAKE2b-256 cb7370813983c329f12dc6f386d976c4451114d5a5d4eca2ee517dce73e669a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 b5daf3bf6bfe7ca6bef8251e4c4231dd73b974cc3323ab0e0c7bf8dd5bf586c7
MD5 16e2773337a03495bbadbc3dc38f5be2
BLAKE2b-256 1cfe714687bb84a198ba9e17d88f0d75d508285e47fc961b45224d908587f9a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 cd5e4058af56ce504f4a08799fcb0f310f27cdb10f9daa942ffaa0c569cb1337
MD5 0e6332d60f0372c3bc72f9c5dda24430
BLAKE2b-256 e4069fbd92d402311cc70efb62ced0dfbce6e44e7904916fc54266132c848cb6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 0b05acf5c5c74622ed0835d20347690e3f29d202aa03b810935c30a0b1760ed2
MD5 1fb9071bb85d737cb30726418ce70e6c
BLAKE2b-256 239280b67817b5cda4e0f647d547f226c99e61e5a121cc80e8a5a164ccdfab07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7bcf146cc8003540fb2ba75f4bf26b9edc7e900f07ed6e7655225440799da2d3
MD5 32865da54c2b8fafca70deaf640b2ab9
BLAKE2b-256 3464266ebad14985b16747dacea84574031c2207c824acbd0a74bf7afcb1094d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 285.3 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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6aafef0e2a6c743763e103dfcd8f2a1597456ee03fbba3638fc09d9e07664f4c
MD5 cde7e4195e1cec97832a940d52c39404
BLAKE2b-256 b414f20f5e1629ce5cbe3d4e32b47ca658d736f3c15a4ad017bb1aa2dcaa832e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.2-cp313-cp313-win32.whl
  • Upload date:
  • Size: 273.5 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.2-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 510e29746ddc672ec36f3bcb727d1a667406e0f945be9d7696c49d04d5fa2a2a
MD5 272940acca001a79d4785e7de58de89f
BLAKE2b-256 25dee8b0c352aee7e89f8a28f844071b9f1f2f21204075ef45cb30a00bcb1168

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4f3c016a92c1f7634960414fdabd06d566a5aff801764c0b42c9d103d582b81b
MD5 2b0249418a042239834c6ab5ea212de6
BLAKE2b-256 1ae8cbb6525f4e1f6d7a5f0e6c9d5eae4a7b812acb25f5cdd498863d6ce29a6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 6186c0a8935573aa63b6503f76f188b7deeeb0226cd33ce72aba357d958e3cb1
MD5 d29b6b3d853b511261e94f0a3e8b6bcb
BLAKE2b-256 b6f3205d523aea5638966daa3e34cdcc35a602a6276639050c9990f45efdd07c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 180cc7fee6e0b5a959ce892274c0e5d4f13e8cb652212a9d80c573ed8a39372e
MD5 b4287173dd90e4330f1b665a4975be38
BLAKE2b-256 4dc96e7158f1aaa97ac759798ca827541abbf700b1089186cb0fad5a0a354f3b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0717fa07dffca729f0b3e9dfd390bcd62802f1eb4815d84c7e6f594284c604b0
MD5 822931c45510ea9f61d8bd45005b39f5
BLAKE2b-256 ab4bfe28d65adf94f8e8839ddef81995d47a095ae6ff85f62da806990f4660fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7fa75d3f22c94c574696900bbc9ae06833c1ac17a743d5853c81e19584661160
MD5 6340f271e05c7adce0b796ea2ee10b56
BLAKE2b-256 b868fe3dc4f4cb16acc54d9dce69122904cde2052893e485b382d4c7d104b2ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 fe76a9f71adb9f615467c2942af3a049b0e8d9ae910fbf1768cf2059dbfec33c
MD5 9cdea251b6fc9b072f87da22dab41608
BLAKE2b-256 a438558e75a50647daab2defc2e881513a1dda82283045b457a1aa3648b27c66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 e2f04d2ffc3bb5d9cc0628e9c4b6405b50bb9a7931b239906e8854018b5cbb89
MD5 64cf886321684473218db99f2acccbe5
BLAKE2b-256 1c47186d2441df4dabf657579a10805d97477828fb327747d8d19a66f905c7b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 289482b7c22aed20cb8fe3f3cbdf5e59788c9229f69a5f22e92b9c17848b89e3
MD5 58f655b4e72c51d3a8c0a02d80e20105
BLAKE2b-256 5dfae5308cf08113db8d04052095909542a9e43cb7fcbdcaeb29ce0199928e1d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 ed3bdd0bac602cf1358787b37c87a2ed5b20ea4a859c5656d37c8b5da93f6568
MD5 275ee20a6610f947ab37134a4dbfb32c
BLAKE2b-256 a9dd93c328ba7a0ad13c6c3cc2cb69bf8617fe856f098a9d56bacb84dd08e98e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1b30898fb4cb8585cc321fb0e1ed21347341cbc8c8b105b75e1d0ff909262ffc
MD5 153edc9983b7e3426f6549a80046a47a
BLAKE2b-256 6cdac42f13ea98854e7587f727ce564d4470e1f4ab11bbef3e72362ba77112be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2eaedf8f5e4b1a19ad51c69200511620f30efdc1816446bf76b0bcfa81b6defb
MD5 147150dc45647e9ff2529720ab5daf25
BLAKE2b-256 6e989566699f9bb99d8294103d9d604794567bf75e7840b388249412e5f0ba4a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ad252a883c6ad07f4b28dba4114db4e70d05a4d5cecbfb01d95839dcd4cc564f
MD5 3afe6e792d1f75b299ad980aeedf4360
BLAKE2b-256 5df4f2b8f91765d42e3153ad10feb80ff927a0fa0d0bac82ab565838dc2a7069

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 285.7 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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1bdf12e6112b53035d72f36d802084b035bf12077656c2ebbd25e39b8f622803
MD5 aab8a8223ae72a0a94f4280fe3be50de
BLAKE2b-256 1f679acbf99f274d8504c6203e95ea45fcc321ebcc59ae41f1c7a863e64953fd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.2-cp312-cp312-win32.whl
  • Upload date:
  • Size: 273.9 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.2-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 b1a37935c61428cdac1cc0acb0596da38cce149a76c9a5f3477a2da96deae5d4
MD5 644192c2cfcaad399f329f73d4246b5b
BLAKE2b-256 802420e0e2304e88f82f7d72bf0b894eb9ebd789ae3efe44c37e3bfa9d014bc9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fa5394bcbfb71279b627e68d1289f11dea51d5fd8c2d993f26df680dfdcba78e
MD5 5cea483efb7ab0b6dfdcd395e129ef87
BLAKE2b-256 7eb5a20875caa5fa434e20a58fe836e95b832cf748c2dfe5d0968a7af4d4d820

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 e5ef86e514d5c4e19c085423ecde7c35a1419e51bcc71ca2515264ab8cc203cd
MD5 4d23eab4ecb7975130559ee67a564bc7
BLAKE2b-256 bfdc0da01a0dd3bd09488fd6b64e7c4dca9e401ebca25754212dee0b2f2f18f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 358f0de94b9888a09a773c7b93a98fc2778558009bae12a98020e7c89090b2d2
MD5 9e9b18299c792ddc5c06c85f961288d9
BLAKE2b-256 9f3ff332872c518c5b8c893c2bb884bb5a64d23ca56bcd5916b3cd7baa3f1484

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 417f65705fec46068c2413639c2fd5627e608408a0d27f4c90029911cc64b946
MD5 c8854d9a561b0e54f7a43a39e4d0d4d6
BLAKE2b-256 9f420b6aadf2acc7dd35342dd3e347a91b369f8f68577ad5f0af067d250c6747

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 137706a282b35bdea9710083d2e5e57bb066cf033020fc29edfb12e1968a6a8e
MD5 c916d931b5491998cc516f3deabf4c30
BLAKE2b-256 3cb7fce439704d319f7d3586fc0df8b549da0cac995d4bd23a485c4d5a7dcf70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 3ba68f36d6affb0f34afa0f0cba462cde531a76fdaf6e6314e1f0b7aa522e203
MD5 794d11bb6a2de89e5a948bd9bde92c75
BLAKE2b-256 1031782256df7dfa3fd0aaf7aa35ed737a3d1aef24e599e900feb4a414f88523

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 219bc6990a0d9c1b922b16d28ed67456ba648b327558fdf26e887cb344ba7931
MD5 561663de5621d5402e6b1300d52de294
BLAKE2b-256 6caa135b3832c10107883d6d4a3bdf3805e3bbba1e324b7ce857d404ea12ed7f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fddf4e18fc2d7dffc21682e134add7506f63911b9c7a60b9f38ba5b175ea33a0
MD5 8dce814733377a2fc8f9f8b9b88f8395
BLAKE2b-256 7d710a8b7b69cdf3e6c398860f959ba7d00a096a008d8d3e61d70fe815f9653b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 29619a69c1d86d2ad92a3ff1d9323c32ac5a3e91dff77af0a9b8c56021ea7fdf
MD5 134f16ffc2b5d7584080a5797b1ee23d
BLAKE2b-256 b068b7e23ec40d4e3940a3bf5d0551761d8f62225dbfd12dad2596d25104f27d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 aa2601c3849af52a4404ce51c35201ca49005280d7bdb258c6ca103ad6f3209d
MD5 8e587ec1102250a635cd251d32f77054
BLAKE2b-256 69925d45e0ae5bff47d33fab64813541cb98d3e97c0ce1839ea1906d99b7dcca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eaa0ba2b9bae3de459a7026f2f6dff931890ef19eb6abcee34d8f6ca422dab03
MD5 032efb65f5b6051fcbe23f6760ab35eb
BLAKE2b-256 343c552eacfb5364f9fc380b9971abd8839f9cfcefc8f3414e454cd4c4b4a272

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 050e77681e4314f42b5968fe706ed77d01d21a2d42cbd176fbdefea3d0f2b211
MD5 d6f6fa0c4d163e991d1228f9f2165ea0
BLAKE2b-256 20d46d20ad6d7df19db8579ae26304fb3bae0810b1c13472e7183c5e85715b0d

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