From c4c03ece1780c9d960018109a30d4cd8a1ee03e9 Mon Sep 17 00:00:00 2001
From: Sandro Tosi <morph@debian.org>
Date: Thu, 7 Jan 2021 02:54:08 -0500
Subject: [PATCH] New upstream version 1.5.2

---
 .appveyor.yml                           | 49 ++++++++++++-------------
 .bumpversion.cfg                        |  2 +-
 .cookiecutterrc                         |  5 +--
 .editorconfig                           |  6 ++-
 .gitignore                              |  5 ++-
 .pre-commit-config.yaml                 |  2 +-
 .travis.yml                             | 45 +++++++++++++++++------
 CHANGELOG.rst                           |  8 ++++
 CONTRIBUTING.rst                        |  4 +-
 PKG-INFO                                | 11 +++++-
 README.rst                              |  4 +-
 ci/requirements.txt                     |  3 ++
 ci/templates/.appveyor.yml              |  5 ++-
 ci/templates/.travis.yml                |  9 +++--
 docs/conf.py                            |  2 +-
 setup.cfg                               |  5 +--
 setup.py                                |  3 +-
 src/lazy_object_proxy.egg-info/PKG-INFO | 11 +++++-
 src/lazy_object_proxy/__init__.py       |  2 +-
 src/lazy_object_proxy/_version.py       |  2 +-
 tox.ini                                 |  5 ++-
 21 files changed, 122 insertions(+), 66 deletions(-)

diff --git a/.appveyor.yml b/.appveyor.yml
index d321c9d..c85d3c6 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -1,5 +1,6 @@
 version: '{branch}-{build}'
 build: off
+image: Visual Studio 2019
 environment:
   global:
     TWINE_USERNAME: ionel
@@ -11,30 +12,6 @@ environment:
       PYTHON_HOME: C:\Python36
       PYTHON_VERSION: '3.6'
       PYTHON_ARCH: '32'
-    - TOXENV: py27-cover,codecov,coveralls
-      TOXPYTHON: C:\Python27\python.exe
-      PYTHON_HOME: C:\Python27
-      PYTHON_VERSION: '2.7'
-      PYTHON_ARCH: '32'
-    - TOXENV: py27-cover,codecov,coveralls
-      TOXPYTHON: C:\Python27-x64\python.exe
-      PYTHON_HOME: C:\Python27-x64
-      PYTHON_VERSION: '2.7'
-      PYTHON_ARCH: '64'
-      WINDOWS_SDK_VERSION: v7.0
-    - TOXENV: py27-nocov
-      TOXPYTHON: C:\Python27\python.exe
-      PYTHON_HOME: C:\Python27
-      PYTHON_VERSION: '2.7'
-      PYTHON_ARCH: '32'
-      WHEEL_PATH: .tox/dist
-    - TOXENV: py27-nocov
-      TOXPYTHON: C:\Python27-x64\python.exe
-      PYTHON_HOME: C:\Python27-x64
-      PYTHON_VERSION: '2.7'
-      PYTHON_ARCH: '64'
-      WHEEL_PATH: .tox/dist
-      WINDOWS_SDK_VERSION: v7.0
     - TOXENV: py35-cover,codecov,coveralls
       TOXPYTHON: C:\Python35\python.exe
       PYTHON_HOME: C:\Python35
@@ -123,11 +100,33 @@ environment:
       PYTHON_VERSION: '3.8'
       PYTHON_ARCH: '64'
       WHEEL_PATH: .tox/dist
+    - TOXENV: py39-cover,codecov,coveralls
+      TOXPYTHON: C:\Python39\python.exe
+      PYTHON_HOME: C:\Python39
+      PYTHON_VERSION: '3.9'
+      PYTHON_ARCH: '32'
+    - TOXENV: py39-cover,codecov,coveralls
+      TOXPYTHON: C:\Python39-x64\python.exe
+      PYTHON_HOME: C:\Python39-x64
+      PYTHON_VERSION: '3.9'
+      PYTHON_ARCH: '64'
+    - TOXENV: py39-nocov
+      TOXPYTHON: C:\Python39\python.exe
+      PYTHON_HOME: C:\Python39
+      PYTHON_VERSION: '3.9'
+      PYTHON_ARCH: '32'
+      WHEEL_PATH: .tox/dist
+    - TOXENV: py39-nocov
+      TOXPYTHON: C:\Python39-x64\python.exe
+      PYTHON_HOME: C:\Python39-x64
+      PYTHON_VERSION: '3.9'
+      PYTHON_ARCH: '64'
+      WHEEL_PATH: .tox/dist
 init:
   - ps: echo $env:TOXENV
   - ps: ls C:\Python*
 install:
