Hello community,

here is the log from the commit of package python-natsort for openSUSE:Factory 
checked in at 2018-07-18 22:52:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-natsort (Old)
 and      /work/SRC/openSUSE:Factory/.python-natsort.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-natsort"

Wed Jul 18 22:52:48 2018 rev:4 rq:621668 version:5.3.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-natsort/python-natsort.changes    
2018-05-29 10:41:06.416936137 +0200
+++ /work/SRC/openSUSE:Factory/.python-natsort.new/python-natsort.changes       
2018-07-18 22:52:57.447156379 +0200
@@ -1,0 +2,8 @@
+Sun Jul  8 03:47:00 UTC 2018 - a...@gmx.de
+
+- update to version 5.3.3:
+  * Update docs with a FAQ and quick how-it-works.
+  * Fix a StopIteration error in the testing code.
+  * Enable Python 3.7 support in Travis-CI.
+
+-------------------------------------------------------------------

Old:
----
  natsort-5.3.2.tar.gz

New:
----
  natsort-5.3.3.tar.gz

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

Other differences:
------------------
++++++ python-natsort.spec ++++++
--- /var/tmp/diff_new_pack.Qa3zyj/_old  2018-07-18 22:52:58.283153607 +0200
+++ /var/tmp/diff_new_pack.Qa3zyj/_new  2018-07-18 22:52:58.283153607 +0200
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %bcond_without  test
 Name:           python-natsort
-Version:        5.3.2
+Version:        5.3.3
 Release:        0
 Summary:        Natural sorting in Python
 License:        MIT

++++++ natsort-5.3.2.tar.gz -> natsort-5.3.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/natsort-5.3.2/.travis.yml 
new/natsort-5.3.3/.travis.yml
--- old/natsort-5.3.2/.travis.yml       2018-05-15 06:06:24.000000000 +0200
+++ new/natsort-5.3.3/.travis.yml       2018-07-08 02:08:43.000000000 +0200
@@ -1,23 +1,46 @@
 language: python
-python:
-- "2.7"
-- "3.4"
-- "3.5"
-- "3.6"
-
-sudo: false
-dist: trusty
-
-env:
-- WITH_EXTRAS="fast,icu"
-- WITH_EXTRAS=""
-
-addons:
-  apt:
-    packages:
-    - libicu-dev
-    - language-pack-de
-    - language-pack-en
+matrix:
+  include:
+    - python: "2.7"
+      dist: trusty
+      sudo: false
+      env: WITH_EXTRAS=""
+    - python: "2.7"
+      dist: trusty
+      sudo: false
+      env: WITH_EXTRAS="fast,icu"
+      addons:
+        apt:
+          packages:
+          - libicu-dev
+          - language-pack-de
+          - language-pack-en
+    - python: "3.4"
+      dist: trusty
+      sudo: false
+      env: WITH_EXTRAS=""
+    - python: "3.5"
+      dist: trusty
+      sudo: false
+      env: WITH_EXTRAS=""
+    - python: "3.6"
+      dist: trusty
+      sudo: false
+      env: WITH_EXTRAS=""
+    - python: "3.6"
+      dist: trusty
+      sudo: false
+      env: WITH_EXTRAS="fast,icu"
+      addons:
+        apt:
+          packages:
+          - libicu-dev
+          - language-pack-de
+          - language-pack-en
+    - python: "3.7"
+      dist: xenial
+      sudo: true
+      env: WITH_EXTRAS=""
 
 install:
 - pip install -U pip
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/natsort-5.3.2/PKG-INFO new/natsort-5.3.3/PKG-INFO
--- old/natsort-5.3.2/PKG-INFO  2018-05-18 05:47:13.000000000 +0200
+++ new/natsort-5.3.3/PKG-INFO  2018-07-08 02:18:38.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: natsort
-Version: 5.3.2
+Version: 5.3.3
 Summary: Simple yet flexible natural sorting in Python.
 Home-page: https://github.com/SethMMorton/natsort
 Author: Seth M. Morton
@@ -41,6 +41,7 @@
                 `this post 
<https://opensource.stackexchange.com/q/5941/8999>`_ for an
                 explanation into why.
         
+            - `FAQ`_
             - `Optional Dependencies`_
         
               - `fastnumbers <https://pypi.org/project/fastnumbers>`_ >= 2.0.0
@@ -100,6 +101,9 @@
         Please see `Generating a Reusable Sorting Key and Sorting In-Place`_ 
for
         an alternate way to sort in-place naturally.
         
+        Examples
+        --------
+        
         Sorting Versions
         ++++++++++++++++
         
@@ -185,6 +189,15 @@
         All of the available customizations can be found in the documentation 
for
         `the ns enum <http://natsort.readthedocs.io/en/master/ns_class.html>`_.
         
+        You can also add your own custom transformation functions with the 
``key`` argument.
+        These can be used with ``alg`` if you wish.
+        
+        .. code-block:: python
+        
+            >>> a = ['apple2.50', '2.3apple']
+            >>> natsorted(a, key=lambda x: x.replace('apple', ''), alg=ns.REAL)
+            ['2.3apple', 'apple2.50']
+        
         Sorting Mixed Types
         +++++++++++++++++++
         
@@ -251,6 +264,66 @@
          - `sorting file paths correctly 
<http://natsort.readthedocs.io/en/master/examples.html#path-sort>`_
          - `allow custom sorting keys 
<http://natsort.readthedocs.io/en/master/examples.html#custom-sort>`_
         
