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

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13Windows x86-64

modak-0.3.2-cp313-cp313-win32.whl (1.2 MB view details)

Uploaded CPython 3.13Windows x86

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

Uploaded CPython 3.13musllinux: musl 1.2+ i686

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

modak-0.3.2-cp312-cp312-win32.whl (1.2 MB view details)

Uploaded CPython 3.12Windows x86

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

Uploaded CPython 3.12musllinux: musl 1.2+ i686

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.3.2-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.2.tar.gz.

File metadata

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

File hashes

Hashes for modak-0.3.2.tar.gz
Algorithm Hash digest
SHA256 8beebe0f36c3cf764359dfef2f40c91db4f98fb3cf270b39013ba32738a8021d
MD5 4adb71c9a24ab9db94ecd4df7b6f0a8c
BLAKE2b-256 16bd3048b3b3f156d7b6382399ddfab1d54eb6507c2b67ad052ae8e867220a37

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 54a7962850d9943f95af60962684e3bb213eb78097f94eb536dad836063f1418
MD5 f01dbe9fe3aa3e8aa74ad619064aad8e
BLAKE2b-256 4ad24e52267408623c3960b8e0309cacdcebac96eb66e3381f21bcec99cd7ef8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fefd41a82de9001bf00b034a5f678194b0f3c507a016ca03b8148a8763ed2496
MD5 32a846885680e55bb664575bc3716512
BLAKE2b-256 852b090732a0a142f1fa03b0b5377434ff8e2babf894e7928b56c3face355e27

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e3210c22bafa967fa67c5019760c46d2e7f8e2debb2d5bfb84b8b7b00ad4040b
MD5 b7a21c61c461aedadbc0bcaea4f11e29
BLAKE2b-256 3a0feb253ede560d6783ba15cc88eb6643296d87bfcb36841cc60bc9ab4b0cbf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 da059e80b972e914945dcfb395537beb0479713fd056fcf5f5df22371336687d
MD5 f5611e4980a40e9bfb77c7462e1c47da
BLAKE2b-256 943991b5ac2fec5b8a54d243e2de33c039197edd834033458c3aa8313faf320b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 166a04400544f2cf364d8e2088b240fd20d8569b0e4b8e7618c874b2002a3c3e
MD5 467949aa69b78b613f20be1cbaa42225
BLAKE2b-256 f5180487860a3272efbd1b6cb7256d909928a16b5fef4df668c367a4fb37a3ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3b8b3801603aa6631c982d79996f2e1e2a09b01a17410cb2bf427e64d33f1b73
MD5 4e712c293a9e6b37048ca83c624f7600
BLAKE2b-256 88ffabe86fb997b5d528a72674d4eb110b78f3884e9ce8dbc8688e40377afd49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 daddc88e729f8c4f76b2c60f7be2a2a1db959f68cda32bc9dc7382ed6ddf8d90
MD5 9b096a89e5cf743f145d9c3e90a4862b
BLAKE2b-256 f4ae94a33e2f7e217407f25446803b6f1eb3c57a52b55a9b58ef8f0a8a21ddcf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 ae5dd1bae7208bbb2e01f2754d0438fec73d1d6db1fabf1f6e543cbcacf62d06
MD5 3f653d477e62d77afecbcd899c16a97e
BLAKE2b-256 31adbd2d553da737d7e6c14b2e1b5b1837ed51520e2a3572a6fae249903c12d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 32e3123c09e158c1b60e5f390735ed1a082801d25b9cf36aaf196c35d96eecd4
MD5 8c79ef826a502478cf2abff4a106670d
BLAKE2b-256 294ff0af4389ab85595e851a99ebc46907af8f1ca21939d708c8078213baefa4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dfc1f6830b2b98d8c88f7ef0cfaaa7312b9c3163ee22f13a8548a00f11df8466
MD5 69e04f7190719a346aeeaf36a6cbb4f9
BLAKE2b-256 a7c7c202fb68181d333f5951dcfa00d05545baafe0f5ef8b29e1f3290a18703d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.2-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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5af50b6785c7226f44aa4c2e573346bb7dd9be0b78de719ca36be70a8b3b4bf6
MD5 617ea4d0b8c50efc7165a653fe6696bf
BLAKE2b-256 ea2e1233817ae591e772ae6ce6bfa85b1593111bc6681ffacd3cf8bb41637736

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.2-cp313-cp313-win32.whl
  • Upload date:
  • Size: 1.2 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.2-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 758d9babea98a655154d051e6c893e4ffcd1c27c732615acba37c4fa2de24e14