-  - '%PYTHON_HOME%\python -mpip install --progress-bar=off twine tox-wheel -rci/requirements.txt'
+  - '%PYTHON_HOME%\python -mpip install --progress-bar=off -rci/requirements.txt'
   - '%PYTHON_HOME%\Scripts\virtualenv --version'
   - '%PYTHON_HOME%\Scripts\easy_install --version'
   - '%PYTHON_HOME%\Scripts\pip --version'
diff --git a/.bumpversion.cfg b/.bumpversion.cfg
index e9b1965..10e47c4 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 1.5.1
+current_version = 1.5.2
 commit = True
 tag = True
 
diff --git a/.cookiecutterrc b/.cookiecutterrc
index 00841a9..623c213 100644
--- a/.cookiecutterrc
+++ b/.cookiecutterrc
@@ -1,9 +1,6 @@
 # Generated by cookiepatcher, a small shim around cookiecutter (pip install cookiepatcher)
 
-cookiecutter:
-    _extensions:
-    -   jinja2_time.TimeExtension
-    _template: /home/ionel/open-source/cookiecutter-pylibrary
+default_context:
     allow_tests_inside_package: no
     appveyor: yes
     c_extension_function: '-'
diff --git a/.editorconfig b/.editorconfig
index a9c7977..586c736 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -2,10 +2,11 @@
 root = true
 
 [*]
+# Use Unix-style newlines for most files (except Windows files, see below).
 end_of_line = lf
 trim_trailing_whitespace = true
-insert_final_newline = true
 indent_style = space
+insert_final_newline = true
 indent_size = 4
 charset = utf-8
 
@@ -14,3 +15,6 @@ end_of_line = crlf
 
 [*.{yml,yaml}]
 indent_size = 2
+
+[*.tsv]
+indent_style = tab
diff --git a/.gitignore b/.gitignore
index 3abdcc3..9fe45cb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,11 +39,14 @@ htmlcov
 # Translations
 *.mo
 
-# Mr Developer
+# Buildout
 .mr.developer.cfg
+
+# IDE project files
 .project
 .pydevproject
 .idea
+.vscode
 *.iml
 *.komodoproject
 
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 8de50ba..6e974cb 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -2,7 +2,7 @@
 #   pre-commit install
 # To update the pre-commit hooks run:
 #   pre-commit install-hooks
-exclude: '^(.tox|ci/templates|.bumpversion.cfg)(/|$)'
+exclude: '^(\.tox|ci/templates|\.bumpversion\.cfg)(/|$)'
 repos:
   - repo: https://github.com/pre-commit/pre-commit-hooks
     rev: master
diff --git a/.travis.yml b/.travis.yml
index 85338fc..40f9dea 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,4 +1,7 @@
 language: python
+dist: xenial
+virt: lxd
+cache: false
 env:
   global:
     - LD_PRELOAD=libSegFault.so
@@ -91,11 +94,6 @@ matrix:
         - WHEEL_MANYLINUX="1 cp37"
       python: '3.7'
       arch: amd64
-    - os: osx
-      osx_image: xcode11
-      language: generic
-      env:
-        - TOXENV=py38-cover
     - env:
         - TOXENV=py38-cover,codecov,extension-coveralls,coveralls
       python: '3.8'
@@ -104,12 +102,6 @@ matrix:
         - TOXENV=py38-cover,codecov,extension-coveralls,coveralls
       python: '3.8'
       arch: amd64
-    - os: osx
-      osx_image: xcode11
-      language: generic
-      env:
-        - TOXENV=py38-nocov
-        - WHEEL_PATH=.tox/dist
     - env:
         - TOXENV=py38-nocov
         - WHEEL_MANYLINUX="2014-arm cp38"