+        FAQ
+        ---
+        
+        How do I debug ``natsort.natsorted()``?
+            The best way to debug ``natsorted()`` is to generate a key using 
``natsort_keygen()``
+            with the same options being passed to ``natsorted``. One can take 
a look at
+            exactly what is being done with their input using this key - it is 
highly recommended
+            to `look at this issue describing how to debug 
<https://github.com/SethMMorton/natsort/issues/13#issuecomment-50422375>`_
+            for *how* to debug, and also to review the
+            `How Does Natsort Work? 
<http://natsort.readthedocs.io/en/master/howitworks.html>`_
+            page for *why* ``natsort`` is doing that to your data.
+        
+            If you are trying to sort custom classes and running into trouble, 
please take a look at
+            https://github.com/SethMMorton/natsort/issues/60. In short,
+            custom classes are not likely to be sorted correctly if one relies
+            on the behavior of ``__lt__`` and the other rich comparison 
operators in their
+            custom class - it is better to use a ``key`` function with 
``natsort``, or
+            use the ``natsort`` key as part of your rich comparison operator 
definition.
+        
+        How *does* ``natsort`` work?
+            If you don't want to read `How Does Natsort Work? 
<http://natsort.readthedocs.io/en/master/howitworks.html>`_,
+            here is a quick primer.
+        
+            ``natsort`` provides a `key function 
<https://docs.python.org/3/howto/sorting.html#key-functions>`_
+            that can be passed to `list.sort() 
<https://docs.python.org/3/library/stdtypes.html#list.sort>`_
+            or `sorted() 
<https://docs.python.org/3/library/functions.html#sorted>`_ in order to
+            modify the default sorting behavior. This key is generated 
on-demand with the
+            key generator ``natsort.natsort_keygen()``.  
``natsort.natsorted()`` is essentially
+            a wrapper for the following code:
+        
+            .. code-block:: python
+        
+                >>> from natsort import natsort_keygen
+                >>> natsort_key = natsort_keygen()
+                >>> sorted(['1', '10', '2'], key=natsort_key)
+                ['1', '2', '10']
+        
+            Users can further customize ``natsort`` sorting behavior with the 
``key``
+            and/or ``alg`` options (see details in the `Further Customizing 
Natsort`_
+            section).
+        
+            The key generated by ``natsort_keygen`` *always* returns a 
``tuple``. It
+            does so in the following way (*some details omitted for clarity*):
+        
+              1. Assume the input is a string, and attempt to split it into 
numbers and
+                 non-numbers using regular expressions. Numbers are then 
converted into
+                 either ``int`` or ``float``.
+              2. If the above fails because the input is not a string, assume 
the input
+                 is some other sequence (e.g. ``list`` or ``tuple``), and 
recursively
+                 apply the key to each element of the sequence.
+              3. If the above fails because the input is not iterable, assume 
the input
+                 is an ``int`` or ``float``, and just return the input in a 
``tuple``.
+        
+            Because a ``tuple`` is always returned, a ``TypeError`` should not 
be common
+            unless one tries to do something odd like sort an ``int`` against 
a ``list``.
+        
+        ``natsort`` gave me results I didn't expect, and it's a terrible 
library!
+            Did you try to debug using the above advice? If so, and you still 
cannot figure out
+            the error, then please `file an issue 
<https://github.com/SethMMorton/natsort/issues/new>`_.
+        
         Shell script
         ------------
         
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/natsort-5.3.2/README.rst new/natsort-5.3.3/README.rst
--- old/natsort-5.3.2/README.rst        2018-05-18 05:39:08.000000000 +0200
+++ new/natsort-5.3.3/README.rst        2018-07-03 05:52:16.000000000 +0200
@@ -33,6 +33,7 @@
         `this post <https://opensource.stackexchange.com/q/5941/8999>`_ for an
         explanation into why.
 
+    - `FAQ`_
     - `Optional Dependencies`_
 
       - `fastnumbers <https://pypi.org/project/fastnumbers>`_ >= 2.0.0
@@ -92,6 +93,9 @@
 Please see `Generating a Reusable Sorting Key and Sorting In-Place`_ for
 an alternate way to sort in-place naturally.
 
+Examples
+--------
+
 Sorting Versions
 ++++++++++++++++
 
@@ -177,6 +181,15 @@
 All of the available customizations can be found in the documentation for
 `the ns enum <http://natsort.readthedocs.io/en/master/ns_class.html>`_.
 
+You can also add your own custom transformation functions with the ``key`` 
argument.
+These can be used with ``alg`` if you wish.
+
+.. code-block:: python
+
+    >>> a = ['apple2.50', '2.3apple']
+    >>> natsorted(a, key=lambda x: x.replace('apple', ''), alg=ns.REAL)
+    ['2.3apple', 'apple2.50']
+
 Sorting Mixed Types
 +++++++++++++++++++
 
@@ -243,6 +256,66 @@
  - `sorting file paths correctly 
<http://natsort.readthedocs.io/en/master/examples.html#path-sort>`_
  - `allow custom sorting keys 
<http://natsort.readthedocs.io/en/master/examples.html#custom-sort>`_
 
+FAQ
+---
+
+How do I debug ``natsort.natsorted()``?
+    The best way to debug ``natsorted()`` is to generate a key using 
``natsort_keygen()``
+    with the same options being passed to ``natsorted``. One can take a look at
+    exactly what is being done with their input using this key - it is highly 
recommended
+    to `look at this issue describing how to debug 
<https://github.com/SethMMorton/natsort/issues/13#issuecomment-50422375>`_
+    for *how* to debug, and also to review the
+    `How Does Natsort Work? 
<http://natsort.readthedocs.io/en/master/howitworks.html>`_
+    page for *why* ``natsort`` is doing that to your data.
+
+    If you are trying to sort custom classes and running into trouble, please 
take a look at
+    https://github.com/SethMMorton/natsort/issues/60. In short,
+    custom classes are not likely to be sorted correctly if one relies
+    on the behavior of ``__lt__`` and the other rich comparison operators in 
their
+    custom class - it is better to use a ``key`` function with ``natsort``, or
+    use the ``natsort`` key as part of your rich comparison operator 
definition.
+
+How *does* ``natsort`` work?
+    If you don't want to read `How Does Natsort Work? 
<http://natsort.readthedocs.io/en/master/howitworks.html>`_,
+    here is a quick primer.
+
+    ``natsort`` provides a `key function 
<https://docs.python.org/3/howto/sorting.html#key-functions>`_
+    that can be passed to `list.sort() 
<https://docs.python.org/3/library/stdtypes.html#list.sort>`_
+    or `sorted() <https://docs.python.org/3/library/functions.html#sorted>`_ 
in order to
+    modify the default sorting behavior. This key is generated on-demand with 
the
+    key generator ``natsort.natsort_keygen()``.  ``natsort.natsorted()`` is 
essentially
+    a wrapper for the following code:
+
+    .. code-block:: python
+
+        >>> from natsort import natsort_keygen
+        >>> natsort_key = natsort_keygen()
+        >>> sorted(['1', '10', '2'], key=natsort_key)
+        ['1', '2', '10']
+
+    Users can further customize ``natsort`` sorting behavior with the ``key``
+    and/or ``alg`` options (see details in the `Further Customizing Natsort`_
+    section).
+
+    The key generated by ``natsort_keygen`` *always* returns a ``tuple``. It
+    does so in the following way (*some details omitted for clarity*):
+
+      1. Assume the input is a string, and attempt to split it into numbers and
+         non-numbers using regular expressions. Numbers are then converted into
+         either ``int`` or ``float``.
+      2. If the above fails because the input is not a string, assume the input
+         is some other sequence (e.g. ``list`` or ``tuple``), and recursively
+         apply the key to each element of the sequence.
+      3. If the above fails because the input is not iterable, assume the input
+         is an ``int`` or ``float``, and just return the input in a ``tuple``.
+
+    Because a ``tuple`` is always returned, a ``TypeError`` should not be 
common
+    unless one tries to do something odd like sort an ``int`` against a 
``list``.
+
+``natsort`` gave me results I didn't expect, and it's a terrible library!
+    Did you try to debug using the above advice? If so, and you still cannot 
figure out
+    the error, then please `file an issue 
<https://github.com/SethMMorton/natsort/issues/new>`_.
+
 Shell script
 ------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/natsort-5.3.2/docs/source/changelog.rst 
