Module jumpscale.data.types.types

Expand source code
import ast
import re


class String:
    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default

    def check(self, value):
        """Check whether provided value is a string"""
        return isinstance(value, str)

    def from_str(self, value):
        """return string from a string (is basically no more than a check)"""
        return value


class Integer:
    def __init__(self, default=None):
        if not default:
            default = 0
        self.default = self.from_str(default)

    def check(self, value):
        """Check whether provided string represent integer value

        Arguments:
            value (str)
        """
        try:
            int(value)
            return True
        except ValueError:
            return False

    def from_str(self, value):
        """get integer value from tha string

        Arguments:
            value (str)
        """
        try:
            return int(value)
        except ValueError:
            return None


class Boolean:
    def __init__(self, default=None):
        if not default:
            default = "False"
        self.default = self.from_str(default)

    def check(self, value):
        """Check whether provided string represent Boolean expresion

        Arguments:
            value (str)
        """
        valid_expresions = ["True", "False"]
        return value in valid_expresions

    def from_str(self, value):
        """Get the Boolean value from the string

        Arguments:
            value (str)
        """
        if value == "True":
            return True
        elif value == "False":
            return False
        else:
            return None


class Float:
    def __init__(self, default=None):
        if not default:
            default = 0.0
        self.default = self.from_str(default)

    def check(self, value):
        """Check whether provided string represent integer value

        Arguments:
            value (str)
        """
        try:
            float(value)
            return True
        except ValueError:
            return False

    def from_str(self, value):
        """get integer value from tha string

        Arguments:
            value (str)
        """
        try:
            return float(value)
        except ValueError:
            return None


class JSObject:
    def __init__(self, default=None):
        default = default or ""
        self.default = self.from_str(default)

    def check(self, value):
        return True

    def from_str(self, value):
        return value


class List:
    def __init__(self, default, subtype):
        self.subtype = subtype
        default = default or "[]"
        self.default = self.from_str(default)

    def _deep_check(self, value):
        """Check that the value represents a list with proper elements of the specified subtype.

        Args:
            value (list): The list to be checked.

        Returns:
            Boolean: True if the list is valid.
        """
        if not isinstance(value, list):
            return False
        for e in value:
            if isinstance(self.subtype, List) and not self.subtype._deep_check(e):
                return False
            elif not isinstance(self.subtype, List) and not self.subtype.check(str(e)):
                return False
        return True

    def check(self, value):
        """Check that the value represents a list with proper elements of the specified subtype.

        Args:
            value (list): The list to be checked.

        Returns:
            Boolean: True if the list is valid.
        """
        valid = len(value) >= 2 and value[0] == "[" and value[-1] == "]"
        if not valid:
            return False
        try:
            return self._deep_check(ast.literal_eval(value))
        except:
            return False
        return True

    def _deep_parse(self, value):
        """parses the subelements (if they are of different python type it's converted using the subtype parser)

        Args:
            value (list): The list to be parsed.

        Returns:
            list: The parsed list.
        """
        result = []
        if isinstance(self.subtype, List):
            for i, e in enumerate(value):
                value[i] = self.subtype._deep_parse(e)
        else:
            for i, e in enumerate(value):
                value[i] = self.subtype.from_str(str(e))
        return value

    def from_str(self, value):
        """parses the string value into a list.

        Args:
            value (str): The string to be parsed.

        Returns:
            list: The parsed list.
        """
        # print(f"from str-> value {value}")
        # print(f"subtype {self.subtype}")
        return object()
        # if isinstance(self.subtype, JSObject):
        #     print("returning noww")
        #     return object()
        # else:
        #     return self._deep_parse(ast.literal_eval(value))