MD5 5cf014797cd679750cea3fe1fef96c20
BLAKE2b-256 e2292b29f39c2ca5f3ec6a8564b589349e0abcad30976e58308c3517ba58c5a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ddd59b1876e281750363f552b29316188e8114a83ddc25791ddee6f721a7d9e5
MD5 6a4c7e8df64ab8a50fa251eebe434e0c
BLAKE2b-256 bbc8344e67baea4575c31383c4123115dd9eca946b6864fd1c0121a1312c1a95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 eab5b5b784aaa6e40d221fd0119a6db64536986bae7ee43bd6815509e8fba245
MD5 1e0ddff023e7c92913402c2ad8f22461
BLAKE2b-256 463f1828ce9614a52985efc98c376cae414d5d792828e4bb1705b37668dd30ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 eeb8763df8fc6e5721ae33ac179998f2e1502a0eb2b6be6400ff9c9099951d08
MD5 723121f056196fbe1b5456f245d72e27
BLAKE2b-256 3563372a9f815b1a8e337d51f4e9b5e23abb6568cd328a70351f657e52ec8554

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5470a1cb9d5424657034112b8bf68c54fb29ad4a0d6255dabbe6843193c8e295
MD5 d39c46901d3e54b9a71d1e3295bf24c5
BLAKE2b-256 34ab437f847d73d33e5ecad4667daf040dfaba729f9c38b856c598f5c2074b75

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9835d408e1334d6d3159ea2fc5c5c62ff04d9f07c2533a907bc61844d3535e58
MD5 deb9bbe5143a591d1616838c8bf5d807
BLAKE2b-256 b323c43d9c20cb136250c3c3121686680aaa8bdf274437384283c52bb50c0433

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 01361956877f23de8f904f3e009ddb0f4a517bb696a9031375d5dd45ecb5f7c0
MD5 fd206272e8a7c45307747e1297d0f3a6
BLAKE2b-256 0683a8e5e7001ac86ec3e482f62629cc2bb3c97bf147946078e0191d8037f8d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 230fcd6ae08ce6322c6edd7c0b837638efb47b5aa17dfd9722dc08f5fc16114e
MD5 29b62952bd9c4faa1f0a95f5d018528b
BLAKE2b-256 b8e4b89ec1d2a074891b020ef1ae6a98e83ec1fc03f9fca68f09dcfc9ba69f5e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7a0f19b8eb4cc09721ec26ad1a771a0880929d47ba57aa01e141a4300b1b28de
MD5 b6423c162171b5c9dac021800857b1e5
BLAKE2b-256 6fc6fd44cff2364ef375e7d5b9794ec9915d33d65cd7790d40dbec5e1ecd9a42

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 24d78e204021ce239b3ae278409dda6d3e09ca0db820264c68ffb39668112d3f
MD5 0130b7e76f5b04f95fe7b4bc36726cca
BLAKE2b-256 e967b8df784f0cec800b8293d6479323ad7795c2bdc0788600bb06cd07788d91

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 da4f4f5a25b449b3bed3c44a2c961cee32541ad0eb177bb3c6d5dde6e9e9d0ee
MD5 5104accb4894e2586c831eb2ec05bd15
BLAKE2b-256 2a3ebe98652b0cf5612be8d5eb828f04a5c8e268f3f2134bab2dfeafa086653c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4d5840bcae63f5a2b5fa3be5f76457673becf8472782677f1d2151da1de236bd
MD5 00bb5367807030d68e1cf4f22ee2340c
BLAKE2b-256 719b9fef738cfbf64b1f493a8a10dea67b9dba70c7bf1c252b7220e99dffefe5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8a0c1e15c9aa01bf1be08c9e59ff8d8b233fe320cfa7556b4d46d9d78cc9fd6e
MD5 600817566d4f94103dcd7b31cdce2996
BLAKE2b-256 6b1eab03c5e022dfafa01c4965f57bed65f6c4ba41818552e8e56ffbf3fabb2b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.2-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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7776d507319ad659d71c81a93a43c4ce1cff73b31e87ff6ef324dad19b1c67f7
MD5 9c77211b2a704f67a19dea272443c534
BLAKE2b-256 02c86e705ac736996d51af214ef08d95b4e0bbe146acf9ab82fe3b965adc17ba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.2-cp312-cp312-win32.whl
  • Upload date:
  • Size: 1.2 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.2-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 6333d8acef68532fa27829f07abff2e3e3a59543bfbf9fbb8a8bafb8bf673550
