Str
These types are subclasses of built-in str type with some constraints on it.
InitHook
Type with special __init_hook__ method which is called on instantiation. It can be used to perform some additional checks on the value.
from valtypes.type.str import InitHook
from valtypes.error.parsing import Base as ParsingError
class Uppercase(InitHook):
def __init_hook__(self) -> None:
if not self.isupper():
raise ParsingError(f"{self!r} is not uppercase")
Uppercase("FOO") # passes
Uppercase("foo") # raises ParsingError
MinimumLength
Type for representing a str that has a given minimum length. The minimum allowed length is stored in the __minimum_length__ attribute.
from valtypes.type.str import MinimumLength
class AtLeastTwoChars(MinimumLength):
__minimum_length__ = 2
AtLeastTwoChars("foo") # passes
AtLeastTwoChars("f") # raises valtypes.error.parsing.type.sized.MinimumLength
MaximumLength
Type for representing a str that has a given maximum length. The maximum allowed length is stored in the __maximum_length__ attribute.
from valtypes.type.str import MaximumLength
class AtMostTwoChars(MaximumLength):
__maximum_length__ = 2
AtMostTwoChars("foo") # passes
AtMostTwoChars("fooo") # raises valtypes.error.parsing.type.sized.MaximumLength
NonEmpty
Type for representing a non-empty str. It is a subclass of MinimumLength with __minimum_length__ set to 1.
from valtypes.type.str import NonEmpty
NonEmpty("foo") # passes
NonEmpty() # raises valtypes.error.parsing.type.sized.MinimumLength
Pattern
Type for representing a str that fully matches a given regular expression. The regular expression is stored in the __pattern__ attribute.
import re
from valtypes.type.str import Pattern
class Numeric(Pattern):
__pattern__ = re.compile(r"\d+")
Numeric("123") # passes
Numeric("foo") # raises valtypes.error.parsing.type.str.Pattern