def get_js_type(type_str, default_value=None):
    """Gets the js type from a string.

    1. "S" -> String
    2. "B" -> Boolean
    3. "I" -> Integer
    4. "O" -> JSObject
    4. "F" -> Float
    5. "L.*" -> List with subtype .*
    6. "E" -> String
    7. "" -> empty defaults to String

    Args:
        type_str (str): type description.
        default_value (any, optional): The default value. Defaults to None.

    Returns:
        Object: A js type object.
    """
    types = {
        "": String,
        "S": String,
        "I": Integer,
        "B": Boolean,
        "F": Float,
        "O": JSObject,
        "E": String,
        ## TODO: the following are totally wrong, but capturing them to be able to generate in python backend
        "email": String,
        "guid": String,
        "T": String,
        "D": String,
        "dict": String,
        "ipaddr": String,
        "ipaddress": String,
        "iprange": String,
        "bytes": String,
        "json": String,
        "I64": Float,
    }
    if len(type_str) == 0 or type_str[0] != "L":
        return types[type_str](default_value)
    else:
        subtype = type_str[1:]
        # print(subtype, default_value)
        return List(default_value, object)


class Email:
    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default
        self.regex = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"

    def check(self, value):
        """Check whether provided value is a valid email representation
        Arguments:
            value (str)
        Returbs:
            Boolean expresion"""
        return re.search(self.regex, value) is not None

    def from_str(self, value):
        """get the value from the string
        Arguments:
            value (str)
        Returbs:
            value (str)"""
        return value


class Path:
    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default
        self.regex = r"^(/[^/ ]*)+/?$"

    def check(self, value):
        """Check whether provided value is a valid path representation
        Arguments:
            value (str)
        Returbs:
            Boolean expresion"""
        return re.search(self.regex, value) is not None

    def from_str(self, value):
        """get the value from the string
        Arguments:
            value (str)
        Returbs:
            value (str)"""
        return value


class URL:
    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default
        self.regex = r"^(https?|ftp)://[^\s/$.?#].[^\s]*$"

    def check(self, value):
        """Check whether provided value is a valid URL representation
        Arguments:
            value (str)
        Returbs:
            Boolean expresion"""
        return re.search(self.regex, value) is not None

    def from_str(self, value):
        """get the value from the string
        Arguments:
            value (str)
        Returbs:
            value (str)"""
        return value


class Tel:
    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default
        self.regex = r"^\+?[0-9]{6,15}(?:x[0-9]+)?$"

    def check(self, value):
        """Check whether provided value is a valid Telephone number representation
        Arguments:
            value (str)
        Returbs:
            Boolean expresion"""
        value = self._clean(value)
        return re.search(self.regex, value) is not None

    def from_str(self, value):
        """get the value from the string
        Arguments:
            value (str)
        Returbs:
            value (str)"""
        return value

    def _clean(self, value):
        if value is not None:
            value = value.replace(",", "")
            value = value.replace("-", "")
            value = value.replace("(", "")
            value = value.replace(")", "")
            value = value.replace(" ", "")
            return value


class IPAddress:
    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default

    def check(self, value):
        """Check whether provided value is a valid IPaddress representation
        Arguments:
            value (str)
        Returns:
            Boolean expresion"""
        import ipaddress

        try:
            ipaddress.IPv4Address(value)
            return True
        except ipaddress.AddressValueError:
            return False

    def from_str(self, value):
        """get the value from the string
        Arguments:
            value (str)
        Returns:
            value (str)"""
        return value


class DateTime:
    """Supported format: yyyy-mm-dd hh:mm"""

    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default
        self.regex = r"^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (2[0-3]|[01][0-9]):[0-5][0-9]$"

    def check(self, value):
        """Check whether provided value is a valid datetime representation
        Arguments:
            value (str)
        Returbs:
            Boolean expresion"""
        return re.search(self.regex, value) is not None

    def from_str(self, value):
        """get the value from the string
        Arguments:
            value (str)
        Returbs:
            value (str)"""
        return value


class Date:
    """Support yyyy-mm-dd format"""

    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default
        self.regex = r"[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])"

    def check(self, value):
        """Check whether provided value is a valid date representation
        Arguments:
            value (str)
        Returbs:
            Boolean expresion"""
        return re.search(self.regex, value) is not None

    def from_str(self, value):
        """get the value from the string
        Arguments:
            value (str)
        Returbs:
            value (str)"""
        return value


