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.1.tar.gz (42.0 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.1-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.1-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (1.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

modak-0.3.1-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.1-cp313-cp313t-musllinux_1_2_i686.whl (2.0 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

modak-0.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

modak-0.3.1-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.1-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.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.5 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13Windows x86

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

Uploaded CPython 3.13musllinux: musl 1.2+ i686

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

modak-0.3.1-cp313-cp313-musllinux_1_2_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.3.1-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.1-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.1-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.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (1.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

modak-0.3.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

modak-0.3.1-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.1-cp313-cp313-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

modak-0.3.1-cp313-cp313-macosx_10_12_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12Windows x86

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

Uploaded CPython 3.12musllinux: musl 1.2+ i686

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

modak-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.3.1-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.1-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.1-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.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (1.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

modak-0.3.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

modak-0.3.1-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.1-cp312-cp312-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.3.1-cp312-cp312-macosx_10_12_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for modak-0.3.1.tar.gz
Algorithm Hash digest
SHA256 7bd4b956150066a0f7700387d782e1250dc59a0b304d9237341a07e3e212316e
MD5 33179b1c95b4a2d90972ac083ec77cf6
BLAKE2b-256 577a92a2785db745044c5094c7319c610932089fbe32624307ccd80b4ea9a428

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0a74763a4a416dee036328142729523e2020bc0dea0177f1198c51864e59da86
MD5 fd58a2590f98d6d6c942c8ca043e5658
BLAKE2b-256 e59fbdebaaa2d85b8f2999286c34795e655ed5c4d253e2ae9d25af7978d1958f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b291de915a07727ad111368cb019de65ea8c7a7128960b2f1a5cd02da43bd07c
MD5 77c094815ba8697187fd48166828484a
BLAKE2b-256 ad9dad076c5bad2f65d126cf2fecdc7367c0a58277bcd1d38c727d0b7bd93cea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a8a3826ca2e84686e810239507ac11fdfc98558cb69f4c657eec03016de8b8fc
MD5 8f0fadf2a4c3f24c00e27ee2ea59c59a
BLAKE2b-256 d3dfe932775ef9a70f6b0802e055efd55a24951b890d7339e7c70133aa2fdd4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 c4d9a436881963380d13a79cf49f1dcaf07425fa41db00172b043c7b82a95349
MD5 7978c954732be2b37379c9fa30dbe907
BLAKE2b-256 d40ef010e18090bec6c1ea691e5b96a49c0e9989a856112c5c7db74da4175274

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 c66ff80a7f9e1116055a6f0c0018819f8b2b302a2b59c5f792a8ed475eed2ed3
MD5 11aedb905f9c4bd7ccc033908a242b20
BLAKE2b-256 9123c3372ba37de1125b738c848c75e3052ccce6c6e1015a6fc18e549a3a9a02

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e55fc18413925d5ba75713b1f4dec8552f0f76dcb108ac4d52616bb34e70bfa8
MD5 abb91574ae3f00e25943b6cceb4a651a
BLAKE2b-256 892a6d0920a3666836981990b65e384de2f1e673acfbf7954ac9ce0e21a5fb7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 06391c24faaf2b8a7726e4551ffabc32bb1dda73b2ec4f9f67540228675bcf35
MD5 2081f7bd4ce82c1ca27c155c0c8f57a8
BLAKE2b-256 222ebdf94c312ae3956e5f024917dd021e64c19ce9a71a282ce409236923e24d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 7234e398307da638c1c354230d0da6cee4e4e37217799c35691ca0abf46cc292
MD5 b06c5ca6fd773c046cb88712f3ea711f
BLAKE2b-256 7b6c25cb6822d70c377323cf6b644afe2d20ddf89ac878bc0bf780adb6245155

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 89227657d8350dd2ba107f7d0a0d87e8cf5bee4af66d424f5ffc5ad2e27aeeac
MD5 098ab72eeff2f3f4ac2f00bfc05ccad1
BLAKE2b-256 b0eb1a677beeb56fb2258f6e9df966c9c36c505a033487a919435e9fbe47be45

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 510df374ac76bc7e072a16de5277a7bc5584cd6cd5f6e3103e33d109ea48ae06
MD5 2f426cab492002c99d45ae4aaeff42c8
BLAKE2b-256 84715794bacc05eef5c17f24b90249c301aa3c2a10cc11efae14777c571516f1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.1-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.0

File hashes

Hashes for modak-0.3.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2813c0de98c0d6d9a476005c6f1bcbdee8ada3f2ed4fda1f0078075007e6bff9
MD5 340b7b113b51db05030dba3a25d33883
BLAKE2b-256 e090d367d52e37f1767e96db88667d664a65990a2f7fdceb85432279cf22ac24

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.1-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.0

File hashes

Hashes for modak-0.3.1-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 f0032d1980ae1967297662c527a7ff0c7de1868d5546db09f0e06d84f3735e65
MD5 c7093de9e290f1bb3dc2255f82b6ea46
BLAKE2b-256 935cf3f1f756b640ae446b0862fe2c10af43fdd4176414143ab2debf07558b9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4640c4318285de2bf298fe81e6f0a179616353b5b108fbb9cc4b7c7ff25928d3
MD5 170b05e7184961ca9f6b9aca9a1a47d3
BLAKE2b-256 08fb948f7849f6b448c34b673728d291c0dd70846ef9646f4f6863fcb9f3ac9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 1f34bbe02a7f29ed449a9e1646c025ee63395f8b03e66a3e322be80c2e257267
MD5 6afd34830507e7747295d9d636bf05c6
BLAKE2b-256 8169351be92473a9e11238c458f9af4b1fec18de3fac0b31440cfbb8ed12c47c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 b2711d8264cfee4a665341556760306a60c4451e04ec5f3511893cabb0b90a20
MD5 d813a764b06b92f241a50e5069cb256c
BLAKE2b-256 19e0e03b244ed8db766258c4e2f2f97969da1069f889be74391dea329c8c035d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 eb5f916c3f1b66e38b3729dc83050fd2c96fe28a358f82da60891de505b7fbfc
MD5 5bd073029dd67c68e0890870abf41fc7
BLAKE2b-256 8e96e4fc91c27ddca81eddc4f9178015fe8635b305cf32b76772f63d77ac34ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d51f6a4871ecd17b1f3f4a7b5cbef9ee8add032daff8ec3d29a7802ea409edf4
MD5 d28e91e28e59ac2b332f1ae54b63225f
BLAKE2b-256 33731cc9eeeb971fce1557223a34c9246e0860fa8e246b144bb9eb33b2220d51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 cf2191971e9c330df0661b917696c34d40364aa4d6d7c679ac68946545a54824
MD5 d41727dba556c1400e8b52db97cfe9a8
BLAKE2b-256 abd61720e8a1bab4832f6107cc94bdc566ae013ae8642c7e45d8c6d0b0bdae1c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 bcc2443ce98f8ad172d1e424bf1ce2e3da1cc8ae9803264841ad031b3588a379
MD5 624963df33738bee5ab84783787b6b4b
BLAKE2b-256 74b7f293246866af6901397df7d8673ce79f02251d7720b73f339263a907efd0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 82b6c9031684617c249ff673c86122be01ad4c4080fd65050b5221f9d6370681
MD5 b46f8f3651a79313bab4d1dca809f23b
BLAKE2b-256 218084f3b166cd0c37d8b99959549db161000334fe02b5a32548f4def12d38fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 8c5a3454b95ff2d094cdc1241a7ed0494cd8f42908dd97bd07f8bc2ed8b6e54e
MD5 afabde52a62e540a30d8ac4812685a47
BLAKE2b-256 045b89fd70f01081f5f0d6d56fefe109296564433acf6b3cee6bdf96b7e9b49c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1c9fb339019ad572cf958a86030c77db37ff155e54e24c8c0abfa5ec818b7b32
MD5 39d2eb478f9e5695b8361eef1e87d7b5
BLAKE2b-256 2c80ac3d3e3065b3bd34b7d1f388706bd8dbee721c0133036c8e42da98ef0ebd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 54c5a912576fb9a2567b3c4a963ec781c314b41400b42d272006751d464ba0f4
MD5 96524f0dfa139aec52a5d58002b8be3a
BLAKE2b-256 464f1b46ec20cfc2010e635c8a0f2b66a4c38ebddb4861bbe0216d921150032d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5430263f412f70ce7a12cddb7911e3fdb19cd7a6c9529fb3dd45929c6794ccef
MD5 b74e39c34adbb14aa3c0b7da804f3767
BLAKE2b-256 aecbd91cc13d1b163368da7a55eeba6cfa4cfdf1ad66fc59254d552de5717d34

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.1-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.0

File hashes

Hashes for modak-0.3.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ccfa2f664ba326ba489c71d7c29a925bc8e36d29dfde8f3a3ce533f27b3acb9f
MD5 2471bbe76324d8c1e358708f7cd49e30
BLAKE2b-256 0e58f97d70b60da1bde0f647663e3011e4be6b85039c7012bbcb34f2710a17e1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.3.1-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.0

File hashes

Hashes for modak-0.3.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 3bc0179c514f23068b26c2dfcd417d66433612711aed733f6d72956d26b064a6
MD5 7bb9f4430af427887a5b2199d6b13fe7
BLAKE2b-256 f3cbf1449877dea780b2b5ec907e42d27925a11c4aa4cb9c361bef45e8b5ab50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8f08bf6fa1cd61c2538dac28bf4dc4a677e65f6eacf7aa9b1d872b75a49710f3
MD5 c28a7a3390ab635604883797607f0457
BLAKE2b-256 89ce7356cfb12c4e7eda6a4d98d0c0909e2656d71ba080f062a9a27371a9d049

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 deb679153f6a6b9caa43d65195afc5072120af1887727596dbaa736d7efa3f3d
MD5 420f130e1504e10387c8587c76e246dd
BLAKE2b-256 50487cc10f8e10bedb17904b4bb24101af25eafb692bb4ecbd98fe59481bf345

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 e60fbdd95e22a79e96d1f4c21d62f57079dc92eb2cc5c761657f6ed38ca0c0a8
MD5 b6602034d40397967c6eaebeb7e72fa9
BLAKE2b-256 f0d00c01abc2be12c7d8c7fc50d22bb2a6008501ca7f72492a88de32c06f5049

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c0498eb7d1ee297d4420e2ab5e796e3c810950b1c75aa96d0aa985b0cde0157c
MD5 245219f44ec7a5b55e51245ed79db41c
BLAKE2b-256 05dd662c1123598e55671d3db32b124a8789609c9aed876f8b9d2f4f4e0879e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cd857a309261c81e26860886c8d809da980642cebadcd6dab8089988f383ebe5
MD5 b6ad562d03bb29bd3714a704bd757e94
BLAKE2b-256 baea83d653a6178068deafc93d2b75e41dfc35e4e55efa43351ed8f62d51f07d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 ce911996277c15b588e1d72aa9c67524a37750302f5daeb8f9f4c863383762fb
MD5 016facfa1f2b208033d75086e9a2ac20
BLAKE2b-256 b5be3d9c1cfdcff3ff4e3e8025ebffffacd4268591d4b80aded802209220cce1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 99a36adba0052fb5e46920d6bec4321fda0ad8960edcf6d768eaf7be7656e260
MD5 9a23ef2b45780cd540c4a83aeece2aa6
BLAKE2b-256 2dbec08e3a845f300c6c49a6f1cc179bbd2de5d9bf351a0f7c8502fc3b40ed2a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 547b72517a75d23c7dce857e2e1c1531cdf306ba6d99ed04b121c0d46554b5a7
MD5 8d90a5f9b543d9fbe808196ececd2165
BLAKE2b-256 df6a6f3eb4fb65a9f5e887feacb7f88208a842727b0a2eeb06ecce361baab592

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 9bc95ff4166ad57c1a575fc91519ce49792a14d6f185e2d2057a9e778f12255a
MD5 5fea3ab598ea265656d3593d08794d54
BLAKE2b-256 cbe9ef6ba06008669aa15c494f9d7622d24dde1b10443ce29d211e1dc02c8a70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 11cf1ef4eabff7134171b67488917326fce475d137e802fc99e49e03597df88b
MD5 b030f7114c7c83e9865bd3e43cf77187
BLAKE2b-256 535ca2bbb6982e5922afccec7bdf86dfc21c081b9b97f538d5860760605ff97b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5cb6d8d8cc051bc0603de6a1a992fc8f6cfb3051797c2fe55339305b7ce5bffb
MD5 b9a896dc050c5a2487c7ff0822a186f9
BLAKE2b-256 664e198a645420d18eda6ea5d2668dc0552a8c0e7590bdccd525b41f09f9d560

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.3.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6d90c313a0f8a4896eb5d0cb4e3afd86229abc0cad69f57a31d314760bc00341
MD5 392b3ef2551957265dfe7c1a671d9961
BLAKE2b-256 dd5f23fb8c1c4c0d60040c71c48abf2ae01b494b9ed9ae68727515a9b93418db

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