Hello community,

here is the log from the commit of package python-lazy-object-proxy for 
openSUSE:Factory checked in at 2018-08-03 12:29:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-lazy-object-proxy (Old)
 and      /work/SRC/openSUSE:Factory/.python-lazy-object-proxy.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-lazy-object-proxy"

Fri Aug  3 12:29:18 2018 rev:3 rq:626578 version:1.3.1

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-lazy-object-proxy/python-lazy-object-proxy.changes
        2017-05-06 18:31:29.359667330 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-lazy-object-proxy.new/python-lazy-object-proxy.changes
   2018-08-03 12:29:25.554871880 +0200
@@ -1,0 +2,8 @@
+Mon Jul 30 15:55:47 UTC 2018 - [email protected]
+
+- Update to v1.3.1
+  + Fix broken release (sdist had a broken MANIFEST.in).
+- Update to v1.3.0
+  + Speed up arithmetic operations involving cext.Proxy subclasses.
+
+-------------------------------------------------------------------

Old:
----
  lazy-object-proxy-1.2.2.tar.gz

New:
----
  lazy-object-proxy-1.3.1.tar.gz

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

Other differences:
------------------
++++++ python-lazy-object-proxy.spec ++++++
--- /var/tmp/diff_new_pack.R765Bi/_old  2018-08-03 12:29:26.258872914 +0200
+++ /var/tmp/diff_new_pack.R765Bi/_new  2018-08-03 12:29:26.258872914 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-lazy-object-proxy
 #
-# 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
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define oldpython python
 Name:           python-lazy-object-proxy
-Version:        1.2.2
+Version:        1.3.1
 Release:        0
 Summary:        Rebuild a new abstract syntax tree from Python's ast
 License:        BSD-2-Clause
@@ -58,7 +58,8 @@
 
 %files %{python_files}
 %defattr(-,root,root,-)
