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.resources}")
        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")], resources={"cpu": 1})
pre_b = SimTask(name="PreB", outputs=[Path("b.pre")], resources={"cpu": 1})
pre_c = SimTask(name="PreC", outputs=[Path("c.pre")], resources={"cpu": 1})

# Feature extraction (can run in parallel)
feat1 = SimTask(name="Feature1", inputs=[pre_a], outputs=[Path("a.feat")], resources={"cpu": 2})
feat2 = SimTask(name="Feature2", inputs=[pre_b], outputs=[Path("b.feat")], resources={"cpu": 2})
feat3 = SimTask(name="Feature3", inputs=[pre_c], outputs=[Path("c.feat")], resources={"cpu": 2})

# Aggregation step
aggregate = SimTask(
    name="Aggregate",
    inputs=[feat1, feat2, feat3],
    outputs=[Path("agg.out")],
    resources={"cpu": 3}
)

# Final model training (expensive, must be isolated)
train = SimTask(
    name="TrainModel",
    inputs=[aggregate],
    outputs=[Path("model.bin")],
    isolated=True,
    resources={"cpu": 3, "gpu": 1}
)

# Side analysis and visualization can run independently
viz = SimTask(name="Visualization", inputs=[feat1, feat2], outputs=[Path("viz.png")], resources={"cpu": 1})
stats = SimTask(name="Stats", inputs=[feat3], outputs=[Path("stats.txt")], resources={"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.10.tar.gz (43.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.10-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (684.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

modak-0.2.10-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (746.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

modak-0.2.10-cp313-cp313t-musllinux_1_2_x86_64.whl (854.3 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

modak-0.2.10-cp313-cp313t-musllinux_1_2_i686.whl (903.7 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

modak-0.2.10-cp313-cp313t-musllinux_1_2_armv7l.whl (952.7 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

modak-0.2.10-cp313-cp313t-musllinux_1_2_aarch64.whl (843.4 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

modak-0.2.10-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (747.5 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

modak-0.2.10-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.10-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (692.8 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

modak-0.2.10-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (666.9 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

modak-0.2.10-cp313-cp313-win_amd64.whl (486.2 kB view details)

Uploaded CPython 3.13Windows x86-64

modak-0.2.10-cp313-cp313-win32.whl (476.8 kB view details)

Uploaded CPython 3.13Windows x86

modak-0.2.10-cp313-cp313-musllinux_1_2_x86_64.whl (854.0 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ i686

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

modak-0.2.10-cp313-cp313-musllinux_1_2_aarch64.whl (844.1 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.2.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (684.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

modak-0.2.10-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (747.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390x

modak-0.2.10-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (856.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64le

modak-0.2.10-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (746.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

modak-0.2.10-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (692.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

modak-0.2.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (667.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

modak-0.2.10-cp313-cp313-macosx_11_0_arm64.whl (613.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

modak-0.2.10-cp313-cp313-macosx_10_12_x86_64.whl (634.4 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

modak-0.2.10-cp312-cp312-win_amd64.whl (486.8 kB view details)

Uploaded CPython 3.12Windows x86-64

modak-0.2.10-cp312-cp312-win32.whl (477.4 kB view details)

Uploaded CPython 3.12Windows x86

modak-0.2.10-cp312-cp312-musllinux_1_2_x86_64.whl (854.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

modak-0.2.10-cp312-cp312-musllinux_1_2_i686.whl (904.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

modak-0.2.10-cp312-cp312-musllinux_1_2_armv7l.whl (953.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

modak-0.2.10-cp312-cp312-musllinux_1_2_aarch64.whl (844.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.2.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (684.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

modak-0.2.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (747.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

modak-0.2.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (858.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

modak-0.2.10-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (746.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

modak-0.2.10-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (693.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

modak-0.2.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (668.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

modak-0.2.10-cp312-cp312-macosx_11_0_arm64.whl (613.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.2.10-cp312-cp312-macosx_10_12_x86_64.whl (634.3 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for modak-0.2.10.tar.gz
Algorithm Hash digest
SHA256 2dd64bbac3e019ee3898e07c68c13c3f3ab86117a1fe274feda4498c78adc833
MD5 6170a551ea13b9773939f78dacca6495
BLAKE2b-256 e885f15d80bc65eca7ee254e858e4d1e7442967268dfd617793553ff05404435

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 22f6e3d18fd28a27a398d692f5d06809992fccd1de6c102e23a52cf3c268ef9c
MD5 c692bdbd004cbb20a81932f2c4eb9a35
BLAKE2b-256 0fc93606739c38a3d16ba27bc258ccf513440ab7f961e6b36586e3c27fce1716

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9241055fd44c605c7f1190cb5efcc970404018c93d7e415f63b5a8e5125e573e
MD5 e909aa17741a345f4d6d63d7ded790eb
BLAKE2b-256 5485559ee2f2adae62f9f1e6dac59d971e9bfb2ee1c9ccd2ffb9ddc4ad93efe1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 004feabb6ee44e9493a6dc14bdfb051057daf3c5d35897991a14ec89e348d19d
MD5 258ddf3f23e055e38e592dfa013a8238
BLAKE2b-256 b0664e37467aaea1cdfadd043a9c19c8164524e568e983838e476f1f153d8df0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 bb6abba4fb99b2a1b5477720f353a374718550b9641f3396be7568ea99828ee5
MD5 897a600261f25978d57cdf8d9ca0e7e7
BLAKE2b-256 5c6947ee0419b8971915ce55444a93b50378e0af1c8607693f2c28582e14723d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 12bc12c4461c6468d05323e772860fff06bca38e7b0896f6c26ebdc1226399cf
MD5 4ba09bdd78a498c9b58b2894bb837f7e
BLAKE2b-256 050c3d59d73be2a5eb20e22dee34de90bf1654c152c4186b39da431711b0dd93

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f5513fa08a5a57c938f0c07c2f5aada7d89895578589557cee2928edf4170c00
MD5 b7c7c39f89abce16a079a72055500608
BLAKE2b-256 3477d51b50c4d70c7d6804fb25f2d1c31f7026bb563fbce9105e404a15854136

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 86cc55c43b1168060cc8c2e3b098560585455bc010f2498160598c27137b7c8d
MD5 27d0449b532ede61bac70cea56fe7110
BLAKE2b-256 a12108102feecbdc1ddac92461e5a9f5e44ddfa74191621c4fdeae8c556ba8c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 ef58f8aa9c414208d1a8bb7bb8acd4a0bc378a62a7837e2b7fc5c5cdc0d40abc
MD5 a9916b9757875fee7ea63ef998c929b7
BLAKE2b-256 5fb69a2519690156ed3c84cb8bc2ed188e374b0faba0cf9ab8de73cb49b73c54

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 60c9440c5616180dd550d82d726b691ae7b64bcbbc209725253011ae8b557e90
MD5 a5de43f858a978243e151a5f67aa5445
BLAKE2b-256 1b3fa52257f680f3fe16cfcac10bfc3307587240e85c8065a1ebcb60c1e3faba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f102fde5fa705787bc4795df1d2c283183a1a2e74c2853fa752db584794816ac
MD5 e9dfd96b3f6a2021aa08ba45dd86932f
BLAKE2b-256 539ccd00c8db1c82fa08a8b24b627da12026c70e557e4e8fcd87e8a606cbd835

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.10-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 486.2 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.9.0

File hashes

Hashes for modak-0.2.10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 100ef16a339cee41abc5d8bc4136dcefc734c0272428a8a49b1e4c2cc02392db
MD5 496a097f8db70f3ece823723e3637ef9
BLAKE2b-256 15367bec3ac74a188315fe795fc2f861c3886318d4dc2b87926b3dd6262c509d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for modak-0.2.10-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 a304d2cbf234922547b6171c6c6b3771e5ace6d904c82a3642f31eeb12ea6575
MD5 856a20398cf64ff9c328ed2bd4ac8267
BLAKE2b-256 129fc5cc5a586b2a5a836bfa60b8816ddbe6e25b2d5db39d47f608fca0c0088f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f443dcc596f57514bfb2d9b51c98c51ad5d4713d17baabc10a02776d84624062
MD5 e3be2ba716f6c65a3fff458fe5264545
BLAKE2b-256 d09e4f68c2d43aa6d1699506ae3f96355b2a875b9f7afa9969643e707fbf6f3a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 68bf8b99e1f6d7a78973fba24399eb525f75b2fef3a0d75f32de4300bc4e9101
MD5 fa7c3230c09ebba540b282f38b4748b1
BLAKE2b-256 edd95d62d7b7b918d88fbca91917f5db465d1c454e8dabcd1b9c28cfe5837699

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 46a582f57a2a271bc67b89d41d4d1cc880f5fb5095d6b6fbcb1d89e4d092f0f2
MD5 f9085db51c0c29b2a993a575158f2fcc
BLAKE2b-256 24bdc78477e5f7a75c308ea242eff4a334e62689e0df3b2d138313cd43b8c2f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 058efac2f8241e63fcba188d2cbb30d57aea7a4b40139c289cbe9e89fd3ca9d5
MD5 3008c83da056c5e70db725486a6ba8b9
BLAKE2b-256 c566caf91118a8256e2984a0874b027b569db67282aa42637c56feac6008b126

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a88b96b29661391a6730bf6dfb67b8b7daa095d93d4d150bad4607d6d2e13909
MD5 50cc1db42dd45de90758d41189b15eb7
BLAKE2b-256 56fe690f3288ce271bf4175d340a711ad7cf1f975a6e0a754245b2e73583ce9b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 9c3ad89f99cda2308ce77c30147f0e06763fd98f425502898dbe4b1665112771
MD5 cb8e9cac7f64bdf2d63735b5d4e0cad8
BLAKE2b-256 bab188caba49bffaef607dccdc0fb875fbd7949e27c1d4df3b02b9759cfad52c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 89118ee607a6a1e3b77a2a80814b1a2748b6eeef08e66ecc79af9285646f5377
MD5 8362111a90a98a4e1d1e30adcd8e366a
BLAKE2b-256 9f0d07b9aa0aefd51a5df85d8d9d6bf99f866d8cec44dad04b88cf4513f934c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7d2c42db0d4b161b74fd99a162fc865b8787ba92346cd082dc28eae46365bdc1
MD5 de2ccc86d0d98adf05c0bc06f823f9f9
BLAKE2b-256 9bfa671c11b7185160bd62c497749d27f34afd579908bc2421f0e1b97360fbca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 50a6aeaa1ce9cc81faf048cc0a28be4e539ecd4cc51e4544400c386d1322dadf
MD5 23d10b360de0b515b49b08583ebd1909
BLAKE2b-256 f9ca82782445ab5415720296225dfd758c9d2b4f0f91babeeae20f1fce99db7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b55925e29ffdbe79f67fcfa7b63fcaf5bb4b9af5c14f25d4d11e754b7f705c69
MD5 11a84d9b45157bc911d8748b545199b9
BLAKE2b-256 6d85d7d8162cae8f56fc56221ece548d85aae8866907cb1008e59b2400efc2cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 de467200516b90d9aefdfc5307672cd7467f83a8ef557676d235071ff26f7acc
MD5 a6a73312ef8ba228b8e0c6ccc7bcc287
BLAKE2b-256 af9212b9915e6bc75a2962879f9331ebfdddca90468015d7c46e17142897c745

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6e977bae02df672f9af982f04f98cabba3aaea217e659d0049d34fd08f6e3839
MD5 04fa013411d41f374f72342192705674
BLAKE2b-256 e438c918fc762c0e55a0c9a75283cc07abc61a38b587766e4ccd3ec364ff8f7d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.10-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 486.8 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.9.0

File hashes

Hashes for modak-0.2.10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3c9bafef07503e73b782fa4e5bf956167c25fd8a26e295256f28bce5dae2109d
MD5 bddaaa9d275a6aaa2bfb73b80bf248d3
BLAKE2b-256 52164848f29d385f2fa8f962369f4ffe43d44d486bf4814f32af17950b581ad4

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for modak-0.2.10-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 f0a4d5ca20b644c9cf968d41c2e128b71fb4923069b533b0b19b194c057d44a3
MD5 ad720c54b6c63f299c0c3286a07abb71
BLAKE2b-256 2fcd96a023a9782cfcb474198d5848b3210ef92608b066c099859d4b41e1184b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 abd7a36ead880902c353669ee1b787bf51dd8168ddc719aaba82af33aa4c551f
MD5 991ccb9522456f1f66fcf7bda84e640b
BLAKE2b-256 15f7c1ac13a8540b7810e9554e60c28c65eaeb753391494eb241ec4c37311832

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 72edbd3c07371e1ec00535d10582f27d4266f1c69d4bfd9d7b61a84405262d8d
MD5 3931b1c631ce85510e38afc383b2cbbc
BLAKE2b-256 dc44ac7909768aaecf89bdfee994589e10ce70da9fa2922f2621dbab4e6cc364

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 eb9242d691e83b4d4ab0a055c5e93221249c65e153873e830c9c76c0cdef1557
MD5 6c7ac0f1688c28d55600a4b071842b2c
BLAKE2b-256 e1b14d56bbffee462f11f5f52b01f09256c6accb22973e938f33465a129bd329

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d84341675933af32132c1a0b159caf312a4a0ab28cdbf6d654b18b122943ab6b
MD5 f42f08205eab3aba9ba79f8ff7aeab51
BLAKE2b-256 bb6e531b1ebdcaadc7527aa3e59b6179f8b0bfd0f34191ad13c576bfee303f8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 acf5a3c7a03e8807611082ecd62fa587de6fa9eb2f1324489312b6b492488f10
MD5 f7ddea80c1d1ea13b0cd4eca08ba68db
BLAKE2b-256 098801053e6651d7c0122caa45defbb190203f5412936e4b25f4fcbb17347619

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 0f441993497ca7535fa7932516265f65fd0d7c729aaf2dfd7dcc3b111cbe3e9d
MD5 5ca64b8fdf172568d6ceb423de91ae1c
BLAKE2b-256 1c1d61f0409f5b78cc1bd15fc8487ad76b7d0c38f9f1d6aff0db0ac15621f367

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 4dbc57fd0ba053cabd221271b475c582ba09f3b15865801484b1a20fa1b76e24
MD5 90b38d97dac39dc95eaeeac9d560ea22
BLAKE2b-256 b837438982663376ab526adcf4d388e5d39e55e131649e390e250820bc105a1f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6e7a59d4877d3e9f547a438643929bab0ea9b1f9ea3fb12beb0a2df1b28e5834
MD5 5c9a785f37b35aa597b4481cf691955c
BLAKE2b-256 e0365510520867bf48364aa16b60d8b43902b645373688837ec59feb26b6b049

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 12923ebb801f01b80ba4e95f08561a098a626c54184f6524c7dc804bb5024ff9
MD5 c0c97dfd6374b5852cb41b70e5388210
BLAKE2b-256 3c3ec1745905e8c667b99a8bf56d3269ec465f9be2ba4592ab9057f7fa134dd8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8f9c8b2f1e9a45d3a788604ee426d39530e80b99abcfc2e5f8f9e21492ea0300
MD5 d8372370e4d69d137e20f0fd48d84587
BLAKE2b-256 4f8827e8a00355603d13aba88662be55a848812531b9d00feb472799ca407558

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9ee2bf82e6baaea526b9aefc78da0799bab0348be5a5a7817e9b13f34c5ebfe1
MD5 fba73c4f0a00189ac89fa01b99391426
BLAKE2b-256 b5aee5ae82b4e917e6f37371381df44b11bdc36537133e3af9778f4548b6fac2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.10-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c05bc164555ebef52ab91b1d71a2ef19747f071dc0f62848622745a6bf7cec85
MD5 14168eb71c32e5f9ea2ceee746ec7d3d
BLAKE2b-256 2a650a9d8e960745f126acb180107e7ded3db0e7c2a40ba0c30c316c049fe464

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