Skip to main content

A simple package to save a compressed directory.

Project description

freezedry

A simple method to store a compressed copy of a code repository with customizable filtering of files.

PyPI version

Do you ever wish you knew exactly which version of code you used when you made a figure, ran a job on a HPC cluster, or anything else? Freezedry is the solution!

With freezedry, you can easily save a compressed copy of an entire file directory that is designed to focus on code. Freezedry is a very simple package-- it only has one method you need to use (freezedry) that takes as input a path to a directory and a path to an output file, along with a few customizable optional input arguments.

What does freezedry include? Everything, if you don't specify. However, it's very easy to ignore:

  • git related files (i.e. anything with the pattern .git in the file path)
  • anything specified in a .gitignore file (thank you to Michael Herrmann) for the useful gitignore_parser package.
  • anything else you want (including exact string matches and regular expressions).

Installation

It's on PyPI. If there's any issues, please raise one on this GitHub repo to let me know.

pip install freezedry

Usage

Suppose that /..dirs../GitHub/your_repo contains some code you've been working on. And say you use the code in your_repo to do some analyses that are saved to /..dirs../results. Then, the following block of code will save a copy of your repo to the /results directory, ignoring any .git related files and ignoring anything in your .gitignore.

from freezedry import freezedry
directory_path = '/..dirs../GitHub/your_repo'
output_path = '/..dirs../results'
freezedry(directory_path, 
          output_path=output_path, 
          ignore_git=True, 
          use_gitignore=True, 
          verbose=True)

In addition, you can specify which files to ignore in two other ways:

  1. Direct match strings with extra_ignore. This is a list of strings, and if any string in the list is contained in a file, that file will be ignored. For example, if extra_ignore=['hi', 'world'] then '../hi/test.py' and '../myworld.py' will be ignored.

  2. Regular expression strings with regexp_ignore. This is a list of strings used as regular expressions. The rules are similar to extra_ignore, except that it uses the re.search method to find matches.

Setting the .gitignore

If .gitignore is not provided, then freezedry will look for it (non-recursively) in directory_path. Alternatively, you can provide a .gitignore directly with the optional argument gitignore_path. Note that you always have to set use_gitignore=True regardless of whether you provided a gitignore_path.

For example:

from freezedry import freezedry
directory_path = '/..dirs../GitHub/your_repo'
output_path = '/..dirs../results'
gitignore_path = '/..dirs../GitHub/my_other_repo/.gitignore'
freezedry(directory_path, 
          output_path=output_path, 
          ignore_git=True, 
          use_gitignore=True, # if False, won't use gitignore_path even if provided!!! 
          gitignore_path=gitignore_path, 
          verbose=True)

Contributing

I'm happy to take issues or pull requests, let me know if you have any ideas on how to make this better or requests for fixes.

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

freezedry-0.0.5.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

freezedry-0.0.5-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file freezedry-0.0.5.tar.gz.

File metadata

  • Download URL: freezedry-0.0.5.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.12

File hashes

Hashes for freezedry-0.0.5.tar.gz
Algorithm Hash digest
SHA256 9c8bd054cdda9bcc5f701f80f272d6abb37614216bc35a113a408c42e26bdffe
MD5 9b05d2e2c7b4582fa7fe63d5a7fc7337
BLAKE2b-256 153523d6be5505a8a955d685eeb72d32e4cb01a352323981298498436275c76e

See more details on using hashes here.

File details

Details for the file freezedry-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: freezedry-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 5.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.12

File hashes

Hashes for freezedry-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 3d56fe226b20c7cf03c594bf3f35b319404e5bca5990d831f4fa4c6a7660cad4
MD5 27e9e54d408d579367a4ba1b341adf76
BLAKE2b-256 e44d1df1a5f9238df8e352f34924fbe73969b165230a6914e11e97be489b0191

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page