new/natsort-5.3.3/docs/source/changelog.rst
--- old/natsort-5.3.2/docs/source/changelog.rst 2018-05-18 05:43:44.000000000 
+0200
+++ new/natsort-5.3.3/docs/source/changelog.rst 2018-07-08 02:17:07.000000000 
+0200
@@ -3,14 +3,21 @@
 Changelog
 ---------
 
-05-17-2018 v. X.X.X
+07-07-2018 v. 5.3.3
++++++++++++++++++++
+
+   - Update docs with a FAQ and quick how-it-works.
+   - Fix a StopIteration error in the testing code.
+   - Enable Python 3.7 support in Travis-CI.
+
+05-17-2018 v. 5.3.2
 +++++++++++++++++++
 
     - Fix bug that prevented install on old versions of setuptools.
     - Revert layout from src/natsort/ back to natsort/ to make user
       testing simpler.
 
-05-14-2018 v. 5.3.2
+05-14-2018 v. 5.3.1
 +++++++++++++++++++
 
     - No bugfixes or features, just infrastructure and installation updates.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/natsort-5.3.2/docs/source/conf.py 
new/natsort-5.3.3/docs/source/conf.py
--- old/natsort-5.3.2/docs/source/conf.py       2018-05-18 05:43:44.000000000 
+0200
+++ new/natsort-5.3.3/docs/source/conf.py       2018-07-08 02:17:07.000000000 
+0200
@@ -56,7 +56,7 @@
 # built documents.
 #
 # The full version, including alpha/beta/rc tags.
-release = '5.3.2'
+release = '5.3.3'
 # The short X.Y version.
 version = '.'.join(release.split('.')[0:2])
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/natsort-5.3.2/docs/source/intro.rst 
new/natsort-5.3.3/docs/source/intro.rst
--- old/natsort-5.3.2/docs/source/intro.rst     2018-05-18 05:39:08.000000000 
+0200
+++ new/natsort-5.3.3/docs/source/intro.rst     2018-07-03 05:52:16.000000000 
+0200
@@ -9,15 +9,6 @@
     - Source Code: https://github.com/SethMMorton/natsort
     - Downloads: https://pypi.org/project/natsort/
     - Documentation: http://natsort.readthedocs.io/
-
-      - :ref:`Examples and Recipes <examples>`
-      - :ref:`How Does Natsort Work? <howitworks>`
-      - :ref:`API <api>`
-      - **NOTE**: The old documentation at pythonhosted.org has been taken down
-        with no redirects. Please see
-        `this post <https://opensource.stackexchange.com/q/5941/8999>`_ for an
-        explanation into why.
-
     - Optional Dependencies:
 
       - `fastnumbers <https://pypi.org/project/fastnumbers>`_ >= 2.0.0
@@ -96,6 +87,9 @@
     Please see `Generating a Reusable Sorting Key and Sorting In-Place`_ for
     an alternate way to sort in-place naturally.
 
+Examples
+--------
+
 Sorting Versions
 ++++++++++++++++
 
@@ -179,7 +173,16 @@
     True
 
 All of the available customizations can be found in the documentation for
-the ``ns`` enum :class:`~natsort.ns`.
+the :class:`~natsort.ns` enum.
+
+You can also add your own custom transformation functions with the ``key`` 
argument.
+These can be used with ``alg`` if you wish:
+
+.. code-block:: python
+
+    >>> a = ['apple2.50', '2.3apple']
+    >>> natsorted(a, key=lambda x: x.replace('apple', ''), alg=ns.REAL)
+    ['2.3apple', 'apple2.50']
 
 Sorting Mixed Types
 +++++++++++++++++++
@@ -242,10 +245,71 @@
 +++++++++++++++++++
 
  - recursively descend into lists of lists
+ - automatic unicode normalization of input data
  - controlling the case-sensitivity (see :ref:`case_sort`)
  - sorting file paths correctly (see :ref:`path_sort`)
  - allow custom sorting keys (see :ref:`custom_sort`)
 
+FAQ
+---
+
+How do I debug :func:`~natsorted`?
+    The best way to debug :func:`~natsorted` is to generate a key using 
:func:`~natsort_keygen`
+    with the same options being passed to :func:`~natsorted`. One can take a 
look at
+    exactly what is being done with their input using this key - it is highly 
recommended
+    to `look at this issue describing how to debug 
<https://github.com/SethMMorton/natsort/issues/13#issuecomment-50422375>`_
+    for *how* to debug, and also to review the
+    `How Does Natsort Work? 
<http://natsort.readthedocs.io/en/master/howitworks.html>`_
+    page for *why* :mod:`natsort` is doing that to your data.
+
+    If you are trying to sort custom classes and running into trouble, please 
take a look at
+    https://github.com/SethMMorton/natsort/issues/60. In short,
+    custom classes are not likely to be sorted correctly if one relies
+    on the behavior of ``__lt__`` and the other rich comparison operators in 
their
+    custom class - it is better to use a ``key`` function with :mod:`natsort`, 
or
+    use the :mod:`natsort` key as part of your rich comparison operator 
definition.
+
+How *does* :mod:`natsort` work?
+    If you don't want to read `How Does Natsort Work? 
<http://natsort.readthedocs.io/en/master/howitworks.html>`_,
+    here is a quick primer.
+
+    :mod:`natsort` provides a `key function 
<https://docs.python.org/3/howto/sorting.html#key-functions>`_
+    that can be passed to `list.sort() 
<https://docs.python.org/3/library/stdtypes.html#list.sort>`_
+    or `sorted() <https://docs.python.org/3/library/functions.html#sorted>`_ 
in order to
+    modify the default sorting behavior. This key is generated on-demand with 
the
+    key generator :func:`natsort.natsort_keygen`.  :func:`natsort.natsorted` 
is essentially
+    a wrapper for the following code:
+
+    .. code-block:: python
+
+        >>> from natsort import natsort_keygen
+        >>> natsort_key = natsort_keygen()
+        >>> sorted(['1', '10', '2'], key=natsort_key)
+        ['1', '2', '10']
+
+    Users can further customize :mod:`natsort` sorting behavior with the 
``key``
+    and/or ``alg`` options (see details in the `Further Customizing Natsort`_
+    section).
+
+    The key generated by :func:`natsort.natsort_keygen` *always* returns a 
:class:`tuple`. It
+    does so in the following way (*some details omitted for clarity*):
+
+      1. Assume the input is a string, and attempt to split it into numbers and
+         non-numbers using regular expressions. Numbers are then converted into
+         either :class:`int` or :class:`float`.
+      2. If the above fails because the input is not a string, assume the input
+         is some other sequence (e.g. :class:`list` or :class:`tuple`), and 
recursively
+         apply the key to each element of the sequence.
+      3. If the above fails because the input is not iterable, assume the input
+         is an :class:`int` or :class:`float`, and just return the input in a 
:class:`tuple`.
+
+    Because a :class:`tuple` is always returned, a :exc:`TypeError` should not 
be common
+    unless one tries to do something odd like sort an :class:`int` against a 
:class:`list`.
+
+:mod:`natsort` gave me results I didn't expect, and it's a terrible library!
+    Did you try to debug using the above advice? If so, and you still cannot 
figure out
+    the error, then please `file an issue 
<https://github.com/SethMMorton/natsort/issues/new>`_.
+
 Shell script
 ------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/natsort-5.3.2/natsort/_version.py 