class Time:
    """Supported format : hh:mm"""

    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default
        self.regex = r"(2[0-3]|[01][0-9]):[0-5][0-9]"

    def check(self, value):
        """Check whether provided value is a valid time representation
        Arguments:
            value (str)
        Returbs:
            Boolean expresion"""
        return re.search(self.regex, value) is not None

    def from_str(self, value):
        """Get the value from string
            value (str)
        Returbs:
            value (str)"""
        return value


class Duration:
    """Supported format : (n)y (n)m (n)d (n)h (n)m (n)s"""

    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default
        self.regex = r"((\d{1,2}y\s?)?(\d{1,2}m\s?)?(\d{1,2}d\s?)?(\d{1,2}h\s?)?(\d{1,2}m\s?)?(\d{1,2}s\s?)?)|\d{1,2}"

    def check(self, value):
        """Check whether provided value is a valid duration representation
        Arguments:
            value (str)
        Returbs:
            Boolean expresion"""
        return re.search(self.regex, value) is not None

    def from_str(self, value):
        """Get the value from string
            value (str)
        Returbs:
            value (str)"""
        return value

Functions

def get_js_type(type_str, default_value=None)

Gets the js type from a string.

  1. "S" -> String
  2. "B" -> Boolean
  3. "I" -> Integer
  4. "O" -> JSObject
  5. "F" -> Float
  6. "L." -> List with subtype .
  7. "E" -> String
  8. "" -> empty defaults to String

Args

type_str : str
type description.
default_value : any, optional
The default value. Defaults to None.

Returns

Object
A js type object.
Expand source code
def get_js_type(type_str, default_value=None):
    """Gets the js type from a string.

    1. "S" -> String
    2. "B" -> Boolean
    3. "I" -> Integer
    4. "O" -> JSObject
    4. "F" -> Float
    5. "L.*" -> List with subtype .*
    6. "E" -> String
    7. "" -> empty defaults to String

    Args:
        type_str (str): type description.
        default_value (any, optional): The default value. Defaults to None.

    Returns:
        Object: A js type object.
    """
    types = {
        "": String,
        "S": String,
        "I": Integer,
        "B": Boolean,
        "F": Float,
        "O": JSObject,
        "E": String,
        ## TODO: the following are totally wrong, but capturing them to be able to generate in python backend
        "email": String,
        "guid": String,
        "T": String,
        "D": String,
        "dict": String,
        "ipaddr": String,
        "ipaddress": String,
        "iprange": String,
        "bytes": String,
        "json": String,
        "I64": Float,
    }
    if len(type_str) == 0 or type_str[0] != "L":
        return types[type_str](default_value)
    else:
        subtype = type_str[1:]
        # print(subtype, default_value)
        return List(default_value, object)

Classes

class Boolean (default=None)
Expand source code
class Boolean:
    def __init__(self, default=None):
        if not default:
            default = "False"
        self.default = self.from_str(default)

    def check(self, value):
        """Check whether provided string represent Boolean expresion

        Arguments:
            value (str)
        """
        valid_expresions = ["True", "False"]
        return value in valid_expresions

    def from_str(self, value):
        """Get the Boolean value from the string

        Arguments:
            value (str)
        """
        if value == "True":
            return True
        elif value == "False":
            return False
        else:
            return None

Methods

def check(self, value)

Check whether provided string represent Boolean expresion

Arguments

value (str)

Expand source code
def check(self, value):
    """Check whether provided string represent Boolean expresion

    Arguments:
        value (str)
    """
    valid_expresions = ["True", "False"]
    return value in valid_expresions
def from_str(self, value)

Get the Boolean value from the string

Arguments

value (str)

Expand source code
def from_str(self, value):
    """Get the Boolean value from the string

    Arguments:
        value (str)
    """
    if value == "True":
        return True
    elif value == "False":
        return False
    else:
        return None
class Date (default=None)

Support yyyy-mm-dd format

