Hello community,

here is the log from the commit of package python-py for openSUSE:Factory 
checked in at 2017-02-27 18:32:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-py (Old)
 and      /work/SRC/openSUSE:Factory/.python-py.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-py"

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-py/python-py-doc.changes  2016-09-11 
00:51:49.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-py.new/python-py-doc.changes     
2017-02-27 18:32:03.131640939 +0100
@@ -1,0 +2,7 @@
+Thu Feb 23 14:58:09 UTC 2017 - jmate...@suse.com
+
+- update to 1.4.32
+- use only python3-Sphinx to build docs
+- provide $flavor-doc for all pythons
+
+-------------------------------------------------------------------
--- /work/SRC/openSUSE:Factory/python-py/python-py.changes      2016-09-11 
00:51:49.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-py.new/python-py.changes 2017-02-27 
18:32:03.247624598 +0100
@@ -1,0 +2,18 @@
+Thu Feb 23 14:56:48 UTC 2017 - jmate...@suse.com
+
+- update to 1.4.32
+    - fix issue70: added ability to copy all stat info in py.path.local.copy.
+    - make TerminalWriter.fullwidth a property.  This results in the correct
+      value when the terminal gets resized.
+    - update supported html tags to include recent additions.
+      Thanks Denis Afonso for the PR.
+    - Remove internal code in ``Source.compile`` meant to support earlier 
Python 3 versions that produced the side effect
+      of leaving ``None`` in ``sys.modules`` when called (see 
pytest-dev/pytest#2103).
+      Thanks Bruno Oliveira for the PR.
+
+-------------------------------------------------------------------
+Wed Oct  5 14:47:53 UTC 2016 - jmate...@suse.com
+
+- update for singlespec
+
+-------------------------------------------------------------------

Old:
----
  py-1.4.31.tar.gz

New:
----
  py-1.4.32.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-py-doc.spec ++++++
--- /var/tmp/diff_new_pack.w0u1pq/_old  2017-02-27 18:32:03.739555287 +0100
+++ /var/tmp/diff_new_pack.w0u1pq/_new  2017-02-27 18:32:03.739555287 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-py-doc
 #
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,8 +16,9 @@
 #
 
 
+%{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-py-doc
-Version:        1.4.31
+Version:        1.4.32
 Release:        0
 Summary:        Library with cross-python path, ini-parsing, io, code, log 
facilities
 License:        MIT
@@ -25,13 +26,10 @@
 Url:            http://pylib.org
 Source:         https://pypi.io/packages/source/p/py/py-%{version}.tar.gz
 # Documentation requirements:
-BuildRequires:  python-Sphinx
+BuildRequires:  python3-Sphinx
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-%if 0%{?suse_version} && 0%{?suse_version} <= 1110
-%{!?python_sitelib: %global python_sitelib %(python -c "from 
distutils.sysconfig import get_python_lib; print get_python_lib()")}
-%else
 BuildArch:      noarch
-%endif
+Provides:       %{python_module py-doc = %{version}}
 
 %description
 The py lib is a Python development support library featuring

++++++ python-py.spec ++++++
--- /var/tmp/diff_new_pack.w0u1pq/_old  2017-02-27 18:32:03.767551343 +0100
+++ /var/tmp/diff_new_pack.w0u1pq/_new  2017-02-27 18:32:03.771550779 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-py
 #
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,22 +16,22 @@
 #
 
 
+%{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-py
-Version:        1.4.31
+Version:        1.4.32
 Release:        0
 Summary:        Library with cross-python path, ini-parsing, io, code, log 
facilities
 License:        MIT
 Group:          Development/Languages/Python
 Url:            https://pylib.readthedocs.io
 Source:         https://pypi.io/packages/source/p/py/py-%{version}.tar.gz
-BuildRequires:  python-devel
-BuildRequires:  python-setuptools
+BuildRequires:  %{python_module devel}
+BuildRequires:  %{python_module setuptools}
+BuildRequires:  python-rpm-macros
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-%if 0%{?suse_version} && 0%{?suse_version} <= 1110
-%{!?python_sitelib: %global python_sitelib %(python -c "from 
distutils.sysconfig import get_python_lib; print get_python_lib()")}
-%else
 BuildArch:      noarch
-%endif
+
+%python_subpackages
 
 %description
 The py lib is a Python development support library featuring
@@ -43,18 +43,19 @@
 * py.code: dynamic code generation and introspection
 * py.path:  uniform local and svn path objects
 
+
 %prep
 %setup -q -n py-%{version}
 
 %build
-python setup.py build
+%python_build
 
 %install
-python setup.py install --prefix=%{_prefix} --root=%{buildroot}
+%python_install
 
-%files
+%files %{python_files}
 %defattr(-,root,root,-)
-%doc LICENSE README.txt
+%doc LICENSE README.rst
 %{python_sitelib}/*
 
 %changelog

++++++ py-1.4.31.tar.gz -> py-1.4.32.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/CHANGELOG new/py-1.4.32/CHANGELOG
--- old/py-1.4.31/CHANGELOG     2015-11-27 21:48:11.000000000 +0100
+++ new/py-1.4.32/CHANGELOG     2016-12-16 16:33:43.000000000 +0100
@@ -1,3 +1,19 @@
+
+1.4.32
+====================================================================
+
+- fix issue70: added ability to copy all stat info in py.path.local.copy.
+
+- make TerminalWriter.fullwidth a property.  This results in the correct
+  value when the terminal gets resized.
+
+- update supported html tags to include recent additions.
+  Thanks Denis Afonso for the PR.
+
+- Remove internal code in ``Source.compile`` meant to support earlier Python 3 
versions that produced the side effect
+  of leaving ``None`` in ``sys.modules`` when called (see 
pytest-dev/pytest#2103).
+  Thanks Bruno Oliveira for the PR.
+
 1.4.31
 ==================================================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/PKG-INFO new/py-1.4.32/PKG-INFO
--- old/py-1.4.31/PKG-INFO      2015-11-27 21:48:12.000000000 +0100
+++ new/py-1.4.32/PKG-INFO      2016-12-16 17:05:32.000000000 +0100
@@ -1,32 +1,32 @@
 Metadata-Version: 1.1
 Name: py
-Version: 1.4.31
+Version: 1.4.32
 Summary: library with cross-python path, ini-parsing, io, code, log facilities
 Home-page: http://pylib.readthedocs.org/
 Author: holger krekel, Ronny Pfannschmidt, Benjamin Peterson and others
 Author-email: pytest-...@python.org
 License: MIT license
-Description: .. image:: https://drone.io/bitbucket.org/pytest-dev/py/status.png
-           :target: https://drone.io/bitbucket.org/pytest-dev/py/latest
-        .. image:: https://pypip.in/v/py/badge.png
-           :target: https://pypi.python.org/pypi/py
-        
-        The py lib is a Python development support library featuring
-        the following tools and modules:
-        
-        * py.path:  uniform local and svn path objects
-        * py.apipkg:  explicit API control and lazy-importing
-        * py.iniconfig:  easy parsing of .ini files
-        * py.code: dynamic code generation and introspection
-        
-        NOTE: prior to the 1.4 release this distribution used to
-        contain py.test which is now its own package, see http://pytest.org
-        
-        For questions and more information please visit 
http://pylib.readthedocs.org
-        
-        Bugs and issues: http://bitbucket.org/pytest-dev/py/issues/
-        
-        Authors: Holger Krekel and others, 2004-2015
+Description: .. image:: https://img.shields.io/pypi/pyversions/pytest.svg
+          :target: https://pypi.org/project/py
+        .. image:: https://img.shields.io/travis/pytest-dev/py.svg
+           :target: https://travis-ci.org/pytest-dev/py
+        
+        The py lib is a Python development support library featuring
+        the following tools and modules:
+        
+        * ``py.path``:  uniform local and svn path objects
+        * ``py.apipkg``:  explicit API control and lazy-importing
+        * ``py.iniconfig``:  easy parsing of .ini files
+        * ``py.code``: dynamic code generation and introspection
+        
+        NOTE: prior to the 1.4 release this distribution used to
+        contain py.test which is now its own package, see http://pytest.org
+        
+        For questions and more information please visit 
http://pylib.readthedocs.org
+        
+        Bugs and issues: https://github.com/pytest-dev/py
+        
+        Authors: Holger Krekel and others, 2004-2016
         
 Platform: unix
 Platform: linux
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/README.rst new/py-1.4.32/README.rst
--- old/py-1.4.31/README.rst    1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.4.32/README.rst    2016-12-16 16:32:49.000000000 +0100
@@ -0,0 +1,21 @@
+.. image:: https://img.shields.io/pypi/pyversions/pytest.svg
+  :target: https://pypi.org/project/py
+.. image:: https://img.shields.io/travis/pytest-dev/py.svg
+   :target: https://travis-ci.org/pytest-dev/py
+
+The py lib is a Python development support library featuring
+the following tools and modules:
+
+* ``py.path``:  uniform local and svn path objects
+* ``py.apipkg``:  explicit API control and lazy-importing
+* ``py.iniconfig``:  easy parsing of .ini files
+* ``py.code``: dynamic code generation and introspection
+
+NOTE: prior to the 1.4 release this distribution used to
+contain py.test which is now its own package, see http://pytest.org
+
+For questions and more information please visit http://pylib.readthedocs.org
+
+Bugs and issues: https://github.com/pytest-dev/py
+
+Authors: Holger Krekel and others, 2004-2016
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/README.txt new/py-1.4.32/README.txt
--- old/py-1.4.31/README.txt    2015-11-27 21:48:11.000000000 +0100
+++ new/py-1.4.32/README.txt    1970-01-01 01:00:00.000000000 +0100
@@ -1,21 +0,0 @@
-.. image:: https://drone.io/bitbucket.org/pytest-dev/py/status.png
-   :target: https://drone.io/bitbucket.org/pytest-dev/py/latest
-.. image:: https://pypip.in/v/py/badge.png
-   :target: https://pypi.python.org/pypi/py
-
-The py lib is a Python development support library featuring
-the following tools and modules:
-
-* py.path:  uniform local and svn path objects
-* py.apipkg:  explicit API control and lazy-importing
-* py.iniconfig:  easy parsing of .ini files
-* py.code: dynamic code generation and introspection
-
-NOTE: prior to the 1.4 release this distribution used to
-contain py.test which is now its own package, see http://pytest.org
-
-For questions and more information please visit http://pylib.readthedocs.org
-
-Bugs and issues: http://bitbucket.org/pytest-dev/py/issues/
-
-Authors: Holger Krekel and others, 2004-2015
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/py/__init__.py new/py-1.4.32/py/__init__.py
--- old/py-1.4.31/py/__init__.py        2015-11-27 21:48:11.000000000 +0100
+++ new/py-1.4.32/py/__init__.py        2016-12-16 16:37:11.000000000 +0100
@@ -8,7 +8,7 @@
 
 (c) Holger Krekel and others, 2004-2014
 """
-__version__ = '1.4.31'
+__version__ = '1.4.32'
 
 from py import _apipkg
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/py/_code/source.py 
new/py-1.4.32/py/_code/source.py
--- old/py-1.4.31/py/_code/source.py    2015-11-27 21:48:11.000000000 +0100
+++ new/py-1.4.32/py/_code/source.py    2016-12-16 16:32:49.000000000 +0100
@@ -193,14 +193,6 @@
             if flag & _AST_FLAG:
                 return co
             lines = [(x + "\n") for x in self.lines]
-            if sys.version_info[0] >= 3:
-                # XXX py3's inspect.getsourcefile() checks for a module
-                # and a pep302 __loader__ ... we don't have a module
-                # at code compile-time so we need to fake it here
-                m = ModuleType("_pycodecompile_pseudo_module")
-                py.std.inspect.modulesbyfile[filename] = None
-                py.std.sys.modules[None] = m
-                m.__loader__ = 1
             py.std.linecache.cache[filename] = (1, None, lines, filename)
             return co
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/py/_error.py new/py-1.4.32/py/_error.py
--- old/py-1.4.31/py/_error.py  2015-11-27 21:48:11.000000000 +0100
+++ new/py-1.4.32/py/_error.py  2016-09-17 09:18:18.000000000 +0200
@@ -23,6 +23,7 @@
     2: errno.ENOENT,
     3: errno.ENOENT,
     17: errno.EEXIST,
+    18: errno.EXDEV,
     13: errno.EBUSY, # empty cd drive, but ENOMEDIUM seems unavailiable
     22: errno.ENOTDIR,
     20: errno.ENOTDIR,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/py/_io/terminalwriter.py 
new/py-1.4.32/py/_io/terminalwriter.py
--- old/py-1.4.31/py/_io/terminalwriter.py      2015-11-27 21:48:11.000000000 
+0100
+++ new/py-1.4.32/py/_io/terminalwriter.py      2016-12-16 16:32:49.000000000 
+0100
@@ -137,10 +137,19 @@
             file = colorama.AnsiToWin32(file).stream
         self.encoding = encoding or getattr(file, 'encoding', "utf-8")
         self._file = file
-        self.fullwidth = get_terminal_width()
         self.hasmarkup = should_do_markup(file)
         self._lastlen = 0
 
+    @property
+    def fullwidth(self):
+        if hasattr(self, '_terminal_width'):
+            return self._terminal_width
+        return get_terminal_width()
+
+    @fullwidth.setter
+    def fullwidth(self, value):
+        self._terminal_width = value
+
     def _escaped(self, text, esc):
         if esc and self.hasmarkup:
             text = (''.join(['\x1b[%sm' % cod for cod in esc])  +
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/py/_path/common.py 
new/py-1.4.32/py/_path/common.py
--- old/py-1.4.31/py/_path/common.py    2015-11-27 21:48:11.000000000 +0100
+++ new/py-1.4.32/py/_path/common.py    2016-12-16 16:32:49.000000000 +0100
@@ -6,6 +6,40 @@
 # Moved from local.py.
 iswin32 = sys.platform == "win32" or (getattr(os, '_name', False) == 'nt')
 
+try:
+    from os import fspath
+except ImportError:
+    def fspath(path):
+        """
+        Return the string representation of the path.
+        If str or bytes is passed in, it is returned unchanged.
+        This code comes from PEP 519, modified to support earlier versions of
+        python.
+
+        This is required for python < 3.6.
+        """
+        if isinstance(path, (py.builtin.text, py.builtin.bytes)):
+            return path
+
+        # Work from the object's type to match method resolution of other magic
+        # methods.
+        path_type = type(path)
+        try:
+            return path_type.__fspath__(path)
+        except AttributeError:
+            if hasattr(path_type, '__fspath__'):
+                raise
+            try:
+                import pathlib
+            except ImportError:
+                pass
+            else:
+                if isinstance(path, pathlib.PurePath):
+                    return py.builtin.text(path)
+
+            raise TypeError("expected str, bytes or os.PathLike object, not "
+                            + path_type.__name__)
+
 class Checkers:
     _depend_on_existence = 'exists', 'link', 'dir', 'file'
 
@@ -89,7 +123,7 @@
     Checkers = Checkers
 
     def __div__(self, other):
-        return self.join(str(other))
+        return self.join(fspath(other))
     __truediv__ = __div__ # py3k
 
     def basename(self):
@@ -343,11 +377,14 @@
         """ return True if other refers to the same stat object as self. """
         return self.strpath == str(other)
 
+    def __fspath__(self):
+        return str(self)
+
 class Visitor:
     def __init__(self, fil, rec, ignore, bf, sort):
-        if isinstance(fil, str):
+        if isinstance(fil, py.builtin._basestring):
             fil = FNMatcher(fil)
-        if isinstance(rec, str):
+        if isinstance(rec, py.builtin._basestring):
             self.rec = FNMatcher(rec)
         elif not hasattr(rec, '__call__') and rec:
             self.rec = lambda path: True
@@ -400,4 +437,3 @@
             if not os.path.isabs(pattern):
                 pattern = '*' + path.sep + pattern
         return py.std.fnmatch.fnmatch(name, pattern)
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/py/_path/local.py 
new/py-1.4.32/py/_path/local.py
--- old/py-1.4.31/py/_path/local.py     2015-11-27 21:48:11.000000000 +0100
+++ new/py-1.4.32/py/_path/local.py     2016-09-17 09:18:18.000000000 +0200
@@ -7,7 +7,7 @@
 import sys, os, re, atexit, io
 import py
 from py._path import common
-from py._path.common import iswin32
+from py._path.common import iswin32, fspath
 from stat import S_ISLNK, S_ISDIR, S_ISREG
 
 from os.path import abspath, normpath, isabs, exists, isdir, isfile, islink, 
dirname
@@ -147,22 +147,25 @@
         """
         if path is None:
             self.strpath = py.error.checked_call(os.getcwd)
-        elif isinstance(path, common.PathBase):
-            self.strpath = path.strpath
-        elif isinstance(path, py.builtin._basestring):
+        else:
+            try:
+                path = fspath(path)
+            except TypeError:
+                raise ValueError("can only pass None, Path instances "
+                                 "or non-empty strings to LocalPath")
             if expanduser:
                 path = os.path.expanduser(path)
             self.strpath = abspath(path)
-        else:
-            raise ValueError("can only pass None, Path instances "
-                             "or non-empty strings to LocalPath")
 
     def __hash__(self):
         return hash(self.strpath)
 
     def __eq__(self, other):
-        s1 = self.strpath
-        s2 = getattr(other, "strpath", other)
+        s1 = fspath(self)
+        try:
+            s2 = fspath(other)
+        except TypeError:
+            return False
         if iswin32:
             s1 = s1.lower()
             try:
@@ -175,15 +178,15 @@
         return not (self == other)
 
     def __lt__(self, other):
-        return self.strpath < getattr(other, "strpath", other)
+        return fspath(self) < fspath(other)
 
     def __gt__(self, other):
-        return self.strpath > getattr(other, "strpath", other)
+        return fspath(self) > fspath(other)
 
     def samefile(self, other):
         """ return True if 'other' references the same file as 'self'.
         """
-        other = getattr(other, "strpath", other)
+        other = fspath(other)
         if not isabs(other):
             other = abspath(other)
         if self == other:
@@ -320,7 +323,7 @@
         of the args is an absolute path.
         """
         sep = self.sep
-        strargs = [getattr(arg, "strpath", arg) for arg in args]
+        strargs = [fspath(arg) for arg in args]
         strpath = self.strpath
         if kwargs.get('abs'):
             newargs = []
@@ -402,8 +405,13 @@
         """ return last modification time of the path. """
         return self.stat().mtime
 
-    def copy(self, target, mode=False):
-        """ copy path to target."""
+    def copy(self, target, mode=False, stat=False):
+        """ copy path to target.
+
+            If mode is True, will copy copy permission from path to target.
+            If stat is True, copy permission, last modification
+            time, last access time, and flags from path to target.
+        """
         if self.check(file=1):
             if target.check(dir=1):
                 target = target.join(self.basename)
@@ -411,6 +419,8 @@
             copychunked(self, target)
             if mode:
                 copymode(self.strpath, target.strpath)
+            if stat:
+                copystat(self, target)
         else:
             def rec(p):
                 return p.check(link=0)
@@ -427,10 +437,12 @@
                     newx.ensure(dir=1)
                 if mode:
                     copymode(x.strpath, newx.strpath)
+                if stat:
+                    copystat(x, newx)
 
     def rename(self, target):
         """ rename this path to target. """
-        target = getattr(target, "strpath", target)
+        target = fspath(target)
         return py.error.checked_call(os.rename, self.strpath, target)
 
     def dump(self, obj, bin=1):
@@ -444,7 +456,7 @@
     def mkdir(self, *args):
         """ create & return the directory joined with args. """
         p = self.join(*args)
-        py.error.checked_call(os.mkdir, getattr(p, "strpath", p))
+        py.error.checked_call(os.mkdir, fspath(p))
         return p
 
     def write_binary(self, data, ensure=False):
@@ -887,8 +899,13 @@
     make_numbered_dir = classmethod(make_numbered_dir)
 
 def copymode(src, dest):
+    """ copy permission from src to dst. """
     py.std.shutil.copymode(src, dest)
 
+def copystat(src, dest):
+    """ copy permission,  last modification time, last access time, and flags 
from src to dst."""
+    py.std.shutil.copystat(str(src), str(dest))
+
 def copychunked(src, dest):
     chunksize = 524288 # half a meg of bytes
     fsrc = src.open('rb')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/py/_xmlgen.py new/py-1.4.32/py/_xmlgen.py
--- old/py-1.4.31/py/_xmlgen.py 2015-11-27 21:48:11.000000000 +0100
+++ new/py-1.4.32/py/_xmlgen.py 2016-12-16 16:32:49.000000000 +0100
@@ -74,16 +74,18 @@
     __tagclass__ = HtmlTag
     __stickyname__ = True
     __tagspec__ = dict([(x,1) for x in (
-        'a,abbr,acronym,address,applet,area,b,bdo,big,blink,'
-        'blockquote,body,br,button,caption,center,cite,code,col,'
-        'colgroup,comment,dd,del,dfn,dir,div,dl,dt,em,embed,'
-        'fieldset,font,form,frameset,h1,h2,h3,h4,h5,h6,head,html,'
-        'i,iframe,img,input,ins,kbd,label,legend,li,link,listing,'
-        'map,marquee,menu,meta,multicol,nobr,noembed,noframes,'
-        'noscript,object,ol,optgroup,option,p,pre,q,s,script,'
-        'select,small,span,strike,strong,style,sub,sup,table,'
-        'tbody,td,textarea,tfoot,th,thead,title,tr,tt,u,ul,xmp,'
-        'base,basefont,frame,hr,isindex,param,samp,var'
+        'a,abbr,acronym,address,applet,area,article,aside,audio,b,'
+        'base,basefont,bdi,bdo,big,blink,blockquote,body,br,button,'
+        'canvas,caption,center,cite,code,col,colgroup,command,comment,'
+        'datalist,dd,del,details,dfn,dir,div,dl,dt,em,embed,'
+        'fieldset,figcaption,figure,footer,font,form,frame,frameset,h1,'
+        'h2,h3,h4,h5,h6,head,header,hgroup,hr,html,i,iframe,img,input,'
+        'ins,isindex,kbd,keygen,label,legend,li,link,listing,map,mark,'
+        'marquee,menu,meta,meter,multicol,nav,nobr,noembed,noframes,'
+        'noscript,object,ol,optgroup,option,output,p,param,pre,progress,'
+        'q,rp,rt,ruby,s,samp,script,section,select,small,source,span,'
+        'strike,strong,style,sub,summary,sup,table,tbody,td,textarea,'
+        'tfoot,th,thead,time,title,tr,track,tt,u,ul,xmp,var,video,wbr'
     ).split(',') if x])
 
     class Style(object):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/py.egg-info/PKG-INFO 
new/py-1.4.32/py.egg-info/PKG-INFO
--- old/py-1.4.31/py.egg-info/PKG-INFO  2015-11-27 21:48:12.000000000 +0100
+++ new/py-1.4.32/py.egg-info/PKG-INFO  2016-12-16 17:05:32.000000000 +0100
@@ -1,32 +1,32 @@
 Metadata-Version: 1.1
 Name: py
-Version: 1.4.31
+Version: 1.4.32
 Summary: library with cross-python path, ini-parsing, io, code, log facilities
 Home-page: http://pylib.readthedocs.org/
 Author: holger krekel, Ronny Pfannschmidt, Benjamin Peterson and others
 Author-email: pytest-...@python.org
 License: MIT license
-Description: .. image:: https://drone.io/bitbucket.org/pytest-dev/py/status.png
-           :target: https://drone.io/bitbucket.org/pytest-dev/py/latest
-        .. image:: https://pypip.in/v/py/badge.png
-           :target: https://pypi.python.org/pypi/py
-        
-        The py lib is a Python development support library featuring
-        the following tools and modules:
-        
-        * py.path:  uniform local and svn path objects
-        * py.apipkg:  explicit API control and lazy-importing
-        * py.iniconfig:  easy parsing of .ini files
-        * py.code: dynamic code generation and introspection
-        
-        NOTE: prior to the 1.4 release this distribution used to
-        contain py.test which is now its own package, see http://pytest.org
-        
-        For questions and more information please visit 
http://pylib.readthedocs.org
-        
-        Bugs and issues: http://bitbucket.org/pytest-dev/py/issues/
-        
-        Authors: Holger Krekel and others, 2004-2015
+Description: .. image:: https://img.shields.io/pypi/pyversions/pytest.svg
+          :target: https://pypi.org/project/py
+        .. image:: https://img.shields.io/travis/pytest-dev/py.svg
+           :target: https://travis-ci.org/pytest-dev/py
+        
+        The py lib is a Python development support library featuring
+        the following tools and modules:
+        
+        * ``py.path``:  uniform local and svn path objects
+        * ``py.apipkg``:  explicit API control and lazy-importing
+        * ``py.iniconfig``:  easy parsing of .ini files
+        * ``py.code``: dynamic code generation and introspection
+        
+        NOTE: prior to the 1.4 release this distribution used to
+        contain py.test which is now its own package, see http://pytest.org
+        
+        For questions and more information please visit 
http://pylib.readthedocs.org
+        
+        Bugs and issues: https://github.com/pytest-dev/py
+        
+        Authors: Holger Krekel and others, 2004-2016
         
 Platform: unix
 Platform: linux
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/py.egg-info/SOURCES.txt 
new/py-1.4.32/py.egg-info/SOURCES.txt
--- old/py-1.4.31/py.egg-info/SOURCES.txt       2015-11-27 21:48:12.000000000 
+0100
+++ new/py-1.4.32/py.egg-info/SOURCES.txt       2016-12-16 17:05:32.000000000 
+0100
@@ -2,7 +2,7 @@
 CHANGELOG
 LICENSE
 MANIFEST.in
-README.txt
+README.rst
 conftest.py
 setup.cfg
 setup.py
@@ -83,34 +83,106 @@
 py/_process/forkedfunc.py
 py/_process/killproc.py
 testing/conftest.py
+testing/conftest.pyc
 testing/test_iniconfig.py
+testing/__pycache__/conftest.cpython-27-PYTEST.pyc
+testing/__pycache__/conftest.cpython-35-PYTEST.pyc
+testing/__pycache__/conftest.cpython-35.pyc
+testing/__pycache__/test_iniconfig.cpython-27-PYTEST.pyc
+testing/__pycache__/test_iniconfig.cpython-35-PYTEST.pyc
 testing/code/test_assertion.py
 testing/code/test_code.py
 testing/code/test_excinfo.py
 testing/code/test_source.py
+testing/code/__pycache__/test_assertion.cpython-27-PYTEST.pyc
+testing/code/__pycache__/test_assertion.cpython-35-PYTEST.pyc
+testing/code/__pycache__/test_code.cpython-27-PYTEST.pyc
+testing/code/__pycache__/test_code.cpython-35-PYTEST.pyc
+testing/code/__pycache__/test_excinfo.cpython-27-PYTEST.pyc
+testing/code/__pycache__/test_excinfo.cpython-35-PYTEST.pyc
+testing/code/__pycache__/test_source.cpython-27-PYTEST.pyc
+testing/code/__pycache__/test_source.cpython-35-PYTEST.pyc
 testing/io_/__init__.py
+testing/io_/__init__.pyc
 testing/io_/test_capture.py
 testing/io_/test_saferepr.py
 testing/io_/test_terminalwriter.py
+testing/io_/__pycache__/__init__.cpython-35.pyc
+testing/io_/__pycache__/test_capture.cpython-27-PYTEST.pyc
+testing/io_/__pycache__/test_capture.cpython-35-PYTEST.pyc
+testing/io_/__pycache__/test_saferepr.cpython-27-PYTEST.pyc
+testing/io_/__pycache__/test_saferepr.cpython-35-PYTEST.pyc
+testing/io_/__pycache__/test_terminalwriter.cpython-27-PYTEST.pyc
+testing/io_/__pycache__/test_terminalwriter.cpython-35-PYTEST.pyc
 testing/log/__init__.py
+testing/log/__init__.pyc
 testing/log/test_log.py
 testing/log/test_warning.py
+testing/log/__pycache__/__init__.cpython-35.pyc
+testing/log/__pycache__/test_log.cpython-27-PYTEST.pyc
+testing/log/__pycache__/test_log.cpython-35-PYTEST.pyc
+testing/log/__pycache__/test_warning.cpython-27-PYTEST.pyc
+testing/log/__pycache__/test_warning.cpython-35-PYTEST.pyc
+testing/path/__init__.pyc
 testing/path/common.py
+testing/path/common.pyc
 testing/path/conftest.py
+testing/path/conftest.pyc
 testing/path/repotest.dump
 testing/path/svntestbase.py
+testing/path/svntestbase.pyc
 testing/path/test_cacheutil.py
 testing/path/test_local.py
 testing/path/test_svnauth.py
 testing/path/test_svnurl.py
 testing/path/test_svnwc.py
+testing/path/__pycache__/__init__.cpython-35.pyc
+testing/path/__pycache__/common.cpython-27-PYTEST.pyc
+testing/path/__pycache__/common.cpython-35-PYTEST.pyc
+testing/path/__pycache__/common.cpython-35.pyc
+testing/path/__pycache__/conftest.cpython-27-PYTEST.pyc
+testing/path/__pycache__/conftest.cpython-35-PYTEST.pyc
+testing/path/__pycache__/conftest.cpython-35.pyc
+testing/path/__pycache__/svntestbase.cpython-27-PYTEST.pyc
+testing/path/__pycache__/svntestbase.cpython-35-PYTEST.pyc
+testing/path/__pycache__/svntestbase.cpython-35.pyc
+testing/path/__pycache__/test_cacheutil.cpython-27-PYTEST.pyc
+testing/path/__pycache__/test_cacheutil.cpython-35-PYTEST.pyc
+testing/path/__pycache__/test_local.cpython-27-PYTEST.pyc
+testing/path/__pycache__/test_local.cpython-35-PYTEST.pyc
+testing/path/__pycache__/test_svnauth.cpython-27-PYTEST.pyc
+testing/path/__pycache__/test_svnauth.cpython-35-PYTEST.pyc
+testing/path/__pycache__/test_svnurl.cpython-27-PYTEST.pyc
+testing/path/__pycache__/test_svnurl.cpython-35-PYTEST.pyc
+testing/path/__pycache__/test_svnwc.cpython-27-PYTEST.pyc
+testing/path/__pycache__/test_svnwc.cpython-35-PYTEST.pyc
 testing/process/__init__.py
+testing/process/__init__.pyc
 testing/process/test_cmdexec.py
 testing/process/test_forkedfunc.py
 testing/process/test_killproc.py
+testing/process/__pycache__/__init__.cpython-35.pyc
+testing/process/__pycache__/test_cmdexec.cpython-27-PYTEST.pyc
+testing/process/__pycache__/test_cmdexec.cpython-35-PYTEST.pyc
+testing/process/__pycache__/test_forkedfunc.cpython-27-PYTEST.pyc
+testing/process/__pycache__/test_forkedfunc.cpython-35-PYTEST.pyc
+testing/process/__pycache__/test_killproc.cpython-27-PYTEST.pyc
+testing/process/__pycache__/test_killproc.cpython-35-PYTEST.pyc
 testing/root/__init__.py
+testing/root/__init__.pyc
 testing/root/test_builtin.py
 testing/root/test_error.py
 testing/root/test_py_imports.py
 testing/root/test_std.py
-testing/root/test_xmlgen.py
\ No newline at end of file
+testing/root/test_xmlgen.py
+testing/root/__pycache__/__init__.cpython-35.pyc
+testing/root/__pycache__/test_builtin.cpython-27-PYTEST.pyc
+testing/root/__pycache__/test_builtin.cpython-35-PYTEST.pyc
+testing/root/__pycache__/test_error.cpython-27-PYTEST.pyc
+testing/root/__pycache__/test_error.cpython-35-PYTEST.pyc
+testing/root/__pycache__/test_py_imports.cpython-27-PYTEST.pyc
+testing/root/__pycache__/test_py_imports.cpython-35-PYTEST.pyc
+testing/root/__pycache__/test_std.cpython-27-PYTEST.pyc
+testing/root/__pycache__/test_std.cpython-35-PYTEST.pyc
+testing/root/__pycache__/test_xmlgen.cpython-27-PYTEST.pyc
+testing/root/__pycache__/test_xmlgen.cpython-35-PYTEST.pyc
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/setup.py new/py-1.4.32/setup.py
--- old/py-1.4.31/setup.py      2015-11-27 21:48:11.000000000 +0100
+++ new/py-1.4.32/setup.py      2016-12-16 17:00:32.000000000 +0100
@@ -1,13 +1,25 @@
-import os, sys
+import os
+import sys
 
 from setuptools import setup
 
+
+def get_version():
+    p = os.path.join(os.path.dirname(
+                     os.path.abspath(__file__)), "py", "__init__.py")
+    with open(p) as f:
+        for line in f.readlines():
+            if "__version__" in line:
+                return line.strip().split("=")[-1].strip(" '")
+    raise ValueError("could not read version")
+
+
 def main():
     setup(
         name='py',
         description='library with cross-python path, ini-parsing, io, code, 
log facilities',
-        long_description = open('README.txt').read(),
-        version='1.4.31',
+        long_description=open('README.rst').read(),
+        version=get_version(),
         url='http://pylib.readthedocs.org/',
         license='MIT license',
         platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
Binary files old/py-1.4.31/testing/__pycache__/conftest.cpython-27-PYTEST.pyc 
and new/py-1.4.32/testing/__pycache__/conftest.cpython-27-PYTEST.pyc differ
Binary files old/py-1.4.31/testing/__pycache__/conftest.cpython-35-PYTEST.pyc 
and new/py-1.4.32/testing/__pycache__/conftest.cpython-35-PYTEST.pyc differ
Binary files old/py-1.4.31/testing/__pycache__/conftest.cpython-35.pyc and 
new/py-1.4.32/testing/__pycache__/conftest.cpython-35.pyc differ
Binary files 
old/py-1.4.31/testing/__pycache__/test_iniconfig.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/__pycache__/test_iniconfig.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/__pycache__/test_iniconfig.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/__pycache__/test_iniconfig.cpython-35-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/code/__pycache__/test_assertion.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/code/__pycache__/test_assertion.cpython-27-PYTEST.pyc 
differ
Binary files 
old/py-1.4.31/testing/code/__pycache__/test_assertion.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/code/__pycache__/test_assertion.cpython-35-PYTEST.pyc 
differ
Binary files 
old/py-1.4.31/testing/code/__pycache__/test_code.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/code/__pycache__/test_code.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/code/__pycache__/test_code.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/code/__pycache__/test_code.cpython-35-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/code/__pycache__/test_excinfo.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/code/__pycache__/test_excinfo.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/code/__pycache__/test_excinfo.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/code/__pycache__/test_excinfo.cpython-35-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/code/__pycache__/test_source.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/code/__pycache__/test_source.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/code/__pycache__/test_source.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/code/__pycache__/test_source.cpython-35-PYTEST.pyc differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/testing/code/test_excinfo.py 
new/py-1.4.32/testing/code/test_excinfo.py
--- old/py-1.4.31/testing/code/test_excinfo.py  2015-11-27 21:48:11.000000000 
+0100
+++ new/py-1.4.32/testing/code/test_excinfo.py  2016-09-22 09:34:20.000000000 
+0200
@@ -600,7 +600,10 @@
             def entry():
                 func1()
         """)
-        excinfo = py.test.raises(ValueError, mod.entry)
+        try:
+            mod.entry()
+        except ValueError:
+            excinfo = py.code.ExceptionInfo()
         from py._code.code import Code
         monkeypatch.setattr(Code, 'path', 'bogus')
         excinfo.traceback[0].frame.code.path = "bogus"
@@ -720,7 +723,10 @@
             def entry():
                 f(0)
         """)
-        excinfo = py.test.raises(ValueError, mod.entry)
+        try:
+            mod.entry()
+        except ValueError:
+            excinfo = py.code.ExceptionInfo()
 
         for style in ("short", "long", "no"):
             for showlocals in (True, False):
Binary files old/py-1.4.31/testing/conftest.pyc and 
new/py-1.4.32/testing/conftest.pyc differ
Binary files old/py-1.4.31/testing/io_/__init__.pyc and 
new/py-1.4.32/testing/io_/__init__.pyc differ
Binary files old/py-1.4.31/testing/io_/__pycache__/__init__.cpython-35.pyc and 
new/py-1.4.32/testing/io_/__pycache__/__init__.cpython-35.pyc differ
Binary files 
old/py-1.4.31/testing/io_/__pycache__/test_capture.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/io_/__pycache__/test_capture.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/io_/__pycache__/test_capture.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/io_/__pycache__/test_capture.cpython-35-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/io_/__pycache__/test_saferepr.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/io_/__pycache__/test_saferepr.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/io_/__pycache__/test_saferepr.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/io_/__pycache__/test_saferepr.cpython-35-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/io_/__pycache__/test_terminalwriter.cpython-27-PYTEST.pyc 
and 
new/py-1.4.32/testing/io_/__pycache__/test_terminalwriter.cpython-27-PYTEST.pyc 
differ
Binary files 
old/py-1.4.31/testing/io_/__pycache__/test_terminalwriter.cpython-35-PYTEST.pyc 
and 
new/py-1.4.32/testing/io_/__pycache__/test_terminalwriter.cpython-35-PYTEST.pyc 
differ
Binary files old/py-1.4.31/testing/log/__init__.pyc and 
new/py-1.4.32/testing/log/__init__.pyc differ
Binary files old/py-1.4.31/testing/log/__pycache__/__init__.cpython-35.pyc and 
new/py-1.4.32/testing/log/__pycache__/__init__.cpython-35.pyc differ
Binary files 
old/py-1.4.31/testing/log/__pycache__/test_log.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/log/__pycache__/test_log.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/log/__pycache__/test_log.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/log/__pycache__/test_log.cpython-35-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/log/__pycache__/test_warning.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/log/__pycache__/test_warning.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/log/__pycache__/test_warning.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/log/__pycache__/test_warning.cpython-35-PYTEST.pyc differ
Binary files old/py-1.4.31/testing/path/__init__.pyc and 
new/py-1.4.32/testing/path/__init__.pyc differ
Binary files old/py-1.4.31/testing/path/__pycache__/__init__.cpython-35.pyc and 
new/py-1.4.32/testing/path/__pycache__/__init__.cpython-35.pyc differ
Binary files 
old/py-1.4.31/testing/path/__pycache__/common.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/path/__pycache__/common.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/path/__pycache__/common.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/path/__pycache__/common.cpython-35-PYTEST.pyc differ
Binary files old/py-1.4.31/testing/path/__pycache__/common.cpython-35.pyc and 
new/py-1.4.32/testing/path/__pycache__/common.cpython-35.pyc differ
Binary files 
old/py-1.4.31/testing/path/__pycache__/conftest.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/path/__pycache__/conftest.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/path/__pycache__/conftest.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/path/__pycache__/conftest.cpython-35-PYTEST.pyc differ
Binary files old/py-1.4.31/testing/path/__pycache__/conftest.cpython-35.pyc and 
new/py-1.4.32/testing/path/__pycache__/conftest.cpython-35.pyc differ
Binary files 
old/py-1.4.31/testing/path/__pycache__/svntestbase.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/path/__pycache__/svntestbase.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/path/__pycache__/svntestbase.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/path/__pycache__/svntestbase.cpython-35-PYTEST.pyc differ
Binary files old/py-1.4.31/testing/path/__pycache__/svntestbase.cpython-35.pyc 
and new/py-1.4.32/testing/path/__pycache__/svntestbase.cpython-35.pyc differ
Binary files 
old/py-1.4.31/testing/path/__pycache__/test_cacheutil.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/path/__pycache__/test_cacheutil.cpython-27-PYTEST.pyc 
differ
Binary files 
old/py-1.4.31/testing/path/__pycache__/test_cacheutil.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/path/__pycache__/test_cacheutil.cpython-35-PYTEST.pyc 
differ
Binary files 
old/py-1.4.31/testing/path/__pycache__/test_local.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/path/__pycache__/test_local.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/path/__pycache__/test_local.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/path/__pycache__/test_local.cpython-35-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/path/__pycache__/test_svnauth.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/path/__pycache__/test_svnauth.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/path/__pycache__/test_svnauth.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/path/__pycache__/test_svnauth.cpython-35-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/path/__pycache__/test_svnurl.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/path/__pycache__/test_svnurl.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/path/__pycache__/test_svnurl.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/path/__pycache__/test_svnurl.cpython-35-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/path/__pycache__/test_svnwc.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/path/__pycache__/test_svnwc.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/path/__pycache__/test_svnwc.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/path/__pycache__/test_svnwc.cpython-35-PYTEST.pyc differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/testing/path/common.py 
new/py-1.4.32/testing/path/common.py
--- old/py-1.4.31/testing/path/common.py        2015-11-27 21:48:11.000000000 
+0100
+++ new/py-1.4.32/testing/path/common.py        2016-12-16 16:32:49.000000000 
+0100
@@ -1,6 +1,8 @@
 import py
 import sys
 
+import pytest
+
 class CommonFSTests(object):
     def test_constructor_equality(self, path1):
         p = path1.__class__(path1)
@@ -186,9 +188,12 @@
         assert "sampledir" in l
         assert not path1.sep.join(["sampledir", "otherfile"]) in l
 
-    def test_visit_filterfunc_is_string(self, path1):
+    @pytest.mark.parametrize('fil', ['*dir', u'*dir',
+                             pytest.mark.skip("sys.version_info <"
+                                              " (3,6)")(b'*dir')])
+    def test_visit_filterfunc_is_string(self, path1, fil):
         l = []
-        for i in path1.visit('*dir'):
+        for i in path1.visit(fil):
             l.append(i.relto(path1))
         assert len(l), 2
         assert "sampledir" in l
@@ -429,6 +434,26 @@
         assert dest.join('otherfile').check(file=1)
         assert not source.join('sampledir').check()
 
+    def test_fspath_protocol_match_strpath(self, path1):
+        assert path1.__fspath__() == path1.strpath
+
+    def test_fspath_func_match_strpath(self, path1):
+        try:
+            from os import fspath
+        except ImportError:
+            from py._path.common import fspath
+        assert fspath(path1) == path1.strpath
+
+    @py.test.mark.skip("sys.version_info < (3,6)")
+    def test_fspath_open(self, path1):
+        f = path1.join('opentestfile')
+        open(f)
+
+    @py.test.mark.skip("sys.version_info < (3,6)")
+    def test_fspath_fsencode(self, path1):
+        from os import fsencode
+        assert fsencode(path1) == fsencode(path1.strpath)
+
 def setuptestfs(path):
     if path.join('samplefile').check():
         return
Binary files old/py-1.4.31/testing/path/common.pyc and 
new/py-1.4.32/testing/path/common.pyc differ
Binary files old/py-1.4.31/testing/path/conftest.pyc and 
new/py-1.4.32/testing/path/conftest.pyc differ
Binary files old/py-1.4.31/testing/path/svntestbase.pyc and 
new/py-1.4.32/testing/path/svntestbase.pyc differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/testing/path/test_local.py 
new/py-1.4.32/testing/path/test_local.py
--- old/py-1.4.31/testing/path/test_local.py    2015-11-27 21:48:11.000000000 
+0100
+++ new/py-1.4.32/testing/path/test_local.py    2016-12-16 16:32:49.000000000 
+0100
@@ -1,6 +1,7 @@
 # -*- coding: utf-8 -*-
 
 from __future__ import with_statement
+import time
 import py
 import pytest
 import os, sys
@@ -15,6 +16,8 @@
 skiponwin32 = py.test.mark.skipif(
         "sys.platform == 'win32' or getattr(os, '_name', None) == 'nt'")
 
+ATIME_RESOLUTION = 0.01
+
 
 def pytest_funcarg__path1(request):
     def setup():
@@ -26,6 +29,14 @@
         assert path1.join("samplefile").check()
     return request.cached_setup(setup, teardown, scope="session")
 
+def pytest_funcarg__fake_fspath_obj(request):
+    class FakeFSPathClass(object):
+        def __init__(self, path):
+            self._path = path
+        def __fspath__(self):
+            return self._path
+    return FakeFSPathClass("this/is/a/fake/path")
+
 class TestLocalPath(common.CommonFSTests):
     def test_join_normpath(self, tmpdir):
         assert tmpdir.join(".") == tmpdir
@@ -298,6 +309,14 @@
         x2 = py.path.local.sysfind(name, paths=[x.dirpath()])
         assert x2 == x
 
+    def test_fspath_protocol_other_class(self, fake_fspath_obj):
+        # py.path is always absolute
+        py_path = py.path.local(fake_fspath_obj)
+        str_path = fake_fspath_obj.__fspath__()
+        assert py_path.check(endswith=str_path)
+        assert py_path.join(fake_fspath_obj).strpath == os.path.join(
+                py_path.strpath, str_path)
+
 
 class TestExecutionOnWindows:
     pytestmark = win32only
@@ -716,9 +735,9 @@
         # we could wait here but timer resolution is very
         # system dependent
         path.read()
-        time.sleep(0.01)
+        time.sleep(ATIME_RESOLUTION)
         atime2 = path.atime()
-        time.sleep(0.01)
+        time.sleep(ATIME_RESOLUTION)
         duration = time.time() - now
         assert (atime2-atime1) <= duration
 
@@ -781,6 +800,34 @@
         a.copy(b, mode=True)
         assert b.join(f.basename).stat().mode == newmode
 
+    def test_copy_stat_file(self, tmpdir):
+        src = tmpdir.ensure('src')
+        dst = tmpdir.join('dst')
+        # a small delay before the copy
+        time.sleep(ATIME_RESOLUTION)
+        src.copy(dst, stat=True)
+        oldstat = src.stat()
+        newstat = dst.stat()
+        assert oldstat.mode == newstat.mode
+        assert (dst.atime() - src.atime()) < ATIME_RESOLUTION
+        assert (dst.mtime() - src.mtime()) < ATIME_RESOLUTION
+
+    def test_copy_stat_dir(self, tmpdir):
+        test_files = ['a', 'b', 'c']
+        src = tmpdir.join('src')
+        for f in test_files:
+            src.join(f).write(f, ensure=True)
+        dst = tmpdir.join('dst')
+        # a small delay before the copy
+        time.sleep(ATIME_RESOLUTION)
+        src.copy(dst, stat=True)
+        for f in test_files:
+            oldstat = src.join(f).stat()
+            newstat = dst.join(f).stat()
+            assert (newstat.atime - oldstat.atime) < ATIME_RESOLUTION
+            assert (newstat.mtime - oldstat.mtime) < ATIME_RESOLUTION
+            assert oldstat.mode == newstat.mode
+
     @failsonjython
     def test_chown_identity(self, path1):
         owner = path1.stat().owner
Binary files old/py-1.4.31/testing/process/__init__.pyc and 
new/py-1.4.32/testing/process/__init__.pyc differ
Binary files old/py-1.4.31/testing/process/__pycache__/__init__.cpython-35.pyc 
and new/py-1.4.32/testing/process/__pycache__/__init__.cpython-35.pyc differ
Binary files 
old/py-1.4.31/testing/process/__pycache__/test_cmdexec.cpython-27-PYTEST.pyc 
and 
new/py-1.4.32/testing/process/__pycache__/test_cmdexec.cpython-27-PYTEST.pyc 
differ
Binary files 
old/py-1.4.31/testing/process/__pycache__/test_cmdexec.cpython-35-PYTEST.pyc 
and 
new/py-1.4.32/testing/process/__pycache__/test_cmdexec.cpython-35-PYTEST.pyc 
differ
Binary files 
old/py-1.4.31/testing/process/__pycache__/test_forkedfunc.cpython-27-PYTEST.pyc 
and 
new/py-1.4.32/testing/process/__pycache__/test_forkedfunc.cpython-27-PYTEST.pyc 
differ
Binary files 
old/py-1.4.31/testing/process/__pycache__/test_forkedfunc.cpython-35-PYTEST.pyc 
and 
new/py-1.4.32/testing/process/__pycache__/test_forkedfunc.cpython-35-PYTEST.pyc 
differ
Binary files 
old/py-1.4.31/testing/process/__pycache__/test_killproc.cpython-27-PYTEST.pyc 
and 
new/py-1.4.32/testing/process/__pycache__/test_killproc.cpython-27-PYTEST.pyc 
differ
Binary files 
old/py-1.4.31/testing/process/__pycache__/test_killproc.cpython-35-PYTEST.pyc 
and 
new/py-1.4.32/testing/process/__pycache__/test_killproc.cpython-35-PYTEST.pyc 
differ
Binary files old/py-1.4.31/testing/root/__init__.pyc and 
new/py-1.4.32/testing/root/__init__.pyc differ
Binary files old/py-1.4.31/testing/root/__pycache__/__init__.cpython-35.pyc and 
new/py-1.4.32/testing/root/__pycache__/__init__.cpython-35.pyc differ
Binary files 
old/py-1.4.31/testing/root/__pycache__/test_builtin.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/root/__pycache__/test_builtin.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/root/__pycache__/test_builtin.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/root/__pycache__/test_builtin.cpython-35-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/root/__pycache__/test_error.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/root/__pycache__/test_error.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/root/__pycache__/test_error.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/root/__pycache__/test_error.cpython-35-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/root/__pycache__/test_py_imports.cpython-27-PYTEST.pyc 
and 
new/py-1.4.32/testing/root/__pycache__/test_py_imports.cpython-27-PYTEST.pyc 
differ
Binary files 
old/py-1.4.31/testing/root/__pycache__/test_py_imports.cpython-35-PYTEST.pyc 
and 
new/py-1.4.32/testing/root/__pycache__/test_py_imports.cpython-35-PYTEST.pyc 
differ
Binary files 
old/py-1.4.31/testing/root/__pycache__/test_std.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/root/__pycache__/test_std.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/root/__pycache__/test_std.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/root/__pycache__/test_std.cpython-35-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/root/__pycache__/test_xmlgen.cpython-27-PYTEST.pyc and 
new/py-1.4.32/testing/root/__pycache__/test_xmlgen.cpython-27-PYTEST.pyc differ
Binary files 
old/py-1.4.31/testing/root/__pycache__/test_xmlgen.cpython-35-PYTEST.pyc and 
new/py-1.4.32/testing/root/__pycache__/test_xmlgen.cpython-35-PYTEST.pyc differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.4.31/tox.ini new/py-1.4.32/tox.ini
--- old/py-1.4.31/tox.ini       2015-11-27 21:48:11.000000000 +0100
+++ new/py-1.4.32/tox.ini       2016-12-16 16:32:49.000000000 +0100
@@ -1,5 +1,5 @@
 [tox]
-envlist=py26,py27,py33,py34,external
+envlist=py26,py27,py33,py34,py35,external
 # py27-xdist causes problems with svn, py25 requires virtualenv==1.9.1
 #indexserver=
 #    default=http://pypi.testrun.org
@@ -7,12 +7,12 @@
 [testenv]
 changedir=testing
 commands=py.test --confcutdir=.. -rfsxX 
--junitxml={envlogdir}/junit-{envname}.xml []
-deps=pytest
+deps=pytest~=2.9.0
 
 [testenv:py27-xdist]
 basepython=python2.7
 deps=
-    pytest
+    pytest~=2.9.0
     pytest-xdist
 commands=
   py.test -n3 -rfsxX --confcutdir=.. --runslowtests \


Reply via email to