Hello community,

here is the log from the commit of package python-py for openSUSE:Factory 
checked in at 2018-06-05 12:49:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-py (Old)
 and      /work/SRC/openSUSE:Factory/.python-py.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-py"

Tue Jun  5 12:49:41 2018 rev:28 rq:613462 version:1.5.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-py/python-py-doc.changes  2017-11-21 
15:28:11.570298081 +0100
+++ /work/SRC/openSUSE:Factory/.python-py.new/python-py-doc.changes     
2018-06-05 12:49:42.612674119 +0200
@@ -1,0 +2,6 @@
+Thu May 31 04:37:00 UTC 2018 - [email protected]
+
+- update to version 1.5.3
+  * - fix #179: ensure we can support 'from py.error import ...'
+
+-------------------------------------------------------------------
python-py.changes: same change

Old:
----
  py-1.5.2.tar.gz

New:
----
  py-1.5.3.tar.gz

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

Other differences:
------------------
++++++ python-py-doc.spec ++++++
--- /var/tmp/diff_new_pack.Z8hbdN/_old  2018-06-05 12:49:43.148654479 +0200
+++ /var/tmp/diff_new_pack.Z8hbdN/_new  2018-06-05 12:49:43.152654332 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-py-doc
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 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
@@ -18,17 +18,20 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-py-doc
-Version:        1.5.2
+Version:        1.5.3
 Release:        0
 Summary:        Library with cross-python path, ini-parsing, io, code, log 
facilities
 License:        MIT
 Group:          Development/Languages/Python
-Url:            https://py.readthedocs.io/en/latest/
+Url:            https://github.com/pytest-dev/py
 Source:         
https://files.pythonhosted.org/packages/source/p/py/py-%{version}.tar.gz
+BuildRequires:  %{python_module py}
+BuildRequires:  %{python_module pytest}
+BuildRequires:  %{python_module pytest-xdist}
+BuildRequires:  python-rpm-macros
 # Documentation requirements:
 BuildRequires:  dos2unix
 BuildRequires:  python3-Sphinx
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildArch:      noarch
 Provides:       %{python_module py-doc = %{version}}
 
@@ -57,6 +60,7 @@
 
 %files
 %defattr(-,root,root,-)
-%doc LICENSE doc/_build/html
+%doc doc/_build/html
+%license LICENSE
 
 %changelog

++++++ python-py.spec ++++++
--- /var/tmp/diff_new_pack.Z8hbdN/_old  2018-06-05 12:49:43.172653599 +0200
+++ /var/tmp/diff_new_pack.Z8hbdN/_new  2018-06-05 12:49:43.172653599 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-py
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 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
@@ -18,17 +18,17 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-py
-Version:        1.5.2
+Version:        1.5.3
 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
+Url:            https://github.com/pytest-dev/py
 Source:         
https://files.pythonhosted.org/packages/source/p/py/py-%{version}.tar.gz
 BuildRequires:  %{python_module devel}
 BuildRequires:  %{python_module setuptools}
+BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildArch:      noarch
 
 %python_subpackages
@@ -53,10 +53,12 @@
 
 %install
 %python_install
+%python_exec %fdupes %{buildroot}%{$python_sitelib}
 
 %files %{python_files}
 %defattr(-,root,root,-)