new/natsort-5.3.3/natsort/_version.py
--- old/natsort-5.3.2/natsort/_version.py       2018-05-18 05:43:44.000000000 
+0200
+++ new/natsort-5.3.3/natsort/_version.py       2018-07-08 02:17:07.000000000 
+0200
@@ -6,4 +6,4 @@
     absolute_import
 )
 
-__version__ = '5.3.2'
+__version__ = '5.3.3'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/natsort-5.3.2/natsort/unicode_numbers.py 
new/natsort-5.3.3/natsort/unicode_numbers.py
--- old/natsort-5.3.2/natsort/unicode_numbers.py        2018-05-18 
05:39:08.000000000 +0200
+++ new/natsort-5.3.3/natsort/unicode_numbers.py        2018-07-02 
08:41:29.000000000 +0200
@@ -172,94 +172,119 @@
     0X109F6, 0X109F7, 0X109F8, 0X109F9, 0X109FA, 0X109FB,
     0X109FC, 0X109FD, 0X109FE, 0X109FF, 0X10A40, 0X10A41,
     0X10A42, 0X10A43, 0X10A44, 0X10A45, 0X10A46, 0X10A47,
-    0X10A7D, 0X10A7E, 0X10A9D, 0X10A9E, 0X10A9F, 0X10AEB,
-    0X10AEC, 0X10AED, 0X10AEE, 0X10AEF, 0X10B58, 0X10B59,
-    0X10B5A, 0X10B5B, 0X10B5C, 0X10B5D, 0X10B5E, 0X10B5F,
-    0X10B78, 0X10B79, 0X10B7A, 0X10B7B, 0X10B7C, 0X10B7D,
-    0X10B7E, 0X10B7F, 0X10BA9, 0X10BAA, 0X10BAB, 0X10BAC,
-    0X10BAD, 0X10BAE, 0X10BAF, 0X10CFA, 0X10CFB, 0X10CFC,
-    0X10CFD, 0X10CFE, 0X10CFF, 0X10E60, 0X10E61, 0X10E62,
-    0X10E63, 0X10E64, 0X10E65, 0X10E66, 0X10E67, 0X10E68,
-    0X10E69, 0X10E6A, 0X10E6B, 0X10E6C, 0X10E6D, 0X10E6E,
-    0X10E6F, 0X10E70, 0X10E71, 0X10E72, 0X10E73, 0X10E74,
-    0X10E75, 0X10E76, 0X10E77, 0X10E78, 0X10E79, 0X10E7A,
-    0X10E7B, 0X10E7C, 0X10E7D, 0X10E7E, 0X11052, 0X11053,
-    0X11054, 0X11055, 0X11056, 0X11057, 0X11058, 0X11059,
-    0X1105A, 0X1105B, 0X1105C, 0X1105D, 0X1105E, 0X1105F,
-    0X11060, 0X11061, 0X11062, 0X11063, 0X11064, 0X11065,
-    0X11066, 0X11067, 0X11068, 0X11069, 0X1106A, 0X1106B,
-    0X1106C, 0X1106D, 0X1106E, 0X1106F, 0X110F0, 0X110F1,
-    0X110F2, 0X110F3, 0X110F4, 0X110F5, 0X110F6, 0X110F7,
-    0X110F8, 0X110F9, 0X11136, 0X11137, 0X11138, 0X11139,
-    0X1113A, 0X1113B, 0X1113C, 0X1113D, 0X1113E, 0X1113F,
-    0X111D0, 0X111D1, 0X111D2, 0X111D3, 0X111D4, 0X111D5,
-    0X111D6, 0X111D7, 0X111D8, 0X111D9, 0X111E1, 0X111E2,
-    0X111E3, 0X111E4, 0X111E5, 0X111E6, 0X111E7, 0X111E8,
-    0X111E9, 0X111EA, 0X111EB, 0X111EC, 0X111ED, 0X111EE,
-    0X111EF, 0X111F0, 0X111F1, 0X111F2, 0X111F3, 0X111F4,
-    0X112F0, 0X112F1, 0X112F2, 0X112F3, 0X112F4, 0X112F5,
-    0X112F6, 0X112F7, 0X112F8, 0X112F9, 0X11450, 0X11451,
-    0X11452, 0X11453, 0X11454, 0X11455, 0X11456, 0X11457,
-    0X11458, 0X11459, 0X114D0, 0X114D1, 0X114D2, 0X114D3,
-    0X114D4, 0X114D5, 0X114D6, 0X114D7, 0X114D8, 0X114D9,
-    0X11650, 0X11651, 0X11652, 0X11653, 0X11654, 0X11655,
-    0X11656, 0X11657, 0X11658, 0X11659, 0X116C0, 0X116C1,
-    0X116C2, 0X116C3, 0X116C4, 0X116C5, 0X116C6, 0X116C7,
-    0X116C8, 0X116C9, 0X11730, 0X11731, 0X11732, 0X11733,
-    0X11734, 0X11735, 0X11736, 0X11737, 0X11738, 0X11739,
-    0X1173A, 0X1173B, 0X118E0, 0X118E1, 0X118E2, 0X118E3,
-    0X118E4, 0X118E5, 0X118E6, 0X118E7, 0X118E8, 0X118E9,
-    0X118EA, 0X118EB, 0X118EC, 0X118ED, 0X118EE, 0X118EF,
-    0X118F0, 0X118F1, 0X118F2, 0X11C50, 0X11C51, 0X11C52,
-    0X11C53, 0X11C54, 0X11C55, 0X11C56, 0X11C57, 0X11C58,
-    0X11C59, 0X11C5A, 0X11C5B, 0X11C5C, 0X11C5D, 0X11C5E,
-    0X11C5F, 0X11C60, 0X11C61, 0X11C62, 0X11C63, 0X11C64,
-    0X11C65, 0X11C66, 0X11C67, 0X11C68, 0X11C69, 0X11C6A,
-    0X11C6B, 0X11C6C, 0X11D50, 0X11D51, 0X11D52, 0X11D53,
-    0X11D54, 0X11D55, 0X11D56, 0X11D57, 0X11D58, 0X11D59,
-    0X12400, 0X12401, 0X12402, 0X12403, 0X12404, 0X12405,
-    0X12406, 0X12407, 0X12408, 0X12409, 0X1240A, 0X1240B,
-    0X1240C, 0X1240D, 0X1240E, 0X1240F, 0X12410, 0X12411,
-    0X12412, 0X12413, 0X12414, 0X12415, 0X12416, 0X12417,
-    0X12418, 0X12419, 0X1241A, 0X1241B, 0X1241C, 0X1241D,
-    0X1241E, 0X1241F, 0X12420, 0X12421, 0X12422, 0X12423,
-    0X12424, 0X12425, 0X12426, 0X12427, 0X12428, 0X12429,
-    0X1242A, 0X1242B, 0X1242C, 0X1242D, 0X1242E, 0X1242F,
-    0X12430, 0X12431, 0X12432, 0X12433, 0X12434, 0X12435,
-    0X12436, 0X12437, 0X12438, 0X12439, 0X1243A, 0X1243B,
-    0X1243C, 0X1243D, 0X1243E, 0X1243F, 0X12440, 0X12441,
-    0X12442, 0X12443, 0X12444, 0X12445, 0X12446, 0X12447,
-    0X12448, 0X12449, 0X1244A, 0X1244B, 0X1244C, 0X1244D,
-    0X1244E, 0X1244F, 0X12450, 0X12451, 0X12452, 0X12453,
-    0X12454, 0X12455, 0X12456, 0X12457, 0X12458, 0X12459,
-    0X1245A, 0X1245B, 0X1245C, 0X1245D, 0X1245E, 0X1245F,
-    0X12460, 0X12461, 0X12462, 0X12463, 0X12464, 0X12465,
-    0X12466, 0X12467, 0X12468, 0X12469, 0X1246A, 0X1246B,
-    0X1246C, 0X1246D, 0X1246E, 0X16A60, 0X16A61, 0X16A62,
-    0X16A63, 0X16A64, 0X16A65, 0X16A66, 0X16A67, 0X16A68,
-    0X16A69, 0X16B50, 0X16B51, 0X16B52, 0X16B53, 0X16B54,
-    0X16B55, 0X16B56, 0X16B57, 0X16B58, 0X16B59, 0X16B5B,
-    0X16B5C, 0X16B5D, 0X16B5E, 0X16B5F, 0X16B60, 0X16B61,
+    0X10A48, 0X10A7D, 0X10A7E, 0X10A9D, 0X10A9E, 0X10A9F,
+    0X10AEB, 0X10AEC, 0X10AED, 0X10AEE, 0X10AEF, 0X10B58,
+    0X10B59, 0X10B5A, 0X10B5B, 0X10B5C, 0X10B5D, 0X10B5E,
+    0X10B5F, 0X10B78, 0X10B79, 0X10B7A, 0X10B7B, 0X10B7C,
+    0X10B7D, 0X10B7E, 0X10B7F, 0X10BA9, 0X10BAA, 0X10BAB,
+    0X10BAC, 0X10BAD, 0X10BAE, 0X10BAF, 0X10CFA, 0X10CFB,
+    0X10CFC, 0X10CFD, 0X10CFE, 0X10CFF, 0X10D30, 0X10D31,
+    0X10D32, 0X10D33, 0X10D34, 0X10D35, 0X10D36, 0X10D37,
+    0X10D38, 0X10D39, 0X10E60, 0X10E61, 0X10E62, 0X10E63,
+    0X10E64, 0X10E65, 0X10E66, 0X10E67, 0X10E68, 0X10E69,
+    0X10E6A, 0X10E6B, 0X10E6C, 0X10E6D, 0X10E6E, 0X10E6F,
+    0X10E70, 0X10E71, 0X10E72, 0X10E73, 0X10E74, 0X10E75,
+    0X10E76, 0X10E77, 0X10E78, 0X10E79, 0X10E7A, 0X10E7B,
+    0X10E7C, 0X10E7D, 0X10E7E, 0X10F1D, 0X10F1E, 0X10F1F,
+    0X10F20, 0X10F21, 0X10F22, 0X10F23, 0X10F24, 0X10F25,
+    0X10F26, 0X10F51, 0X10F52, 0X10F53, 0X10F54, 0X11052,
+    0X11053, 0X11054, 0X11055, 0X11056, 0X11057, 0X11058,
+    0X11059, 0X1105A, 0X1105B, 0X1105C, 0X1105D, 0X1105E,
+    0X1105F, 0X11060, 0X11061, 0X11062, 0X11063, 0X11064,
+    0X11065, 0X11066, 0X11067, 0X11068, 0X11069, 0X1106A,
+    0X1106B, 0X1106C, 0X1106D, 0X1106E, 0X1106F, 0X110F0,
+    0X110F1, 0X110F2, 0X110F3, 0X110F4, 0X110F5, 0X110F6,
+    0X110F7, 0X110F8, 0X110F9, 0X11136, 0X11137, 0X11138,
+    0X11139, 0X1113A, 0X1113B, 0X1113C, 0X1113D, 0X1113E,
+    0X1113F, 0X111D0, 0X111D1, 0X111D2, 0X111D3, 0X111D4,
+    0X111D5, 0X111D6, 0X111D7, 0X111D8, 0X111D9, 0X111E1,
+    0X111E2, 0X111E3, 0X111E4, 0X111E5, 0X111E6, 0X111E7,
+    0X111E8, 0X111E9, 0X111EA, 0X111EB, 0X111EC, 0X111ED,
+    0X111EE, 0X111EF, 0X111F0, 0X111F1, 0X111F2, 0X111F3,
+    0X111F4, 0X112F0, 0X112F1, 0X112F2, 0X112F3, 0X112F4,
+    0X112F5, 0X112F6, 0X112F7, 0X112F8, 0X112F9, 0X11450,
+    0X11451, 0X11452, 0X11453, 0X11454, 0X11455, 0X11456,
+    0X11457, 0X11458, 0X11459, 0X114D0, 0X114D1, 0X114D2,
+    0X114D3, 0X114D4, 0X114D5, 0X114D6, 0X114D7, 0X114D8,
+    0X114D9, 0X11650, 0X11651, 0X11652, 0X11653, 0X11654,
+    0X11655, 0X11656, 0X11657, 0X11658, 0X11659, 0X116C0,
+    0X116C1, 0X116C2, 0X116C3, 0X116C4, 0X116C5, 0X116C6,
+    0X116C7, 0X116C8, 0X116C9, 0X11730, 0X11731, 0X11732,
+    0X11733, 0X11734, 0X11735, 0X11736, 0X11737, 0X11738,
+    0X11739, 0X1173A, 0X1173B, 0X118E0, 0X118E1, 0X118E2,
+    0X118E3, 0X118E4, 0X118E5, 0X118E6, 0X118E7, 0X118E8,
+    0X118E9, 0X118EA, 0X118EB, 0X118EC, 0X118ED, 0X118EE,
+    0X118EF, 0X118F0, 0X118F1, 0X118F2, 0X11C50, 0X11C51,
+    0X11C52, 0X11C53, 0X11C54, 0X11C55, 0X11C56, 0X11C57,
+    0X11C58, 0X11C59, 0X11C5A, 0X11C5B, 0X11C5C, 0X11C5D,
+    0X11C5E, 0X11C5F, 0X11C60, 0X11C61, 0X11C62, 0X11C63,
+    0X11C64, 0X11C65, 0X11C66, 0X11C67, 0X11C68, 0X11C69,
+    0X11C6A, 0X11C6B, 0X11C6C, 0X11D50, 0X11D51, 0X11D52,
+    0X11D53, 0X11D54, 0X11D55, 0X11D56, 0X11D57, 0X11D58,
+    0X11D59, 0X11DA0, 0X11DA1, 0X11DA2, 0X11DA3, 0X11DA4,
+    0X11DA5, 0X11DA6, 0X11DA7, 0X11DA8, 0X11DA9, 0X12400,
+    0X12401, 0X12402, 0X12403, 0X12404, 0X12405, 0X12406,
+    0X12407, 0X12408, 0X12409, 0X1240A, 0X1240B, 0X1240C,
+    0X1240D, 0X1240E, 0X1240F, 0X12410, 0X12411, 0X12412,
+    0X12413, 0X12414, 0X12415, 0X12416, 0X12417, 0X12418,
+    0X12419, 0X1241A, 0X1241B, 0X1241C, 0X1241D, 0X1241E,
+    0X1241F, 0X12420, 0X12421, 0X12422, 0X12423, 0X12424,
+    0X12425, 0X12426, 0X12427, 0X12428, 0X12429, 0X1242A,
+    0X1242B, 0X1242C, 0X1242D, 0X1242E, 0X1242F, 0X12430,
+    0X12431, 0X12432, 0X12433, 0X12434, 0X12435, 0X12436,
+    0X12437, 0X12438, 0X12439, 0X1243A, 0X1243B, 0X1243C,
+    0X1243D, 0X1243E, 0X1243F, 0X12440, 0X12441, 0X12442,
+    0X12443, 0X12444, 0X12445, 0X12446, 0X12447, 0X12448,
+    0X12449, 0X1244A, 0X1244B, 0X1244C, 0X1244D, 0X1244E,
+    0X1244F, 0X12450, 0X12451, 0X12452, 0X12453, 0X12454,
+    0X12455, 0X12456, 0X12457, 0X12458, 0X12459, 0X1245A,
+    0X1245B, 0X1245C, 0X1245D, 0X1245E, 0X1245F, 0X12460,
+    0X12461, 0X12462, 0X12463, 0X12464, 0X12465, 0X12466,
+    0X12467, 0X12468, 0X12469, 0X1246A, 0X1246B, 0X1246C,
+    0X1246D, 0X1246E, 0X16A60, 0X16A61, 0X16A62, 0X16A63,
+    0X16A64, 0X16A65, 0X16A66, 0X16A67, 0X16A68, 0X16A69,
+    0X16B50, 0X16B51, 0X16B52, 0X16B53, 0X16B54, 0X16B55,
+    0X16B56, 0X16B57, 0X16B58, 0X16B59, 0X16B5B, 0X16B5C,
+    0X16B5D, 0X16B5E, 0X16B5F, 0X16B60, 0X16B61, 0X16E80,
+    0X16E81, 0X16E82, 0X16E83, 0X16E84, 0X16E85, 0X16E86,
+    0X16E87, 0X16E88, 0X16E89, 0X16E8A, 0X16E8B, 0X16E8C,
+    0X16E8D, 0X16E8E, 0X16E8F, 0X16E90, 0X16E91, 0X16E92,
+    0X16E93, 0X16E94, 0X16E95, 0X16E96, 0X1D2E0, 0X1D2E1,
+    0X1D2E2, 0X1D2E3, 0X1D2E4, 0X1D2E5, 0X1D2E6, 0X1D2E7,
+    0X1D2E8, 0X1D2E9, 0X1D2EA, 0X1D2EB, 0X1D2EC, 0X1D2ED,
+    0X1D2EE, 0X1D2EF, 0X1D2F0, 0X1D2F1, 0X1D2F2, 0X1D2F3,
     0X1D360, 0X1D361, 0X1D362, 0X1D363, 0X1D364, 0X1D365,
     0X1D366, 0X1D367, 0X1D368, 0X1D369, 0X1D36A, 0X1D36B,
     0X1D36C, 0X1D36D, 0X1D36E, 0X1D36F, 0X1D370, 0X1D371,
