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.0.tar.gz (33.1 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.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (417.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

modak-0.2.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (443.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

modak-0.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl (587.4 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

modak-0.2.0-cp313-cp313t-musllinux_1_2_i686.whl (616.7 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

modak-0.2.0-cp313-cp313t-musllinux_1_2_armv7l.whl (682.8 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

modak-0.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl (585.9 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

modak-0.2.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (465.5 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

modak-0.2.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (538.9 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

modak-0.2.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (422.2 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

modak-0.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (407.5 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

modak-0.2.0-cp313-cp313-win_amd64.whl (284.5 kB view details)

Uploaded CPython 3.13Windows x86-64

modak-0.2.0-cp313-cp313-win32.whl (272.7 kB view details)

Uploaded CPython 3.13Windows x86

modak-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl (587.4 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

modak-0.2.0-cp313-cp313-musllinux_1_2_i686.whl (615.5 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

modak-0.2.0-cp313-cp313-musllinux_1_2_armv7l.whl (683.1 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (417.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

modak-0.2.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (465.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390x

modak-0.2.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (539.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64le

modak-0.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (442.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

modak-0.2.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (422.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

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

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

modak-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (367.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

modak-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl (383.5 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

modak-0.2.0-cp312-cp312-win_amd64.whl (285.2 kB view details)

Uploaded CPython 3.12Windows x86-64

modak-0.2.0-cp312-cp312-win32.whl (273.0 kB view details)

Uploaded CPython 3.12Windows x86

modak-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl (588.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

modak-0.2.0-cp312-cp312-musllinux_1_2_i686.whl (616.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

modak-0.2.0-cp312-cp312-musllinux_1_2_armv7l.whl (683.8 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

modak-0.2.0-cp312-cp312-musllinux_1_2_aarch64.whl (587.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (417.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

modak-0.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (466.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

modak-0.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (540.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

modak-0.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (443.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

modak-0.2.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (423.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

modak-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (408.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

modak-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (367.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl (383.7 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for modak-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2cfa937c48b7f33cf05d988e752e7a1f999d95ca1bed678040e36dda2eb98ca1
MD5 06c1c57897ecfc5604cda5e943815925
BLAKE2b-256 fa2e517b73138f2c0e7912c0b1ce0887f674c84d80034618b78a5e04e4578668

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2dff1e861f9f85f06638facdebf257c0d2641345148023ef1f6916546fe5e1c2
MD5 96e4a11426e67a53a8f96dbc18d7fb05
BLAKE2b-256 6404cb255dc161e08997900b15fadcd885be3c41e697591acb32128b29a0f382

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 edbfa5fc06cd6681bc2aa2352477e10a7e23bc5d3dacf980e525d255eee9fdab
MD5 fd387176c9893f017cbc7237fea93f78
BLAKE2b-256 d5a4e84b6d2f47ef15ce45f87b2bca2a003de4cb3b8aacd01bfc64d7ab522c4b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f63f52f6b09ca02a466d60cbf73c2faf45b6a6142d5c76ebd5974cd6171e534a
MD5 4a3fea26a83ebc24e474ba9c09e6ba94
BLAKE2b-256 7ac0fa9d83156519372062bd52d1c076445082b0c4292c3cfdd1085b33a493b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 b45ba81cb9a3ff52e6e494c2f5f332285898dfb21fef98f0fc630ff66bc40078
MD5 8589bd8af9d1cfc67ac616e385ed9bf2
BLAKE2b-256 96bf0ef79cc19cf13ea726ea5b8129e0681c6e9bf964c76b983a35dc6c3e70ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 f0ebe1e381175e9d04a2a3d4c9e77fed270d9e6f7344e4fb502dc3aba89bac37
MD5 fe49333921075cf96cef845133cbf702
BLAKE2b-256 179561a287f477b835eace510db6195155b0cea1fd0b0b7a2bd5e902b16da095

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3c6732432562e2cc723794fea10e2e7248a6e6a941b985b3402e57f3f2354f7f
MD5 ac9b48803738652c49aa055c987088ed
BLAKE2b-256 6e9439d3dc5b92f18b3d066ab0f22144d4b90d55e808d2e7b35a3e5202bcf6af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 11dd1510799d5f3592fb6766c4dbfdec21238f938dfc40cffaf89ab6bb33cede
MD5 371800fcdb1f491ec0072eb9f4365fa7
BLAKE2b-256 c80c44541169d6b5d36b88cc2adfbe2a9da46fd395511dcb23dd3e1f7dc24866

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 1d50dcc9df289f056798c81948bfc6a64edfe697d9a8238d3be1e6e0a7562d41
MD5 8e077eeba5b60a05df0dddcb08cf8dcf
BLAKE2b-256 706489de2c69ea8e74053f2b7081d12d8d77a01c2a3aa5b62db0e02460b01608

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 ada333581f4b5464695c876636c77f039be55602461f4509e32b17163da8178b
MD5 b36503f25adbbbf5f5030b8370525107
BLAKE2b-256 00bbeddb1e3d4cdf8669d631a2f4078e287fb4d05b48f5b0e3cd37547c55e6f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9da4199edb3ebad82b5d9c1663797200200de45322df46b6d4152b5a62bab07d
MD5 0f57b79994fffa7954f66d6f943eb291
BLAKE2b-256 80fe9fb2b501fffb86c7e713029a6dee4c6d972fd1c15150cf19a81aaa375c25

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 284.5 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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 7f52325ab226abc12d4a90afb45dbde2de98bde37f97223a46175edd93dfc45f
MD5 d6f2c5598f745037cad16a78ec6b1b9b
BLAKE2b-256 ed18e741aa55e57697d9e2565d41d0fe53fb36b5b10bec81bd82a5f50dd1110c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 272.7 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.8.6

File hashes

Hashes for modak-0.2.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 e1270950cf1d9506a82dba4cf9f435e2b3cbd90e5ce1e29f3237ef3509ee738b
MD5 9eee01c87a0606ab1c67f071a8e32ba7
BLAKE2b-256 7e13354f29f486080e781d934eed28d401a29b189bc02738b3d943c7e0460448

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 40d909c80c46debea1c02524c88c8355380a5246c86e603bbcc8b95afd41845a
MD5 44853dbebe6dfa2026dbc84a3911eb94
BLAKE2b-256 9549575d49026e8a126abbdab26c1e61f81eecea1c3d3f2e37a5be20110d280c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 ecdb86626681f05d62d900526a4114be4dcd2368964f54d6f4bf10a851a6707b
MD5 9aa4ecb2544edd2c8084b96e9aadd1f4
BLAKE2b-256 41a6b4bb4e66d045448cc8f9e2c7b5f18164e171b383fc7277ca1296ee8b9240

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 9ea29a730238748df426c788d4dbb4da77498edf95cfda5dfc3984f59cb1ee08
MD5 52d7e119ad1d78a3ca714c8370b8d649
BLAKE2b-256 9dda6b2c5e4def41dc2f9fa5b85ec1786d3f1b1a40716d29787991944944f1a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c7d7c01ea5290e5e4d9d17bb3e6917e5647106a6693b435a2ba0bbe6ad282c34
MD5 cbfa36d0541498b7f1dbb853ddc1434d
BLAKE2b-256 fde1662fd3418cf63de2af7e0fec4f954316ca31ea449ffd24afa4bec35d8a94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e13f5ce00cc97071095055d6eb621ed231bbe28a94b83d00d79993b358973d68
MD5 28f9e21c9a90f61e2fcdb5298b93a51d
BLAKE2b-256 5a78de6760825ec0db265d6a0c2b0f12c290aaa9957e874893d1199c24bd514c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 d81ebf5c8edeb40e7d64180bd958d0a5e9cb63b1e82dbaf8a7c492cdbf066292
MD5 f3ca1111f16a70a6d315564d1e9d0177
BLAKE2b-256 8a57c3ca5a5cd05e6cf3c23b78ab635dd6a8f4389d034882ca70ba41e80e0598

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 9c1212416b583364ce1aeedeef772e77bb491418f5f604b4f93fcef1ecc2d139
MD5 1ac4242d16b7091b7a2c0aa612b096fe
BLAKE2b-256 f0ee39b3e229ce9810552698887638b72b17859bf2aa82432125a584005e8402

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7e6ed4fc1ffebdbeea23f30327f8ea757dfbfc48c33457c8acf94f0f9006b4cd
MD5 da3b46e38d2b4324b3b5bf1b31530996
BLAKE2b-256 0db0ba88ba205132bc4874f145279f857e8f2e5148892537f77aee33f36fc7a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 e0e581a4452dded057d5c76948798db82b052f341a62a6d2b7c81e252b30ec7d
MD5 22d066522c773c5ae01d19115a4e1865
BLAKE2b-256 b9f1c6e150511fb5d3816e93ca4015e02529c3f8b3effb98112444b95c951357

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4aa8c657df91d88123349761d98acd4f8226c73095e6e9bff70868b81eb115b0
MD5 e3ac9c521e2f4ded19edab85b83d639b
BLAKE2b-256 7b2c032dc7cddbc99059c380bbb213749e9f2cec9d29962fb707102665c5a212

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 34ccbc9f42a7634e94cea3f4050c1d00f3db2100720dbe0f7a5374175ae7b5bc
MD5 ed2b21ca49725e527d0a4330d1d76cdd
BLAKE2b-256 203b1715dfe961c9f5000a5ac6cc81e245768d963f299ee2c53fb8224094855b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a888196435594d1d7df56c15dfcdb085043ab12b1e6accedf4da045afe0e33aa
MD5 a63fc2a115819e4d3ed9540f1455ae2a
BLAKE2b-256 2915a924ce03249a59563250366d3f6b10e6e37e2b01f7d0ba9b8ca0d8f31ea2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 285.2 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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c768a198027ae4eb4b6d03eaf62cb6dd3b13942e1820576ce6e281e6c5bf88d7
MD5 e9d777f9b50157e717d08c877bc9f127
BLAKE2b-256 f9eaef7c74273480b5dab681715f16c9c06bc4c5d96a227a7668353f658839a9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 273.0 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.8.6

File hashes

Hashes for modak-0.2.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 cccea31f5bc8c5ff0e963a36eb9b224e089328f519c9e447377f1f6acf207832
MD5 29b1ffcda78034b9d9bbbde58736adeb
BLAKE2b-256 05e5c887df633bdd31a153e3fd6cd24d7efba99fa19e741b594abfb0d48252c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6b1bb55588ef7435ec8b9bb68c4caffd613b6f9a18538f6a06574147296512b3
MD5 6570c60b4fd23abf1741aa287cf8a149
BLAKE2b-256 cfd5fb0e781abc730707ed4364b3ffaffcdd730bc40113014e41662c34e8221f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 924e49e1fd4dbe7c9d5beab267eebf5ab3d330d4e8f26154600438ae475d8549
MD5 b4b3bc72e1970d9f9b9665e23d23d497
BLAKE2b-256 af3e3dfce2687ffbf43fac6c65ed894db8a00a60bc490a33d865967ba082920c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 194117be3be8bc1c0202c1c35283bd0867ada7dae0c32ddbfbaa28fc97aea4c8
MD5 5303bcc641e389ff5926716cdd0f9fd4
BLAKE2b-256 1138a24316adc9a7981756a3f30a000b429a25964fa7f8ad2625e84adbd94570

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9a73c9db16682cd43e22d97cfc3a2a1e5fb434e179f0ed5defe7e8f411598c58
MD5 d9ce1c10cd1b5ad5a647a88821e9c6b3
BLAKE2b-256 1846530d5510a54a24a1d5acc335daa25e6f2b8caf8b17e33542700e7397e2bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 de855a2ea58551c9a12d382b4d9b066a10c4631fce69a7e862d43b237fdda6ba
MD5 500f2027af8a3627246605d68c5b1089
BLAKE2b-256 dce2fe31985bed3515056398cf90fad5ad799c7114fa07901bc1cbd11058b7bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 100b9c3feccaaabeb5630632d09ce5123720d834927c3a873d820e92b994dfc7
MD5 68e8322425ae560d3692ee919a5fb463
BLAKE2b-256 90f4e4ccdf2ae9a0fda67fdc498d3dcf2546a7a9b4dabd7a018f1a4ea010c896

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 7618feac4e7233b38921cc029c1da3572f3e62d4e7acc8e62e48f5e00f41c52a
MD5 362be2e570422e687eabf06fc7da716a
BLAKE2b-256 8f167050cd207ec6c8064a4f9264f0b20ef995c3e9af40fec3bacd8c6c3b30b7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5f920bac34907228b8da4752038ca6827ac546e3188f576f895405f0ab5064d6
MD5 49bbc6dc32b07dbbb464f2f462529b8a
BLAKE2b-256 0152d16414977d8d91ea96ef5d96ff68f938c3ef67e80111d09029009217af15

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 102c797cb9d36e43bc07016ce7a8b60903861e5c23dfb6512cff87078fc8277d
MD5 7019df2721ed25cdd053d8d549a6ff32
BLAKE2b-256 9d5398330ef5f2ee1032baad57b664ff636a7c7b155b536e23b3bebbc77d7df3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9aceca88bca8ab85b3b2608e6924c60c14d88a03df61d7b7f6dbb3f91d541c47
MD5 da3bd7b184ba6c24eb46e1916b8b48c0
BLAKE2b-256 7367c81d1fd910ba8048b0926f5dc93b0fa9423d98116dd1a49ec6729aaadb8c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4a008dc10aaa3a05d878c3ccc85a8bf55b161fa5327b015f3e6092fb25e3e695
MD5 8cd0ed73f82cac58c7a3c12f73438eb7
BLAKE2b-256 30eb540408832a243c08422016e6475602982ad9e3f4464c038ad09d0a64defe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7bd2898ed44fc9ee0908c636a712007cee57b01752220f107fcbc7b4dada0fdb
MD5 7eceead493157bd407e455cf75cf14a8
BLAKE2b-256 993918d3775928e38ef5d9a4809a1be0db576888168df11fb1de432a9d5eaf93

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