예제 #1
0
    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))
예제 #2
0
파일: documentor.py 프로젝트: 4sp1r3/faker
    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
예제 #3
0
 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))
예제 #4
0
 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))
예제 #5
0
 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))
예제 #6
0
 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))
예제 #7
0
    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