Skip to content

Commit

Permalink
[pre-commit.ci] auto fixes from pre-commit.com hooks
Browse files Browse the repository at this point in the history
for more information, see https://pre-commit.ci
  • Loading branch information
pre-commit-ci[bot] committed Nov 5, 2023
1 parent f53cf31 commit 086df5d
Showing 1 changed file with 66 additions and 40 deletions.
106 changes: 66 additions & 40 deletions get_velocity.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@
from ogr.services.github import GithubProject, GithubIssue


def get_closed_issues(project: GithubProject, tries=10, interval=10) -> List[GithubIssue]:
def get_closed_issues(
project: GithubProject, tries=10, interval=10
) -> List[GithubIssue]:
last_ex = None
for _ in range(tries):
try:
Expand All @@ -26,8 +28,9 @@ def get_closed_issues(project: GithubProject, tries=10, interval=10) -> List[Git
else:
raise last_ex


def is_counted(issue: GithubIssue) -> bool:
if issue._raw_issue.state_reason == 'not_planned':
if issue._raw_issue.state_reason == "not_planned":
return False
if not issue.assignees:
return False
Expand All @@ -40,12 +43,13 @@ def get_week_representation(date_time) -> str:
week_str = f"{year}-{week:02d}"
return week_str

def get_issue_value(issue: GithubIssue, labels: Tuple[str, int], value_without_label = 0):

def get_issue_value(issue: GithubIssue, labels: Tuple[str, int], value_without_label=0):
if not labels:
return 1

issue_labels = [l.name for l in issue.labels]
value : Optional[int] = None
value: Optional[int] = None
for label_name, label_value in labels:
if label_name in issue_labels:
value = label_value
Expand All @@ -57,8 +61,15 @@ def get_issue_value(issue: GithubIssue, labels: Tuple[str, int], value_without_l
return value_without_label


def get_closed_issues_per_week(projects, service, interval=0, labels:Tuple[str,int]=None, value_without_label=0, since :datetime= None):
since = since or (datetime.now() - timedelta(days=365*3))
def get_closed_issues_per_week(
projects,
service,
interval=0,
labels: Tuple[str, int] = None,
value_without_label=0,
since: datetime = None,
):
since = since or (datetime.now() - timedelta(days=365 * 3))
week_numbers = {}
for week in get_week_numbers_since(since):
week_numbers[week] = 0
Expand All @@ -72,7 +83,9 @@ def get_closed_issues_per_week(projects, service, interval=0, labels:Tuple[str,i
continue

week_str = get_week_representation(issue._raw_issue.closed_at)
value = get_issue_value(issue, labels, value_without_label=value_without_label)
value = get_issue_value(
issue, labels, value_without_label=value_without_label
)

if week_str in week_numbers:
week_numbers[week_str] += value
Expand All @@ -83,7 +96,7 @@ def get_closed_issues_per_week(projects, service, interval=0, labels:Tuple[str,i
return week_numbers


def get_week_numbers_since(since:datetime) -> List[str]:
def get_week_numbers_since(since: datetime) -> List[str]:
delta = timedelta(days=7)

current_date = datetime.now()
Expand All @@ -94,53 +107,61 @@ def get_week_numbers_since(since:datetime) -> List[str]:
return week_numbers


DEFAULT_PROJECTS = ['packit/ogr',
'packit/requre',
'packit/specfile',
'packit/packit',
'packit/research',
'packit/weekly-roles',
'packit/tokman',
'packit/wait-for-copr',
'packit/sandcastle',
'packit/packit-service-zuul',
'packit/packit-service-fedmsg',
'packit/packit-service',
'packit/dist-git-to-source-git',
'packit/deployment',
'packit/hardly',
'packit/dashboard',
'packit/packit.dev',
'packit/private',
'packit/packit-service-centosmsg']
DEFAULT_PROJECTS = [
"packit/ogr",
"packit/requre",
"packit/specfile",
"packit/packit",
"packit/research",
"packit/weekly-roles",
"packit/tokman",
"packit/wait-for-copr",
"packit/sandcastle",
"packit/packit-service-zuul",
"packit/packit-service-fedmsg",
"packit/packit-service",
"packit/dist-git-to-source-git",
"packit/deployment",
"packit/hardly",
"packit/dashboard",
"packit/packit.dev",
"packit/private",
"packit/packit-service-centosmsg",
]


@click.command(
help="Get the weekly number of issues closed",
)
@click.option(
"-t", "--token",
"-t",
"--token",
type=click.STRING,
help="GitHub token",
)
@click.option(
"-s", "--since",
"-s",
"--since",
type=click.DateTime(),
help="Datetime to start the statistic.",
)
@click.option(
"-l", "--label",
nargs=2, type=click.Tuple([str, int]), multiple=True,
"-l",
"--label",
nargs=2,
type=click.Tuple([str, int]),
multiple=True,
help="Set values to labeled issues.\n"
"Later definition has priority.\n"
"Other issues not counted if set.\n"
"All returns 1 when not set.\n"
"Later definition has priority.\n"
"Other issues not counted if set.\n"
"All returns 1 when not set.\n",
)
@click.option(
"--value-without-label",
type=click.INT, default=0,
type=click.INT,
default=0,
help="When label option is used,\n"
"this value is used for issues without particular label."
"this value is used for issues without particular label.",
)
@click.argument(
"project",
Expand Down Expand Up @@ -179,12 +200,17 @@ def velocity(token, label, value_without_label, project):
"""
project = project or DEFAULT_PROJECTS

click.echo("Projects:\n" + '\n'.join(f'* {p}' for p in project))
click.echo("Projects:\n" + "\n".join(f"* {p}" for p in project))
if label:
click.echo(f"Labels:\n" + '\n'.join(f'* {l}: {v}' for l, v in label))
click.echo(f"Labels:\n" + "\n".join(f"* {l}: {v}" for l, v in label))

get_closed_issues_per_week(projects=project, service=GithubService(token=token), labels=label, value_without_label=value_without_label)
get_closed_issues_per_week(
projects=project,
service=GithubService(token=token),
labels=label,
value_without_label=value_without_label,
)


if __name__ == "__main__":
velocity(auto_envvar_prefix='TEAM_VELOCITY')
velocity(auto_envvar_prefix="TEAM_VELOCITY")

0 comments on commit 086df5d

Please sign in to comment.