@@ -120,6 +112,35 @@ matrix:
         - WHEEL_MANYLINUX="1 cp38"
       python: '3.8'
       arch: amd64
+    - os: osx
+      osx_image: xcode11
+      language: generic
+      env:
+        - TOXENV=py39-cover
+    - env:
+        - TOXENV=py39-cover,codecov,extension-coveralls,coveralls
+      python: '3.9'
+      arch: arm64
+    - env:
+        - TOXENV=py39-cover,codecov,extension-coveralls,coveralls
+      python: '3.9'
+      arch: amd64
+    - os: osx
+      osx_image: xcode11
+      language: generic
+      env:
+        - TOXENV=py39-nocov
+        - WHEEL_PATH=.tox/dist
+    - env:
+        - TOXENV=py39-nocov
+        - WHEEL_MANYLINUX="2014-arm cp39"
+      python: '3.9'
+      arch: arm64
+    - env:
+        - TOXENV=py39-nocov
+        - WHEEL_MANYLINUX="1 cp39"
+      python: '3.9'
+      arch: amd64
 before_install:
   - python --version
   - uname -a
@@ -132,7 +153,7 @@ before_install:
       export PATH="/usr/local/opt/python/libexec/bin:${PATH}"
     fi
 install:
-  - python -mpip install --progress-bar=off twine tox-wheel -rci/requirements.txt
+  - python -mpip install --progress-bar=off --upgrade --ignore-installed -rci/requirements.txt
   - virtualenv --version
   - easy_install --version
   - pip --version
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 3cc1ddb..7862884 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -2,6 +2,14 @@
 Changelog
 =========
 
+
+1.5.2 (2020-11-26)
+------------------
+
+* Added Python 3.9 wheels.
+* Removed Python 2.7 Windows wheels
+  (not supported on newest image with Python 3.9).
+
 1.5.1 (2020-07-22)
 ------------------
 
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 442a323..4c23f79 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -85,6 +85,6 @@ To run a subset of tests::
 
     tox -e envname -- pytest -k test_myfeature
 
-To run all the test environments in *parallel* (you need to ``pip install detox``)::
+To run all the test environments in *parallel*::
 
-    detox
+    tox -p auto
diff --git a/PKG-INFO b/PKG-INFO
index 4e5f300..568b5b6 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: lazy-object-proxy
-Version: 1.5.1
+Version: 1.5.2
 Summary: A fast and thorough lazy object proxy.
 Home-page: https://github.com/ionelmc/python-lazy-object-proxy
 Author: Ionel Cristian Mărieș
@@ -74,6 +74,14 @@ Description: ========
         Changelog
         =========
         
+        
+        1.5.2 (2020-11-26)
+        ------------------
+        
+        * Added Python 3.9 wheels.
+        * Removed Python 2.7 Windows wheels
+          (not supported on newest image with Python 3.9).
+        
         1.5.1 (2020-07-22)
         ------------------
         
@@ -168,6 +176,7 @@ Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Utilities
diff --git a/README.rst b/README.rst
index dc7a1f6..c5adba1 100644
--- a/README.rst
+++ b/README.rst
@@ -55,9 +55,9 @@ Overview
     :alt: Supported implementations
     :target: https://pypi.org/project/lazy-object-proxy
 
-.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-lazy-object-proxy/v1.5.1.svg
+.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-lazy-object-proxy/v1.5.2.svg
     :alt: Commits since latest release
-    :target: https://github.com/ionelmc/python-lazy-object-proxy/compare/v1.5.1...master
+    :target: https://github.com/ionelmc/python-lazy-object-proxy/compare/v1.5.2...master
 
 
 
diff --git a/ci/requirements.txt b/ci/requirements.txt
index d7f5177..b8aff6a 100644
--- a/ci/requirements.txt
+++ b/ci/requirements.txt
@@ -2,3 +2,6 @@ virtualenv>=16.6.0
 pip>=19.1.1
 setuptools>=18.0.1
 six>=1.14.0
+importlib-metadata>=1.0
+twine
+tox-wheel
diff --git a/ci/templates/.appveyor.yml b/ci/templates/.appveyor.yml
index 69d2c19..66a2f9f 100644
--- a/ci/templates/.appveyor.yml
+++ b/ci/templates/.appveyor.yml
@@ -1,5 +1,6 @@
 version: '{branch}-{build}'
 build: off
