Hello community,

here is the log from the commit of package python-cfgv for openSUSE:Factory 
checked in at 2020-03-31 17:17:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-cfgv (Old)
 and      /work/SRC/openSUSE:Factory/.python-cfgv.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-cfgv"

Tue Mar 31 17:17:35 2020 rev:4 rq:790114 version:3.1.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-cfgv/python-cfgv.changes  2019-07-26 
17:35:20.108065297 +0200
+++ /work/SRC/openSUSE:Factory/.python-cfgv.new.3160/python-cfgv.changes        
2020-03-31 17:17:41.023720512 +0200
@@ -1,0 +2,6 @@
+Mon Mar 30 13:55:49 UTC 2020 - Marketa Calabkova <mcalabk...@suse.com>
+
+- update to version 3.1.0
+  * cfgv: python3.6+
+
+-------------------------------------------------------------------

Old:
----
  cfgv-2.0.1.tar.gz

New:
----
  cfgv-3.1.0.tar.gz

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

Other differences:
------------------
++++++ python-cfgv.spec ++++++
--- /var/tmp/diff_new_pack.7908GC/_old  2020-03-31 17:17:42.067721175 +0200
+++ /var/tmp/diff_new_pack.7908GC/_new  2020-03-31 17:17:42.071721177 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-cfgv
 #
-# 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
@@ -17,8 +17,9 @@
 
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%define skip_python2 1
 Name:           python-cfgv
-Version:        2.0.1
+Version:        3.1.0
 Release:        0
 Summary:        Configuration validator producing human readable error messages
 License:        MIT
@@ -28,12 +29,9 @@
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
-Requires:       python-six
 BuildArch:      noarch
 # SECTION test requirements
-BuildRequires:  %{python_module mock}
-BuildRequires:  %{python_module pytest-runner}
-BuildRequires:  %{python_module six}
+BuildRequires:  %{python_module pytest}
 # /SECTION
 %python_subpackages
 
@@ -51,7 +49,7 @@
 %python_expand %fdupes %{buildroot}%{$python_sitelib}
 
 %check
-%python_exec setup.py pytest
+%pytest
 
 %files %{python_files}
 %doc README.md

++++++ cfgv-2.0.1.tar.gz -> cfgv-3.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cfgv-2.0.1/.pre-commit-config.yaml 
new/cfgv-3.1.0/.pre-commit-config.yaml
--- old/cfgv-2.0.1/.pre-commit-config.yaml      2019-07-21 16:23:55.000000000 
+0200
+++ new/cfgv-3.1.0/.pre-commit-config.yaml      2020-02-25 00:53:07.000000000 
+0100
@@ -1,6 +1,6 @@
 repos:
 -   repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v2.1.0
+    rev: v2.5.0
     hooks:
     -   id: trailing-whitespace
     -   id: end-of-file-fixer
@@ -10,18 +10,29 @@
     -   id: name-tests-test
     -   id: requirements-txt-fixer
 -   repo: https://gitlab.com/pycqa/flake8
-    rev: 3.7.7
+    rev: 3.7.9
     hooks:
     -   id: flake8
 -   repo: https://github.com/pre-commit/mirrors-autopep8
-    rev: v1.4.3
+    rev: v1.5
     hooks:
     -   id: autopep8
 -   repo: https://github.com/asottile/reorder_python_imports
-    rev: v1.4.0
+    rev: v1.9.0
     hooks:
     -   id: reorder-python-imports
+        args: [--py3-plus]
+-   repo: https://github.com/asottile/pyupgrade
+    rev: v1.26.2
+    hooks:
+    -   id: pyupgrade
+        args: [--py36-plus]
 -   repo: https://github.com/asottile/add-trailing-comma
-    rev: v1.0.0
+    rev: v1.5.0
     hooks:
     -   id: add-trailing-comma
+        args: [--py36-plus]
+-   repo: https://github.com/asottile/setup-cfg-fmt
+    rev: v1.6.0
+    hooks:
+    -   id: setup-cfg-fmt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cfgv-2.0.1/azure-pipelines.yml 
new/cfgv-3.1.0/azure-pipelines.yml
--- old/cfgv-2.0.1/azure-pipelines.yml  2019-07-21 16:23:55.000000000 +0200
+++ new/cfgv-3.1.0/azure-pipelines.yml  2020-02-25 00:53:07.000000000 +0100
@@ -10,11 +10,11 @@
       type: github
       endpoint: github
       name: asottile/azure-pipeline-templates
