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.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(
    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.11.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.11-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (684.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

modak-0.2.11-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (747.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

modak-0.2.11-cp313-cp313t-musllinux_1_2_x86_64.whl (854.4 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

modak-0.2.11-cp313-cp313t-musllinux_1_2_i686.whl (904.3 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

modak-0.2.11-cp313-cp313t-musllinux_1_2_armv7l.whl (952.8 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

modak-0.2.11-cp313-cp313t-musllinux_1_2_aarch64.whl (843.8 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

modak-0.2.11-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (747.0 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

modak-0.2.11-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (856.8 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

modak-0.2.11-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (693.0 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

modak-0.2.11-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (667.2 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

modak-0.2.11-cp313-cp313-win_amd64.whl (486.6 kB view details)

Uploaded CPython 3.13Windows x86-64

modak-0.2.11-cp313-cp313-win32.whl (477.1 kB view details)

Uploaded CPython 3.13Windows x86

modak-0.2.11-cp313-cp313-musllinux_1_2_x86_64.whl (854.1 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

modak-0.2.11-cp313-cp313-musllinux_1_2_i686.whl (904.1 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

modak-0.2.11-cp313-cp313-musllinux_1_2_armv7l.whl (952.6 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

modak-0.2.11-cp313-cp313-musllinux_1_2_aarch64.whl (844.5 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

modak-0.2.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (685.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

modak-0.2.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (746.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390x

modak-0.2.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (857.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64le

modak-0.2.11-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (746.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

modak-0.2.11-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (692.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

modak-0.2.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (667.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

modak-0.2.11-cp313-cp313-macosx_11_0_arm64.whl (613.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

modak-0.2.11-cp313-cp313-macosx_10_12_x86_64.whl (634.5 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

modak-0.2.11-cp312-cp312-win_amd64.whl (487.1 kB view details)

Uploaded CPython 3.12Windows x86-64

modak-0.2.11-cp312-cp312-win32.whl (477.7 kB view details)

Uploaded CPython 3.12Windows x86

modak-0.2.11-cp312-cp312-musllinux_1_2_x86_64.whl (854.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

modak-0.2.11-cp312-cp312-musllinux_1_2_i686.whl (905.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

modak-0.2.11-cp312-cp312-musllinux_1_2_armv7l.whl (953.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

modak-0.2.11-cp312-cp312-musllinux_1_2_aarch64.whl (845.2 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

modak-0.2.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (685.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

modak-0.2.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (746.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

modak-0.2.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (859.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

modak-0.2.11-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (746.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

modak-0.2.11-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (693.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

modak-0.2.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (668.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

modak-0.2.11-cp312-cp312-macosx_11_0_arm64.whl (614.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

modak-0.2.11-cp312-cp312-macosx_10_12_x86_64.whl (634.8 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for modak-0.2.11.tar.gz
Algorithm Hash digest
SHA256 91aa9131cf4f2743b4d0d4d450ff6508b947da01e4d1186a6043fa03f25efce7
MD5 e5727a994e684964438157dd4a2dbe16
BLAKE2b-256 55b69f515c8c35270e922ddbd4d741c1a0ea14cc074013b3915ef6141c20db1b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 935b63858ca791e033252084fe053e555231431238116930960c1b90d4ce3f38
MD5 d7f09a68ae3c2a4641b7218fa59f03ea
BLAKE2b-256 a29a7601d569e83d56d75745138c1fe9fdb9d10777a6ae9240b911e2cc6367ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 11cdadcd8656ca861e0dd5ecff1e61739603f51801f313442a0f62a347efe4d4
MD5 8ecf0956851704574c47301a87b4ed7d
BLAKE2b-256 2d29fa99485daf4a20fc684b54e7ed42d5ba55f3c88aca54e5955a40fdb084c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4934978f6ce1c13138aa2e4167f192de6b8470af8d662012b27ded1cc62accbd
MD5 5db9ddf910ccd443435f97da8bbf0536
BLAKE2b-256 285462cc95072dd6139bb4daec1a85723a5c0ddf24b1a312b980407aa17a1a9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 89196b64f7d31b4c48084f37ad03cb57f51c6dfac06eb1530b6b093beda3d77b
MD5 9a4a98fbc4cd22cc1508ae0f678dd0a7
BLAKE2b-256 d204edb06ca3c978eea6decf2b05b263f21f7a2a67f5e6766a503a76ba1d379f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 ed433e1db596a54ba237a2b8c0789bcd6447733f82ce97eeb520a6f7c834bab3
MD5 7c6b8f69ef9856c7942fe41e17426614
BLAKE2b-256 ca3af788ab727712ddca83d735057c41c7b37446068c8ab1378c7213900712d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f3415876c5790ec481a9b9e631df11013ac9631716793ded2f0e9edba7752198
MD5 9a6429adce2fb91fce22f78e035c52e4
BLAKE2b-256 1cbdcb59ccf3f57269757922f466dc24fb9db78aad216914d526d851ef62cf51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 1a0e3bacfbdbac4eb70fff5dcd65f0d1e82648242739fe07e76874f7c2ca0898
MD5 791b1953bd17d3156b4a1d690ecaceda
BLAKE2b-256 14d4378c0a1c55c97bc907ccae5a241608635f27cf1d9931972786834956ea55

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 13b593d9efb2381029e3b5e52dda43e874752559d2b27db18247a2914c377a72
MD5 2f0ce642a8d70ce81a262cf5cd6b1b35
BLAKE2b-256 c331d952c61609018a7b42b52ee7bd5a2b4d3a6fd8e2612d6593c1bfd0610f34

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 5fc2f3795ef170ac431d60d00a26c906b4e1b9e385697ab74d8add0d9e973743
MD5 67db7dfd151cee4101c25d2d2fa5fec1
BLAKE2b-256 86c77d3174c576313f0b6c4ef18ba1ebc94cf967bb25fc922260ccadf68d11df

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bd04ae4fe19a760722f445e85da0c42a617eab1c4bf3d5f90931e20524ba9d3c
MD5 850f5f44c9e096a238a1601c4ecdd675
BLAKE2b-256 dedf364ad53d655509271bb34144fff48c97d5bfc24f8af0951bee3d6634aac7

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for modak-0.2.11-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 112384b4ced51c3c3caf7a5f85fdf62a506ab8fd5c0248630ea03454dc93c5da
MD5 0bca13f75f1c68ed649eeb0763cce997
BLAKE2b-256 5add3577324d830ed74a586cb8f8baece11a1e66883e5a160b772e5e148a00e5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.11-cp313-cp313-win32.whl
  • Upload date:
  • Size: 477.1 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.9.0

File hashes

Hashes for modak-0.2.11-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 5960d890ed7933d5aee57f315adda05bbae1ab01b9609a0c17830e601d21393c
MD5 67a4b82e02884df3a039153623ce2149
BLAKE2b-256 f02de1a4eefa527f3a90c255f9482250feff1a769fb9a7d0053d163739866ace

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bf4fdfd997b73b6b558c7467eed8804c5977be85e7282e58636baabbf0face5a
MD5 feefb8853ea985c177d423e93c0cb5f4
BLAKE2b-256 4b8a2c7f1161043b37447bf1aafa1bf62cf0d881f2f01291ec30546efb6032e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 812f5306ab2378e29065ac850e5cc45bb7b5a3c05562b254540f1e61690bf98d
MD5 e9602f5169827a59892fa83e827d5527
BLAKE2b-256 a764a06f6b926b9b8b9fdef35b50835f7a1b4d16314d1e449b6075fb5089fb45

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 55dc41cba20c984d57920670a0a52ea5e248802766ec1c1c0fba7d90489e7dca
MD5 9b804deafa53dc2620a05c2a13987e31
BLAKE2b-256 c534cf1a9a2a75f97d1ec54de3032116147f207d43515c6b892716b8af2e2149

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 05e00048ec6d781179c16c292018e04f80c2776bd77d8f566c9db3c6128a199f
MD5 51c732aaf27f66a6b11295d57dbaa69c
BLAKE2b-256 06671a0c3fec0647a89c4a7faa7191c30ca54365a5d602e9cbe1cd63cfe86bc1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3f4c032f89c76f96b94b68273c2035c0ee68139758c654abb619170daf285937
MD5 356e3e925785aeaaa04e703b3d7955da
BLAKE2b-256 ecc9cb6a60728fbeebeffd18c3820b668669451a047fb6b6c31891e08bfcdd08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 3dba491f4200ff3684439bcf1f374195a1325c03761e013a0bff1bb819687f80
MD5 f0c1fd015a9c408529b7de894438cddc
BLAKE2b-256 6dfd6734332ce586f55dbe2c5d245d1a2b3bf2833233b789235542c81ecd8c6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 3815727ee5684db47113d5163cee4d78a9a9255bf1e1b3962c7b911f76138010
MD5 dafcb567d35ffb242959d1f7bd864034
BLAKE2b-256 1642c18e513d1cfb5aa7c048a65d060ba2ba245cd291651e5208d100938bb6f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 df14c9a16ece4cc69bae88b3104fedca4248b66bedac6d0c0e0979c7d8e2322e
MD5 4e6a852a05a3ac59021f79b0173657e7
BLAKE2b-256 dcdcd2bcfe15da6f14862c3b2bce74938c301f4a2258efd5d4f3c4c466ee1a6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 c391ad54f021220aac2c03cd9a319b39e1ccaeb5ec751297718ca451063b830b
MD5 9e3f7cb4e0dc5d62eb1fb979ada6a155
BLAKE2b-256 6d99da124806a9be9dd0476ab7e766bd2f26892a30255eaed21f03e8de78bc63

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 45e07689a5510dad9090928a75fb6e4fbdcb2125dec2d41088b660f4d0ec8206
MD5 029e64c2c3fe992ac3652823ffa74478
BLAKE2b-256 339d2ff1dc2b51453291c50b259b90a361a9fc449e9aa3b8383b81dd487ef374

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 36075e87494127a05c2680e64f6e10debbd9e50456afbbdd9da9c7985762bbcd
MD5 7aeadd53c538b71af887f68bcbb55a4e
BLAKE2b-256 073d2c4f55cbe2d18701222d26132dcdb772df24cb14dabfc3b3028a87674253

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a8339a4335001f8799bd65e6450cd3c2314b140c26474d63c1a981b0dbcc75a9
MD5 83ba094896e14539914c1d8fa7cd313c
BLAKE2b-256 7e8793bfc371e11e3d0b6ffcc7176caf56d002308293d0eeed3c74f1076dd6fe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.11-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 487.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.9.0

File hashes

Hashes for modak-0.2.11-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 17c5a9455c9455047999d5193e38dd4a4232dc49e552b4296d531a8f38861ef5
MD5 cd9c47dd0b7a0f42de7913fb61296dd5
BLAKE2b-256 63bc9a67903c22e0daf58a56b89dff233191236b54574e68f8055c11a78e5d6e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: modak-0.2.11-cp312-cp312-win32.whl
  • Upload date:
  • Size: 477.7 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.9.0

File hashes

Hashes for modak-0.2.11-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 cf79f76cfbebdd693fcb84f9f015f3ebf7bc0ea5628b44605c62a89f4a112307
MD5 3680eccaf91a85896b2d4efbfa6e4a36
BLAKE2b-256 acb8867a43e562e12e67f587065c65065c5fa67b67b80ab10455c93306b8ccbc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 06970b5d64984b2f1d25ca2de824d8471a2c411ed52bc0209b88f670a691ba9c
MD5 54832fd856228ae7136cf8ef57eb806c
BLAKE2b-256 c6f14ba9057d4b82533718ca65b30a1237dded1487b92a88623b702d0829ee53

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 cab58b556b798ec8d090f58ebadf3c43957f122baa4e40ca9c8d82f13e15d794
MD5 9978ea603b5fc39e94bfd1f4671357b7
BLAKE2b-256 82b13caac8bd18ee76d868f972042b5121ccbf134f04c7e818ac314886dd5539

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 46d7a8756780bacf6d7158159ad0dd90782c2c000d83ccff407a963caabcdb6e
MD5 e4585ce8f437be1371f0f12c773784de
BLAKE2b-256 dbb942d22debbb550b828191181f995fcd079b27e5cb4a9369246931856d2fe4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 171e57f10dac5729053219c4fb40e0fa206ff46b78e58c18140ebee3c78ab38b
MD5 b66f63937395d134f9e579ea5fa03030
BLAKE2b-256 14b2d8abec25c94c864e7ff069cda08fbc0fa93184a96c9a8ccfdeb608ffb437

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d2f01ab7dfb0adb1cf5a5c102dbba22686b611a27a6b79af714812d852f4de5d
MD5 75eb6ccf3dd30981df95baa858f8893e
BLAKE2b-256 929ed9ed839b13eeca31816e09873707a7cdbcd64d5704372ecf48358d4e16e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 2182daa2e96d5c2da20fa6126d4c4eaa1ece559df953eb8f739e450b0a8fe1bb
MD5 3b0e5e40422349960e6a5be8ae317d46
BLAKE2b-256 228d249997a2f9b1202d5da856c8ee8096f2825910bb231b8f3805b0bdd75409

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 0c2919f2594900f6ab934d087349ec849d2a2a3076fe2a16874e5e04da448ab5
MD5 186667eb6bc4b63bd0868e9e0459d049
BLAKE2b-256 2dfd99de130161cc7c1eefd5d0c32a5e5f0a382fd5e5e057c73519c15ce5e39e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 adf76d2aae50f2e332d070cea51e1c30af86b1a3c154bf32af8ba695c3c636c3
MD5 eb8b5bc5363ed16868eccb7832fc2a4f
BLAKE2b-256 6d776e62f47c9e1b098bd4e094e1923ab017f8f41e45ed8921661d16f9e2dea0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 37ef38a3ded096cfda951d928c19d4f9a633931a24eb5e56ae0e16f1788add97
MD5 cabcfd8b55fec1823b4f4c20b06828bc
BLAKE2b-256 ecc35eeef3a3cb8f2b033847c35acd44431cfd274986425fff4f870d1375b057

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6d42cfaf1eb36301b0213e61c063881e73fdd53c21ec983e521b9ffc3446cb93
MD5 5344566d88d7453bc0f0590b69807b11
BLAKE2b-256 8af09f53691b90cad10ac41c82f520fdd2e0a019a6a97889ce298c9b28c32a65

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7f219457399b8b7ee8db85e5bfd36e8e8faaf5b3e503c96d08d11c87b19a3790
MD5 ae2a8579f3880805cfee3d71e4d4933f
BLAKE2b-256 871c3abda85bd967f47fb5dd93e7040422cd08ead0af3e397a048340ac4dc18b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for modak-0.2.11-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a0659c67eda0ba32ea66eb06eb48045c0b72d5a63e6bd2fe2a64c2c65b699ac8
MD5 e40a778efca137a96b47abcb5a981642
BLAKE2b-256 1f007c2ecf31248fc77d8c43e0902a937561d324cfc81fd844ee41101604a978

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