MD5 8306c82918fc524c36fd03b6c647cf81
BLAKE2b-256 ace8460e123edb92874cfd9c269f6bb8368702b44cbd47341228da1abb20f20a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4e92ec0a81ad49925f49d438d63278ae3b58ba3e5037170e2d65e863cf37c271
MD5 ccb7adf678967494b3ea9670ed25a47c
BLAKE2b-256 5d9e596d20ac8faeb0b51abd6d1fbcdba306f75b4be169e70ad99258b84925a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 1ed99012b87187cc6e877866ba25ff09ab7bab182e8a657d92c42a8653590d3e
MD5 062a0d430fdd7c2b4285855803fc5cb8
BLAKE2b-256 252911279e226d36fb16e0101140a6ae6792b7914a0d0c03b8e0b9687e2d569e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 1c5183002c2a02fbfeb7955060dff821321180fd7522e677ab3514fa82e8184d
MD5 d0665e22d25982f5a6af7818a362ba9f
BLAKE2b-256 e2e47d77af65b760f36fd419740afb376261b5a408cdca249ed8511644518a18

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a37fe056e97d226f8102b30d7e0694db0176db805a530cc058fc9ffa37fa51d5
MD5 a5de0a08e90027c0eb0f59ee82ebc798
BLAKE2b-256 b22645690fc4d3eec9225a7e70be9ba73370d1eb188e895dcad1d5a44bd2cf8f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 43b74d5946e20ddfd6cec4032f1ec5ddd9d54c6f3d0dd200966ddf74892eb8f7
MD5 8481d0396d674e1eaac6b7c554a78eb5
BLAKE2b-256 973df51cf153836e87f56d37108aa16616a961339cc94cda4dfc90cf0c51adbf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 6ad3b4b31602e2f1ace8453950f50e3f3d090e25fbed6333068a5b811890778c
MD5 4781c8a92496b7c4895f9e36e5592c59
BLAKE2b-256 74009b0128296dedc0b152788fdb9e5f44e2f67f3a953f28e16bbeabb274fdb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 c3e70fea1d9e24108ee582b1d780a2e10c82667d11479e18fd88ec62c056f681
MD5 946b215d56efd44a76eb20b5678712b5
BLAKE2b-256 e908b5b0d97ecf36ec8721cb2195fb517c7a7597f09fdaa810e765b6ab7b4e20

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 75c3fe0221bdc904e8ce7240e6ad0c71d9b83953c5683067f0ed44780ab1a9e6
MD5 fddd7917f0102de990e4c6d31152a655
BLAKE2b-256 1ed8e5c65f9bfcffbbe3e05fe6b2146602088ceaa8b07abd7f8410072103e8f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 f7ea06a92900c0e9bda37cf51b19359674a9ca840eaa830a9456200cc759a81f
MD5 2e1231bcec45d60f3ad34ab3859923ad
BLAKE2b-256 55e1b5cf8e8309451f49dc6fdf6d4ad4741c3287e5eae01be2e1cf5e8ca272d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f3c5c5719e412217c8750c07ff0813e862a0c996c5e4d6fb108c5d01d1359469
MD5 6724e1810ab53f84860f61d32dc0c63a
BLAKE2b-256 9482575dc8af903e33b9e16c83c09e39c63883137225ea2da3651a1a4061afaf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bd03b4486953871388e3c9e1a26a3ac03bd12444a4d60bedb18d35ee076bc8dd
MD5 8b29326752515f2110df62c657e13a80
BLAKE2b-256 be1532f9a2a3d30b2c918634d731511be2a90a81a1a4fb548125b814bdf6d012

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 883745a19038c4d80dbcfa87d45aace168b2d4d2623567325f186742fa61d672
MD5 841649f24c3dbe9e6eaa3dc75be82d84
BLAKE2b-256 07f8c65fccc1d1ccdbe1a8a117ee9b1f905fbacd8967b44ab46edac278398d57

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