def get_lead_time(release: release.Release, repo: repository.Repository) -> timedelta: if len(repo.get_releases()) == 1: commit_times = [ datetime.timestamp(c.get_date()) - datetime.timestamp(repo.get_creation_time()) for c in repo.get_commits() ] else: releases = repo.get_releases() release_index = None for index, r in enumerate(releases): if r.get_id() == release.get_id(): release_index = index break if release_index != None: if release_index < len(releases) - 1: prev_release = releases[release_index + 1] else: return timedelta(seconds=0) else: return timedelta(seconds=0) commits = get_commits_between_releases(release, prev_release, repo) commit_times = [ datetime.timestamp(c.get_date()) - datetime.timestamp(prev_release.get_creation_time()) for c in commits ] # Stop disvision by zero if len(commit_times) == 0: return timedelta(seconds=sum(commit_times)) return timedelta(seconds=sum(commit_times) / len(commit_times))
def get_commits_between_releases( release: release.Release, last_release: release.Release, repo: repository.Repository) -> [commit.Commit]: commits = [] for c in repo.get_commits(): if (c.get_date() >= last_release.get_creation_time() and c.get_date() <= release.get_creation_time()): commits.append(c) return commits
def test_get_commits(): try: repo = Repository(session, DATA_OBJECT) repo.get_commits() except: pass