-    0X1D7CE, 0X1D7CF, 0X1D7D0, 0X1D7D1, 0X1D7D2, 0X1D7D3,
-    0X1D7D4, 0X1D7D5, 0X1D7D6, 0X1D7D7, 0X1D7D8, 0X1D7D9,
-    0X1D7DA, 0X1D7DB, 0X1D7DC, 0X1D7DD, 0X1D7DE, 0X1D7DF,
-    0X1D7E0, 0X1D7E1, 0X1D7E2, 0X1D7E3, 0X1D7E4, 0X1D7E5,
-    0X1D7E6, 0X1D7E7, 0X1D7E8, 0X1D7E9, 0X1D7EA, 0X1D7EB,
-    0X1D7EC, 0X1D7ED, 0X1D7EE, 0X1D7EF, 0X1D7F0, 0X1D7F1,
-    0X1D7F2, 0X1D7F3, 0X1D7F4, 0X1D7F5, 0X1D7F6, 0X1D7F7,
-    0X1D7F8, 0X1D7F9, 0X1D7FA, 0X1D7FB, 0X1D7FC, 0X1D7FD,
-    0X1D7FE, 0X1D7FF, 0X1E8C7, 0X1E8C8, 0X1E8C9, 0X1E8CA,
-    0X1E8CB, 0X1E8CC, 0X1E8CD, 0X1E8CE, 0X1E8CF, 0X1E950,
-    0X1E951, 0X1E952, 0X1E953, 0X1E954, 0X1E955, 0X1E956,
-    0X1E957, 0X1E958, 0X1E959, 0X1F100, 0X1F101, 0X1F102,
-    0X1F103, 0X1F104, 0X1F105, 0X1F106, 0X1F107, 0X1F108,
-    0X1F109, 0X1F10A, 0X1F10B, 0X1F10C, 0X20001, 0X20064,
-    0X200E2, 0X20121, 0X2092A, 0X20983, 0X2098C, 0X2099C,
-    0X20AEA, 0X20AFD, 0X20B19, 0X22390, 0X22998, 0X23B1B,
-    0X2626D, 0X2F890,
+    0X1D372, 0X1D373, 0X1D374, 0X1D375, 0X1D376, 0X1D377,
+    0X1D378, 0X1D7CE, 0X1D7CF, 0X1D7D0, 0X1D7D1, 0X1D7D2,
+    0X1D7D3, 0X1D7D4, 0X1D7D5, 0X1D7D6, 0X1D7D7, 0X1D7D8,
+    0X1D7D9, 0X1D7DA, 0X1D7DB, 0X1D7DC, 0X1D7DD, 0X1D7DE,
+    0X1D7DF, 0X1D7E0, 0X1D7E1, 0X1D7E2, 0X1D7E3, 0X1D7E4,
+    0X1D7E5, 0X1D7E6, 0X1D7E7, 0X1D7E8, 0X1D7E9, 0X1D7EA,
+    0X1D7EB, 0X1D7EC, 0X1D7ED, 0X1D7EE, 0X1D7EF, 0X1D7F0,
+    0X1D7F1, 0X1D7F2, 0X1D7F3, 0X1D7F4, 0X1D7F5, 0X1D7F6,
+    0X1D7F7, 0X1D7F8, 0X1D7F9, 0X1D7FA, 0X1D7FB, 0X1D7FC,
+    0X1D7FD, 0X1D7FE, 0X1D7FF, 0X1E8C7, 0X1E8C8, 0X1E8C9,
+    0X1E8CA, 0X1E8CB, 0X1E8CC, 0X1E8CD, 0X1E8CE, 0X1E8CF,
+    0X1E950, 0X1E951, 0X1E952, 0X1E953, 0X1E954, 0X1E955,
+    0X1E956, 0X1E957, 0X1E958, 0X1E959, 0X1EC71, 0X1EC72,
+    0X1EC73, 0X1EC74, 0X1EC75, 0X1EC76, 0X1EC77, 0X1EC78,
+    0X1EC79, 0X1EC7A, 0X1EC7B, 0X1EC7C, 0X1EC7D, 0X1EC7E,
+    0X1EC7F, 0X1EC80, 0X1EC81, 0X1EC82, 0X1EC83, 0X1EC84,
+    0X1EC85, 0X1EC86, 0X1EC87, 0X1EC88, 0X1EC89, 0X1EC8A,
+    0X1EC8B, 0X1EC8C, 0X1EC8D, 0X1EC8E, 0X1EC8F, 0X1EC90,
+    0X1EC91, 0X1EC92, 0X1EC93, 0X1EC94, 0X1EC95, 0X1EC96,
+    0X1EC97, 0X1EC98, 0X1EC99, 0X1EC9A, 0X1EC9B, 0X1EC9C,
+    0X1EC9D, 0X1EC9E, 0X1EC9F, 0X1ECA0, 0X1ECA1, 0X1ECA2,
+    0X1ECA3, 0X1ECA4, 0X1ECA5, 0X1ECA6, 0X1ECA7, 0X1ECA8,
+    0X1ECA9, 0X1ECAA, 0X1ECAB, 0X1ECAD, 0X1ECAE, 0X1ECAF,
+    0X1ECB1, 0X1ECB2, 0X1ECB3, 0X1ECB4, 0X1F100, 0X1F101,
+    0X1F102, 0X1F103, 0X1F104, 0X1F105, 0X1F106, 0X1F107,
+    0X1F108, 0X1F109, 0X1F10A, 0X1F10B, 0X1F10C, 0X20001,
+    0X20064, 0X200E2, 0X20121, 0X2092A, 0X20983, 0X2098C,
+    0X2099C, 0X20AEA, 0X20AFD, 0X20B19, 0X22390, 0X22998,
+    0X23B1B, 0X2626D, 0X2F890,
 )
 
 # Convert each hex into the literal Unicode character.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/natsort-5.3.2/natsort.egg-info/PKG-INFO 