Expand source code
class Date:
    """Support yyyy-mm-dd format"""

    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default
        self.regex = r"[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])"

    def check(self, value):
        """Check whether provided value is a valid date representation
        Arguments:
            value (str)
        Returbs:
            Boolean expresion"""
        return re.search(self.regex, value) is not None

    def from_str(self, value):
        """get the value from the string
        Arguments:
            value (str)
        Returbs:
            value (str)"""
        return value

Methods

def check(self, value)

Check whether provided value is a valid date representation

Arguments

value (str)

Returbs

Boolean expresion

Expand source code
def check(self, value):
    """Check whether provided value is a valid date representation
    Arguments:
        value (str)
    Returbs:
        Boolean expresion"""
    return re.search(self.regex, value) is not None
def from_str(self, value)

get the value from the string

Arguments

value (str)

Returbs

value (str)

Expand source code
def from_str(self, value):
    """get the value from the string
    Arguments:
        value (str)
    Returbs:
        value (str)"""
    return value
class DateTime (default=None)

Supported format: yyyy-mm-dd hh:mm

Expand source code
class DateTime:
    """Supported format: yyyy-mm-dd hh:mm"""

    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default
        self.regex = r"^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (2[0-3]|[01][0-9]):[0-5][0-9]$"

    def check(self, value):
        """Check whether provided value is a valid datetime representation
        Arguments:
            value (str)
        Returbs:
            Boolean expresion"""
        return re.search(self.regex, value) is not None

    def from_str(self, value):
        """get the value from the string
        Arguments:
            value (str)
        Returbs:
            value (str)"""
        return value

Methods

def check(self, value)

Check whether provided value is a valid datetime representation

Arguments

value (str)

Returbs

Boolean expresion

Expand source code
def check(self, value):
    """Check whether provided value is a valid datetime representation
    Arguments:
        value (str)
    Returbs:
        Boolean expresion"""
    return re.search(self.regex, value) is not None
def from_str(self, value)

get the value from the string

Arguments

value (str)

Returbs

value (str)

Expand source code
def from_str(self, value):
    """get the value from the string
    Arguments:
        value (str)
    Returbs:
        value (str)"""
    return value
class Duration (default=None)

Supported format : (n)y (n)m (n)d (n)h (n)m (n)s

Expand source code
class Duration:
    """Supported format : (n)y (n)m (n)d (n)h (n)m (n)s"""

    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default
        self.regex = r"((\d{1,2}y\s?)?(\d{1,2}m\s?)?(\d{1,2}d\s?)?(\d{1,2}h\s?)?(\d{1,2}m\s?)?(\d{1,2}s\s?)?)|\d{1,2}"

    def check(self, value):
        """Check whether provided value is a valid duration representation
        Arguments:
            value (str)
        Returbs:
            Boolean expresion"""
        return re.search(self.regex, value) is not None

    def from_str(self, value):
        """Get the value from string
            value (str)
        Returbs:
            value (str)"""
        return value

Methods

def check(self, value)

Check whether provided value is a valid duration representation

Arguments

value (str)

Returbs

Boolean expresion

Expand source code
def check(self, value):
    """Check whether provided value is a valid duration representation
    Arguments:
        value (str)
    Returbs:
        Boolean expresion"""
    return re.search(self.regex, value) is not None
def from_str(self, value)

Get the value from string value (str)

Returbs

value (str)

Expand source code
def from_str(self, value):
    """Get the value from string
        value (str)
    Returbs:
        value (str)"""
    return value
class Email (default=None)
Expand source code
class Email:
    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default
        self.regex = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"

    def check(self, value):
        """Check whether provided value is a valid email representation
        Arguments:
            value (str)
        Returbs:
            Boolean expresion"""
        return re.search(self.regex, value) is not None

    def from_str(self, value):
        """get the value from the string
        Arguments:
            value (str)
        Returbs:
            value (str)"""
        return value

Methods

def check(self, value)

Check whether provided value is a valid email representation

Arguments

value (str)

Returbs

Boolean expresion

