fix vendor
This commit is contained in:
1
vendor/scandir-1.10.0.dist-info/INSTALLER
vendored
Normal file
1
vendor/scandir-1.10.0.dist-info/INSTALLER
vendored
Normal file
@@ -0,0 +1 @@
|
||||
pip
|
27
vendor/scandir-1.10.0.dist-info/LICENSE.txt
vendored
Normal file
27
vendor/scandir-1.10.0.dist-info/LICENSE.txt
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
Copyright (c) 2012, Ben Hoyt
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of Ben Hoyt nor the names of its contributors may be used
|
||||
to endorse or promote products derived from this software without specific
|
||||
prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
237
vendor/scandir-1.10.0.dist-info/METADATA
vendored
Normal file
237
vendor/scandir-1.10.0.dist-info/METADATA
vendored
Normal file
@@ -0,0 +1,237 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: scandir
|
||||
Version: 1.10.0
|
||||
Summary: scandir, a better directory iterator and faster os.walk()
|
||||
Home-page: https://github.com/benhoyt/scandir
|
||||
Author: Ben Hoyt
|
||||
Author-email: benhoyt@gmail.com
|
||||
License: New BSD License
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: License :: OSI Approved :: BSD License
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Topic :: System :: Filesystems
|
||||
Classifier: Topic :: System :: Operating System
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.4
|
||||
Classifier: Programming Language :: Python :: 3.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
|
||||
scandir, a better directory iterator and faster os.walk()
|
||||
=========================================================
|
||||
|
||||
.. image:: https://img.shields.io/pypi/v/scandir.svg
|
||||
:target: https://pypi.python.org/pypi/scandir
|
||||
:alt: scandir on PyPI (Python Package Index)
|
||||
|
||||
.. image:: https://travis-ci.org/benhoyt/scandir.svg?branch=master
|
||||
:target: https://travis-ci.org/benhoyt/scandir
|
||||
:alt: Travis CI tests (Linux)
|
||||
|
||||
.. image:: https://ci.appveyor.com/api/projects/status/github/benhoyt/scandir?branch=master&svg=true
|
||||
:target: https://ci.appveyor.com/project/benhoyt/scandir
|
||||
:alt: Appveyor tests (Windows)
|
||||
|
||||
|
||||
``scandir()`` is a directory iteration function like ``os.listdir()``,
|
||||
except that instead of returning a list of bare filenames, it yields
|
||||
``DirEntry`` objects that include file type and stat information along
|
||||
with the name. Using ``scandir()`` increases the speed of ``os.walk()``
|
||||
by 2-20 times (depending on the platform and file system) by avoiding
|
||||
unnecessary calls to ``os.stat()`` in most cases.
|
||||
|
||||
|
||||
Now included in a Python near you!
|
||||
----------------------------------
|
||||
|
||||
``scandir`` has been included in the Python 3.5 standard library as
|
||||
``os.scandir()``, and the related performance improvements to
|
||||
``os.walk()`` have also been included. So if you're lucky enough to be
|
||||
using Python 3.5 (release date September 13, 2015) you get the benefit
|
||||
immediately, otherwise just
|
||||
`download this module from PyPI <https://pypi.python.org/pypi/scandir>`_,
|
||||
install it with ``pip install scandir``, and then do something like
|
||||
this in your code:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
# Use the built-in version of scandir/walk if possible, otherwise
|
||||
# use the scandir module version
|
||||
try:
|
||||
from os import scandir, walk
|
||||
except ImportError:
|
||||
from scandir import scandir, walk
|
||||
|
||||
`PEP 471 <https://www.python.org/dev/peps/pep-0471/>`_, which is the
|
||||
PEP that proposes including ``scandir`` in the Python standard library,
|
||||
was `accepted <https://mail.python.org/pipermail/python-dev/2014-July/135561.html>`_
|
||||
in July 2014 by Victor Stinner, the BDFL-delegate for the PEP.
|
||||
|
||||
This ``scandir`` module is intended to work on Python 2.7+ and Python
|
||||
3.4+ (and it has been tested on those versions).
|
||||
|
||||
|
||||
Background
|
||||
----------
|
||||
|
||||
Python's built-in ``os.walk()`` is significantly slower than it needs to be,
|
||||
because -- in addition to calling ``listdir()`` on each directory -- it calls
|
||||
``stat()`` on each file to determine whether the filename is a directory or not.
|
||||
But both ``FindFirstFile`` / ``FindNextFile`` on Windows and ``readdir`` on Linux/OS
|
||||
X already tell you whether the files returned are directories or not, so
|
||||
no further ``stat`` system calls are needed. In short, you can reduce the number
|
||||
of system calls from about 2N to N, where N is the total number of files and
|
||||
directories in the tree.
|
||||
|
||||
In practice, removing all those extra system calls makes ``os.walk()`` about
|
||||
**7-50 times as fast on Windows, and about 3-10 times as fast on Linux and Mac OS
|
||||
X.** So we're not talking about micro-optimizations. See more benchmarks
|
||||
in the "Benchmarks" section below.
|
||||
|
||||
Somewhat relatedly, many people have also asked for a version of
|
||||
``os.listdir()`` that yields filenames as it iterates instead of returning them
|
||||
as one big list. This improves memory efficiency for iterating very large
|
||||
directories.
|
||||
|
||||
So as well as a faster ``walk()``, scandir adds a new ``scandir()`` function.
|
||||
They're pretty easy to use, but see "The API" below for the full docs.
|
||||
|
||||
|
||||
Benchmarks
|
||||
----------
|
||||
|
||||
Below are results showing how many times as fast ``scandir.walk()`` is than
|
||||
``os.walk()`` on various systems, found by running ``benchmark.py`` with no
|
||||
arguments:
|
||||
|
||||
==================== ============== =============
|
||||
System version Python version Times as fast
|
||||
==================== ============== =============
|
||||
Windows 7 64-bit 2.7.7 64-bit 10.4
|
||||
Windows 7 64-bit SSD 2.7.7 64-bit 10.3
|
||||
Windows 7 64-bit NFS 2.7.6 64-bit 36.8
|
||||
Windows 7 64-bit SSD 3.4.1 64-bit 9.9
|
||||
Windows 7 64-bit SSD 3.5.0 64-bit 9.5
|
||||
Ubuntu 14.04 64-bit 2.7.6 64-bit 5.8
|
||||
Mac OS X 10.9.3 2.7.5 64-bit 3.8
|
||||
==================== ============== =============
|
||||
|
||||
All of the above tests were done using the fast C version of scandir
|
||||
(source code in ``_scandir.c``).
|
||||
|
||||
Note that the gains are less than the above on smaller directories and greater
|
||||
on larger directories. This is why ``benchmark.py`` creates a test directory
|
||||
tree with a standardized size.
|
||||
|
||||
|
||||
The API
|
||||
-------
|
||||
|
||||
walk()
|
||||
~~~~~~
|
||||
|
||||
The API for ``scandir.walk()`` is exactly the same as ``os.walk()``, so just
|
||||
`read the Python docs <https://docs.python.org/3.5/library/os.html#os.walk>`_.
|
||||
|
||||
scandir()
|
||||
~~~~~~~~~
|
||||
|
||||
The full docs for ``scandir()`` and the ``DirEntry`` objects it yields are
|
||||
available in the `Python documentation here <https://docs.python.org/3.5/library/os.html#os.scandir>`_.
|
||||
But below is a brief summary as well.
|
||||
|
||||
scandir(path='.') -> iterator of DirEntry objects for given path
|
||||
|
||||
Like ``listdir``, ``scandir`` calls the operating system's directory
|
||||
iteration system calls to get the names of the files in the given
|
||||
``path``, but it's different from ``listdir`` in two ways:
|
||||
|
||||
* Instead of returning bare filename strings, it returns lightweight
|
||||
``DirEntry`` objects that hold the filename string and provide
|
||||
simple methods that allow access to the additional data the
|
||||
operating system may have returned.
|
||||
|
||||
* It returns a generator instead of a list, so that ``scandir`` acts
|
||||
as a true iterator instead of returning the full list immediately.
|
||||
|
||||
``scandir()`` yields a ``DirEntry`` object for each file and
|
||||
sub-directory in ``path``. Just like ``listdir``, the ``'.'``
|
||||
and ``'..'`` pseudo-directories are skipped, and the entries are
|
||||
yielded in system-dependent order. Each ``DirEntry`` object has the
|
||||
following attributes and methods:
|
||||
|
||||
* ``name``: the entry's filename, relative to the scandir ``path``
|
||||
argument (corresponds to the return values of ``os.listdir``)
|
||||
|
||||
* ``path``: the entry's full path name (not necessarily an absolute
|
||||
path) -- the equivalent of ``os.path.join(scandir_path, entry.name)``
|
||||
|
||||
* ``is_dir(*, follow_symlinks=True)``: similar to
|
||||
``pathlib.Path.is_dir()``, but the return value is cached on the
|
||||
``DirEntry`` object; doesn't require a system call in most cases;
|
||||
don't follow symbolic links if ``follow_symlinks`` is False
|
||||
|
||||
* ``is_file(*, follow_symlinks=True)``: similar to
|
||||
``pathlib.Path.is_file()``, but the return value is cached on the
|
||||
``DirEntry`` object; doesn't require a system call in most cases;
|
||||
don't follow symbolic links if ``follow_symlinks`` is False
|
||||
|
||||
* ``is_symlink()``: similar to ``pathlib.Path.is_symlink()``, but the
|
||||
return value is cached on the ``DirEntry`` object; doesn't require a
|
||||
system call in most cases
|
||||
|
||||
* ``stat(*, follow_symlinks=True)``: like ``os.stat()``, but the
|
||||
return value is cached on the ``DirEntry`` object; does not require a
|
||||
system call on Windows (except for symlinks); don't follow symbolic links
|
||||
(like ``os.lstat()``) if ``follow_symlinks`` is False
|
||||
|
||||
* ``inode()``: return the inode number of the entry; the return value
|
||||
is cached on the ``DirEntry`` object
|
||||
|
||||
Here's a very simple example of ``scandir()`` showing use of the
|
||||
``DirEntry.name`` attribute and the ``DirEntry.is_dir()`` method:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
def subdirs(path):
|
||||
"""Yield directory names not starting with '.' under given path."""
|
||||
for entry in os.scandir(path):
|
||||
if not entry.name.startswith('.') and entry.is_dir():
|
||||
yield entry.name
|
||||
|
||||
This ``subdirs()`` function will be significantly faster with scandir
|
||||
than ``os.listdir()`` and ``os.path.isdir()`` on both Windows and POSIX
|
||||
systems, especially on medium-sized or large directories.
|
||||
|
||||
|
||||
Further reading
|
||||
---------------
|
||||
|
||||
* `The Python docs for scandir <https://docs.python.org/3.5/library/os.html#os.scandir>`_
|
||||
* `PEP 471 <https://www.python.org/dev/peps/pep-0471/>`_, the
|
||||
(now-accepted) Python Enhancement Proposal that proposed adding
|
||||
``scandir`` to the standard library -- a lot of details here,
|
||||
including rejected ideas and previous discussion
|
||||
|
||||
|
||||
Flames, comments, bug reports
|
||||
-----------------------------
|
||||
|
||||
Please send flames, comments, and questions about scandir to Ben Hoyt:
|
||||
|
||||
http://benhoyt.com/
|
||||
|
||||
File bug reports for the version in the Python 3.5 standard library
|
||||
`here <https://docs.python.org/3.5/bugs.html>`_, or file bug reports
|
||||
or feature requests for this module at the GitHub project page:
|
||||
|
||||
https://github.com/benhoyt/scandir
|
||||
|
||||
|
8
vendor/scandir-1.10.0.dist-info/RECORD
vendored
Normal file
8
vendor/scandir-1.10.0.dist-info/RECORD
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
scandir-1.10.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
scandir-1.10.0.dist-info/LICENSE.txt,sha256=peL73COXREGdKUB828knk8TZwdlWwXT3y3-W-m0FjIY,1464
|
||||
scandir-1.10.0.dist-info/METADATA,sha256=UUFB4SuFl0DlrwKQIYe_JNraKU0yPd33d2b7XSBdaiM,9558
|
||||
scandir-1.10.0.dist-info/RECORD,,
|
||||
scandir-1.10.0.dist-info/WHEEL,sha256=cOb9BSSJE-pGL62EpjoA_22lJ5wGdH3IHNzDlb0xqWE,104
|
||||
scandir-1.10.0.dist-info/top_level.txt,sha256=Ixze5mNjmis99ql7JEtAYc9-djJMbfRx-FFw3R_zZf8,17
|
||||
scandir.py,sha256=97C2AQInuKk-Phb3aXM7fJomhc-00pZMcBur23NUmrE,24827
|
||||
scandir.pyc,,
|
5
vendor/scandir-1.10.0.dist-info/WHEEL
vendored
Normal file
5
vendor/scandir-1.10.0.dist-info/WHEEL
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.37.1)
|
||||
Root-Is-Purelib: false
|
||||
Tag: cp27-cp27m-linux_x86_64
|
||||
|
2
vendor/scandir-1.10.0.dist-info/top_level.txt
vendored
Normal file
2
vendor/scandir-1.10.0.dist-info/top_level.txt
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
_scandir
|
||||
scandir
|
Reference in New Issue
Block a user