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.5.tar.gz (45.8 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.5-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.5-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.5-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.5-cp313-cp313t-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

modak-0.3.5-cp313-cp313t-musllinux_1_2_armv7l.whl (1.9 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

modak-0.3.5-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.5-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.5-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.5-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.5-cp313-cp313-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13Windows x86

modak-0.3.5-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.5-cp313-cp313-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

modak-0.3.5-cp313-cp313-musllinux_1_2_armv7l.whl (1.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.3.5-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.5-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.5-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.5-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.5-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.5-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.5-cp313-cp313-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12Windows x86

modak-0.3.5-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.5-cp312-cp312-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

modak-0.3.5-cp312-cp312-musllinux_1_2_armv7l.whl (1.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.3.5-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.5-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.5-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.5-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.5-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.5-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.5-cp312-cp312-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.3.5-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.5.tar.gz.

File metadata

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

File hashes

Hashes for modak-0.3.5.tar.gz
Algorithm Hash digest
SHA256 6b05e3ab83dd946f7b1ba746b2fb8a71898933717d4c4644f715cc6ff70bb821
MD5 2d5656c9959147c85c19988eaf6a5725
BLAKE2b-256 fa12715fc2ff9e4857a1631c2e51d48c6c29d4db7a5f3ea3b9f37456796541a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 56bbafd7d51f82d9eaae0bf0ed8ef20cd728242541ca25fa82ff1c999e72dd6c
MD5 1ff371fcbbf1d8cedcf251e1dbfa766b
BLAKE2b-256 e1ab2a518a5a3e32dffbe246428fef377e1a23be3a9cbc187dc65053604c85bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5b5ffb4184e6b02ca9819d3bf0190d32ada569d09e3474b2a8dfa42f79da95ce
MD5 604dbf91084239dbba706f694db830ac
BLAKE2b-256 9560dbb725830c416a1b2231825a37466d03533f536aa64e36534b800f2edddc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 266eefd31316f306affd2f25eef015d5e125e927f85afb655a95e14ac35d9656
MD5 35c0fa040b80f97a2b906cb4ebcdf9b5
BLAKE2b-256 580530767e3b8994b3302037565d671f7329fd6567683f03b0ff4055ac830bf9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 6ab1604f8c1f21ca26a0cf0068cb90b7c802d1dac870a1d7c29f80f3d7eccfa0
MD5 728f8153920ae4bc8730c9620b4e7c37
BLAKE2b-256 97b2eb82b56f72418c8a0179d098f8936ff0e0673b09d961603823be5c8415e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 9f0ce86cec49e51da85852a0e639fced547377bb572f7cd7b48452be01ef0834
MD5 0ca2ac45b87b50ab90ff1d45fb9b22f2
BLAKE2b-256 135eba37ab5eb6606e9e13fd592ba945aad22ea98ba052b522c05ad628353191

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b12c7cdbf664eb24a28faef39516395cde5937982c4c9abf6d0349ba98246555
MD5 098300ca90aa2b20ae587642edd1b0ef
BLAKE2b-256 7b9d371adf08890faa52f9dd0aaabeab339c2369fb3857dee71fc0f6dccbbe27

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 debfe9d17471ab364deec7f402d9d495f5e92b64fdb3899dd668161b4521a1e8
MD5 5418901980658a173ddd6b763cc57dee
BLAKE2b-256 193185be2e133c9cbd9083e3f0d8e7df9dd24e7bd0dd09c670d60a70992190c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 d15a9ad50299830cf7686aa2212d66107349d559c1c55acf05c323c0994ab39c
MD5 7b7d4afd759e634ac92c4900f00ae34d
BLAKE2b-256 0882fca270221d8e4fa3a7d3289d6d5a6bf7889af58a5a95ed0f167473ef7a77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 3bf22236f08a9612abf5e3a1c07f91cece8330e8ddb388b57d93409cf2a061cb
MD5 da839c8d57a0cae16b0f91ebc208b595
BLAKE2b-256 a50e29ecc54ac2768f57893d0c4a36e88845769a1a8b75a511f8139ff68dc83e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 68031d27117d660b489434bebd2a107a33ca04271fe4e31fe8f17ccf634575a4
MD5 5a084fa6574259af26d45231b1a51012
BLAKE2b-256 0a4ae48f50294c2f20a5efd28de68350c21026a7e5d242b1e5475ddb8b94720b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.5-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.1

File hashes

Hashes for modak-0.3.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e7721da841d0d33daa25dc9cd736c8c11682a7525cb0e7008d02365c1a111a86
MD5 bfe1e472f9b8d4fc07c8c1741ca4c583
BLAKE2b-256 6a49f7b3abe518f510b5ec7b21d73457c0cf65a31146e5621640a3a266c3391e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.5-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.1

File hashes

Hashes for modak-0.3.5-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 bd47fa8da6a1e851c09fe635f8d12278fbe2bf2a108e2c6420c4a7cd199ffcbd
MD5 d0afd75ce2720741204f592f0e2bcee4
BLAKE2b-256 d02667747ca6802b758cb4d1b44eed15c11b99df66b63838051fe7ea299059a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a67f3e69345f210099cd93d08cd63688531dd03c5c73cd5e8514c9c45a3b7809
MD5 01aebd301d109e0769d4aa1a915be303
BLAKE2b-256 d4aaba11cf76b6355f4293bb4ef3bc063bdfb5a0ab4c79fe08e1f97685243cde

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 980e8723ea13143343c3736e51245451e6171994ea112fcebd0db45edc1fbf16
MD5 6dcb40e6a2b24b2fdd097dd9182c45f8
BLAKE2b-256 27f73968c0c50280f5c8bd2ab4e061561e6c76f23aa28cc2dc9542ece23a86a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 69d2ef1927417b98b34728aa1a938560c3b0280451d6baf7a85475ccbc46b90e
MD5 a1484bd4913b9738fdbda150984c799b
BLAKE2b-256 1ab6f52e6cbc129012faefa783f2ab0edbe9d51cd40298dbe4a16d32bf0a50c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4b7854d0e7b625a3e41235f47ee15a1d88618e1c20a33e59e868a577509cd839
MD5 e7f86974f814933053031844890b4178
BLAKE2b-256 dbbaa95cf22f2d2f063fa182136a825faeee88637c26102a5817df990ee78570

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9c4fdc883035aed8f85a9f6518479f3df01b570a02f3d9adf2d1d313ba6183e0
MD5 681be94888cecf33df3e5660914c318d
BLAKE2b-256 d8e005259938b83b19b6d3ad2b9a8f82ab47ac545f31c4cacfe2958d6b064a5f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 5168e33ca0003e4e6c16bb257bf99a61bbece2c9c0dfe8c111dfae4d01f1e956
MD5 921ac5cc486df6c8989b5ad4810a721a
BLAKE2b-256 0d3228015955b3de7e79686b7d3bb628891c7ba095c21c53b1ef191b8b5a3968

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 d689427a9e8b4a939d26c97f76ae0e8c0e8ad3a9ebb21b0e23dcb875d93a1697
MD5 61e042dfe18d823e75cc1e4dc5e04c8e
BLAKE2b-256 15b944c4713708874cc8612ae0ac3ef1a10f04c3212ddd8d2e30f51c29737d8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 81c87c168a31d2888769e7b8f453eea8689ebf13f1f869b1ae4fa539fce744a6
MD5 b4a39caa8bcf7883c90c3bb78063ff76
BLAKE2b-256 36f033786884b34f4f87a160c41c0d1fb075b67d793c28d67fcd8735cab960b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 eb717caa75bd95d731297bba6319926456ec6cc90e865073a08fc6395d15b2b2
MD5 62f4de0d6c19b1d9ec4bbedd748eb39c
BLAKE2b-256 866167d0a6ce6fc9e93a11c1fdfe49f8bac2d96b3ed1d4115281b325ca7f4ab9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7acd1aa9c5480104fc74ad7219463957737ea3485e0ebb26d108eb62be06f76f
MD5 9c01a8250727a704dd8fa6d58bcbe6ab
BLAKE2b-256 b8c20dd6458467c35b4b3dd05286c85fecfe55a76cec1474123d6a874e78b529

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 934bd4079285c120774c32173c20d15101c834f92f6cce442fdb67f4070f27e6
MD5 4df0d247c4ee8d9ec23fd601ca9d7751
BLAKE2b-256 29ac8fa82f79e3e470775cb2e20762ab104e8147d9327346d8c11e070b90dd7c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e300f8869d9ba9cc3a74ac79e8c4bc51e58cf69eeb676616683e06b28cde4bfb
MD5 61cda7df077befff1676c4beb6950dcb
BLAKE2b-256 7eba610c65d88be7492794d64238432c72fc2664f81c011d5e89fdccd33d99bc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.5-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.1

File hashes

Hashes for modak-0.3.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 cd6b489a97df7605a227432cbdfe2362bdb8cd16a5c570beb310fda5b508f3d6
MD5 6ac28e4d5321790a259a57da807fa459
BLAKE2b-256 0a887f4ac822913b6ef45f3d0b4dcff20a926c77951bf5bb2ac5cd5c5513b7fd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.5-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.1

File hashes

Hashes for modak-0.3.5-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 e2c5535b85c8bf213e098df64f478603421df6d2da51aee3cf718de3bff0f49a
MD5 c18f74ecaaf106398d09150952c7b79f
BLAKE2b-256 3277f282a09c5e2467fa7415fee69510558015541986322c09ee0fc0f0be49e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c15096d681d62c8b1a1cc38d485fbf32ec771e03a2189c8e91f0b1ae097a4d4e
MD5 5ef49632ee97f612adbf6d5c364406b8
BLAKE2b-256 17abeeb3524121dc3898e488b12e99fad3996c2158b18914913be2e10362c42c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 23998dd6828124c0390fb99b5a082bf15714ff7822fd3a214d120342834206e6
MD5 2dfabcb21e14cab91397f9e7300edb3b
BLAKE2b-256 31343dfd34d3e8401d2c9ac3ac0dad45cc75288fc50a49bc2bc3f618e477580c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 ee774370a4b13af70d87b3404011bfdc5881dbd09c3ab8467ce47c3f117c7c5f
MD5 48441f46385be8c317dc11e1a0ba99f7
BLAKE2b-256 d1b2c4d24c606946072fdd7a8c9f0d253d0c2edff8fe2ef9b329a5501c9147c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a6499e0489b1411010c937c50598aff9127c824908b9e49a756f51fb122cbf7d
MD5 dc92004ff4425a019411ee96841214f7
BLAKE2b-256 17c055f9da495eb1a28a358128e5874bcf9451b2bd52605663a8d457a3bd6a38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 034ca3d1786ab32f43dc47adb3d414349402fd58dfd56ecdb8dfd801575b85c6
MD5 ccfbfa4ce5e90ade708ff3e292c6042c
BLAKE2b-256 b155204e502a765298e6532ac595f15e2bace6004eaf6a989d2cf8ddfe69bb6d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 b65aade8a5201958f71dd8b67e8660693d0bd2aa6cb0462a51cad94af4eab9aa
MD5 42489d089b7feaace703a8dd9c1c10d3
BLAKE2b-256 083c45c3d8e63281019a5bb5e7f4749e35917d2a2c4f986ffc89d16583bfb7f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 78c8ebbd2bda95598c1e0a56943ac74b00c8eaa486597427c676acb79d66d8b2
MD5 163fd4ee022b4f5350bf19314534f8b2
BLAKE2b-256 63de46e5ea89d23cfc56eb8f867d0137b32319e5ecb2a81ee9c70d2e94d10d29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6ceda69fa84457afea8928708822944dacb4e72a9218b55b7efc323aa7f3f969
MD5 da6911c3d60e07237713a50b3990421c
BLAKE2b-256 6a33529025ae89cc767bf81941825be5bf6599eada0615ba1733236047989489

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 101c2ca137436ece3033197b5e5cead130b483e2d566870933e694d51a8fa904
MD5 d468e64440a8088ed988aea38822e90e
BLAKE2b-256 fe121857b7aa75981f5c7756fceb5a3306d72b2738f37ba7f8cd3ed21248b2d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3c8dbf94237fd5d1e625941ba22b336d5e831cc194cbfdd508fe18bd32bdbd91
MD5 fc2718953f17ad80e91e485fb08931e9
BLAKE2b-256 1294ca992a990d4962635a641a2dfe5a32024ad151f11653af6760f77851e962

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6fdf284ea3542986e3a6f30928ccaf6a421028e0dfcd3ead09397c2e610a5924
MD5 8b9d54a72860293b9c6d3d7137a94ba0
BLAKE2b-256 2ce35bf7c57722f584b5019148e16ecfdb4bed6eaf7edbd7c0cef30e2801ee72

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.5-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3607f9b82c8547e6d969b035222d1ccaea5104b6a295b3c8fc745ce753e95163
MD5 f38ea57cd90b1a02514e87d588deb810
BLAKE2b-256 63f00eb16e63f7987909255b9589321c2f786854192a5e594dae66a48199fb32

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