Changelogs » Path-py

PyUp Safety actively tracks 268,179 Python packages for vulnerabilities and notifies you when to upgrade.



  - 136: Fixed test failures on BSD.
  - Refreshed package metadata.


  - Drop support for Python 3.3.


  - Renamed ``namebase`` to ``stem`` to match API of pathlib.
  Kept ``namebase`` as a deprecated alias for compatibility.
  - Added new ``with_suffix`` method, useful for renaming the
  extension on a Path::
  orig = Path('mydir/mypath.bat')
  renamed = orig.rename(orig.with_suffix('.cmd'))


  - Packaging refresh and readme updates.


  - 130: Removed surrogate_escape handler as it's no longer


  - 124: Fixed ``rmdir_p`` raising ``FileNotFoundError`` when
  directory does not exist on Windows.


  - 115: Added a new performance-optimized implementation
  for listdir operations, optimizing ``listdir``, ``walk``,
  ``walkfiles``, ``walkdirs``, and ``fnmatch``, presented
  as the ``FastPath`` class.
  Please direct feedback on this implementation to the ticket,
  especially if the performance benefits justify it replacing
  the default ``Path`` class.


  - Symlink no longer requires the ``newlink`` parameter
  and will default to the basename of the target in the
  current working directory.


  - 123: Implement ``Path.__fspath__`` per PEP 519.


  - Once again as in 8.0 remove deprecated ``path.path``.


  - 121: Removed workaround for 61 added in 5.2. ````
  now only supports file system paths that can be effectively
  decoded to text. It is the responsibility of the system
  implementer to ensure that filenames on the system are
  decodeable by ``sys.getfilesystemencoding()``.


  - Drop support for Python 2.6 and 3.2 as integration
  dependencies (pip) no longer support these versions.


  - Merge with latest skeleton, adding badges and test runs by
  default under tox instead of pytest-runner.
  - Documentation is no longer hosted with PyPI.


  - 112: Update Travis CI usage to only deploy on Python 3.5.


  - Refreshed project metadata based on `jaraco's project
  skeleton <>_.
  - Releases are now automatically published via Travis-CI.
  - 111: More aggressively trap errors when importing


  - 105: By using unicode literals, avoid errors rendering the
  backslash in __get_owner_windows.


  - 102: Reluctantly restored reference to path.path in ``__all__``.


  - 102: Restored ``path.path`` with a DeprecationWarning.


  Removed ``path.path``. Clients must now refer to the canonical
  name, ``path.Path`` as introduced in 6.2.


  - 88: Added support for resolving certain directories on a
  system to platform-friendly locations using the `appdirs
  <>`_ library. The
  ``Path.special`` method returns an ``SpecialResolver`` instance
  that will resolve a path in a scope
  (i.e. 'site' or 'user') and class (i.e. 'config', 'cache',
  'data'). For
  example, to create a config directory for "My App"::
  config_dir = Path.special("My App").user.config.makedirs_p()
  ``config_dir`` will exist in a user context and will be in a
  suitable platform-friendly location.
  As ```` does not currently have any dependencies, and
  to retain that expectation for a compatible upgrade path,
  ``appdirs`` must be installed to avoid an ImportError when
  invoking ``special``.
  - 88: In order to support "multipath" results, where multiple
  paths are returned in a single, ``os.pathsep``-separated
  string, a new class MultiPath now represents those special
  results. This functionality is experimental and may change.
  Feedback is invited.


  - Re-release of 7.6.1 without unintended feature.


  - 101: Supress error when `` is not present as a distribution.


  - Pull Request 100: Add ``merge_tree`` method for merging
  two existing directory trees.
  - Uses `setuptools_scm <>`_
  for version management.


  - 97: ``__rdiv__`` and ``__rtruediv__`` are now defined.


  - 93: chown now appears in docs and raises NotImplementedError if
  ``os.chown`` isn't present.
  - 92: Added compatibility support for ``.samefile`` on platforms without


  - 91: Releases now include a universal wheel.


  - In chmod, added support for multiple symbolic masks (separated by commas).
  - In chmod, fixed issue in setting of symbolic mask with '=' where
  unreferenced permissions were cleared.


  - 23: Added support for symbolic masks to ``.chmod``.


  - The ``open`` method now uses ```` and supports all of the
  parameters to that function. ``open`` will always raise an ``OSError``
  on failure, even on Python 2.
  - Updated ``write_text`` to support additional newline patterns.
  - The ``text`` method now always returns text (never bytes), and thus
  requires an encoding parameter be supplied if the default encoding is not
  sufficient to decode the content of the file.


  - ``path`` class renamed to ``Path``. The ``path`` name remains as an alias
  for compatibility.


  - ``chown`` now accepts names in addition to numeric IDs.


  - Drop support for Python 2.5. Python 2.6 or later required.
  - Installation now requires setuptools.


  - Allow arbitrary callables to be passed to path.walk ``errors`` parameter.
  Enables workaround for issues such as 73 and 56.


  - 61: path.listdir now decodes filenames from os.listdir when loading
  characters from a file. On Python 3, the behavior is unchanged. On Python
  2, the behavior will now mimick that of Python 3, attempting to decode
  all filenames and paths using the encoding indicated by
  ``sys.getfilesystemencoding()``, and escaping any undecodable characters
  using the 'surrogateescape' handler.


  - 53: Added ``path.in_place`` for editing files in place.


  - ``path.fnmatch`` now takes an optional parameter ``normcase`` and this
  parameter defaults to self.module.normcase (using case normalization most
  pertinent to the path object itself). Note that this change means that
  any paths using a custom ntpath module on non-Windows systems will have
  different fnmatch behavior. Before::
  on Unix
  >>> p = path('Foo')
  >>> p.module = ntpath
  >>> p.fnmatch('foo')
  on any OS
  >>> p = path('Foo')
  >>> p.module = ntpath
  >>> p.fnmatch('foo')
  To maintain the original behavior, either don't define the 'module' for the
  path or supply explicit normcase function::
  >>> p.fnmatch('foo', normcase=os.path.normcase)
  result always varies based on OS, same as fnmatch.fnmatch
  For most use-cases, the default behavior should remain the same.
  - Issue 50: Methods that accept patterns (``listdir``, ``files``, ``dirs``,
  ``walk``, ``walkdirs``, ``walkfiles``, and ``fnmatch``) will now use a
  ``normcase`` attribute if it is present on the ``pattern`` parameter. The
  path module now provides a ``CaseInsensitivePattern`` wrapper for strings
  suitable for creating case-insensitive patterns for those methods.


  - Issue 44: _hash method would open files in text mode, producing
  invalid results on Windows. Now files are opened in binary mode, producing
  consistent results.
  - Issue 47: Documentation is dramatically improved with Intersphinx links
  to the Python os.path functions and documentation for all methods and


  - Issue 32: Add ``chdir`` and ``cd`` methods.


  - ``open()`` now passes all positional and keyword arguments through to the
  underlying ```` call.


  - Native Python 2 and Python 3 support without using 2to3 during the build


  - Added a ``chunks()`` method to a allow quick iteration over pieces of a
  file at a given path.
  - Issue 28: Fix missing argument to ``samefile``.
  - Initializer no longer enforces `isinstance basestring` for the source
  object. Now any object that supplies ``__unicode__`` can be used by a
  ``path`` (except None). Clients that depend on a ValueError being raised
  for ``int`` and other non-string objects should trap these types
  - Issue 30: ``chown`` no longer requires both uid and gid to be provided
  and will not mutate the ownership if nothing is provided.


  - Issue 22: ``__enter__`` now returns self.


  - Issue 20: `relpath` now supports a "start" parameter to match the
  signature of `os.path.relpath`.


  - Minimum Python version is now 2.5.


  - Issue 5: Implemented `path.tempdir`, which returns a path object which is
  a temporary directory and context manager for cleaning up the directory.
  - Issue 12: One can now construct path objects from a list of strings by
  simply using path.joinpath. For example::
  path.joinpath('a', 'b', 'c')  or


  - Issue 7: Add the ability to do chaining of operations that formerly only
  returned None.
  - Issue 4: Raise a TypeError when constructed from None.