Hello community,

here is the log from the commit of package python-cachetools for 
openSUSE:Factory checked in at 2020-04-19 21:35:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-cachetools (Old)
 and      /work/SRC/openSUSE:Factory/.python-cachetools.new.2738 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-cachetools"

Sun Apr 19 21:35:56 2020 rev:8 rq:769015 version:4.0.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-cachetools/python-cachetools.changes      
2019-09-23 12:10:07.297878509 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-cachetools.new.2738/python-cachetools.changes
    2020-04-19 21:36:03.202464892 +0200
@@ -1,0 +2,6 @@
+Fri Jan 24 09:43:34 UTC 2020 - Marketa Calabkova <[email protected]>
+
+- update to 4.0.0
+  * Require Python 3.5 or later.
+
+-------------------------------------------------------------------

Old:
----
  cachetools-3.1.1.tar.gz

New:
----
  cachetools-4.0.0.tar.gz

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

Other differences:
------------------
++++++ python-cachetools.spec ++++++
--- /var/tmp/diff_new_pack.0CxJg7/_old  2020-04-19 21:36:04.122466790 +0200
+++ /var/tmp/diff_new_pack.0CxJg7/_new  2020-04-19 21:36:04.126466798 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-cachetools
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,9 +16,10 @@
 #
 
 
+%define skip_python2 1
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-cachetools
-Version:        3.1.1
+Version:        4.0.0
 Release:        0
 Summary:        Extensible memoizing collections and decorators
 License:        MIT
@@ -51,7 +52,7 @@
 
 %files %{python_files}
 %license LICENSE
