Expand source code
def get_rn_from_cache(
rn: str,
mode: Mode | None = None,
key: str | None = None,
sixth_minor: Minor67Default = Minor67Default.CAUTIONARY,
seventh_minor: Minor67Default = Minor67Default.CAUTIONARY,
case_matters: bool = False,
):
assert (mode is None) != (key is None), (
"Either mode or key must be provided, but not both"
)
if key is None:
key = MODE_TO_DEFAULT_KEY[mode]
if (rn, key, sixth_minor, seventh_minor) in RN_CACHE:
return RN_CACHE[(rn, key, sixth_minor, seventh_minor)]
roman = RomanNumeral(
rn,
key,
sixthMinor=sixth_minor,
seventhMinor=seventh_minor,
caseMatters=case_matters,
)
RN_CACHE[(rn, key, sixth_minor, seventh_minor)] = roman
return roman