summaryrefslogtreecommitdiff
path: root/build-python-2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'build-python-2.patch')
-rw-r--r--build-python-2.patch607
1 files changed, 0 insertions, 607 deletions
diff --git a/build-python-2.patch b/build-python-2.patch
deleted file mode 100644
index e15649e..0000000
--- a/build-python-2.patch
+++ /dev/null
@@ -1,607 +0,0 @@
-diff -up firefox-90.0/third_party/python/requirements.in.build-python-2 firefox-90.0/third_party/python/requirements.in
---- firefox-90.0/third_party/python/requirements.in.build-python-2 2021-07-05 21:16:03.000000000 +0200
-+++ firefox-90.0/third_party/python/requirements.in 2021-07-21 09:42:47.772128103 +0200
-@@ -44,5 +44,5 @@ requests==2.25.1
- responses==0.10.6
- sentry-sdk==0.14.3
- six==1.13.0
--voluptuous==0.11.5
-+voluptuous==0.12.1
- yamllint==1.23
-diff -up firefox-90.0/third_party/python/requirements.txt.build-python-2 firefox-90.0/third_party/python/requirements.txt
---- firefox-90.0/third_party/python/requirements.txt.build-python-2 2021-07-05 21:16:03.000000000 +0200
-+++ firefox-90.0/third_party/python/requirements.txt 2021-07-21 09:42:47.773128134 +0200
-@@ -286,9 +286,9 @@ urllib3==1.25.9 \
- # via
- # requests
- # sentry-sdk
--voluptuous==0.11.5 \
-- --hash=sha256:303542b3fc07fb52ec3d7a1c614b329cdbee13a9d681935353d8ea56a7bfa9f1 \
-- --hash=sha256:567a56286ef82a9d7ae0628c5842f65f516abcb496e74f3f59f1d7b28df314ef
-+voluptuous==0.12.1 \
-+ --hash=sha256:663572419281ddfaf4b4197fd4942d181630120fb39b333e3adad70aeb56444b \
-+ --hash=sha256:8ace33fcf9e6b1f59406bfaf6b8ec7bcc44266a9f29080b4deb4fe6ff2492386
- # via -r requirements-mach-vendor-python.in
- yamllint==1.23 \
- --hash=sha256:0fa69bf8a86182b7fe14918bdd3a30354c869966bbc7cbfff176af71bda9c806 \
-diff -up firefox-90.0/third_party/python/voluptuous/voluptuous-0.11.5.dist-info/RECORD.build-python-2 firefox-90.0/third_party/python/voluptuous/voluptuous-0.11.5.dist-info/RECORD
-diff -up firefox-90.0/third_party/python/voluptuous/voluptuous-0.12.1.dist-info/COPYING.build-python-2 firefox-90.0/third_party/python/voluptuous/voluptuous-0.12.1.dist-info/COPYING
---- firefox-90.0/third_party/python/voluptuous/voluptuous-0.12.1.dist-info/COPYING.build-python-2 2021-07-21 09:42:47.774128166 +0200
-+++ firefox-90.0/third_party/python/voluptuous/voluptuous-0.12.1.dist-info/COPYING 2021-07-21 09:42:47.774128166 +0200
-@@ -0,0 +1,25 @@
-+Copyright (c) 2010, Alec Thomas
-+All rights reserved.
-+
-+Redistribution and use in source and binary forms, with or without
-+modification, are permitted provided that the following conditions are met:
-+
-+ - Redistributions of source code must retain the above copyright notice, this
-+ list of conditions and the following disclaimer.
-+ - Redistributions in binary form must reproduce the above copyright notice,
-+ this list of conditions and the following disclaimer in the documentation
-+ and/or other materials provided with the distribution.
-+ - Neither the name of SwapOff.org nor the names of its contributors may
-+ be used to endorse or promote products derived from this software without
-+ specific prior written permission.
-+
-+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-diff -up firefox-90.0/third_party/python/voluptuous/voluptuous-0.12.1.dist-info/RECORD.build-python-2 firefox-90.0/third_party/python/voluptuous/voluptuous-0.12.1.dist-info/RECORD
---- firefox-90.0/third_party/python/voluptuous/voluptuous-0.12.1.dist-info/RECORD.build-python-2 2021-07-21 09:42:47.774128166 +0200
-+++ firefox-90.0/third_party/python/voluptuous/voluptuous-0.12.1.dist-info/RECORD 2021-07-21 09:42:47.774128166 +0200
-@@ -0,0 +1,11 @@
-+voluptuous/__init__.py,sha256=tSYWPAIWee6YwcMK8hxmaiagG_swokUMeH8MluJLWZM,203
-+voluptuous/error.py,sha256=fLRmJwKp0bqRGgBM34ztg9MTxhEOf465sbQcvJlEtAk,4026
-+voluptuous/humanize.py,sha256=hZlhdN4aVeGDIXdtSTeyEbmku65SDPRuut3mOfuRQP0,1606
-+voluptuous/schema_builder.py,sha256=xVJpf3uJMyS1CKwzDw3rEK39ebqDiF_A2Kbq4VnZ3Aw,43677
-+voluptuous/util.py,sha256=RXLZ2b5y-A4az3teG6UpCx2UZcXpS11sIVCdORyKar8,3150
-+voluptuous/validators.py,sha256=xZgyKH-EVqUHCHral5gzViXq4HfEjJEsGdQy7z6llc0,32798
-+voluptuous-0.12.1.dist-info/COPYING,sha256=JHtJdren-k2J2Vh8qlCVVh60bcVFfyJ59ipitUUq3qk,1486
-+voluptuous-0.12.1.dist-info/METADATA,sha256=OdEydy5NydPFFzAhP8qj_YqJsQPQvoIt5ZT1t8B14Ok,20120
-+voluptuous-0.12.1.dist-info/WHEEL,sha256=S6zePDbUAjzMmpYOg2cHDxuYFWw7WiOXt6ogM6hIB5Q,92
-+voluptuous-0.12.1.dist-info/top_level.txt,sha256=TTdVb7M-vndb67UqTmAxuVjpAUakrlAWJYqvo3w4Iqc,11
-+voluptuous-0.12.1.dist-info/RECORD,,
-diff -up firefox-90.0/third_party/python/voluptuous/voluptuous/error.py.build-python-2 firefox-90.0/third_party/python/voluptuous/voluptuous/error.py
---- firefox-90.0/third_party/python/voluptuous/voluptuous/error.py.build-python-2 2021-07-05 21:16:03.000000000 +0200
-+++ firefox-90.0/third_party/python/voluptuous/voluptuous/error.py 2021-07-21 09:42:47.775128197 +0200
-@@ -142,11 +142,11 @@ class BooleanInvalid(Invalid):
-
-
- class UrlInvalid(Invalid):
-- """The value is not a url."""
-+ """The value is not a URL."""
-
-
- class EmailInvalid(Invalid):
-- """The value is not a email."""
-+ """The value is not an email address."""
-
-
- class FileInvalid(Invalid):
-diff -up firefox-90.0/third_party/python/voluptuous/voluptuous/__init__.py.build-python-2 firefox-90.0/third_party/python/voluptuous/voluptuous/__init__.py
---- firefox-90.0/third_party/python/voluptuous/voluptuous/__init__.py.build-python-2 2021-07-05 21:16:03.000000000 +0200
-+++ firefox-90.0/third_party/python/voluptuous/voluptuous/__init__.py 2021-07-21 09:42:47.775128197 +0200
-@@ -5,5 +5,5 @@ from voluptuous.validators import *
- from voluptuous.util import *
- from voluptuous.error import *
-
--__version__ = '0.11.5'
-+__version__ = '0.12.1'
- __author__ = 'alecthomas'
-diff -up firefox-90.0/third_party/python/voluptuous/voluptuous/schema_builder.py.build-python-2 firefox-90.0/third_party/python/voluptuous/voluptuous/schema_builder.py
---- firefox-90.0/third_party/python/voluptuous/voluptuous/schema_builder.py.build-python-2 2021-07-05 21:16:03.000000000 +0200
-+++ firefox-90.0/third_party/python/voluptuous/voluptuous/schema_builder.py 2021-07-21 09:42:47.775128197 +0200
-@@ -22,6 +22,11 @@ else:
- def iteritems(d):
- return d.iteritems()
-
-+if sys.version_info >= (3, 3):
-+ _Mapping = collections.abc.Mapping
-+else:
-+ _Mapping = collections.Mapping
-+
- """Schema validation for Python data structures.
-
- Given eg. a nested data structure like this:
-@@ -280,7 +285,7 @@ class Schema(object):
- return schema.__voluptuous_compile__(self)
- if isinstance(schema, Object):
- return self._compile_object(schema)
-- if isinstance(schema, collections.Mapping):
-+ if isinstance(schema, _Mapping):
- return self._compile_dict(schema)
- elif isinstance(schema, list):
- return self._compile_list(schema)
-@@ -610,11 +615,11 @@ class Schema(object):
- if not isinstance(data, seq_type):
- raise er.SequenceTypeInvalid('expected a %s' % seq_type_name, path)
-
-- # Empty seq schema, allow any data.
-+ # Empty seq schema, reject any data.
- if not schema:
- if data:
- raise er.MultipleInvalid([
-- er.ValueInvalid('not a valid value', [value]) for value in data
-+ er.ValueInvalid('not a valid value', path if path else data)
- ])
- return data
-
-@@ -735,7 +740,7 @@ class Schema(object):
-
- result = self.schema.copy()
-
-- # returns the key that may have been passed as arugment to Marker constructor
-+ # returns the key that may have been passed as an argument to Marker constructor
- def key_literal(key):
- return (key.schema if isinstance(key, Marker) else key)
-
-@@ -771,9 +776,10 @@ class Schema(object):
- result[key] = value
-
- # recompile and send old object
-+ result_cls = type(self)
- result_required = (required if required is not None else self.required)
- result_extra = (extra if extra is not None else self.extra)
-- return Schema(result, required=result_required, extra=result_extra)
-+ return result_cls(result, required=result_required, extra=result_extra)
-
-
- def _compile_scalar(schema):
-@@ -809,7 +815,7 @@ def _compile_scalar(schema):
- def validate_callable(path, data):
- try:
- return schema(data)
-- except ValueError as e:
-+ except ValueError:
- raise er.ValueInvalid('not a valid value', path)
- except er.Invalid as e:
- e.prepend(path)
-@@ -1121,8 +1127,11 @@ class Inclusive(Optional):
- True
- """
-
-- def __init__(self, schema, group_of_inclusion, msg=None):
-- super(Inclusive, self).__init__(schema, msg=msg)
-+ def __init__(self, schema, group_of_inclusion,
-+ msg=None, description=None, default=UNDEFINED):
-+ super(Inclusive, self).__init__(schema, msg=msg,
-+ default=default,
-+ description=description)
- self.group_of_inclusion = group_of_inclusion
-
-
-diff -up firefox-90.0/third_party/python/voluptuous/voluptuous/util.py.build-python-2 firefox-90.0/third_party/python/voluptuous/voluptuous/util.py
---- firefox-90.0/third_party/python/voluptuous/voluptuous/util.py.build-python-2 2021-07-05 21:16:03.000000000 +0200
-+++ firefox-90.0/third_party/python/voluptuous/voluptuous/util.py 2021-07-21 09:42:47.776128229 +0200
-@@ -7,6 +7,14 @@ from voluptuous import validators
- __author__ = 'tusharmakkar08'
-
-
-+def _fix_str(v):
-+ if sys.version_info[0] == 2 and isinstance(v, unicode):
-+ s = v
-+ else:
-+ s = str(v)
-+ return s
-+
-+
- def Lower(v):
- """Transform a string to lower case.
-
-@@ -14,7 +22,7 @@ def Lower(v):
- >>> s('HI')
- 'hi'
- """
-- return str(v).lower()
-+ return _fix_str(v).lower()
-
-
- def Upper(v):
-@@ -24,7 +32,7 @@ def Upper(v):
- >>> s('hi')
- 'HI'
- """
-- return str(v).upper()
-+ return _fix_str(v).upper()
-
-
- def Capitalize(v):
-@@ -34,7 +42,7 @@ def Capitalize(v):
- >>> s('hello world')
- 'Hello world'
- """
-- return str(v).capitalize()
-+ return _fix_str(v).capitalize()
-
-
- def Title(v):
-@@ -44,7 +52,7 @@ def Title(v):
- >>> s('hello world')
- 'Hello World'
- """
-- return str(v).title()
-+ return _fix_str(v).title()
-
-
- def Strip(v):
-@@ -54,7 +62,7 @@ def Strip(v):
- >>> s(' hello world ')
- 'hello world'
- """
-- return str(v).strip()
-+ return _fix_str(v).strip()
-
-
- class DefaultTo(object):
-diff -up firefox-90.0/third_party/python/voluptuous/voluptuous/validators.py.build-python-2 firefox-90.0/third_party/python/voluptuous/voluptuous/validators.py
---- firefox-90.0/third_party/python/voluptuous/voluptuous/validators.py.build-python-2 2021-07-05 21:16:03.000000000 +0200
-+++ firefox-90.0/third_party/python/voluptuous/voluptuous/validators.py 2021-07-21 09:42:47.776128229 +0200
-@@ -192,15 +192,26 @@ class _WithSubValidators(object):
- def __init__(self, *validators, **kwargs):
- self.validators = validators
- self.msg = kwargs.pop('msg', None)
-+ self.required = kwargs.pop('required', False)
-+ self.discriminant = kwargs.pop('discriminant', None)
-
- def __voluptuous_compile__(self, schema):
-- self._compiled = [
-- schema._compile(v)
-- for v in self.validators
-- ]
-+ self._compiled = []
-+ old_required = schema.required
-+ self.schema = schema
-+ for v in self.validators:
-+ schema.required = self.required
-+ self._compiled.append(schema._compile(v))
-+ schema.required = old_required
- return self._run
-
- def _run(self, path, value):
-+ if self.discriminant is not None:
-+ self._compiled = [
-+ self.schema._compile(v)
-+ for v in self.discriminant(value, self.validators)
-+ ]
-+
- return self._exec(self._compiled, value, path)
-
- def __call__(self, v):
-@@ -218,7 +229,7 @@ class Any(_WithSubValidators):
- """Use the first validated value.
-
- :param msg: Message to deliver to user if validation fails.
-- :param kwargs: All other keyword arguments are passed to the sub-Schema constructors.
-+ :param kwargs: All other keyword arguments are passed to the sub-schema constructors.
- :returns: Return value of the first validator that passes.
-
- >>> validate = Schema(Any('true', 'false',
-@@ -262,13 +273,57 @@ class Any(_WithSubValidators):
- Or = Any
-
-
-+class Union(_WithSubValidators):
-+ """Use the first validated value among those selected by discriminant.
-+
-+ :param msg: Message to deliver to user if validation fails.
-+ :param discriminant(value, validators): Returns the filtered list of validators based on the value.
-+ :param kwargs: All other keyword arguments are passed to the sub-schema constructors.
-+ :returns: Return value of the first validator that passes.
-+
-+ >>> validate = Schema(Union({'type':'a', 'a_val':'1'},{'type':'b', 'b_val':'2'},
-+ ... discriminant=lambda val, alt: filter(
-+ ... lambda v : v['type'] == val['type'] , alt)))
-+ >>> validate({'type':'a', 'a_val':'1'}) == {'type':'a', 'a_val':'1'}
-+ True
-+ >>> with raises(MultipleInvalid, "not a valid value for dictionary value @ data['b_val']"):
-+ ... validate({'type':'b', 'b_val':'5'})
-+
-+ ```discriminant({'type':'b', 'a_val':'5'}, [{'type':'a', 'a_val':'1'},{'type':'b', 'b_val':'2'}])``` is invoked
-+
-+ Without the discriminant, the exception would be "extra keys not allowed @ data['b_val']"
-+ """
-+
-+ def _exec(self, funcs, v, path=None):
-+ error = None
-+ for func in funcs:
-+ try:
-+ if path is None:
-+ return func(v)
-+ else:
-+ return func(path, v)
-+ except Invalid as e:
-+ if error is None or len(e.path) > len(error.path):
-+ error = e
-+ else:
-+ if error:
-+ raise error if self.msg is None else AnyInvalid(
-+ self.msg, path=path)
-+ raise AnyInvalid(self.msg or 'no valid value found',
-+ path=path)
-+
-+
-+# Convenience alias
-+Switch = Union
-+
-+
- class All(_WithSubValidators):
- """Value must pass all validators.
-
- The output of each validator is passed as input to the next.
-
- :param msg: Message to deliver to user if validation fails.
-- :param kwargs: All other keyword arguments are passed to the sub-Schema constructors.
-+ :param kwargs: All other keyword arguments are passed to the sub-schema constructors.
-
- >>> validate = Schema(All('10', Coerce(int)))
- >>> validate('10')
-@@ -303,7 +358,7 @@ class Match(object):
- >>> with raises(MultipleInvalid, 'expected string or buffer'):
- ... validate(123)
-
-- Pattern may also be a _compiled regular expression:
-+ Pattern may also be a compiled regular expression:
-
- >>> validate = Schema(Match(re.compile(r'0x[A-F0-9]+', re.I)))
- >>> validate('0x123ef4')
-@@ -361,38 +416,38 @@ def _url_validation(v):
- return parsed
-
-
--@message('expected an Email', cls=EmailInvalid)
-+@message('expected an email address', cls=EmailInvalid)
- def Email(v):
-- """Verify that the value is an Email or not.
-+ """Verify that the value is an email address or not.
-
- >>> s = Schema(Email())
-- >>> with raises(MultipleInvalid, 'expected an Email'):
-+ >>> with raises(MultipleInvalid, 'expected an email address'):
- ... s("a.com")
-- >>> with raises(MultipleInvalid, 'expected an Email'):
-+ >>> with raises(MultipleInvalid, 'expected an email address'):
- ... s("a@.com")
-- >>> with raises(MultipleInvalid, 'expected an Email'):
-+ >>> with raises(MultipleInvalid, 'expected an email address'):
- ... s("a@.com")
- >>> s('t@x.com')
- 't@x.com'
- """
- try:
- if not v or "@" not in v:
-- raise EmailInvalid("Invalid Email")
-+ raise EmailInvalid("Invalid email address")
- user_part, domain_part = v.rsplit('@', 1)
-
- if not (USER_REGEX.match(user_part) and DOMAIN_REGEX.match(domain_part)):
-- raise EmailInvalid("Invalid Email")
-+ raise EmailInvalid("Invalid email address")
- return v
- except:
- raise ValueError
-
-
--@message('expected a Fully qualified domain name URL', cls=UrlInvalid)
-+@message('expected a fully qualified domain name URL', cls=UrlInvalid)
- def FqdnUrl(v):
-- """Verify that the value is a Fully qualified domain name URL.
-+ """Verify that the value is a fully qualified domain name URL.
-
- >>> s = Schema(FqdnUrl())
-- >>> with raises(MultipleInvalid, 'expected a Fully qualified domain name URL'):
-+ >>> with raises(MultipleInvalid, 'expected a fully qualified domain name URL'):
- ... s("http://localhost/")
- >>> s('http://w3.org')
- 'http://w3.org'
-@@ -423,14 +478,14 @@ def Url(v):
- raise ValueError
-
-
--@message('not a file', cls=FileInvalid)
-+@message('Not a file', cls=FileInvalid)
- @truth
- def IsFile(v):
- """Verify the file exists.
-
- >>> os.path.basename(IsFile()(__file__)).startswith('validators.py')
- True
-- >>> with raises(FileInvalid, 'not a file'):
-+ >>> with raises(FileInvalid, 'Not a file'):
- ... IsFile()("random_filename_goes_here.py")
- >>> with raises(FileInvalid, 'Not a file'):
- ... IsFile()(None)
-@@ -445,7 +500,7 @@ def IsFile(v):
- raise FileInvalid('Not a file')
-
-
--@message('not a directory', cls=DirInvalid)
-+@message('Not a directory', cls=DirInvalid)
- @truth
- def IsDir(v):
- """Verify the directory exists.
-@@ -487,11 +542,11 @@ def PathExists(v):
- raise PathInvalid("Not a Path")
-
-
--def Maybe(validator):
-+def Maybe(validator, msg=None):
- """Validate that the object matches given validator or is None.
-
-- :raises Invalid: if the value does not match the given validator and is not
-- None
-+ :raises Invalid: If the value does not match the given validator and is not
-+ None.
-
- >>> s = Schema(Maybe(int))
- >>> s(10)
-@@ -500,7 +555,7 @@ def Maybe(validator):
- ... s("string")
-
- """
-- return Any(None, validator)
-+ return Any(validator, None, msg=msg)
-
-
- class Range(object):
-@@ -533,23 +588,30 @@ class Range(object):
- self.msg = msg
-
- def __call__(self, v):
-- if self.min_included:
-- if self.min is not None and not v >= self.min:
-- raise RangeInvalid(
-- self.msg or 'value must be at least %s' % self.min)
-- else:
-- if self.min is not None and not v > self.min:
-- raise RangeInvalid(
-- self.msg or 'value must be higher than %s' % self.min)
-- if self.max_included:
-- if self.max is not None and not v <= self.max:
-- raise RangeInvalid(
-- self.msg or 'value must be at most %s' % self.max)
-- else:
-- if self.max is not None and not v < self.max:
-- raise RangeInvalid(
-- self.msg or 'value must be lower than %s' % self.max)
-- return v
-+ try:
-+ if self.min_included:
-+ if self.min is not None and not v >= self.min:
-+ raise RangeInvalid(
-+ self.msg or 'value must be at least %s' % self.min)
-+ else:
-+ if self.min is not None and not v > self.min:
-+ raise RangeInvalid(
-+ self.msg or 'value must be higher than %s' % self.min)
-+ if self.max_included:
-+ if self.max is not None and not v <= self.max:
-+ raise RangeInvalid(
-+ self.msg or 'value must be at most %s' % self.max)
-+ else:
-+ if self.max is not None and not v < self.max:
-+ raise RangeInvalid(
-+ self.msg or 'value must be lower than %s' % self.max)
-+
-+ return v
-+
-+ # Objects that lack a partial ordering, e.g. None or strings will raise TypeError
-+ except TypeError:
-+ raise RangeInvalid(
-+ self.msg or 'invalid value or type (must have a partial ordering)')
-
- def __repr__(self):
- return ('Range(min=%r, max=%r, min_included=%r,'
-@@ -579,11 +641,17 @@ class Clamp(object):
- self.msg = msg
-
- def __call__(self, v):
-- if self.min is not None and v < self.min:
-- v = self.min
-- if self.max is not None and v > self.max:
-- v = self.max
-- return v
-+ try:
-+ if self.min is not None and v < self.min:
-+ v = self.min
-+ if self.max is not None and v > self.max:
-+ v = self.max
-+ return v
-+
-+ # Objects that lack a partial ordering, e.g. None or strings will raise TypeError
-+ except TypeError:
-+ raise RangeInvalid(
-+ self.msg or 'invalid value or type (must have a partial ordering)')
-
- def __repr__(self):
- return 'Clamp(min=%s, max=%s)' % (self.min, self.max)
-@@ -598,13 +666,19 @@ class Length(object):
- self.msg = msg
-
- def __call__(self, v):
-- if self.min is not None and len(v) < self.min:
-- raise LengthInvalid(
-- self.msg or 'length of value must be at least %s' % self.min)
-- if self.max is not None and len(v) > self.max:
-- raise LengthInvalid(
-- self.msg or 'length of value must be at most %s' % self.max)
-- return v
-+ try:
-+ if self.min is not None and len(v) < self.min:
-+ raise LengthInvalid(
-+ self.msg or 'length of value must be at least %s' % self.min)
-+ if self.max is not None and len(v) > self.max:
-+ raise LengthInvalid(
-+ self.msg or 'length of value must be at most %s' % self.max)
-+ return v
-+
-+ # Objects that havbe no length e.g. None or strings will raise TypeError
-+ except TypeError:
-+ raise RangeInvalid(
-+ self.msg or 'invalid value or type')
-
- def __repr__(self):
- return 'Length(min=%s, max=%s)' % (self.min, self.max)
-@@ -663,7 +737,8 @@ class In(object):
- except TypeError:
- check = True
- if check:
-- raise InInvalid(self.msg or 'value is not allowed')
-+ raise InInvalid(self.msg or
-+ 'value must be one of {}'.format(sorted(self.container)))
- return v
-
- def __repr__(self):
-@@ -683,7 +758,8 @@ class NotIn(object):
- except TypeError:
- check = True
- if check:
-- raise NotInInvalid(self.msg or 'value is not allowed')
-+ raise NotInInvalid(self.msg or
-+ 'value must not be one of {}'.format(sorted(self.container)))
- return v
-
- def __repr__(self):
-@@ -722,7 +798,7 @@ class ExactSequence(object):
- the validators.
-
- :param msg: Message to deliver to user if validation fails.
-- :param kwargs: All other keyword arguments are passed to the sub-Schema
-+ :param kwargs: All other keyword arguments are passed to the sub-schema
- constructors.
-
- >>> from voluptuous import Schema, ExactSequence
-@@ -887,7 +963,7 @@ class Unordered(object):
- class Number(object):
- """
- Verify the number of digits that are present in the number(Precision),
-- and the decimal places(Scale)
-+ and the decimal places(Scale).
-
- :raises Invalid: If the value does not match the provided Precision and Scale.
-
-@@ -951,13 +1027,13 @@ class SomeOf(_WithSubValidators):
- The output of each validator is passed as input to the next.
-
- :param min_valid: Minimum number of valid schemas.
-- :param validators: a list of schemas or validators to match input against
-+ :param validators: List of schemas or validators to match input against.
- :param max_valid: Maximum number of valid schemas.
- :param msg: Message to deliver to user if validation fails.
-- :param kwargs: All other keyword arguments are passed to the sub-Schema constructors.
-+ :param kwargs: All other keyword arguments are passed to the sub-schema constructors.
-
-- :raises NotEnoughValid: if the minimum number of validations isn't met
-- :raises TooManyValid: if the more validations than the given amount is met
-+ :raises NotEnoughValid: If the minimum number of validations isn't met.
-+ :raises TooManyValid: If the maximum number of validations is exceeded.
-
- >>> validate = Schema(SomeOf(min_valid=2, validators=[Range(1, 5), Any(float, int), 6.6]))
- >>> validate(6.6)
bgstack15