Skip to content

Commit fb25c86

Browse files
committed
fix: support non-string bug objects
1 parent 77f67a0 commit fb25c86

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

hatch_nodejs_version/metadata_source.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
from __future__ import annotations
55

66
import json
7-
import re
87
import os.path
8+
import re
99
import urllib.parse
10+
from typing import Any
1011

1112
from hatchling.metadata.plugin.interface import MetadataHookInterface
1213

13-
1414
AUTHOR_PATTERN = r"^([^<(]+?)?[ \t]*(?:<([^>(]+?)>)?[ \t]*(?:\(([^)]+?)\)|$)"
1515
REPOSITORY_PATTERN = r"^(?:(gist|bitbucket|gitlab|github):)?(.*?)$"
1616
REPOSITORY_TABLE = {
@@ -52,6 +52,15 @@ def load_package_data(self):
5252
with open(path, "r", encoding="utf-8") as f:
5353
return json.load(f)
5454

55+
def _parse_bugs(self, bugs: str | dict[str, str]) -> str | None:
56+
if isinstance(bugs, str):
57+
return bugs
58+
59+
if "url" not in bugs:
60+
return None
61+
62+
return bugs["url"]
63+
5564
def _parse_person(self, person: dict[str, str]) -> dict[str, str]:
5665
if {"url", "email"} & person.keys():
5766
result = {"name": person["name"]}
@@ -74,7 +83,7 @@ def _parse_repository(self, repository: str | dict[str, str]) -> str:
7483

7584
return repository["url"]
7685

77-
def update(self, metadata):
86+
def update(self, metadata: dict[str, Any]):
7887
package = self.load_package_data()
7988

8089
if "author" in package:
@@ -99,7 +108,9 @@ def update(self, metadata):
99108
if "homepage" in package:
100109
urls["homepage"] = package["homepage"]
101110
if "bugs" in package:
102-
urls["bug tracker"] = package["bugs"]
111+
bugs_url = self._parse_bugs(package["bugs"])
112+
if bugs_url is not None:
113+
urls["bug tracker"] = bugs_url
103114
if "repository" in package:
104115
urls["repository"] = self._parse_repository(package["repository"])
105116

tests/conftest.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ def create_project(directory, metadata, version):
5555
package = f"""
5656
{{
5757
"name": "my-awesome-package",
58-
"version": "{version}"
58+
"version": "{version}",
59+
5960
}}
6061
"""
6162
create_file(package_file, package)

0 commit comments

Comments
 (0)