Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-jmespath for openSUSE:Factory 
checked in at 2023-01-24 19:42:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jmespath (Old)
 and      /work/SRC/openSUSE:Factory/.python-jmespath.new.32243 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-jmespath"

Tue Jan 24 19:42:28 2023 rev:20 rq:1060481 version:1.0.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-jmespath/python-jmespath.changes  
2021-09-30 23:43:10.060453737 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-jmespath.new.32243/python-jmespath.changes   
    2023-01-24 20:31:58.148259753 +0100
@@ -1,0 +2,7 @@
+Sat Sep 17 15:41:47 UTC 2022 - Dirk Müller <dmuel...@suse.com>
+
+- update to 1.0.1:
+  * Drop support for Python versions less than 3.7 (including Python 2).
+- drop remove-nose.patch (upstream)
+
+-------------------------------------------------------------------

Old:
----
  jmespath-0.10.0.tar.gz
  remove-nose.patch

New:
----
  jmespath-1.0.1.tar.gz

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

Other differences:
------------------
++++++ python-jmespath.spec ++++++
--- /var/tmp/diff_new_pack.2WXffv/_old  2023-01-24 20:31:58.600262145 +0100
+++ /var/tmp/diff_new_pack.2WXffv/_new  2023-01-24 20:31:58.608262188 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-jmespath
 #
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,18 +16,18 @@
 #
 
 
-%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%{?!python_module:%define python_module() python3-%{**}}
 Name:           python-jmespath
-Version:        0.10.0
+Version:        1.0.1
 Release:        0
 Summary:        Python module for declarative JSON document element extraction
 License:        MIT
 URL:            https://github.com/jmespath/jmespath.py
 Source:         
https://github.com/jmespath/jmespath.py/archive/refs/tags/%{version}.tar.gz#/jmespath-%{version}.tar.gz
-Patch0:         remove-nose.patch
 # Testing
 BuildRequires:  %{python_module hypothesis}
 BuildRequires:  %{python_module ply >= 3.4}
+BuildRequires:  %{python_module pytest}
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module simplejson}
 BuildRequires:  fdupes
@@ -71,8 +71,7 @@
 The expression: foo.*.name will return ["one", "two"].
 
 %prep
-%setup -q -n jmespath.py-%{version}
-%autopatch -p1
+%autosetup -p1 -n jmespath.py-%{version}
 
 %build
 %python_build
@@ -84,11 +83,8 @@
 %python_expand %fdupes %{buildroot}%{$python_sitelib}
 
 %check
-%if 0%{?suse_version} > 1500
+# hangs on python 3.8 with pytest
 %pyunittest discover -v
-%else
-%python_exec setup.py test
-%endif
 
 %post
 %python_install_alternative jp

++++++ jmespath-0.10.0.tar.gz -> jmespath-1.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/.github/workflows/run-tests.yml 
new/jmespath.py-1.0.1/.github/workflows/run-tests.yml
--- old/jmespath.py-0.10.0/.github/workflows/run-tests.yml      2020-05-13 
00:01:10.000000000 +0200
+++ new/jmespath.py-1.0.1/.github/workflows/run-tests.yml       2022-06-17 
19:57:42.000000000 +0200
@@ -1,6 +1,6 @@
 name: Run Tests
 
-on: [push]
+on: [push, pull_request]
 
 jobs:
   build:
@@ -9,12 +9,12 @@
     strategy:
       matrix:
         os: [ubuntu-latest]
-        python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
+        python-version: ["3.7", "3.8", "3.9", "3.10", "3.11-dev"]
 
     steps:
     - uses: actions/checkout@v2
     - name: Set up Python ${{ matrix.python-version }}
-      uses: actions/setup-python@v1
+      uses: actions/setup-python@v2
       with:
         python-version: ${{ matrix.python-version }}
     - name: Install dependencies
