From 86a9cacdb78219960a7d670909beba3aaed4a4968b87380f98ffed693c001c95 Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Sat, 1 Oct 2022 14:41:22 +0000 Subject: [PATCH] - update to 0.13.1: * Ignore `Enum` if it is unavailable * Fix email regex match for Python 2.7 * Enable github actions * Convert codebase to adhere to `flake8` W504 (PEP 8) * Enable `flake8` in github actions * `pytest` migration + enable Python 3.10 * Display valid `Enum` values in `Coerce` * Revert Breaking Maybe change in 0.12.1 * Revert Breaking `Maybe` change in 0.12.1 * Fix Email Regex to not match on extra characters - drop python-voluptuous-remove-nose.patch (upstream) OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-voluptuous?expand=0&rev=19 --- _service | 3 - python-voluptuous-0.13.1-gh.tar.gz | 3 + python-voluptuous-remove-nose.patch | 939 ---------------------------- python-voluptuous.changes | 16 + python-voluptuous.spec | 11 +- voluptuous-0.11.7.tar.gz | 3 - 6 files changed, 23 insertions(+), 952 deletions(-) delete mode 100644 _service create mode 100644 python-voluptuous-0.13.1-gh.tar.gz delete mode 100644 python-voluptuous-remove-nose.patch delete mode 100644 voluptuous-0.11.7.tar.gz diff --git a/_service b/_service deleted file mode 100644 index 413b85c..0000000 --- a/_service +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/python-voluptuous-0.13.1-gh.tar.gz b/python-voluptuous-0.13.1-gh.tar.gz new file mode 100644 index 0000000..2493a2a --- /dev/null +++ b/python-voluptuous-0.13.1-gh.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4e6e76e7c083ac135b74ffd36d9362a79613e0d184310738949cdf202eac07c +size 42466 diff --git a/python-voluptuous-remove-nose.patch b/python-voluptuous-remove-nose.patch deleted file mode 100644 index cc6ea66..0000000 --- a/python-voluptuous-remove-nose.patch +++ /dev/null @@ -1,939 +0,0 @@ -Index: voluptuous-0.11.7/voluptuous/tests/tests.py -=================================================================== ---- voluptuous-0.11.7.orig/voluptuous/tests/tests.py 2019-08-13 04:10:58.000000000 +0200 -+++ voluptuous-0.11.7/voluptuous/tests/tests.py 2020-06-26 09:09:03.136465644 +0200 -@@ -2,8 +2,7 @@ import copy - import collections - import os - import sys -- --from nose.tools import assert_equal, assert_false, assert_raises, assert_true -+import pytest - - from voluptuous import ( - Schema, Required, Exclusive, Inclusive, Optional, Extra, Invalid, In, Remove, -@@ -24,18 +23,16 @@ def test_exact_sequence(): - assert True - else: - assert False, "Did not raise Invalid" -- assert_equal(schema([1, 2]), [1, 2]) -+ assert schema([1, 2]) == [1, 2] - - - def test_required(): - """Verify that Required works.""" - schema = Schema({Required('q'): 1}) -- # Can't use nose's raises (because we need to access the raised -- # exception, nor assert_raises which fails with Python 2.6.9. - try: - schema({}) - except Invalid as e: -- assert_equal(str(e), "required key not provided @ data['q']") -+ assert str(e) == "required key not provided @ data['q']" - else: - assert False, "Did not raise Invalid" - -@@ -44,8 +41,7 @@ def test_extra_with_required(): - """Verify that Required does not break Extra.""" - schema = Schema({Required('toaster'): str, Extra: object}) - r = schema({'toaster': 'blue', 'another_valid_key': 'another_valid_value'}) -- assert_equal( -- r, {'toaster': 'blue', 'another_valid_key': 'another_valid_value'}) -+ assert r == {'toaster': 'blue', 'another_valid_key': 'another_valid_value'} - - - def test_iterate_candidates(): -@@ -56,7 +52,7 @@ def test_iterate_candidates(): - } - # toaster should be first. - from voluptuous.schema_builder import _iterate_mapping_candidates -- assert_equal(_iterate_mapping_candidates(schema)[0][0], 'toaster') -+ assert _iterate_mapping_candidates(schema)[0][0] == 'toaster' - - - def test_in(): -@@ -72,7 +68,7 @@ def test_not_in(): - try: - schema({"color": "blue"}) - except Invalid as e: -- assert_equal(str(e), "value is not allowed for dictionary value @ data['color']") -+ assert str(e) == "value is not allowed for dictionary value @ data['color']" - else: - assert False, "Did not raise NotInInvalid" - -@@ -84,8 +80,7 @@ def test_contains(): - try: - schema({'color': ['blue', 'yellow']}) - except Invalid as e: -- assert_equal(str(e), -- "value is not allowed for dictionary value @ data['color']") -+ assert str(e) == "value is not allowed for dictionary value @ data['color']" - - - def test_remove(): -@@ -117,12 +112,12 @@ def test_remove(): - # remove value from list - schema = Schema([Remove(1), int]) - out_ = schema([1, 2, 3, 4, 1, 5, 6, 1, 1, 1]) -- assert_equal(out_, [2, 3, 4, 5, 6]) -+ assert out_ == [2, 3, 4, 5, 6] - - # remove values from list by type - schema = Schema([1.0, Remove(float), int]) - out_ = schema([1, 2, 1.0, 2.0, 3.0, 4]) -- assert_equal(out_, [1, 2, 1.0, 4]) -+ assert out_ == [1, 2, 1.0, 4] - - - def test_extra_empty_errors(): -@@ -141,7 +136,7 @@ def test_literal(): - try: - schema([{"c": 1}]) - except Invalid as e: -- assert_equal(str(e), "{'c': 1} not match for {'b': 1} @ data[0]") -+ assert str(e) == "{'c': 1} not match for {'b': 1} @ data[0]" - else: - assert False, "Did not raise Invalid" - -@@ -149,9 +144,9 @@ def test_literal(): - try: - schema({"b": 1}) - except MultipleInvalid as e: -- assert_equal(str(e), "{'b': 1} not match for {'a': 1}") -- assert_equal(len(e.errors), 1) -- assert_equal(type(e.errors[0]), LiteralInvalid) -+ assert str(e) == "{'b': 1} not match for {'a': 1}" -+ assert len(e.errors) == 1 -+ assert type(e.errors[0]) == LiteralInvalid - else: - assert False, "Did not raise Invalid" - -@@ -166,9 +161,9 @@ def test_class(): - try: - schema(None) - except MultipleInvalid as e: -- assert_equal(str(e), "expected C1") -- assert_equal(len(e.errors), 1) -- assert_equal(type(e.errors[0]), TypeInvalid) -+ assert str(e) == "expected C1" -+ assert len(e.errors) == 1 -+ assert type(e.errors[0]) == TypeInvalid - else: - assert False, "Did not raise Invalid" - -@@ -182,9 +177,9 @@ def test_class(): - try: - schema(None) - except MultipleInvalid as e: -- assert_equal(str(e), "expected C2") -- assert_equal(len(e.errors), 1) -- assert_equal(type(e.errors[0]), TypeInvalid) -+ assert str(e) == "expected C2" -+ assert len(e.errors) == 1 -+ assert type(e.errors[0]) == TypeInvalid - else: - assert False, "Did not raise Invalid" - -@@ -203,8 +198,7 @@ def test_email_validation_with_none(): - try: - schema({"email": None}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "expected an Email for dictionary value @ data['email']") -+ assert str(e) == "expected an Email for dictionary value @ data['email']" - else: - assert False, "Did not raise Invalid for None url" - -@@ -215,8 +209,7 @@ def test_email_validation_with_empty_str - try: - schema({"email": ''}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "expected an Email for dictionary value @ data['email']") -+ assert str(e) == "expected an Email for dictionary value @ data['email']" - else: - assert False, "Did not raise Invalid for empty string url" - -@@ -227,8 +220,7 @@ def test_email_validation_without_host() - try: - schema({"email": 'a@.com'}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "expected an Email for dictionary value @ data['email']") -+ assert str(e) == "expected an Email for dictionary value @ data['email']" - else: - assert False, "Did not raise Invalid for empty string url" - -@@ -247,8 +239,7 @@ def test_fqdn_url_without_domain_name(): - try: - schema({"url": "http://localhost/"}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "expected a Fully qualified domain name URL for dictionary value @ data['url']") -+ assert str(e) == "expected a Fully qualified domain name URL for dictionary value @ data['url']" - else: - assert False, "Did not raise Invalid for None url" - -@@ -259,8 +250,7 @@ def test_fqdnurl_validation_with_none(): - try: - schema({"url": None}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "expected a Fully qualified domain name URL for dictionary value @ data['url']") -+ assert str(e) == "expected a Fully qualified domain name URL for dictionary value @ data['url']" - else: - assert False, "Did not raise Invalid for None url" - -@@ -271,8 +261,7 @@ def test_fqdnurl_validation_with_empty_s - try: - schema({"url": ''}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "expected a Fully qualified domain name URL for dictionary value @ data['url']") -+ assert str(e) == "expected a Fully qualified domain name URL for dictionary value @ data['url']" - else: - assert False, "Did not raise Invalid for empty string url" - -@@ -283,8 +272,7 @@ def test_fqdnurl_validation_without_host - try: - schema({"url": 'http://'}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "expected a Fully qualified domain name URL for dictionary value @ data['url']") -+ assert str(e) == "expected a Fully qualified domain name URL for dictionary value @ data['url']" - else: - assert False, "Did not raise Invalid for empty string url" - -@@ -303,8 +291,7 @@ def test_url_validation_with_none(): - try: - schema({"url": None}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "expected a URL for dictionary value @ data['url']") -+ assert str(e) == "expected a URL for dictionary value @ data['url']" - else: - assert False, "Did not raise Invalid for None url" - -@@ -315,8 +302,7 @@ def test_url_validation_with_empty_strin - try: - schema({"url": ''}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "expected a URL for dictionary value @ data['url']") -+ assert str(e) == "expected a URL for dictionary value @ data['url']" - else: - assert False, "Did not raise Invalid for empty string url" - -@@ -327,8 +313,7 @@ def test_url_validation_without_host(): - try: - schema({"url": 'http://'}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "expected a URL for dictionary value @ data['url']") -+ assert str(e) == "expected a URL for dictionary value @ data['url']" - else: - assert False, "Did not raise Invalid for empty string url" - -@@ -394,10 +379,10 @@ def test_schema_extend_key_swap(): - extension = {Required('a'): int} - extended = base.extend(extension) - -- assert_equal(len(base.schema), 1) -- assert_true(isinstance(list(base.schema)[0], Optional)) -- assert_equal(len(extended.schema), 1) -- assert_true((list(extended.schema)[0], Required)) -+ assert len(base.schema) == 1 -+ assert isinstance(list(base.schema)[0], Optional) -+ assert len(extended.schema) == 1 -+ assert (list(extended.schema)[0], Required) - - - def test_subschema_extension(): -@@ -407,9 +392,9 @@ def test_subschema_extension(): - extension = {'d': str, 'a': {'b': str, 'e': int}} - extended = base.extend(extension) - -- assert_equal(base.schema, {'a': {'b': int, 'c': float}}) -- assert_equal(extension, {'d': str, 'a': {'b': str, 'e': int}}) -- assert_equal(extended.schema, {'a': {'b': str, 'c': float, 'e': int}, 'd': str}) -+ assert base.schema == {'a': {'b': int, 'c': float}} -+ assert extension == {'d': str, 'a': {'b': str, 'e': int}} -+ assert extended.schema == {'a': {'b': str, 'c': float, 'e': int}, 'd': str} - - - def test_schema_extend_handles_schema_subclass(): -@@ -427,10 +412,9 @@ def test_schema_extend_handles_schema_su - - - def test_equality(): -- assert_equal(Schema('foo'), Schema('foo')) -+ assert Schema('foo') == Schema('foo') - -- assert_equal(Schema(['foo', 'bar', 'baz']), -- Schema(['foo', 'bar', 'baz'])) -+ assert Schema(['foo', 'bar', 'baz']) == Schema(['foo', 'bar', 'baz']) - - # Ensure two Schemas w/ two equivalent dicts initialized in a different - # order are considered equal. -@@ -444,35 +428,34 @@ def test_equality(): - dict_b['bar'] = 2 - dict_b['foo'] = 1 - -- assert_equal(Schema(dict_a), Schema(dict_b)) -+ assert Schema(dict_a) == Schema(dict_b) - - - def test_equality_negative(): - """Verify that Schema objects are not equal to string representations""" -- assert_false(Schema('foo') == 'foo') -+ assert not Schema('foo') == 'foo' - -- assert_false(Schema(['foo', 'bar']) == "['foo', 'bar']") -- assert_false(Schema(['foo', 'bar']) == Schema("['foo', 'bar']")) -+ assert not Schema(['foo', 'bar']) == "['foo', 'bar']" -+ assert not Schema(['foo', 'bar']) == Schema("['foo', 'bar']") - -- assert_false(Schema({'foo': 1, 'bar': 2}) == "{'foo': 1, 'bar': 2}") -- assert_false(Schema({'foo': 1, 'bar': 2}) == Schema("{'foo': 1, 'bar': 2}")) -+ assert not Schema({'foo': 1, 'bar': 2}) == "{'foo': 1, 'bar': 2}" -+ assert not Schema({'foo': 1, 'bar': 2}) == Schema("{'foo': 1, 'bar': 2}") - - - def test_inequality(): -- assert_true(Schema('foo') != 'foo') -+ assert Schema('foo') != 'foo' - -- assert_true(Schema(['foo', 'bar']) != "['foo', 'bar']") -- assert_true(Schema(['foo', 'bar']) != Schema("['foo', 'bar']")) -+ assert Schema(['foo', 'bar']) != "['foo', 'bar']" -+ assert Schema(['foo', 'bar']) != Schema("['foo', 'bar']") - -- assert_true(Schema({'foo': 1, 'bar': 2}) != "{'foo': 1, 'bar': 2}") -- assert_true(Schema({'foo': 1, 'bar': 2}) != Schema("{'foo': 1, 'bar': 2}")) -+ assert Schema({'foo': 1, 'bar': 2}) != "{'foo': 1, 'bar': 2}" -+ assert Schema({'foo': 1, 'bar': 2}) != Schema("{'foo': 1, 'bar': 2}") - - - def test_inequality_negative(): -- assert_false(Schema('foo') != Schema('foo')) -+ assert not Schema('foo') != Schema('foo') - -- assert_false(Schema(['foo', 'bar', 'baz']) != -- Schema(['foo', 'bar', 'baz'])) -+ assert not Schema(['foo', 'bar', 'baz']) != Schema(['foo', 'bar', 'baz']) - - # Ensure two Schemas w/ two equivalent dicts initialized in a different - # order are considered equal. -@@ -486,7 +469,7 @@ def test_inequality_negative(): - dict_b['bar'] = 2 - dict_b['foo'] = 1 - -- assert_false(Schema(dict_a) != Schema(dict_b)) -+ assert not Schema(dict_a) != Schema(dict_b) - - - def test_repr(): -@@ -499,15 +482,12 @@ def test_repr(): - all_ = All('10', Coerce(int), msg='all msg') - maybe_int = Maybe(int) - -- assert_equal(repr(match), "Match('a pattern', msg='message')") -- assert_equal(repr(replace), "Replace('you', 'I', msg='you and I')") -- assert_equal( -- repr(range_), -- "Range(min=0, max=42, min_included=False, max_included=False, msg='number not in range')" -- ) -- assert_equal(repr(coerce_), "Coerce(int, msg='moo')") -- assert_equal(repr(all_), "All('10', Coerce(int, msg=None), msg='all msg')") -- assert_equal(repr(maybe_int), "Any(None, %s, msg=None)" % str(int)) -+ assert repr(match) == "Match('a pattern', msg='message')" -+ assert repr(replace) == "Replace('you', 'I', msg='you and I')" -+ assert repr(range_) == "Range(min=0, max=42, min_included=False, max_included=False, msg='number not in range')" -+ assert repr(coerce_) == "Coerce(int, msg='moo')" -+ assert repr(all_) == "All('10', Coerce(int, msg=None), msg='all msg')" -+ assert repr(maybe_int) == "Any(None, %s, msg=None)" % str(int) - - - def test_list_validation_messages(): -@@ -523,9 +503,9 @@ def test_list_validation_messages(): - try: - schema(dict(even_numbers=[3])) - except Invalid as e: -- assert_equal(len(e.errors), 1, e.errors) -- assert_equal(str(e.errors[0]), "3 is not even @ data['even_numbers'][0]") -- assert_equal(str(e), "3 is not even @ data['even_numbers'][0]") -+ assert len(e.errors) == 1 -+ assert str(e.errors[0]) == "3 is not even @ data['even_numbers'][0]" -+ assert str(e) == "3 is not even @ data['even_numbers'][0]" - else: - assert False, "Did not raise Invalid" - -@@ -544,9 +524,9 @@ def test_nested_multiple_validation_erro - try: - schema(dict(even_numbers=[3])) - except Invalid as e: -- assert_equal(len(e.errors), 1, e.errors) -- assert_equal(str(e.errors[0]), "3 is not even @ data['even_numbers'][0]") -- assert_equal(str(e), "3 is not even @ data['even_numbers'][0]") -+ assert len(e.errors) == 1 -+ assert str(e.errors[0]) == "3 is not even @ data['even_numbers'][0]" -+ assert str(e) == "3 is not even @ data['even_numbers'][0]" - else: - assert False, "Did not raise Invalid" - -@@ -563,40 +543,36 @@ def test_humanize_error(): - try: - schema(data) - except MultipleInvalid as e: -- assert_equal( -- humanize_error(data, e), -- "expected int for dictionary value @ data['a']. Got 'not an int'\n" -- "expected str @ data['b'][0]. Got 123" -- ) -+ assert humanize_error(data, e) == "expected int for dictionary value @ data['a']. Got 'not an int'\nexpected str @ data['b'][0]. Got 123" - else: - assert False, 'Did not raise MultipleInvalid' - - - def test_fix_157(): - s = Schema(All([Any('one', 'two', 'three')]), Length(min=1)) -- assert_equal(['one'], s(['one'])) -- assert_raises(MultipleInvalid, s, ['four']) -+ assert ['one'] == s(['one']) -+ pytest.raises(MultipleInvalid, s, ['four']) - - - def test_range_exlcudes_nan(): - s = Schema(Range(min=0, max=10)) -- assert_raises(MultipleInvalid, s, float('nan')) -+ pytest.raises(MultipleInvalid, s, float('nan')) - - - def test_equal(): - s = Schema(Equal(1)) - s(1) -- assert_raises(Invalid, s, 2) -+ pytest.raises(Invalid, s, 2) - s = Schema(Equal('foo')) - s('foo') -- assert_raises(Invalid, s, 'bar') -+ pytest.raises(Invalid, s, 'bar') - s = Schema(Equal([1, 2])) - s([1, 2]) -- assert_raises(Invalid, s, []) -- assert_raises(Invalid, s, [1, 2, 3]) -+ pytest.raises(Invalid, s, []) -+ pytest.raises(Invalid, s, [1, 2, 3]) - # Evaluates exactly, not through validators - s = Schema(Equal(str)) -- assert_raises(Invalid, s, 'foo') -+ pytest.raises(Invalid, s, 'foo') - - - def test_unordered(): -@@ -605,15 +581,15 @@ def test_unordered(): - s([2, 1]) - s([1, 2]) - # Amount of errors is OK -- assert_raises(Invalid, s, [2, 0]) -- assert_raises(MultipleInvalid, s, [0, 0]) -+ pytest.raises(Invalid, s, [2, 0]) -+ pytest.raises(MultipleInvalid, s, [0, 0]) - # Different length is NOK -- assert_raises(Invalid, s, [1]) -- assert_raises(Invalid, s, [1, 2, 0]) -- assert_raises(MultipleInvalid, s, [1, 2, 0, 0]) -+ pytest.raises(Invalid, s, [1]) -+ pytest.raises(Invalid, s, [1, 2, 0]) -+ pytest.raises(MultipleInvalid, s, [1, 2, 0, 0]) - # Other type than list or tuple is NOK -- assert_raises(Invalid, s, 'foo') -- assert_raises(Invalid, s, 10) -+ pytest.raises(Invalid, s, 'foo') -+ pytest.raises(Invalid, s, 10) - # Validators are evaluated through as schemas - s = Schema(Unordered([int, str])) - s([1, '2']) -@@ -622,7 +598,7 @@ def test_unordered(): - s([{'foo': 3}, []]) - # Most accurate validators must be positioned on left - s = Schema(Unordered([int, 3])) -- assert_raises(Invalid, s, [3, 2]) -+ pytest.raises(Invalid, s, [3, 2]) - s = Schema(Unordered([3, int])) - s([3, 2]) - -@@ -631,12 +607,12 @@ def test_maybe(): - s = Schema(Maybe(int)) - assert s(1) == 1 - assert s(None) is None -- assert_raises(Invalid, s, 'foo') -+ pytest.raises(Invalid, s, 'foo') - - s = Schema(Maybe({str: Coerce(int)})) - assert s({'foo': '100'}) == {'foo': 100} - assert s(None) is None -- assert_raises(Invalid, s, {'foo': 'bar'}) -+ pytest.raises(Invalid, s, {'foo': 'bar'}) - - - def test_maybe_accepts_msg(): -@@ -647,7 +623,7 @@ def test_maybe_accepts_msg(): - - def test_empty_list_as_exact(): - s = Schema([]) -- assert_raises(Invalid, s, [1]) -+ pytest.raises(Invalid, s, [1]) - s([]) - - -@@ -664,7 +640,7 @@ def test_schema_decorator_unmatch_with_a - def fn(arg): - return arg - -- assert_raises(Invalid, fn, 1.0) -+ pytest.raises(Invalid, fn, 1.0) - - - def test_schema_decorator_match_with_kwargs(): -@@ -680,7 +656,7 @@ def test_schema_decorator_unmatch_with_k - def fn(arg): - return arg - -- assert_raises(Invalid, fn, 1.0) -+ pytest.raises(Invalid, fn, 1.0) - - - def test_schema_decorator_match_return_with_args(): -@@ -696,7 +672,7 @@ def test_schema_decorator_unmatch_return - def fn(arg): - return "hello" - -- assert_raises(Invalid, fn, 1) -+ pytest.raises(Invalid, fn, 1) - - - def test_schema_decorator_match_return_with_kwargs(): -@@ -712,7 +688,7 @@ def test_schema_decorator_unmatch_return - def fn(arg): - return "hello" - -- assert_raises(Invalid, fn, 1) -+ pytest.raises(Invalid, fn, 1) - - - def test_schema_decorator_return_only_match(): -@@ -728,7 +704,7 @@ def test_schema_decorator_return_only_un - def fn(arg): - return "hello" - -- assert_raises(Invalid, fn, 1) -+ pytest.raises(Invalid, fn, 1) - - - def test_schema_decorator_partial_match_called_with_args(): -@@ -744,7 +720,7 @@ def test_schema_decorator_partial_unmatc - def fn(arg1, arg2): - return arg1 - -- assert_raises(Invalid, fn, "bar", "foo") -+ pytest.raises(Invalid, fn, "bar", "foo") - - - def test_schema_decorator_partial_match_called_with_kwargs(): -@@ -760,7 +736,7 @@ def test_schema_decorator_partial_unmatc - def fn(arg1, arg2): - return arg1 - -- assert_raises(Invalid, fn, arg1=1, arg2="foo") -+ pytest.raises(Invalid, fn, arg1=1, arg2="foo") - - - def test_unicode_as_key(): -@@ -778,8 +754,7 @@ def test_number_validation_with_string() - try: - schema({"number": 'teststr'}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "Value must be a number enclosed with string for dictionary value @ data['number']") -+ assert str(e) == "Value must be a number enclosed with string for dictionary value @ data['number']" - else: - assert False, "Did not raise Invalid for String" - -@@ -790,8 +765,7 @@ def test_number_validation_with_invalid_ - try: - schema({"number": '123456.712'}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "Precision must be equal to 6, and Scale must be equal to 2 for dictionary value @ data['number']") -+ assert str(e) == "Precision must be equal to 6, and Scale must be equal to 2 for dictionary value @ data['number']" - else: - assert False, "Did not raise Invalid for String" - -@@ -800,28 +774,28 @@ def test_number_validation_with_valid_pr - """ test with Number with valid precision and scale""" - schema = Schema({"number": Number(precision=6, scale=2, yield_decimal=True)}) - out_ = schema({"number": '1234.00'}) -- assert_equal(float(out_.get("number")), 1234.00) -+ assert float(out_.get("number")) == 1234.00 - - - def test_number_when_precision_scale_none_yield_decimal_true(): - """ test with Number with no precision and scale""" - schema = Schema({"number": Number(yield_decimal=True)}) - out_ = schema({"number": '12345678901234'}) -- assert_equal(out_.get("number"), 12345678901234) -+ assert out_.get("number") == 12345678901234 - - - def test_number_when_precision_none_n_valid_scale_case1_yield_decimal_true(): - """ test with Number with no precision and valid scale case 1""" - schema = Schema({"number": Number(scale=2, yield_decimal=True)}) - out_ = schema({"number": '123456789.34'}) -- assert_equal(float(out_.get("number")), 123456789.34) -+ assert float(out_.get("number")) == 123456789.34 - - - def test_number_when_precision_none_n_valid_scale_case2_yield_decimal_true(): - """ test with Number with no precision and valid scale case 2 with zero in decimal part""" - schema = Schema({"number": Number(scale=2, yield_decimal=True)}) - out_ = schema({"number": '123456789012.00'}) -- assert_equal(float(out_.get("number")), 123456789012.00) -+ assert float(out_.get("number")) == 123456789012.00 - - - def test_number_when_precision_none_n_invalid_scale_yield_decimal_true(): -@@ -830,8 +804,7 @@ def test_number_when_precision_none_n_in - try: - schema({"number": '12345678901.234'}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "Scale must be equal to 2 for dictionary value @ data['number']") -+ assert str(e) == "Scale must be equal to 2 for dictionary value @ data['number']" - else: - assert False, "Did not raise Invalid for String" - -@@ -840,7 +813,7 @@ def test_number_when_valid_precision_n_s - """ test with Number with no precision and valid scale""" - schema = Schema({"number": Number(precision=14, yield_decimal=True)}) - out_ = schema({"number": '1234567.8901234'}) -- assert_equal(float(out_.get("number")), 1234567.8901234) -+ assert float(out_.get("number")) == 1234567.8901234 - - - def test_number_when_invalid_precision_n_scale_none_yield_decimal_true(): -@@ -849,8 +822,7 @@ def test_number_when_invalid_precision_n - try: - schema({"number": '12345674.8901234'}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "Precision must be equal to 14 for dictionary value @ data['number']") -+ assert str(e) == "Precision must be equal to 14 for dictionary value @ data['number']" - else: - assert False, "Did not raise Invalid for String" - -@@ -859,7 +831,7 @@ def test_number_validation_with_valid_pr - """ test with Number with valid precision, scale and no yield_decimal""" - schema = Schema({"number": Number(precision=6, scale=2, yield_decimal=False)}) - out_ = schema({"number": '1234.00'}) -- assert_equal(out_.get("number"), '1234.00') -+ assert out_.get("number") == '1234.00' - - - def test_named_tuples_validate_as_tuples(): -@@ -876,19 +848,19 @@ def test_named_tuples_validate_as_tuples - def test_datetime(): - schema = Schema({"datetime": Datetime()}) - schema({"datetime": "2016-10-24T14:01:57.102152Z"}) -- assert_raises(MultipleInvalid, schema, {"datetime": "2016-10-24T14:01:57"}) -+ pytest.raises(MultipleInvalid, schema, {"datetime": "2016-10-24T14:01:57"}) - - - def test_date(): - schema = Schema({"date": Date()}) - schema({"date": "2016-10-24"}) -- assert_raises(MultipleInvalid, schema, {"date": "2016-10-24Z"}) -+ pytest.raises(MultipleInvalid, schema, {"date": "2016-10-24Z"}) - - - def test_date_custom_format(): - schema = Schema({"date": Date("%Y%m%d")}) - schema({"date": "20161024"}) -- assert_raises(MultipleInvalid, schema, {"date": "2016-10-24"}) -+ pytest.raises(MultipleInvalid, schema, {"date": "2016-10-24"}) - - - def test_ordered_dict(): -@@ -910,12 +882,12 @@ def test_marker_hashable(): - Required('x'): int, Optional('y'): float, - Remove('j'): int, Remove(int): str, int: int - } -- assert_equal(definition.get('x'), int) -- assert_equal(definition.get('y'), float) -- assert_true(Required('x') == Required('x')) -- assert_true(Required('x') != Required('y')) -+ assert definition.get('x') == int -+ assert definition.get('y') == float -+ assert Required('x') == Required('x') -+ assert Required('x') != Required('y') - # Remove markers are not hashable -- assert_equal(definition.get('j'), None) -+ assert definition.get('j') == None - - - def test_schema_infer(): -@@ -925,12 +897,12 @@ def test_schema_infer(): - 'int': 42, - 'float': 3.14 - }) -- assert_equal(schema, Schema({ -+ assert schema == Schema({ - Required('str'): str, - Required('bool'): bool, - Required('int'): int, - Required('float'): float -- })) -+ }) - - - def test_schema_infer_dict(): -@@ -942,13 +914,13 @@ def test_schema_infer_dict(): - } - }) - -- assert_equal(schema, Schema({ -+ assert schema == Schema({ - Required('a'): { - Required('b'): { - Required('c'): str - } - } -- })) -+ }) - - - def test_schema_infer_list(): -@@ -956,18 +928,18 @@ def test_schema_infer_list(): - 'list': ['foo', True, 42, 3.14] - }) - -- assert_equal(schema, Schema({ -+ assert schema == Schema({ - Required('list'): [str, bool, int, float] -- })) -+ }) - - - def test_schema_infer_scalar(): -- assert_equal(Schema.infer('foo'), Schema(str)) -- assert_equal(Schema.infer(True), Schema(bool)) -- assert_equal(Schema.infer(42), Schema(int)) -- assert_equal(Schema.infer(3.14), Schema(float)) -- assert_equal(Schema.infer({}), Schema(dict)) -- assert_equal(Schema.infer([]), Schema(list)) -+ assert Schema.infer('foo') == Schema(str) -+ assert Schema.infer(True) == Schema(bool) -+ assert Schema.infer(42) == Schema(int) -+ assert Schema.infer(3.14) == Schema(float) -+ assert Schema.infer({}) == Schema(dict) -+ assert Schema.infer([]) == Schema(list) - - - def test_schema_infer_accepts_kwargs(): -@@ -1030,19 +1002,19 @@ def test_validation_performance(): - - def test_IsDir(): - schema = Schema(IsDir()) -- assert_raises(MultipleInvalid, schema, 3) -+ pytest.raises(MultipleInvalid, schema, 3) - schema(os.path.dirname(os.path.abspath(__file__))) - - - def test_IsFile(): - schema = Schema(IsFile()) -- assert_raises(MultipleInvalid, schema, 3) -+ pytest.raises(MultipleInvalid, schema, 3) - schema(os.path.abspath(__file__)) - - - def test_PathExists(): - schema = Schema(PathExists()) -- assert_raises(MultipleInvalid, schema, 3) -+ pytest.raises(MultipleInvalid, schema, 3) - schema(os.path.abspath(__file__)) - - -@@ -1216,7 +1188,7 @@ def test_SomeOf_on_bounds_assertion(): - - - def test_comparing_voluptuous_object_to_str(): -- assert_true(Optional('Classification') < 'Name') -+ assert Optional('Classification') < 'Name' - - - def test_set_of_integers(): -@@ -1232,7 +1204,7 @@ def test_set_of_integers(): - try: - schema(set(['abc'])) - except MultipleInvalid as e: -- assert_equal(str(e), "invalid value in set") -+ assert str(e) == "invalid value in set" - else: - assert False, "Did not raise Invalid" - -@@ -1250,7 +1222,7 @@ def test_frozenset_of_integers(): - try: - schema(frozenset(['abc'])) - except MultipleInvalid as e: -- assert_equal(str(e), "invalid value in frozenset") -+ assert str(e) == "invalid value in frozenset" - else: - assert False, "Did not raise Invalid" - -@@ -1267,7 +1239,7 @@ def test_set_of_integers_and_strings(): - try: - schema(set([None])) - except MultipleInvalid as e: -- assert_equal(str(e), "invalid value in set") -+ assert str(e) == "invalid value in set" - else: - assert False, "Did not raise Invalid" - -@@ -1284,7 +1256,7 @@ def test_frozenset_of_integers_and_strin - try: - schema(frozenset([None])) - except MultipleInvalid as e: -- assert_equal(str(e), "invalid value in frozenset") -+ assert str(e) == "invalid value in frozenset" - else: - assert False, "Did not raise Invalid" - -@@ -1330,8 +1302,7 @@ def test_any_required(): - try: - schema({}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "required key not provided @ data['a']") -+ assert str(e) == "required key not provided @ data['a']" - else: - assert False, "Did not raise Invalid for MultipleInvalid" - -@@ -1345,8 +1316,7 @@ def test_any_required_with_subschema(): - try: - schema({}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "required key not provided @ data['a']") -+ assert str(e) == "required key not provided @ data['a']" - else: - assert False, "Did not raise Invalid for MultipleInvalid" - -@@ -1357,16 +1327,15 @@ def test_inclusive(): - }) - - r = schema({}) -- assert_equal(r, {}) -+ assert r == {} - - r = schema({'x':1, 'y':2}) -- assert_equal(r, {'x':1, 'y':2}) -+ assert r == {'x':1, 'y':2} - - try: - r = schema({'x':1}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "some but not all values in the same group of inclusion 'stuff' @ data[]") -+ assert str(e) == "some but not all values in the same group of inclusion 'stuff' @ data[]" - else: - assert False, "Did not raise Invalid for incomplete Inclusive group" - -@@ -1377,13 +1346,12 @@ def test_inclusive_defaults(): - }) - - r = schema({}) -- assert_equal(r, {'x':3, 'y':4}) -+ assert r == {'x':3, 'y':4} - - try: - r = schema({'x':1}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "some but not all values in the same group of inclusion 'stuff' @ data[]") -+ assert str(e) == "some but not all values in the same group of inclusion 'stuff' @ data[]" - else: - assert False, "Did not raise Invalid for incomplete Inclusive group with defaults" - -@@ -1394,15 +1362,14 @@ def test_exclusive(): - }) - - r = schema({}) -- assert_equal(r, {}) -+ assert r == {} - - r = schema({'x':1}) -- assert_equal(r, {'x':1}) -+ assert r == {'x':1} - - try: - r = schema({'x':1, 'y': 2}) - except MultipleInvalid as e: -- assert_equal(str(e), -- "two or more values in the same group of exclusion 'stuff' @ data[]") -+ assert str(e) == "two or more values in the same group of exclusion 'stuff' @ data[]" - else: - assert False, "Did not raise Invalid for multiple values in Exclusive group" -Index: voluptuous-0.11.7/PKG-INFO -=================================================================== ---- voluptuous-0.11.7.orig/PKG-INFO 2019-08-13 04:18:18.000000000 +0200 -+++ voluptuous-0.11.7/PKG-INFO 2020-06-26 10:39:30.204198402 +0200 -@@ -690,9 +690,9 @@ Description: # Voluptuous is a Python da - - ## Running tests. - -- Voluptuous is using nosetests: -+ Voluptuous is using pytest: - -- $ nosetests -+ $ pytest - - - ## Why use Voluptuous over another validation library? -Index: voluptuous-0.11.7/README.md -=================================================================== ---- voluptuous-0.11.7.orig/README.md 2019-08-13 04:10:58.000000000 +0200 -+++ voluptuous-0.11.7/README.md 2020-06-26 10:39:43.096273515 +0200 -@@ -681,9 +681,9 @@ s({'password':'123', 'password_again': 1 - - ## Running tests. - --Voluptuous is using nosetests: -+Voluptuous is using pytest: - -- $ nosetests -+ $ pytest - - - ## Why use Voluptuous over another validation library? -Index: voluptuous-0.11.7/pytest.ini -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ voluptuous-0.11.7/pytest.ini 2020-06-26 10:38:33.715869273 +0200 -@@ -0,0 +1,4 @@ -+[pytest] -+python_files = tests.py -+testpaths = voluptuous/tests -+addopts = --doctest-glob=*.md -v -Index: voluptuous-0.11.7/setup.cfg -=================================================================== ---- voluptuous-0.11.7.orig/setup.cfg 2019-08-13 04:18:18.000000000 +0200 -+++ voluptuous-0.11.7/setup.cfg 2020-06-26 10:47:34.899022422 +0200 -@@ -1,8 +1,3 @@ --[nosetests] --doctest-extension = md --with-doctest = 1 --where = . -- - [egg_info] - tag_build = - tag_date = 0 diff --git a/python-voluptuous.changes b/python-voluptuous.changes index 3c0d1ec..7bb331c 100644 --- a/python-voluptuous.changes +++ b/python-voluptuous.changes @@ -1,3 +1,19 @@ +------------------------------------------------------------------- +Sat Oct 1 14:37:36 UTC 2022 - Dirk Müller + +- update to 0.13.1: + * Ignore `Enum` if it is unavailable + * Fix email regex match for Python 2.7 + * Enable github actions + * Convert codebase to adhere to `flake8` W504 (PEP 8) + * Enable `flake8` in github actions + * `pytest` migration + enable Python 3.10 + * Display valid `Enum` values in `Coerce` + * Revert Breaking Maybe change in 0.12.1 + * Revert Breaking `Maybe` change in 0.12.1 + * Fix Email Regex to not match on extra characters +- drop python-voluptuous-remove-nose.patch (upstream) + ------------------------------------------------------------------- Thu Jun 18 09:59:14 UTC 2020 - pgajdos@suse.com diff --git a/python-voluptuous.spec b/python-voluptuous.spec index 750c705..d68dcc9 100644 --- a/python-voluptuous.spec +++ b/python-voluptuous.spec @@ -1,7 +1,7 @@ # # spec file for package python-voluptuous # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,15 +18,13 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-voluptuous -Version: 0.11.7 +Version: 0.13.1 Release: 0 Summary: A Python data validation library License: BSD-3-Clause Group: Development/Languages/Python -URL: http://github.com/alecthomas/voluptuous -Source: https://files.pythonhosted.org/packages/source/v/voluptuous/voluptuous-%{version}.tar.gz -# https://github.com/alecthomas/voluptuous/pull/422 -Patch0: python-voluptuous-remove-nose.patch +URL: https://github.com/alecthomas/voluptuous +Source: https://github.com/alecthomas/voluptuous/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}-gh.tar.gz BuildRequires: %{python_module pytest} BuildRequires: %{python_module setuptools} BuildRequires: fdupes @@ -40,7 +38,6 @@ coming into Python as JSON, YAML, etc. %prep %setup -q -n voluptuous-%{version} -%patch0 -p1 %build %python_build diff --git a/voluptuous-0.11.7.tar.gz b/voluptuous-0.11.7.tar.gz deleted file mode 100644 index c128a26..0000000 --- a/voluptuous-0.11.7.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2abc341dbc740c5e2302c7f9b8e2e243194fb4772585b991931cb5b22e9bf456 -size 45262