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('example1')
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('example2')
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(
    'example3',
    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.3.8.tar.gz (46.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.3.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

modak-0.3.8-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (1.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

modak-0.3.8-cp313-cp313t-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

modak-0.3.8-cp313-cp313t-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

modak-0.3.8-cp313-cp313t-musllinux_1_2_armv7l.whl (2.0 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

modak-0.3.8-cp313-cp313t-musllinux_1_2_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

modak-0.3.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.8 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

modak-0.3.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.9 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

modak-0.3.8-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.6 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

modak-0.3.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

modak-0.3.8-cp313-cp313-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.13Windows x86-64

modak-0.3.8-cp313-cp313-win32.whl (1.3 MB view details)

Uploaded CPython 3.13Windows x86

modak-0.3.8-cp313-cp313-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

modak-0.3.8-cp313-cp313-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

modak-0.3.8-cp313-cp313-musllinux_1_2_armv7l.whl (2.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

modak-0.3.8-cp313-cp313-musllinux_1_2_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.3.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

modak-0.3.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390x

modak-0.3.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64le

modak-0.3.8-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (1.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

modak-0.3.8-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

modak-0.3.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

modak-0.3.8-cp313-cp313-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

modak-0.3.8-cp313-cp313-macosx_10_12_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

modak-0.3.8-cp312-cp312-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.12Windows x86-64

modak-0.3.8-cp312-cp312-win32.whl (1.3 MB view details)

Uploaded CPython 3.12Windows x86

modak-0.3.8-cp312-cp312-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

modak-0.3.8-cp312-cp312-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

modak-0.3.8-cp312-cp312-musllinux_1_2_armv7l.whl (2.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

modak-0.3.8-cp312-cp312-musllinux_1_2_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.3.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

modak-0.3.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

modak-0.3.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

modak-0.3.8-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (1.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

modak-0.3.8-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

modak-0.3.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

modak-0.3.8-cp312-cp312-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.3.8-cp312-cp312-macosx_10_12_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for modak-0.3.8.tar.gz
Algorithm Hash digest
SHA256 a6cf0fad508cb750dbe3dd340398960fd84df86bf2815d7f535a27801d2c66a0
MD5 634b17ecb7ac1ac47ad18110f4177ddd
BLAKE2b-256 21e692596759c82be492b5d062a8c0f126fb390a4a79b71800e8ba482d0abfed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 af68852bd08e8c299da2402147bc6737c1aa7dd6439b2ace9a9417bc368c109c
MD5 a96fb861dea3d5125b6711e3b54c6561
BLAKE2b-256 a1e8795183d88ac0fd26cf6909845af4cafd4b3fc80a545a30b91be1d725c0b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0920bfabe299f3c5ce5cefc5d7cab217838bc2de87d537d523e4b980c61621ec
MD5 c301eb5a6221a561d1bd5daec1742ce3
BLAKE2b-256 af85416d0a87afaedb0aabf89145173595c442eca3dfa4f276a2d7987c75287e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 72129994917b6c7e92e4cdbed1ddacacb082e8ceeb9ffbae5f1afdbd75571729
MD5 59f36bb67b8ca4ef02c7874a6317f470
BLAKE2b-256 a6f94af3142cb60b59b9bb4038ecd087b3384dbf8140b1042ab897b68ea836e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 ae3dbecf2734d2cdb73ace90821f0232a89dba0fbea6ae49ed48e3e65233c4e9
MD5 a0d92d8c4af7cb45c1b33be38b2b67e1
BLAKE2b-256 128f5214d3414b0fb34277f588cdaaa7e16ba7c60f3060d968b28dadd1ec7e91

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 6d49f0e9336e8e3e9ed16c570261e3efd94c87eca78db34205fadc562667aa2c
MD5 b53264acce0e4df0c488ace91821a5ea
BLAKE2b-256 c68f4fb39ea110e5ded8016b134330d82959e0f4791084acf5f7faa041bab6c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e071cdcc94ea52a585ced9b8ae425116c7c1217fba0e20f185d721631672ea3c
MD5 4ae39e4011b58e2be57eec4abe1f5414
BLAKE2b-256 bb08b0843ebf0a14b120618da303023c0d2d72e2a88caf53247e4e793a0795cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 e07b203510975368b6e9444ed4a0d313b9d47f26d57005a2404fec1403ba7609
MD5 46e751a402cfc7e25e89990abcd761bc
BLAKE2b-256 52b336c610642afe17f8eef3f7580ef2fdda5424e750188a57bc5a5e798fa030

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 582a20c1abae341b763505e38aff288c46aa064d536861054b7920c87b36f870
MD5 93a168c6e8e619d727c2a28d27ab2995
BLAKE2b-256 3737781aa4ef1657211e21ccfa06847a77fc425222217023c6e21d496955dd22

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 504fb86d1301585adb201836e6d593dc59e0bc93d31ac635623f0c85e2017d9d
MD5 4ba81f9b430386de8a9cbe5bada53308
BLAKE2b-256 9648301ce9bf3af7f21094acfab032a97a8bd1d4fd85b1baaab3ab817df09da6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f121f9796a04e8a1ef75673c8473e3ab686f81e3f0a5f8c7f93f33adb82fb135
MD5 51dfcb9e8b95ccc0622c9d8c1ead9d4b
BLAKE2b-256 d124b74688f4020fa5d697d41c3e0403e2d86dca61f1fdffd9bc03a61823e626

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.8-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.9.2

File hashes

Hashes for modak-0.3.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 afa9ff375cafe2830e75a25200c1cde183592f538078ae3c3d48c818371ae30d
MD5 8a20b6a289f7eedbc8a18df1164d8602
BLAKE2b-256 2af9eaec31031fadae8fbc0467ddca8c0b9ac8ec69a7e4e1247ec6c43f6b9080

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.8-cp313-cp313-win32.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.9.2

File hashes

Hashes for modak-0.3.8-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 378b078be33c615f49a32fea00560fb883d6aac33fb2a4514b058c28966dd399
MD5 f502df3ce2b16ff4ac1fb87cf559d83c
BLAKE2b-256 2755158d6a075a3cc812a9563c89406c678a9a4383df11898e57061691908b99

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 dc0e6ada725d718733dbc818e914313da50aa73443670d9d07a4ea5e109d9f46
MD5 d16603bf2100c477556879c2902da604
BLAKE2b-256 0c6759745b64138279dca4d35a995b4aec8e9ff866db1514f11f7a11a64a79a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 68c33f1d4e2ce15949b87e039aa8a7cf26ec0476a6522404720b315bcb364fb3
MD5 34bb51dea7ef0d022889cec7a4d178dc
BLAKE2b-256 e3bfd749454c12a6969b17fff6e1d2a09972bf1c00aa13b14610555f36591f0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 808a68f726b144b5bfa1bcd6f19db03b92465ead5bcea3d1c01bf907a8673d2e
MD5 b01585a5584f9e6c9e62bf32e54cd29f
BLAKE2b-256 afd516665bad6550893847155c8d9c61a3ab043fc75ea5c7a29ebdc0f7413c45

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8fb574eb6298ec24d178d14bb4ec99448243f293558bcc0933525b69576dffac
MD5 6c73ee713949d15e8a24cc7e4170727c
BLAKE2b-256 aaaae8df5d0698512378ce5b719fbbd19ff5f20c5bc30adb0082175cc2138a7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f3e34446e3a1696caf10c127d0989436b284b57e860d0371fe6b5c8a5ca15c37
MD5 67f6ffd2d1a18577c9b482b5927aa5af
BLAKE2b-256 53fdc02bb993e1f2221262f0e8695d375f755a179844fb337b16b0cea6d4f511

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 5f98c468d1e51f0acb6dcf5b4c18cad0143d994e23be6d309fc91c8cdb0381f7
MD5 700cdde7fdeba566f1ae471ea3558075
BLAKE2b-256 205fe9b780637148696348eace5f06cf06bc22a80db6d1b2c98b0c48a68a0dd0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 ce6fc7cc2f861324a046bdf78d61790c287c2a8f1130ae770ac05f9c006bfb45
MD5 c14320ac5648645f38adba51fad4d728
BLAKE2b-256 877a7f92dc345ccaa66361ad1424c85c6d4a532de512f6095f76007d3a826f31

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d3d9f98cb316a7b340c93c9604eee9b69b45804344ea017efed09c41910a7f81
MD5 dd8e0c4b1916ef9032f1e97729f0406e
BLAKE2b-256 c06d82a5e725bbbafa3c89c6a6044dc79a6fbed03f21789e88ab902343d10a5a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 4208c8a3148ed9cac0b078152688056d5de472cc111dcdcdf01a4d439c6a5303
MD5 87e8ff3afbb354e8fd4b1b632c96443d
BLAKE2b-256 7a32eae6e5fdc1578df82de43f7ed5624b0730804fb97ec8a7494919fc16a270

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 74eafe521500882699b720ac2e37bcb21caee5bf0c434b180acfb2f948336381
MD5 032b273b0d4ff25d60bd01a3b9ac4e03
BLAKE2b-256 27479389eda62a1d882d36bb0b3292b960600704911e6fb0758650191cd489f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3eaac82adb94776b91d58da113874a487ec5341e4cdb68cf187e716559d2e1f5
MD5 b14a01b7346278744bf8b4c028f99fc8
BLAKE2b-256 e4af843f3ccd1a40efd8f51d2e711f8d8776e3834eb22f00ef06f918fe27b262

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 313ff9ca82e6c9db1cc8be9bd924cffe3a94a06096fc1c58eecd39319629e23a
MD5 a11bd8b2a182aee129ad43dc9a5cc235
BLAKE2b-256 fe4aa0f2fcd7111ea844a863b6f75bd5b466257b288961ade14ff5971a55d298

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.8-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.9.2

File hashes

Hashes for modak-0.3.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3c6024d9b86c4f849fc082b079ae4302df06b681f2adb42eeb26b4e92de81365
MD5 d720f2ba74a7756807068e397842b996
BLAKE2b-256 52d235f72e609fd383b2631f8eaab6fa0d218f49315452dba1af3fa20b9c0cec

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.8-cp312-cp312-win32.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.9.2

File hashes

Hashes for modak-0.3.8-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 fa72f22abc5e0ff1a23a7992a594e4565ccf83090a02f8de10e9131896289261
MD5 af938e2adb5bd66a18badf69088e6e4d
BLAKE2b-256 a08c9c6989b862c905df6f23bda44fe22cf78450d112259ab6342391a7796dce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ce75300e518a2c5da078e8558e56feb67bfa5cfc9ba4791dee0c786c9453e814
MD5 0fdbdb8581aaab36c529e5e0302ede7d
BLAKE2b-256 ba62a947436f788c6c25f2e4735fa52b81ae5522eca3abe5c3610f68b6bee619

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 e87dd12c2fe3aba178a19c0d0890c04a344690e20eeed0a2b9f3508caff114c9
MD5 ce61aba480c7516de2d66c3d5245b222
BLAKE2b-256 be6a6e5b51406ff3923de65c226a37b7771c512677ccb014884eab82fd85013c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 659786f3ade625a3f81e5ba251f5790690ea05d895de5f5640aadf50035ac0d8
MD5 71bbcc79cf5140f21a22a472b22b5002
BLAKE2b-256 4083e0a853b10d192dad289ca67d324918bde8c504c09ada53f2270721f3aa73

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 cb8e83ac134849d42a504cf05ffd030a52b4fa818ad399c174cf100839b8474d
MD5 6a68662e645f29e32eae277bf96c5ac8
BLAKE2b-256 ec679b98d917525ac6ca9a693abaa303ac02db9fae4c11a6a7da04efc2c3e058

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 01acd0f840f74b3361f6099eb708ba7a2ff20f3a087cc613f270c1ac114fbeab
MD5 bbffe6076596640b62ee425046df60c0
BLAKE2b-256 960e6e887a46579f8b59a28589f4b45d0c2e34054dc461bf3808bb1d82923352

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 c0c846ec3cda74024338fa153b9407689ec6bb7b9db9a6ff008b6766504f030d
MD5 aeab868f64b56226296e22fb52d8ee7d
BLAKE2b-256 0c5c0f73d254327eb680d2907b5b114fd31e3a5a57feb4565392bdc93fe318de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 c11f6a60e5dcb0e0b6c1b3a288accbe0f0c10d4554c0af4f90a69e53725910b1
MD5 867ad0d3167391c1de62bc09d71026b0
BLAKE2b-256 952926e37847f18359d030a82353759c93798fd772223afd1399daf41bb5b5c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 272e8a7da4faf5440cded3a430ec52257d3e7cc8ccf77f7a496d4b8471abe799
MD5 08853f816ef5b07c9d57411180a850dc
BLAKE2b-256 a9f5c65376437b0369f880dc77573f444599916bea61d67c682206bbb8634491

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 121d1e66b5407360e3e1372e0a59d92d875e602a4b6223c313d9469a3807d4c1
MD5 01c6e6d317b6a013d004cb3d8cd3f70f
BLAKE2b-256 1afb00e2cb1be12a593ffeb6114df295fffe5b648b8dd42dac3c3a87177c4731

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2754e4a3c847dabbe11cf7828dcaaacc94c26c72afd6c98a83ea4c3a161f1805
MD5 5349c1f3f6abf7159e9cef8ba6948114
BLAKE2b-256 1085d0a9817c8e3f96b8ba0e012cd84d8435b134e07555fba04752bf58b74208

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 11c052303cf1be49fc59c1cf724ba275c4460b49796a932f33ff61ed2f627a3c
MD5 64cafa7c368308788776cff6cf67e16e
BLAKE2b-256 c7c5f24d88f0ecaf15257ab4698fc263ba478184972a39d54de692f1ee45c31e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.8-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b64b2b2ee4afc7abe4b741bf092ca3dae4a871c5e9327ede861f2568f4c31089
MD5 3370ae9cb317df0fc557f7e98e27e8a6
BLAKE2b-256 98d39ce9a4168ba154ae463d4352bf2f9ce23d72a50d385966b3f3e42d02fbf3

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