`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)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| temps-0.3.0.tar.gz | 4.8 kB | Without provenance | Details for temps-0.3.0.tar.gz |
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 |
Security for temps 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.