diff --git a/CHANGELOG.md b/CHANGELOG.md index 1147122..82e43fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ See [GitHub releases](https://github.com/pyOpenSci/pyosMeta/releases) page for a ## [Unreleased] +## [v1.7.6] - 2025-10-10 +* Bug fix: handle markdown styling in issue template for package submission +* Feature: allow empty reviewers for in issue template for package submission + ## [v1.7.5] - 2025-09-10 * Bug fix: remove an extra newline character that prevents Jekyll from building pages from RSS feed stubs (@banesullivan, #306) diff --git a/src/pyosmeta/cli/update_review_teams.py b/src/pyosmeta/cli/update_review_teams.py index ac65fe4..dac28e7 100644 --- a/src/pyosmeta/cli/update_review_teams.py +++ b/src/pyosmeta/cli/update_review_teams.py @@ -119,6 +119,7 @@ def process_user( f"Error processing new contributor {gh_user}. Skipping this user.", exc_info=True, ) + return user, contribs # Update user the list of contribution types if there are new types to add # for instance a new reviewer would have a "Reviewer" contributor type 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..5695afd 100644 --- a/src/pyosmeta/parse_issues.py +++ b/src/pyosmeta/parse_issues.py @@ -250,7 +250,7 @@ def _parse_field(self, key: str, val: str) -> Any: # add other conditions here for special processing of fields.. # pass else: - return val + return val.strip("*").strip("__") # remove markdown formatting def parse_issue(self, issue: Issue | str) -> ReviewModel: """ @@ -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_clean.py b/src/pyosmeta/utils_clean.py index 2d99769..45b7a19 100644 --- a/src/pyosmeta/utils_clean.py +++ b/src/pyosmeta/utils_clean.py @@ -74,7 +74,7 @@ def clean_date(source_date: str | None) -> datetime | str: def clean_name(source_name: str) -> str: """Remove unwanted characters from a name.""" - unwanted = ["(", ")", "@"] + unwanted = ["(", ")", "@", "*"] for char in unwanted: source_name = source_name.replace(char, "") 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)