-      ref: refs/tags/v0.0.16
+      ref: refs/tags/v1.0.1
 
 jobs:
 - template: job--pre-commit.yml@asottile
 - template: job--python-tox.yml@asottile
   parameters:
-    toxenvs: [pypy, pypy3, py27, py36, py37]
+    toxenvs: [pypy3, py36, py37, py38]
     os: linux
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cfgv-2.0.1/cfgv.py new/cfgv-3.1.0/cfgv.py
--- old/cfgv-2.0.1/cfgv.py      2019-07-21 16:23:55.000000000 +0200
+++ new/cfgv-3.1.0/cfgv.py      2020-02-25 00:53:07.000000000 +0100
@@ -1,19 +1,13 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 import collections
 import contextlib
-import io
 import os.path
 import re
 import sys
 
-import six
-
 
 class ValidationError(ValueError):
     def __init__(self, error_msg, ctx=None):
-        super(ValidationError, self).__init__(error_msg)
+        super().__init__(error_msg)
         self.error_msg = error_msg
         self.ctx = ctx
 
@@ -21,9 +15,9 @@
         out = '\n'
         err = self
         while err.ctx is not None:
-            out += '==> {}\n'.format(err.ctx)
+            out += f'==> {err.ctx}\n'
             err = err.error_msg
-        out += '=====> {}'.format(err.error_msg)
+        out += f'=====> {err.error_msg}'
         return out
 
 
@@ -37,7 +31,7 @@
         yield
     except ValidationError as e:
         _, _, tb = sys.exc_info()
-        six.reraise(ValidationError, ValidationError(e, ctx=msg), tb)
+        raise ValidationError(e, ctx=msg).with_traceback(tb)
 
 
 @contextlib.contextmanager
@@ -46,7 +40,7 @@
         yield
     except ValidationError as e:
         _, _, tb = sys.exc_info()
-        six.reraise(tp, tp(e), tb)
+        raise tp(e).with_traceback(tb)
 
 
 def _dct_noop(self, dct):
@@ -56,7 +50,7 @@
 def _check_optional(self, dct):
     if self.key not in dct:
         return
-    with validate_context('At key: {}'.format(self.key)):
+    with validate_context(f'At key: {self.key}'):
         self.check_fn(dct[self.key])
 
 
@@ -71,7 +65,7 @@
 
 def _require_key(self, dct):
     if self.key not in dct:
-        raise ValidationError('Missing required key: {}'.format(self.key))
+        raise ValidationError(f'Missing required key: {self.key}')
 
 
 def _check_required(self, dct):
@@ -117,15 +111,10 @@
             if hasattr(self.condition_value, 'describe_opposite'):
                 explanation = self.condition_value.describe_opposite()
             else:
-                explanation = 'is not {!r}'.format(self.condition_value)
+                explanation = f'is not {self.condition_value!r}'
             raise ValidationError(
-                'Expected {key} to be absent when {cond_key} {explanation}, '
-                'found {key}: {val!r}'.format(
-                    key=self.key,
-                    val=dct[self.key],
-                    cond_key=self.condition_key,
-                    explanation=explanation,
-                ),
+                f'Expected {self.key} to be absent when {self.condition_key} '
+                f'{explanation}, found {self.key}: {dct[self.key]!r}',
             )
     return _check_conditional
 
@@ -153,12 +142,11 @@
 def _no_additional_keys_check(self, dct):
     extra = sorted(set(dct) - set(self.keys))
     if extra:
+        extra_s = ', '.join(str(x) for x in extra)
+        keys_s = ', '.join(str(x) for x in self.keys)
         raise ValidationError(
-            'Additional keys found: {}.  '
-            'Only these keys are allowed: {}'.format(
-                ', '.join(str(x) for x in extra),
-                ', '.join(str(x) for x in self.keys),
-            ),
+            f'Additional keys found: {extra_s}.  '
+            f'Only these keys are allowed: {keys_s}',
         )
 
 
@@ -238,21 +226,19 @@
     __slots__ = ()
 
     def __new__(cls, object_name, id_key, *items):
-        return super(Map, cls).__new__(cls, object_name, id_key, items)
+        return super().__new__(cls, object_name, id_key, items)
 
     def check(self, v):
         if not isinstance(v, dict):
             raise ValidationError(
-                'Expected a {} map but got a {}'.format(
-                    self.object_name, type(v).__name__,
-                ),
+                f'Expected a {self.object_name} map but got a '
+                f'{type(v).__name__}',
             )
         if self.id_key is None:
