def _parse_date_time(cls, text, tzinfo=None): if isinstance(text, (datetime, date, real_datetime, real_date)): return datetime_to_timestamp(text) now = datetime.now(tzinfo) if isinstance(text, timedelta): return datetime_to_timestamp(now - text) if is_string(text): if text == 'now': return datetime_to_timestamp(datetime.now(tzinfo)) parts = cls.regex.match(text) if not parts: return parts = parts.groupdict() time_params = {} for (name, param) in parts.items(): if param: time_params[name] = int(param) if 'years' in time_params: if 'days' not in time_params: time_params['days'] = 0 time_params['days'] += 365.24 * time_params.pop('years') return datetime_to_timestamp(now + timedelta(**time_params)) if isinstance(text, int): return datetime_to_timestamp(now + timedelta(text)) raise ValueError("Invalid format for date '{0}'".format(text))
def get_provider_formatters(self, provider, prefix='fake.', with_args=True, with_defaults=True): formatters = {} for name, method in inspect.getmembers(provider, inspect.ismethod): # skip 'private' method and inherited methods if name.startswith('_') or name in self.already_generated: continue arguments = [] if with_args: # retrieve all parameter argspec = inspect.getargspec(method) lst = [x for x in argspec.args if x not in ['self', 'cls']] for i, arg in enumerate(lst): if argspec.defaults and with_defaults: try: default = argspec.defaults[i] if utils.is_string(default): default = utils.quote(default) else: # TODO check default type default = "{0}".format(default) arg = "{0}={1}".format(arg, default) except IndexError: pass arguments.append(arg) if with_args == 'first': break if with_args != 'first': if argspec.varargs: arguments.append('*' + argspec.varargs) if argspec.keywords: arguments.append('**' + argspec.keywords) # build fake method signature signature = "{0}{1}({2})".format(prefix, name, ", ".join(arguments)) # make a fake example example = self.generator.format(name) formatters[signature] = example self.max_name_len = max(self.max_name_len, len(signature)) self.already_generated.append(name) return formatters
def _parse_timedelta(cls, value): if isinstance(value, timedelta): return value.total_seconds() if is_string(value): time_params = cls._parse_date_string(value) return timedelta(**time_params).total_seconds() if isinstance(value, (int, float)): return value raise ParseError("Invalid format for timedelta '{0}'".format(value))
def _parse_date_time(cls, text, tzinfo=None): if isinstance(text, (datetime, date, real_datetime, real_date)): return datetime_to_timestamp(text) now = datetime.now(tzinfo) if isinstance(text, timedelta): return datetime_to_timestamp(now - text) if is_string(text): if text == 'now': return datetime_to_timestamp(datetime.now(tzinfo)) time_params = cls._parse_date_string(text) return datetime_to_timestamp(now + timedelta(**time_params)) if isinstance(text, int): return datetime_to_timestamp(now + timedelta(text)) raise ParseError("Invalid format for date '{0}'".format(text))
def get_provider_formatters(self, provider, prefix='fake.', with_args=True, with_defaults=True): formatters = {} for name, method in inspect.getmembers(provider, inspect.ismethod): # skip 'private' method and inherited methods if name.startswith('_') or name in self.already_generated: continue arguments = [] faker_args = [] faker_kwargs = {} if name == 'binary': faker_kwargs['length'] = 1024 if with_args: # retrieve all parameter argspec = getargspec(method) lst = [x for x in argspec.args if x not in ['self', 'cls']] for i, arg in enumerate(lst): if argspec.defaults and with_defaults: try: default = argspec.defaults[i] if utils.is_string(default): default = utils.quote(default) else: # TODO check default type default = "{0}".format(default) arg = "{0}={1}".format(arg, default) except IndexError: pass arguments.append(arg) if with_args == 'first': break if with_args != 'first': if argspec.varargs: arguments.append('*' + argspec.varargs) if argspec.varkw: arguments.append('**' + argspec.varkw) # build fake method signature signature = "{0}{1}({2})".format(prefix, name, ", ".join(arguments)) # make a fake example example = self.generator.format(name, *faker_args, **faker_kwargs) formatters[signature] = example self.max_name_len = max(self.max_name_len, len(signature)) self.already_generated.append(name) return formatters