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.4.tar.gz (36.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

modak-0.2.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (384.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

modak-0.2.4-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (410.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

modak-0.2.4-cp313-cp313t-musllinux_1_2_x86_64.whl (553.0 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

modak-0.2.4-cp313-cp313t-musllinux_1_2_i686.whl (585.7 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

modak-0.2.4-cp313-cp313t-musllinux_1_2_armv7l.whl (652.2 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

modak-0.2.4-cp313-cp313t-musllinux_1_2_aarch64.whl (556.5 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

modak-0.2.4-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (425.5 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

modak-0.2.4-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (538.9 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

modak-0.2.4-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (390.7 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

modak-0.2.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (380.3 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

modak-0.2.4-cp313-cp313-win_amd64.whl (252.3 kB view details)

Uploaded CPython 3.13Windows x86-64

modak-0.2.4-cp313-cp313-win32.whl (242.1 kB view details)

Uploaded CPython 3.13Windows x86

modak-0.2.4-cp313-cp313-musllinux_1_2_x86_64.whl (553.8 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

modak-0.2.4-cp313-cp313-musllinux_1_2_i686.whl (585.2 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

modak-0.2.4-cp313-cp313-musllinux_1_2_armv7l.whl (652.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

modak-0.2.4-cp313-cp313-musllinux_1_2_aarch64.whl (557.1 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.2.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (384.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

modak-0.2.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (424.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390x

modak-0.2.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (540.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64le

modak-0.2.4-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (410.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

modak-0.2.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (390.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

modak-0.2.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (380.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

modak-0.2.4-cp313-cp313-macosx_11_0_arm64.whl (337.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

modak-0.2.4-cp313-cp313-macosx_10_12_x86_64.whl (348.6 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

modak-0.2.4-cp312-cp312-win_amd64.whl (252.9 kB view details)

Uploaded CPython 3.12Windows x86-64

modak-0.2.4-cp312-cp312-win32.whl (242.5 kB view details)

Uploaded CPython 3.12Windows x86

modak-0.2.4-cp312-cp312-musllinux_1_2_x86_64.whl (554.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

modak-0.2.4-cp312-cp312-musllinux_1_2_i686.whl (586.1 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

modak-0.2.4-cp312-cp312-musllinux_1_2_armv7l.whl (652.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

modak-0.2.4-cp312-cp312-musllinux_1_2_aarch64.whl (558.2 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.2.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (384.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

modak-0.2.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (425.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

modak-0.2.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (541.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

modak-0.2.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (410.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

modak-0.2.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (390.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

modak-0.2.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (381.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

modak-0.2.4-cp312-cp312-macosx_11_0_arm64.whl (338.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.2.4-cp312-cp312-macosx_10_12_x86_64.whl (348.7 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for modak-0.2.4.tar.gz
Algorithm Hash digest
SHA256 dc2aa9592a93838de719c4a20617a5c4c71d3e02f8697860e00de8834824b82b
MD5 ded3058e150b1e099fe4cd18b98bcbc8
BLAKE2b-256 d8b58b9604e6ac425f969d2808ede7ff927efd10e0d2047ac758573a9bfb86a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a8fd718a2fe146499f8819bf8eede494e2b2271e996318e9c9038e4e2ca312dc
MD5 3b4dc89edb775eee50e0cd2db279c730
BLAKE2b-256 fc6b64879d3b1f9847d067eede18a6ca05df9d6a407638253dec9ad26ffe0ec7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f2777dbcb8b84e033f4d0ed1643ad7b8eca5be74ef6917212c76ab3ba73d7909
MD5 71f067d7f3e33814c4107758b3d901d9
BLAKE2b-256 fce3cabf1aa5fe8d2559226752c23a716af1802e528481a2837a1be502bbffcc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e40add5278bbad9286678ab3336ad07458e793937dff4ba2d7e66b41975f3387
MD5 710878c017331206285d671203da1db6
BLAKE2b-256 87f2a7d15232ad6a38e758d2e5fb49f117b15a602f2f81d711b8c94ef4b655e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 5d6242140f908b97c511bd32609af09768186cf7004c79c16fd761e591f4eece
MD5 03c8edc109c4be3e04994b1da6a07a10
BLAKE2b-256 16745cd63bf592f1b37437c7b54ae145672bfe4d2974cac1f1c25906b1183eb6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 8015222e581357073e92b01564f5f6c02c2a929d670b7319d1928f89b0cdebf2
MD5 f3d4a1785bc8393099236f77f6d37562
BLAKE2b-256 17a51b39be00df1393355ec3bc96b884b5288454e1a67d5d4146c4151dce7abe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 47d28ba9590466d472b5c7fd70c813e101e59a914f2af12da0f4ec2a30b63b4b
MD5 44f63aaf9aa5fdd4718793ea9aa6ad24
BLAKE2b-256 e9aa8b0c26d43642ea1ea3aa395581488d4525ed5addbe6d43175872fdce08ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 668762131936b0e4d3564b3e71c84b499cf25f457bd255d27c40059b744159db
MD5 619370036a6c54eabefe825381174cef
BLAKE2b-256 021aac78ff16797fd019e8d9e9db8fdb0f440db2241b8e4f12dc7558930f846c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 e65eb50f88da196aa6dd706e7b6946b4e43f9e5e797db146e42942b288402dc5
MD5 1eb40d098f20d504e541e4ee05cbff0c
BLAKE2b-256 5c7c0e5901cb1d091acf497cadb935ab09227256e123ba3f522b8f30dd5d0b95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 000f72c2385ab726540a2bb55e5891efc824a7655be39b5a217769122646b920
MD5 c7ec26861e0d86dc62e1a71d65b0eb0c
BLAKE2b-256 c06cc4c5a4bd3c782361de49e813629ec33175023407b0177ac68ccb07af4a45

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 067c82154a53c15f633dff04ce4d3b589b2b6fd99edb9018de7820e43776fbd2
MD5 7b5934c4f9d3e9c8e4c338322d000789
BLAKE2b-256 8e8760938ce71d34b847c486f56f4d73d2f5223bae5730e41698d9fd96aa105a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 252.3 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.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1b3e58171d858f166208a90105c1060bdafcafe2a66afa7fdf4310eccb6f24b6
MD5 e4a6921573598e50c0b03034f3ef8d12
BLAKE2b-256 0ed67094e0975b203175647ca6c31e7d156c2e7e7978e3e6db0d051307d9d41b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.4-cp313-cp313-win32.whl
  • Upload date:
  • Size: 242.1 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.4-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 1872064ae00c9605a20629fe743e1dbcc42e0bd052f56ecac4c7efc6d1a80707
MD5 319e2efe60e99e2e1c1aab2ea736cf87
BLAKE2b-256 7c4bd1f515907a4291357f63950a089675bce2dfb0b9576dd5a441ddfc5e735c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bdbd17729118a32fe366ee171b2a2e7f83e81bc03df57fdfad3ba79b3b4b31b4
MD5 a9ef5a903753afc0b2d6f46a83031ff0
BLAKE2b-256 2d6ed04b4110cc0e723f5775dd784dc783f093d27ce530932e272bf23f81d9c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 ea0282ed8f64d994be4f4c79a787707a12bbfc1d601cd83750abd8b820298a61
MD5 637cb5e76cf51e6ed310e40407dfe493
BLAKE2b-256 f11067f8e91b232a0088b3154e2e328039ecd41202908a5ca73e4c4d025a0826

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 f2b3945702a739367f36deb090ab56f7645b8d9470ecd0863b1c33b69dd4faa0
MD5 d0c657f1d04dff81f1cf3aa930893c73
BLAKE2b-256 bf0bda76395def0a4138ce3cf310e23985a09410bfc82f443bdc4eb3af7ca925

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a253941f0c188c54caffb76366df07eef134131565fef72230435bc8f48c410a
MD5 1724296fda38849f35bc73e0b6886511
BLAKE2b-256 baf6be63136d20ac13beef5097dff617d68250c49f7792e27ae4aec85dc1c437

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 21e75844e0eacc1f90141e492f10f4ddcce27beced93f2f6c38ca45add5c8b5f
MD5 af413d8539d60cba80f7d1bc77972333
BLAKE2b-256 10c83ced258c3f4bf5444efd798c18e9895931accedffc4d52e0c22443b80b0f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 89b984397e2890d1ed7800a66260190e7bc3a716a8facc828710f36f24df7479
MD5 dd2a9b45533c10f66b1b90a0cca83c4a
BLAKE2b-256 7a79fda94a6e2e24dc417fbd1ff2fb69e36821c010800534d74b214a8240d32c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 480ca4cba4f401ab70be92ea54c4bb052fd688dd74a418a3947c15c6887a68e8
MD5 49e5c38897ed712fa7dd07963b1cdb69
BLAKE2b-256 ab5712e84f98d94d93f437b1f8267ab9538269dd9cf2343a714228f7fa6ddc79

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 2295e7da8253be470bc43e674fb958ee08fc30e6bc7a32f604b2174be8a4f559
MD5 91ef26a44796b38cece5ac21fe16bc8b
BLAKE2b-256 266951ac18b0f6e2dd7d920b75896ac0097de49e40ba4c1b9d8a3599112f4bea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 78dee43c66dcacb1ee9092dd2b10ddfdd4931d4b1b89cdad2d5d16333aa459fa
MD5 6782e7f5def825da245b554a26d284a0
BLAKE2b-256 f8e13ac76a810563a9a2fdc17674a56a3aad4a59d71e7b9a60b095c38f2d7fae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cf673d4d97cb694593e771072062274b637c92c1d94c03e1145ebc142007345c
MD5 e1001d47f1b2127c1b87c4056630785a
BLAKE2b-256 bfe062fe6a6dd2d3f8e8ecccf6bae05665cae829c9d085bcd61070286ffe2287

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a7c640b12368f27f776bc541dce720a407a85295f0c167f8276e43b127d01e6a
MD5 79860d1140997c9376487ddb67a6b11d
BLAKE2b-256 8facad70474bcd0a2059da76f947568bfd879dcf019a2a552fe5fef0a6d1224d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 751380e5d2eeb337e65d009967f6b20f1608225b39c25ce0dbb486cd7f72a2de
MD5 5a103541f48a4195fd5b09573df8c799
BLAKE2b-256 4984941c558577b155b799b33b18fb895875bd58797e8ea0d97d1f2c098f19a2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 252.9 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.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7e8cec105cfbae00ff1be0986b156c8d2ee6abcd9680b5fccc83c1363ac85da3
MD5 ac693339f65b65f3ff98836730de62b2
BLAKE2b-256 cc8171c2981b796600ae92d8f898167d4654605417d9a817965a007b92690396

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.4-cp312-cp312-win32.whl
  • Upload date:
  • Size: 242.5 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.4-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 27162a70df6fb805e63e9ffe489e909013af062a2c231c553c2e63414b785753
MD5 5c2f78f3167ba5c65d8d73dbb8f25c57
BLAKE2b-256 22e06d3f04224c4b36a80c0e050f1e1ee07455b382f7ee23f61f7cc446af9b64

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8da5f41b09cfa1b2c14072931db1a6d6d9aa4b71a9d28a03a697698b8546e4a5
MD5 5be2eced2430216ba2d86cd62c578b0f
BLAKE2b-256 dcfddcda1d5219b988137b50beaa5a7e78607a0a86305e4820741c34d9266ed7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 fc37ae9e0f40f29230043484f2b5cebee63d910b5ee19ab82b5f667815f610e7
MD5 b17a7a1332a732e5a4f79b3b2f28e7b7
BLAKE2b-256 700272f7fca5f239a915526d0b86572ff0ec0b79c5a613d1c072e82f1096c573

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 b30bd3ab29f5e14fae7b573f6bdebb611033d0c62165a772cad7f6c2e56695ea
MD5 ae3e4c2bf35f7df650a00ff6c7974e17
BLAKE2b-256 6b22a9e81b7bc16789d8f1058f328495735d797677be1d06cce2157555bd661a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a309af31cc32d741d9bac8d3afd5872af29e1cf31e4f2884804c7381e883dcef
MD5 0b031b95df8a9a378e5ede8899b5b7b1
BLAKE2b-256 b03755c64e47afd46b407b8a896ff07688d82b633de61f25c3ca6a1b750fe99b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 34c56ce464171c0dc961dad062561659ce8520114cb91a9cc15a1706d70c9374
MD5 03f0d435e6a168b3504aab9cff291456
BLAKE2b-256 27a3c8db8eea8c47766c115093f158b7c8eb9ca11a7c85a9e6dc162c83945643

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 686b0afb3e9892f3175ba72d323716640a75e1d292fd39acece38fcd285b3c38
MD5 39229e5bfca90f0c56a85bb4358bd050
BLAKE2b-256 1d9c1f5499dfb1b10c78273d048309df5e26f88684e6d835e718ba9dfee323d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 91fe270f627e1be43aea3de40838251ed679db26aed3e2448e49e8467c5d4c6e
MD5 0c6c98ba9174524611e3d66b921053f3
BLAKE2b-256 749ea51b90f4d0d64bd81aa4273405bbffde53b914f6c295397e8e7f65fe2a57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1e719caea6040710732cee13a0cd1af22462e59b9ed791363c2e125cab7f5f5a
MD5 4b6c3054da438b111a2bc57a6cbf1009
BLAKE2b-256 6b3b1742721b0aa68a92fb5ab76ac38e5c7cee521229bdaa1e598c11698e7a56

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 99c602fff986324b6cbdf17adcdcb0f88d2b92e670ab0e6b7e6d7f927ac6f0aa
MD5 07468723460d8f120b22c420c6cc0867
BLAKE2b-256 e22a0b6e5649d4a1c6769aaa3a9a8fea9eb3d0766f5c203bacb095a82601d72f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c0c9f6b3445d9fc89acea00df929b476687888b6420a245d942d920a7f1a73d6
MD5 7aaf825b11b573e096df96eaf053d236
BLAKE2b-256 966aec5765eec0173d44dad72571e9d1d764e1e05d90ba0ceb02b76a01593f53

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 26a3d6f477f37f11403d153e9f2f3c53072f2c237cc7752d50f669dc7a467e4e
MD5 bf8386c308a789caa31bfbcef553ce6b
BLAKE2b-256 50ff0e2920349e03f88996cc345c6b2b063527e0416466cf059cdbc64ad6baa0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.4-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0b5e5f556f6fa7ee1584c0bdcaf9d3491d02ce3ea22c150552287d62a3f39a98
MD5 c3683caab7f2ebe0fe2d084985e00350
BLAKE2b-256 a7e266670ce33b83c561daf610b77478c0042a32c8c2dee094c95bd04665ba88

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