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.9.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.2.9-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (690.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

modak-0.2.9-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (745.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

modak-0.2.9-cp313-cp313t-musllinux_1_2_x86_64.whl (860.2 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

modak-0.2.9-cp313-cp313t-musllinux_1_2_i686.whl (905.4 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

modak-0.2.9-cp313-cp313t-musllinux_1_2_armv7l.whl (950.2 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

modak-0.2.9-cp313-cp313t-musllinux_1_2_aarch64.whl (851.3 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

modak-0.2.9-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (757.3 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

modak-0.2.9-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (856.5 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

modak-0.2.9-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (690.6 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

modak-0.2.9-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (673.9 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

modak-0.2.9-cp313-cp313-win_amd64.whl (486.0 kB view details)

Uploaded CPython 3.13Windows x86-64

modak-0.2.9-cp313-cp313-win32.whl (476.4 kB view details)

Uploaded CPython 3.13Windows x86

modak-0.2.9-cp313-cp313-musllinux_1_2_x86_64.whl (859.8 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

modak-0.2.9-cp313-cp313-musllinux_1_2_i686.whl (904.0 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

modak-0.2.9-cp313-cp313-musllinux_1_2_armv7l.whl (951.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

modak-0.2.9-cp313-cp313-musllinux_1_2_aarch64.whl (851.8 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.2.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (690.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

modak-0.2.9-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (757.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390x

modak-0.2.9-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (857.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64le

modak-0.2.9-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (745.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

modak-0.2.9-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (691.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

modak-0.2.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (674.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

modak-0.2.9-cp313-cp313-macosx_11_0_arm64.whl (618.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

modak-0.2.9-cp313-cp313-macosx_10_12_x86_64.whl (635.7 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

modak-0.2.9-cp312-cp312-win_amd64.whl (486.4 kB view details)

Uploaded CPython 3.12Windows x86-64

modak-0.2.9-cp312-cp312-win32.whl (476.9 kB view details)

Uploaded CPython 3.12Windows x86

modak-0.2.9-cp312-cp312-musllinux_1_2_x86_64.whl (860.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

modak-0.2.9-cp312-cp312-musllinux_1_2_i686.whl (905.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

modak-0.2.9-cp312-cp312-musllinux_1_2_armv7l.whl (951.6 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

modak-0.2.9-cp312-cp312-musllinux_1_2_aarch64.whl (852.8 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.2.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (690.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

modak-0.2.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (758.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

modak-0.2.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (858.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

modak-0.2.9-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (745.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

modak-0.2.9-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (691.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

modak-0.2.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (675.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

modak-0.2.9-cp312-cp312-macosx_11_0_arm64.whl (619.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.2.9-cp312-cp312-macosx_10_12_x86_64.whl (636.0 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for modak-0.2.9.tar.gz
Algorithm Hash digest
SHA256 755870e2a23e1da83554006723bca911272fba9e82ced4eccd73ea1b1ed486dd
MD5 e2205e65c083e2b9358ba04b7a5896d7
BLAKE2b-256 c1e79ddfbd58d9a72096d0680feb561ab3e4da6bddb10f80d49fe2516e5be3fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cfc9fef15498dbdec793b8c4ce8c73ed960793dee85fec198464351534c17082
MD5 e310a48590ea21a376c59c84826efeae
BLAKE2b-256 7f730b10d1614e1f7350c3d72b19111b87e2b16391ebd2ad5e6648aeb74ccd84

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 49dcfeb804368cf2aa33656f6fc45df344f8cb7c657f71f9d6db9263ab842c9f
MD5 1bc5070069672ae65f16920ca7e352bc
BLAKE2b-256 963058966e683152787570415cc08de146331a2c7b2debb1e06e9f049fccbdda

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a6dfd52547c860e7abd5704f2e7d35f7877a0ccd61ca7ba596565c35ff496572
MD5 6fbdbe57e04ae0c8c69f12ee8c7d0682
BLAKE2b-256 296b1b1648d063872935ff2f27fdce492e5fdfe4bdd7af73e589811fdcf27f8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 4dfeee5c64c977122da794ce98b032b2ee0e1e6d98101bc10ee8e6ffaa081698
MD5 50ab6747d938e560c17a3f3ab5ba24e3
BLAKE2b-256 329e564bdc2fed5dade17c59292992a3f646d591a5cdca0e213e25769ca8cabd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 5677e9536e6935f252cc74baef0d400bf4dc0088ce0f6f7582a601b3d6bff23d
MD5 c329cd840374d74391b00f3808c9e85c
BLAKE2b-256 8c0288d0abd6c8b64cfb60976a303b226942a09b9ceb512ab3b28ff7a7f89e26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9674f74b9c4da887992f46147c7b461d974160c1191b5be0cb1f081ab23b4ec7
MD5 cf4d658c7099fa50378bbc77b6a9e5cd
BLAKE2b-256 6b0cbd3d347e0a6d10d8ca4119a918a12342519e638da042623b8528a5679c31

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 886672d2d2c1a0e98c4d9075a1ea5c135af9d281b720a4de0ae9750064578731
MD5 749d5f3865cebc84293052f05059a1c3
BLAKE2b-256 d9b8f461c19e01d500599520c298a863bb90dcf46c1c4c2bf33e1076722b5341

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 f4521a31dc92c41843359c15606b465ad63d803826afd746f16cd94e22a40898
MD5 f7de916fd5e8a64caa2c9c38135f7c17
BLAKE2b-256 083805824c9ddd49deab7e8798969899c029e218cb2f7fdf1f262927016cb9c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 54d0554c224e2b4c183e74f2befa9950d7d45f52f87077a38a302d86255e6be8
MD5 d6f018a1c6cc95895afe2ac73bb3f21a
BLAKE2b-256 535dc265b264e32596194fba103c05c1ef5acc7f843c4621250becc2b2dd32ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5199a354c07f334aa5787d5a044dec3d8f9f872c520e9ae4ea78b42d202369cc
MD5 526f6c88601bf52285849daedb594c27
BLAKE2b-256 941099ac9e50a586089517cfac2425f7b569e6c8dffb1fe89141c9dfee16b007

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.9-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 486.0 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.9-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 98143ef8571b78dab6b78351232255d903a29208cab217aaa51ad47dad043788
MD5 d51c98e610334dad30ff620b3169e1a6
BLAKE2b-256 642b41deb4a4f8497d3832f34717829df1863a84b30ff75cc7509ffc87a5291b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.9-cp313-cp313-win32.whl
  • Upload date:
  • Size: 476.4 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.9-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 9b81325a1e06525837a6169e8ab18a8acba3a11fb888a7125c1cf1ced0cb94de
MD5 c8b4c0ddcc1ee19fd3d1b6519302009d
BLAKE2b-256 9eb595b32d6fafd7f953b2396d319cc4a82d455598bf3f20b869b4d31940bbd9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 265fac17f460b65f62edecd5d93c3c73d2249202e4046553fd4f42b51c067475
MD5 948de25d781bf3920a549b8865873228
BLAKE2b-256 bb711ab82759adcf227b761c9ac938f0122e013f41879bc8998eb7f27b1bd25a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 7b4d84a44d0ebbe3db868a81b4527cee03990428fb3a161abc53f27ec809ec00
MD5 e40320e87bc32004644b8c838dcd5826
BLAKE2b-256 812a3f731f648a50d17fa33c1f9980af5b5c0e63afcdac957b07573c36fd2699

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 71e34d26d7e9c6cbc7fab020affe70ef2e21c038f4664bfa88d0c090131c0f01
MD5 c23a55512afecf30da854f72a27bdade
BLAKE2b-256 a82e81788523133a348b5053c470d2b9e7db1cf70f8c3542855f8d9e740c4964

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 af09a4f6069e61f3657fc0296f35df723a5ee72f224e5b5325c901fc869cf7e5
MD5 0911e0d16b448bf4430966ee7ee0ed2b
BLAKE2b-256 ba7f02e63aa974672ddba623e2c3d6896111e34e2b9fa0fc2cc006c81e689433

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 396ab8da1c89446b473e50476de5d04e363cade5ceff6bbe7e31628dcce26569
MD5 3618e724643d6414db129a219529565c
BLAKE2b-256 36d7b018fa64e297f4d72861d99f9dfe76d771c9f89bbcbd56c6d95e337eed0a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 be304924620069252bede9c40bafcc5f2427f21d6f6aba254eb1dfa176e691b3
MD5 41b3bac4a6291a6fe6af896776997550
BLAKE2b-256 1c3b37b136dd1bc02723cb4b33bb15acd6a4d7c97a87df7f21d013013b62799f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 962fa2c9fb4296abeaff2c823ac123e09b73e61ee0cd545296fc87392d766cd3
MD5 e331fe43b7cb45cc47ef2aeec8abefda
BLAKE2b-256 75457fdf2c81b33a8dab6bb80e94d059a1508fb198855fe0cb0f3463a89a190c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 06a135a31b99e7949af064991022033b4b5389383d7ed5acb6d25bf073fcaa66
MD5 d9b424048bff84e7a1b176603b55a547
BLAKE2b-256 9812d09dedcf1217231c90856020ab874ea6e5a1cc71f3ae9a99edd5ef62336a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 7c85830576d3c2ec3584e06d4fa85960fdf94e389704dc7f80af6d298ee661b7
MD5 216e2ea82185aa4504ed82e1e73c1a04
BLAKE2b-256 65b2e43dee328691e8f51e886e69124d37243e1c5cfb8cd3240bd009a057529f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 905874fd8d8f6498ad0b4793f5b5f659400878a4db25d7a025f8b5825c312120
MD5 e505fed0cd5741860d934dcc8d5b9c03
BLAKE2b-256 26da128c24d2ad7feba10c6648ed14fa6dcf27a4c58d6c20995d74fbb5250459

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8fbc2ec88d2a62938c682261c665d9d14c595685ecd5bc9a7bd898b4feff8dc8
MD5 b44ddc0d1084fd1d8c88be4e5f83f258
BLAKE2b-256 b283b03d920403f94c1d6ecd70317ecd7cec6bfd757e72170b69711742ed5d17

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5ed4ca6b52f1c8fb91734d00ce146af90693a87e240de8a0e668c92f3b4d60c6
MD5 616319be91d209684b9ef3b8cbcade5d
BLAKE2b-256 4c528ec1d3c43bf6a2379be124f413f22eda391e2527d03fdc13b8993c5c0560

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.9-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 486.4 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.9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a2ba240d974fad9461cf1d3f1cc2b20466db9731a7945c8cae8186022e59d2fa
MD5 22cbc51ad07268ea3478cc42cb9aa805
BLAKE2b-256 b8b11af27883d32f151db156b8245646df773ed77eebbdfd8563a79aa1f7badb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.9-cp312-cp312-win32.whl
  • Upload date:
  • Size: 476.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.9-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 f5797169ccbfe9b415cb280971de0334d895e1e9fed32735a623987885c1b801
MD5 ef23894029a289965c6fb666f5e0a7b1
BLAKE2b-256 b2e63e58a433b9284964c8b403e9d845ca5c12d94bcc82b9c0a8949fedbd97fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 09ab969c88a64efd49ca3ab0395313fe1b2a06542cec9784795bcc016e6ed55d
MD5 f53c11b2f5aeb9b44d5b279102dd51f7
BLAKE2b-256 e2cf39e58ae168563248dbaf5dca4434a1b90572655590eb8cf06a0ac58cccd9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 5dc38728c69994d20f441b54495f206f378eed275d1437a2709828223ab2ef43
MD5 49ce4d582187e5bfd745b456a6dcd4ce
BLAKE2b-256 ad36cf5ac3f4613b1516268afa7fb06480ef1e1bc02a34e9cb5722e96ba6bed2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 4a7cd1fbcea5e5d0646232d90473d9d2f991703fc35aacd6727922245be77cd8
MD5 718898306d456c31ae534b9105976e7f
BLAKE2b-256 b63d8f36b189079c4f55202d6cadea1d98ada70a42119c254cca4fe4b864d47c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5c8f3f3ca19f37178b201c20db44ea06332ca4815b0839bc08d584f82263a49d
MD5 6b5b786252166ccf403ea591f9b902e4
BLAKE2b-256 41c7d5f3d4fb73fdef8853540b375456c442f72d14c27900a99acc5eebe850aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7073536316ab91745fefa0fc200654267f52dae99e641b656da56dd3999be725
MD5 b7d87fd652847cdf9732e2a762e97c26
BLAKE2b-256 83e30a66587d77160020d501d288e58654fba61cb6e27d47ade840fed386571b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 de2234fede2a585c5479a71f507a45a63877674e163e0346fe370c433754052b
MD5 e9371e0c9c6abf45b2b38f52c8b6933a
BLAKE2b-256 3ad839085fc89ac7084d3dd2b66c96effe6ccc7c419a6e57c7d7e2115b955b2d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 947017d9ca212319fdf839fa23817126702be7c0ca5fef497493d98eb9d14ea3
MD5 a536676ee0775a8cf89b1d2b3dfcba91
BLAKE2b-256 752ecfe1b6abd4fd84aedda0bf76f27a8f35043b8b0ed209973c8ed52d0f68c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b5c34cb12db1b50608029f4e017c21a7c81cc532981b3166b43af7b28a7eba04
MD5 321f6cce3b1571c302e9312fee0f93ae
BLAKE2b-256 b7231e2b19772575212f65b2c0cff1c9cc7340f6d765dda2d0af0fede211571c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 b594905414bb214f379d326f7ae3ee3e21ef3970570727a731eab871fda51c7f
MD5 fcc5af2df3fe138cce9c5391cca102ed
BLAKE2b-256 2c8590a2a3c0adeaa05c1496586e8d816b5a98b284872232efbd6fce7b6010e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 10e2bc96b79d9000992e28df8f71340aeabfd3aa970353182bef9270beb834b4
MD5 7079e15e1b4538589f54e852f7179398
BLAKE2b-256 11ace825b293940feb3292b23338a01c69041ee294379f9f7047efa0aa6dd9ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cab8d1107487aace660baa7ca896a544e22ed7dd3c6272118210c6e38871cf97
MD5 58e65c3565e33fbc7e922c66aa7fb652
BLAKE2b-256 7a20de531ddd96b4c9a26cdb92ef27019b90910df9f6bf4e4bf2c32b2a1d0699

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.9-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 14564a35e87b9d9ccf4caba07de8b26b4e70e2c08c94e01d2c6f5d470b5a0cd9
MD5 3ff10ba2a04f10d729edb6bead15b2ca
BLAKE2b-256 033544af1eb85710660d740fe0d42ec057a37782cb54e45ba4a934d061fa688e

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