Hello community,

here is the log from the commit of package python-py for openSUSE:Factory 
checked in at 2020-06-30 21:54:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-py (Old)
 and      /work/SRC/openSUSE:Factory/.python-py.new.3060 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-py"

Tue Jun 30 21:54:15 2020 rev:35 rq:817669 version:1.9.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-py/python-py.changes      2020-01-16 
18:13:39.568717505 +0100
+++ /work/SRC/openSUSE:Factory/.python-py.new.3060/python-py.changes    
2020-06-30 21:54:17.910356589 +0200
@@ -1,0 +2,6 @@
+Mon Jun 29 08:51:40 UTC 2020 - Marketa Calabkova <mcalabk...@suse.com>
+
+- Update to 1.9.0
+  * Add type annotation stubs
+
+-------------------------------------------------------------------

Old:
----
  py-1.8.1.tar.gz

New:
----
  py-1.9.0.tar.gz

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

Other differences:
------------------
++++++ python-py.spec ++++++
--- /var/tmp/diff_new_pack.DqG6OZ/_old  2020-06-30 21:54:19.774362357 +0200
+++ /var/tmp/diff_new_pack.DqG6OZ/_new  2020-06-30 21:54:19.782362382 +0200
@@ -27,7 +27,7 @@
 %bcond_with test
 %endif
 Name:           python-py%{psuffix}
-Version:        1.8.1
+Version:        1.9.0
 Release:        0
 Summary:        Library with cross-python path, ini-parsing, io, code, log 
facilities
 License:        MIT

