Skip to main content
## Introduction

`temps` is a python module containing context managers for creating and
cleaning up temporary files and directories.

This package is _alpha_ and its API is not stable.

Why do I never use the `tempfile` module?

- I am responsible for removing files and dirs tempfile creates, which creates
lots of boilerplate whenever I use it.
- There is no context manager for temp dirs.
- When using `mkstemp()`, I get an open file descriptor, not a file object,
that I have to close.
- The context manager for temp files contains statements like this
from the tempfile docs: "Whether the name can be used to open the file a
second time, while the named temporary file is still open, varies across
platforms"
- I do not get to choose the file perms of files and dirs I create.

What do I like about this module?

- It has a context manager for creating a temp dir and another for temp files.
- The context manager cleans up the dir or file upon context exit, not upon file
closure.
- No ambiguity about whether you can or cannot open a file twice.
- You can set the permissions of the temp file or dir to what you want.
- It is very clear what the implementation is:
- directories are created and the path is returned.
- files are not created, since you'll want to do that in a `with
open(filename) ...` statement, and the path is returned.
- directories and files are cleaned up by the context managers.
- file and dir names are generated using the uuid module, which presumably
will avoid race conditions.


## Contribute

Feel free to make a pull request on github.


## Requirements

- Probably Python 2.7 (since that is the only version it has been tested with.)


## Installation


### Install from pypi.python.org

Download and install using pip:

pip install temps


### Install from github.com

Using github, one can clone and install a specific version of the package:

cd ~
git clone git@github.com:todddeluca/temps.git
cd temps
python setup.py install


## Usage

Creating a working dir for subprocesses:

with temps.tmpdir() as workdir:
with open(os.path.join(workdir, 'datafile'), 'wb') as fh:
fh.write(data)
subprocess.call('compute.sh {}'.format(workdir), shell=True)
with open(os.path.join(workdir, 'outfile')) as fh:
print fh.read()

Creating a temp file for a transform and upload:

with temps.tmpfile() as transformed_path:
transform(input_path, transformed_path)
upload(transformed_path, destination)

The default values when parameters are not specified, are stored in variables
that are set using environment variables if available or a default value
otherwise. Here is a table listing the variable, the environment variable
checked, and the default value:

Variable, ENV_VAR, Default
TEMPS_DIR, TEMPS_DIR, tempfile.gettempdir()
TEMPS_PREFIX, TEMPS_PREFIX, ''
TEMPS_SUFFIX, TEMPS_SUFFIX, ''
TEMPS_MODE, TEMPS_MODE, '0777'

Metadata

Release files for temps 0.3.0

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

Source distribution (sdist)

Source distribution for temps 0.3.0
File Size Uploaded
temps-0.3.0.tar.gz 4.8 kB Details

Release files / temps-0.3.0.tar.gz

Download URL temps-0.3.0.tar.gz
Size 4.8 kB
Tags Source
SHA-256 checksum
How to use checksums
bc2b1489e4b118e5d0d174f841b487dea3f46dacc0da6c0814064f63f86c150d
BLAKE2b-256 checksum
How to use checksums
4da51ce68a8088f9373566655c205910966da8222fd0e7f68bddd8ce5a28786e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.3.0 This release

1 release file

0.2.0

1 release file

0.1.0

1 release file

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