volatile
========

Temporary files and directories.

Contains replacement for ``tempfile.NamedTemporaryFile`` that does not delete
the file on ``close()``, but still unlinks it after the context manager ends,
as well as a ``mkdtemp``-based temporary directory implementation.

* Mostly reuses the stdlib implementations, supporting the same signatures.
* Due to that, uses the OS's built-in temporary file facilities, no custom
  schemes.
* Tested on Python 2.6+ and 3.3+


Usage
-----

A typical use-case that is not possible with the regular
``NamedTemporaryFile``:

.. code-block:: python

    import volatile

    with volatile.file() as tmp:
        # tmp behaves like a regular NamedTemporaryFile here, except for that
        # it gets unlinked at the end of the context manager, instead of when
        # close() is called.

        tmp.close()

        # run the users $EDITOR
        run_editor(tmp.name)

        buf = open(tmp.name).read()

        # ...

Temporary directories:

.. code-block:: python

    import volatile

    with volatile.dir(): as dtmp:
        pass  # ... can use directory here

    # a missing dtmp will not throw an exception!

Unix domain sockets:

.. code-block:: python

    import volatile

    with volatile.unix_socket(): as (sock, addr):
        # sock is the bound socket, addr its address on the filesystem
        pass  # ... can use directory here

The source is fairly short and contains `API docs in the comments
<https://github.com/mbr/volatile/blob/master/volatile/__init__.py>`_.
