From 72b0c4143e385309a968cf2e7b8df60c20f35e9f Mon Sep 17 00:00:00 2001 From: mrinalcodez Date: Sat, 15 Nov 2025 05:50:32 +0530 Subject: [PATCH 1/2] 2.3.x --- pandas/io/formats/css.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/pandas/io/formats/css.py b/pandas/io/formats/css.py index 0f1a7302aa808..35eb045869326 100644 --- a/pandas/io/formats/css.py +++ b/pandas/io/formats/css.py @@ -19,6 +19,16 @@ Iterator, ) +def _lowercase_outside_quotes(value: str) -> str: + parts = re.split(r'(".*?")', value) + new_parts = [] + for part in parts: + if part.startswith('"') and part.endswith('"'): + new_parts.append(part) # preserve case + else: + new_parts.append(part.lower()) + return ''.join(new_parts) + def _side_expander(prop_fmt: str) -> Callable: """ @@ -391,7 +401,7 @@ def _error() -> str: def atomize(self, declarations: Iterable) -> Generator[tuple[str, str]]: for prop, value in declarations: prop = prop.lower() - value = value.lower() + value = _lowercase_outside_quotes(value) if prop in self.CSS_EXPANSIONS: expand = self.CSS_EXPANSIONS[prop] yield from expand(self, prop, value) @@ -414,7 +424,8 @@ def parse(self, declarations_str: str) -> Iterator[tuple[str, str]]: prop, sep, val = decl.partition(":") prop = prop.strip().lower() # TODO: don't lowercase case sensitive parts of values (strings) - val = val.strip().lower() + raw_val = val.strip() + val = _lowercase_outside_quotes(raw_val) if sep: yield prop, val else: From c106c5bef2352eb666bd872b3e34fd19d4b0ab77 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 15 Nov 2025 16:20:32 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pandas/io/formats/css.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pandas/io/formats/css.py b/pandas/io/formats/css.py index 35eb045869326..4a6c2e36156f6 100644 --- a/pandas/io/formats/css.py +++ b/pandas/io/formats/css.py @@ -19,6 +19,7 @@ Iterator, ) + def _lowercase_outside_quotes(value: str) -> str: parts = re.split(r'(".*?")', value) new_parts = [] @@ -27,7 +28,7 @@ def _lowercase_outside_quotes(value: str) -> str: new_parts.append(part) # preserve case else: new_parts.append(part.lower()) - return ''.join(new_parts) + return "".join(new_parts) def _side_expander(prop_fmt: str) -> Callable: