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

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

modak-0.2.8-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (746.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

modak-0.2.8-cp313-cp313t-musllinux_1_2_x86_64.whl (860.7 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

modak-0.2.8-cp313-cp313t-musllinux_1_2_i686.whl (905.8 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

modak-0.2.8-cp313-cp313t-musllinux_1_2_armv7l.whl (950.7 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

modak-0.2.8-cp313-cp313t-musllinux_1_2_aarch64.whl (851.6 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

modak-0.2.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (759.0 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

modak-0.2.8-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.8-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (690.9 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

modak-0.2.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (674.5 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

modak-0.2.8-cp313-cp313-win_amd64.whl (486.5 kB view details)

Uploaded CPython 3.13Windows x86-64

modak-0.2.8-cp313-cp313-win32.whl (476.9 kB view details)

Uploaded CPython 3.13Windows x86

modak-0.2.8-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.8-cp313-cp313-musllinux_1_2_i686.whl (904.8 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

modak-0.2.8-cp313-cp313-musllinux_1_2_armv7l.whl (951.6 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

modak-0.2.8-cp313-cp313-musllinux_1_2_aarch64.whl (852.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.2.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (690.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

modak-0.2.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (759.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390x

modak-0.2.8-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.8-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (746.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

modak-0.2.8-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (691.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

modak-0.2.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (675.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

modak-0.2.8-cp313-cp313-macosx_11_0_arm64.whl (619.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

modak-0.2.8-cp313-cp313-macosx_10_12_x86_64.whl (636.8 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

modak-0.2.8-cp312-cp312-win_amd64.whl (487.0 kB view details)

Uploaded CPython 3.12Windows x86-64

modak-0.2.8-cp312-cp312-win32.whl (477.3 kB view details)

Uploaded CPython 3.12Windows x86

modak-0.2.8-cp312-cp312-musllinux_1_2_x86_64.whl (861.1 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

modak-0.2.8-cp312-cp312-musllinux_1_2_i686.whl (905.7 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

modak-0.2.8-cp312-cp312-musllinux_1_2_armv7l.whl (951.8 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

modak-0.2.8-cp312-cp312-musllinux_1_2_aarch64.whl (853.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (691.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

modak-0.2.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (759.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

modak-0.2.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (858.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

modak-0.2.8-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (746.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

modak-0.2.8-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (691.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

modak-0.2.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (675.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

modak-0.2.8-cp312-cp312-macosx_11_0_arm64.whl (620.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.2.8-cp312-cp312-macosx_10_12_x86_64.whl (637.1 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for modak-0.2.8.tar.gz
Algorithm Hash digest
SHA256 8fcb51fee65906302c5954581d0b8de9d767cacd42a542310d405a4cb1fbbe60
MD5 b86414f6f0f1b078c6e09153d1ea6e18
BLAKE2b-256 b3c2d8d12bb4d29ef1696955120156f4a0d9caf551828e58454de3507e374816

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a3a3028c8efe461781940487f1aa6e58c7a60d619f4f2aff509604a26f423592
MD5 86b2951dd7b7796c7bb317fbab233b2a
BLAKE2b-256 3f03856bee732beb132708c3c0360fbcc2e997addbb3a0433df435ebd2ba5023

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f19eaa02f904eb417175f63b6f2c2dd525893444c8a009760b435397e8fa31be
MD5 73f0a4cf2956e7959a176025c75277a5
BLAKE2b-256 a27c6b32c47daf7b5f2b6bd4fc1db85b74dbdc2d5e59b0a782944a7f2422126b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 35e9eb7c6947fbff29ea76ba3be4aca2df853adca61ad05494ba2aa0bfdd0b6f
MD5 f17b886acd290ddd349a8fe9cbaa4fe6
BLAKE2b-256 ed8da3c156eee687ad85ee63d5419c217e998435808eb9f0bbfe555a42679c60

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 49924164d3f4e5a0b8fa0707bf1681602580413c261672b86c21655ce422f71e
MD5 1746ccc5dff52a80871c31c3a1f7a243
BLAKE2b-256 280387c147f1cb20052e16746052b7f0112ff5c498216a5247cad8ff19a3a3c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 0d7967d1ffd0405735dc920cb296c0805b806ceba514c62dc62d9bfe56b67c94
MD5 7b715e74f3a45d63411d1a98b84183ee
BLAKE2b-256 68e2543ab7068d7c5f3de6692d8cc2903070578b906940806bbce8ba2b03a04f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6a991f3548fca5de447dad40fe3553a58293cdeedd43630155cd9ff596e2dece
MD5 9612a0bfffa828c4659572b0cd283ed1
BLAKE2b-256 1ca1b7bf4404438e598b70da0ecb6f1ea7732bca26d68d8cf6a18e1f4b248755

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 778a0fb56cd5b81d107da7fc94fb30d38aa464fd094ec458b067ed3d44bea8ff
MD5 acd1c86f4e6c84de7f66f5b7407ad895
BLAKE2b-256 07ffd6c409db5a7e85c67cc7c019a8265ae082b60b754b3417f0dbf2d257b056

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 78b84eab52fb2575d3c9f63dc1aee16e0fe12c2089705163cebd430675f2fc27
MD5 dc93f007164f9852261fbc3d89af30c2
BLAKE2b-256 d4780184995156dc27aadf1b815aa0fcc4a8e05fb72fc96827f0cdadd18012f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 b0e3d6819c93a99bea6f03803b70ef80bf894b8a871aa1204c50ceef5de09ee8
MD5 89cfa9caefc66db93384e2363f2bdacd
BLAKE2b-256 c9b14549227c5d801c5fb15defe33313ecbdb8e48f67deb84122e5b53c66de25

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1d2b386261df896239857dbc12770be1e52de09691011dbc577a6ad54a63416b
MD5 9b2b18e07cc7ab7739fa6c0d56523c0a
BLAKE2b-256 c121988a309c8bfa70ff7f5ee0a2eb99c28aeef4d6cb0d34bee5c53899d05dc3

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for modak-0.2.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c9b120295bd605465d792a07a54bdc4e852dfb0ca1c71b386db349b35da88be9
MD5 1312149fd7cba0f6a34ce0f38f7921e5
BLAKE2b-256 ae605b5577e5e5544c2d06b6dcc194ee61507be3fe51e57466fe7a8820a19117

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.8-cp313-cp313-win32.whl
  • Upload date:
  • Size: 476.9 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.8-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 fb5e4f26783d11117ac0f3a7bfa082af57a6298cb532ee84d8c31475eeab6754
MD5 a5d28b20dfae2c3ac282926a9be80c71
BLAKE2b-256 6aa78f13b6d931d2f4ca364b74d4118941e9005fd16959a02c9e3ca7cc650fd3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5e9ab549b62691d727d3a093d022cd9d541396a2688c7f0411272119f683862e
MD5 f521dcabc8380eb69b8bfc2c43b6ff93
BLAKE2b-256 de49069c5cf1df50900bb1f3fab1d8e5d9792d57de629ed8938e30cde5c95b9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 49275ee78551ddc5a46fca4823a692f53dbb59d61205ff7a71c1d33eaf2f3696
MD5 bc4d641e4a2354c1b9e841c67b650a6f
BLAKE2b-256 5ce350133ba9d4ebb42f6c330d25a75f3c53c011a54d749689a1a90558c6c819

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 34bf07c35185a68314606d99ddec60f7591c8ef809194f90ee9a9494b8615ae4
MD5 f2cd027e542336dd0bf8e3db8beb8282
BLAKE2b-256 3f0c0b6250761450c08f5776207574d07892967710a67c6bcd31b469832637bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b4f7154016df7107e7bb1295fc439150e3a0c6f2bc8e78cb7abb308f3352adc3
MD5 0fe486022ab5462394f66a49596d9cf4
BLAKE2b-256 2f42975429de053f2c716cf07f33e6dc4035248cab25d05a95af4e8752311885

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dc2689fc5d17060bbdff8eb4064b49c41e31a66af75a5dd88fb4237706914f53
MD5 02299ca87948c769913c29a125cf2eff
BLAKE2b-256 39849f4758803f9a21aa51f3ae1682832ca2f5ec726432ccf697c0da7dda29be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 89df820b76e180ed7d6c2e2014a988caa115acf95f13e73b2a4368e6139a01d0
MD5 6f5f6ff2aa8c319178d39ddd9d52eb58
BLAKE2b-256 b105d8790d5db4678e79e2f4c6ece3ab701eef6270d012971887a4afd3e209f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 fbe11667ce112962c6d3f62b170ccf491a8bf91dca4010be5e0217644a848372
MD5 72492d8ca7403b03ac9476c1939a62a7
BLAKE2b-256 a2ebd577790a62159dbd51e9792eefcc42b987e91a77deb295f59b8f31445a85

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 45f651d9c7e3d3011ac453e0058cbac559bf79763b8b7f499b216b1d331171d6
MD5 78cf1691eeb413a8c8def19d8d7ae1e1
BLAKE2b-256 08194e9534deda6915a494daf20bec1b0a21f7443ae124b62eb080ed01ef946f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 42df28277ee552dca0dab0081d3fac97510734420311c83b5626110cf2ba10fe
MD5 23082f78461690090a6b2ff395ac33a6
BLAKE2b-256 2cb053b75c14d0d8fbe5c3a3856cae7030669493171f113fd82325d68ae782e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5da87baf6a6e5742f669a2aa2318f44839ba0cef6db10a56de7151fb64ca76ae
MD5 46345cfa574a842a65ece1af8eec21fa
BLAKE2b-256 6296a56fadffde8b488f1127fce91a0c3da3b417d4cf378453d69436382ebe16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1be43f5015a07b3019013ec701e3305b0fcfb1e7df3d12c3f12879da242955ef
MD5 dbcb6e0e75c919a6f6407eff701ef745
BLAKE2b-256 6ba84726587e824b0d89dd7be99c8fce6cff257afd2deb2148049ef0b96746f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4adf9a0d8dfc26f0cebd89ebd1314c226499a979628f3cdbd5eae56e211dbb3a
MD5 31ab8ee5110ac8d7d0c986f0156b13e1
BLAKE2b-256 4558eb27b366e6ed1b7fecc5438922333d1ae109aa49df7e5badeb813f922b03

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.8-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 487.0 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.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ff2a5f4b8e2c3e02c26cc3ac5400db072b7b7ddacdc0a6c01ee7c6459c91323b
MD5 0318f9b7b74368ff95655e12eb1f75b4
BLAKE2b-256 854a51c425971045ee75ee2dcddf7658f49885878ef9a04bbaa893e3dbe29e4a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.8-cp312-cp312-win32.whl
  • Upload date:
  • Size: 477.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.8-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 2d1cf2e8b2609b1234f38e635acff12fbf43dcdd87a396e9c99bdd7e2168e095
MD5 f2fe0dc7f5eb5656e3bea87f26aadb0c
BLAKE2b-256 aa38180d3df6f5fa576a60144a58a813030aa619933303a7d66e4cd353eead35

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c95e0c8245d1550fbe46e4b7fb0ffc1de0401a99d6b4b42a3ed294277e798767
MD5 bb61f6e1ce5b9a4df719cd40185488cc
BLAKE2b-256 cdf313b4c8f06ef6b06fa34601c062b1bb68921c9bf10ce8b8ed6e189e08e5db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 44c47c41112cbbc8fd0e14fec0da454379e1582cd6b69ea7e840042a19481083
MD5 81e9237821e6ec12b2ce485659064e46
BLAKE2b-256 e8109355df20789c0b7018a118ab2e02c4325621884bca3f4b52619c89510442

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 3c7ebc58a28d933bd48dfb762ee3d1e6caacc0a932513c0acc08c127e2dd13fd
MD5 2f2cf3a6b76aed09bc2e8dbd3b53e668
BLAKE2b-256 92410fcb98c1855f5104e1362647348b798b7d01fe2116520ef801d1ea8ddd0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f86e2ff282ac278e0fc37d27ffd22dcaf0d5eca7a780d5f529ce2a69e263dcbe
MD5 44f5d7b4a77c6ddf4d738fa61bf4441e
BLAKE2b-256 9d5bb04a363f5b3d4eac98d7919d62643fda6212fadfec100f2eaa5c4b89d308

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 df392f9de86eeb243adcec800826ef9e66b6d8d196f4db21e61857353ba3aabb
MD5 894897b42a26442c00d42b2409518793
BLAKE2b-256 7e3aa6f5ef2cb26bfb1b4411375cd4701ebf8b00db41020abece1ac63b28ff75

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 8b8456054e98ea671ad8761df90f983f0a89e4ba3dc3bfa5bf7c1a788752a6ff
MD5 a76a3496a914e5e0726b4512ac4456d3
BLAKE2b-256 fbcb014a6c98d6c74cc5d35206c236932e94928f272d3b519cb9deac6f06d5fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 82920b7b45bf30b7491bf93b7033cac44b423ea68959b3f0bddf62e6513c4956
MD5 f52a926918e58a20b226fdd1232104f2
BLAKE2b-256 d988a9649f2b5d67a2ed4ac930d3d9372f8ad4fc31ba6088bb72ebb9d04ba19c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8d0d1fcadef894b8db82ddc68aae1513cdac77ee349d50d7b1f6213d40890ccd
MD5 ab84cc8dba8171cf7a13415902d8c413
BLAKE2b-256 245c1525bb56fddbdee01a2acfaab79a2638db7b582191c7a7060ac3b11538e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 1fb3a60b9de6586b80ec8624c79a9ce3e2490ed89cbd76e478aa7970c4dfcdf7
MD5 b0976d15ddba314c108024a1b0c96dda
BLAKE2b-256 8db4ff433d25ca05eec2a0a02ac2457f1407f8aba97535fee21115a81369b204

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e3600734a445b4de815b046424490145708242ee7a9d4a0eb74629c184ef7401
MD5 8c17eed88bd20911d878e1ecba8a4cc1
BLAKE2b-256 3bded05061dd9b6a0efbb3175c774e50d968952bc4d5836526cf4e08b9512983

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6abc316757f3d2c577f9226601b572dcd3362662ebfcfd404945e210c18c2eb8
MD5 ee19956705c89254cde10b71a4fc46a0
BLAKE2b-256 7bdabe4efab90f8d70dc03b5ec4a0182092c43ca53d82e91e98ab3aa2571a452

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.8-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d5277fdee77340cd08dac95ed696f2aaf672cf5243de60bb253c620734159981
MD5 d8aeae69f3ec70c280da340acf15898a
BLAKE2b-256 f9094ef1f21d2090663fb74f514f4950f7559bb0f86984459ef2a14342b5b54f

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