+image: Visual Studio 2019
 environment:
   global:
     TWINE_USERNAME: ionel
@@ -12,7 +13,7 @@ environment:
       PYTHON_VERSION: '3.6'
       PYTHON_ARCH: '32'
 {% for env in tox_environments %}
-{% if env.startswith(('py2', 'py3')) %}
+{% if env.startswith('py3') %}
     - TOXENV: {{ env }}{% if env.endswith('-cover') %},codecov,coveralls{% endif %}{{ "" }}
       TOXPYTHON: C:\Python{{ env[2:4] }}\python.exe
       PYTHON_HOME: C:\Python{{ env[2:4] }}
@@ -37,7 +38,7 @@ init:
   - ps: echo $env:TOXENV
   - ps: ls C:\Python*
 install:
-  - '%PYTHON_HOME%\python -mpip install --progress-bar=off twine tox-wheel -rci/requirements.txt'
+  - '%PYTHON_HOME%\python -mpip install --progress-bar=off -rci/requirements.txt'
   - '%PYTHON_HOME%\Scripts\virtualenv --version'
   - '%PYTHON_HOME%\Scripts\easy_install --version'
   - '%PYTHON_HOME%\Scripts\pip --version'
diff --git a/ci/templates/.travis.yml b/ci/templates/.travis.yml
index 49db38c..e3f5d9f 100644
--- a/ci/templates/.travis.yml
+++ b/ci/templates/.travis.yml
@@ -1,4 +1,7 @@
 language: python
+dist: xenial
+virt: lxd
+cache: false
 env:
   global:
     - LD_PRELOAD=libSegFault.so
@@ -14,7 +17,7 @@ matrix:
       env:
         - TOXENV=docs
 {%- for env in tox_environments %}{{ '' }}
-{%- if 'py38' in env or 'py27' in env %}{{ '' }}
+{%- if 'py39' in env or 'py27' in env %}{{ '' }}
     - os: osx
       osx_image: xcode11
       language: generic
@@ -30,8 +33,6 @@ matrix:
         - TOXENV={{ env }}{% if 'cover' in env %},codecov,extension-coveralls,coveralls{% endif %}
 {%- if 'pypy' not in env and 'nocov' in env %}{{ '' }}
         - WHEEL_MANYLINUX="{% if arch == 'arm64' %}2014-arm{% else %}1{% endif %}{{ '' }} cp{{ env.split('-')[0][2:] }}"
-{%- elif 'pypy' not in env and 'nocov' in env %}{{ '' }}
-        - WHEEL_PATH=.tox/dist
 {%- endif %}
 {%- if env.startswith('pypy3') %}{{ '' }}
         - TOXPYTHON=pypy3
@@ -57,7 +58,7 @@ before_install:
       export PATH="/usr/local/opt/python/libexec/bin:${PATH}"
     fi
 install:
-  - python -mpip install --progress-bar=off twine tox-wheel -rci/requirements.txt
+  - python -mpip install --progress-bar=off --upgrade --ignore-installed -rci/requirements.txt
   - virtualenv --version
   - easy_install --version
   - pip --version
diff --git a/docs/conf.py b/docs/conf.py
index 7d2ba55..16d0e69 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -27,7 +27,7 @@ try:
     version = release = get_distribution('lazy_object_proxy').version
 except Exception:
     traceback.print_exc()
-    version = release = '1.5.1'
+    version = release = '1.5.2'
 
 pygments_style = 'trac'
 templates_path = ['.']
diff --git a/setup.cfg b/setup.cfg
index 017fc86..69265bd 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -4,7 +4,7 @@ setup_requires =
 
 [flake8]
 max-line-length = 140
-exclude = .tox,.eggs,ci/templates
+exclude = .tox,.eggs,ci/templates,build,dist
 
 [tool:pytest]
 norecursedirs = 
@@ -40,8 +40,7 @@ line_length = 120
 known_first_party = lazy_object_proxy
 default_section = THIRDPARTY
 forced_separate = test_lazy_object_proxy