new/natsort-5.3.3/natsort.egg-info/PKG-INFO
--- old/natsort-5.3.2/natsort.egg-info/PKG-INFO 2018-05-18 05:47:13.000000000 
+0200
+++ new/natsort-5.3.3/natsort.egg-info/PKG-INFO 2018-07-08 02:18:38.000000000 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: natsort
-Version: 5.3.2
+Version: 5.3.3
 Summary: Simple yet flexible natural sorting in Python.
 Home-page: https://github.com/SethMMorton/natsort
 Author: Seth M. Morton
@@ -41,6 +41,7 @@
                 `this post 
<https://opensource.stackexchange.com/q/5941/8999>`_ for an
                 explanation into why.
         
+            - `FAQ`_
             - `Optional Dependencies`_
         
               - `fastnumbers <https://pypi.org/project/fastnumbers>`_ >= 2.0.0
@@ -100,6 +101,9 @@
         Please see `Generating a Reusable Sorting Key and Sorting In-Place`_ 
for
         an alternate way to sort in-place naturally.
         
+        Examples
+        --------
+        
         Sorting Versions
         ++++++++++++++++
         
@@ -185,6 +189,15 @@
         All of the available customizations can be found in the documentation 
for
         `the ns enum <http://natsort.readthedocs.io/en/master/ns_class.html>`_.
         
