Skip to main content

Tidypath

Tidypath automates the saving and loading of data and figures with a single line of code. It ensures deterministic naming based on call arguments and applies optimal compression out of the box.

View Overview Slides

Overview

Keep your files tidy!

Don't spend time creating directories, deciding filenames, saving, loading, etc. Decorators savefig & savedata will do it for you.

  • savedata computes output and stores it in the first function call. Future calls reads it from memory. Default LZMA compression
  • savefig saves output figure.

Although recommended, it is not needed to start a new project using tidypath. You can continue using your previous code and apply tidypath on new code.

savedata

Example function slow_computation in module package.subpackages.module

@savedata("x+z")
def slow_computation(x, y, *args, z=1, **kwargs):
    ...
    return result
  1. Apply to function (result of any type).
  2. Choose the variables to record in the filenames.
  3. Optionally, choose file extension and other specifications. Supported: lzma (default), bz2, npz, csv, JSON.
  4. Result will be saved at data/subpackages/module/slow_computation/x-'x'_z-'z'_.lzma ('x' = value of x passed to slow_computation during call)
  5. If you want to recompute and overwrite, you can pass overwrite=True to slow_computation. The decorator adds the arguments: save, overwrite, keys and funcname_in_filename.

savefig

@savefig("kwargs")
def plot_results(*args, **kwargs):
    ...
    return figure
  • Same steps as savedata. Only difference is the output type.
  • Supports matplotlib and plotly and all figure extensions (png, eps, ...) including html (plotly).
  • Decorator adds the same arguments as savedata plus return_fig (bool).

Adaptable to code modifications

Caching data depends on the specific variables set to store, since they define the filenames. Suppose we want to add a new variable method indicating a new method for computing the results, but already computed results are still useful. We can

  1. Modify the variables to record in the savedata decorator:

     @savedata("x+z")     =>    @savedata("x+z+method")
    
  2. Assign method='original' to all existing pre-computed files:

     add_arg(slow_computation, method='original')
    
  3. Now access is granted for the already computed data, and data corresponding to new methods will be stored in separate files.

Use the functions add_arg, modify_arg, delete_arg to ensure cached data is loaded after modifying function arguments.

Example

Docs

Github pages

Install

pip install tidypath

Metadata

Release files for tidypath 1.5.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tidypath 1.5.6
File Size Uploaded
tidypath-1.5.6.tar.gz 33.7 kB Details

Release files / tidypath-1.5.6.tar.gz

Download URL tidypath-1.5.6.tar.gz
Size 33.7 kB
Tags Source
SHA-256 checksum
How to use checksums
e503e5b5f5dbcbb0f5e39be7ab498cd6f1e9275aa1624fa26bdc0a21b6c07ef6
BLAKE2b-256 checksum
How to use checksums
a73f8e84dfe3a899fb85641e16de3e68ec6fa67f7faf33124b5140b013da87fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release

1.5.6 This release

1 release file

1.5.5

1 release file

1.5.4

1 release file

1.5.3

1 release file

1.5.2

1 release file

1.5.1

1 release file

1.5.0

1 release file

1.4.9

1 release file

1.4.8

1 release file

1.4.7

1 release file

1.4.6

1 release file

1.4.5

1 release file

1.4.3

1 release file

1.4.2

1 release file

1.4.1

1 release file

1.4.0

1 release file

1.3.9

1 release file

1.3.8

1 release file

1.3.7

1 release file

1.3.6

1 release file

1.3.5

1 release file

1.3.4

1 release file

1.3.3

1 release file

1.3.2

1 release file

1.3.1

1 release file

1.3.0

1 release file

1.2.8

1 release file

1.2.7

1 release file

1.2.6

1 release file

1.2.5

1 release file

1.2.4

1 release file

1.2.3

1 release file

1.2.2

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.9

1 release file

1.1.8

1 release file

1.1.7

1 release file

1.1.6

1 release file

1.1.5

1 release file

1.1.4

1 release file

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.9

1 release file

1.0.8

1 release file

1.0.7

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page