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 - toddrme2178@gmail.com
+
+- 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: pytest-dev@python.org
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
+
+ >>> mypkg.path.Class1 # '_mypkg.somemodule' gets imported now
+
+ >>> 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
+
+ >>> mypkg.path.Class1 # '_mypkg.somemodule' gets imported now
+
+ >>> 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: opensource@ronnypfannschmidt.de, holger.krekel@gmail.com
+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": "opensource@ronnypfannschmidt.de, holger.krekel@gmail.com", "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: pytest-dev@python.org
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'
+
+@invoke.task()
+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()
+
+@invoke.task(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