+        You can also add your own custom transformation functions with the 
``key`` argument.
+        These can be used with ``alg`` if you wish.
+        
+        .. code-block:: python
+        
+            >>> a = ['apple2.50', '2.3apple']
+            >>> natsorted(a, key=lambda x: x.replace('apple', ''), alg=ns.REAL)
+            ['2.3apple', 'apple2.50']
+        
         Sorting Mixed Types
         +++++++++++++++++++
         
@@ -251,6 +264,66 @@
          - `sorting file paths correctly 
<http://natsort.readthedocs.io/en/master/examples.html#path-sort>`_
          - `allow custom sorting keys 
<http://natsort.readthedocs.io/en/master/examples.html#custom-sort>`_
         
+        FAQ
+        ---
+        
+        How do I debug ``natsort.natsorted()``?
+            The best way to debug ``natsorted()`` is to generate a key using 
``natsort_keygen()``
+            with the same options being passed to ``natsorted``. One can take 
a look at
+            exactly what is being done with their input using this key - it is 
highly recommended
+            to `look at this issue describing how to debug 
<https://github.com/SethMMorton/natsort/issues/13#issuecomment-50422375>`_
+            for *how* to debug, and also to review the
+            `How Does Natsort Work? 
<http://natsort.readthedocs.io/en/master/howitworks.html>`_
+            page for *why* ``natsort`` is doing that to your data.
+        
+            If you are trying to sort custom classes and running into trouble, 
please take a look at
+            https://github.com/SethMMorton/natsort/issues/60. In short,
+            custom classes are not likely to be sorted correctly if one relies
+            on the behavior of ``__lt__`` and the other rich comparison 
operators in their
+            custom class - it is better to use a ``key`` function with 
``natsort``, or
+            use the ``natsort`` key as part of your rich comparison operator 
definition.
+        
+        How *does* ``natsort`` work?
+            If you don't want to read `How Does Natsort Work? 
<http://natsort.readthedocs.io/en/master/howitworks.html>`_,
+            here is a quick primer.
+        
+            ``natsort`` provides a `key function 
<https://docs.python.org/3/howto/sorting.html#key-functions>`_
+            that can be passed to `list.sort() 
<https://docs.python.org/3/library/stdtypes.html#list.sort>`_
+            or `sorted() 
<https://docs.python.org/3/library/functions.html#sorted>`_ in order to
+            modify the default sorting behavior. This key is generated 
on-demand with the
+            key generator ``natsort.natsort_keygen()``.  
``natsort.natsorted()`` is essentially
+            a wrapper for the following code:
+        
+            .. code-block:: python
+        
+                >>> from natsort import natsort_keygen
+                >>> natsort_key = natsort_keygen()
+                >>> sorted(['1', '10', '2'], key=natsort_key)
+                ['1', '2', '10']
+        
+            Users can further customize ``natsort`` sorting behavior with the 
``key``
+            and/or ``alg`` options (see details in the `Further Customizing 
Natsort`_
+            section).
+        
+            The key generated by ``natsort_keygen`` *always* returns a 
``tuple``. It
+            does so in the following way (*some details omitted for clarity*):
+        
+              1. Assume the input is a string, and attempt to split it into 
numbers and
+                 non-numbers using regular expressions. Numbers are then 
converted into
+                 either ``int`` or ``float``.
+              2. If the above fails because the input is not a string, assume 
the input
+                 is some other sequence (e.g. ``list`` or ``tuple``), and 
recursively
+                 apply the key to each element of the sequence.
+              3. If the above fails because the input is not iterable, assume 
the input
+                 is an ``int`` or ``float``, and just return the input in a 
``tuple``.
+        
+            Because a ``tuple`` is always returned, a ``TypeError`` should not 
be common
+            unless one tries to do something odd like sort an ``int`` against 
a ``list``.
+        
+        ``natsort`` gave me results I didn't expect, and it's a terrible 
library!
+            Did you try to debug using the above advice? If so, and you still 
cannot figure out
+            the error, then please `file an issue 
<https://github.com/SethMMorton/natsort/issues/new>`_.
+        
         Shell script
         ------------
         
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/natsort-5.3.2/setup.cfg new/natsort-5.3.3/setup.cfg
--- old/natsort-5.3.2/setup.cfg 2018-05-18 05:47:13.000000000 +0200
+++ new/natsort-5.3.3/setup.cfg 2018-07-08 02:18:38.000000000 +0200
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 5.3.2
+current_version = 5.3.3
 commit = True
 tag = True
 tag_name = {new_version}