-%doc CHANGES.rst README.rst
+%doc CHANGELOG.rst README.rst
 %{python_sitelib}/*
 
 %changelog

++++++ cachetools-3.1.1.tar.gz -> cachetools-4.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/CHANGELOG.rst 
new/cachetools-4.0.0/CHANGELOG.rst
--- old/cachetools-3.1.1/CHANGELOG.rst  1970-01-01 01:00:00.000000000 +0100
+++ new/cachetools-4.0.0/CHANGELOG.rst  2019-12-15 20:53:38.000000000 +0100
@@ -0,0 +1,299 @@
+v4.0.0 (2019-12-15)
+===================
+
+- Require Python 3.5 or later.
+
+
+v3.1.1 (2019-05-23)
+===================
+
+- Document how to use shared caches with ``@cachedmethod``.
+
+- Fix pickling/unpickling of cache keys
+
+
+v3.1.0 (2019-01-29)
+===================
+
+- Fix Python 3.8 compatibility issue.
+
+- Use ``time.monotonic`` as default timer if available.
+
+- Improve documentation regarding thread safety.
+
+
+v3.0.0 (2018-11-04)
+===================
+
+- Officially support Python 3.7.
+
+- Drop Python 3.3 support (breaking change).
+
+- Remove ``missing`` cache constructor parameter (breaking change).
+
+- Remove ``self`` from ``@cachedmethod`` key arguments (breaking
+  change).
+
+- Add support for ``maxsize=None`` in ``cachetools.func`` decorators.
+
+
+v2.1.0 (2018-05-12)
+===================
+
+- Deprecate ``missing`` cache constructor parameter.
+
+- Handle overridden ``getsizeof()`` method in subclasses.
+
+- Fix Python 2.7 ``RRCache`` pickling issues.
+
+- Various documentation improvements.
+
+
+v2.0.1 (2017-08-11)
+===================
+
+- Officially support Python 3.6.
+
+- Move documentation to RTD.
+
+- Documentation: Update import paths for key functions (courtesy of
+  slavkoja).
+
+
+v2.0.0 (2016-10-03)
+===================
+
+- Drop Python 3.2 support (breaking change).
+
+- Drop support for deprecated features (breaking change).
+
+- Move key functions to separate package (breaking change).
+
+- Accept non-integer ``maxsize`` in ``Cache.__repr__()``.
+
+
+v1.1.6 (2016-04-01)
+===================
+
+- Reimplement ``LRUCache`` and ``TTLCache`` using
+  ``collections.OrderedDict``.  Note that this will break pickle
+  compatibility with previous versions.
+
+- Fix ``TTLCache`` not calling ``__missing__()`` of derived classes.
+
+- Handle ``ValueError`` in ``Cache.__missing__()`` for consistency
+  with caching decorators.
+
+- Improve how ``TTLCache`` handles expired items.
+
+- Use ``Counter.most_common()`` for ``LFUCache.popitem()``.
+
+
+v1.1.5 (2015-10-25)
+===================
+
+- Refactor ``Cache`` base class.  Note that this will break pickle
+  compatibility with previous versions.
+
+- Clean up ``LRUCache`` and ``TTLCache`` implementations.
+
+
+v1.1.4 (2015-10-24)
+===================
+
+- Refactor ``LRUCache`` and ``TTLCache`` implementations.  Note that
+  this will break pickle compatibility with previous versions.
+
+- Document pending removal of deprecated features.
+
+- Minor documentation improvements.
+
+
+v1.1.3 (2015-09-15)
+===================
+
+- Fix pickle tests.
+
+
+v1.1.2 (2015-09-15)
+===================
+
+- Fix pickling of large ``LRUCache`` and ``TTLCache`` instances.
+
+
+v1.1.1 (2015-09-07)
+===================
+
+- Improve key functions.
+
+- Improve documentation.
+
+- Improve unit test coverage.
+
+
+v1.1.0 (2015-08-28)
+===================
+
+- Add ``@cached`` function decorator.
+
+- Add ``hashkey`` and ``typedkey`` fuctions.
+
+- Add `key` and `lock` arguments to ``@cachedmethod``.
+
+- Set ``__wrapped__`` attributes for Python versions < 3.2.
+
+- Move ``functools`` compatible decorators to ``cachetools.func``.
+
+- Deprecate ``@cachedmethod`` `typed` argument.
+
+- Deprecate `cache` attribute for ``@cachedmethod`` wrappers.
+
+- Deprecate `getsizeof` and `lock` arguments for `cachetools.func`
+  decorator.
+
+
+v1.0.3 (2015-06-26)
+===================
+
+- Clear cache statistics when calling ``clear_cache()``.
+
+
+v1.0.2 (2015-06-18)
+===================
+
+- Allow simple cache instances to be pickled.
+
+- Refactor ``Cache.getsizeof`` and ``Cache.missing`` default
+  implementation.
+
+
+v1.0.1 (2015-06-06)
+===================
+
+- Code cleanup for improved PEP 8 conformance.
+
+- Add documentation and unit tests for using ``@cachedmethod`` with
+  generic mutable mappings.
+
+- Improve documentation.
+
+
+v1.0.0 (2014-12-19)
+===================
+
+- Provide ``RRCache.choice`` property.
+
+- Improve documentation.
+
+
+v0.8.2 (2014-12-15)
+===================
+
+- Use a ``NestedTimer`` for ``TTLCache``.
+
+
+v0.8.1 (2014-12-07)
+===================
+
+- Deprecate ``Cache.getsize()``.
+
+
+v0.8.0 (2014-12-03)
+===================
+
+- Ignore ``ValueError`` raised on cache insertion in decorators.
+
+- Add ``Cache.getsize()``.
+
+- Add ``Cache.__missing__()``.
+
+- Feature freeze for `v1.0`.
+
+
+v0.7.1 (2014-11-22)
+===================
+
+- Fix `MANIFEST.in`.
+
+
+v0.7.0 (2014-11-12)
+===================
+
+- Deprecate ``TTLCache.ExpiredError``.
+
+- Add `choice` argument to ``RRCache`` constructor.
+
+- Refactor ``LFUCache``, ``LRUCache`` and ``TTLCache``.
+
+- Use custom ``NullContext`` implementation for unsynchronized
+  function decorators.
+
+
+v0.6.0 (2014-10-13)
+===================
+
+- Raise ``TTLCache.ExpiredError`` for expired ``TTLCache`` items.
+
+- Support unsynchronized function decorators.
+
+- Allow ``@cachedmethod.cache()`` to return None
+
+
+v0.5.1 (2014-09-25)
+===================
+
+- No formatting of ``KeyError`` arguments.
+
+- Update ``README.rst``.
+
+
+v0.5.0 (2014-09-23)
+===================
+
+- Do not delete expired items in TTLCache.__getitem__().
+
+- Add ``@ttl_cache`` function decorator.
+
+- Fix public ``getsizeof()`` usage.
+
+
+v0.4.0 (2014-06-16)
+===================
+
+- Add ``TTLCache``.
+
+- Add ``Cache`` base class.
+
+- Remove ``@cachedmethod`` `lock` parameter.
+
+
+v0.3.1 (2014-05-07)
+===================
+
+- Add proper locking for ``cache_clear()`` and ``cache_info()``.
+
+- Report `size` in ``cache_info()``.
+
+
+v0.3.0 (2014-05-06)
+===================
+
+- Remove ``@cache`` decorator.
+
+- Add ``size``, ``getsizeof`` members.
+
+- Add ``@cachedmethod`` decorator.
+
+
+v0.2.0 (2014-04-02)
+===================
+
+- Add ``@cache`` decorator.
+
+- Update documentation.
+
+
+v0.1.0 (2014-03-27)
+===================
+
+- Initial release.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/CHANGES.rst 
new/cachetools-4.0.0/CHANGES.rst
--- old/cachetools-3.1.1/CHANGES.rst    2019-05-23 21:48:40.000000000 +0200
+++ new/cachetools-4.0.0/CHANGES.rst    1970-01-01 01:00:00.000000000 +0100
@@ -1,293 +0,0 @@
-v3.1.1 (2019-05-23)
--------------------
-
-- Document how to use shared caches with ``@cachedmethod``.
-
-- Fix pickling/unpickling of cache keys
-
-
-v3.1.0 (2019-01-29)
--------------------
-
-- Fix Python 3.8 compatibility issue.
-
-- Use ``time.monotonic`` as default timer if available.
-
-- Improve documentation regarding thread safety.
-
-
-v3.0.0 (2018-11-04)
--------------------
-
-- Officially support Python 3.7.
-
-- Drop Python 3.3 support (breaking change).
-
-- Remove ``missing`` cache constructor parameter (breaking change).
-
-- Remove ``self`` from ``@cachedmethod`` key arguments (breaking
-  change).
-
-- Add support for ``maxsize=None`` in ``cachetools.func`` decorators.
-
-
-v2.1.0 (2018-05-12)
--------------------
-
-- Deprecate ``missing`` cache constructor parameter.
-
-- Handle overridden ``getsizeof()`` method in subclasses.
-
-- Fix Python 2.7 ``RRCache`` pickling issues.
-
-- Various documentation improvements.
-
-
-v2.0.1 (2017-08-11)
--------------------
-
-- Officially support Python 3.6.
-
-- Move documentation to RTD.
-
-- Documentation: Update import paths for key functions (courtesy of
-  slavkoja).
-
-
-v2.0.0 (2016-10-03)
--------------------
-
-- Drop Python 3.2 support (breaking change).
-
-- Drop support for deprecated features (breaking change).
-
-- Move key functions to separate package (breaking change).
-
-- Accept non-integer ``maxsize`` in ``Cache.__repr__()``.
-
-
-v1.1.6 (2016-04-01)
--------------------
-
-- Reimplement ``LRUCache`` and ``TTLCache`` using
-  ``collections.OrderedDict``.  Note that this will break pickle
-  compatibility with previous versions.
-
-- Fix ``TTLCache`` not calling ``__missing__()`` of derived classes.
-
-- Handle ``ValueError`` in ``Cache.__missing__()`` for consistency
-  with caching decorators.
-
-- Improve how ``TTLCache`` handles expired items.
-
-- Use ``Counter.most_common()`` for ``LFUCache.popitem()``.
-
-
-v1.1.5 (2015-10-25)
--------------------
-
-- Refactor ``Cache`` base class.  Note that this will break pickle
-  compatibility with previous versions.
-
-- Clean up ``LRUCache`` and ``TTLCache`` implementations.
-
-
-v1.1.4 (2015-10-24)
--------------------
-
-- Refactor ``LRUCache`` and ``TTLCache`` implementations.  Note that
-  this will break pickle compatibility with previous versions.
-
-- Document pending removal of deprecated features.
-
-- Minor documentation improvements.
-
-
-v1.1.3 (2015-09-15)
--------------------
-
-- Fix pickle tests.
-
-
-v1.1.2 (2015-09-15)
--------------------
-
-- Fix pickling of large ``LRUCache`` and ``TTLCache`` instances.
-
-
-v1.1.1 (2015-09-07)
--------------------
-
-- Improve key functions.
-
-- Improve documentation.
-
-- Improve unit test coverage.
-
-
-v1.1.0 (2015-08-28)
--------------------
-
-- Add ``@cached`` function decorator.
-
-- Add ``hashkey`` and ``typedkey`` fuctions.
-
-- Add `key` and `lock` arguments to ``@cachedmethod``.
-
-- Set ``__wrapped__`` attributes for Python versions < 3.2.
-
-- Move ``functools`` compatible decorators to ``cachetools.func``.
-
-- Deprecate ``@cachedmethod`` `typed` argument.
-
-- Deprecate `cache` attribute for ``@cachedmethod`` wrappers.
-
-- Deprecate `getsizeof` and `lock` arguments for `cachetools.func`
-  decorator.
-
-
-v1.0.3 (2015-06-26)
--------------------
-
-- Clear cache statistics when calling ``clear_cache()``.
-
-
-v1.0.2 (2015-06-18)
--------------------
-
-- Allow simple cache instances to be pickled.
-
-- Refactor ``Cache.getsizeof`` and ``Cache.missing`` default
-  implementation.
-
-
-v1.0.1 (2015-06-06)
--------------------
-
-- Code cleanup for improved PEP 8 conformance.
-
-- Add documentation and unit tests for using ``@cachedmethod`` with
-  generic mutable mappings.
-
-- Improve documentation.
-
-
-v1.0.0 (2014-12-19)
--------------------
-
-- Provide ``RRCache.choice`` property.
-
-- Improve documentation.
-
-
-v0.8.2 (2014-12-15)
--------------------
-
-- Use a ``NestedTimer`` for ``TTLCache``.
-
-
-v0.8.1 (2014-12-07)
--------------------
-
-- Deprecate ``Cache.getsize()``.
-
-
-v0.8.0 (2014-12-03)
--------------------
-
-- Ignore ``ValueError`` raised on cache insertion in decorators.
-
-- Add ``Cache.getsize()``.
-
-- Add ``Cache.__missing__()``.
-
-- Feature freeze for `v1.0`.
-
-
-v0.7.1 (2014-11-22)
--------------------
-
-- Fix `MANIFEST.in`.
-
-
-v0.7.0 (2014-11-12)
--------------------
-
-- Deprecate ``TTLCache.ExpiredError``.
-
-- Add `choice` argument to ``RRCache`` constructor.
-
-- Refactor ``LFUCache``, ``LRUCache`` and ``TTLCache``.
-
-- Use custom ``NullContext`` implementation for unsynchronized
-  function decorators.
-
-
-v0.6.0 (2014-10-13)
--------------------
-
-- Raise ``TTLCache.ExpiredError`` for expired ``TTLCache`` items.
-
-- Support unsynchronized function decorators.
-
-- Allow ``@cachedmethod.cache()`` to return None
-
-
-v0.5.1 (2014-09-25)
--------------------
-
-- No formatting of ``KeyError`` arguments.
-
-- Update ``README.rst``.
-
-
-v0.5.0 (2014-09-23)
--------------------
-
-- Do not delete expired items in TTLCache.__getitem__().
-
-- Add ``@ttl_cache`` function decorator.
-
-- Fix public ``getsizeof()`` usage.
-
-
-v0.4.0 (2014-06-16)
--------------------
-
-- Add ``TTLCache``.
-
-- Add ``Cache`` base class.
-
-- Remove ``@cachedmethod`` `lock` parameter.
-
-
-v0.3.1 (2014-05-07)
--------------------
-
-- Add proper locking for ``cache_clear()`` and ``cache_info()``.
-
-- Report `size` in ``cache_info()``.
-
-
-v0.3.0 (2014-05-06)
--------------------
-
-- Remove ``@cache`` decorator.
-
-- Add ``size``, ``getsizeof`` members.
-
-- Add ``@cachedmethod`` decorator.
-
-
-v0.2.0 (2014-04-02)
--------------------
-
-- Add ``@cache`` decorator.
-
-- Update documentation.
-
-
-v0.1.0 (2014-03-27)
--------------------
-
-- Initial release.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/MANIFEST.in 
new/cachetools-4.0.0/MANIFEST.in
--- old/cachetools-3.1.1/MANIFEST.in    2019-04-10 19:41:37.000000000 +0200
+++ new/cachetools-4.0.0/MANIFEST.in    2019-12-15 20:53:38.000000000 +0100
@@ -1,4 +1,4 @@
-include CHANGES.rst
+include CHANGELOG.rst
 include LICENSE
 include MANIFEST.in
 include README.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/PKG-INFO 
new/cachetools-4.0.0/PKG-INFO
--- old/cachetools-3.1.1/PKG-INFO       2019-05-23 21:50:01.000000000 +0200
+++ new/cachetools-4.0.0/PKG-INFO       2019-12-15 20:54:06.000000000 +0100
@@ -1,16 +1,36 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
 Name: cachetools
-Version: 3.1.1
+Version: 4.0.0
 Summary: Extensible memoizing collections and decorators
-Home-page: https://github.com/tkem/cachetools
+Home-page: https://github.com/tkem/cachetools/
 Author: Thomas Kemmer
 Author-email: [email protected]
 License: MIT
 Description: cachetools
         
========================================================================
         
+        .. image:: http://img.shields.io/pypi/v/cachetools
+           :target: https://pypi.org/project/cachetools/
+           :alt: Latest PyPI version
+        
+        .. image:: https://img.shields.io/readthedocs/cachetools
+           :target: http://cachetools.readthedocs.io/
+           :alt: Documentation build status
+        
+        .. image:: http://img.shields.io/travis/tkem/cachetools
+           :target: https://travis-ci.org/tkem/cachetools/
+           :alt: Travis CI build status
+        
+        .. image:: http://img.shields.io/coveralls/tkem/cachetools
+           :target: https://coveralls.io/r/tkem/cachetools
+           :alt: Test coverage
+        
+        .. image:: https://img.shields.io/github/license/tkem/cachetools
+           :target: http://raw.github.com/tkem/cachetools/master/LICENSE
+           :alt: License
+        
         This module provides various memoizing collections and decorators,
-        including variants of the Python 3 Standard Library `@lru_cache`_
+        including variants of the Python Standard Library's `@lru_cache`_
         function decorator.
         
         .. code-block:: python
@@ -48,39 +68,22 @@
         implemented, and decorators for easily memoizing function and method
         calls are provided, too.
         
-        For more information, please refer to the online documentation_.
-        
         
         Installation
         
------------------------------------------------------------------------
         
-        Install cachetools using pip::
+        cachetools is available from PyPI_ and can be installed by running::
         
-            pip install cachetools
+          pip install cachetools
         
         
         Project Resources
         
------------------------------------------------------------------------
         
-        .. image:: http://img.shields.io/pypi/v/cachetools.svg?style=flat
-           :target: https://pypi.python.org/pypi/cachetools/
-           :alt: Latest PyPI version
-        
-        .. image:: 
http://img.shields.io/travis/tkem/cachetools/master.svg?style=flat
-           :target: https://travis-ci.org/tkem/cachetools/
-           :alt: Travis CI build status
-        
-        .. image:: 
http://img.shields.io/coveralls/tkem/cachetools/master.svg?style=flat
-           :target: https://coveralls.io/r/tkem/cachetools
-           :alt: Test coverage
-        
-        .. image:: 
https://readthedocs.org/projects/cachetools/badge/?version=latest&style=flat
-           :target: http://cachetools.readthedocs.io/en/latest/
-           :alt: Documentation Status
-        
-        - `Issue Tracker`_
-        - `Source Code`_
-        - `Change Log`_
+        - `Documentation`_
+        - `Issue tracker`_
+        - `Source code`_
+        - `Change log`_
         
         
         License
@@ -96,13 +99,13 @@
         .. _mapping: http://docs.python.org/dev/glossary.html#term-mapping
         .. _cache algorithm: http://en.wikipedia.org/wiki/Cache_algorithms
         
-        .. _Documentation: http://cachetools.readthedocs.io/en/latest/
-        .. _Issue Tracker: https://github.com/tkem/cachetools/issues/
-        .. _Source Code: https://github.com/tkem/cachetools/
-        .. _Change Log: 
https://github.com/tkem/cachetools/blob/master/CHANGES.rst
+        .. _PyPI: https://pypi.org/project/cachetools/
+        .. _Documentation: https://cachetools.readthedocs.io/
+        .. _Issue tracker: https://github.com/tkem/cachetools/issues/
+        .. _Source code: https://github.com/tkem/cachetools/
+        .. _Change log: 
https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst
         .. _MIT License: http://raw.github.com/tkem/cachetools/master/LICENSE
         
-Keywords: cache caching memoize memoizing memoization LRU LFU TTL
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Other Environment
@@ -110,13 +113,10 @@
 Classifier: License :: OSI Approved :: MIT License
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
-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
-Classifier: Programming Language :: Python :: Implementation :: CPython
-Classifier: Programming Language :: Python :: Implementation :: PyPy
+Classifier: Programming Language :: Python :: 3.8
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Requires-Python: ~=3.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/README.rst 
new/cachetools-4.0.0/README.rst
--- old/cachetools-3.1.1/README.rst     2019-04-10 19:41:37.000000000 +0200
+++ new/cachetools-4.0.0/README.rst     2019-12-15 20:53:38.000000000 +0100
@@ -1,8 +1,28 @@
 cachetools
 ========================================================================
 
+.. image:: http://img.shields.io/pypi/v/cachetools
+   :target: https://pypi.org/project/cachetools/
+   :alt: Latest PyPI version
+
+.. image:: https://img.shields.io/readthedocs/cachetools
+   :target: http://cachetools.readthedocs.io/
+   :alt: Documentation build status
+
+.. image:: http://img.shields.io/travis/tkem/cachetools
+   :target: https://travis-ci.org/tkem/cachetools/
+   :alt: Travis CI build status
+
+.. image:: http://img.shields.io/coveralls/tkem/cachetools
+   :target: https://coveralls.io/r/tkem/cachetools
+   :alt: Test coverage
+
+.. image:: https://img.shields.io/github/license/tkem/cachetools
+   :target: http://raw.github.com/tkem/cachetools/master/LICENSE
+   :alt: License
+
 This module provides various memoizing collections and decorators,
-including variants of the Python 3 Standard Library `@lru_cache`_
+including variants of the Python Standard Library's `@lru_cache`_
 function decorator.
 
 .. code-block:: python
@@ -40,39 +60,22 @@
 implemented, and decorators for easily memoizing function and method
 calls are provided, too.
 
-For more information, please refer to the online documentation_.
-
 
 Installation
 ------------------------------------------------------------------------
 
-Install cachetools using pip::
+cachetools is available from PyPI_ and can be installed by running::
 
-    pip install cachetools
+  pip install cachetools
 
 
 Project Resources
 ------------------------------------------------------------------------
 
-.. image:: http://img.shields.io/pypi/v/cachetools.svg?style=flat
-   :target: https://pypi.python.org/pypi/cachetools/
-   :alt: Latest PyPI version
-
-.. image:: http://img.shields.io/travis/tkem/cachetools/master.svg?style=flat
-   :target: https://travis-ci.org/tkem/cachetools/
-   :alt: Travis CI build status
-
-.. image:: 
http://img.shields.io/coveralls/tkem/cachetools/master.svg?style=flat
-   :target: https://coveralls.io/r/tkem/cachetools
-   :alt: Test coverage
-
-.. image:: 
https://readthedocs.org/projects/cachetools/badge/?version=latest&style=flat
-   :target: http://cachetools.readthedocs.io/en/latest/
-   :alt: Documentation Status
-
-- `Issue Tracker`_
-- `Source Code`_
-- `Change Log`_
+- `Documentation`_
+- `Issue tracker`_
+- `Source code`_
+- `Change log`_
 
 
 License
@@ -88,8 +91,9 @@
 .. _mapping: http://docs.python.org/dev/glossary.html#term-mapping
 .. _cache algorithm: http://en.wikipedia.org/wiki/Cache_algorithms
 
-.. _Documentation: http://cachetools.readthedocs.io/en/latest/
-.. _Issue Tracker: https://github.com/tkem/cachetools/issues/
-.. _Source Code: https://github.com/tkem/cachetools/
-.. _Change Log: https://github.com/tkem/cachetools/blob/master/CHANGES.rst
+.. _PyPI: https://pypi.org/project/cachetools/
+.. _Documentation: https://cachetools.readthedocs.io/
+.. _Issue tracker: https://github.com/tkem/cachetools/issues/
+.. _Source code: https://github.com/tkem/cachetools/
+.. _Change log: https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst
 .. _MIT License: http://raw.github.com/tkem/cachetools/master/LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/cachetools/__init__.py 
new/cachetools-4.0.0/cachetools/__init__.py
--- old/cachetools-3.1.1/cachetools/__init__.py 2019-05-23 21:48:11.000000000 
+0200
+++ new/cachetools-4.0.0/cachetools/__init__.py 2019-12-15 20:53:38.000000000 
+0100
@@ -1,112 +1,20 @@
 """Extensible memoizing collections and decorators."""
 
-from __future__ import absolute_import
-
-import functools
-
-from . import keys
 from .cache import Cache
+from .decorators import cached, cachedmethod
 from .lfu import LFUCache
 from .lru import LRUCache
 from .rr import RRCache
 from .ttl import TTLCache
 
 __all__ = (
-    'Cache', 'LFUCache', 'LRUCache', 'RRCache', 'TTLCache',
-    'cached', 'cachedmethod'
+    'Cache',
+    'LFUCache',
+    'LRUCache',
+    'RRCache',
+    'TTLCache',
+    'cached',
+    'cachedmethod'
 )
 
-__version__ = '3.1.1'
-
-if hasattr(functools.update_wrapper(lambda f: f(), lambda: 42), '__wrapped__'):
-    _update_wrapper = functools.update_wrapper
-else:
-    def _update_wrapper(wrapper, wrapped):
-        functools.update_wrapper(wrapper, wrapped)
-        wrapper.__wrapped__ = wrapped
-        return wrapper
-
-
-def cached(cache, key=keys.hashkey, lock=None):
-    """Decorator to wrap a function with a memoizing callable that saves
-    results in a cache.
-
-    """
-    def decorator(func):
-        if cache is None:
-            def wrapper(*args, **kwargs):
-                return func(*args, **kwargs)
-        elif lock is None:
-            def wrapper(*args, **kwargs):
-                k = key(*args, **kwargs)
-                try:
-                    return cache[k]
-                except KeyError:
-                    pass  # key not found
-                v = func(*args, **kwargs)
-                try:
-                    cache[k] = v
-                except ValueError:
-                    pass  # value too large
-                return v
-        else:
-            def wrapper(*args, **kwargs):
-                k = key(*args, **kwargs)
-                try:
-                    with lock:
-                        return cache[k]
-                except KeyError:
-                    pass  # key not found
-                v = func(*args, **kwargs)
-                try:
-                    with lock:
-                        cache[k] = v
-                except ValueError:
-                    pass  # value too large
-                return v
-        return _update_wrapper(wrapper, func)
-    return decorator
-
-
-def cachedmethod(cache, key=keys.hashkey, lock=None):
-    """Decorator to wrap a class or instance method with a memoizing
-    callable that saves results in a cache.
-
-    """
-    def decorator(method):
-        if lock is None:
-            def wrapper(self, *args, **kwargs):
-                c = cache(self)
-                if c is None:
-                    return method(self, *args, **kwargs)
-                k = key(*args, **kwargs)
-                try:
-                    return c[k]
-                except KeyError:
-                    pass  # key not found
-                v = method(self, *args, **kwargs)
-                try:
-                    c[k] = v
-                except ValueError:
-                    pass  # value too large
-                return v
-        else:
-            def wrapper(self, *args, **kwargs):
-                c = cache(self)
-                if c is None:
-                    return method(self, *args, **kwargs)
-                k = key(*args, **kwargs)
-                try:
-                    with lock(self):
-                        return c[k]
-                except KeyError:
-                    pass  # key not found
-                v = method(self, *args, **kwargs)
-                try:
-                    with lock(self):
-                        c[k] = v
-                except ValueError:
-                    pass  # value too large
-                return v
-        return _update_wrapper(wrapper, method)
-    return decorator
+__version__ = '4.0.0'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/cachetools/abc.py 
new/cachetools-4.0.0/cachetools/abc.py
--- old/cachetools-3.1.1/cachetools/abc.py      2019-04-10 19:41:37.000000000 
+0200
+++ new/cachetools-4.0.0/cachetools/abc.py      2019-12-15 20:53:38.000000000 
+0100
@@ -1,11 +1,5 @@
-from __future__ import absolute_import
-
 from abc import abstractmethod
-
-try:
-    from collections.abc import MutableMapping
-except ImportError:
-    from collections import MutableMapping
+from collections.abc import MutableMapping
 
 
 class DefaultMapping(MutableMapping):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/cachetools/cache.py 
new/cachetools-4.0.0/cachetools/cache.py
--- old/cachetools-3.1.1/cachetools/cache.py    2019-04-10 19:41:37.000000000 
+0200
+++ new/cachetools-4.0.0/cachetools/cache.py    2019-12-15 20:53:38.000000000 
+0100
@@ -1,5 +1,3 @@
-from __future__ import absolute_import
-
 from .abc import DefaultMapping
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/cachetools/decorators.py 
new/cachetools-4.0.0/cachetools/decorators.py
--- old/cachetools-3.1.1/cachetools/decorators.py       1970-01-01 
01:00:00.000000000 +0100
+++ new/cachetools-4.0.0/cachetools/decorators.py       2019-12-15 
20:53:38.000000000 +0100
@@ -0,0 +1,88 @@
+import functools
+
+from .keys import hashkey
+
+
+def cached(cache, key=hashkey, lock=None):
+    """Decorator to wrap a function with a memoizing callable that saves
+    results in a cache.
+
+    """
+    def decorator(func):
+        if cache is None:
+            def wrapper(*args, **kwargs):
+                return func(*args, **kwargs)
+        elif lock is None:
+            def wrapper(*args, **kwargs):
+                k = key(*args, **kwargs)
+                try:
+                    return cache[k]
+                except KeyError:
+                    pass  # key not found
+                v = func(*args, **kwargs)
+                try:
+                    cache[k] = v
+                except ValueError:
+                    pass  # value too large
+                return v
+        else:
+            def wrapper(*args, **kwargs):
+                k = key(*args, **kwargs)
+                try:
+                    with lock:
+                        return cache[k]
+                except KeyError:
+                    pass  # key not found
+                v = func(*args, **kwargs)
+                try:
+                    with lock:
+                        cache[k] = v
+                except ValueError:
+                    pass  # value too large
+                return v
+        return functools.update_wrapper(wrapper, func)
+    return decorator
+
+
+def cachedmethod(cache, key=hashkey, lock=None):
+    """Decorator to wrap a class or instance method with a memoizing
+    callable that saves results in a cache.
+
+    """
+    def decorator(method):
+        if lock is None:
+            def wrapper(self, *args, **kwargs):
+                c = cache(self)
+                if c is None:
+                    return method(self, *args, **kwargs)
+                k = key(*args, **kwargs)
+                try:
+                    return c[k]
+                except KeyError:
+                    pass  # key not found
+                v = method(self, *args, **kwargs)
+                try:
+                    c[k] = v
+                except ValueError:
+                    pass  # value too large
+                return v
+        else:
+            def wrapper(self, *args, **kwargs):
+                c = cache(self)
+                if c is None:
+                    return method(self, *args, **kwargs)
+                k = key(*args, **kwargs)
+                try:
+                    with lock(self):
+                        return c[k]
+                except KeyError:
+                    pass  # key not found
+                v = method(self, *args, **kwargs)
+                try:
+                    with lock(self):
+                        c[k] = v
+                except ValueError:
+                    pass  # value too large
+                return v
+        return functools.update_wrapper(wrapper, method)
+    return decorator
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/cachetools/func.py 
new/cachetools-4.0.0/cachetools/func.py
--- old/cachetools-3.1.1/cachetools/func.py     2019-04-10 19:41:37.000000000 
+0200
+++ new/cachetools-4.0.0/cachetools/func.py     2019-12-15 20:53:38.000000000 
+0100
@@ -1,15 +1,9 @@
 """`functools.lru_cache` compatible memoizing function decorators."""
 
-from __future__ import absolute_import
-
 import collections
 import functools
 import random
-
-try:
-    from time import monotonic as default_timer
-except ImportError:
-    from time import time as default_timer
+import time
 
 try:
     from threading import RLock
@@ -85,8 +79,6 @@
                 pass  # value too large
             return v
         functools.update_wrapper(wrapper, func)
-        if not hasattr(wrapper, '__wrapped__'):
-            wrapper.__wrapped__ = func  # Python 2.7
         wrapper.cache_info = cache_info
         wrapper.cache_clear = cache_clear
         return wrapper
@@ -129,7 +121,7 @@
         return _cache(RRCache(maxsize, choice), typed)
 
 
-def ttl_cache(maxsize=128, ttl=600, timer=default_timer, typed=False):
+def ttl_cache(maxsize=128, ttl=600, timer=time.monotonic, typed=False):
     """Decorator to wrap a function with a memoizing callable that saves
     up to `maxsize` results based on a Least Recently Used (LRU)
     algorithm with a per-item time-to-live (TTL) value.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/cachetools/keys.py 
new/cachetools-4.0.0/cachetools/keys.py
--- old/cachetools-3.1.1/cachetools/keys.py     2019-05-23 21:48:11.000000000 
+0200
+++ new/cachetools-4.0.0/cachetools/keys.py     2019-12-15 20:53:38.000000000 
+0100
@@ -1,7 +1,5 @@
 """Key functions for memoizing decorators."""
 
-from __future__ import absolute_import
-
 __all__ = ('hashkey', 'typedkey')
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/cachetools/lfu.py 
new/cachetools-4.0.0/cachetools/lfu.py
--- old/cachetools-3.1.1/cachetools/lfu.py      2019-04-10 19:41:37.000000000 
+0200
+++ new/cachetools-4.0.0/cachetools/lfu.py      2019-12-15 20:53:38.000000000 
+0100
@@ -1,5 +1,3 @@
-from __future__ import absolute_import
-
 import collections
 
 from .cache import Cache
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/cachetools/lru.py 
new/cachetools-4.0.0/cachetools/lru.py
--- old/cachetools-3.1.1/cachetools/lru.py      2019-04-10 19:41:37.000000000 
+0200
+++ new/cachetools-4.0.0/cachetools/lru.py      2019-12-15 20:53:38.000000000 
+0100
@@ -1,5 +1,3 @@
-from __future__ import absolute_import
-
 import collections
 
 from .cache import Cache
@@ -34,15 +32,8 @@
         else:
             return (key, self.pop(key))
 
-    if hasattr(collections.OrderedDict, 'move_to_end'):
-        def __update(self, key):
-            try:
-                self.__order.move_to_end(key)
-            except KeyError:
-                self.__order[key] = None
-    else:
-        def __update(self, key):
-            try:
-                self.__order[key] = self.__order.pop(key)
-            except KeyError:
-                self.__order[key] = None
+    def __update(self, key):
+        try:
+            self.__order.move_to_end(key)
+        except KeyError:
+            self.__order[key] = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/cachetools/rr.py 
new/cachetools-4.0.0/cachetools/rr.py
--- old/cachetools-3.1.1/cachetools/rr.py       2019-04-10 19:41:37.000000000 
+0200
+++ new/cachetools-4.0.0/cachetools/rr.py       2019-12-15 20:53:38.000000000 
+0100
@@ -1,5 +1,3 @@
-from __future__ import absolute_import
-
 import random
 
 from .cache import Cache
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/cachetools/ttl.py 
new/cachetools-4.0.0/cachetools/ttl.py
--- old/cachetools-3.1.1/cachetools/ttl.py      2019-04-10 19:41:37.000000000 
+0200
+++ new/cachetools-4.0.0/cachetools/ttl.py      2019-12-15 20:53:38.000000000 
+0100
@@ -1,11 +1,5 @@
-from __future__ import absolute_import
-
 import collections
-
-try:
-    from time import monotonic as default_timer
-except ImportError:
-    from time import time as default_timer
+import time
 
 from .cache import Cache
 
@@ -61,7 +55,7 @@
 class TTLCache(Cache):
     """LRU Cache implementation with per-item time-to-live (TTL) value."""
 
-    def __init__(self, maxsize, ttl, timer=default_timer, getsizeof=None):
+    def __init__(self, maxsize, ttl, timer=time.monotonic, getsizeof=None):
         Cache.__init__(self, maxsize, getsizeof)
         self.__root = root = _Link()
         root.prev = root.next = root
@@ -208,13 +202,7 @@
             else:
                 return (key, self.pop(key))
 
-    if hasattr(collections.OrderedDict, 'move_to_end'):
-        def __getlink(self, key):
-            value = self.__links[key]
-            self.__links.move_to_end(key)
-            return value
-    else:
-        def __getlink(self, key):
-            value = self.__links.pop(key)
-            self.__links[key] = value
-            return value
+    def __getlink(self, key):
+        value = self.__links[key]
+        self.__links.move_to_end(key)
+        return value
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/cachetools.egg-info/PKG-INFO 
new/cachetools-4.0.0/cachetools.egg-info/PKG-INFO
--- old/cachetools-3.1.1/cachetools.egg-info/PKG-INFO   2019-05-23 
21:50:01.000000000 +0200
+++ new/cachetools-4.0.0/cachetools.egg-info/PKG-INFO   2019-12-15 
20:54:06.000000000 +0100
@@ -1,16 +1,36 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
 Name: cachetools
-Version: 3.1.1
+Version: 4.0.0
 Summary: Extensible memoizing collections and decorators
-Home-page: https://github.com/tkem/cachetools
+Home-page: https://github.com/tkem/cachetools/
 Author: Thomas Kemmer
 Author-email: [email protected]
 License: MIT
 Description: cachetools
         
========================================================================
         
+        .. image:: http://img.shields.io/pypi/v/cachetools
+           :target: https://pypi.org/project/cachetools/
+           :alt: Latest PyPI version
+        
+        .. image:: https://img.shields.io/readthedocs/cachetools
+           :target: http://cachetools.readthedocs.io/
+           :alt: Documentation build status
+        
+        .. image:: http://img.shields.io/travis/tkem/cachetools
+           :target: https://travis-ci.org/tkem/cachetools/
+           :alt: Travis CI build status
+        
+        .. image:: http://img.shields.io/coveralls/tkem/cachetools
+           :target: https://coveralls.io/r/tkem/cachetools
+           :alt: Test coverage
+        
+        .. image:: https://img.shields.io/github/license/tkem/cachetools
+           :target: http://raw.github.com/tkem/cachetools/master/LICENSE
+           :alt: License
+        
         This module provides various memoizing collections and decorators,
-        including variants of the Python 3 Standard Library `@lru_cache`_
+        including variants of the Python Standard Library's `@lru_cache`_
         function decorator.
         
         .. code-block:: python
@@ -48,39 +68,22 @@
         implemented, and decorators for easily memoizing function and method
         calls are provided, too.
         
-        For more information, please refer to the online documentation_.
-        
         
         Installation
         
------------------------------------------------------------------------
         
-        Install cachetools using pip::
+        cachetools is available from PyPI_ and can be installed by running::
         
-            pip install cachetools
+          pip install cachetools
         
         
         Project Resources
         
------------------------------------------------------------------------
         
-        .. image:: http://img.shields.io/pypi/v/cachetools.svg?style=flat
-           :target: https://pypi.python.org/pypi/cachetools/
-           :alt: Latest PyPI version
-        
-        .. image:: 
http://img.shields.io/travis/tkem/cachetools/master.svg?style=flat
-           :target: https://travis-ci.org/tkem/cachetools/
-           :alt: Travis CI build status
-        
-        .. image:: 
http://img.shields.io/coveralls/tkem/cachetools/master.svg?style=flat
-           :target: https://coveralls.io/r/tkem/cachetools
-           :alt: Test coverage
-        
-        .. image:: 
https://readthedocs.org/projects/cachetools/badge/?version=latest&style=flat
-           :target: http://cachetools.readthedocs.io/en/latest/
-           :alt: Documentation Status
-        
-        - `Issue Tracker`_
-        - `Source Code`_
-        - `Change Log`_
+        - `Documentation`_
+        - `Issue tracker`_
+        - `Source code`_
+        - `Change log`_
         
         
         License
@@ -96,13 +99,13 @@
         .. _mapping: http://docs.python.org/dev/glossary.html#term-mapping
         .. _cache algorithm: http://en.wikipedia.org/wiki/Cache_algorithms
         
-        .. _Documentation: http://cachetools.readthedocs.io/en/latest/
-        .. _Issue Tracker: https://github.com/tkem/cachetools/issues/
-        .. _Source Code: https://github.com/tkem/cachetools/
-        .. _Change Log: 
https://github.com/tkem/cachetools/blob/master/CHANGES.rst
+        .. _PyPI: https://pypi.org/project/cachetools/
+        .. _Documentation: https://cachetools.readthedocs.io/
+        .. _Issue tracker: https://github.com/tkem/cachetools/issues/
+        .. _Source code: https://github.com/tkem/cachetools/
+        .. _Change log: 
https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst
         .. _MIT License: http://raw.github.com/tkem/cachetools/master/LICENSE
         
-Keywords: cache caching memoize memoizing memoization LRU LFU TTL
 Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Other Environment
@@ -110,13 +113,10 @@
 Classifier: License :: OSI Approved :: MIT License
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
-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
-Classifier: Programming Language :: Python :: Implementation :: CPython
-Classifier: Programming Language :: Python :: Implementation :: PyPy
+Classifier: Programming Language :: Python :: 3.8
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Requires-Python: ~=3.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/cachetools.egg-info/SOURCES.txt 
new/cachetools-4.0.0/cachetools.egg-info/SOURCES.txt
--- old/cachetools-3.1.1/cachetools.egg-info/SOURCES.txt        2019-05-23 
21:50:01.000000000 +0200
+++ new/cachetools-4.0.0/cachetools.egg-info/SOURCES.txt        2019-12-15 
20:54:06.000000000 +0100
@@ -1,4 +1,4 @@
-CHANGES.rst
+CHANGELOG.rst
 LICENSE
 MANIFEST.in
 README.rst
@@ -8,6 +8,7 @@
 cachetools/__init__.py
 cachetools/abc.py
 cachetools/cache.py
+cachetools/decorators.py
 cachetools/func.py
 cachetools/keys.py
 cachetools/lfu.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/docs/conf.py 
new/cachetools-4.0.0/docs/conf.py
--- old/cachetools-3.1.1/docs/conf.py   2019-04-10 19:41:37.000000000 +0200
+++ new/cachetools-4.0.0/docs/conf.py   2019-12-15 20:53:38.000000000 +0100
@@ -1,13 +1,16 @@
-def get_version(filename):
-    from re import findall
-    with open(filename) as f:
-        metadata = dict(findall(r"__([a-z]+)__ = '([^']+)'", f.read()))
-    return metadata['version']
+def get_version():
+    import configparser
+    import pathlib
+
+    cp = configparser.ConfigParser()
+    # Python 3.5 ConfigParser does not accept Path as filename
+    cp.read(str(pathlib.Path(__file__).parent.parent / "setup.cfg"))
+    return cp["metadata"]["version"]
 
 
 project = 'cachetools'
 copyright = '2014-2019 Thomas Kemmer'
-version = get_version(b'../cachetools/__init__.py')
+version = get_version()
 release = version
 
 extensions = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/docs/index.rst 
new/cachetools-4.0.0/docs/index.rst
--- old/cachetools-3.1.1/docs/index.rst 2019-05-23 21:48:11.000000000 +0200
+++ new/cachetools-4.0.0/docs/index.rst 2019-12-15 20:53:38.000000000 +0100
@@ -1,10 +1,11 @@
+*********************************************************************
 :mod:`cachetools` --- Extensible memoizing collections and decorators
-=======================================================================
+*********************************************************************
 
 .. module:: cachetools
 
 This module provides various memoizing collections and decorators,
-including variants of the Python 3 Standard Library `@lru_cache`_
+including variants of the Python Standard Library's `@lru_cache`_
 function decorator.
 
 For the purpose of this module, a *cache* is a mutable_ mapping_ of a
@@ -27,12 +28,12 @@
    import operator
    from cachetools import cached, cachedmethod, LRUCache
 
-   import mock
+   from unittest import mock
    urllib = mock.MagicMock()
 
 
 Cache implementations
-------------------------------------------------------------------------
+=====================
 
 This module provides several classes implementing caches using
 different cache algorithms.  All these classes derive from class
@@ -101,10 +102,8 @@
    will be discarded first to make space when necessary.
 
    By default, the time-to-live is specified in seconds and
-   :func:`time.monotonic` is used to retrieve the current time.  If
-   :func:`time.monotonic` is not available, e.g. when running Python
-   2.7, :func:`time.time` will be used.  A custom `timer` function can
-   be supplied if needed.
+   :func:`time.monotonic` is used to retrieve the current time.  A
+   custom `timer` function can be supplied if needed.
 
    .. method:: expire(self, time=None)
 
@@ -119,7 +118,7 @@
 
 
 Extending cache classes
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+-----------------------
 
 Sometimes it may be desirable to notice when and what cache items are
 evicted, i.e. removed from a cache to make room for new items.  Since
@@ -174,7 +173,7 @@
 
 
 Memoizing decorators
-------------------------------------------------------------------------
+====================
 
 The :mod:`cachetools` module provides decorators for memoizing
 function and method calls.  This can save time when a function is
@@ -363,8 +362,9 @@
       RFC #1: ...
 
 
+*****************************************************************
 :mod:`cachetools.keys` --- Key functions for memoizing decorators
-============================================================================
+*****************************************************************
 
 .. module:: cachetools.keys
 
@@ -407,8 +407,9 @@
   @cached(LRUCache(maxsize=128), key=envkey)
 
 
+****************************************************************************
 :mod:`cachetools.func` --- :func:`functools.lru_cache` compatible decorators
-============================================================================
+****************************************************************************
 
 .. module:: cachetools.func
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/setup.cfg 
new/cachetools-4.0.0/setup.cfg
--- old/cachetools-3.1.1/setup.cfg      2019-05-23 21:50:01.000000000 +0200
+++ new/cachetools-4.0.0/setup.cfg      2019-12-15 20:54:06.000000000 +0100
@@ -1,17 +1,44 @@
-[flake8]
-exclude = .git,.tox
+[metadata]
+name = cachetools
+version = 4.0.0
+url = https://github.com/tkem/cachetools/
+author = Thomas Kemmer
+author_email = [email protected]
+license = MIT
+license_file = LICENSE
+description = Extensible memoizing collections and decorators
+long_description = file: README.rst
+classifiers = 
+       Development Status :: 5 - Production/Stable
+       Environment :: Other Environment
+       Intended Audience :: Developers
+       License :: OSI Approved :: MIT License
+       Operating System :: OS Independent
+       Programming Language :: Python
+       Programming Language :: Python :: 3
+       Programming Language :: Python :: 3.5
+       Programming Language :: Python :: 3.6
+       Programming Language :: Python :: 3.7
+       Programming Language :: Python :: 3.8
+       Topic :: Software Development :: Libraries :: Python Modules
+
+[options]
+packages = find:
+python_requires = ~= 3.5
 
-[wheel]
-universal = 1
+[options.packages.find]
+exclude = 
+       tests
+       tests.*
+
+[flake8]
+exclude = .git, .tox
 
 [build_sphinx]
 source-dir = docs/
 build-dir = docs/_build
 all_files = 1
 
-[upload_sphinx]
-upload-dir = docs/_build/html
-
 [egg_info]
 tag_build = 
 tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/setup.py 
new/cachetools-4.0.0/setup.py
--- old/cachetools-3.1.1/setup.py       2019-04-10 19:41:37.000000000 +0200
+++ new/cachetools-4.0.0/setup.py       2019-12-15 20:53:38.000000000 +0100
@@ -1,40 +1,3 @@
-from setuptools import find_packages, setup
+from setuptools import setup
 
-
-def get_version(filename):
-    from re import findall
-    with open(filename) as f:
-        metadata = dict(findall("__([a-z]+)__ = '([^']+)'", f.read()))
-    return metadata['version']
-
-
-setup(
-    name='cachetools',
-    version=get_version('cachetools/__init__.py'),
-    url='https://github.com/tkem/cachetools',
-    license='MIT',
-    author='Thomas Kemmer',
-    author_email='[email protected]',
-    description='Extensible memoizing collections and decorators',
-    long_description=open('README.rst').read(),
-    keywords='cache caching memoize memoizing memoization LRU LFU TTL',
-    packages=find_packages(exclude=['tests', 'tests.*']),
-    classifiers=[
-        'Development Status :: 5 - Production/Stable',
-        'Environment :: Other Environment',
-        'Intended Audience :: Developers',
-        'License :: OSI Approved :: MIT License',
-        'Operating System :: OS Independent',
-        'Programming Language :: Python',
-        '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',
-        'Programming Language :: Python :: Implementation :: CPython',
-        'Programming Language :: Python :: Implementation :: PyPy',
-        'Topic :: Software Development :: Libraries :: Python Modules'
-    ]
-)
+setup()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cachetools-3.1.1/tox.ini new/cachetools-4.0.0/tox.ini
--- old/cachetools-3.1.1/tox.ini        2019-05-18 22:53:37.000000000 +0200
+++ new/cachetools-4.0.0/tox.ini        2019-12-15 20:53:38.000000000 +0100
@@ -24,7 +24,6 @@
 
 [testenv:doctest]
 deps =
-     mock
      sphinx
 commands =
      sphinx-build -W -b doctest -d {envtmpdir}/doctrees docs 
{envtmpdir}/doctest


Reply via email to