summaryrefslogtreecommitdiffstats
path: root/third_party/python/atomicwrites/PKG-INFO
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/python/atomicwrites/PKG-INFO')
-rw-r--r--third_party/python/atomicwrites/PKG-INFO112
1 files changed, 112 insertions, 0 deletions
diff --git a/third_party/python/atomicwrites/PKG-INFO b/third_party/python/atomicwrites/PKG-INFO
new file mode 100644
index 0000000000..eec6b7c305
--- /dev/null
+++ b/third_party/python/atomicwrites/PKG-INFO
@@ -0,0 +1,112 @@
+Metadata-Version: 1.0
+Name: atomicwrites
+Version: 1.1.5
+Summary: Atomic file writes.
+Home-page: https://github.com/untitaker/python-atomicwrites
+Author: Markus Unterwaditzer
+Author-email: markus@unterwaditzer.net
+License: MIT
+Description: ===================
+ python-atomicwrites
+ ===================
+
+ .. image:: https://travis-ci.org/untitaker/python-atomicwrites.svg?branch=master
+ :target: https://travis-ci.org/untitaker/python-atomicwrites
+
+ .. image:: https://ci.appveyor.com/api/projects/status/vadc4le3c27to59x/branch/master?svg=true
+ :target: https://ci.appveyor.com/project/untitaker/python-atomicwrites/branch/master
+
+ Atomic file writes.
+
+ .. code-block:: python
+
+ from atomicwrites import atomic_write
+
+ with atomic_write('foo.txt', overwrite=True) as f:
+ f.write('Hello world.')
+ # "foo.txt" doesn't exist yet.
+
+ # Now it does.
+
+
+ Features that distinguish it from other similar libraries (see `Alternatives and Credit`_):
+
+ - Race-free assertion that the target file doesn't yet exist. This can be
+ controlled with the ``overwrite`` parameter.
+
+ - Windows support, although not well-tested. The MSDN resources are not very
+ explicit about which operations are atomic.
+
+ - Simple high-level API that wraps a very flexible class-based API.
+
+ - Consistent error handling across platforms.
+
+
+ How it works
+ ============
+
+ It uses a temporary file in the same directory as the given path. This ensures
+ that the temporary file resides on the same filesystem.
+
+ The temporary file will then be atomically moved to the target location: On
+ POSIX, it will use ``rename`` if files should be overwritten, otherwise a
+ combination of ``link`` and ``unlink``. On Windows, it uses MoveFileEx_ through
+ stdlib's ``ctypes`` with the appropriate flags.
+
+ Note that with ``link`` and ``unlink``, there's a timewindow where the file
+ might be available under two entries in the filesystem: The name of the
+ temporary file, and the name of the target file.
+
+ Also note that the permissions of the target file may change this way. In some
+ situations a ``chmod`` can be issued without any concurrency problems, but
+ since that is not always the case, this library doesn't do it by itself.
+
+ .. _MoveFileEx: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365240%28v=vs.85%29.aspx
+
+ fsync
+ -----
+
+ On POSIX, ``fsync`` is invoked on the temporary file after it is written (to
+ flush file content and metadata), and on the parent directory after the file is
+ moved (to flush filename).
+
+ ``fsync`` does not take care of disks' internal buffers, but there don't seem
+ to be any standard POSIX APIs for that. On OS X, ``fcntl`` is used with
+ ``F_FULLFSYNC`` instead of ``fsync`` for that reason.
+
+ On Windows, `_commit <https://msdn.microsoft.com/en-us/library/17618685.aspx>`_
+ is used, but there are no guarantees about disk internal buffers.
+
+ Alternatives and Credit
+ =======================
+
+ Atomicwrites is directly inspired by the following libraries (and shares a
+ minimal amount of code):
+
+ - The Trac project's `utility functions
+ <http://www.edgewall.org/docs/tags-trac-0.11.7/epydoc/trac.util-pysrc.html>`_,
+ also used in `Werkzeug <http://werkzeug.pocoo.org/>`_ and
+ `mitsuhiko/python-atomicfile
+ <https://github.com/mitsuhiko/python-atomicfile>`_. The idea to use
+ ``ctypes`` instead of ``PyWin32`` originated there.
+
+ - `abarnert/fatomic <https://github.com/abarnert/fatomic>`_. Windows support
+ (based on ``PyWin32``) was originally taken from there.
+
+ Other alternatives to atomicwrites include:
+
+ - `sashka/atomicfile <https://github.com/sashka/atomicfile>`_. Originally I
+ considered using that, but at the time it was lacking a lot of features I
+ needed (Windows support, overwrite-parameter, overriding behavior through
+ subclassing).
+
+ - The `Boltons library collection <https://github.com/mahmoud/boltons>`_
+ features a class for atomic file writes, which seems to have a very similar
+ ``overwrite`` parameter. It is lacking Windows support though.
+
+ License
+ =======
+
+ Licensed under the MIT, see ``LICENSE``.
+
+Platform: UNKNOWN