@@ -25,4 +25,4 @@
         pip install dist/*.whl
     - name: Test with pytest
       run: |
-        cd tests/ && nosetests --with-coverage --cover-package jmespath .
+        cd tests/ && py.test --cov jmespath --cov-report term-missing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/.travis.yml 
new/jmespath.py-1.0.1/.travis.yml
--- old/jmespath.py-0.10.0/.travis.yml  2020-05-13 00:01:10.000000000 +0200
+++ new/jmespath.py-1.0.1/.travis.yml   1970-01-01 01:00:00.000000000 +0100
@@ -1,30 +0,0 @@
-dist: trusty
-language: python
-python:
-  - "2.6"
-  - "2.7"
-  - "3.3"
-  - "3.4"
-  - "3.5"
-  - "3.6"
-  - "pypy"
-# Enable 3.7 without globally enabling dist: xenial for other build jobs
-matrix:
-  include:
-    - python: "3.7"
-      dist: xenial
-    - python: "3.8"
-      dist: xenial
-before_install:
-  - pip install codecov
-install:
-  - if [[ $TRAVIS_PYTHON_VERSION == '2.6' ]]; then pip install unittest2; pip 
install -r requirements26.txt; fi
-  - "rm -rf dist/*"
-  - pip install -r requirements.txt
-  - python setup.py bdist_wheel
-  - pip install dist/*.whl
-script:
-  - cd tests/ && nosetests --with-coverage --cover-package jmespath .
-  - if [[ $TRAVIS_PYTHON_VERSION != '2.6' ]] && [[ $TRAVIS_PYTHON_VERSION != 
'3.8' ]]; then JP_MAX_EXAMPLES=10000 nosetests ../extra/test_hypothesis.py; fi
-after_success:
-  - codecov
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/CHANGELOG.rst 
new/jmespath.py-1.0.1/CHANGELOG.rst
--- old/jmespath.py-0.10.0/CHANGELOG.rst        2020-05-13 00:01:10.000000000 
+0200
+++ new/jmespath.py-1.0.1/CHANGELOG.rst 2022-06-17 19:57:42.000000000 +0200
@@ -1,3 +1,10 @@
+1.0.0
+=====
+
+* Drop support for Python versions less than 3.7 (including Python 2).
+  (`issue 268 <https://github.com/jmespath/jmespath.py/issues/268>`__)
+
+
 0.10.0
 ======
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/README.rst 
new/jmespath.py-1.0.1/README.rst
--- old/jmespath.py-0.10.0/README.rst   2020-05-13 00:01:10.000000000 +0200
+++ new/jmespath.py-1.0.1/README.rst    2022-06-17 19:57:42.000000000 +0200
@@ -6,14 +6,6 @@
    :target: https://gitter.im/jmespath/chat
 
 
-.. image:: https://travis-ci.org/jmespath/jmespath.py.svg?branch=develop
-    :target: https://travis-ci.org/jmespath/jmespath.py
-
-
-.. image:: 
https://codecov.io/github/jmespath/jmespath.py/coverage.svg?branch=develop
-    :target: https://codecov.io/github/jmespath/jmespath.py?branch=develop
-
-
 JMESPath (pronounced "james path") allows you to declaratively specify how to
 extract elements from a JSON document.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/docs/conf.py 
new/jmespath.py-1.0.1/docs/conf.py
--- old/jmespath.py-0.10.0/docs/conf.py 2020-05-13 00:01:10.000000000 +0200
+++ new/jmespath.py-1.0.1/docs/conf.py  2022-06-17 19:57:42.000000000 +0200
@@ -38,7 +38,7 @@
 # The short X.Y version.
 version = '0.8'
 # The full version, including alpha/beta/rc tags.
-release = '0.10.0'
+release = '1.0.1'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/docs/proposals/exptype.rst 
new/jmespath.py-1.0.1/docs/proposals/exptype.rst
--- old/jmespath.py-0.10.0/docs/proposals/exptype.rst   2020-05-13 
00:01:10.000000000 +0200
+++ new/jmespath.py-1.0.1/docs/proposals/exptype.rst    2022-06-17 
19:57:42.000000000 +0200
@@ -23,7 +23,9 @@
 
 A useful feature that is common in other expression languages is the
 ability to sort a JSON object based on a particular key.  For example,
-given a JSON object::
+given a JSON object:
+
+.. code:: json
 
   {
     "people": [
@@ -46,7 +48,9 @@
 be an ``identifier``, but more complex expressions could be used such as
 ``foo.bar.baz``.
 
-A simple way to accomplish this might be to create a function like this::
+A simple way to accomplish this might be to create a function like this:
+
+.. code:: python
 
     sort_by(array arg1, expression)
 
@@ -56,7 +60,9 @@
     sort_by(people, to_number(age_str))
 
 However, there's a problem with the ``sort_by`` function as defined above.
-If we follow the function argument resolution process we get::
+If we follow the function argument resolution process we get:
+
+.. code:: python
 
     sort_by(people, age)
 
@@ -107,7 +113,9 @@
 ``expression->type`` syntax.
 
 Note that any valid expression is allowed after ``&``, so the following
-expressions are valid::
+expressions are valid:
+
+.. code:: python
 
     sort_by(people, &foo.bar.baz)
     sort_by(people, &foo.bar[0].baz)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/extra/test_hypothesis.py 
new/jmespath.py-1.0.1/extra/test_hypothesis.py
--- old/jmespath.py-0.10.0/extra/test_hypothesis.py     2020-05-13 
00:01:10.000000000 +0200
+++ new/jmespath.py-1.0.1/extra/test_hypothesis.py      2022-06-17 
19:57:42.000000000 +0200
@@ -3,10 +3,8 @@
 # can a) be run separately and b) allow for customization
 # via env var for longer runs in travis.
 import os
-import sys
 import numbers
 
-from nose.plugins.skip import SkipTest
 from hypothesis import given, settings, assume, HealthCheck
 import hypothesis.strategies as st
 
@@ -16,11 +14,6 @@
 from jmespath.functions import Functions
 
 
-if sys.version_info[:2] == (2, 6):
-    raise RuntimeError("Hypothesis tests are not supported on python2.6. "
-                       "Use python2.7, or python3.3 and greater.")
-
-
 JSON_NUMBERS = (st.integers() | st.floats(allow_nan=False,
                                           allow_infinity=False))
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/jmespath/__init__.py 
new/jmespath.py-1.0.1/jmespath/__init__.py
--- old/jmespath.py-0.10.0/jmespath/__init__.py 2020-05-13 00:01:10.000000000 
+0200
+++ new/jmespath.py-1.0.1/jmespath/__init__.py  2022-06-17 19:57:42.000000000 
+0200
@@ -1,18 +1,7 @@
-import warnings
-import sys
 from jmespath import parser
 from jmespath.visitor import Options
 
-__version__ = '0.10.0'
-
-
-if sys.version_info[:2] <= (2, 6) or ((3, 0) <= sys.version_info[:2] <= (3, 
3)):
-    python_ver = '.'.join(str(x) for x in sys.version_info[:3])
-
-    warnings.warn(
-        'You are using Python {0}, which will no longer be supported in '
-        'version 0.11.0'.format(python_ver),
-        DeprecationWarning)
+__version__ = '1.0.1'
 
 
 def compile(expression):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/jmespath/compat.py 
new/jmespath.py-1.0.1/jmespath/compat.py
--- old/jmespath.py-0.10.0/jmespath/compat.py   2020-05-13 00:01:10.000000000 
+0200
+++ new/jmespath.py-1.0.1/jmespath/compat.py    2022-06-17 19:57:42.000000000 
+0200
@@ -1,65 +1,19 @@
 import sys
 import inspect
+from itertools import zip_longest
 
-PY2 = sys.version_info[0] == 2
 
+text_type = str
+string_type = str
 
-def with_metaclass(meta, *bases):
-    # Taken from flask/six.
-    class metaclass(meta):
-        def __new__(cls, name, this_bases, d):
-            return meta(name, bases, d)
-    return type.__new__(metaclass, 'temporary_class', (), {})
-
-
-if PY2:
-    text_type = unicode
-    string_type = basestring
-    from itertools import izip_longest as zip_longest
-
-    def with_str_method(cls):
-        """Class decorator that handles __str__ compat between py2 and py3."""
-        # In python2, the __str__ should be __unicode__
-        # and __str__ should return bytes.
-        cls.__unicode__ = cls.__str__
-        def __str__(self):
-            return self.__unicode__().encode('utf-8')
-        cls.__str__ = __str__
-        return cls
-
-    def with_repr_method(cls):
-        """Class decorator that handle __repr__ with py2 and py3."""
-        # This is almost the same thing as with_str_method *except*
-        # it uses the unicode_escape encoding.  This also means we need to be
-        # careful encoding the input multiple times, so we only encode
-        # if we get a unicode type.
-        original_repr_method = cls.__repr__
-        def __repr__(self):
-            original_repr = original_repr_method(self)
-            if isinstance(original_repr, text_type):
-                original_repr = original_repr.encode('unicode_escape')
-            return original_repr
-        cls.__repr__ = __repr__
-        return cls
-
-    def get_methods(cls):
-        for name, method in inspect.getmembers(cls,
-                                               predicate=inspect.ismethod):
-            yield name, method
-
-else:
-    text_type = str
-    string_type = str
-    from itertools import zip_longest
-
-    def with_str_method(cls):
-        # In python3, we don't need to do anything, we return a str type.
-        return cls
-
-    def with_repr_method(cls):
-        return cls
-
-    def get_methods(cls):
-        for name, method in inspect.getmembers(cls,
-                                               predicate=inspect.isfunction):
-            yield name, method
+
+def with_str_method(cls):
+    # In python3, we don't need to do anything, we return a str type.
+    return cls
+
+def with_repr_method(cls):
+    return cls
+
+def get_methods(cls):
+    for name, method in inspect.getmembers(cls, predicate=inspect.isfunction):
+        yield name, method
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/jmespath/functions.py 
new/jmespath.py-1.0.1/jmespath/functions.py
--- old/jmespath.py-0.10.0/jmespath/functions.py        2020-05-13 
00:01:10.000000000 +0200
+++ new/jmespath.py-1.0.1/jmespath/functions.py 2022-06-17 19:57:42.000000000 
+0200
@@ -3,7 +3,7 @@
 
 from jmespath import exceptions
 from jmespath.compat import string_type as STRING_TYPE
-from jmespath.compat import get_methods, with_metaclass
+from jmespath.compat import get_methods
 
 
 # python types -> jmespath types
@@ -64,7 +64,7 @@
         cls.FUNCTION_TABLE = function_table
 
 
-class Functions(with_metaclass(FunctionRegistry, object)):
+class Functions(metaclass=FunctionRegistry):
 
     FUNCTION_TABLE = {
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/jmespath/parser.py 
new/jmespath.py-1.0.1/jmespath/parser.py
--- old/jmespath.py-0.10.0/jmespath/parser.py   2020-05-13 00:01:10.000000000 
+0200
+++ new/jmespath.py-1.0.1/jmespath/parser.py    2022-06-17 19:57:42.000000000 
+0200
@@ -489,7 +489,7 @@
             lex_position, actual_value, actual_type, message)
 
     def _free_cache_entries(self):
-        for key in random.sample(self._CACHE.keys(), int(self._MAX_SIZE / 2)):
+        for key in random.sample(list(self._CACHE.keys()), int(self._MAX_SIZE 
/ 2)):
             self._CACHE.pop(key, None)
 
     @classmethod
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/jmespath/visitor.py 
new/jmespath.py-1.0.1/jmespath/visitor.py
--- old/jmespath.py-0.10.0/jmespath/visitor.py  2020-05-13 00:01:10.000000000 
+0200
+++ new/jmespath.py-1.0.1/jmespath/visitor.py   2022-06-17 19:57:42.000000000 
+0200
@@ -6,13 +6,13 @@
 
 
 def _equals(x, y):
-    if _is_special_integer_case(x, y):
+    if _is_special_number_case(x, y):
         return False
     else:
         return x == y
 
 
-def _is_special_integer_case(x, y):
+def _is_special_number_case(x, y):
     # We need to special case comparing 0 or 1 to
     # True/False.  While normally comparing any
     # integer other than 0/1 to True/False will always
@@ -29,10 +29,10 @@
     # Also need to consider that:
     # >>> 0 in [True, False]
     # True
-    if type(x) is int and (x == 0 or x == 1):
-        return y is True or y is False
-    elif type(y) is int and (y == 0 or y == 1):
-        return x is True or x is False
+    if _is_actual_number(x) and x in (0, 1):
+        return isinstance(y, bool)
+    elif _is_actual_number(y) and y in (0, 1):
+        return isinstance(x, bool)
 
 
 def _is_comparable(x):
@@ -51,7 +51,7 @@
     # True
     # >>> isinstance(True, int)
     # True
-    if x is True or x is False:
+    if isinstance(x, bool):
         return False
     return isinstance(x, Number)
 
@@ -257,7 +257,7 @@
 
     def visit_not_expression(self, node, value):
         original_result = self.visit(node['children'][0], value)
-        if type(original_result) is int and original_result == 0:
+        if _is_actual_number(original_result) and original_result == 0:
             # Special case for 0, !0 should be false, not true.
             # 0 is not a special cased integer in jmespath.
             return False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/requirements.txt 
new/jmespath.py-1.0.1/requirements.txt
--- old/jmespath.py-0.10.0/requirements.txt     2020-05-13 00:01:10.000000000 
+0200
+++ new/jmespath.py-1.0.1/requirements.txt      2022-06-17 19:57:42.000000000 
+0200
@@ -1,8 +1,6 @@
-nose==1.2.1
-py==1.4.12
-tox==1.4.2
 wheel==0.24.0
-coverage==5.0.3 ; python_version == '3.8'
-coverage==3.7.1 ; python_version != '3.8'
-hypothesis==3.1.0 ; python_version != '3.8'
+pytest==6.2.5
+pytest-cov==3.0.0
+hypothesis==3.1.0 ; python_version < '3.8'
 hypothesis==5.5.4 ; python_version == '3.8'
+hypothesis==5.35.4 ; python_version == '3.9'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/requirements26.txt 
new/jmespath.py-1.0.1/requirements26.txt
--- old/jmespath.py-0.10.0/requirements26.txt   2020-05-13 00:01:10.000000000 
+0200
+++ new/jmespath.py-1.0.1/requirements26.txt    1970-01-01 01:00:00.000000000 
+0100
@@ -1,4 +0,0 @@
-# For the python2.6 tests, we need ordered dict.
-ordereddict==1.1
-unittest2==0.5.1
-simplejson==3.6.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/setup.cfg 
new/jmespath.py-1.0.1/setup.cfg
--- old/jmespath.py-0.10.0/setup.cfg    2020-05-13 00:01:10.000000000 +0200
+++ new/jmespath.py-1.0.1/setup.cfg     2022-06-17 19:57:42.000000000 +0200
@@ -1,5 +1,5 @@
 [bdist_wheel]
-universal = 1
+universal = 0
 
 [metadata]
 license_file = LICENSE.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/setup.py 
new/jmespath.py-1.0.1/setup.py
--- old/jmespath.py-0.10.0/setup.py     2020-05-13 00:01:10.000000000 +0200
+++ new/jmespath.py-1.0.1/setup.py      2022-06-17 19:57:42.000000000 +0200
@@ -1,24 +1,13 @@
 #!/usr/bin/env python
 
 import io
-import sys
-import warnings
 
 from setuptools import setup, find_packages
 
 
-if sys.version_info[:2] <= (2, 6) or ((3, 0) <= sys.version_info[:2] <= (3, 
3)):
-    python_ver = '.'.join(str(x) for x in sys.version_info[:3])
-
-    warnings.warn(
-        'You are using Python {0}, which will no longer be supported in '
-        'version 0.11.0'.format(python_ver),
-        DeprecationWarning)
-
-
 setup(
     name='jmespath',
-    version='0.10.0',
+    version='1.0.1',
     description='JSON Matching Expressions',
     long_description=io.open('README.rst', encoding='utf-8').read(),
     author='James Saryerwinnie',
@@ -27,22 +16,19 @@
     scripts=['bin/jp.py'],
     packages=find_packages(exclude=['tests']),
     license='MIT',
-    python_requires='>=2.6, !=3.0.*, !=3.1.*, !=3.2.*',
+    python_requires='>=3.7',
     classifiers=[
         'Development Status :: 5 - Production/Stable',
         'Intended Audience :: Developers',
         'Natural Language :: English',
         'License :: OSI Approved :: MIT License',
         'Programming Language :: Python',
-        'Programming Language :: Python :: 2',
-        'Programming Language :: Python :: 2.6',
-        'Programming Language :: Python :: 2.7',
         'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.3',
-        'Programming Language :: Python :: 3.4',
-        'Programming Language :: Python :: 3.5',
-        'Programming Language :: Python :: 3.6',
         'Programming Language :: Python :: 3.7',
+        'Programming Language :: Python :: 3.8',
+        'Programming Language :: Python :: 3.9',
+        'Programming Language :: Python :: 3.10',
+        'Programming Language :: Python :: 3.11',
         'Programming Language :: Python :: Implementation :: CPython',
         'Programming Language :: Python :: Implementation :: PyPy',
     ],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/tests/__init__.py 
new/jmespath.py-1.0.1/tests/__init__.py
--- old/jmespath.py-0.10.0/tests/__init__.py    2020-05-13 00:01:10.000000000 
+0200
+++ new/jmespath.py-1.0.1/tests/__init__.py     2022-06-17 19:57:42.000000000 
+0200
@@ -1,18 +1,9 @@
 import sys
 from jmespath import ast
 
-
-# The unittest module got a significant overhaul
-# in 2.7, so if we're in 2.6 we can use the backported
-# version unittest2.
-if sys.version_info[:2] == (2, 6):
-    import unittest2 as unittest
-    import simplejson as json
-    from ordereddict import OrderedDict
-else:
-    import unittest
-    import json
-    from collections import OrderedDict
+import unittest
+import json
+from collections import OrderedDict
 
 
 # Helper method used to create an s-expression
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/tests/compliance/boolean.json 
new/jmespath.py-1.0.1/tests/compliance/boolean.json
--- old/jmespath.py-0.10.0/tests/compliance/boolean.json        2020-05-13 
00:01:10.000000000 +0200
+++ new/jmespath.py-1.0.1/tests/compliance/boolean.json 2022-06-17 
19:57:42.000000000 +0200
@@ -76,7 +76,8 @@
       "False": false,
       "Number": 5,
       "EmptyList": [],
-      "Zero": 0
+      "Zero": 0,
+      "ZeroFloat": 0.0
     },
     "cases": [
       {
@@ -188,6 +189,10 @@
         "result": true
       },
       {
+        "expression": "!True && False",
+        "result": false
+      },
+      {
         "expression": "!(True && False)",
         "result": true
       },
@@ -198,6 +203,14 @@
       {
         "expression": "!!Zero",
         "result": true
+      },
+      {
+        "expression": "Zero || Number",
+        "result": 0
+      },
+      {
+        "expression": "ZeroFloat || Number",
+        "result": 0.0
       }
     ]
   },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/tests/compliance/filters.json 
new/jmespath.py-1.0.1/tests/compliance/filters.json
--- old/jmespath.py-0.10.0/tests/compliance/filters.json        2020-05-13 
00:01:10.000000000 +0200
+++ new/jmespath.py-1.0.1/tests/compliance/filters.json 2022-06-17 
19:57:42.000000000 +0200
@@ -81,6 +81,50 @@
     ]
   },
   {
+    "given": {"foo": [{"weight": 33.3},
+      {"weight": 44.4},
+      {"weight": 55.5}]},
+    "cases": [
+      {
+        "comment": "Greater than with a number",
+        "expression": "foo[?weight > `44.4`]",
+        "result": [{"weight": 55.5}]
+      },
+      {
+        "expression": "foo[?weight >= `44.4`]",
+        "result": [{"weight": 44.4}, {"weight": 55.5}]
+      },
+      {
+        "comment": "Greater than with a number",
+        "expression": "foo[?weight > `55.5`]",
+        "result": []
+      },
+      {
+        "comment": "Greater than with a number",
+        "expression": "foo[?weight < `44.4`]",
+        "result": [{"weight": 33.3}]
+      },
+      {
+        "comment": "Greater than with a number",
+        "expression": "foo[?weight <= `44.4`]",
+        "result": [{"weight": 33.3}, {"weight": 44.4}]
+      },
+      {
+        "comment": "Greater than with a number",
+        "expression": "foo[?weight < `33.3`]",
+        "result": []
+      },
+      {
+        "expression": "foo[?weight == `33.3`]",
+        "result": [{"weight": 33.3}]
+      },
+      {
+        "expression": "foo[?weight != `33.3`]",
+        "result": [{"weight": 44.4}, {"weight": 55.5}]
+      }
+    ]
+  },
+  {
     "given": {"foo": [{"top": {"name": "a"}},
       {"top": {"name": "b"}}]},
     "cases": [
@@ -265,6 +309,88 @@
       }
     ]
   },
+  {
+    "given": {"foo": [
+      {"key": true},
+      {"key": false},
+      {"key": 0},
+      {"key": 0.0},
+      {"key": 1},
+      {"key": 1.0},
+      {"key": [0]},
+      {"key": null},
+      {"key": [1]},
+      {"key": []},
+      {"key": {}},
+      {"key": {"a":2}}
+    ]},
+    "cases": [
+      {
+        "expression": "foo[?key == `true`]",
+        "result": [{"key": true}]
+      },
+      {
+        "expression": "foo[?key == `false`]",
+        "result": [{"key": false}]
+      },
+      {
+        "expression": "foo[?key]",
+        "result": [
+          {"key": true},
+          {"key": 0},
+          {"key": 0.0},
+          {"key": 1},
+          {"key": 1.0},
+          {"key": [0]},
+          {"key": [1]},
+          {"key": {"a": 2}}
+        ]
+      },
+      {
+        "expression": "foo[? !key]",
+        "result": [
+          {"key": false},
+          {"key": null},
+          {"key": []},
+          {"key": {}}
+        ]
+      },
+      {
+        "expression": "foo[? !!key]",
+        "result": [
+          {"key": true},
+          {"key": 0},
+          {"key": 0.0},
+          {"key": 1},
+          {"key": 1.0},
+          {"key": [0]},
+          {"key": [1]},
+          {"key": {"a": 2}}
+        ]
+      },
+      {
+        "expression": "foo[? `true`]",
+        "result": [
+          {"key": true},
+          {"key": false},
+          {"key": 0},
+          {"key": 0.0},
+          {"key": 1},
+          {"key": 1.0},
+          {"key": [0]},
+          {"key": null},
+          {"key": [1]},
+          {"key": []},
+          {"key": {}},
+          {"key": {"a":2}}
+        ]
+      },
+      {
+        "expression": "foo[? `false`]",
+        "result": []
+      }
+    ]
+  },
   {
     "given": {"reservations": [
       {"instances": [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/tests/compliance/functions.json 
new/jmespath.py-1.0.1/tests/compliance/functions.json
--- old/jmespath.py-0.10.0/tests/compliance/functions.json      2020-05-13 
00:01:10.000000000 +0200
+++ new/jmespath.py-1.0.1/tests/compliance/functions.json       2022-06-17 
19:57:42.000000000 +0200
@@ -580,12 +580,12 @@
       "error": "invalid-arity"
     },
     {
-      "description": "function projection on single arg function",
+      "comment": "function projection on single arg function",
       "expression": "numbers[].to_string(@)",
       "result": ["-1", "3", "4", "5"]
     },
     {
-      "description": "function projection on single arg function",
+      "comment": "function projection on single arg function",
       "expression": "array[].to_number(@)",
       "result": [-1, 3, 4, 5, 100]
     }
@@ -603,7 +603,7 @@
   },
   "cases": [
     {
-      "description": "function projection on variadic function",
+      "comment": "function projection on variadic function",
       "expression": "foo[].not_null(f, e, d, c, b, a)",
       "result": ["b", "c", "d", "e", "f"]
     }
@@ -621,7 +621,7 @@
   },
   "cases": [
     {
-      "description": "sort by field expression",
+      "comment": "sort by field expression",
       "expression": "sort_by(people, &age)",
       "result": [
          {"age": 10, "age_str": "10", "bool": true, "name": 3},
@@ -642,7 +642,7 @@
       ]
     },
     {
-      "description": "sort by function expression",
+      "comment": "sort by function expression",
       "expression": "sort_by(people, &to_number(age_str))",
       "result": [
          {"age": 10, "age_str": "10", "bool": true, "name": 3},
@@ -653,7 +653,7 @@
       ]
     },
     {
-      "description": "function projection on sort_by function",
+      "comment": "function projection on sort_by function",
       "expression": "sort_by(people, &age)[].name",
       "result": [3, "a", "c", "b", "d"]
     },
@@ -749,7 +749,7 @@
   },
   "cases": [
     {
-      "description": "stable sort order",
+      "comment": "stable sort order",
       "expression": "sort_by(people, &age)",
       "result": [
          {"age": 10, "order": "1"},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/tests/compliance/literal.json 
new/jmespath.py-1.0.1/tests/compliance/literal.json
--- old/jmespath.py-0.10.0/tests/compliance/literal.json        2020-05-13 
00:01:10.000000000 +0200
+++ new/jmespath.py-1.0.1/tests/compliance/literal.json 2022-06-17 
19:57:42.000000000 +0200
@@ -184,6 +184,16 @@
           "comment": "Can escape the single quote",
           "expression": "'foo\\'bar'",
           "result": "foo'bar"
+        },
+        {
+          "comment": "Backslash not followed by single quote is treated as any 
other character",
+          "expression": "'\\z'",
+          "result": "\\z"
+        },
+        {
+          "comment": "Backslash not followed by single quote is treated as any 
other character",
+          "expression": "'\\\\'",
+          "result": "\\\\"
         }
       ]
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/tests/compliance/syntax.json 
new/jmespath.py-1.0.1/tests/compliance/syntax.json
--- old/jmespath.py-0.10.0/tests/compliance/syntax.json 2020-05-13 
00:01:10.000000000 +0200
+++ new/jmespath.py-1.0.1/tests/compliance/syntax.json  2022-06-17 
19:57:42.000000000 +0200
@@ -7,6 +7,10 @@
       "result": null
     },
     {
+      "expression": "foo",
+      "result": null
+    },
+    {
       "expression": "foo.1",
       "error": "syntax"
     },
@@ -417,6 +421,16 @@
         "error": "syntax"
       },
       {
+        "comment": "Missing value",
+        "expression": "a.{foo:}",
+        "error": "syntax"
+      },
+      {
+        "comment": "Missing value with trailing comma",
+        "expression": "a.{foo: ,}",
+        "error": "syntax"
+      },
+      {
         "comment": "Valid multi-select hash extraction",
         "expression": "a.{foo: bar}",
         "result": null
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/tests/test_compliance.py 
new/jmespath.py-1.0.1/tests/test_compliance.py
--- old/jmespath.py-0.10.0/tests/test_compliance.py     2020-05-13 
00:01:10.000000000 +0200
+++ new/jmespath.py-1.0.1/tests/test_compliance.py      2022-06-17 
19:57:42.000000000 +0200
@@ -3,7 +3,7 @@
 from tests import OrderedDict
 from tests import json
 
-from nose.tools import assert_equal
+import pytest
 
 from jmespath.visitor import Options
 
@@ -15,7 +15,7 @@
 OPTIONS = Options(dict_cls=OrderedDict)
 
 
-def test_compliance():
+def _compliance_tests(requested_test_type):
     for full_path in _walk_files():
         if full_path.endswith('.json'):
             for given, test_type, test_data in load_cases(full_path):
@@ -23,11 +23,11 @@
                 # Benchmark tests aren't run as part of the normal
                 # test suite, so we only care about 'result' and
                 # 'error' test_types.
-                if test_type == 'result':
-                    yield (_test_expression, given, t['expression'],
+                if test_type == 'result' and test_type == requested_test_type:
+                    yield (given, t['expression'],
                            t['result'], os.path.basename(full_path))
-                elif test_type == 'error':
-                    yield (_test_error_expression, given, t['expression'],
+                elif test_type == 'error' and test_type == requested_test_type:
+                    yield (given, t['expression'],
                            t['error'], os.path.basename(full_path))
 
 
@@ -63,7 +63,11 @@
             yield (given, test_type, case)
 
 
-def _test_expression(given, expression, expected, filename):
+@pytest.mark.parametrize(
+    'given, expression, expected, filename',
+    _compliance_tests('result')
+)
+def test_expression(given, expression, expected, filename):
     import jmespath.parser
     try:
         parsed = jmespath.compile(expression)
@@ -80,10 +84,14 @@
                      actual_repr, pformat(parsed.parsed),
                      json.dumps(given, indent=4)))
     error_msg = error_msg.replace(r'\n', '\n')
-    assert_equal(actual, expected, error_msg)
+    assert actual == expected, error_msg
 
 
-def _test_error_expression(given, expression, error, filename):
+@pytest.mark.parametrize(
+    'given, expression, error, filename',
+    _compliance_tests('error')
+)
+def test_error_expression(given, expression, error, filename):
     import jmespath.parser
     if error not in ('syntax', 'invalid-type',
                      'unknown-function', 'invalid-arity', 'invalid-value'):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/tests/test_lexer.py 
new/jmespath.py-1.0.1/tests/test_lexer.py
--- old/jmespath.py-0.10.0/tests/test_lexer.py  2020-05-13 00:01:10.000000000 
+0200
+++ new/jmespath.py-1.0.1/tests/test_lexer.py   2022-06-17 19:57:42.000000000 
+0200
@@ -152,7 +152,7 @@
             tokens = list(self.lexer.tokenize('^foo[0]'))
 
     def test_unknown_character_with_identifier(self):
-        with self.assertRaisesRegexp(LexerError, "Unknown token"):
+        with self.assertRaisesRegex(LexerError, "Unknown token"):
             list(self.lexer.tokenize('foo-bar'))
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jmespath.py-0.10.0/tests/test_parser.py 
new/jmespath.py-1.0.1/tests/test_parser.py
--- old/jmespath.py-0.10.0/tests/test_parser.py 2020-05-13 00:01:10.000000000 
+0200
+++ new/jmespath.py-1.0.1/tests/test_parser.py  2022-06-17 19:57:42.000000000 
+0200
@@ -169,7 +169,7 @@
         error_message = re.compile(
             r'Bad jmespath expression: '
             r'Invalid \\uXXXX escape.*\\uAZ12', re.DOTALL)
-        with self.assertRaisesRegexp(exceptions.LexerError, error_message):
+        with self.assertRaisesRegex(exceptions.LexerError, error_message):
             self.parser.parse(r'"\uAZ12"')
 
 

Reply via email to