-%doc LICENSE README.rst
+%doc README.rst
+%license LICENSE
 %{python_sitelib}/*
 
 %changelog

++++++ py-1.5.2.tar.gz -> py-1.5.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.5.2/.gitattributes new/py-1.5.3/.gitattributes
--- old/py-1.5.2/.gitattributes 1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/.gitattributes 2017-05-05 16:12:31.000000000 +0200
@@ -0,0 +1 @@
+*.dump   eol=lf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.5.2/.gitignore new/py-1.5.3/.gitignore
--- old/py-1.5.2/.gitignore     1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/.gitignore     2017-05-05 16:12:31.000000000 +0200
@@ -0,0 +1,12 @@
+
+.cache/
+.tox/
+__pycache__/
+
+*.pyc
+*.pyo
+
+*.egg-info
+.eggs/
+
+dist/*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.5.2/.hgignore new/py-1.5.3/.hgignore
--- old/py-1.5.2/.hgignore      1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/.hgignore      2016-09-17 09:18:18.000000000 +0200
@@ -0,0 +1,29 @@
+
+# Automatically generated by `hgimportsvn`
+syntax:glob
+.svn
+.hgsvn
+
+# These lines are suggested according to the svn:ignore property
+# Feel free to enable them by uncommenting them
+syntax:glob
+*.pyc
+*.pyo
+*.swp
+*.html
+*.class
+*.orig
+*~
+
+doc/_build
+build/
+dist/
+*.egg-info
+issue/
+env/
+3rdparty/
+.tox
+lib/
+bin/
+include/
+src/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.5.2/.hgtags new/py-1.5.3/.hgtags
--- old/py-1.5.2/.hgtags        1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/.hgtags        2016-09-17 09:18:18.000000000 +0200
@@ -0,0 +1,68 @@
+52c6d9e78777a5a34e813123997dfc614a1a4767 1.0.0b3
+1c7aaa8c61f3b0945921a9acc7beb184201aed4b 1.0.0b4
+1c7aaa8c61f3b0945921a9acc7beb184201aed4b 1.0.0b4
+0000000000000000000000000000000000000000 1.0.0b4
+0000000000000000000000000000000000000000 1.0.0b4
+8cd6eb91eba313b012d6e568f37d844dc0751f2e 1.0.0b4
+8cd6eb91eba313b012d6e568f37d844dc0751f2e 1.0.0b4
+0000000000000000000000000000000000000000 1.0.0b4
+2cc0507f117ffe721dff7ee026648cfce00ec92f 1.0.0b6
+86f1e1b6e49bf5882a809f11edd1dbb08162cdad 1.0.0b8
+86f1e1b6e49bf5882a809f11edd1dbb08162cdad 1.0.0b8
+c63f35c266cbb26dad6b87b5e115d65685adf448 1.0.0b8
+c63f35c266cbb26dad6b87b5e115d65685adf448 1.0.0b8
+0eaa0fdf2ba0163cf534dc2eff4ba2e5fc66c261 1.0.0b8
+e2a60653cb490aeed81bbbd83c070b99401c211c 1.0.0b9
+5ea0cdf7854c3d4278d36eda94a2b68483a0e211 1.0.0
+5ea0cdf7854c3d4278d36eda94a2b68483a0e211 1.0.0
+7acde360d94b6a2690ce3d03ff39301da84c0a2b 1.0.0
+6bd221981ac99103002c1cb94fede400d23a96a1 1.0.1
+4816e8b80602a3fd3a0a120333ad85fbe7d8bab4 1.0.2
+60c44bdbf093285dc69d5462d4dbb4acad325ca6 1.1.0
+319187fcda66714c5eb1353492babeec3d3c826f 1.1.1
+4fc5212f7626a56b9eb6437b5c673f56dd7eb942 1.2.0
+c143a8c8840a1c68570890c8ac6165bbf92fd3c6 1.2.1
+eafd3c256e8732dfb0a4d49d051b5b4339858926 1.3.0
+d5eacf390af74553227122b85e20345d47b2f9e6 1.3.1
+d5eacf390af74553227122b85e20345d47b2f9e6 1.3.1
+8b8e7c25a13cf863f01b2dd955978285ae9daf6a 1.3.1
+3bff44b188a7ec1af328d977b9d39b6757bb38df 1.3.2
+c59d3fa8681a5b5966b8375b16fccd64a3a8dbeb 1.3.3
+79ef6377705184c55633d456832eea318fedcf61 1.3.4
+79ef6377705184c55633d456832eea318fedcf61 1.3.4
+90fffd35373e9f125af233f78b19416f0938d841 1.3.4
+5346ab41b059c95a48cbe1e8a7bae96ce6e0da27 1.4.0
+1f3125cba7976538952be268f107c1d0c36c5ce8 1.4.1
+04ab22db4ff737cf31e91d75a0f5d7077f324167 1.4.2
+9950bf9d684a984d511795013421c89c5cf88bef 1.4.3
+d9951e3bdbc765e73835ae13012f6a074d13d8bf 1.4.4
+b827dd156a36753e32c7f3f15ce82d6fe9e356c8 1.4.6
+f15726f9e5a67cc6221c499affa4840e9d591763 1.4.7
+abfabd07a1d328f13c730e8a50d80d2e470afd3b 1.4.9
+7f37ee0aff9be4b839d6759cfee336f60e8393a4 1.4.10
+fe4593263efa10ea7ba014db6e3379e0b82368a2 1.4.11
+f07af25a26786e4825b5170e17ad693245cb3426 1.4.12
+d3730d84ba7eda92fd3469a3f63fd6d8cb22c975 1.4.13
+12c1ae8e7c5345721e9ec9f8e27b1e36c07f74dc 1.4.14
+12c1ae8e7c5345721e9ec9f8e27b1e36c07f74dc 1.4.14
+0000000000000000000000000000000000000000 1.4.14
+0000000000000000000000000000000000000000 1.4.14
+1497e2efd0f8c73a0e3d529debf0c489e4cd6cab 1.4.14
+e065014c1ce8ad110a381e9baaaa5d647ba7ac6b 1.4.15
+e9e5b38f53dc35b35aa1f9ee9a9be9bbd2d2c3b1 1.4.16
+c603503945f52b78522d96a423605cbc953236d3 1.4.17
+c59201105a29801cc858eb9160b7a19791b91a35 1.4.18
+284cc172e294d48edc840012e1451c32c3963d92 1.4.19
+a3e0626aa0c5aecf271367dc77e476ab216ea3c8 1.4.20
+5e48016c4a3af8e7358a1267d33d021e71765bed 1.4.21
+01ae2cfcc61c4fcb3aa5031349adb5b467c31018 1.4.23
+5ffd982f4dff60b588f309cd9bdc61036547282a 1.4.24
+dc9ffbcaf1f7d72e96be3f68c11deebb7e7193c5 1.4.25
+6de1a44bf75de7af4fcae947c235e9072bbdbb9a 1.4.26
+7d650ba2657890a2253c8c4a83f170febebd90fa 1.4.27
+7d650ba2657890a2253c8c4a83f170febebd90fa 1.4.27
+1810003dec63dd1b506a23849861fffa5bc3ba13 1.4.27
+ba08706f08ddea1b77a426f00dfe2bdc244345e8 1.4.28
+4e8054ada63f3327bcf759ae7cd36c7c8652bc9b 1.4.29
+366ab346610c6de8aaa7617e24011794b40236c6 1.4.30
+657380e439f9b7e04918cb162cb2e46388244b42 1.4.31
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.5.2/.travis.yml new/py-1.5.3/.travis.yml
--- old/py-1.5.2/.travis.yml    1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/.travis.yml    2018-02-21 15:54:55.000000000 +0100
@@ -0,0 +1,27 @@
+sudo: false
+language: python
+python:
+- '2.7'
+- '3.4'
+- '3.5'
+- '3.6'
+- 'pypy-5.4'
+env:
+- DEPS="pytest~=2.9.0"
+- DEPS="pytest~=3.0.0"
+#- DEPS="pytest~=3.1.0"
+
+matrix:
+
+  include:
+  - python: '2.7'
+    # using a different option due to pytest-addopts pytester issues
+    env: PYTEST_XADDOPTS="-n 3 --runslowtests" DEPS="pytest~=3.0.0 
pytest-xdist"
+  allow_failures:
+  - python: 'pypy-5.4'
+install:
+- pip install -U setuptools setuptools_scm
+- pip install $DEPS
+- pip install -U . --force-reinstall
+script:
+- py.test --lsof $PYTEST_XADDOPTS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.5.2/CHANGELOG new/py-1.5.3/CHANGELOG
--- old/py-1.5.2/CHANGELOG      2017-11-16 00:45:42.000000000 +0100
+++ new/py-1.5.3/CHANGELOG      2018-03-14 16:08:44.000000000 +0100
@@ -1,3 +1,8 @@
+1.5.3 (unreleased)
+==================
+
+- fix #179: ensure we can support 'from py.error import ...'
+
 1.5.2
 =====
 
@@ -11,6 +16,10 @@
 1.5.0
 =====
 
+NOTE: **this release has been removed from PyPI** due to missing package
+metadata which caused a number of problems to py26 and py33 users.
+This issue was fixed in the 1.5.1 release.
+
 - python 2.6 and 3.3 are no longer supported
 - deprecate py.std and remove all internal uses
 - fix #73 turn py.error into an actual module
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.5.2/PKG-INFO new/py-1.5.3/PKG-INFO
--- old/py-1.5.2/PKG-INFO       2017-11-16 00:46:09.000000000 +0100
+++ new/py-1.5.3/PKG-INFO       2018-03-22 11:06:12.000000000 +0100
@@ -1,12 +1,11 @@
 Metadata-Version: 1.2
 Name: py
-Version: 1.5.2
+Version: 1.5.3
 Summary: library with cross-python path, ini-parsing, io, code, log facilities
 Home-page: http://py.readthedocs.io/
 Author: holger krekel, Ronny Pfannschmidt, Benjamin Peterson and others
 Author-email: [email protected]
 License: MIT license
-Description-Content-Type: UNKNOWN
 Description: .. image:: https://img.shields.io/pypi/v/py.svg
             :target: https://pypi.org/project/py
         
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.5.2/bench/localpath.py 
new/py-1.5.3/bench/localpath.py
--- old/py-1.5.2/bench/localpath.py     1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/bench/localpath.py     2016-09-17 09:18:18.000000000 +0200
@@ -0,0 +1,75 @@
+
+import py
+import timeit
+
+class Listdir:
+    numiter = 100000
+    numentries = 100
+
+    def setup(self):
+        tmpdir = py.path.local.make_numbered_dir(self.__class__.__name__)
+        for i in range(self.numentries):
+            tmpdir.join(str(i))
+        self.tmpdir = tmpdir
+
+    def run(self):
+        return self.tmpdir.listdir()
+
+class Listdir_arg(Listdir):
+    numiter = 100000
+    numentries = 100
+
+    def run(self):
+        return self.tmpdir.listdir("47")
+
+class Join_onearg(Listdir):
+    def run(self):
+        self.tmpdir.join("17")
+        self.tmpdir.join("18")
+        self.tmpdir.join("19")
+
+class Join_multi(Listdir):
+    def run(self):
+        self.tmpdir.join("a", "b")
+        self.tmpdir.join("a", "b", "c")
+        self.tmpdir.join("a", "b", "c", "d")
+
+class Check(Listdir):
+    def run(self):
+        self.tmpdir.check()
+        self.tmpdir.check()
+        self.tmpdir.check()
+
+class CheckDir(Listdir):
+    def run(self):
+        self.tmpdir.check(dir=1)
+        self.tmpdir.check(dir=1)
+        assert not self.tmpdir.check(dir=0)
+
+class CheckDir2(Listdir):
+    def run(self):
+        self.tmpdir.stat().isdir()
+        self.tmpdir.stat().isdir()
+        assert self.tmpdir.stat().isdir()
+
+class CheckFile(Listdir):
+    def run(self):
+        self.tmpdir.check(file=1)
+        assert not self.tmpdir.check(file=1)
+        assert self.tmpdir.check(file=0)
+
+if __name__ == "__main__":
+    import time
+    for cls in [Listdir, Listdir_arg,
+                Join_onearg, Join_multi,
+               Check, CheckDir, CheckDir2, CheckFile,]:
+
+        inst = cls()
+        inst.setup()
+        now = time.time()
+        for i in xrange(cls.numiter):
+            inst.run()
+        elapsed = time.time() - now
+        print "%s: %d loops took %.2f seconds, per call %.6f" %(
+               cls.__name__,
+                cls.numiter, elapsed, elapsed / cls.numiter)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.5.2/py/__init__.py new/py-1.5.3/py/__init__.py
--- old/py-1.5.2/py/__init__.py 2017-11-16 00:45:42.000000000 +0100
+++ new/py-1.5.3/py/__init__.py 2018-03-22 09:59:58.000000000 +0100
@@ -8,7 +8,7 @@
 
 (c) Holger Krekel and others, 2004-2014
 """
-__version__ = '1.5.2'
+from py._error import error
 
 try:
     from py._vendored_packages import apipkg
@@ -18,15 +18,12 @@
     import apipkg
     lib_not_mangled_by_packagers = False
     vendor_prefix = ''
+__version__ = '1.5.3'
 
-# so that py.error.* instances are picklable
-import sys
 
-apipkg.initpkg(__name__, attr={'_apipkg': apipkg}, exportdefs={
+apipkg.initpkg(__name__, attr={'_apipkg': apipkg, 'error': error}, exportdefs={
     # access to all standard lib modules
     'std': '._std:std',
-    # access to all posix errno's as classes
-    'error': '._error:error',
 
     '_pydir' : '.__metainfo:pydir',
     'version': 'py:__version__', # backward compatibility
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.5.2/py/_path/local.py 
new/py-1.5.3/py/_path/local.py
--- old/py-1.5.2/py/_path/local.py      2017-11-14 23:02:21.000000000 +0100
+++ new/py-1.5.3/py/_path/local.py      2018-02-21 15:54:55.000000000 +0100
@@ -669,7 +669,7 @@
             mod = sys.modules[modname]
             if self.basename == "__init__.py":
                 return mod # we don't check anything as we might
-                       # we in a namespace package ... too icky to check
+                       # be in a namespace package ... too icky to check
             modfile = mod.__file__
             if modfile[-4:] in ('.pyc', '.pyo'):
                 modfile = modfile[:-1]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-1.5.2/py/_vendored_packages/apipkg-1.4.dist-info/DESCRIPTION.rst 
new/py-1.5.3/py/_vendored_packages/apipkg-1.4.dist-info/DESCRIPTION.rst
--- old/py-1.5.2/py/_vendored_packages/apipkg-1.4.dist-info/DESCRIPTION.rst     
1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/py/_vendored_packages/apipkg-1.4.dist-info/DESCRIPTION.rst     
2017-07-03 10:42:09.000000000 +0200
@@ -0,0 +1,87 @@
+Welcome to apipkg!
+------------------------
+
+With apipkg you can control the exported namespace of a
+python package and greatly reduce the number of imports for your users.
+It is a `small pure python module`_ that works on virtually all Python
+versions, including CPython2.3 to Python3.1, Jython and PyPy.  It co-operates
+well with Python's ``help()`` system, custom importers (PEP302) and common
+command line completion tools.
+
+Usage is very simple: you can require 'apipkg' as a dependency or you
+can copy paste the <200 Lines of code into your project.
+
+
+Tutorial example
+-------------------
+
+Here is a simple ``mypkg`` package that specifies one namespace
+and exports two objects imported from different modules::
+
+    # mypkg/__init__.py
+    import apipkg
+    apipkg.initpkg(__name__, {
+        'path': {
+            'Class1': "_mypkg.somemodule:Class1",
+            'clsattr': "_mypkg.othermodule:Class2.attr",
+        }
+    }
+
+The package is initialized with a dictionary as namespace.
+
+You need to create a ``_mypkg`` package with a ``somemodule.py``
+and ``othermodule.py`` containing the respective classes.
+The ``_mypkg`` is not special - it's a completely
+regular python package.
+
+Namespace dictionaries contain ``name: value`` mappings
+where the value may be another namespace dictionary or
+a string specifying an import location.  On accessing
+an namespace attribute an import will be performed::
+
+    >>> import mypkg
+    >>> mypkg.path
+    <ApiModule 'mypkg.path'>
+    >>> mypkg.path.Class1   # '_mypkg.somemodule' gets imported now
+    <class _mypkg.somemodule.Class1 at 0xb7d428fc>
+    >>> mypkg.path.clsattr  # '_mypkg.othermodule' gets imported now
+    4 # the value of _mypkg.othermodule.Class2.attr
+
+The ``mypkg.path`` namespace and its two entries are
+loaded when they are accessed.   This means:
+
+* lazy loading - only what is actually needed is ever loaded
+
+* only the root "mypkg" ever needs to be imported to get
+  access to the complete functionality.
+
+* the underlying modules are also accessible, for example::
+
+    from mypkg.sub import Class1
+
+
+Including apipkg in your package
+--------------------------------------
+
+If you don't want to add an ``apipkg`` dependency to your package you
+can copy the `apipkg.py`_ file somewhere to your own package,
+for example ``_mypkg/apipkg.py`` in the above example.  You
+then import the ``initpkg`` function from that new place and
+are good to go.
+
+.. _`small pure python module`:
+.. _`apipkg.py`: http://bitbucket.org/hpk42/apipkg/src/tip/apipkg.py
+
+Feedback?
+-----------------------
+
+If you have questions you are welcome to
+
+* join the #pylib channel on irc.freenode.net
+* subscribe to the http://codespeak.net/mailman/listinfo/py-dev list.
+* create an issue on http://bitbucket.org/hpk42/apipkg/issues
+
+have fun,
+holger krekel
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-1.5.2/py/_vendored_packages/apipkg-1.4.dist-info/INSTALLER 
new/py-1.5.3/py/_vendored_packages/apipkg-1.4.dist-info/INSTALLER
--- old/py-1.5.2/py/_vendored_packages/apipkg-1.4.dist-info/INSTALLER   
1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/py/_vendored_packages/apipkg-1.4.dist-info/INSTALLER   
2017-07-03 10:42:09.000000000 +0200
@@ -0,0 +1 @@
+pip
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-1.5.2/py/_vendored_packages/apipkg-1.4.dist-info/METADATA 
new/py-1.5.3/py/_vendored_packages/apipkg-1.4.dist-info/METADATA
--- old/py-1.5.2/py/_vendored_packages/apipkg-1.4.dist-info/METADATA    
1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/py/_vendored_packages/apipkg-1.4.dist-info/METADATA    
2017-07-03 10:42:09.000000000 +0200
@@ -0,0 +1,109 @@
+Metadata-Version: 2.0
+Name: apipkg
+Version: 1.4
+Summary: apipkg: namespace control and lazy-import mechanism
+Home-page: http://bitbucket.org/hpk42/apipkg
+Author: holger krekel
+Author-email: holger at merlinux.eu
+License: MIT License
+Platform: unix
+Platform: linux
+Platform: osx
+Platform: cygwin
+Platform: win32
+Classifier: Development Status :: 4 - Beta
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: MIT License
+Classifier: Operating System :: POSIX
+Classifier: Operating System :: Microsoft :: Windows
+Classifier: Operating System :: MacOS :: MacOS X
+Classifier: Topic :: Software Development :: Libraries
+Classifier: Programming Language :: Python
+
+Welcome to apipkg!
+------------------------
+
+With apipkg you can control the exported namespace of a
+python package and greatly reduce the number of imports for your users.
+It is a `small pure python module`_ that works on virtually all Python
+versions, including CPython2.3 to Python3.1, Jython and PyPy.  It co-operates
+well with Python's ``help()`` system, custom importers (PEP302) and common
+command line completion tools.
+
+Usage is very simple: you can require 'apipkg' as a dependency or you
+can copy paste the <200 Lines of code into your project.
+
+
+Tutorial example
+-------------------
+
+Here is a simple ``mypkg`` package that specifies one namespace
+and exports two objects imported from different modules::
+
+    # mypkg/__init__.py
+    import apipkg
+    apipkg.initpkg(__name__, {
+        'path': {
+            'Class1': "_mypkg.somemodule:Class1",
+            'clsattr': "_mypkg.othermodule:Class2.attr",
+        }
+    }
+
+The package is initialized with a dictionary as namespace.
+
+You need to create a ``_mypkg`` package with a ``somemodule.py``
+and ``othermodule.py`` containing the respective classes.
+The ``_mypkg`` is not special - it's a completely
+regular python package.
+
+Namespace dictionaries contain ``name: value`` mappings
+where the value may be another namespace dictionary or
+a string specifying an import location.  On accessing
+an namespace attribute an import will be performed::
+
+    >>> import mypkg
+    >>> mypkg.path
+    <ApiModule 'mypkg.path'>
+    >>> mypkg.path.Class1   # '_mypkg.somemodule' gets imported now
+    <class _mypkg.somemodule.Class1 at 0xb7d428fc>
+    >>> mypkg.path.clsattr  # '_mypkg.othermodule' gets imported now
+    4 # the value of _mypkg.othermodule.Class2.attr
+
+The ``mypkg.path`` namespace and its two entries are
+loaded when they are accessed.   This means:
+
+* lazy loading - only what is actually needed is ever loaded
+
+* only the root "mypkg" ever needs to be imported to get
+  access to the complete functionality.
+
+* the underlying modules are also accessible, for example::
+
+    from mypkg.sub import Class1
+
+
+Including apipkg in your package
+--------------------------------------
+
+If you don't want to add an ``apipkg`` dependency to your package you
+can copy the `apipkg.py`_ file somewhere to your own package,
+for example ``_mypkg/apipkg.py`` in the above example.  You
+then import the ``initpkg`` function from that new place and
+are good to go.
+
+.. _`small pure python module`:
+.. _`apipkg.py`: http://bitbucket.org/hpk42/apipkg/src/tip/apipkg.py
+
+Feedback?
+-----------------------
+
+If you have questions you are welcome to
+
+* join the #pylib channel on irc.freenode.net
+* subscribe to the http://codespeak.net/mailman/listinfo/py-dev list.
+* create an issue on http://bitbucket.org/hpk42/apipkg/issues
+
+have fun,
+holger krekel
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-1.5.2/py/_vendored_packages/apipkg-1.4.dist-info/RECORD 
new/py-1.5.3/py/_vendored_packages/apipkg-1.4.dist-info/RECORD
--- old/py-1.5.2/py/_vendored_packages/apipkg-1.4.dist-info/RECORD      
1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/py/_vendored_packages/apipkg-1.4.dist-info/RECORD      
2017-07-03 10:42:09.000000000 +0200
@@ -0,0 +1,9 @@
+apipkg.py,sha256=BNnv_qvq8zZvku-uudoqgp3XTNFbwsNUmtzOKrVI7X0,6420
+apipkg-1.4.dist-info/top_level.txt,sha256=3TGS6nmN7kjxhUK4LpPCB3QkQI34QYGrT0ZQGWajoZ8,7
+apipkg-1.4.dist-info/METADATA,sha256=Fk_8BrHyXE--kvB3_ZBKgwvPaKusAZUjchH-kpB63Hs,3491
+apipkg-1.4.dist-info/DESCRIPTION.rst,sha256=RkMQqk5ljhGy0DiZkR_nbpjqvwCIhuIEHsyvkn3O96k,2803
+apipkg-1.4.dist-info/metadata.json,sha256=GdshYrA_7gAII3E3EQMH-31BHzU-klTZ6bPQzlDmuy4,779
+apipkg-1.4.dist-info/WHEEL,sha256=AvR0WeTpDaxT645bl5FQxUK6NPsTls2ttpcGJg3j1Xg,110
+apipkg-1.4.dist-info/RECORD,,
+apipkg-1.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
+__pycache__/apipkg.cpython-35.pyc,,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-1.5.2/py/_vendored_packages/apipkg-1.4.dist-info/WHEEL 
new/py-1.5.3/py/_vendored_packages/apipkg-1.4.dist-info/WHEEL
--- old/py-1.5.2/py/_vendored_packages/apipkg-1.4.dist-info/WHEEL       
1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/py/_vendored_packages/apipkg-1.4.dist-info/WHEEL       
2017-07-03 10:42:09.000000000 +0200
@@ -0,0 +1,6 @@
+Wheel-Version: 1.0
+Generator: bdist_wheel (0.24.0)
+Root-Is-Purelib: true
+Tag: py2-none-any
+Tag: py3-none-any
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-1.5.2/py/_vendored_packages/apipkg-1.4.dist-info/metadata.json 
new/py-1.5.3/py/_vendored_packages/apipkg-1.4.dist-info/metadata.json
--- old/py-1.5.2/py/_vendored_packages/apipkg-1.4.dist-info/metadata.json       
1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/py/_vendored_packages/apipkg-1.4.dist-info/metadata.json       
2017-07-03 10:42:09.000000000 +0200
@@ -0,0 +1 @@
+{"license": "MIT License", "name": "apipkg", "metadata_version": "2.0", 
"generator": "bdist_wheel (0.24.0)", "summary": "apipkg: namespace control and 
lazy-import mechanism", "platform": "unix", "version": "1.4", "extensions": 
{"python.details": {"project_urls": {"Home": 
"http://bitbucket.org/hpk42/apipkg"}, "document_names": {"description": 
"DESCRIPTION.rst"}, "contacts": [{"role": "author", "email": "holger at 
merlinux.eu", "name": "holger krekel"}]}}, "classifiers": ["Development Status 
:: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: 
MIT License", "Operating System :: POSIX", "Operating System :: Microsoft :: 
Windows", "Operating System :: MacOS :: MacOS X", "Topic :: Software 
Development :: Libraries", "Programming Language :: Python"]}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-1.5.2/py/_vendored_packages/apipkg-1.4.dist-info/top_level.txt 
new/py-1.5.3/py/_vendored_packages/apipkg-1.4.dist-info/top_level.txt
--- old/py-1.5.2/py/_vendored_packages/apipkg-1.4.dist-info/top_level.txt       
1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/py/_vendored_packages/apipkg-1.4.dist-info/top_level.txt       
2017-07-03 10:42:09.000000000 +0200
@@ -0,0 +1 @@
+apipkg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-1.5.2/py/_vendored_packages/iniconfig-1.0.0.dist-info/DESCRIPTION.rst 
new/py-1.5.3/py/_vendored_packages/iniconfig-1.0.0.dist-info/DESCRIPTION.rst
--- 
old/py-1.5.2/py/_vendored_packages/iniconfig-1.0.0.dist-info/DESCRIPTION.rst    
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/py-1.5.3/py/_vendored_packages/iniconfig-1.0.0.dist-info/DESCRIPTION.rst    
    2017-07-03 10:42:09.000000000 +0200
@@ -0,0 +1,53 @@
+iniconfig: brain-dead simple parsing of ini files
+=======================================================
+
+iniconfig is a small and simple INI-file parser module
+having a unique set of features:
+
+* tested against Python2.4 across to Python3.2, Jython, PyPy
+* maintains order of sections and entries
+* supports multi-line values with or without line-continuations
+* supports "#" comments everywhere
+* raises errors with proper line-numbers
+* no bells and whistles like automatic substitutions
+* iniconfig raises an Error if two sections have the same name.
+
+If you encounter issues or have feature wishes please report them to:
+
+    http://github.org/RonnyPfannschmidt/iniconfig/issues
+
+Basic Example
+===================================
+
+If you have an ini file like this::
+
+    # content of example.ini
+    [section1] # comment
+    name1=value1  # comment
+    name1b=value1,value2  # comment
+
+    [section2]
+    name2=
+        line1
+        line2
+
+then you can do::
+
+    >>> import iniconfig
+    >>> ini = iniconfig.IniConfig("example.ini")
+    >>> ini['section1']['name1'] # raises KeyError if not exists
+    'value1'
+    >>> ini.get('section1', 'name1b', [], lambda x: x.split(","))
+    ['value1', 'value2']
+    >>> ini.get('section1', 'notexist', [], lambda x: x.split(","))
+    []
+    >>> [x.name for x in list(ini)]
+    ['section1', 'section2']
+    >>> list(list(ini)[0].items())
+    [('name1', 'value1'), ('name1b', 'value1,value2')]
+    >>> 'section1' in ini
+    True
+    >>> 'inexistendsection' in ini
+    False
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-1.5.2/py/_vendored_packages/iniconfig-1.0.0.dist-info/INSTALLER 
new/py-1.5.3/py/_vendored_packages/iniconfig-1.0.0.dist-info/INSTALLER
--- old/py-1.5.2/py/_vendored_packages/iniconfig-1.0.0.dist-info/INSTALLER      
1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/py/_vendored_packages/iniconfig-1.0.0.dist-info/INSTALLER      
2017-07-03 10:42:09.000000000 +0200
@@ -0,0 +1 @@
+pip
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-1.5.2/py/_vendored_packages/iniconfig-1.0.0.dist-info/METADATA 
new/py-1.5.3/py/_vendored_packages/iniconfig-1.0.0.dist-info/METADATA
--- old/py-1.5.2/py/_vendored_packages/iniconfig-1.0.0.dist-info/METADATA       
1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/py/_vendored_packages/iniconfig-1.0.0.dist-info/METADATA       
2017-07-03 10:42:09.000000000 +0200
@@ -0,0 +1,78 @@
+Metadata-Version: 2.0
+Name: iniconfig
+Version: 1.0.0
+Summary: iniconfig: brain-dead simple config-ini parsing
+Home-page: http://github.com/RonnyPfannschmidt/iniconfig
+Author: Ronny Pfannschmidt, Holger Krekel
+Author-email: [email protected], [email protected]
+License: MIT License
+Platform: unix
+Platform: linux
+Platform: osx
+Platform: cygwin
+Platform: win32
+Classifier: Development Status :: 4 - Beta
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: MIT License
+Classifier: Operating System :: POSIX
+Classifier: Operating System :: Microsoft :: Windows
+Classifier: Operating System :: MacOS :: MacOS X
+Classifier: Topic :: Software Development :: Libraries
+Classifier: Topic :: Utilities
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 3
+
+iniconfig: brain-dead simple parsing of ini files
+=======================================================
+
+iniconfig is a small and simple INI-file parser module
+having a unique set of features:
+
+* tested against Python2.4 across to Python3.2, Jython, PyPy
+* maintains order of sections and entries
+* supports multi-line values with or without line-continuations
+* supports "#" comments everywhere
+* raises errors with proper line-numbers
+* no bells and whistles like automatic substitutions
+* iniconfig raises an Error if two sections have the same name.
+
+If you encounter issues or have feature wishes please report them to:
+
+    http://github.org/RonnyPfannschmidt/iniconfig/issues
+
+Basic Example
+===================================
+
+If you have an ini file like this::
+
+    # content of example.ini
+    [section1] # comment
+    name1=value1  # comment
+    name1b=value1,value2  # comment
+
+    [section2]
+    name2=
+        line1
+        line2
+
+then you can do::
+
+    >>> import iniconfig
+    >>> ini = iniconfig.IniConfig("example.ini")
+    >>> ini['section1']['name1'] # raises KeyError if not exists
+    'value1'
+    >>> ini.get('section1', 'name1b', [], lambda x: x.split(","))
+    ['value1', 'value2']
+    >>> ini.get('section1', 'notexist', [], lambda x: x.split(","))
+    []
+    >>> [x.name for x in list(ini)]
+    ['section1', 'section2']
+    >>> list(list(ini)[0].items())
+    [('name1', 'value1'), ('name1b', 'value1,value2')]
+    >>> 'section1' in ini
+    True
+    >>> 'inexistendsection' in ini
+    False
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-1.5.2/py/_vendored_packages/iniconfig-1.0.0.dist-info/RECORD 
new/py-1.5.3/py/_vendored_packages/iniconfig-1.0.0.dist-info/RECORD
--- old/py-1.5.2/py/_vendored_packages/iniconfig-1.0.0.dist-info/RECORD 
1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/py/_vendored_packages/iniconfig-1.0.0.dist-info/RECORD 
2017-07-03 10:42:09.000000000 +0200
@@ -0,0 +1,9 @@
+iniconfig.py,sha256=-pBe5AF_6aAwo1CxJQ8i_zJq6ejc6IxHta7qk2tNJhY,5208
+iniconfig-1.0.0.dist-info/DESCRIPTION.rst,sha256=BDLMwWqfjpwZ5yqXRvz1x6bf8Dnt_pZhElekAwtL19o,1522
+iniconfig-1.0.0.dist-info/METADATA,sha256=bb2T8WUSDXXiUVxZ4WXhbffq6stikMTlB1jyrPbLfyU,2405
+iniconfig-1.0.0.dist-info/RECORD,,
+iniconfig-1.0.0.dist-info/WHEEL,sha256=3XK1Z4AI42GuJXciCpiHMOkbehxRV8QDBW8IU41k3ZU,96
+iniconfig-1.0.0.dist-info/metadata.json,sha256=UYYwW0p815nU4qz8Iq1gGqIYaAcsCyGju3jXvTOyXSI,950
+iniconfig-1.0.0.dist-info/top_level.txt,sha256=7KfM0fugdlToj9UW7enKXk2HYALQD8qHiyKtjhSzgN8,10
+iniconfig-1.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
+__pycache__/iniconfig.cpython-35.pyc,,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-1.5.2/py/_vendored_packages/iniconfig-1.0.0.dist-info/WHEEL 
new/py-1.5.3/py/_vendored_packages/iniconfig-1.0.0.dist-info/WHEEL
--- old/py-1.5.2/py/_vendored_packages/iniconfig-1.0.0.dist-info/WHEEL  
1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/py/_vendored_packages/iniconfig-1.0.0.dist-info/WHEEL  
2017-07-03 10:42:09.000000000 +0200
@@ -0,0 +1,5 @@
+Wheel-Version: 1.0
+Generator: bdist_wheel (0.30.0.a0)
+Root-Is-Purelib: true
+Tag: cp35-none-any
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-1.5.2/py/_vendored_packages/iniconfig-1.0.0.dist-info/metadata.json 
new/py-1.5.3/py/_vendored_packages/iniconfig-1.0.0.dist-info/metadata.json
--- old/py-1.5.2/py/_vendored_packages/iniconfig-1.0.0.dist-info/metadata.json  
1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/py/_vendored_packages/iniconfig-1.0.0.dist-info/metadata.json  
2017-07-03 10:42:09.000000000 +0200
@@ -0,0 +1 @@
+{"classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: 
Developers", "License :: OSI Approved :: MIT License", "Operating System :: 
POSIX", "Operating System :: Microsoft :: Windows", "Operating System :: MacOS 
:: MacOS X", "Topic :: Software Development :: Libraries", "Topic :: 
Utilities", "Programming Language :: Python", "Programming Language :: Python 
:: 2", "Programming Language :: Python :: 3"], "extensions": {"python.details": 
{"contacts": [{"email": "[email protected], 
[email protected]", "name": "Ronny Pfannschmidt, Holger Krekel", "role": 
"author"}], "document_names": {"description": "DESCRIPTION.rst"}, 
"project_urls": {"Home": "http://github.com/RonnyPfannschmidt/iniconfig"}}}, 
"generator": "bdist_wheel (0.30.0.a0)", "license": "MIT License", 
"metadata_version": "2.0", "name": "iniconfig", "platform": "unix", "summary": 
"iniconfig: brain-dead simple config-ini parsing", "version": "1.0.0"}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-1.5.2/py/_vendored_packages/iniconfig-1.0.0.dist-info/top_level.txt 
new/py-1.5.3/py/_vendored_packages/iniconfig-1.0.0.dist-info/top_level.txt
--- old/py-1.5.2/py/_vendored_packages/iniconfig-1.0.0.dist-info/top_level.txt  
1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/py/_vendored_packages/iniconfig-1.0.0.dist-info/top_level.txt  
2017-07-03 10:42:09.000000000 +0200
@@ -0,0 +1 @@
+iniconfig
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.5.2/py.egg-info/PKG-INFO 
new/py-1.5.3/py.egg-info/PKG-INFO
--- old/py-1.5.2/py.egg-info/PKG-INFO   2017-11-16 00:46:09.000000000 +0100
+++ new/py-1.5.3/py.egg-info/PKG-INFO   2018-03-22 11:06:12.000000000 +0100
@@ -1,12 +1,11 @@
 Metadata-Version: 1.2
 Name: py
-Version: 1.5.2
+Version: 1.5.3
 Summary: library with cross-python path, ini-parsing, io, code, log facilities
 Home-page: http://py.readthedocs.io/
 Author: holger krekel, Ronny Pfannschmidt, Benjamin Peterson and others
 Author-email: [email protected]
 License: MIT license
-Description-Content-Type: UNKNOWN
 Description: .. image:: https://img.shields.io/pypi/v/py.svg
             :target: https://pypi.org/project/py
         
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.5.2/py.egg-info/SOURCES.txt 
new/py-1.5.3/py.egg-info/SOURCES.txt
--- old/py-1.5.2/py.egg-info/SOURCES.txt        2017-11-16 00:46:09.000000000 
+0100
+++ new/py-1.5.3/py.egg-info/SOURCES.txt        2018-03-22 11:06:12.000000000 
+0100
@@ -1,3 +1,8 @@
+.gitattributes
+.gitignore
+.hgignore
+.hgtags
+.travis.yml
 AUTHORS
 CHANGELOG
 LICENSE
@@ -7,6 +12,7 @@
 setup.cfg
 setup.py
 tox.ini
+bench/localpath.py
 doc/Makefile
 doc/changelog.txt
 doc/code.txt
@@ -83,6 +89,22 @@
 py/_vendored_packages/__init__.py
 py/_vendored_packages/apipkg.py
 py/_vendored_packages/iniconfig.py
+py/_vendored_packages/apipkg-1.4.dist-info/DESCRIPTION.rst
+py/_vendored_packages/apipkg-1.4.dist-info/INSTALLER
+py/_vendored_packages/apipkg-1.4.dist-info/METADATA
+py/_vendored_packages/apipkg-1.4.dist-info/RECORD
+py/_vendored_packages/apipkg-1.4.dist-info/WHEEL
+py/_vendored_packages/apipkg-1.4.dist-info/metadata.json
+py/_vendored_packages/apipkg-1.4.dist-info/top_level.txt
+py/_vendored_packages/iniconfig-1.0.0.dist-info/DESCRIPTION.rst
+py/_vendored_packages/iniconfig-1.0.0.dist-info/INSTALLER
+py/_vendored_packages/iniconfig-1.0.0.dist-info/METADATA
+py/_vendored_packages/iniconfig-1.0.0.dist-info/RECORD
+py/_vendored_packages/iniconfig-1.0.0.dist-info/WHEEL
+py/_vendored_packages/iniconfig-1.0.0.dist-info/metadata.json
+py/_vendored_packages/iniconfig-1.0.0.dist-info/top_level.txt
+tasks/__init__.py
+tasks/vendoring.py
 testing/conftest.py
 testing/code/test_assertion.py
 testing/code/test_code.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.5.2/tasks/__init__.py 
new/py-1.5.3/tasks/__init__.py
--- old/py-1.5.2/tasks/__init__.py      1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/tasks/__init__.py      2017-07-03 10:42:09.000000000 +0200
@@ -0,0 +1,12 @@
+"""
+Invoke tasks to help with pytest development and release process.
+"""
+
+import invoke
+
+from . import vendoring
+
+
+ns = invoke.Collection(
+    vendoring
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.5.2/tasks/vendoring.py 
new/py-1.5.3/tasks/vendoring.py
--- old/py-1.5.2/tasks/vendoring.py     1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.5.3/tasks/vendoring.py     2017-07-03 10:42:09.000000000 +0200
@@ -0,0 +1,23 @@
+from __future__ import absolute_import, print_function
+import py
+import invoke
+
+VENDOR_TARGET = py.path.local("py/_vendored_packages")
+GOOD_FILES = 'README.md', '__init__.py'
+
[email protected]()
+def remove_libs(ctx):
+    print("removing vendored libs")
+    for path in VENDOR_TARGET.listdir():
+        if path.basename not in GOOD_FILES:
+            print(" ", path)
+            path.remove()
+
[email protected](pre=[remove_libs])
+def update_libs(ctx):
+    print("installing libs")
+    ctx.run("pip install -t {target} apipkg 
iniconfig".format(target=VENDOR_TARGET))
+    ctx.run("git add {target}".format(target=VENDOR_TARGET))
+    print("Please commit to finish the update after running the tests:")
+    print()
+    print('    git commit -am "Updated vendored libs"')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.5.2/testing/root/test_error.py 
new/py-1.5.3/testing/root/test_error.py
--- old/py-1.5.2/testing/root/test_error.py     2017-11-14 23:02:21.000000000 
+0100
+++ new/py-1.5.3/testing/root/test_error.py     2018-03-14 16:07:45.000000000 
+0100
@@ -2,6 +2,8 @@
 import py
 
 import errno
+import sys
+import subprocess
 
 
 def test_error_classes():
@@ -33,7 +35,7 @@
     assert cls is cls2
 
 
-def test_error_conversion_ENOTDIR(testdir):
+def test_error_conversion_enotdir(testdir):
     p = testdir.makepyfile("")
     excinfo = py.test.raises(py.error.Error, py.error.checked_call, p.listdir)
     assert isinstance(excinfo.value, EnvironmentError)
@@ -46,6 +48,12 @@
     py.error.checked_call(tempfile.mkdtemp, dir=str(tmpdir))
 
 
+def test_error_importable():
+    """Regression test for #179"""
+    subprocess.check_call(
+        [sys.executable, '-c', 'from py.error import ENOENT'])
+
+
 try:
     import unittest
     unittest.TestCase.assertWarns
@@ -56,13 +64,13 @@
     import warnings
 
     class Case(unittest.TestCase):
-        def test_assertWarns(self):
+        def test_assert_warns(self):
             # Clear everything "py.*" from sys.modules and re-import py
             # as a fresh start
             for mod in tuple(sys.modules.keys()):
                 if mod and (mod == 'py' or mod.startswith('py.')):
                     del sys.modules[mod]
-            import py
+            __import__('py')
 
             with self.assertWarns(UserWarning):
                 warnings.warn('this should work')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.5.2/tox.ini new/py-1.5.3/tox.ini
--- old/py-1.5.2/tox.ini        2017-11-14 23:02:21.000000000 +0100
+++ new/py-1.5.3/tox.ini        2018-03-14 16:07:45.000000000 +0100
@@ -4,13 +4,13 @@
 [testenv]
 changedir=testing
 commands=
-    pip install -U .. # hande the install order fallout since pytest depends 
on pip
-       
-       py.test --confcutdir=.. -rfsxX 
--junitxml={envlogdir}/junit-{envname}.xml []
+  pip install -U .. # hande the install order fallout since pytest depends on 
pip
+  py.test --confcutdir=.. -rfsxX --junitxml={envlogdir}/junit-{envname}.xml []
 deps=
-       pytest29: pytest~=2.9.0
-       pytest30: pytest~=3.0.0
-       pytest31: pytest~=3.1.0
+  attrs
+  pytest29: pytest~=2.9.0
+  pytest30: pytest~=3.0.0
+  pytest31: pytest~=3.1.0
 
 [testenv:py27-xdist]
 basepython=python2.7


Reply via email to