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

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

modak-0.2.7-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (747.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

modak-0.2.7-cp313-cp313t-musllinux_1_2_x86_64.whl (861.2 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

modak-0.2.7-cp313-cp313t-musllinux_1_2_i686.whl (906.8 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

modak-0.2.7-cp313-cp313t-musllinux_1_2_armv7l.whl (951.2 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

modak-0.2.7-cp313-cp313t-musllinux_1_2_aarch64.whl (852.2 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

modak-0.2.7-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (758.7 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

modak-0.2.7-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (857.4 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

modak-0.2.7-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (691.4 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

modak-0.2.7-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (675.2 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

modak-0.2.7-cp313-cp313-win_amd64.whl (487.0 kB view details)

Uploaded CPython 3.13Windows x86-64

modak-0.2.7-cp313-cp313-win32.whl (477.8 kB view details)

Uploaded CPython 3.13Windows x86

modak-0.2.7-cp313-cp313-musllinux_1_2_x86_64.whl (860.8 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ i686

modak-0.2.7-cp313-cp313-musllinux_1_2_armv7l.whl (952.1 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

modak-0.2.7-cp313-cp313-musllinux_1_2_aarch64.whl (853.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.2.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (691.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

modak-0.2.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (759.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390x

modak-0.2.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (858.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64le

modak-0.2.7-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (746.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

modak-0.2.7-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (692.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

modak-0.2.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (675.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

modak-0.2.7-cp313-cp313-macosx_11_0_arm64.whl (622.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

modak-0.2.7-cp313-cp313-macosx_10_12_x86_64.whl (637.0 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

modak-0.2.7-cp312-cp312-win_amd64.whl (487.4 kB view details)

Uploaded CPython 3.12Windows x86-64

modak-0.2.7-cp312-cp312-win32.whl (478.3 kB view details)

Uploaded CPython 3.12Windows x86

modak-0.2.7-cp312-cp312-musllinux_1_2_x86_64.whl (861.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

modak-0.2.7-cp312-cp312-musllinux_1_2_i686.whl (906.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

modak-0.2.7-cp312-cp312-musllinux_1_2_armv7l.whl (952.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

modak-0.2.7-cp312-cp312-musllinux_1_2_aarch64.whl (854.2 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.2.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (691.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

modak-0.2.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (759.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

modak-0.2.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (858.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

modak-0.2.7-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (746.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

modak-0.2.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (692.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

modak-0.2.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (676.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

modak-0.2.7-cp312-cp312-macosx_11_0_arm64.whl (622.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.2.7-cp312-cp312-macosx_10_12_x86_64.whl (637.3 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for modak-0.2.7.tar.gz
Algorithm Hash digest
SHA256 2e1144fbff2e0777f7c11b4e1687876931265ea56fd7330b1cea47e86784d92a
MD5 2c3a7e4ae7155c681f2424a78152a748
BLAKE2b-256 e2b575621e1ed06d665a07ebd815971af82d61b8675e5e16daf4f20b0408c680

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 24b0c64832f0602b5b9806690f6ae42b001294f7b011789c2d25667e3a315e1f
MD5 bfa0e3909b42008ae1d78f1474d0cac1
BLAKE2b-256 0b55d08e8d9a942e61360489701d0ce65da85dd8ff017b7a8075cefac2d65db4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c75ad7a060953156e77e8469a1903cffffafd55e1334ab78334ac9ef9197fc55
MD5 bd9a03cfe38899554bade6a74d2122f0
BLAKE2b-256 011f004daacb50972163154765822ad1efa4f3dd0747bd6bc6efd1f374009529

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a3f2188c47eb186c9403c10e49e0575905289da66a33dee24909927e757d571a
MD5 e581d57906596ea1cb5e7c0c44db25ed
BLAKE2b-256 74316aa0e2870c2fc69d03fcfbbfe20467da9c61c846febf7ca372a89be699b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 ec27e5346251cd4644a5eb22ee4b4599d2b8899b8dda39419815a046d3986794
MD5 3834a2c428e68e5c307c8be1aa01c48e
BLAKE2b-256 e63989c90dcfd9e608f8a18e5742411c528e943ea7fccdabef9bb31bf06f1e7e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 7bb2b4ed2507f39476966a4b4d76276bb6721994acb33c5f48fad9daf2f70ce5
MD5 1a717595776c384fc524a403250f23b4
BLAKE2b-256 6b741f015d7ae286e5ba456a20bf870d514e078141021ed41638b10a94d952f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f447c5076ca9e57c9eb9ddb749272c31440c33954450a0e38b96e8bbc6a223ae
MD5 a761f2ae6393164f4c166f75e8c87c44
BLAKE2b-256 1bdf8a6cebe19d2131040c5e269c1c57a4dbe01920f0250a71e8645ea3139232

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 eb420b011a74c7245331ad64842053cd79de515b985ae9977882a6bd47156c55
MD5 91bb576e62fd38a0f4f48862189da593
BLAKE2b-256 54a3d6ffce105f1ac30c7dcfbf0e42208db2467ae150d362c40ee59572718421

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 86349b9938eaa44c2b06f9f709fe24b74fa8aa4f1237e681eee5b0b595974093
MD5 2d253515cf3ed187212be8665d116dc0
BLAKE2b-256 2302c14f0f49feeb07a8c3fd924433e0e79b2a666d0ff5ced2e1656016a02048

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 03e97d6696ff6299ca9ef9233fbc48339fb6530584fe59bb17d738b5d8f9b81e
MD5 53a4d200c86665473ab2a36b74342d07
BLAKE2b-256 4d5d97543a89ff70db98a8b140827ca50827268650320ad4b39dbe5440e8429e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 58c49af4d5fc5b01d2f59bf71242f2647b6a564240566ae49b90e22132d7802a
MD5 98d420be96700eebd3b84f7a50c57688
BLAKE2b-256 243e9837bcf30aabc735fbb89c73101ddd3c60b3f0bceae71a5f77908adb802c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.7-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 487.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.7-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e3ee0d7ca76c5137bcef0e9f5ffb4e6f61fe8e90432d3a0a3d9ebdb565b26373
MD5 8c614c4d6ec2946efe481569009eebf8
BLAKE2b-256 4e1fb4c2b2e2577773940dda495bf0302ea6d756eb5f150cd51ec43b9f38f83e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.7-cp313-cp313-win32.whl
  • Upload date:
  • Size: 477.8 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.7-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 98751ab0644ce9beaf3c376cf050cde75d23d3340bfe08645c00caa7255166cf
MD5 43dba71bac19a28d37fc36f917c973fb
BLAKE2b-256 b4cff2afb74107fe77716c6e5611f761f7d62037e5fa01356ab2e66e4a89245d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 aa408dd0bfda647dc558d4d6088bd2c561ebef3e2b1b85831b9461adb490e04e
MD5 41c7299552aa5727962224763bac1167
BLAKE2b-256 91b87b8b9ffcb6e9456c54204a00165634d2ff5c0bff9cbac016d166c42f2c36

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 9c309687ddb8b0ebda9590971000b0237a3458975fa9cb284609245825900c0e
MD5 5fcafc6c676a65ff19a9474b7cdfec7f
BLAKE2b-256 95607421ae66ededc5512c4dc4811be8fedfb35617f07f6b3d552e3827b0f122

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 f5855671fa61267555436014319a0af62db2a1108bbe2c94e57bad8467e9ff35
MD5 9f54f86fc6bc3c5a68ab0167d408215c
BLAKE2b-256 71388130cd671c00ab292d8de46d6215ce2872f25fe35ce42ffb899a1a6088db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e21ea8fa0e77110570c0cd8b9689141ecf15a50365940b58ffab779fefdaea41
MD5 1065fb6b75745b090f708bb6b4d35076
BLAKE2b-256 7abef878caa0cd1ea285cc7ff2f3247a96d43e638d4e45ecaf8be33ee3875691

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a9c925e27ea0c201d6d277be5b522489c929fc3a0b0a740828b057e3e703997b
MD5 0db983ffa75870b97f0d087c4b05fcbd
BLAKE2b-256 213b0c8c00a83920c4be95d49c72a44ec2e73fd46d1aa2c250fa9ba8fd0c34df

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 9f9a0eefd506ce90d6b6e92fa8495ee4ddd2113f3bf91843783c994f3587dc75
MD5 8064a86a2747669341572275c65762ee
BLAKE2b-256 2595dc048d8ac624d8368cdcc25354a2e4c2ea969f9cb1199405120f950e17f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 4949febcab8238e901bcdd7a05481e56435fceaa7fd44f8dcee453eccdc96622
MD5 bb3792cd4f232929791f7c0982df3508
BLAKE2b-256 ac3297c3be47f26a43f23487cc66cd943dcd118beadcb5b7aa318cc1706dfe49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 64d68e2749a77cc7f163fe9b89f056a1b3a47437619c73e90b37aa552e8d767e
MD5 fa29478de532cdd70d503aa3f39b24b4
BLAKE2b-256 66eb8882cb123bff08569f55dc2b002992253b55ab9118c330402d68bccef53b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 0db69ae12e464333157fb207d66a12f78bea017aa0c716681d68d64fcd1aa6d8
MD5 51e7fa3e1a85de863303253bc412518b
BLAKE2b-256 4e49594a408adde9e9f9d5cbfb1853bef44d01b71d3d08ee9f1637ce8bba1f61

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3f49ef7cec0e95412bffef12766c0dce81575169c9623062e35ce2a07bcd06b9
MD5 c1fc7095b18f1122a726494325d9a1c6
BLAKE2b-256 150a58a53905fdc71a7b5184202bb2e313a69903635a95d91c553e823b3bddb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4828d0e45baaf2d834c71558bbdf6ca8101e4d73bb8decc1efeb20a6b2bdc1e9
MD5 84fcef5e713f28c29698c757a5df118b
BLAKE2b-256 007e18a1ce484b30e3108441bd78d35709d7e0fcf904345c89468ef3505e9c60

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 93bc99b60e80ad949103c28aabf4549ac4ea2b1cf44164410b9a0312170d2af5
MD5 fe7ee80eff7255e5f3dc327aff28b70f
BLAKE2b-256 49d0be4b34e63c89ea5b9f6932a28b02cdffe72eab16e79a595256b2fc233e80

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.7-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 487.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.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0c386a6765eebabc9a30d2be641198ee13b75004a17b1b3d3047d2af5094c833
MD5 f3bf260b8039ed72bb35d7d31e0062f1
BLAKE2b-256 3d9cf82dec3b4d3607afc3ec882d98dc593f1343868ed33ac0135fb281846e86

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.7-cp312-cp312-win32.whl
  • Upload date:
  • Size: 478.3 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.7-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 553ecb36eb861cfb42ffff32e4e2cce0e5e8d4f60f2f44abbc803a4acef1844e
MD5 0e25058880d724728f79290a321236cd
BLAKE2b-256 704cbd84c43a4239de500eba5f36c4c6eadf7809b1c34d7179c523abcd0b1d35

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 82df9651afece8b0906ab816ad42289fa18b1337340f325ea3e06f6d02eac26d
MD5 ac960c595ea9decc69f70eaea688b32b
BLAKE2b-256 6dae6a1db3dfdb706cb496675ffb77b0c11e5b1dbb8c6f4ac80d857f08eb2f7e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 b90297e473266de580cdb72ef51ef9c0e1451d4568604e2e8680bcb5cf281411
MD5 ebd6dc814e922cc6eaeaa7ceb0f467e0
BLAKE2b-256 f12b288ebecab4d92e25434e6b50f278ca7b81ffaed74562475d50731fba9692

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 a1916433cc66f05de211a31a991df70811f01facf77e54cb0422b16617d49b8c
MD5 286129155867efad8a5f10afbbd06737
BLAKE2b-256 b39175599f3fc72b72014544f00ce26e99f59c12cf97edbda6eef90a528eb839

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c42f7d600f90825e84c5136d54c38734198582ea71a47f29d465aa87de0885fe
MD5 850614030abf0cfa4f71d47e224b29d2
BLAKE2b-256 c3c602768782c97fc0281515668d9e39bb6c90e9083ca3205c84a6e1fc90e942

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5c9a94c6b062e722b28bb9044453434ca85cb7392cb229df63d93d565e3a2b54
MD5 66177aa8e0a48eb852ca1aa198eb313e
BLAKE2b-256 d225f9a57030c6a403a62407d09cce3b03930397c4be434541c17efb14c606b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 c14cbf116bbb601bd8e37967cfe7e50d412c0b03cb2cbf6d7305f712e5843751
MD5 3246ac7462e6dd9a1effa7ae4d0cca63
BLAKE2b-256 1280ac439a01219de612a7890e8b92bbaf0fbfed0cb96065f9f208df020166f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 210fca9f7df83a2438158be31323a9a4ad72faad3b9ac1d30d1d34904ae4f9f7
MD5 59164d5b2afc61ff441ecf41b8281363
BLAKE2b-256 cb84e22000c6fef5b0cd088dfb5eeb3b6b13d2a1728ba9572cec011f28019333

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 485524afe9209d82bc3ce35edd3cc7715ddacc9e42f17176b9a1c323e6811535
MD5 50d0ee9203a27892857f4e6ee94a4cd3
BLAKE2b-256 75d97ec4942254c1833208dacc3188eeb990922faad3a9116597a090a906aab4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 14886c03788dbc96c3dda89f794f55aa2dc4bd27cc1a4ad3eca618a84b03c5ff
MD5 67175b7dbb30292fe38078f8dce034f6
BLAKE2b-256 3a0b8c9097621086ce3cf79de2a6a024b2bbfa1d22b9a866f2977cb58fe397d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f71270f922aa8b2f16fa1a1d485a47cb0e06bfce3afe7a5434fde39bdd2f18a0
MD5 4020ae892d11cc720f81c931063bd839
BLAKE2b-256 c2a940e375df69e58b9ed00254ccfa427119fc35d221daad4f169639ceab1e0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6333b5495e13f9b1778b95fd84298f154e59f684093db5965884cd6e394af97e
MD5 69f0222045f087677616cb8e21ca7aa9
BLAKE2b-256 26bcabcfb7681f3e563378b05aa48d200006ebbe05efe367d30a95c4c9ba553a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.7-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 84c4ae3d9374c69d517939baa6fb079a5c44958403809c8c4d20fde310abaebd
MD5 48112caee4ee7114100dcd4af2a15432
BLAKE2b-256 6e9586d4718006b1047cd0c9dae0eab3eb049980e5b2c1c479b7b043e3ae9a11

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