Expand source code
def check(self, value):
    """Check whether provided value is a valid email representation
    Arguments:
        value (str)
    Returbs:
        Boolean expresion"""
    return re.search(self.regex, value) is not None
def from_str(self, value)

get the value from the string

Arguments

value (str)

Returbs

value (str)

Expand source code
def from_str(self, value):
    """get the value from the string
    Arguments:
        value (str)
    Returbs:
        value (str)"""
    return value
class Float (default=None)
Expand source code
class Float:
    def __init__(self, default=None):
        if not default:
            default = 0.0
        self.default = self.from_str(default)

    def check(self, value):
        """Check whether provided string represent integer value

        Arguments:
            value (str)
        """
        try:
            float(value)
            return True
        except ValueError:
            return False

    def from_str(self, value):
        """get integer value from tha string

        Arguments:
            value (str)
        """
        try:
            return float(value)
        except ValueError:
            return None

Methods

def check(self, value)

Check whether provided string represent integer value

Arguments

value (str)

Expand source code
def check(self, value):
    """Check whether provided string represent integer value

    Arguments:
        value (str)
    """
    try:
        float(value)
        return True
    except ValueError:
        return False
def from_str(self, value)

get integer value from tha string

Arguments

value (str)

Expand source code
def from_str(self, value):
    """get integer value from tha string

    Arguments:
        value (str)
    """
    try:
        return float(value)
    except ValueError:
        return None
class IPAddress (default=None)
Expand source code
class IPAddress:
    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default

    def check(self, value):
        """Check whether provided value is a valid IPaddress representation
        Arguments:
            value (str)
        Returns:
            Boolean expresion"""
        import ipaddress

        try:
            ipaddress.IPv4Address(value)
            return True
        except ipaddress.AddressValueError:
            return False

    def from_str(self, value):
        """get the value from the string
        Arguments:
            value (str)
        Returns:
            value (str)"""
        return value

Methods

def check(self, value)

Check whether provided value is a valid IPaddress representation

Arguments

value (str)

Returns

Boolean expresion

Expand source code
def check(self, value):
    """Check whether provided value is a valid IPaddress representation
    Arguments:
        value (str)
    Returns:
        Boolean expresion"""
    import ipaddress

    try:
        ipaddress.IPv4Address(value)
        return True
    except ipaddress.AddressValueError:
        return False
def from_str(self, value)

get the value from the string

Arguments

value (str)

Returns

value (str)

Expand source code
def from_str(self, value):
    """get the value from the string
    Arguments:
        value (str)
    Returns:
        value (str)"""
    return value
class Integer (default=None)
Expand source code
class Integer:
    def __init__(self, default=None):
        if not default:
            default = 0
        self.default = self.from_str(default)

    def check(self, value):
        """Check whether provided string represent integer value

        Arguments:
            value (str)
        """
        try:
            int(value)
            return True
        except ValueError:
            return False

    def from_str(self, value):
        """get integer value from tha string

        Arguments:
            value (str)
        """
        try:
            return int(value)
        except ValueError:
            return None

Methods

def check(self, value)

Check whether provided string represent integer value

Arguments

value (str)

Expand source code
def check(self, value):
    """Check whether provided string represent integer value

    Arguments:
        value (str)
    """
    try:
        int(value)
        return True
    except ValueError:
        return False
def from_str(self, value)

get integer value from tha string

Arguments

value (str)

Expand source code
def from_str(self, value):
    """get integer value from tha string

    Arguments:
        value (str)
    """
    try:
        return int(value)
    except ValueError:
        return None
class JSObject (default=None)
Expand source code
class JSObject:
    def __init__(self, default=None):
        default = default or ""
        self.default = self.from_str(default)

    def check(self, value):
        return True

    def from_str(self, value):
        return value

Methods

def check(self, value)
Expand source code
def check(self, value):
    return True
def from_str(self, value)
Expand source code
def from_str(self, value):
    return value
