chore(codebase): format and check code
This commit is contained in:
@@ -37,8 +37,7 @@ def _req_text(parent: ET.Element, path: str) -> str:
|
||||
|
||||
|
||||
def parse_marc_record(record_el: ET.Element) -> MarcRecord:
|
||||
"""record_el is the <marc:record> element (default ns MARC in your sample)
|
||||
"""
|
||||
"""record_el is the <marc:record> element (default ns MARC in your sample)"""
|
||||
# leader
|
||||
leader_text = _req_text(record_el, "marc:leader")
|
||||
|
||||
@@ -61,7 +60,9 @@ def parse_marc_record(record_el: ET.Element) -> MarcRecord:
|
||||
datafields.append(DataField(tag=tag, ind1=ind1, ind2=ind2, subfields=subfields))
|
||||
|
||||
return MarcRecord(
|
||||
leader=leader_text, controlfields=controlfields, datafields=datafields,
|
||||
leader=leader_text,
|
||||
controlfields=controlfields,
|
||||
datafields=datafields,
|
||||
)
|
||||
|
||||
|
||||
@@ -245,7 +246,9 @@ def find_datafields_with_subfields(
|
||||
|
||||
|
||||
def controlfield_value(
|
||||
rec: MarcRecord, tag: str, default: str | None = None,
|
||||
rec: MarcRecord,
|
||||
tag: str,
|
||||
default: str | None = None,
|
||||
) -> str | None:
|
||||
"""Get the first controlfield value by tag (e.g., '001', '005')."""
|
||||
for cf in rec.controlfields:
|
||||
@@ -255,7 +258,9 @@ def controlfield_value(
|
||||
|
||||
|
||||
def datafields_value(
|
||||
data: list[DataField], code: str, default: str | None = None,
|
||||
data: list[DataField],
|
||||
code: str,
|
||||
default: str | None = None,
|
||||
) -> str | None:
|
||||
"""Get the first value for a specific subfield code in a list of datafields."""
|
||||
for df in data:
|
||||
@@ -266,7 +271,9 @@ def datafields_value(
|
||||
|
||||
|
||||
def datafield_value(
|
||||
df: DataField, code: str, default: str | None = None,
|
||||
df: DataField,
|
||||
code: str,
|
||||
default: str | None = None,
|
||||
) -> str | None:
|
||||
"""Get the first value for a specific subfield code in a datafield."""
|
||||
for sf in df.subfields:
|
||||
@@ -337,13 +344,17 @@ def book_from_marc(rec: MarcRecord, library_identifier: str) -> BookData:
|
||||
|
||||
# Signature = 924 where $9 == "Frei 129" → take that field's $g
|
||||
frei_fields = find_datafields_with_subfields(
|
||||
rec, "924", where_all={"9": "Frei 129"},
|
||||
rec,
|
||||
"924",
|
||||
where_all={"9": "Frei 129"},
|
||||
)
|
||||
signature = first_subfield_value_from_fields(frei_fields, "g")
|
||||
|
||||
# Year = 264 $c (prefer ind2="1" publication; fallback to any 264)
|
||||
year = first_subfield_value(rec, "264", "c", ind2="1") or first_subfield_value(
|
||||
rec, "264", "c",
|
||||
rec,
|
||||
"264",
|
||||
"c",
|
||||
)
|
||||
isbn = subfield_values(rec, "020", "a")
|
||||
mediatype = first_subfield_value(rec, "338", "a")
|
||||
@@ -375,7 +386,8 @@ RVK_ALLOWED = r"[A-Z0-9.\-\/]" # conservative char set typically seen in RVK no
|
||||
|
||||
|
||||
def find_newer_edition(
|
||||
swb_result: BookData, dnb_result: list[BookData],
|
||||
swb_result: BookData,
|
||||
dnb_result: list[BookData],
|
||||
) -> list[BookData] | None:
|
||||
"""New edition if:
|
||||
- year > swb.year OR
|
||||
@@ -500,7 +512,8 @@ class QueryTransformer:
|
||||
value = value.replace(", ", ",")
|
||||
value = value.replace(" ", " ")
|
||||
if key.upper() == "TITLE" and hasattr(
|
||||
schema, "ENCLOSE_TITLE_IN_QUOTES",
|
||||
schema,
|
||||
"ENCLOSE_TITLE_IN_QUOTES",
|
||||
):
|
||||
if schema.ENCLOSE_TITLE_IN_QUOTES:
|
||||
value = f'"{value}"'
|
||||
@@ -562,7 +575,8 @@ class Api:
|
||||
if not any(qa.startswith(na + "=") for na in self.notsupported_args)
|
||||
]
|
||||
query_args = QueryTransformer(
|
||||
api_schema=self.prefix, arguments=query_args,
|
||||
api_schema=self.prefix,
|
||||
arguments=query_args,
|
||||
).transform()
|
||||
query = "+and+".join(query_args)
|
||||
for old, new in self.replace.items():
|
||||
@@ -592,11 +606,14 @@ class Api:
|
||||
try:
|
||||
# Per-attempt read timeout capped at remaining overall budget (but at most 30s)
|
||||
remaining = max(
|
||||
0.0, self._overall_timeout_seconds - (time.monotonic() - start_time),
|
||||
0.0,
|
||||
self._overall_timeout_seconds - (time.monotonic() - start_time),
|
||||
)
|
||||
read_timeout = min(30.0, remaining if remaining > 0 else 0.001)
|
||||
resp = self._session.get(
|
||||
url, headers=headers, timeout=(3.05, read_timeout),
|
||||
url,
|
||||
headers=headers,
|
||||
timeout=(3.05, read_timeout),
|
||||
)
|
||||
self._last_request_time = time.monotonic()
|
||||
if resp.status_code == 200:
|
||||
|
||||
Reference in New Issue
Block a user