def get_changesets(self, repo, **options): if options.get('start_date'): options['start_date'] = parse_datetime(options['start_date']) if options.get('end_date'): options['end_date'] = parse_datetime(options['end_date']) changesets = repo.get_changesets( start=options.get('start'), end=options.get('end', options.get('main')), start_date=options.get('start_date'), end_date=options.get('end_date'), branch_name=options.get('all') and None or options.get('branch') or repo.workdir.get_branch(), reverse=not options.get('reversed', False), ) try: limit = int(options.get('limit')) except (ValueError, TypeError): limit = None count = 0 for changeset in changesets: if self.show_changeset(changeset, **options): yield changeset count += 1 if count == limit: break
def test_mixed(self): timestamp = datetime.datetime.today() - datetime.timedelta(days=2 * 7 + 3) args = timestamp.timetuple()[:3] + (0, 0, 0, 0) expected = datetime.datetime(*args) self.assertEqual(parse_datetime('2w3d'), expected) self.assertEqual(parse_datetime('2w 3d'), expected) self.assertEqual(parse_datetime('2w 3 days'), expected) self.assertEqual(parse_datetime('2 weeks 3 days'), expected)
def test_weeks(self): timestamp = datetime.datetime.today() - datetime.timedelta(days=3 * 7) args = timestamp.timetuple()[:3] + (0, 0, 0, 0) expected = datetime.datetime(*args) self.assertEqual(parse_datetime('3w'), expected) self.assertEqual(parse_datetime('3 w'), expected) self.assertEqual(parse_datetime('3 week'), expected) self.assertEqual(parse_datetime('3 weeks'), expected)
def get_changesets(self, repo, **options): """ Returns generator of changesets from given ``repo`` for given ``options``. :param repo: repository instance. Same as ``self.repo``. **Available options** * ``start_date``: only changesets not older than this parameter would be generated * ``end_date``: only changesets not younger than this parameter would be generated * ``start``: changeset's ID from which changesets would be generated * ``end``: changeset's ID to which changesets would be generated * ``branch``: branch for which changesets would be generated. If ``all`` flag is specified, this option would be ignored. By default, branch would by tried to retrieved from working directory. * ``all``: return changesets from all branches * ``reversed``: by default changesets are returned in date order. If this flag is set to ``True``, reverse order would be applied. * ``limit``: if specified, show no more changesets than this value. Default is ``None``. """ branch_name = None if not options.get('all', None): branch_name = options.get('branch') or repo.workdir.get_branch() if options.get('start_date'): options['start_date'] = parse_datetime(options['start_date']) if options.get('end_date'): options['end_date'] = parse_datetime(options['end_date']) changesets = repo.get_changesets( start=options.get('start'), end=options.get('end', options.get('main')), start_date=options.get('start_date'), end_date=options.get('end_date'), branch_name=branch_name, reverse=not options.get('reversed', False), ) try: limit = int(options.get('limit')) except (ValueError, TypeError): limit = None count = 0 for changeset in changesets: if self.show_changeset(changeset, **options): yield changeset count += 1 if count == limit: break
def get_changesets(self, repo, **options): """ Returns generator of changesets from given ``repo`` for given ``options``. :param repo: repository instance. Same as ``self.repo``. **Available options** * ``start_date``: only changesets not older than this parameter would be generated * ``end_date``: only changesets not younger than this parameter would be generated * ``start``: changeset's ID from which changesets would be generated * ``end``: changeset's ID to which changesets would be generated * ``branch``: branch for which changesets would be generated. If ``all`` flag is specified, this option would be ignored. By default, branch would by tried to retrieved from working directory. * ``all``: return changesets from all branches * ``reversed``: by default changesets are returned in date order. If this flag is set to ``True``, reverse order would be applied. * ``limit``: if specified, show no more changesets than this value. Default is ``None``. """ branch_name = None if not options['all']: branch_name = options.get('branch') or repo.workdir.get_branch() if options.get('start_date'): options['start_date'] = parse_datetime(options['start_date']) if options.get('end_date'): options['end_date'] = parse_datetime(options['end_date']) changesets = repo.get_changesets( start=options.get('start'), end=options.get('end', options.get('main')), start_date=options.get('start_date'), end_date=options.get('end_date'), branch_name=branch_name, reverse=not options.get('reversed', False), ) try: limit = int(options.get('limit')) except (ValueError, TypeError): limit = None count = 0 for changeset in changesets: if self.show_changeset(changeset, **options): yield changeset count += 1 if count == limit: break
def test_tomorrow(self): tomorrow = datetime.date.today() + datetime.timedelta(days=1) args = tomorrow.timetuple()[:3] + (23, 59, 59) self.assertEqual(parse_datetime('tomorrow'), datetime.datetime(*args))
def test_yesterday(self): yesterday = datetime.date.today() - datetime.timedelta(days=1) self.assertEqual(parse_datetime('yesterday'), datetime.datetime(*yesterday.timetuple()[:3]))
def test_today(self): today = datetime.date.today() self.assertEqual(parse_datetime('today'), datetime.datetime(*today.timetuple()[:3]))
def test_now(self): self.assertTrue( parse_datetime('now') - datetime.datetime.now() < datetime.timedelta(seconds=1))
def test_another_format(self): self.assertEqual(parse_datetime('04/07/10 21:29:41'), datetime.datetime(2010, 4, 7, 21, 29, 41))
def test_date_only(self): self.assertEqual(parse_datetime('2010-04-07'), datetime.datetime(2010, 4, 7))
def test_datetime_text(self): self.assertEqual(parse_datetime('2010-04-07 21:29:41'), datetime.datetime(2010, 4, 7, 21, 29, 41))
def test_no_seconds(self): self.assertEqual(parse_datetime('2010-04-07 21:29'), datetime.datetime(2010, 4, 7, 21, 29))
def test_now(self): self.assertTrue(parse_datetime('now') - datetime.datetime.now() < datetime.timedelta(seconds=1))