class List (default, subtype)
Expand source code
class List:
    def __init__(self, default, subtype):
        self.subtype = subtype
        default = default or "[]"
        self.default = self.from_str(default)

    def _deep_check(self, value):
        """Check that the value represents a list with proper elements of the specified subtype.

        Args:
            value (list): The list to be checked.

        Returns:
            Boolean: True if the list is valid.
        """
        if not isinstance(value, list):
            return False
        for e in value:
            if isinstance(self.subtype, List) and not self.subtype._deep_check(e):
                return False
            elif not isinstance(self.subtype, List) and not self.subtype.check(str(e)):
                return False
        return True

    def check(self, value):
        """Check that the value represents a list with proper elements of the specified subtype.

        Args:
            value (list): The list to be checked.

        Returns:
            Boolean: True if the list is valid.
        """
        valid = len(value) >= 2 and value[0] == "[" and value[-1] == "]"
        if not valid:
            return False
        try:
            return self._deep_check(ast.literal_eval(value))
        except:
            return False
        return True

    def _deep_parse(self, value):
        """parses the subelements (if they are of different python type it's converted using the subtype parser)

        Args:
            value (list): The list to be parsed.

        Returns:
            list: The parsed list.
        """
        result = []
        if isinstance(self.subtype, List):
            for i, e in enumerate(value):
                value[i] = self.subtype._deep_parse(e)
        else:
            for i, e in enumerate(value):
                value[i] = self.subtype.from_str(str(e))
        return value

    def from_str(self, value):
        """parses the string value into a list.

        Args:
            value (str): The string to be parsed.

        Returns:
            list: The parsed list.
        """
        # print(f"from str-> value {value}")
        # print(f"subtype {self.subtype}")
        return object()
        # if isinstance(self.subtype, JSObject):
        #     print("returning noww")
        #     return object()
        # else:
        #     return self._deep_parse(ast.literal_eval(value))

Methods

def check(self, value)

Check that the value represents a list with proper elements of the specified subtype.

Args

value : list
The list to be checked.

Returns

Boolean
True if the list is valid.
Expand source code
def check(self, value):
    """Check that the value represents a list with proper elements of the specified subtype.

    Args:
        value (list): The list to be checked.

    Returns:
        Boolean: True if the list is valid.
    """
    valid = len(value) >= 2 and value[0] == "[" and value[-1] == "]"
    if not valid:
        return False
    try:
        return self._deep_check(ast.literal_eval(value))
    except:
        return False
    return True
def from_str(self, value)

parses the string value into a list.

Args

value : str
The string to be parsed.

Returns

list
The parsed list.
Expand source code
def from_str(self, value):
    """parses the string value into a list.

    Args:
        value (str): The string to be parsed.

    Returns:
        list: The parsed list.
    """
    # print(f"from str-> value {value}")
    # print(f"subtype {self.subtype}")
    return object()
    # if isinstance(self.subtype, JSObject):
    #     print("returning noww")
    #     return object()
    # else:
    #     return self._deep_parse(ast.literal_eval(value))
class Path (default=None)
Expand source code
class Path:
    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default
        self.regex = r"^(/[^/ ]*)+/?$"

    def check(self, value):
        """Check whether provided value is a valid path representation
        Arguments:
            value (str)
        Returbs:
            Boolean expresion"""
        return re.search(self.regex, value) is not None

    def from_str(self, value):
        """get the value from the string
        Arguments:
            value (str)
        Returbs:
            value (str)"""
        return value

Methods

def check(self, value)

Check whether provided value is a valid path representation

Arguments

value (str)

Returbs

Boolean expresion

Expand source code
def check(self, value):
    """Check whether provided value is a valid path representation
    Arguments:
        value (str)
    Returbs:
        Boolean expresion"""
    return re.search(self.regex, value) is not None
def from_str(self, value)

get the value from the string

Arguments

value (str)

Returbs

value (str)

Expand source code
def from_str(self, value):
    """get the value from the string
    Arguments:
        value (str)
    Returbs:
        value (str)"""
    return value
