diff --git a/src/pyosmeta/models/base.py b/src/pyosmeta/models/base.py index 374b0e6..64356a4 100644 --- a/src/pyosmeta/models/base.py +++ b/src/pyosmeta/models/base.py @@ -256,7 +256,7 @@ class ReviewModel(BaseModel): categories: Optional[list[str]] = None editor: ReviewUser | list[ReviewUser] | None = None eic: ReviewUser | list[ReviewUser] | None = None - reviewers: list[ReviewUser] = Field(default_factory=list) + reviewers: list[ReviewUser] | None = None archive: str | None = None version_accepted: str | None = None date_accepted: str | None = Field( diff --git a/src/pyosmeta/parse_issues.py b/src/pyosmeta/parse_issues.py index 77f4a9b..b0464b1 100644 --- a/src/pyosmeta/parse_issues.py +++ b/src/pyosmeta/parse_issues.py @@ -340,7 +340,7 @@ def parse_issues( def get_contributor_data( self, line: str - ) -> Union[ReviewUser, List[ReviewUser]]: + ) -> Union[ReviewUser, List[ReviewUser], None]: """Parse names for various review roles from issue metadata. Parameters @@ -358,6 +358,8 @@ def get_contributor_data( users = line.split(",") models = [parse_user_names(username=user) for user in users] models = [model for model in models if model is not None] + if len(models) == 0: + return None if len(models) == 1: models = models[0] return models diff --git a/src/pyosmeta/utils_parse.py b/src/pyosmeta/utils_parse.py index b3b0eb5..43d8ee5 100644 --- a/src/pyosmeta/utils_parse.py +++ b/src/pyosmeta/utils_parse.py @@ -45,5 +45,6 @@ def parse_user_names(username: str) -> ReviewUser | None: "github_username": clean_name(names[0]), "name": "", } - + if (parsed["github_username"] == "") and (parsed["name"] == ""): + return None return ReviewUser(**parsed)