-            context = 'At {}()'.format(self.object_name)
+            context = f'At {self.object_name}()'
         else:
-            context = 'At {}({}={!r})'.format(
-                self.object_name, self.id_key, v.get(self.id_key, MISSING),
-            )
+            key_v_s = v.get(self.id_key, MISSING)
+            context = f'At {self.object_name}({self.id_key}={key_v_s!r})'
         with validate_context(context):
             for item in self.items:
                 item.check(v)
@@ -274,13 +260,13 @@
     __slots__ = ()
 
     def __new__(cls, of, allow_empty=True):
-        return super(Array, cls).__new__(cls, of=of, allow_empty=allow_empty)
+        return super().__new__(cls, of=of, allow_empty=allow_empty)
 
     def check(self, v):
         check_array(check_any)(v)
         if not self.allow_empty and not v:
             raise ValidationError(
-                "Expected at least 1 '{}'".format(self.of.object_name),
+                f"Expected at least 1 '{self.of.object_name}'",
             )
         for val in v:
             validate(val, self.of)
@@ -296,7 +282,7 @@
     __slots__ = ()
 
     def describe_opposite(self):
-        return 'is {!r}'.format(self.val)
+        return f'is {self.val!r}'
 
     def __eq__(self, other):
         return other is not MISSING and other != self.val
@@ -306,10 +292,10 @@
     __slots__ = ()
 
     def __new__(cls, *values):
-        return super(NotIn, cls).__new__(cls, values=values)
+        return super().__new__(cls, values=values)
 
     def describe_opposite(self):
-        return 'is any of {!r}'.format(self.values)
+        return f'is any of {self.values!r}'
 
     def __eq__(self, other):
         return other is not MISSING and other not in self.values
@@ -319,10 +305,10 @@
     __slots__ = ()
 
     def __new__(cls, *values):
-        return super(In, cls).__new__(cls, values=values)
+        return super().__new__(cls, values=values)
 
     def describe_opposite(self):
-        return 'is not any of {!r}'.format(self.values)
+        return f'is not any of {self.values!r}'
 
     def __eq__(self, other):
         return other is not MISSING and other in self.values
@@ -335,28 +321,26 @@
 def check_type(tp, typename=None):
     def check_type_fn(v):
         if not isinstance(v, tp):
+            typename_s = typename or tp.__name__
             raise ValidationError(
-                'Expected {} got {}'.format(
-                    typename or tp.__name__, type(v).__name__,
-                ),
+                f'Expected {typename_s} got {type(v).__name__}',
             )
     return check_type_fn
 
 
 check_bool = check_type(bool)
-check_bytes = check_type(bytes, typename='bytes')
+check_bytes = check_type(bytes)
 check_int = check_type(int)
-check_string = check_type(six.string_types, typename='string')
-check_text = check_type(six.text_type, typename='text')
+check_string = check_type(str, typename='string')
+check_text = check_type(str, typename='text')
 
 
 def check_one_of(possible):
     def check_one_of_fn(v):
         if v not in possible:
+            possible_s = ', '.join(str(x) for x in sorted(possible))
             raise ValidationError(
-                'Expected one of {} but got: {!r}'.format(
-                    ', '.join(str(x) for x in sorted(possible)), v,
-                ),
+                f'Expected one of {possible_s} but got: {v!r}',
             )
     return check_one_of_fn
 
@@ -365,18 +349,18 @@
     try:
         re.compile(v)
     except re.error:
-        raise ValidationError('{!r} is not a valid python regex'.format(v))
+        raise ValidationError(f'{v!r} is not a valid python regex')
 
 
 def check_array(inner_check):
     def check_array_fn(v):
         if not isinstance(v, (list, tuple)):
             raise ValidationError(
-                'Expected array but got {!r}'.format(type(v).__name__),
+                f'Expected array but got {type(v).__name__!r}',
             )
 
         for i, val in enumerate(v):
-            with validate_context('At index {}'.format(i)):
+            with validate_context(f'At index {i}'):
                 inner_check(val)
     return check_array_fn
 
@@ -409,12 +393,12 @@
 ):
     with reraise_as(exc_tp):
         if not os.path.exists(filename):
-            raise ValidationError('{} does not exist'.format(filename))
+            raise ValidationError(f'{filename} does not exist')
 
