Skip to content

Commit 9c93332

Browse files
authored
Merge pull request #34 from con/updates
Update for Pydantic 2.0 and Pygithub 2.0
2 parents b8ad616 + 4223b31 commit 9c93332

File tree

2 files changed

+16
-18
lines changed

2 files changed

+16
-18
lines changed

setup.cfg

+2-3
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ python_requires = >= 3.10
3737
install_requires =
3838
click >= 8.0
3939
click-loglevel ~= 0.2
40-
pydantic ~= 1.7
41-
PyGithub ~= 1.55
40+
pydantic ~= 2.0
41+
PyGithub ~= 2.0
4242
ruamel.yaml ~= 0.15
4343

4444
[options.packages.find]
@@ -67,4 +67,3 @@ plugins = pydantic.mypy
6767

6868
[pydantic-mypy]
6969
init_forbid_extra = True
70-
warn_untypes_fields = True

src/solidation/__main__.py

+14-15
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,24 @@
77
import os
88
from pathlib import Path
99
from random import sample
10-
from re import Pattern
10+
import re
1111
from statistics import quantiles
12-
from typing import TYPE_CHECKING, Any
12+
from typing import Annotated, Any
1313
from urllib.parse import quote
1414
import click
1515
from click_loglevel import LogLevel
16-
from github import Github
16+
from github import Auth, Github
1717
from github.Issue import Issue
1818
from github.PullRequest import PullRequest
1919
from github.Repository import Repository
20-
from pydantic import BaseModel, Field, StrictBool, constr
20+
from pydantic import BaseModel, Field, StrictBool, StringConstraints
2121
from ruamel.yaml import YAML
2222
from . import __version__
2323

2424
log = logging.getLogger("solidation")
2525

26-
if TYPE_CHECKING:
27-
GHUser = str
28-
GHRepo = str
29-
else:
30-
GHUser = constr(regex=r"^[-_A-Za-z0-9]+$")
31-
GHRepo = constr(regex=r"^[-_A-Za-z0-9]+/[-_.A-Za-z0-9]+$")
26+
GHUser = Annotated[str, StringConstraints(pattern=r"^[-_A-Za-z0-9]+$")]
27+
GHRepo = Annotated[str, StringConstraints(pattern=r"^[-_A-Za-z0-9]+/[-_.A-Za-z0-9]+$")]
3228

3329

3430
class RepoSpec(BaseModel):
@@ -38,7 +34,7 @@ class RepoSpec(BaseModel):
3834

3935
class OrgSpec(BaseModel):
4036
name: GHUser
41-
fetch_members: StrictBool | Pattern = False
37+
fetch_members: StrictBool | re.Pattern[str] = False
4238
member_activity_only: bool = False
4339

4440
def member_fetched(self, user: str) -> bool:
@@ -80,7 +76,7 @@ class Consolidator:
8076
since: datetime = field(init=False)
8177

8278
def __post_init__(self, token: str) -> None:
83-
self.gh = Github(token)
79+
self.gh = Github(auth=Auth.Token(token))
8480
self.since = datetime.now(timezone.utc) - timedelta(
8581
days=self.config.recent_days
8682
)
@@ -339,7 +335,7 @@ def to_markdown(self) -> str:
339335
f" {len(recent_closed_prs)}\n"
340336
)
341337

342-
merged_prs = [i for i in recent_closed_prs if i.merged_at]
338+
merged_prs = [i for i in recent_closed_prs if i.merged_at is not None]
343339
if merged_prs:
344340
for label, attr in (("Proposed", "user"), ("Merged", "merged_by")):
345341
s += (
@@ -350,7 +346,10 @@ def to_markdown(self) -> str:
350346
)
351347
+ "\n"
352348
)
353-
pr_durations = [(i.merged_at - i.created_at).days for i in merged_prs]
349+
pr_durations = []
350+
for pr in merged_prs:
351+
assert pr.merged_at is not None
352+
pr_durations.append((pr.merged_at - pr.created_at).days)
354353
if len(pr_durations) > 1:
355354
s += f"- PR duration quantiles (days): {quantiles(pr_durations)}\n"
356355

@@ -451,7 +450,7 @@ def main(config: Path, log_level: int) -> None:
451450
)
452451
log.info("solidation %s", __version__)
453452
with config.open() as fp:
454-
cfg = Configuration.parse_obj(YAML(typ="safe").load(fp))
453+
cfg = Configuration.model_validate(YAML(typ="safe").load(fp))
455454
cs = Consolidator(token=os.environ["GITHUB_TOKEN"], config=cfg)
456455
report = cs.run()
457456
print(report.to_markdown(), end="")

0 commit comments

Comments
 (0)