def __init__(self, *, allow_blank=False, regex=None, choices=None, min_length=None, max_length=None, **kwargs): super(String, self).__init__(**kwargs) if regex is not None: self._trafaret = t.Regexp(regex) else: self._trafaret = t.String(allow_blank=allow_blank, min_length=min_length, max_length=max_length) self.choices = None if choices and is_collection(choices): if isinstance(choices, type(Enum)): self.choices = choices self._trafaret &= t.Enum(*choices.__members__.keys()) else: self._trafaret &= t.Enum(*choices) if self.allow_none: self._trafaret |= t.Null()
def build_trafaret(self, trafaret, kwargs): if trafaret: if self.column.nullable: trafaret |= t.Null() # accept empty string as None value trafaret |= (t.String(max_length=0, allow_blank=True) >> (lambda x: None)) return trafaret
def test_null(self): res = t.Null() self.assertEqual(repr(res), '<Null>') res = t.Null().check(None) res = extract_error(t.Null(), 1) self.assertEqual(res, 'value should be None')
def test_repr(self): res = t.Null() assert repr(res) == '<Null>'
def test_null(self): res = t.Null().check(None) assert res is None res = extract_error(t.Null(), 1) assert res == 'value should be None'
def __init__(self, **kwargs): super(Boolean, self).__init__(**kwargs) self._trafaret = t.Bool() if self.allow_none: self._trafaret |= t.Null()
def __init__(self, *, allow_blank: bool = False, **kwargs): super(Date, self).__init__(**kwargs) self._trafaret = rfc_3339.Date(allow_blank=allow_blank) if self.allow_none: self._trafaret |= t.Null()
def __init__(self, *, gte=None, lte=None, gt=None, lt=None, **kwargs): super(Decimal, self).__init__(**kwargs) self._trafaret = DecimalTrafaret(gte=gte, lte=lte, gt=gt, lt=lt) if self.allow_none: self._trafaret |= t.Null()
def __init__(self, *, gte=None, lte=None, gt=None, lt=None, **kwargs): super(Integer, self).__init__(**kwargs) self._trafaret = t.Int(gte=gte, lte=lte, gt=gt, lt=lt) if self.allow_none: self._trafaret |= t.Null()
Not, Pattern, unique_strings_list, ensure_list, ) from .decimal import Decimal from .format import format_trafaret __VERSION__ = (0, 2, 1) check_number = t.OnError(t.Float() | Decimal(), 'Not a number') json_schema_type = ( t.Atom('null') & just(t.Null()) | t.Atom('boolean') & just(t.Bool()) | t.Atom('object') & just(t.Type(dict)) | t.Atom('array') & just(t.Type(list)) | t.Atom('number') & just(check_number) | t.Atom('integer') & just(t.Int()) | t.Atom('string') & just(t.String()) ) def multipleOf(multiplier): def check(value): if value % multiplier != 0: return t.DataError('%s is not devisible by %s' % (value, multiplier)) return value return check
CONF_CONST = 'config' TRAFARET = trafaret.Dict({ trafaret.Key('dashboard'): trafaret.Dict({ trafaret.Key('default_state'): trafaret.Dict({ 'forecast_timescale': trafaret.String(), 'forecast_absolute_rate': trafaret.String(), 'forecast_collapse_expand': trafaret.String(), 'forecast_active_tab': trafaret.String(), 'forecast_tab': trafaret.String(), 'decomp_value_volume_price': trafaret.String(), 'd_summary_table_collapsed_expanded': trafaret.String(), 'd_details_table_collapsed_expanded': trafaret.String(), 'd_details_selected_factor': trafaret.Null() }) }), trafaret.Key('scenarios'): trafaret.Dict({ trafaret.Key('scenarios'): trafaret.Dict({ 'work_list_show_limit': trafaret.Int(), 'min_search_input_length': trafaret.Int(), 'sorting_field': trafaret.String(), 'sorting_order': trafaret.Bool(), 'dateformat': trafaret.String() }) }) })