Source code for radar.__init__

__title__ = 'radar.__init__'
__version__ = '0.3'
__build__ = 0x000003
__author__ = 'Artur Barseghyan'
__all__ = ('random_datetime', 'random_date', 'random_time')

import datetime
from random import randint

try:
    from dateutil.parser import parse
except:
    from radar.utils import parse

from radar.helpers import PYLE26, total_seconds
from radar.utils import gettext as _
from radar.exceptions import InvalidDateRange

[docs]def random_datetime(start=None, stop=None, parse=parse): """ Generates a random ``datetime.datetime`` or ``datetime.date`` object from ranges given. :param mixed start: Can be either a ``datetime.datetime``, ``datetime.date`` or a ``str``. Defaults to 1970-01-01. :param mixed end: Can be either a ``datetime.datetime``, ``datetime.date`` or a ``str``. Defaults to ``datetime.datetime.now``. :param func parse: Parser function used to parse the date formats when ``start`` or ``stop`` arguments are strings. :return datetime.datetime: """ if start is not None: assert isinstance(start, (datetime.datetime, datetime.date, str)) if isinstance(start, str): start = parse(start) else: start = datetime.datetime(year=1979, month=1, day=1) if stop is not None: assert isinstance(stop, (datetime.datetime, datetime.date, str)) if isinstance(stop, str): stop = parse(stop) else: stop = datetime.datetime.now() if start > stop: raise InvalidDateRange(_("Invalid date range: ``start`` should not be greater than ``stop``.")) if PYLE26: random_datetime = start + datetime.timedelta(seconds=randint(0, int(total_seconds(stop - start)))) else: random_datetime = start + datetime.timedelta(seconds=randint(0, int((stop - start).total_seconds()))) return random_datetime
[docs]def random_date(start=None, stop=None, parse=parse): """ Generates a random ``datetime.date`` object from ranges given. :param mixed start: Can be either a ``datetime.datetime``, ``datetime.date`` or a ``str``. Defaults to 1970-01-01. :param mixed end: Can be either a ``datetime.datetime``, ``datetime.date`` or a ``str``. Defaults to ``datetime.datetime.now``. :param func parse: Parser function used to parse the date formats when ``start`` or ``stop`` arguments are strings. :return datetime.date: """ if start is None: start = datetime.date(year=1979, month=1, day=1) if stop is None: stop = datetime.date.today() d = random_datetime(start=start, stop=stop, parse=parse) return d
[docs]def random_time(start=None, stop=None, parse=parse): """ Generates a random ``datetime.time`` object from ranges given. :param mixed start: Can be either a ``datetime.datetime``, ``datetime.date`` or a ``str``. Defaults to 1970-01-01. :param mixed end: Can be either a ``datetime.datetime``, ``datetime.date`` or a ``str``. Defaults to ``datetime.datetime.now``. :param func parse: Parser function used to parse the date formats when ``start`` or ``stop`` arguments are strings. :return datetime.time: """ d = random_datetime(start=start, stop=stop, parse=parse) return d.time()
Read the Docs v: 0.3
Versions
latest
0.3
Downloads
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.