-        with io.open(filename, encoding='utf-8') as f:
+        with open(filename, encoding='utf-8') as f:
             contents = f.read()
 
-        with validate_context('File {}'.format(filename)):
+        with validate_context(f'File {filename}'):
             try:
                 data = load_strategy(contents)
             except Exception as e:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cfgv-2.0.1/requirements-dev.txt 
new/cfgv-3.1.0/requirements-dev.txt
--- old/cfgv-2.0.1/requirements-dev.txt 2019-07-21 16:23:55.000000000 +0200
+++ new/cfgv-3.1.0/requirements-dev.txt 2020-02-25 00:53:07.000000000 +0100
@@ -1,5 +1,3 @@
 coverage
-flake8
-mock
 pre-commit
 pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cfgv-2.0.1/setup.cfg new/cfgv-3.1.0/setup.cfg
--- old/cfgv-2.0.1/setup.cfg    2019-07-21 16:23:55.000000000 +0200
+++ new/cfgv-3.1.0/setup.cfg    2020-02-25 00:53:07.000000000 +0100
@@ -1,6 +1,6 @@
 [metadata]
 name = cfgv
-version = 2.0.1
+version = 3.1.0
 description = Validate configuration and produce human readable error messages.
 long_description = file: README.md
 long_description_content_type = text/markdown
@@ -11,20 +11,17 @@
 license_file = LICENSE
 classifiers =
     License :: OSI Approved :: MIT License
-    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 :: Only
     Programming Language :: Python :: 3.6
     Programming Language :: Python :: 3.7
+    Programming Language :: Python :: 3.8
     Programming Language :: Python :: Implementation :: CPython
     Programming Language :: Python :: Implementation :: PyPy
 
 [options]
 py_modules = cfgv
-install_requires = six
-python_requires = >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
+python_requires = >=3.6.1
 
 [bdist_wheel]
 universal = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cfgv-2.0.1/tests/cfgv_test.py 
new/cfgv-3.1.0/tests/cfgv_test.py
--- old/cfgv-2.0.1/tests/cfgv_test.py   2019-07-21 16:23:55.000000000 +0200
+++ new/cfgv-3.1.0/tests/cfgv_test.py   2020-02-25 00:53:07.000000000 +0100
@@ -1,9 +1,6 @@
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
 import json
+from unittest import mock
 
-import mock
 import pytest
 
 from cfgv import apply_defaults
@@ -79,7 +76,7 @@
 
 def test_check_regex():
     with pytest.raises(ValidationError) as excinfo:
-        check_regex(str('('))
+        check_regex('(')
     assert excinfo.value.error_msg == "'(' is not a valid python regex"
 
 
@@ -106,13 +103,13 @@
         check(True)
     assert excinfo.value.error_msg == 'Expected str got bool'
     with pytest.raises(ValidationError) as excinfo:
-        check(str('('))
+        check('(')
     assert excinfo.value.error_msg == "'(' is not a valid python regex"
 
 
 def test_check_and_ok():
     check = check_and(check_type(str), check_regex)
-    check(str('^$'))
+    check('^$')
 
 
 @pytest.mark.parametrize(
@@ -541,7 +538,7 @@
     with pytest.raises(Error) as excinfo:
         load_from_filename(f.strpath, map_required, json.loads, Error)
     # ANY is json's error message
-    expected = ('File {}'.format(f.strpath), mock.ANY)
+    expected = (f'File {f.strpath}', mock.ANY)
     _assert_exception_trace(excinfo.value.args[0], expected)
 
 
@@ -551,7 +548,7 @@
     with pytest.raises(Error) as excinfo:
         load_from_filename(f.strpath, map_required, json.loads, Error)
     expected = (
-        'File {}'.format(f.strpath),
+        f'File {f.strpath}',
         'At foo(key=MISSING)',
         'Missing required key: key',
     )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cfgv-2.0.1/tox.ini new/cfgv-3.1.0/tox.ini
--- old/cfgv-2.0.1/tox.ini      2019-07-21 16:23:55.000000000 +0200
+++ new/cfgv-3.1.0/tox.ini      2020-02-25 00:53:07.000000000 +0100
@@ -1,5 +1,5 @@
 [tox]
-envlist = py27,py36,py37,pypy,pypy3,pre-commit
+envlist = py36,py37,pypy3,pre-commit
 
 [testenv]
 deps = -rrequirements-dev.txt


Reply via email to