codep
A light-weight framework for defining and running dependent tasks. By building a dependency graph between tasks, the runner makes sure that tasks that are required by multiple dependants are only run once and reuses the results.
Usage
In the example below the calculate_circumference and calculate_volume tasks
both depend on the acquire_radius and calculate_pi tasks. The runner will
infer that from the dependency graph and run them before.
import codep
import immutables
@codep.make_partial()
def acquire_radius(state: immutables.Map) -> immutables.Map:
return state.set("radius", 6_371)
@codep.make_partial()
def calculate_pi(state: immutables.Map) -> immutables.Map:
return state.set("pi", 3.14)
@codep.make_partial(depends=(calculate_pi, acquire_radius))
def calculate_circumference(state: immutables.Map) -> immutables.Map:
return state.set("circumference", 2 * state["pi"] * state["radius"])
@codep.make_partial(depends=(acquire_radius, calculate_pi))
def calculate_volume(state: immutables.Map) -> immutables.Map:
return state.set("volume", (4/3) * state["pi"] * state["radius"] ** 3)
if __name__ == '__main__':
r1, r2 = codep.run(calculate_circumference, calculate_volume)
circumference = r1.state["circumference"]
volume = r2.state["volume"]
print(
f"The circumference of earth is {circumference} km and its volume is "
f"{volume} km^3"
)
Todo
- Make Partial a Generic, and make tasks only able to return a value.
Partial.applyshould instead assign the result to the state which becomes a mappingType[Partial] -> Any. - Remove
print(), use logging - Concurrent task execution
Metadata
Release files for codep 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| codep-0.0.1.tar.gz | 2.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| codep-0.0.1-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 5.3 kB
Release files / codep-0.0.1.tar.gz
| Download URL | codep-0.0.1.tar.gz |
|---|---|
| Size | 2.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9f44e5e692f3eae203ed971c1ff3400c9388dc6ae1751292f3f811aaec32623b
|
|
BLAKE2b-256 checksum How to use checksums |
1944d6b10f4f8a3e59fc54ba51830a6b3c1bf062b4b2885598b71203a50d1a3e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3
|
Release files / codep-0.0.1-py2.py3-none-any.whl
| Download URL | codep-0.0.1-py2.py3-none-any.whl |
|---|---|
| Size | 2.6 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
7ee21d163962c3c769746e2749b2e3a83e54063b2eef0c8bc6cd7483de7481e0
|
|
BLAKE2b-256 checksum How to use checksums |
3de2be0644e1e0461708940989f801ef3617c56aa5cdbb0a2e5d32c7b6aeb045
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3
|