-not_skip = __init__.py
-skip = .tox,.eggs,ci/templates
+skip = .tox,.eggs,ci/templates,build,dist
 
 [egg_info]
 tag_build = 
diff --git a/setup.py b/setup.py
index 1ac48e9..b66268a 100755
--- a/setup.py
+++ b/setup.py
@@ -67,7 +67,7 @@ setup(
     use_scm_version={
         'local_scheme': 'dirty-tag',
         'write_to': 'src/lazy_object_proxy/_version.py',
-        'fallback_version': '1.5.1',
+        'fallback_version': '1.5.2',
     },
     license='BSD-2-Clause',
     description='A fast and thorough lazy object proxy.',
@@ -98,6 +98,7 @@ setup(
         'Programming Language :: Python :: 3.6',
         'Programming Language :: Python :: 3.7',
         'Programming Language :: Python :: 3.8',
+        'Programming Language :: Python :: 3.9',
         'Programming Language :: Python :: Implementation :: CPython',
         'Programming Language :: Python :: Implementation :: PyPy',
         # uncomment if you test on these interpreters:
diff --git a/src/lazy_object_proxy.egg-info/PKG-INFO b/src/lazy_object_proxy.egg-info/PKG-INFO
index 4e5f300..568b5b6 100644
--- a/src/lazy_object_proxy.egg-info/PKG-INFO
+++ b/src/lazy_object_proxy.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: lazy-object-proxy
-Version: 1.5.1
+Version: 1.5.2
 Summary: A fast and thorough lazy object proxy.
 Home-page: https://github.com/ionelmc/python-lazy-object-proxy
 Author: Ionel Cristian Mărieș
@@ -74,6 +74,14 @@ Description: ========
         Changelog
         =========
         
+        
+        1.5.2 (2020-11-26)
+        ------------------
+        
+        * Added Python 3.9 wheels.
+        * Removed Python 2.7 Windows wheels
+          (not supported on newest image with Python 3.9).
+        
         1.5.1 (2020-07-22)
         ------------------
         
@@ -168,6 +176,7 @@ Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Utilities
diff --git a/src/lazy_object_proxy/__init__.py b/src/lazy_object_proxy/__init__.py
index 2068a3d..19e6900 100644
--- a/src/lazy_object_proxy/__init__.py
+++ b/src/lazy_object_proxy/__init__.py
@@ -18,6 +18,6 @@ else:
 try:
     from ._version import version as __version__
 except ImportError:
-    __version__ = '1.5.1'
+    __version__ = '1.5.2'
 
 __all__ = "Proxy",
diff --git a/src/lazy_object_proxy/_version.py b/src/lazy_object_proxy/_version.py
index d037b8e..14d4f5f 100644
--- a/src/lazy_object_proxy/_version.py
+++ b/src/lazy_object_proxy/_version.py
@@ -1,4 +1,4 @@
 # coding: utf-8
 # file generated by setuptools_scm
 # don't change, don't track in version control
-version = '1.5.1'
+version = '1.5.2'
diff --git a/tox.ini b/tox.ini
index 8599ce4..9a97497 100644
--- a/tox.ini
+++ b/tox.ini
@@ -15,7 +15,7 @@ envlist =
     clean,
     check,
     docs,
-    {py27,py35,py36,py37,py38,pypy,pypy3}-{cover,nocov},
+    {py27,py35,py36,py37,py38,py39,pypy,pypy3}-{cover,nocov},
     report
 ignore_basepython_conflict = true
 
@@ -28,6 +28,7 @@ basepython =
     py36: {env:TOXPYTHON:python3.6}
     py37: {env:TOXPYTHON:python3.7}
     py38: {env:TOXPYTHON:python3.8}
+    py39: {env:TOXPYTHON:python3.9}
     {bootstrap,clean,check,report,docs,codecov,coveralls,extension-coveralls}: {env:TOXPYTHON:python3}
 setenv =
     PYTHONPATH={toxinidir}/tests
@@ -65,7 +66,7 @@ skip_install = true
 commands =
     python setup.py check --strict --metadata --restructuredtext
     flake8
-    isort --verbose --check-only --diff --recursive
+    isort --verbose --check-only --diff --filter-files .
 
 [testenv:docs]
 usedevelop = true
-- 
GitLab