Skip to content

Commit e8377af

Browse files
committed
[PATCH] plugin.api.validate: refactor all + any (streamlink#4514)
Turn into SchemaContainer subclasses
1 parent 336bd77 commit e8377af

File tree

1 file changed

+20
-14
lines changed

1 file changed

+20
-14
lines changed

src/streamlink/plugin/api/validate.py

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -64,21 +64,27 @@ def _is_re_match(value):
6464
return _all(_hasattr(value, a) for a in _re_match_attr)
6565

6666

67-
class any(tuple):
68-
"""At least one of the schemas must be valid."""
69-
def __new__(cls, *args):
70-
return super(any, cls).__new__(cls, args)
67+
class SchemaContainer(object):
68+
def __init__(self, schema):
69+
self.schema = schema
7170

7271

73-
class all(tuple):
74-
"""All schemas must be valid."""
75-
def __new__(cls, *args):
76-
return super(all, cls).__new__(cls, args)
72+
class any(SchemaContainer):
73+
"""
74+
Collection of schemas where at least one schema must be valid.
75+
"""
7776

77+
def __init__(self, *schemas):
78+
super(any, self).__init__(schemas)
7879

79-
class SchemaContainer(object):
80-
def __init__(self, schema):
81-
self.schema = schema
80+
81+
class all(SchemaContainer):
82+
"""
83+
Collection of schemas where every schema must be valid.
84+
"""
85+
86+
def __init__(self, *schemas):
87+
super(all, self).__init__(schemas)
8288

8389

8490
class transform(object):
@@ -390,7 +396,7 @@ def validate(schema, value):
390396
@validate.register(any)
391397
def validate_any(schema, value):
392398
errors = []
393-
for subschema in schema:
399+
for subschema in schema.schema:
394400
try:
395401
return validate(subschema, value)
396402
except ValueError as err:
@@ -401,8 +407,8 @@ def validate_any(schema, value):
401407

402408

403409
@validate.register(all)
404-
def validate_all(schemas, value):
405-
for schema in schemas:
410+
def validate_all(schema, value):
411+
for schema in schema.schema:
406412
value = validate(schema, value)
407413

408414
return value

0 commit comments

Comments
 (0)