class String (default=None)
Expand source code
class String:
    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default

    def check(self, value):
        """Check whether provided value is a string"""
        return isinstance(value, str)

    def from_str(self, value):
        """return string from a string (is basically no more than a check)"""
        return value

Methods

def check(self, value)

Check whether provided value is a string

Expand source code
def check(self, value):
    """Check whether provided value is a string"""
    return isinstance(value, str)
def from_str(self, value)

return string from a string (is basically no more than a check)

Expand source code
def from_str(self, value):
    """return string from a string (is basically no more than a check)"""
    return value
class Tel (default=None)
Expand source code
class Tel:
    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default
        self.regex = r"^\+?[0-9]{6,15}(?:x[0-9]+)?$"

    def check(self, value):
        """Check whether provided value is a valid Telephone number representation
        Arguments:
            value (str)
        Returbs:
            Boolean expresion"""
        value = self._clean(value)
        return re.search(self.regex, value) is not None

    def from_str(self, value):
        """get the value from the string
        Arguments:
            value (str)
        Returbs:
            value (str)"""
        return value

    def _clean(self, value):
        if value is not None:
            value = value.replace(",", "")
            value = value.replace("-", "")
            value = value.replace("(", "")
            value = value.replace(")", "")
            value = value.replace(" ", "")
            return value

Methods

def check(self, value)

Check whether provided value is a valid Telephone number representation

Arguments

value (str)

Returbs

Boolean expresion

Expand source code
def check(self, value):
    """Check whether provided value is a valid Telephone number representation
    Arguments:
        value (str)
    Returbs:
        Boolean expresion"""
    value = self._clean(value)
    return re.search(self.regex, value) is not None
def from_str(self, value)

get the value from the string

Arguments

value (str)

Returbs

value (str)

Expand source code
def from_str(self, value):
    """get the value from the string
    Arguments:
        value (str)
    Returbs:
        value (str)"""
    return value
class Time (default=None)

Supported format : hh:mm

Expand source code
class Time:
    """Supported format : hh:mm"""

    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default
        self.regex = r"(2[0-3]|[01][0-9]):[0-5][0-9]"

    def check(self, value):
        """Check whether provided value is a valid time representation
        Arguments:
            value (str)
        Returbs:
            Boolean expresion"""
        return re.search(self.regex, value) is not None

    def from_str(self, value):
        """Get the value from string
            value (str)
        Returbs:
            value (str)"""
        return value

Methods

def check(self, value)

Check whether provided value is a valid time representation

Arguments

value (str)

Returbs

Boolean expresion

Expand source code
def check(self, value):
    """Check whether provided value is a valid time representation
    Arguments:
        value (str)
    Returbs:
        Boolean expresion"""
    return re.search(self.regex, value) is not None
def from_str(self, value)

Get the value from string value (str)

Returbs

value (str)

Expand source code
def from_str(self, value):
    """Get the value from string
        value (str)
    Returbs:
        value (str)"""
    return value
class URL (default=None)
Expand source code
class URL:
    def __init__(self, default=None):
        if not default:
            default = ""
        self.default = default
        self.regex = r"^(https?|ftp)://[^\s/$.?#].[^\s]*$"

    def check(self, value):
        """Check whether provided value is a valid URL representation
        Arguments:
            value (str)
        Returbs:
            Boolean expresion"""
        return re.search(self.regex, value) is not None

    def from_str(self, value):
        """get the value from the string
        Arguments:
            value (str)
        Returbs:
            value (str)"""
        return value

Methods

def check(self, value)

Check whether provided value is a valid URL representation

Arguments

value (str)

Returbs

Boolean expresion

Expand source code
def check(self, value):
    """Check whether provided value is a valid URL representation
    Arguments:
        value (str)
    Returbs:
        Boolean expresion"""
    return re.search(self.regex, value) is not None
def from_str(self, value)

get the value from the string

Arguments

value (str)

Returbs

value (str)

Expand source code
def from_str(self, value):
    """get the value from the string
    Arguments:
        value (str)
    Returbs:
        value (str)"""
    return value