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.5.tar.gz (36.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.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (384.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

modak-0.2.5-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (410.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

modak-0.2.5-cp313-cp313t-musllinux_1_2_x86_64.whl (553.1 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

modak-0.2.5-cp313-cp313t-musllinux_1_2_i686.whl (585.6 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

modak-0.2.5-cp313-cp313t-musllinux_1_2_armv7l.whl (652.2 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

modak-0.2.5-cp313-cp313t-musllinux_1_2_aarch64.whl (556.6 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

modak-0.2.5-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (425.4 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

modak-0.2.5-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (538.8 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

modak-0.2.5-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (390.7 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

modak-0.2.5-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (380.3 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

modak-0.2.5-cp313-cp313-win_amd64.whl (252.3 kB view details)

Uploaded CPython 3.13Windows x86-64

modak-0.2.5-cp313-cp313-win32.whl (242.2 kB view details)

Uploaded CPython 3.13Windows x86

modak-0.2.5-cp313-cp313-musllinux_1_2_x86_64.whl (554.0 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

modak-0.2.5-cp313-cp313-musllinux_1_2_i686.whl (585.2 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

modak-0.2.5-cp313-cp313-musllinux_1_2_armv7l.whl (652.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

modak-0.2.5-cp313-cp313-musllinux_1_2_aarch64.whl (557.2 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (384.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

modak-0.2.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (425.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390x

modak-0.2.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (540.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64le

modak-0.2.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (410.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

modak-0.2.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (390.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

modak-0.2.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (380.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

modak-0.2.5-cp313-cp313-macosx_11_0_arm64.whl (338.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

modak-0.2.5-cp313-cp313-macosx_10_12_x86_64.whl (348.6 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

modak-0.2.5-cp312-cp312-win_amd64.whl (252.9 kB view details)

Uploaded CPython 3.12Windows x86-64

modak-0.2.5-cp312-cp312-win32.whl (242.7 kB view details)

Uploaded CPython 3.12Windows x86

modak-0.2.5-cp312-cp312-musllinux_1_2_x86_64.whl (554.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

modak-0.2.5-cp312-cp312-musllinux_1_2_i686.whl (586.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

modak-0.2.5-cp312-cp312-musllinux_1_2_armv7l.whl (652.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

modak-0.2.5-cp312-cp312-musllinux_1_2_aarch64.whl (558.2 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (384.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

modak-0.2.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (426.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

modak-0.2.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (541.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

modak-0.2.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (410.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

modak-0.2.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (391.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

modak-0.2.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (381.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

modak-0.2.5-cp312-cp312-macosx_11_0_arm64.whl (338.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.2.5-cp312-cp312-macosx_10_12_x86_64.whl (348.8 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for modak-0.2.5.tar.gz
Algorithm Hash digest
SHA256 682cbab55ca6ba1773885b1dd647e0dac3e1638859c0a072c73ec71a28bf2780
MD5 d93c8ebbfdda05fd6b420cb3775d2d4d
BLAKE2b-256 59c007f69ba4cffce86a421201f552a6ef8bd2050efd0edb7fb380e019458ed6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a7e11c750f3429e6a9c4950426bea8e84b4adf9013f2043e33f9f0171c3c4a1d
MD5 60dcf8b4fcd02d5aa2739b4c28af7102
BLAKE2b-256 724751003be56bdc7e199a6cbbae664467560cdaa7c1909637a7865107741f8a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 160841968b30b1c2a7b7b5e4a65c9dfce80d127d603803d3ec59d89b6c7d0a7c
MD5 add7c5bae36d5ccc4ddd7508a9c2dfe5
BLAKE2b-256 d112f36920eed9d32bd30901a8a49fb733063a215bb6ce0a01ff80b2346ee515

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 81e4b87515be5a83070ebfc1cf10b823b2836d379abb5807f596449da7175bdf
MD5 3c81e77f8ec22c867d93710350f5bbe5
BLAKE2b-256 01790d4e8af9df8ab017d385564b4f0c38606298c96fbe919b2d699f48d9e5e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 61a0f5ae33128b8279507a7956edd6c349f0246db6dcfec279fee310c6a1f762
MD5 88097a8671f5825074b44028175548da
BLAKE2b-256 14a7c40ea3b35ba4d3cf709553b7161e4a42203e7c0b992b68596ddcfa4e60b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 7e2c3a4f0bf34fec4894beb582eff7665868742ef7a8e1c1c6ec4c4823cad531
MD5 c27bda25c25513127a088f96d3a5b606
BLAKE2b-256 3e4eb55b8b8efc8294d2266c6cc3da1982521488e603c512222d3f7f306f5e1f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d3267fc084be277f699b83e28e9346ac9680d0eb7a3069b02ac3a69af920fabd
MD5 0a0500be88ee87f4871eeb941ead1eeb
BLAKE2b-256 4fc4919c37b81a380cc8b5964ed1ffd32d0c42f370855bd8967b1b5eaddf2edc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 bb8cefe6394a513c9ba378cfb69a262e46b115e1bdf1b90fea501d2ac0aa8689
MD5 15aded0c23da003313a33f2de71005d4
BLAKE2b-256 3fd892b4306421e73a047b8ceaeed53c8493704a53a4db2aa1b0ebcdf13e3415

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 a2225c9c36acad7ee7e46c5f48996779ffbea71b86eaae3da5a5c7ca8b36d311
MD5 2c2075afae0a748aac1f3715db9a80ae
BLAKE2b-256 ca5cdbeb4a7acc2d80cbd34a65edc03a2536e629e8cd767e7298bd10d204d64e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 5050b1a610dea36d9dbc96fb4517cd1f9ce24c353cb38e2afae934069617c3f6
MD5 06d03cb61823f13f8593098a4a9a0d1e
BLAKE2b-256 1e0ea69df9682e00906adcf376657a7c7d11bda5da4b15013185442ed05f50fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3b728f45047d70694ebfeb491e3cfe0cddaa73e19c9900356a66333b18ec1121
MD5 0017e8c7394c33905a0c18b9bfccdc08
BLAKE2b-256 54447f17850451d6ca745082f8acc8644bbf544b16c86ba8480b92eb1411780a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 252.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.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9222aa65fd08fc6ed87121c7c7b05181c03cb57a83dcb13a8f70bbb60734ab3f
MD5 5611b31299d2eadacd5df526e58a7f8f
BLAKE2b-256 3abfc991d57b8cb9bc0e86f3fc6370c402966e753c25b01d702e6ea3806b10e3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.5-cp313-cp313-win32.whl
  • Upload date:
  • Size: 242.2 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.5-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 4fd6bcf2c5389aa2255c5519e8c11041b9c1f96f0c21d5d6ce47ae981afebfd5
MD5 356b849b326a779df6ef2ccd0b275a3a
BLAKE2b-256 76b0a5a1acbc39db8c5915dd490cab66089c06e6da81db9cbaf7a76d62fe5185

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c04ca89dc63472c09ca77a006c1cebc1419b54fa7640f9cab9996a607f2ae705
MD5 81c6530eb0ae071f5d50ca103e110111
BLAKE2b-256 167f559561e09a4e5fd378cfa095949d25a3a077d515d9c48d09ed1dbf63de45

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 2e60929975368eedc70c575ce7acecd715dbdf4ab641271b69e5689154f11334
MD5 025901b81d1d666b3489dc4edb87cfba
BLAKE2b-256 b00167890309d87ba06a8da411e2ec04622be587e1987e2c92f91032aa84e5b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 92265b753869cb39bff8de408da019dbf4fce3e039892a25099f05527bdadc9e
MD5 88e03a547aa5557aa0e09e1ebe5e308f
BLAKE2b-256 27ae65cdde90f33a100b5028bd799e78a7a1cc89d6c3449848da06a4d800a9ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 92087c9d1b107067d1228cdc28f36f27a5146f7a000b5f825b196219d2ab70ac
MD5 76582e7d0b6dda6e098487d185e163ad
BLAKE2b-256 90fb374fc16d693501d2dd7d521cd9137e1939256a2d57ef5bad238e31e7111f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fc12025caa015831cc3289ceab3de33db0364662d63fa6cee7c68d0514efe15f
MD5 9c2de486922d62ceed1bfc32fa3ec60d
BLAKE2b-256 a87ed22ba45237dc0e90945035d2a8a8a9a32a9a072ad24a564ced40fd64f99e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 d14e977ce548f6aaab1095a66dda9f9f6fa526efc58990e85505629af6acc4c8
MD5 b0119e2bcfb3ff9b309182071621ab47
BLAKE2b-256 f187e36e56321026c27f4b1516de42688022eed481063b1e5998c0d3b6b324a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 ad01c19e0755bedb4a257432a455cca423201e2a42879c7e4ecaae94d558fdf1
MD5 a54755896c3034eb42a4d1860f832633
BLAKE2b-256 8d2a7de75b3592489e07cc177c35911b5b477f684db6943e1d12b9aa5df543a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7c43e32174d8c4e308f7f75fd6fc01f296bdce4a40b5c754d24228f71077406b
MD5 ed6ec3f792a79128e3a502c53213947a
BLAKE2b-256 c689e96b4f5bc077ee3ce382b12caae1af2ed627429a37e6fab6bd154f983e79

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 083a5628c11d303d54855138dfe5400b7cb3614e76b2476b792fba7a8fe6e340
MD5 da612786e00356e4706181af8942112c
BLAKE2b-256 36b916bb2fd1d4c03ea279dd8f9f199cc08ba29add550857622896f8c9ff719c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8cbb55a52966009c815b066fc3e70dc2975063d55458d86677ff426991a644d7
MD5 f6684d915330447d03fc870bef6eeb00
BLAKE2b-256 4e3adeaa5861325e9e4c28c4954e641c1a753abe0a7468062635451992217efd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f611f7af2ab1aefa9232e52c879e5a6b2449468427a74f4f0dc9c6361b4f0a05
MD5 d2596bc5d51cc2f2eb90b120cd849630
BLAKE2b-256 d25b63110d05550a039dbe1e4cbb9092230c7dca3637fc96b885a8b330e027cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d694c7eef552b8ff33b04c806a47764dc1f88b618992953764d89c9e2900f08f
MD5 59cfb8eb78048e3c98c7006cc3825b03
BLAKE2b-256 23cd5a2efb7cb8a5a373bc7d0f82c8d228b04aa7624cc00158e8db150fb825a7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 252.9 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.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3cb9a9d3e9b0abde0d656faa462ff09ee531e5795e3751bf119e10bcbb66453e
MD5 2784edd9147bc621763dd328d27dfa3f
BLAKE2b-256 09d18476079c52de48d86357f97b57c2b7065a2d056275fc19774f26813aaf20

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.5-cp312-cp312-win32.whl
  • Upload date:
  • Size: 242.7 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.5-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 a373bc103b4c2e18d9a51d62fa964d4e58d36e416d4bbf7987eb8102d2d421ff
MD5 375a71db7d842f8cd76f44ad41253bec
BLAKE2b-256 bdbf31cf4dd68db1c22d7d19a7748f3b09ba5fa20251fafd50f05cd5f2aaf08a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1ae4a1dcce13335fca92d904c6a92cd13b1450cea2714d5c2a49a096bc6d6150
MD5 c98bca040c62b95b0a2e7d9d54d5471e
BLAKE2b-256 3b185affd0a578a7f65d623a3eac258c304c2d48f5d8ef0faa840324bec143d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 397f74ad5fb53bb472a75e2034105dbafb4685b204938c790961fac918193933
MD5 ff2e932275bbab32efd7803125b59004
BLAKE2b-256 441319cef8991b57a1e4aac9a01ef811d9f08343e3738460ddb4d4e4c7048c8f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 a5ac887bd564240080d60198d55f2eca4aaee0285846255f8d38c0e910eebce5
MD5 e14c874949c5b03b2e46962ad70bdbdb
BLAKE2b-256 eddc90eb3f2b583276b4da0650c46ac2b0fb00c10ffabed21b27e0caeed33a4a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 16477e7652aa24baf35b2d64340bab4184efb949ab221d1cc943afcd8a07844e
MD5 0f7906717468437941cd662c6191b41c
BLAKE2b-256 82e2137f0e64bd5516657cf1f70cd887abdddde33688694fdb3fb8bca21a784d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6e431f6e0ac41cd13d131d0f8e66d346fbc44cf5ef047a9d0797cd5a65a055b5
MD5 7c4583f4fdec466fe765dfc2f9fd5430
BLAKE2b-256 5f71e5b5e70f0544e8c0cd9ef0142ed6df97eed3dc45d9a089580df8f9544908

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 b673a063ba153f06dca92661d229773a243c7f932932a5892f5108aefff1e72f
MD5 8dc34e4eda3463cd01b0bf9d7661e047
BLAKE2b-256 663f0a56c50ecb6e10314ca3ed66b43ec8d9ef4446628db9e2c02965d59cbafc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 99f705a67095bc2a11e726fe692cee970d4c022f26891f2f1338c83af4ba45bb
MD5 6ca8ae721bbf988c3750525b1a732c0c
BLAKE2b-256 cbee4b383e69648e67a412dae5ff4f1c02c96409f3743ea8a4cd76683d20e370

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 bd335459e7b4fbf23fcf5028291efda44c8ebcd31d0449f6e6ddfcb5878d7d77
MD5 22dfbcca37c93fbaccc4a37779a10af3
BLAKE2b-256 12e1ccb2cfd3308ae3a79f903dd0759fe2015a874ebe183116263272a869c433

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 2ef51dddf929267539c5d9bf37e15f3c276de6f83c16e679cbde2e91e81a40ea
MD5 aabf83cf86e311d25cb9fd7d1d87d2a5
BLAKE2b-256 13fd1be29cb77e80a8545e225f5df1ba4a7aa2042749e34661df79cc0f4f55b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5285f10fe61753d288e2e658f78528b1c99299f0fcd0205e3a65011127265d05
MD5 32f118cc17fe52ba3326b8eca6d8ff2e
BLAKE2b-256 5cb720f829906792cb4a6c8d43ee1032ef4582dd671c1210a65d859226f70bb3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 803acb7d2378791d8fc8b53ed2b86424008971f8e912f503a169d6d21996ebd7
MD5 01f89357ee6ac2dff5591626300762ae
BLAKE2b-256 25c164d0a7091dccca19d1901490b626b1ba784d448d786453b70ad5072d72d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.5-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7d25577cbeb0c78871c509162906270429723525d2c76c59e0634c9203726262
MD5 831ce699ef3efa5dc7015069950ef388
BLAKE2b-256 94a78828b879678d0bc621e59bbce9835b1ed2bd84065fcc0503893fc4e5f2f0

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