++++++ py-1.8.1.tar.gz -> py-1.9.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/.appveyor.yml new/py-1.9.0/.appveyor.yml
--- old/py-1.8.1/.appveyor.yml  1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.9.0/.appveyor.yml  2020-06-25 13:26:03.000000000 +0200
@@ -0,0 +1,29 @@
+environment:
+  matrix:
+  # note: please use "tox --listenvs" to populate the build matrix below
+  - TOXENV: "py27-pytest29"
+  - TOXENV: "py27-pytest30"
+  - TOXENV: "py27-pytest31"
+  - TOXENV: "py35-pytest29"
+  - TOXENV: "py35-pytest30"
+  - TOXENV: "py35-pytest31"
+  - TOXENV: "py36-pytest29"
+  - TOXENV: "py36-pytest30"
+  - TOXENV: "py36-pytest31"
+  - TOXENV: "py37-pytest30"
+  - TOXENV: "py37-pytest31"
+
+install:
+  - echo Installed Pythons
+  - dir c:\Python*
+
+  - C:\Python37\python -m pip install --upgrade --pre tox
+
+build: false  # Not a C# project, build stuff at the test step instead.
+
+test_script:
+  - C:\Python37\python -m tox
+
+# We don't deploy anything on tags with AppVeyor, we use Travis instead, so we
+# might as well save resources
+skip_tags: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/.flake8 new/py-1.9.0/.flake8
--- old/py-1.8.1/.flake8        1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.9.0/.flake8        2020-06-25 13:26:03.000000000 +0200
@@ -0,0 +1,4 @@
+[flake8]
+max-line-length = 120
+per-file-ignores =
+    **/*.pyi:E252,E301,E302,E305,E501,E701,E704,F401,F811,F821
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/.gitignore new/py-1.9.0/.gitignore
--- old/py-1.8.1/.gitignore     2019-12-27 13:07:13.000000000 +0100
+++ new/py-1.9.0/.gitignore     2020-06-25 13:26:03.000000000 +0200
@@ -2,6 +2,7 @@
 .cache/
 .tox/
 __pycache__/
+.mypy_cache/
 
 *.pyc
 *.pyo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/.travis.yml new/py-1.9.0/.travis.yml
--- old/py-1.8.1/.travis.yml    2019-12-27 13:07:13.000000000 +0100
+++ new/py-1.9.0/.travis.yml    2020-06-25 13:26:03.000000000 +0200
@@ -3,12 +3,11 @@
 
 python:
   - '2.7'
-  - '3.4'
   - '3.5'
   - '3.6'
   - '3.7'
-  # - 'pypy2.7-6.0'
-  - 'pypy3.5-6.0'
+  # - 'pypy'
+  - 'pypy3'
 
 env:
   global:
@@ -51,8 +50,8 @@
       env: DEPS="pytest~=2.9.0"
 
   allow_failures:
-  - python: 'pypy2.7-6.0'
-  - python: 'pypy3.5-6.0'
+  - python: 'pypy'
+  - python: 'pypy3'
 
 install:
   - pip install -U coverage coverage-enable-subprocess pip setuptools 
setuptools_scm
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/CHANGELOG new/py-1.9.0/CHANGELOG
--- old/py-1.8.1/CHANGELOG      2019-12-27 13:07:13.000000000 +0100
+++ new/py-1.9.0/CHANGELOG      2020-06-25 13:26:03.000000000 +0200
@@ -1,3 +1,29 @@
+1.9.0 (2020-06-24)
+==================
+
+- Add type annotation stubs for the following modules:
+
+  * ``py.error``
+  * ``py.iniconfig``
+  * ``py.path`` (not including SVN paths)
+  * ``py.io``
+  * ``py.xml``
+
+  There are no plans to type other modules at this time.
+
+  The type annotations are provided in external .pyi files, not inline in the
+  code, and may therefore contain small errors or omissions. If you use ``py``
+  in conjunction with a type checker, and encounter any type errors you believe
+  should be accepted, please report it in an issue.
+
+1.8.2 (2020-06-15)
+==================
+
+- On Windows, ``py.path.local``s which differ only in case now have the same
+  Python hash value. Previously, such paths were considered equal but had
+  different hashes, which is not allowed and breaks the assumptions made by
+  dicts, sets and other users of hashes.
+
 1.8.1 (2019-12-27)
 ==================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/MANIFEST.in new/py-1.9.0/MANIFEST.in
--- old/py-1.8.1/MANIFEST.in    2019-12-27 13:07:13.000000000 +0100
+++ new/py-1.9.0/MANIFEST.in    2020-06-25 13:26:03.000000000 +0200
@@ -5,6 +5,7 @@
 include LICENSE
 include conftest.py
 include tox.ini
+recursive-include py *.pyi
 graft doc
 graft testing
 global-exclude *.pyc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/PKG-INFO new/py-1.9.0/PKG-INFO
--- old/py-1.8.1/PKG-INFO       2019-12-27 13:07:30.000000000 +0100
+++ new/py-1.9.0/PKG-INFO       2020-06-25 13:26:20.000000000 +0200
@@ -1,8 +1,8 @@
 Metadata-Version: 1.2
 Name: py
-Version: 1.8.1
+Version: 1.9.0
 Summary: library with cross-python path, ini-parsing, io, code, log facilities
-Home-page: http://py.readthedocs.io/
+Home-page: https://py.readthedocs.io/
 Author: holger krekel, Ronny Pfannschmidt, Benjamin Peterson and others
 Author-email: pytest-...@python.org
 License: MIT license
@@ -59,7 +59,6 @@
 Classifier: Programming Language :: Python :: 2
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/appveyor.yml new/py-1.9.0/appveyor.yml
--- old/py-1.8.1/appveyor.yml   2019-12-27 13:07:13.000000000 +0100
+++ new/py-1.9.0/appveyor.yml   1970-01-01 01:00:00.000000000 +0100
@@ -1,32 +0,0 @@
-environment:
-  matrix:
-  # note: please use "tox --listenvs" to populate the build matrix below
-  - TOXENV: "py27-pytest29"
-  - TOXENV: "py27-pytest30"
-  - TOXENV: "py27-pytest31"
-  - TOXENV: "py34-pytest29"
-  - TOXENV: "py34-pytest30"
-  - TOXENV: "py34-pytest31"
-  - TOXENV: "py35-pytest29"
-  - TOXENV: "py35-pytest30"
-  - TOXENV: "py35-pytest31"
-  - TOXENV: "py36-pytest29"
-  - TOXENV: "py36-pytest30"
-  - TOXENV: "py36-pytest31"
-  - TOXENV: "py37-pytest30"
-  - TOXENV: "py37-pytest31"
-
-install:
-  - echo Installed Pythons
-  - dir c:\Python*
-
-  - C:\Python37\python -m pip install --upgrade --pre tox
-
-build: false  # Not a C# project, build stuff at the test step instead.
-
-test_script:
-  - C:\Python37\python -m tox
-
-# We don't deploy anything on tags with AppVeyor, we use Travis instead, so we
-# might as well save resources
-skip_tags: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/codecov.yml new/py-1.9.0/codecov.yml
--- old/py-1.8.1/codecov.yml    2019-12-27 13:07:13.000000000 +0100
+++ new/py-1.9.0/codecov.yml    2020-06-25 13:26:03.000000000 +0200
@@ -4,5 +4,4 @@
     patch: true
     changes: true
 
-comment:
-  layout: "diff"
+comment: off
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/doc/announce/release-0.9.2.txt 
new/py-1.9.0/doc/announce/release-0.9.2.txt
--- old/py-1.8.1/doc/announce/release-0.9.2.txt 2019-12-27 13:07:13.000000000 
+0100
+++ new/py-1.9.0/doc/announce/release-0.9.2.txt 2020-06-25 13:26:03.000000000 
+0200
@@ -16,7 +16,7 @@
 
 See here for more information:
 
-Pypi pages: http://pypi.python.org/pypi/py/
+Pypi pages: https://pypi.org/project/py/
 
 Download/Install:   http://codespeak.net/py/0.9.2/download.html
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/doc/announce/release-1.0.0.txt 
new/py-1.9.0/doc/announce/release-1.0.0.txt
--- old/py-1.8.1/doc/announce/release-1.0.0.txt 2019-12-27 13:07:13.000000000 
+0100
+++ new/py-1.9.0/doc/announce/release-1.0.0.txt 2020-06-25 13:26:03.000000000 
+0200
@@ -58,6 +58,6 @@
 .. _`default plugins`: http://codespeak.net/py/dist/test/plugin/index.html
 .. _`distributed testing`: http://codespeak.net/py/dist/test/dist.html
 .. _`elastic distributed execution`: http://codespeak.net/py/dist/execnet.html
-.. _`1.0.0 py lib release`: http://pypi.python.org/pypi/py
+.. _`1.0.0 py lib release`: https://pypi.org/project/py/
 .. _`oejskit`: http://codespeak.net/py/dist/test/plugin/oejskit.html
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/doc/announce/release-1.4.0.txt 
new/py-1.9.0/doc/announce/release-1.4.0.txt
--- old/py-1.8.1/doc/announce/release-1.4.0.txt 2019-12-27 13:07:13.000000000 
+0100
+++ new/py-1.9.0/doc/announce/release-1.4.0.txt 2020-06-25 13:26:03.000000000 
+0200
@@ -22,7 +22,7 @@
     http://pytest.org
    
 And "py.cleanup|py.lookup|py.countloc" etc. helpers are now part of
-the pycmd distribution, see http://pypi.python.org/pypi/pycmd
+the pycmd distribution, see https://pypi.org/project/pycmd/
 
 This makes "py-1.4.0" a simple library which does not install
 any command line utilities anymore.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/doc/announce/release-1.4.1.txt 
new/py-1.9.0/doc/announce/release-1.4.1.txt
--- old/py-1.8.1/doc/announce/release-1.4.1.txt 2019-12-27 13:07:13.000000000 
+0100
+++ new/py-1.9.0/doc/announce/release-1.4.1.txt 2020-06-25 13:26:03.000000000 
+0200
@@ -23,7 +23,7 @@
     http://pytest.org
    
 Also, the "py.cleanup|py.lookup|py.countloc" helpers are now part of
-the pycmd distribution, see http://pypi.python.org/pypi/pycmd
+the pycmd distribution, see https://pypi.org/project/pycmd/
 
 
 Changes between 1.4.0 and 1.4.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/doc/faq.txt new/py-1.9.0/doc/faq.txt
--- old/py-1.8.1/doc/faq.txt    2019-12-27 13:07:13.000000000 +0100
+++ new/py-1.9.0/doc/faq.txt    2020-06-25 13:26:03.000000000 +0200
@@ -41,9 +41,9 @@
 cycle so some of the newer features_ introduced with py.test-1.0
 and py.test-1.1 have no counterpart in nose_.
 
-.. _nose: http://somethingaboutorange.com/mrl/projects/nose/0.11.1/
+.. _nose: https://nose.readthedocs.io/
 .. _features: test/features.html
-.. _apipkg: http://pypi.python.org/pypi/apipkg
+.. _apipkg: https://pypi.org/project/apipkg/
 
 
 What's this "magic" with py.test?
@@ -112,7 +112,7 @@
 argument.  It helps to alleviate the de-coupling of function
 argument usage and creation.
 
-.. _`Convention over Configuration`: 
http://en.wikipedia.org/wiki/Convention_over_Configuration
+.. _`Convention over Configuration`: 
https://en.wikipedia.org/wiki/Convention_over_configuration
 
 Can I yield multiple values from a factory function?
 -----------------------------------------------------
@@ -134,7 +134,7 @@
 and implement the `parametrization scheme of your choice`_.
 
 .. _`pytest_generate_tests`: test/funcargs.html#parametrizing-tests
-.. _`parametrization scheme of your choice`: 
http://tetamap.wordpress.com/2009/05/13/parametrizing-python-tests-generalized/
+.. _`parametrization scheme of your choice`: 
https://holgerkrekel.net/2009/05/13/parametrizing-python-tests-generalized/
 
 
 py.test interaction with other packages
@@ -167,6 +167,4 @@
 
 .. _`directly use a checkout`: install.html#directly-use-a-checkout
 
-.. _`install distribute`: 
http://pypi.python.org/pypi/distribute#installation-instructions
-
-
+.. _`install distribute`: https://pypi.org/project/distribute/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/doc/install.txt new/py-1.9.0/doc/install.txt
--- old/py-1.8.1/doc/install.txt        2019-12-27 13:07:13.000000000 +0100
+++ new/py-1.9.0/doc/install.txt        2020-06-25 13:26:03.000000000 +0200
@@ -1,13 +1,13 @@
 
 .. _`py`:
-.. _`index page`: http://pypi.python.org/pypi/py/
+.. _`index page`: https://pypi.org/project/py/
 
 installation info in a nutshell
 ===================================================
 
 **PyPI name**: py_
 
-**Pythons**: CPython 2.7, 3.4, 3.5, 3.6, 3.7, PyPy-5.4
+**Pythons**: CPython 2.7, 3.5, 3.6, 3.7, PyPy-5.4
 
 **Operating systems**: Linux, Windows, OSX, Unix
 
@@ -15,7 +15,7 @@
 
 **Installers**: ``easy_install`` and ``pip``
 
-**hg repository**: https://bitbucket.org/hpk42/py
+**Code repository**: https://github.com/pytest-dev/py
 
 easy install or pip ``py``
 -----------------------------
@@ -39,16 +39,16 @@
 -----------------------------------------------
 
 To follow development or start experiments, checkout the
-complete code and documentation source with mercurial_::
+complete code and documentation source::
 
-    hg clone https://bitbucket.org/hpk42/py
+    git clone https://github.com/pytest-dev/py
 
-Development takes place on the 'trunk' branch.
+Development takes place on the 'master' branch.
 
 You can also go to the python package index and
 download and unpack a TAR file::
 
-    http://pypi.python.org/pypi/py/
+   https://pypi.org/project/py/
 
 activating a checkout with setuptools
 --------------------------------------------
@@ -63,7 +63,7 @@
 
 .. _`directly use a checkout`:
 
-.. _`setuptools`: http://pypi.python.org/pypi/setuptools
+.. _`setuptools`: https://pypi.org/project/setuptools/
 
 
 Mailing list and issue tracker
@@ -73,10 +73,10 @@
 
 - #pylib on irc.freenode.net IRC channel for random questions.
 
-- `bitbucket issue tracker`_ use this bitbucket issue tracker to report
+- `issue tracker`_ use the issue tracker to report
   bugs or request features.
 
-.. _`bitbucket issue tracker`: http://bitbucket.org/hpk42/py/issues/
+.. _`issue tracker`: https://github.com/pytest-dev/py/issues
 
 .. _codespeak: http://codespeak.net/
 .. _`py-dev`:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/doc/links.inc new/py-1.9.0/doc/links.inc
--- old/py-1.8.1/doc/links.inc  2019-12-27 13:07:13.000000000 +0100
+++ new/py-1.9.0/doc/links.inc  2020-06-25 13:26:03.000000000 +0200
@@ -1,16 +1,15 @@
 
 .. _`skipping plugin`: plugin/skipping.html
 .. _`funcargs mechanism`: funcargs.html
-.. _`doctest.py`: http://docs.python.org/library/doctest.html
+.. _`doctest.py`: https://docs.python.org/library/doctest.html
 .. _`xUnit style setup`: xunit_setup.html
 .. _`pytest_nose`: plugin/nose.html
 .. _`reStructured Text`: http://docutils.sourceforge.net
 .. _`Python debugger`: http://docs.python.org/lib/module-pdb.html
-.. _nose: http://somethingaboutorange.com/mrl/projects/nose/
-.. _pytest: http://pypi.python.org/pypi/pytest
-.. _mercurial: http://mercurial.selenic.com/wiki/
-.. _`setuptools`: http://pypi.python.org/pypi/setuptools
-.. _`distribute`: http://pypi.python.org/pypi/distribute
-.. _`pip`: http://pypi.python.org/pypi/pip
-.. _`virtualenv`: http://pypi.python.org/pypi/virtualenv
+.. _nose: https://nose.readthedocs.io/
+.. _pytest: https://pypi.org/project/pytest/
+.. _`setuptools`: https://pypi.org/project/setuptools/
+.. _`distribute`: https://pypi.org/project/distribute/
+.. _`pip`: https://pypi.org/project/pip/
+.. _`virtualenv`: https://pypi.org/project/virtualenv/
 .. _hudson: http://hudson-ci.org/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/doc/path.txt new/py-1.9.0/doc/path.txt
--- old/py-1.8.1/doc/path.txt   2019-12-27 13:07:13.000000000 +0100
+++ new/py-1.9.0/doc/path.txt   2020-06-25 13:26:03.000000000 +0200
@@ -5,7 +5,7 @@
     **Note**: The 'py' library is in "maintenance mode" and so is not
     recommended for new projects. Please check out
     `pathlib <https://docs.python.org/3/library/pathlib.html>`_ or
-    `pathlib2 <https://pypi.python.org/pypi/pathlib2/>`_ for path
+    `pathlib2 <https://pypi.org/project/pathlib2/>`_ for path
     operations.
 
 The 'py' lib provides a uniform high-level api to deal with filesystems
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/py/__init__.pyi new/py-1.9.0/py/__init__.pyi
--- old/py-1.8.1/py/__init__.pyi        1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.9.0/py/__init__.pyi        2020-06-25 13:26:03.000000000 +0200
@@ -0,0 +1,20 @@
+from typing import Any
+
+# py allows to use e.g. py.path.local even without importing py.path.
+# So import implicitly.
+from . import error
+from . import iniconfig
+from . import path
+from . import io
+from . import xml
+
+__version__: str
+
+# Untyped modules below here.
+std: Any
+test: Any
+process: Any
+apipkg: Any
+code: Any
+builtin: Any
+log: Any
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/py/_io/capture.py 
new/py-1.9.0/py/_io/capture.py
--- old/py-1.8.1/py/_io/capture.py      2019-12-27 13:07:13.000000000 +0100
+++ new/py-1.9.0/py/_io/capture.py      2020-06-25 13:26:03.000000000 +0200
@@ -13,7 +13,7 @@
         def write(self, data):
             if not isinstance(data, unicode):
                 data = unicode(data, getattr(self, '_encoding', 'UTF-8'), 
'replace')
-            StringIO.write(self, data)
+            return StringIO.write(self, data)
 else:
     TextIO = StringIO
 
@@ -24,7 +24,7 @@
         def write(self, data):
             if isinstance(data, unicode):
                 raise TypeError("not a byte value: %r" %(data,))
-            StringIO.write(self, data)
+            return StringIO.write(self, data)
 
 patchsysdict = {0: 'stdin', 1: 'stdout', 2: 'stderr'}
 
@@ -266,7 +266,7 @@
             err = self._readsnapshot(self.err.tmpfile)
         else:
             err = ""
-        return [out, err]
+        return out, err
 
     def _readsnapshot(self, f):
         f.seek(0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/py/_path/local.py 
new/py-1.9.0/py/_path/local.py
--- old/py-1.8.1/py/_path/local.py      2019-12-27 13:07:13.000000000 +0100
+++ new/py-1.9.0/py/_path/local.py      2020-06-25 13:26:03.000000000 +0200
@@ -163,7 +163,10 @@
             self.strpath = abspath(path)
 
     def __hash__(self):
-        return hash(self.strpath)
+        s = self.strpath
+        if iswin32:
+            s = s.lower()
+        return hash(s)
 
     def __eq__(self, other):
         s1 = fspath(self)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/py/_std.py new/py-1.9.0/py/_std.py
--- old/py-1.8.1/py/_std.py     2019-12-27 13:07:13.000000000 +0100
+++ new/py-1.9.0/py/_std.py     2020-06-25 13:26:03.000000000 +0200
@@ -15,8 +15,9 @@
         self.__dict__ = sys.modules
 
     def __getattr__(self, name):
-        warnings.warn("py.std is deprecated, plase import %s directly" % name,
-                      category=PyStdIsDeprecatedWarning)
+        warnings.warn("py.std is deprecated, please import %s directly" % name,
+                      category=PyStdIsDeprecatedWarning,
+                      stacklevel=2)
         try:
             m = __import__(name)
         except ImportError:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/py/_version.py new/py-1.9.0/py/_version.py
--- old/py-1.8.1/py/_version.py 2019-12-27 13:07:30.000000000 +0100
+++ new/py-1.9.0/py/_version.py 2020-06-25 13:26:20.000000000 +0200
@@ -1,4 +1,4 @@
 # coding: utf-8
 # file generated by setuptools_scm
 # don't change, don't track in version control
-version = '1.8.1'
+version = '1.9.0'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/py/error.pyi new/py-1.9.0/py/error.pyi
--- old/py-1.8.1/py/error.pyi   1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.9.0/py/error.pyi   2020-06-25 13:26:03.000000000 +0200
@@ -0,0 +1,129 @@
+from typing import Any, Callable, TypeVar
+
+_T = TypeVar('_T')
+
+def checked_call(func: Callable[..., _T], *args: Any, **kwargs: Any) -> _T: ...
+class Error(EnvironmentError): ...
+class EPERM(Error): ...
+class ENOENT(Error): ...
+class ESRCH(Error): ...
+class EINTR(Error): ...
+class EIO(Error): ...
+class ENXIO(Error): ...
+class E2BIG(Error): ...
+class ENOEXEC(Error): ...
+class EBADF(Error): ...
+class ECHILD(Error): ...
+class EAGAIN(Error): ...
+class ENOMEM(Error): ...
+class EACCES(Error): ...
+class EFAULT(Error): ...
+class ENOTBLK(Error): ...
+class EBUSY(Error): ...
+class EEXIST(Error): ...
+class EXDEV(Error): ...
+class ENODEV(Error): ...
+class ENOTDIR(Error): ...
+class EISDIR(Error): ...
+class EINVAL(Error): ...
+class ENFILE(Error): ...
+class EMFILE(Error): ...
+class ENOTTY(Error): ...
+class ETXTBSY(Error): ...
+class EFBIG(Error): ...
+class ENOSPC(Error): ...
+class ESPIPE(Error): ...
+class EROFS(Error): ...
+class EMLINK(Error): ...
+class EPIPE(Error): ...
+class EDOM(Error): ...
+class ERANGE(Error): ...
+class EDEADLCK(Error): ...
+class ENAMETOOLONG(Error): ...
+class ENOLCK(Error): ...
+class ENOSYS(Error): ...
+class ENOTEMPTY(Error): ...
+class ELOOP(Error): ...
+class EWOULDBLOCK(Error): ...
+class ENOMSG(Error): ...
+class EIDRM(Error): ...
+class ECHRNG(Error): ...
+class EL2NSYNC(Error): ...
+class EL3HLT(Error): ...
+class EL3RST(Error): ...
+class ELNRNG(Error): ...
+class EUNATCH(Error): ...
+class ENOCSI(Error): ...
+class EL2HLT(Error): ...
+class EBADE(Error): ...
+class EBADR(Error): ...
+class EXFULL(Error): ...
+class ENOANO(Error): ...
+class EBADRQC(Error): ...
+class EBADSLT(Error): ...
+class EDEADLOCK(Error): ...
+class EBFONT(Error): ...
+class ENOSTR(Error): ...
+class ENODATA(Error): ...
+class ETIME(Error): ...
+class ENOSR(Error): ...
+class ENONET(Error): ...
+class ENOPKG(Error): ...
+class EREMOTE(Error): ...
+class ENOLINK(Error): ...
+class EADV(Error): ...
+class ESRMNT(Error): ...
+class ECOMM(Error): ...
+class EPROTO(Error): ...
+class EMULTIHOP(Error): ...
+class EDOTDOT(Error): ...
+class EBADMSG(Error): ...
+class EOVERFLOW(Error): ...
+class ENOTUNIQ(Error): ...
+class EBADFD(Error): ...
+class EREMCHG(Error): ...
+class ELIBACC(Error): ...
+class ELIBBAD(Error): ...
+class ELIBSCN(Error): ...
+class ELIBMAX(Error): ...
+class ELIBEXEC(Error): ...
+class EILSEQ(Error): ...
+class ERESTART(Error): ...
+class ESTRPIPE(Error): ...
+class EUSERS(Error): ...
+class ENOTSOCK(Error): ...
+class EDESTADDRREQ(Error): ...
+class EMSGSIZE(Error): ...
+class EPROTOTYPE(Error): ...
+class ENOPROTOOPT(Error): ...
+class EPROTONOSUPPORT(Error): ...
+class ESOCKTNOSUPPORT(Error): ...
+class ENOTSUP(Error): ...
+class EOPNOTSUPP(Error): ...
+class EPFNOSUPPORT(Error): ...
+class EAFNOSUPPORT(Error): ...
+class EADDRINUSE(Error): ...
+class EADDRNOTAVAIL(Error): ...
+class ENETDOWN(Error): ...
+class ENETUNREACH(Error): ...
+class ENETRESET(Error): ...
+class ECONNABORTED(Error): ...
+class ECONNRESET(Error): ...
+class ENOBUFS(Error): ...
+class EISCONN(Error): ...
+class ENOTCONN(Error): ...
+class ESHUTDOWN(Error): ...
+class ETOOMANYREFS(Error): ...
+class ETIMEDOUT(Error): ...
+class ECONNREFUSED(Error): ...
+class EHOSTDOWN(Error): ...
+class EHOSTUNREACH(Error): ...
+class EALREADY(Error): ...
+class EINPROGRESS(Error): ...
+class ESTALE(Error): ...
+class EUCLEAN(Error): ...
+class ENOTNAM(Error): ...
+class ENAVAIL(Error): ...
+class EISNAM(Error): ...
+class EREMOTEIO(Error): ...
+class EDQUOT(Error): ...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/py/iniconfig.pyi 
new/py-1.9.0/py/iniconfig.pyi
--- old/py-1.8.1/py/iniconfig.pyi       1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.9.0/py/iniconfig.pyi       2020-06-25 13:26:03.000000000 +0200
@@ -0,0 +1,31 @@
+from typing import Callable, Iterator, Mapping, Optional, Tuple, TypeVar, Union
+from typing_extensions import Final
+
+_D = TypeVar('_D')
+_T = TypeVar('_T')
+
+class ParseError(Exception):
+    path: Final[str]
+    lineno: Final[int]
+    msg: Final[str]
+    def __init__(self, path: str, lineno: int, msg: str) -> None: ...
+
+class _SectionWrapper:
+    config: Final[IniConfig]
+    name: Final[str]
+    def __init__(self, config: IniConfig, name: str) -> None: ...
+    def __getitem__(self, key: str) -> Optional[str]: ...
+    def __iter__(self) -> Iterator[str]: ...
+    def get(self, key: str, default: _D = ..., convert: 
Callable[[Optional[str]], _T] = ...) -> Union[_T, _D]: ...
+    def items(self) -> Iterator[Tuple[str, Optional[str]]]: ...
+    def lineof(self, name: str) -> Optional[int]: ...
+
+class IniConfig:
+    path: Final[str]
+    sections: Final[Mapping[str, Mapping[str, Optional[str]]]]
+    def __init__(self, path: str, data: Optional[str] = None): ...
+    def __contains__(self, arg: str) -> bool: ...
+    def __getitem__(self, name: str) -> _SectionWrapper: ...
+    def __iter__(self) -> Iterator[_SectionWrapper]: ...
+    def get(self, section: str, name: str, default: _D = ..., convert: 
Callable[[Optional[str]], _T] = ...) -> Union[_T, _D]: ...
+    def lineof(self, section: str, name: Optional[str] = ...) -> 
Optional[int]: ...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/py/io.pyi new/py-1.9.0/py/io.pyi
--- old/py-1.8.1/py/io.pyi      1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.9.0/py/io.pyi      2020-06-25 13:26:03.000000000 +0200
@@ -0,0 +1,130 @@
+from io import StringIO as TextIO
+from io import BytesIO as BytesIO
+from typing import Any, AnyStr, Callable, Generic, IO, List, Optional, Text, 
Tuple, TypeVar, Union, overload
+from typing_extensions import Final
+import sys
+
+_T = TypeVar("_T")
+
+class FDCapture(Generic[AnyStr]):
+    def __init__(self, targetfd: int, tmpfile: Optional[IO[AnyStr]] = ..., 
now: bool = ..., patchsys: bool = ...) -> None: ...
+    def start(self) -> None: ...
+    def done(self) -> IO[AnyStr]: ...
+    def writeorg(self, data: AnyStr) -> None: ...
+
+class StdCaptureFD:
+    def __init__(
+        self,
+        out: Union[bool, IO[str]] = ...,
+        err: Union[bool, IO[str]] = ...,
+        mixed: bool = ...,
+        in_: bool = ...,
+        patchsys: bool = ...,
+        now: bool = ...,
+    ) -> None: ...
+    @classmethod
+    def call(cls, func: Callable[..., _T], *args: Any, **kwargs: Any) -> 
Tuple[_T, str, str]: ...
+    def reset(self) -> Tuple[str, str]: ...
+    def suspend(self) -> Tuple[str, str]: ...
+    def startall(self) -> None: ...
+    def resume(self) -> None: ...
+    def done(self, save: bool = ...) -> Tuple[IO[str], IO[str]]: ...
+    def readouterr(self) -> Tuple[str, str]: ...
+
+class StdCapture:
+    def __init__(
+        self,
+        out: Union[bool, IO[str]] = ...,
+        err: Union[bool, IO[str]] = ...,
+        in_: bool = ...,
+        mixed: bool = ...,
+        now: bool = ...,
+    ) -> None: ...
+    @classmethod
+    def call(cls, func: Callable[..., _T], *args: Any, **kwargs: Any) -> 
Tuple[_T, str, str]: ...
+    def reset(self) -> Tuple[str, str]: ...
+    def suspend(self) -> Tuple[str, str]: ...
+    def startall(self) -> None: ...
+    def resume(self) -> None: ...
+    def done(self, save: bool = ...) -> Tuple[IO[str], IO[str]]: ...
+    def readouterr(self) -> Tuple[IO[str], IO[str]]: ...
+
+# XXX: The type here is not exactly right. If f is IO[bytes] and
+# encoding is not None, returns some weird hybrid, not exactly IO[bytes].
+def dupfile(
+    f: IO[AnyStr],
+    mode: Optional[str] = ...,
+    buffering: int = ...,
+    raising: bool = ...,
+    encoding: Optional[str] = ...,
+) -> IO[AnyStr]: ...
+def get_terminal_width() -> int: ...
+def ansi_print(
+    text: Union[str, Text],
+    esc: Union[Union[str, Text], Tuple[Union[str, Text], ...]],
+    file: Optional[IO[Any]] = ...,
+    newline: bool = ...,
+    flush: bool = ...,
+) -> None: ...
+def saferepr(obj, maxsize: int = ...) -> str: ...
+
+class TerminalWriter:
+    stringio: TextIO
+    encoding: Final[str]
+    hasmarkup: bool
+    def __init__(self, file: Optional[IO[str]] = ..., stringio: bool = ..., 
encoding: Optional[str] = ...) -> None: ...
+    @property
+    def fullwidth(self) -> int: ...
+    @fullwidth.setter
+    def fullwidth(self, value: int) -> None: ...
+    @property
+    def chars_on_current_line(self) -> int: ...
+    @property
+    def width_of_current_line(self) -> int: ...
+    def markup(
+        self,
+        text: str,
+        *,
+        black: int = ..., red: int = ..., green: int = ..., yellow: int = ..., 
blue: int = ..., purple: int = ...,
+        cyan: int = ..., white: int = ..., Black: int = ..., Red: int = ..., 
Green: int = ..., Yellow: int = ...,
+        Blue: int = ..., Purple: int = ..., Cyan: int = ..., White: int = ..., 
bold: int = ..., light: int = ...,
+        blink: int = ..., invert: int = ...,
+    ) -> str: ...
+    def sep(
+        self,
+        sepchar: str,
+        title: Optional[str] = ...,
+        fullwidth: Optional[int] = ...,
+        *,
+        black: int = ..., red: int = ..., green: int = ..., yellow: int = ..., 
blue: int = ..., purple: int = ...,
+        cyan: int = ..., white: int = ..., Black: int = ..., Red: int = ..., 
Green: int = ..., Yellow: int = ...,
+        Blue: int = ..., Purple: int = ..., Cyan: int = ..., White: int = ..., 
bold: int = ..., light: int = ...,
+        blink: int = ..., invert: int = ...,
+    ) -> None: ...
+    def write(
+        self,
+        msg: str,
+        *,
+        black: int = ..., red: int = ..., green: int = ..., yellow: int = ..., 
blue: int = ..., purple: int = ...,
+        cyan: int = ..., white: int = ..., Black: int = ..., Red: int = ..., 
Green: int = ..., Yellow: int = ...,
+        Blue: int = ..., Purple: int = ..., Cyan: int = ..., White: int = ..., 
bold: int = ..., light: int = ...,
+        blink: int = ..., invert: int = ...,
+    ) -> None: ...
+    def line(
+        self,
+        s: str = ...,
+        *,
+        black: int = ..., red: int = ..., green: int = ..., yellow: int = ..., 
blue: int = ..., purple: int = ...,
+        cyan: int = ..., white: int = ..., Black: int = ..., Red: int = ..., 
Green: int = ..., Yellow: int = ...,
+        Blue: int = ..., Purple: int = ..., Cyan: int = ..., White: int = ..., 
bold: int = ..., light: int = ...,
+        blink: int = ..., invert: int = ...,
+    ) -> None: ...
+    def reline(
+        self,
+        line: str,
+        *,
+        black: int = ..., red: int = ..., green: int = ..., yellow: int = ..., 
blue: int = ..., purple: int = ...,
+        cyan: int = ..., white: int = ..., Black: int = ..., Red: int = ..., 
Green: int = ..., Yellow: int = ...,
+        Blue: int = ..., Purple: int = ..., Cyan: int = ..., White: int = ..., 
bold: int = ..., light: int = ...,
+        blink: int = ..., invert: int = ...,
+    ) -> None: ...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/py/path.pyi new/py-1.9.0/py/path.pyi
--- old/py-1.8.1/py/path.pyi    1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.9.0/py/path.pyi    2020-06-25 13:26:03.000000000 +0200
@@ -0,0 +1,197 @@
+from typing import Any, AnyStr, Callable, ContextManager, Generic, IO, 
Iterable, Iterator, List, Optional, Text, Type, Union
+from typing_extensions import Final, Literal
+import os
+import sys
+
+class _FNMatcher(Generic[AnyStr]):
+    pattern: AnyStr = ...
+    def __init__(self, pattern: AnyStr) -> None: ...
+    def __call__(self, path: local) -> bool: ...
+
+class _Stat:
+    path: Final[local] = ...
+    mode: Final[int]
+    ino: Final[int]
+    dev: Final[int]
+    nlink: Final[int]
+    uid: Final[int]
+    gid: Final[int]
+    size: Final[int]
+    atime: Final[float]
+    mtime: Final[float]
+    ctime: Final[float]
+    atime_ns: Final[int]
+    mtime_ns: Final[int]
+    ctime_ns: Final[int]
+    if sys.version_info >= (3, 8) and sys.platform == "win32":
+        reparse_tag: Final[int]
+    blocks: Final[int]
+    blksize: Final[int]
+    rdev: Final[int]
+    flags: Final[int]
+    gen: Final[int]
+    birthtime: Final[int]
+    rsize: Final[int]
+    creator: Final[int]
+    type: Final[int]
+    if sys.platform != 'win32':
+        @property
+        def owner(self) -> str: ...
+        @property
+        def group(self) -> str: ...
+    def isdir(self) -> bool: ...
+    def isfile(self) -> bool: ...
+    def islink(self) -> bool: ...
+
+
+if sys.version_info >= (3, 6):
+    _PathLike = os.PathLike
+else:
+    class _PathLike(Generic[AnyStr]):
+        def __fspath__(self) -> AnyStr: ...
+_PathType = Union[bytes, Text, _PathLike[str], _PathLike[bytes], local]
+
+class local(_PathLike[str]):
+    class ImportMismatchError(ImportError): ...
+
+    sep: Final[str]
+    strpath: Final[str]
+
+    def __init__(self, path: _PathType = ..., expanduser: bool = ...) -> None: 
...
+    def __hash__(self) -> int: ...
+    def __eq__(self, other: object) -> bool: ...
+    def __ne__(self, other: object) -> bool: ...
+    def __lt__(self, other: object) -> bool: ...
+    def __gt__(self, other: object) -> bool: ...
+    def __add__(self, other: object) -> local: ...
+    def __cmp__(self, other: object) -> int: ...
+    def __div__(self, other: _PathType) -> local: ...
+    def __truediv__(self, other: _PathType) -> local: ...
+    def __fspath__(self) -> str: ...
+
+    @classmethod
+    def get_temproot(cls) -> local: ...
+    @classmethod
+    def make_numbered_dir(
+        cls,
+        prefix: str = ...,
+        rootdir: Optional[local] = ...,
+        keep: Optional[int] = ...,
+        lock_timeout: int = ...,
+    ) -> local: ...
+    @classmethod
+    def mkdtemp(cls, rootdir: Optional[local] = ...) -> local: ...
+    @classmethod
+    def sysfind(
+        cls,
+        name: _PathType,
+        checker: Optional[Callable[[local], bool]] = ...,
+        paths: Optional[Iterable[_PathType]] = ...,
+    ) -> Optional[local]: ...
+
+    @property
+    def basename(self) -> str: ...
+    @property
+    def dirname(self) -> str: ...
+    @property
+    def purebasename(self) -> str: ...
+    @property
+    def ext(self) -> str: ...
+
+    def as_cwd(self) -> ContextManager[Optional[local]]: ...
+    def atime(self) -> float: ...
+    def bestrelpath(self, dest: local) -> str: ...
+    def chdir(self) -> local: ...
+    def check(
+        self,
+        *,
+        basename: int = ..., notbasename: int = ...,
+        basestarts: int = ..., notbasestarts: int = ...,
+        dir: int = ..., notdir: int = ...,
+        dotfile: int = ..., notdotfile: int = ...,
+        endswith: int = ..., notendswith: int = ...,
+        exists: int = ..., notexists: int = ...,
+        ext: int = ..., notext: int = ...,
+        file: int = ..., notfile: int = ...,
+        fnmatch: int = ..., notfnmatch: int = ...,
+        link: int = ..., notlink: int = ...,
+        relto: int = ..., notrelto: int = ...,
+     ) -> bool: ...
+    def chmod(self, mode: int, rec: Union[int, str, Text, Callable[[local], 
bool]] = ...) -> None: ...
+    if sys.platform != 'win32':
+        def chown(self, user: Union[int, str], group: Union[int, str], rec: 
int = ...) -> None: ...
+    def common(self, other: local) -> Optional[local]: ...
+    def computehash(self, hashtype: str = ..., chunksize: int = ...) -> str: 
...
+    def copy(self, target: local, mode: bool = ..., stat: bool = ...) -> None: 
...
+    def dirpath(self, *args: _PathType, abs: int = ...) -> local: ...
+    def dump(self, obj: Any, bin: Optional[int] = ...) -> None: ...
+    def ensure(self, *args: _PathType, dir: int = ...) -> local: ...
+    def ensure_dir(self, *args: _PathType) -> local: ...
+    def exists(self) -> bool: ...
+    def fnmatch(self, pattern: str): _FNMatcher
+    def isdir(self) -> bool: ...
+    def isfile(self) -> bool: ...
+    def islink(self) -> bool: ...
+    def join(self, *args: _PathType, abs: int = ...) -> local: ...
+    def listdir(
+        self,
+        fil: Optional[Union[str, Text, Callable[[local], bool]]] = ...,
+        sort: Optional[bool] = ...,
+    ) -> List[local]: ...
+    def load(self) -> Any: ...
+    def lstat(self) -> _Stat: ...
+    def mkdir(self, *args: _PathType) -> local: ...
+    if sys.platform != 'win32':
+        def mklinkto(self, oldname: Union[str, local]) -> None: ...
+        def mksymlinkto(self, value: local, absolute: int = ...) -> None: ...
+    def move(self, target: local) -> None: ...
+    def mtime(self) -> float: ...
+    def new(
+        self,
+        *,
+        drive: str = ...,
+        dirname: str = ...,
+        basename: str = ...,
+        purebasename: str = ...,
+        ext: str = ...,
+    ) -> local: ...
+    def open(self, mode: str = ..., ensure: bool = ..., encoding: 
Optional[str] = ...) -> IO[Any]: ...
+    def parts(self, reverse: bool = ...) -> List[local]: ...
+    def pyimport(
+        self,
+        modname: Optional[str] = ...,
+        ensuresyspath: Union[bool, Literal["append", "importlib"]] = ...,
+    ) -> Any: ...
+    def pypkgpath(self) -> Optional[local]: ...
+    def read(self, mode: str = ...) -> Union[Text, bytes]: ...
+    def read_binary(self) -> bytes: ...
+    def read_text(self, encoding: str) -> Text: ...
+    def readlines(self, cr: int = ...) -> List[str]: ...
+    if sys.platform != 'win32':
+        def readlink(self) -> str: ...
+    def realpath(self) -> local: ...
+    def relto(self, relpath: Union[str, local]) -> str: ...
+    def remove(self, rec: int = ..., ignore_errors: bool = ...) -> None: ...
+    def rename(self, target: _PathType) -> None: ...
+    def samefile(self, other: _PathType) -> bool: ...
+    def setmtime(self, mtime: Optional[float] = ...) -> None: ...
+    def size(self) -> int: ...
+    def stat(self, raising: bool = ...) -> _Stat: ...
+    def sysexec(self, *argv: Any, **popen_opts: Any) -> Text: ...
+    def visit(
+        self,
+        fil: Optional[Union[str, Text, Callable[[local], bool]]] = ...,
+        rec: Optional[Union[Literal[1, True], str, Text, Callable[[local], 
bool]]] = ...,
+        ignore: Type[Exception] = ...,
+        bf: bool = ...,
+        sort: bool = ...,
+    ) -> Iterator[local]: ...
+    def write(self, data: Any, mode: str = ..., ensure: bool = ...) -> None: 
...
+    def write_binary(self, data: bytes, ensure: bool = ...) -> None: ...
+    def write_text(self, data: Union[str, Text], encoding: str, ensure: bool = 
...) -> None: ...
+
+
+# Untyped types below here.
+svnwc: Any
+svnurl: Any
+SvnAuth: Any
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/py/xml.pyi new/py-1.9.0/py/xml.pyi
--- old/py-1.8.1/py/xml.pyi     1970-01-01 01:00:00.000000000 +0100
+++ new/py-1.9.0/py/xml.pyi     2020-06-25 13:26:03.000000000 +0200
@@ -0,0 +1,25 @@
+from typing import ClassVar, Generic, Iterable, Text, Type, Union
+from typing_extensions import Final
+
+class raw:
+    uniobj: Final[Text]
+    def __init__(self, uniobj: Text) -> None: ...
+
+class _NamespaceMetaclass(type):
+    def __getattr__(self, name: str) -> Type[Tag]: ...
+
+class Namespace(metaclass=_NamespaceMetaclass): ...
+
+class Tag(list):
+    class Attr:
+        def __getattr__(self, attr: str) -> Text: ...
+    attr: Final[Attr]
+    def __init__(self, *args: Union[Text, raw, Tag, Iterable[Tag]], **kwargs: 
Union[Text, raw]) -> None: ...
+    def unicode(self, indent: int = ...) -> Text: ...
+
+class html(Namespace):
+    class Style:
+        def __init__(self, **kw: Union[str, Text]) -> None: ...
+    style: ClassVar[Style]
+
+def escape(ustring: Union[str, Text]) -> Text: ...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/py.egg-info/PKG-INFO 
new/py-1.9.0/py.egg-info/PKG-INFO
--- old/py-1.8.1/py.egg-info/PKG-INFO   2019-12-27 13:07:30.000000000 +0100
+++ new/py-1.9.0/py.egg-info/PKG-INFO   2020-06-25 13:26:20.000000000 +0200
@@ -1,8 +1,8 @@
 Metadata-Version: 1.2
 Name: py
-Version: 1.8.1
+Version: 1.9.0
 Summary: library with cross-python path, ini-parsing, io, code, log facilities
-Home-page: http://py.readthedocs.io/
+Home-page: https://py.readthedocs.io/
 Author: holger krekel, Ronny Pfannschmidt, Benjamin Peterson and others
 Author-email: pytest-...@python.org
 License: MIT license
@@ -59,7 +59,6 @@
 Classifier: Programming Language :: Python :: 2
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/py.egg-info/SOURCES.txt 
new/py-1.9.0/py.egg-info/SOURCES.txt
--- old/py-1.8.1/py.egg-info/SOURCES.txt        2019-12-27 13:07:30.000000000 
+0100
+++ new/py-1.9.0/py.egg-info/SOURCES.txt        2020-06-25 13:26:20.000000000 
+0200
@@ -1,3 +1,5 @@
+.appveyor.yml
+.flake8
 .gitattributes
 .gitignore
 .travis.yml
@@ -7,7 +9,6 @@
 LICENSE
 MANIFEST.in
 README.rst
-appveyor.yml
 codecov.yml
 conftest.py
 setup.cfg
@@ -52,13 +53,20 @@
 doc/example/genxml.py
 doc/img/pylib.png
 py/__init__.py
+py/__init__.pyi
 py/__metainfo.py
 py/_builtin.py
 py/_error.py
 py/_std.py
 py/_version.py
 py/_xmlgen.py
+py/error.pyi
+py/iniconfig.pyi
+py/io.pyi
+py/path.pyi
+py/py.typed
 py/test.py
+py/xml.pyi
 py.egg-info/PKG-INFO
 py.egg-info/SOURCES.txt
 py.egg-info/dependency_links.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/setup.py new/py-1.9.0/setup.py
--- old/py-1.8.1/setup.py       2019-12-27 13:07:13.000000000 +0100
+++ new/py-1.9.0/setup.py       2020-06-25 13:26:03.000000000 +0200
@@ -8,7 +8,7 @@
         long_description=open('README.rst').read(),
         use_scm_version={"write_to": "py/_version.py"},
         setup_requires=["setuptools-scm"],
-        url='http://py.readthedocs.io/',
+        url='https://py.readthedocs.io/',
         license='MIT license',
         platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
         python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*',
@@ -27,7 +27,6 @@
                      'Programming Language :: Python :: 2',
                      'Programming Language :: Python :: 2.7',
                      'Programming Language :: Python :: 3',
-                     'Programming Language :: Python :: 3.4',
                      'Programming Language :: Python :: 3.5',
                      'Programming Language :: Python :: 3.6',
                      'Programming Language :: Python :: 3.7',
@@ -35,7 +34,11 @@
                      'Programming Language :: Python :: Implementation :: 
PyPy',
                     ],
         packages=find_packages(exclude=['tasks', 'testing']),
+        include_package_data=True,
         zip_safe=False,
+        package_data={
+            "": ["py.typed"],
+        },
     )
 
 if __name__ == '__main__':
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/testing/path/test_local.py 
new/py-1.9.0/testing/path/test_local.py
--- old/py-1.8.1/testing/path/test_local.py     2019-12-27 13:07:13.000000000 
+0100
+++ new/py-1.9.0/testing/path/test_local.py     2020-06-25 13:26:03.000000000 
+0200
@@ -164,6 +164,17 @@
         p = py.path.local("~", expanduser=True)
         assert p == os.path.expanduser("~")
 
+    @pytest.mark.skipif(
+        not sys.platform.startswith("win32"), reason="case insensitive only on 
windows"
+    )
+    def test_eq_hash_are_case_insensitive_on_windows(self):
+        a = py.path.local("/some/path")
+        b = py.path.local("/some/PATH")
+        assert a == b
+        assert hash(a) == hash(b)
+        assert a in {b}
+        assert a in {b: 'b'}
+
     def test_eq_with_strings(self, path1):
         path1 = path1.join('sampledir')
         path2 = str(path1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-1.8.1/tox.ini new/py-1.9.0/tox.ini
--- old/py-1.8.1/tox.ini        2019-12-27 13:07:13.000000000 +0100
+++ new/py-1.9.0/tox.ini        2020-06-25 13:26:03.000000000 +0200
@@ -1,6 +1,6 @@
 [tox]
 # Skip py37-pytest29 as such a combination does not work (#192)
-envlist=py{27,34,35,36}-pytest{29,30,31},py37-pytest{30,31}
+envlist=py{27,35,36}-pytest{29,30,31},py37-pytest{30,31}
 
 [testenv]
 commands=


Reply via email to