-%doc AUTHORS.rst CHANGELOG.rst CONTRIBUTING.rst LICENSE README.rst docs
+%doc AUTHORS.rst CHANGELOG.rst CONTRIBUTING.rst README.rst docs
+%license LICENSE
 %{python_sitearch}/*
 
 %changelog

++++++ lazy-object-proxy-1.2.2.tar.gz -> lazy-object-proxy-1.3.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/.bumpversion.cfg 
new/lazy-object-proxy-1.3.1/.bumpversion.cfg
--- old/lazy-object-proxy-1.2.2/.bumpversion.cfg        2016-04-14 
10:56:01.000000000 +0200
+++ new/lazy-object-proxy-1.3.1/.bumpversion.cfg        2017-05-05 
14:11:12.000000000 +0200
@@ -1,10 +1,12 @@
 [bumpversion]
-current_version = 1.2.2
+current_version = 1.3.1
 commit = True
 tag = True
 
 [bumpversion:file:setup.py]
 
+[bumpversion:file:README.rst]
+
 [bumpversion:file:docs/conf.py]
 
 [bumpversion:file:src/lazy_object_proxy/__init__.py]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/.cookiecutterrc 
new/lazy-object-proxy-1.3.1/.cookiecutterrc
--- old/lazy-object-proxy-1.2.2/.cookiecutterrc 2016-04-14 03:06:12.000000000 
+0200
+++ new/lazy-object-proxy-1.3.1/.cookiecutterrc 2017-05-03 15:05:21.000000000 
+0200
@@ -9,7 +9,7 @@
     codeclimate: 'yes'
     codecov: 'yes'
     command_line_interface: 'no'
-    command_line_interface_bin_name: lazy-object-proxy
+    command_line_interface_bin_name: '-'
     coveralls: 'yes'
     distribution_name: lazy-object-proxy
     email: [email protected]
@@ -31,4 +31,4 @@
     travis: 'yes'
     version: 1.2.2
     website: https://blog.ionelmc.ro
-    year: 2014-2016
+    year: 2014-2017
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/.coveragerc 
new/lazy-object-proxy-1.3.1/.coveragerc
--- old/lazy-object-proxy-1.2.2/.coveragerc     2016-04-14 03:02:32.000000000 
+0200
+++ new/lazy-object-proxy-1.3.1/.coveragerc     2017-05-03 15:05:20.000000000 
+0200
@@ -2,8 +2,10 @@
 source = src
 
 [run]
-branch = True
-source = src
+branch = true
+source =
+    src
+    tests
 parallel = true
 
 [report]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/.travis.yml 
new/lazy-object-proxy-1.3.1/.travis.yml
--- old/lazy-object-proxy-1.2.2/.travis.yml     2016-04-14 10:55:41.000000000 
+0200
+++ new/lazy-object-proxy-1.3.1/.travis.yml     2017-05-03 15:05:46.000000000 
+0200
@@ -1,6 +1,6 @@
 language: python
-python: '3.5'
 sudo: false
+cache: pip
 env:
   global:
     - LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so
@@ -8,39 +8,92 @@
   matrix:
     - TOXENV=check
     - TOXENV=docs
-
-    - TOXENV=2.6-cover,extension-coveralls,coveralls,codecov
-    - TOXENV=2.6-nocov
-    - TOXENV=2.7-cover,extension-coveralls,coveralls,codecov
-    - TOXENV=2.7-nocov
-    - TOXENV=3.3-cover,extension-coveralls,coveralls,codecov
-    - TOXENV=3.3-nocov
-    - TOXENV=3.4-cover,extension-coveralls,coveralls,codecov
-    - TOXENV=3.4-nocov
-    - TOXENV=3.5-cover,extension-coveralls,coveralls,codecov
-    - TOXENV=3.5-nocov
-    - TOXENV=pypy-cover,extension-coveralls,coveralls,codecov
-    - TOXENV=pypy-nocov
+matrix:
+  include:
+    - python: '2.6'
+      env:
+        - TOXENV=2.6-cover,report,extension-coveralls,coveralls,codecov
+    - python: '2.6'
+      env:
+        - TOXENV=2.6-nocov
+    - python: '2.7'
+      env:
+        - TOXENV=2.7-cover,report,extension-coveralls,coveralls,codecov
+    - python: '2.7'
+      env:
+        - TOXENV=2.7-nocov
+    - python: '3.3'
+      env:
+        - TOXENV=3.3-cover,report,extension-coveralls,coveralls,codecov
+    - python: '3.3'
+      env:
+        - TOXENV=3.3-nocov
+    - python: '3.4'
+      env:
+        - TOXENV=3.4-cover,report,extension-coveralls,coveralls,codecov
+    - python: '3.4'
+      env:
+        - TOXENV=3.4-nocov
+    - python: '3.5'
+      env:
+        - TOXENV=3.5-cover,report,extension-coveralls,coveralls,codecov
+    - python: '3.5'
+      env:
+        - TOXENV=3.5-nocov
+    - python: '3.6'
+      env:
+        - TOXENV=3.6-cover,report,extension-coveralls,coveralls,codecov
+    - python: '3.6'
+      env:
+        - TOXENV=3.6-nocov
+    - python: 'pypy'
+      env:
+        - TOXENV=pypy-cover,report,extension-coveralls,coveralls,codecov
+    - python: 'pypy'
+      env:
+        - TOXENV=pypy-nocov
+    - python: 'pypy3'
+      env:
+        - TOXENV=pypy3-cover,report,extension-coveralls,coveralls,codecov
+    - python: 'pypy3'
+      env:
+        - TOXENV=pypy3-nocov
 before_install:
   - python --version
   - uname -a
   - lsb_release -a
 install:
-  - pip install tox
+  - pip install -U tox virtualenv
   - virtualenv --version
   - easy_install --version
   - pip --version
   - tox --version
+  - |
+    set -ex
+    if [[ $TRAVIS_PYTHON_VERSION == 'pypy' ]]; then
+        (cd $HOME
+         wget 
https://bitbucket.org/squeaky/portable-pypy/downloads/pypy-5.7.1-linux_x86_64-portable.tar.bz2
+         tar xf pypy-5.7.1-linux_x86_64-portable.tar.bz2
+         pypy-5.7.1-linux_x86_64-portable/bin/pypy -m ensurepip
+         pypy-5.7.1-linux_x86_64-portable/bin/pypy -m pip install -U 
virtualenv)
+        export PATH=$HOME/pypy-5.7.1-linux_x86_64-portable/bin/:$PATH
+        export TOXPYTHON=$HOME/pypy-5.7.1-linux_x86_64-portable/bin/pypy
+    fi
+    if [[ $TRAVIS_PYTHON_VERSION == 'pypy3' ]]; then
+        (cd $HOME
+         wget 
https://bitbucket.org/squeaky/portable-pypy/downloads/pypy3.5-5.7.1-beta-linux_x86_64-portable.tar.bz2
+         tar xf pypy3.5-5.7.1-beta-linux_x86_64-portable.tar.bz2
+         pypy3.5-5.7.1-beta-linux_x86_64-portable/bin/pypy3 -m ensurepip
+         pypy3.5-5.7.1-beta-linux_x86_64-portable/bin/pypy3 -m pip install -U 
virtualenv)
+        export PATH=$HOME/pypy3.5-5.7.1-beta-linux_x86_64-portable/bin/:$PATH
+        export 
TOXPYTHON=$HOME/pypy3.5-5.7.1-beta-linux_x86_64-portable/bin/pypy3
+    fi
+    set +x
 script:
   - tox -v
 after_failure:
   - more .tox/log/* | cat
   - more .tox/*/log/* | cat
-before_cache:
-  - rm -rf $HOME/.cache/pip/log
-cache:
-  directories:
-    - $HOME/.cache/pip
 notifications:
   email:
     on_success: never
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/AUTHORS.rst 
new/lazy-object-proxy-1.3.1/AUTHORS.rst
--- old/lazy-object-proxy-1.2.2/AUTHORS.rst     2016-04-14 03:02:32.000000000 
+0200
+++ new/lazy-object-proxy-1.3.1/AUTHORS.rst     2017-05-03 22:04:12.000000000 
+0200
@@ -3,3 +3,6 @@
 =======
 
 * Ionel Cristian Mărieș - https://blog.ionelmc.ro
+* Alvin Chow - https://github.com/alvinchow86
+* Astrum Kuo - https://github.com/xowenx
+* Erik M. Bray - https://iguananaut.net
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/CHANGELOG.rst 
new/lazy-object-proxy-1.3.1/CHANGELOG.rst
--- old/lazy-object-proxy-1.2.2/CHANGELOG.rst   2016-04-14 03:05:58.000000000 
+0200
+++ new/lazy-object-proxy-1.3.1/CHANGELOG.rst   2017-05-05 14:10:51.000000000 
+0200
@@ -2,6 +2,16 @@
 Changelog
 =========
 
+1.3.1 (2017-05-05)
+------------------
+
+* Fix broken release (``sdist`` had a broken ``MANIFEST.in``).
+
+1.3.0 (2017-05-02)
+------------------
+
+* Speed up arithmetic operations involving ``cext.Proxy`` subclasses.
+
 1.2.2 (2016-04-14)
 ------------------
 
@@ -25,7 +35,8 @@
 
 * Added support for pickling. The pickled value is going to be the wrapped 
object *without* any Proxy container.
 * Fixed a memory management issue in the C extension (reference cycles weren't 
garbage collected due to improper
-  handling in the C extension).
+  handling in the C extension). Contributed by Alvin Chow in
+  `#8 <https://github.com/ionelmc/python-lazy-object-proxy/pull/8>`_.
 
 1.0.2 (2015-04-11)
 -----------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/CONTRIBUTING.rst 
new/lazy-object-proxy-1.3.1/CONTRIBUTING.rst
--- old/lazy-object-proxy-1.2.2/CONTRIBUTING.rst        2016-04-14 
03:06:12.000000000 +0200
+++ new/lazy-object-proxy-1.3.1/CONTRIBUTING.rst        2017-05-03 
15:05:20.000000000 +0200
@@ -49,7 +49,7 @@
 
    Now you can make your changes locally.
 
-4. When you're done making changes, run all the checks, doc builder and spell 
checker with `tox <http://tox.readthedocs.org/en/latest/install.html>`_ one 
command::
+4. When you're done making changes, run all the checks, doc builder and spell 
checker with `tox <http://tox.readthedocs.io/en/latest/install.html>`_ one 
command::
 
     tox
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/LICENSE 
new/lazy-object-proxy-1.3.1/LICENSE
--- old/lazy-object-proxy-1.2.2/LICENSE 2016-04-14 03:06:12.000000000 +0200
+++ new/lazy-object-proxy-1.3.1/LICENSE 2017-05-03 15:05:20.000000000 +0200
@@ -1,4 +1,4 @@
-Copyright (c) 2014-2016, Ionel Cristian Mărieș
+Copyright (c) 2014-2017, Ionel Cristian Mărieș
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without 
modification, are permitted provided that the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/MANIFEST.in 
new/lazy-object-proxy-1.3.1/MANIFEST.in
--- old/lazy-object-proxy-1.2.2/MANIFEST.in     2016-04-14 03:06:12.000000000 
+0200
+++ new/lazy-object-proxy-1.3.1/MANIFEST.in     2017-05-04 08:49:12.000000000 
+0200
@@ -1,5 +1,4 @@
 graft docs
-graft examples
 graft src
 graft ci
 graft tests
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/PKG-INFO 
new/lazy-object-proxy-1.3.1/PKG-INFO
--- old/lazy-object-proxy-1.2.2/PKG-INFO        2016-04-14 12:25:03.000000000 
+0200
+++ new/lazy-object-proxy-1.3.1/PKG-INFO        2017-05-05 14:11:33.000000000 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: lazy-object-proxy
-Version: 1.2.2
+Version: 1.3.1
 Summary: A fast and thorough lazy object proxy.
 Home-page: https://github.com/ionelmc/python-lazy-object-proxy
 Author: Ionel Cristian Mărieș
@@ -16,6 +16,22 @@
         
         * Free software: BSD license
         
+        Note that this is based on `wrapt`_'s ObjectProxy with one big change: 
it calls a function the first time the proxy object is
+        used, while `wrapt.ObjectProxy` just forwards the method calls to the 
target object.
+        
+        In other words, you use `lazy-object-proxy` when you only have the 
object way later and you use `wrapt.ObjectProxy` when you
+        want to override few methods (by subclassing) and forward everything 
else to the target object.
+        
+        Example::
+        
+            def expensive_func():
+                # create expensive object
+                return stuff
+        
+            obj = lazy_object_proxy.Proxy(expensive_func)
+            # function is called only when object is actually used
+            print(obj.foobar)  # now expensive_func is called
+        
         Installation
         ============
         
@@ -26,7 +42,7 @@
         Documentation
         =============
         
-        https://python-lazy-object-proxy.readthedocs.org/
+        https://python-lazy-object-proxy.readthedocs.io/
         
         Development
         ===========
@@ -38,13 +54,24 @@
         Acknowledgements
         ================
         
-        This project is based on some code from `wrapt 
<https://github.com/GrahamDumpleton/wrapt>`_
-        as you can see in the git history.
+        This project is based on some code from `wrapt`_ as you can see in the 
git history.
+        
+        .. _wrapt: https://github.com/GrahamDumpleton/wrapt
         
         
         Changelog
         =========
         
+        1.3.1 (2017-05-05)
+        ------------------
+        
+        * Fix broken release (``sdist`` had a broken ``MANIFEST.in``).
+        
+        1.3.0 (2017-05-02)
+        ------------------
+        
+        * Speed up arithmetic operations involving ``cext.Proxy`` subclasses.
+        
         1.2.2 (2016-04-14)
         ------------------
         
@@ -68,7 +95,8 @@
         
         * Added support for pickling. The pickled value is going to be the 
wrapped object *without* any Proxy container.
         * Fixed a memory management issue in the C extension (reference cycles 
weren't garbage collected due to improper
-          handling in the C extension).
+          handling in the C extension). Contributed by Alvin Chow in
+          `#8 <https://github.com/ionelmc/python-lazy-object-proxy/pull/8>`_.
         
         1.0.2 (2015-04-11)
         -----------------------------------------
@@ -89,6 +117,7 @@
 Classifier: Programming Language :: Python :: 3.3
 Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Utilities
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/README.rst 
new/lazy-object-proxy-1.3.1/README.rst
--- old/lazy-object-proxy-1.2.2/README.rst      2016-04-14 03:06:12.000000000 
+0200
+++ new/lazy-object-proxy-1.3.1/README.rst      2017-05-05 14:11:12.000000000 
+0200
@@ -14,7 +14,8 @@
         | |coveralls| |codecov|
         | |landscape| |scrutinizer| |codacy| |codeclimate|
     * - package
-      - |version| |downloads| |wheel| |supported-versions| 
|supported-implementations|
+      - | |version| |wheel| |supported-versions| |supported-implementations|
+        | |commits-since|
 
 .. |docs| image:: 
https://readthedocs.org/projects/python-lazy-object-proxy/badge/?style=flat
     :target: https://readthedocs.org/projects/python-lazy-object-proxy
@@ -44,7 +45,7 @@
     :target: 
https://landscape.io/github/ionelmc/python-lazy-object-proxy/master
     :alt: Code Quality Status
 
-.. |codacy| image:: 
https://img.shields.io/codacy/REPLACE_WITH_PROJECT_ID.svg?style=flat
+.. |codacy| image:: https://img.shields.io/codacy/REPLACE_WITH_PROJECT_ID.svg
     :target: https://www.codacy.com/app/ionelmc/python-lazy-object-proxy
     :alt: Codacy Code Quality Status
 
@@ -52,27 +53,27 @@
    :target: https://codeclimate.com/github/ionelmc/python-lazy-object-proxy
    :alt: CodeClimate Quality Status
 
-.. |version| image:: 
https://img.shields.io/pypi/v/lazy-object-proxy.svg?style=flat
+.. |version| image:: https://img.shields.io/pypi/v/lazy-object-proxy.svg
     :alt: PyPI Package latest release
     :target: https://pypi.python.org/pypi/lazy-object-proxy
 
-.. |downloads| image:: 
https://img.shields.io/pypi/dm/lazy-object-proxy.svg?style=flat
-    :alt: PyPI Package monthly downloads
-    :target: https://pypi.python.org/pypi/lazy-object-proxy
+.. |commits-since| image:: 
https://img.shields.io/github/commits-since/ionelmc/python-lazy-object-proxy/v1.3.1.svg
+    :alt: Commits since latest release
+    :target: 
https://github.com/ionelmc/python-lazy-object-proxy/compare/v1.3.1...master
 
-.. |wheel| image:: 
https://img.shields.io/pypi/wheel/lazy-object-proxy.svg?style=flat
+.. |wheel| image:: https://img.shields.io/pypi/wheel/lazy-object-proxy.svg
     :alt: PyPI Wheel
     :target: https://pypi.python.org/pypi/lazy-object-proxy
 
-.. |supported-versions| image:: 
https://img.shields.io/pypi/pyversions/lazy-object-proxy.svg?style=flat
+.. |supported-versions| image:: 
https://img.shields.io/pypi/pyversions/lazy-object-proxy.svg
     :alt: Supported versions
     :target: https://pypi.python.org/pypi/lazy-object-proxy
 
-.. |supported-implementations| image:: 
https://img.shields.io/pypi/implementation/lazy-object-proxy.svg?style=flat
+.. |supported-implementations| image:: 
https://img.shields.io/pypi/implementation/lazy-object-proxy.svg
     :alt: Supported implementations
     :target: https://pypi.python.org/pypi/lazy-object-proxy
 
-.. |scrutinizer| image:: 
https://img.shields.io/scrutinizer/g/ionelmc/python-lazy-object-proxy/master.svg?style=flat
+.. |scrutinizer| image:: 
https://img.shields.io/scrutinizer/g/ionelmc/python-lazy-object-proxy/master.svg
     :alt: Scrutinizer Status
     :target: https://scrutinizer-ci.com/g/ionelmc/python-lazy-object-proxy/
 
@@ -83,6 +84,22 @@
 
 * Free software: BSD license
 
+Note that this is based on `wrapt`_'s ObjectProxy with one big change: it 
calls a function the first time the proxy object is
+used, while `wrapt.ObjectProxy` just forwards the method calls to the target 
object.
+
+In other words, you use `lazy-object-proxy` when you only have the object way 
later and you use `wrapt.ObjectProxy` when you
+want to override few methods (by subclassing) and forward everything else to 
the target object.
+
+Example::
+
+    def expensive_func():
+        # create expensive object
+        return stuff
+
+    obj = lazy_object_proxy.Proxy(expensive_func)
+    # function is called only when object is actually used
+    print(obj.foobar)  # now expensive_func is called
+
 Installation
 ============
 
@@ -93,7 +110,7 @@
 Documentation
 =============
 
-https://python-lazy-object-proxy.readthedocs.org/
+https://python-lazy-object-proxy.readthedocs.io/
 
 Development
 ===========
@@ -105,5 +122,6 @@
 Acknowledgements
 ================
 
-This project is based on some code from `wrapt 
<https://github.com/GrahamDumpleton/wrapt>`_
-as you can see in the git history.
+This project is based on some code from `wrapt`_ as you can see in the git 
history.
+
+.. _wrapt: https://github.com/GrahamDumpleton/wrapt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/appveyor.yml 
new/lazy-object-proxy-1.3.1/appveyor.yml
--- old/lazy-object-proxy-1.2.2/appveyor.yml    2016-04-14 10:55:41.000000000 
+0200
+++ new/lazy-object-proxy-1.3.1/appveyor.yml    2017-05-03 22:04:12.000000000 
+0200
@@ -7,17 +7,40 @@
     WITH_COMPILER: 'cmd /E:ON /V:ON /C .\ci\appveyor-with-compiler.cmd'
   matrix:
     - TOXENV: check
+      TOXPYTHON: C:\Python27\python.exe
       PYTHON_HOME: C:\Python27
       PYTHON_VERSION: '2.7'
       PYTHON_ARCH: '32'
+    - TOXENV: '2.6-cover,report,codecov'
+      TOXPYTHON: C:\Python26\python.exe
+      PYTHON_HOME: C:\Python26
+      PYTHON_VERSION: '2.6'
+      PYTHON_ARCH: '32'
+    - TOXENV: '2.6-cover,report,codecov'
+      TOXPYTHON: C:\Python26-x64\python.exe
+      WINDOWS_SDK_VERSION: v7.0
+      PYTHON_HOME: C:\Python26-x64
+      PYTHON_VERSION: '2.6'
+      PYTHON_ARCH: '64'
+
+    - TOXENV: '2.6-nocov'
+      TOXPYTHON: C:\Python26\python.exe
+      PYTHON_HOME: C:\Python26
+      PYTHON_VERSION: '2.6'
+      PYTHON_ARCH: '32'
+    - TOXENV: '2.6-nocov'
+      TOXPYTHON: C:\Python26-x64\python.exe
+      WINDOWS_SDK_VERSION: v7.0
+      PYTHON_HOME: C:\Python26-x64
+      PYTHON_VERSION: '2.6'
+      PYTHON_ARCH: '64'
 
-    - TOXENV: '2.7-cover,codecov'
+    - TOXENV: '2.7-cover,report,codecov'
       TOXPYTHON: C:\Python27\python.exe
       PYTHON_HOME: C:\Python27
       PYTHON_VERSION: '2.7'
       PYTHON_ARCH: '32'
-
-    - TOXENV: '2.7-cover,codecov'
+    - TOXENV: '2.7-cover,report,codecov'
       TOXPYTHON: C:\Python27-x64\python.exe
       WINDOWS_SDK_VERSION: v7.0
       PYTHON_HOME: C:\Python27-x64
@@ -29,7 +52,6 @@
       PYTHON_HOME: C:\Python27
       PYTHON_VERSION: '2.7'
       PYTHON_ARCH: '32'
-
     - TOXENV: '2.7-nocov'
       TOXPYTHON: C:\Python27-x64\python.exe
       WINDOWS_SDK_VERSION: v7.0
@@ -37,13 +59,12 @@
       PYTHON_VERSION: '2.7'
       PYTHON_ARCH: '64'
 
-    - TOXENV: '3.3-cover,codecov'
+    - TOXENV: '3.3-cover,report,codecov'
       TOXPYTHON: C:\Python33\python.exe
       PYTHON_HOME: C:\Python33
       PYTHON_VERSION: '3.3'
       PYTHON_ARCH: '32'
-
-    - TOXENV: '3.3-cover,codecov'
+    - TOXENV: '3.3-cover,report,codecov'
       TOXPYTHON: C:\Python33-x64\python.exe
       WINDOWS_SDK_VERSION: v7.1
       PYTHON_HOME: C:\Python33-x64
@@ -55,7 +76,6 @@
       PYTHON_HOME: C:\Python33
       PYTHON_VERSION: '3.3'
       PYTHON_ARCH: '32'
-
     - TOXENV: '3.3-nocov'
       TOXPYTHON: C:\Python33-x64\python.exe
       WINDOWS_SDK_VERSION: v7.1
@@ -63,13 +83,12 @@
       PYTHON_VERSION: '3.3'
       PYTHON_ARCH: '64'
 
-    - TOXENV: '3.4-cover,codecov'
+    - TOXENV: '3.4-cover,report,codecov'
       TOXPYTHON: C:\Python34\python.exe
       PYTHON_HOME: C:\Python34
       PYTHON_VERSION: '3.4'
       PYTHON_ARCH: '32'
-
-    - TOXENV: '3.4-cover,codecov'
+    - TOXENV: '3.4-cover,report,codecov'
       TOXPYTHON: C:\Python34-x64\python.exe
       WINDOWS_SDK_VERSION: v7.1
       PYTHON_HOME: C:\Python34-x64
@@ -81,7 +100,6 @@
       PYTHON_HOME: C:\Python34
       PYTHON_VERSION: '3.4'
       PYTHON_ARCH: '32'
-
     - TOXENV: '3.4-nocov'
       TOXPYTHON: C:\Python34-x64\python.exe
       WINDOWS_SDK_VERSION: v7.1
@@ -89,13 +107,12 @@
       PYTHON_VERSION: '3.4'
       PYTHON_ARCH: '64'
 
-    - TOXENV: '3.5-cover,codecov'
+    - TOXENV: '3.5-cover,report,codecov'
       TOXPYTHON: C:\Python35\python.exe
       PYTHON_HOME: C:\Python35
       PYTHON_VERSION: '3.5'
       PYTHON_ARCH: '32'
-
-    - TOXENV: '3.5-cover,codecov'
+    - TOXENV: '3.5-cover,report,codecov'
       TOXPYTHON: C:\Python35-x64\python.exe
       PYTHON_HOME: C:\Python35-x64
       PYTHON_VERSION: '3.5'
@@ -106,13 +123,36 @@
       PYTHON_HOME: C:\Python35
       PYTHON_VERSION: '3.5'
       PYTHON_ARCH: '32'
-
     - TOXENV: '3.5-nocov'
       TOXPYTHON: C:\Python35-x64\python.exe
       PYTHON_HOME: C:\Python35-x64
       PYTHON_VERSION: '3.5'
       PYTHON_ARCH: '64'
 
+    - TOXENV: '3.6-cover,report,codecov'
+      TOXPYTHON: C:\Python36\python.exe
+      PYTHON_HOME: C:\Python36
+      PYTHON_VERSION: '3.6'
+      PYTHON_ARCH: '32'
+    - TOXENV: '3.6-cover,report,codecov'
+      TOXPYTHON: C:\Python36-x64\python.exe
+      WINDOWS_SDK_VERSION: v7.1
+      PYTHON_HOME: C:\Python36-x64
+      PYTHON_VERSION: '3.6'
+      PYTHON_ARCH: '64'
+
+    - TOXENV: '3.6-nocov'
+      TOXPYTHON: C:\Python36\python.exe
+      PYTHON_HOME: C:\Python36
+      PYTHON_VERSION: '3.6'
+      PYTHON_ARCH: '32'
+    - TOXENV: '3.6-nocov'
+      TOXPYTHON: C:\Python36-x64\python.exe
+      WINDOWS_SDK_VERSION: v7.1
+      PYTHON_HOME: C:\Python36-x64
+      PYTHON_VERSION: '3.6'
+      PYTHON_ARCH: '64'
+
 init:
   - ps: echo $env:TOXENV
   - ps: ls C:\Python*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/ci/appveyor-bootstrap.py 
new/lazy-object-proxy-1.3.1/ci/appveyor-bootstrap.py
--- old/lazy-object-proxy-1.2.2/ci/appveyor-bootstrap.py        2016-04-14 
03:06:12.000000000 +0200
+++ new/lazy-object-proxy-1.3.1/ci/appveyor-bootstrap.py        2017-05-03 
15:05:42.000000000 +0200
@@ -20,15 +20,17 @@
 URLS = {
     ("2.6", "64"): BASE_URL + "2.6.6/python-2.6.6.amd64.msi",
     ("2.6", "32"): BASE_URL + "2.6.6/python-2.6.6.msi",
-    ("2.7", "64"): BASE_URL + "2.7.10/python-2.7.10.amd64.msi",
-    ("2.7", "32"): BASE_URL + "2.7.10/python-2.7.10.msi",
+    ("2.7", "64"): BASE_URL + "2.7.10/python-2.7.13.amd64.msi",
+    ("2.7", "32"): BASE_URL + "2.7.10/python-2.7.13.msi",
     # NOTE: no .msi installer for 3.3.6
-    ("3.3", "64"): BASE_URL + "3.3.3/python-3.3.3.amd64.msi",
-    ("3.3", "32"): BASE_URL + "3.3.3/python-3.3.3.msi",
-    ("3.4", "64"): BASE_URL + "3.4.3/python-3.4.3.amd64.msi",
-    ("3.4", "32"): BASE_URL + "3.4.3/python-3.4.3.msi",
-    ("3.5", "64"): BASE_URL + "3.5.0/python-3.5.0-amd64.exe",
-    ("3.5", "32"): BASE_URL + "3.5.0/python-3.5.0.exe",
+    ("3.3", "64"): BASE_URL + "3.3.3/python-3.3.5.amd64.msi",
+    ("3.3", "32"): BASE_URL + "3.3.3/python-3.3.5.msi",
+    ("3.4", "64"): BASE_URL + "3.4.3/python-3.4.6.amd64.msi",
+    ("3.4", "32"): BASE_URL + "3.4.3/python-3.4.6.msi",
+    ("3.5", "64"): BASE_URL + "3.5.0/python-3.5.3-amd64.exe",
+    ("3.5", "32"): BASE_URL + "3.5.0/python-3.5.3.exe",
+    ("3.6", "64"): BASE_URL + "3.6.0/python-3.6.0-amd64.exe",
+    ("3.6", "32"): BASE_URL + "3.6.0/python-3.6.0.exe",
 }
 INSTALL_CMD = {
     # Commands are allowed to fail only if they are not the last command.  Eg: 
uninstall (/x) allowed to fail.
@@ -41,6 +43,7 @@
     "3.4": [["msiexec.exe", "/L*+!", "install.log", "/qn", "/x", "{path}"],
             ["msiexec.exe", "/L*+!", "install.log", "/qn", "/i", "{path}", 
"TARGETDIR={home}"]],
     "3.5": [["{path}", "/quiet", "TargetDir={home}"]],
+    "3.6": [["{path}", "/quiet", "TargetDir={home}"]],
 }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/ci/appveyor-download.py 
new/lazy-object-proxy-1.3.1/ci/appveyor-download.py
--- old/lazy-object-proxy-1.2.2/ci/appveyor-download.py 2016-04-14 
03:06:12.000000000 +0200
+++ new/lazy-object-proxy-1.3.1/ci/appveyor-download.py 2017-05-03 
15:05:20.000000000 +0200
@@ -10,9 +10,10 @@
 
 import argparse
 import os
-import requests
 import zipfile
 
+import requests
+
 
 def make_auth_headers():
     """Make the authentication headers needed to use the Appveyor API."""
@@ -64,7 +65,7 @@
 
 def ensure_dirs(filename):
     """Make sure the directories exist for `filename`."""
-    dirname, _ = os.path.split(filename)
+    dirname = os.path.dirname(filename)
     if dirname and not os.path.exists(dirname):
         os.makedirs(dirname)
 
@@ -90,6 +91,7 @@
             ensure_dirs(name)
             z.extract(name)
 
+
 parser = argparse.ArgumentParser(description='Download artifacts from 
AppVeyor.')
 parser.add_argument('--id',
                     metavar='PROJECT_ID',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/lazy-object-proxy-1.2.2/ci/appveyor-with-compiler.cmd 
new/lazy-object-proxy-1.3.1/ci/appveyor-with-compiler.cmd
--- old/lazy-object-proxy-1.2.2/ci/appveyor-with-compiler.cmd   2016-04-14 
03:02:32.000000000 +0200
+++ new/lazy-object-proxy-1.3.1/ci/appveyor-with-compiler.cmd   2017-05-05 
14:09:51.000000000 +0200
@@ -23,17 +23,10 @@
 ECHO SDK: %WINDOWS_SDK_VERSION% ARCH: %PYTHON_ARCH%
 
 
-IF "%PYTHON_VERSION%"=="3.5" (
-    IF EXIST %WIN_WDK% (
-        REM See: 
https://connect.microsoft.com/VisualStudio/feedback/details/1610302/
-        REN %WIN_WDK% 0wdf
-    )
-    GOTO main
-)
+IF "%PYTHON_VERSION%"=="3.5" GOTO main
+IF "%PYTHON_VERSION%"=="3.6" GOTO main
+IF "%PYTHON_ARCH%"=="32"     GOTO main
 
-IF "%PYTHON_ARCH%"=="32" (
-    GOTO main
-)
 
 SET DISTUTILS_USE_SDK=1
 SET MSSdk=1
@@ -41,6 +34,10 @@
 CALL "%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Bin\SetEnv.cmd" /x64 /release
 
 :main
+IF EXIST %WIN_WDK% (
+    REM See: 
https://connect.microsoft.com/VisualStudio/feedback/details/1610302/
+    REN %WIN_WDK% 0wdf
+)
 
 ECHO Executing: %COMMAND_TO_RUN%
 CALL %COMMAND_TO_RUN% || EXIT 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/ci/bootstrap.py 
new/lazy-object-proxy-1.3.1/ci/bootstrap.py
--- old/lazy-object-proxy-1.2.2/ci/bootstrap.py 2016-04-14 03:06:12.000000000 
+0200
+++ new/lazy-object-proxy-1.3.1/ci/bootstrap.py 2017-05-03 15:05:20.000000000 
+0200
@@ -4,10 +4,10 @@
 
 import os
 import sys
+from os.path import abspath
+from os.path import dirname
 from os.path import exists
 from os.path import join
-from os.path import dirname
-from os.path import abspath
 
 
 if __name__ == "__main__":
@@ -20,21 +20,22 @@
         bin_path = join(env_path, "bin")
     if not exists(env_path):
         import subprocess
+
         print("Making bootstrap env in: {0} ...".format(env_path))
         try:
             subprocess.check_call(["virtualenv", env_path])
-        except Exception:
+        except subprocess.CalledProcessError:
             subprocess.check_call([sys.executable, "-m", "virtualenv", 
env_path])
-        print("Installing `jinja2` and `matrix` into bootstrap environment 
...")
+        print("Installing `jinja2` and `matrix` into bootstrap environment...")
         subprocess.check_call([join(bin_path, "pip"), "install", "jinja2", 
"matrix"])
     activate = join(bin_path, "activate_this.py")
+    # noinspection PyCompatibility
     exec(compile(open(activate, "rb").read(), activate, "exec"), 
dict(__file__=activate))
 
     import jinja2
 
     import matrix
 
-
     jinja = jinja2.Environment(
         loader=jinja2.FileSystemLoader(join(base_path, "ci", "templates")),
         trim_blocks=True,
@@ -46,21 +47,17 @@
     for (alias, conf) in matrix.from_file(join(base_path, 
"setup.cfg")).items():
         python = conf["python_versions"]
         deps = conf["dependencies"]
-        if "coverage_flags" in conf:
-            cover = {"false": False, "true": 
True}[conf["coverage_flags"].lower()]
-        if "environment_variables" in conf:
-            env_vars = conf["environment_variables"]
-
         tox_environments[alias] = {
             "python": "python" + python if "py" not in python else python,
             "deps": deps.split(),
         }
         if "coverage_flags" in conf:
+            cover = {"false": False, "true": 
True}[conf["coverage_flags"].lower()]
             tox_environments[alias].update(cover=cover)
         if "environment_variables" in conf:
+            env_vars = conf["environment_variables"]
             tox_environments[alias].update(env_vars=env_vars.split())
 
-
     for name in os.listdir(join("ci", "templates")):
         with open(join(base_path, name), "w") as fh:
             
fh.write(jinja.get_template(name).render(tox_environments=tox_environments))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/ci/templates/.travis.yml 
new/lazy-object-proxy-1.3.1/ci/templates/.travis.yml
--- old/lazy-object-proxy-1.2.2/ci/templates/.travis.yml        2016-04-14 
03:06:12.000000000 +0200
+++ new/lazy-object-proxy-1.3.1/ci/templates/.travis.yml        2017-05-03 
15:05:42.000000000 +0200
@@ -1,6 +1,6 @@
 language: python
-python: '3.5'
 sudo: false
+cache: pip
 env:
   global:
     - LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so
@@ -8,8 +8,12 @@
   matrix:
     - TOXENV=check
     - TOXENV=docs
-{% for env, config in tox_environments|dictsort %}{{ '' }}
-    - TOXENV={{ env }}{% if config.cover 
%},extension-coveralls,coveralls,codecov{% endif -%}
+matrix:
+  include:
+{%- for env, config in tox_environments|dictsort %}{{ '' }}
+    - python: '{{ env.split('-')[0] }}'
+      env:
+        - TOXENV={{ env }}{% if config.cover 
%},report,extension-coveralls,coveralls,codecov{% endif -%}
 {% endfor %}
 
 before_install:
@@ -17,21 +21,37 @@
   - uname -a
   - lsb_release -a
 install:
-  - pip install tox
+  - pip install -U tox virtualenv
   - virtualenv --version
   - easy_install --version
   - pip --version
   - tox --version
+  - |
+    set -ex
+    if [[ $TRAVIS_PYTHON_VERSION == 'pypy' ]]; then
+        (cd $HOME
+         wget 
https://bitbucket.org/squeaky/portable-pypy/downloads/pypy-5.7.1-linux_x86_64-portable.tar.bz2
+         tar xf pypy-5.7.1-linux_x86_64-portable.tar.bz2
+         pypy-5.7.1-linux_x86_64-portable/bin/pypy -m ensurepip
+         pypy-5.7.1-linux_x86_64-portable/bin/pypy -m pip install -U 
virtualenv)
+        export PATH=$HOME/pypy-5.7.1-linux_x86_64-portable/bin/:$PATH
+        export TOXPYTHON=$HOME/pypy-5.7.1-linux_x86_64-portable/bin/pypy
+    fi
+    if [[ $TRAVIS_PYTHON_VERSION == 'pypy3' ]]; then
+        (cd $HOME
+         wget 
https://bitbucket.org/squeaky/portable-pypy/downloads/pypy3.5-5.7.1-beta-linux_x86_64-portable.tar.bz2
+         tar xf pypy3.5-5.7.1-beta-linux_x86_64-portable.tar.bz2
+         pypy3.5-5.7.1-beta-linux_x86_64-portable/bin/pypy3 -m ensurepip
+         pypy3.5-5.7.1-beta-linux_x86_64-portable/bin/pypy3 -m pip install -U 
virtualenv)
+        export PATH=$HOME/pypy3.5-5.7.1-beta-linux_x86_64-portable/bin/:$PATH
+        export 
TOXPYTHON=$HOME/pypy3.5-5.7.1-beta-linux_x86_64-portable/bin/pypy3
+    fi
+    set +x
 script:
   - tox -v
 after_failure:
   - more .tox/log/* | cat
   - more .tox/*/log/* | cat
-before_cache:
-  - rm -rf $HOME/.cache/pip/log
-cache:
-  directories:
-    - $HOME/.cache/pip
 notifications:
   email:
     on_success: never
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/ci/templates/appveyor.yml 
new/lazy-object-proxy-1.3.1/ci/templates/appveyor.yml
--- old/lazy-object-proxy-1.2.2/ci/templates/appveyor.yml       2016-04-14 
10:55:35.000000000 +0200
+++ new/lazy-object-proxy-1.3.1/ci/templates/appveyor.yml       2017-05-03 
22:04:12.000000000 +0200
@@ -7,18 +7,17 @@
     WITH_COMPILER: 'cmd /E:ON /V:ON /C .\ci\appveyor-with-compiler.cmd'
   matrix:
     - TOXENV: check
+      TOXPYTHON: C:\Python27\python.exe
       PYTHON_HOME: C:\Python27
       PYTHON_VERSION: '2.7'
       PYTHON_ARCH: '32'
-
-{% for env, config in tox_environments|dictsort %}{% if config.python in 
('python2.7', 'python3.3', 'python3.4', 'python3.5') %}
-    - TOXENV: '{{ env }}{% if config.cover %},codecov{% endif %}'
+{% for env, config in tox_environments|dictsort %}{{ '' }}{% if 
config.python.startswith('python') %}
+    - TOXENV: '{{ env }}{% if config.cover %},report,codecov{% endif %}'
       TOXPYTHON: C:\{{ config.python.replace('.', '').capitalize() 
}}\python.exe
       PYTHON_HOME: C:\{{ config.python.replace('.', '').capitalize() }}
       PYTHON_VERSION: '{{ config.python[-3:] }}'
       PYTHON_ARCH: '32'
-
-    - TOXENV: '{{ env }}{% if config.cover %},codecov{% endif %}'
+    - TOXENV: '{{ env }}{% if config.cover %},report,codecov{% endif %}'
       TOXPYTHON: C:\{{ config.python.replace('.', '').capitalize() 
}}-x64\python.exe
       {%- if config.python != 'python3.5' %}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/ci/templates/tox.ini 
new/lazy-object-proxy-1.3.1/ci/templates/tox.ini
--- old/lazy-object-proxy-1.2.2/ci/templates/tox.ini    2016-04-14 
03:06:12.000000000 +0200
+++ new/lazy-object-proxy-1.3.1/ci/templates/tox.ini    2017-05-03 
22:04:12.000000000 +0200
@@ -10,8 +10,8 @@
 
 [testenv]
 basepython =
-    {docs,spell}: python2.7
-    {clean,check,report,extension-coveralls,coveralls,codecov}: python3.5
+    {docs,spell}: {env:TOXPYTHON:python2.7}
+    {bootstrap,clean,check,report,extension-coveralls,coveralls,codecov}: 
{env:TOXPYTHON:python3}
 setenv =
     PYTHONPATH={toxinidir}/tests
     PYTHONUNBUFFERED=yes
@@ -78,8 +78,6 @@
 skip_install = true
 usedevelop = false
 commands =
-    coverage combine
-    coverage report
     coveralls --merge=extension-coveralls.json []
 
 [testenv:codecov]
@@ -88,8 +86,6 @@
 skip_install = true
 usedevelop = false
 commands =
-    coverage combine
-    coverage report
     coverage xml --ignore-errors
     codecov []
 
@@ -107,7 +103,7 @@
 skip_install = true
 usedevelop = false
 commands =
-    coverage combine
+    coverage combine --append
     coverage report
     coverage html
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/docs/conf.py 
new/lazy-object-proxy-1.3.1/docs/conf.py
--- old/lazy-object-proxy-1.2.2/docs/conf.py    2016-04-14 10:56:01.000000000 
+0200
+++ new/lazy-object-proxy-1.3.1/docs/conf.py    2017-05-05 14:11:12.000000000 
+0200
@@ -23,10 +23,10 @@
 source_suffix = '.rst'
 master_doc = 'index'
 project = 'lazy-object-proxy'
-year = '2014-2016'
+year = '2014-2017'
 author = 'Ionel Cristian Mărieș'
 copyright = '{0}, {1}'.format(year, author)
-version = release = '1.2.2'
+version = release = '1.3.1'
 
 pygments_style = 'trac'
 templates_path = ['.']
@@ -34,7 +34,6 @@
     'issue': ('https://github.com/ionelmc/python-lazy-object-proxy/issues/%s', 
'#'),
     'pr': ('https://github.com/ionelmc/python-lazy-object-proxy/pull/%s', 'PR 
#'),
 }
->>>>>>> f0a6974... Upgrade skel.
 import sphinx_py3doc_enhanced_theme
 html_theme = "sphinx_py3doc_enhanced_theme"
 html_theme_path = [sphinx_py3doc_enhanced_theme.get_html_theme_path()]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/setup.cfg 
new/lazy-object-proxy-1.3.1/setup.cfg
--- old/lazy-object-proxy-1.2.2/setup.cfg       2016-04-14 12:25:03.000000000 
+0200
+++ new/lazy-object-proxy-1.3.1/setup.cfg       2017-05-05 14:11:33.000000000 
+0200
@@ -2,7 +2,7 @@
 max-line-length = 140
 exclude = tests/*,*/migrations/*,*/south_migrations/*
 
-[pytest]
+[tool:pytest]
 norecursedirs = 
        .git
        .tox
@@ -45,7 +45,9 @@
        3.3
        3.4
        3.5
+       3.6
        pypy
+       pypy3
 dependencies = 
        :Django objproxies==0.9.4 !python_versions[2.6]
        : &python_versions[2.6]
@@ -58,5 +60,4 @@
 [egg_info]
 tag_build = 
 tag_date = 0
-tag_svn_revision = 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/setup.py 
new/lazy-object-proxy-1.3.1/setup.py
--- old/lazy-object-proxy-1.2.2/setup.py        2016-04-14 10:56:01.000000000 
+0200
+++ new/lazy-object-proxy-1.3.1/setup.py        2017-05-05 14:11:12.000000000 
+0200
@@ -56,9 +56,10 @@
         print('    ' + repr(e))
         print('*' * 80)
 
+
 setup(
     name='lazy-object-proxy',
-    version='1.2.2',
+    version='1.3.1',
     license='BSD',
     description='A fast and thorough lazy object proxy.',
     long_description='%s\n%s' % (
@@ -88,6 +89,7 @@
         'Programming Language :: Python :: 3.3',
         'Programming Language :: Python :: 3.4',
         'Programming Language :: Python :: 3.5',
+        'Programming Language :: Python :: 3.6',
         'Programming Language :: Python :: Implementation :: CPython',
         'Programming Language :: Python :: Implementation :: PyPy',
         'Topic :: Utilities',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/lazy-object-proxy-1.2.2/src/lazy_object_proxy/__init__.py 
new/lazy-object-proxy-1.3.1/src/lazy_object_proxy/__init__.py
--- old/lazy-object-proxy-1.2.2/src/lazy_object_proxy/__init__.py       
2016-04-14 10:56:01.000000000 +0200
+++ new/lazy-object-proxy-1.3.1/src/lazy_object_proxy/__init__.py       
2017-05-05 14:11:12.000000000 +0200
@@ -15,6 +15,6 @@
 else:
     copyreg.constructor(identity)
 
-__version__ = "1.2.2"
+__version__ = "1.3.1"
 
 __all__ = "Proxy",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/src/lazy_object_proxy/cext.c 
new/lazy-object-proxy-1.3.1/src/lazy_object_proxy/cext.c
--- old/lazy-object-proxy-1.2.2/src/lazy_object_proxy/cext.c    2015-08-28 
00:42:27.000000000 +0200
+++ new/lazy-object-proxy-1.3.1/src/lazy_object_proxy/cext.c    2017-05-03 
14:18:31.000000000 +0200
@@ -9,7 +9,7 @@
 #endif
 
 #define Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(object) \
-    if (PyObject_IsInstance(object, (PyObject *)&Proxy_Type)) { \
+    if (PyObject_TypeCheck(object, &Proxy_Type)) { \
         object = Proxy__ensure_wrapped((ProxyObject *)object); \
         if (!object) return NULL; \
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/lazy-object-proxy-1.2.2/src/lazy_object_proxy.egg-info/PKG-INFO 
new/lazy-object-proxy-1.3.1/src/lazy_object_proxy.egg-info/PKG-INFO
--- old/lazy-object-proxy-1.2.2/src/lazy_object_proxy.egg-info/PKG-INFO 
2016-04-14 12:25:03.000000000 +0200
+++ new/lazy-object-proxy-1.3.1/src/lazy_object_proxy.egg-info/PKG-INFO 
2017-05-05 14:11:33.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: lazy-object-proxy
-Version: 1.2.2
+Version: 1.3.1
 Summary: A fast and thorough lazy object proxy.
 Home-page: https://github.com/ionelmc/python-lazy-object-proxy
 Author: Ionel Cristian Mărieș
@@ -16,6 +16,22 @@
         
         * Free software: BSD license
         
+        Note that this is based on `wrapt`_'s ObjectProxy with one big change: 
it calls a function the first time the proxy object is
+        used, while `wrapt.ObjectProxy` just forwards the method calls to the 
target object.
+        
+        In other words, you use `lazy-object-proxy` when you only have the 
object way later and you use `wrapt.ObjectProxy` when you
+        want to override few methods (by subclassing) and forward everything 
else to the target object.
+        
+        Example::
+        
+            def expensive_func():
+                # create expensive object
+                return stuff
+        
+            obj = lazy_object_proxy.Proxy(expensive_func)
+            # function is called only when object is actually used
+            print(obj.foobar)  # now expensive_func is called
+        
         Installation
         ============
         
@@ -26,7 +42,7 @@
         Documentation
         =============
         
-        https://python-lazy-object-proxy.readthedocs.org/
+        https://python-lazy-object-proxy.readthedocs.io/
         
         Development
         ===========
@@ -38,13 +54,24 @@
         Acknowledgements
         ================
         
-        This project is based on some code from `wrapt 
<https://github.com/GrahamDumpleton/wrapt>`_
-        as you can see in the git history.
+        This project is based on some code from `wrapt`_ as you can see in the 
git history.
+        
+        .. _wrapt: https://github.com/GrahamDumpleton/wrapt
         
         
         Changelog
         =========
         
+        1.3.1 (2017-05-05)
+        ------------------
+        
+        * Fix broken release (``sdist`` had a broken ``MANIFEST.in``).
+        
+        1.3.0 (2017-05-02)
+        ------------------
+        
+        * Speed up arithmetic operations involving ``cext.Proxy`` subclasses.
+        
         1.2.2 (2016-04-14)
         ------------------
         
@@ -68,7 +95,8 @@
         
         * Added support for pickling. The pickled value is going to be the 
wrapped object *without* any Proxy container.
         * Fixed a memory management issue in the C extension (reference cycles 
weren't garbage collected due to improper
-          handling in the C extension).
+          handling in the C extension). Contributed by Alvin Chow in
+          `#8 <https://github.com/ionelmc/python-lazy-object-proxy/pull/8>`_.
         
         1.0.2 (2015-04-11)
         -----------------------------------------
@@ -89,6 +117,7 @@
 Classifier: Programming Language :: Python :: 3.3
 Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Utilities
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/lazy-object-proxy-1.2.2/tests/test_lazy_object_proxy.py 
new/lazy-object-proxy-1.3.1/tests/test_lazy_object_proxy.py
--- old/lazy-object-proxy-1.2.2/tests/test_lazy_object_proxy.py 2016-04-14 
03:19:39.000000000 +0200
+++ new/lazy-object-proxy-1.3.1/tests/test_lazy_object_proxy.py 2017-05-03 
15:05:42.000000000 +0200
@@ -418,7 +418,7 @@
 
     result = wrapper()
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_function_args(lazy_object_proxy):
@@ -432,7 +432,7 @@
 
     result = wrapper(*_args)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_function_kwargs(lazy_object_proxy):
@@ -446,7 +446,7 @@
 
     result = wrapper(**_kwargs)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_function_args_plus_kwargs(lazy_object_proxy):
@@ -460,7 +460,7 @@
 
     result = wrapper(*_args, **_kwargs)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_instancemethod_no_args(lazy_object_proxy):
@@ -475,7 +475,7 @@
 
     result = wrapper()
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_instancemethod_args(lazy_object_proxy):
@@ -490,7 +490,7 @@
 
     result = wrapper(*_args)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_instancemethod_kwargs(lazy_object_proxy):
@@ -505,7 +505,7 @@
 
     result = wrapper(**_kwargs)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_instancemethod_args_plus_kwargs(lazy_object_proxy):
@@ -520,7 +520,7 @@
 
     result = wrapper(*_args, **_kwargs)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_instancemethod_via_class_no_args(lazy_object_proxy):
@@ -535,7 +535,7 @@
 
     result = wrapper(Class())
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_instancemethod_via_class_args(lazy_object_proxy):
@@ -550,7 +550,7 @@
 
     result = wrapper(Class(), *_args)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_instancemethod_via_class_kwargs(lazy_object_proxy):
@@ -565,7 +565,7 @@
 
     result = wrapper(Class(), **_kwargs)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_instancemethod_via_class_args_plus_kwargs(lazy_object_proxy):
@@ -580,7 +580,7 @@
 
     result = wrapper(Class(), *_args, **_kwargs)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_classmethod_no_args(lazy_object_proxy):
@@ -596,7 +596,7 @@
 
     result = wrapper()
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_classmethod_args(lazy_object_proxy):
@@ -612,7 +612,7 @@
 
     result = wrapper(*_args)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_classmethod_kwargs(lazy_object_proxy):
@@ -628,7 +628,7 @@
 
     result = wrapper(**_kwargs)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_classmethod_args_plus_kwargs(lazy_object_proxy):
@@ -644,7 +644,7 @@
 
     result = wrapper(*_args, **_kwargs)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_classmethod_via_class_no_args(lazy_object_proxy):
@@ -660,7 +660,7 @@
 
     result = wrapper()
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_classmethod_via_class_args(lazy_object_proxy):
@@ -676,7 +676,7 @@
 
     result = wrapper(*_args)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_classmethod_via_class_kwargs(lazy_object_proxy):
@@ -692,7 +692,7 @@
 
     result = wrapper(**_kwargs)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_classmethod_via_class_args_plus_kwargs(lazy_object_proxy):
@@ -708,7 +708,7 @@
 
     result = wrapper(*_args, **_kwargs)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_staticmethod_no_args(lazy_object_proxy):
@@ -724,7 +724,7 @@
 
     result = wrapper()
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_staticmethod_args(lazy_object_proxy):
@@ -740,7 +740,7 @@
 
     result = wrapper(*_args)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_staticmethod_kwargs(lazy_object_proxy):
@@ -756,7 +756,7 @@
 
     result = wrapper(**_kwargs)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_staticmethod_args_plus_kwargs(lazy_object_proxy):
@@ -772,7 +772,7 @@
 
     result = wrapper(*_args, **_kwargs)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_staticmethod_via_class_no_args(lazy_object_proxy):
@@ -788,7 +788,7 @@
 
     result = wrapper()
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_staticmethod_via_class_args(lazy_object_proxy):
@@ -804,7 +804,7 @@
 
     result = wrapper(*_args)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_staticmethod_via_class_kwargs(lazy_object_proxy):
@@ -820,7 +820,7 @@
 
     result = wrapper(**_kwargs)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_staticmethod_via_class_args_plus_kwargs(lazy_object_proxy):
@@ -836,7 +836,7 @@
 
     result = wrapper(*_args, **_kwargs)
 
-    assert result, (_args == _kwargs)
+    assert result == (_args, _kwargs)
 
 
 def test_iteration(lazy_object_proxy):
@@ -1904,3 +1904,42 @@
     obj = "foobar"
     proxied = prototype(lambda: obj)
     assert benchmark(partial(str, proxied)) == obj
+
+
+def test_subclassing_with_local_attr(lazy_object_proxy):
+    class Foo:
+        pass
+    called = []
+
+    class LazyProxy(lazy_object_proxy.Proxy):
+        name = None
+
+        def __init__(self, func, **lazy_attr):
+            super(LazyProxy, self).__init__(func)
+            for attr, val in lazy_attr.items():
+                setattr(self, attr, val)
+
+    proxy = LazyProxy(lambda: called.append(1) or Foo(), name='bar')
+    assert proxy.name == 'bar'
+    assert not called
+
+
+def test_subclassing_dynamic_with_local_attr(lazy_object_proxy):
+    if lazy_object_proxy.kind == 'cext':
+        pytest.skip("Not possible.")
+
+    class Foo:
+        pass
+
+    called = []
+
+    class LazyProxy(lazy_object_proxy.Proxy):
+        def __init__(self, func, **lazy_attr):
+            super(LazyProxy, self).__init__(func)
+            for attr, val in lazy_attr.items():
+                object.__setattr__(self, attr, val)
+
+    proxy = LazyProxy(lambda: called.append(1) or Foo(), name='bar')
+    assert proxy.name == 'bar'
+    assert not called
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lazy-object-proxy-1.2.2/tox.ini 
new/lazy-object-proxy-1.3.1/tox.ini
--- old/lazy-object-proxy-1.2.2/tox.ini 2016-04-14 10:55:41.000000000 +0200
+++ new/lazy-object-proxy-1.3.1/tox.ini 2017-05-03 22:04:12.000000000 +0200
@@ -12,15 +12,19 @@
     3.4-nocov,
     3.5-cover,
     3.5-nocov,
+    3.6-cover,
+    3.6-nocov,
     pypy-cover,
     pypy-nocov,
+    pypy3-cover,
+    pypy3-nocov,
     report,
     docs
 
 [testenv]
 basepython =
-    {docs,spell}: python2.7
-    {clean,check,report,extension-coveralls,coveralls,codecov}: python3.5
+    {docs,spell}: {env:TOXPYTHON:python2.7}
+    {bootstrap,clean,check,report,extension-coveralls,coveralls,codecov}: 
{env:TOXPYTHON:python3}
 setenv =
     PYTHONPATH={toxinidir}/tests
     PYTHONUNBUFFERED=yes
@@ -87,8 +91,6 @@
 skip_install = true
 usedevelop = false
 commands =
-    coverage combine
-    coverage report
     coveralls --merge=extension-coveralls.json []
 
 [testenv:codecov]
@@ -97,8 +99,6 @@
 skip_install = true
 usedevelop = false
 commands =
-    coverage combine
-    coverage report
     coverage xml --ignore-errors
     codecov []
 
@@ -116,7 +116,7 @@
 skip_install = true
 usedevelop = false
 commands =
-    coverage combine
+    coverage combine --append
     coverage report
     coverage html
 
@@ -235,6 +235,29 @@
     Django
     objproxies==0.9.4
 
+[testenv:3.6-cover]
+basepython = {env:TOXPYTHON:python3.6}
+setenv =
+    {[testenv]setenv}
+    WITH_COVERAGE=yes
+    SETUPPY_CFLAGS=-coverage
+usedevelop = true
+commands =
+    python setup.py clean --all build_ext --force --inplace
+    {posargs:py.test --cov --cov-report=term-missing -vv}
+deps =
+    {[testenv]deps}
+    pytest-cov
+    Django
+    objproxies==0.9.4
+
+[testenv:3.6-nocov]
+basepython = {env:TOXPYTHON:python3.6}
+deps =
+    {[testenv]deps}
+    Django
+    objproxies==0.9.4
+
 [testenv:pypy-cover]
 basepython = {env:TOXPYTHON:pypy}
 setenv =
@@ -256,6 +279,29 @@
 deps =
     {[testenv]deps}
     Django
+    objproxies==0.9.4
+
+[testenv:pypy3-cover]
+basepython = {env:TOXPYTHON:pypy3}
+setenv =
+    {[testenv]setenv}
+    WITH_COVERAGE=yes
+    SETUPPY_CFLAGS=-coverage
+usedevelop = true
+commands =
+    python setup.py clean --all build_ext --force --inplace
+    {posargs:py.test --cov --cov-report=term-missing -vv}
+deps =
+    {[testenv]deps}
+    pytest-cov
+    Django
+    objproxies==0.9.4
+
+[testenv:pypy3-nocov]
+basepython = {env:TOXPYTHON:pypy3}
+deps =
+    {[testenv]deps}
+    Django
     objproxies==0.9.4
 
 


Reply via email to