@@ -46,6 +46,8 @@
 [bumpversion:file:docs/source/conf.py]
 
 [bumpversion:file:docs/source/changelog.rst]
+search = X.X.X
+replace = {new_version}
 
 [tool:pytest]
 flakes-ignore = 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/natsort-5.3.2/setup.py new/natsort-5.3.3/setup.py
--- old/natsort-5.3.2/setup.py  2018-05-18 05:43:44.000000000 +0200
+++ new/natsort-5.3.3/setup.py  2018-07-08 02:17:07.000000000 +0200
@@ -3,7 +3,7 @@
 from setuptools import setup, find_packages
 setup(
     name='natsort',
-    version='5.3.2',
+    version='5.3.3',
     packages=find_packages(),
     install_requires=["argparse; python_version < '2.7'"],
     entry_points={'console_scripts': ['natsort = natsort.__main__:main']},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/natsort-5.3.2/test_natsort/slow_splitters.py 
new/natsort-5.3.3/test_natsort/slow_splitters.py
--- old/natsort-5.3.2/test_natsort/slow_splitters.py    2018-04-21 
05:11:54.000000000 +0200
+++ new/natsort-5.3.3/test_natsort/slow_splitters.py    2018-07-02 
08:33:45.000000000 +0200
@@ -304,7 +304,10 @@
     pairs = pairwise(iterable)
 
     # Prime loop by handling first pair specially.
-    first, second = next(pairs)
+    try:
+        first, second = next(pairs)
+    except StopIteration:
+        return
     if second is None:  # Only one element
         yield first
     elif type(first) in types and type(second) in types:


Reply via email to