From a58b034cea00333711f8fc3e53c2cacffe7a43ea Mon Sep 17 00:00:00 2001 From: = Date: Sat, 17 Dec 2022 21:02:22 +0000 Subject: [PATCH 1/4] Change placeholder character to control character --- skops/card/_model_card.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skops/card/_model_card.py b/skops/card/_model_card.py index 2adafa62..e4b01d2d 100644 --- a/skops/card/_model_card.py +++ b/skops/card/_model_card.py @@ -41,7 +41,7 @@ def _clean_table(table: str) -> str: # replace line breaks "\n" with html tag
, however, leave end-of-line # line breaks (eol_lb) intact eol_lb = "|\n" - placeholder = "$%!?" # arbitrary string that never appears naturally + placeholder = "\x1f" # unit separator control character table = ( table.replace(eol_lb, placeholder) .replace("\n", "
") @@ -195,7 +195,7 @@ def split_subsection_names(key: str) -> list[str]: The individual (sub)sections. """ - placeholder = "$%!?" # arbitrary sting that never appears naturally + placeholder = "\x1f" # unit separator control character key = key.replace("\\/", placeholder) parts = (part.strip() for part in key.split("/")) return [part.replace(placeholder, "/") for part in parts] From 68daa270c03a2a3f03c9712f260e9290e05c1a09 Mon Sep 17 00:00:00 2001 From: = Date: Mon, 19 Dec 2022 10:39:38 +0000 Subject: [PATCH 2/4] Change to using curses instead of hard coded control character --- skops/card/_model_card.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/skops/card/_model_card.py b/skops/card/_model_card.py index e4b01d2d..efdd28ec 100644 --- a/skops/card/_model_card.py +++ b/skops/card/_model_card.py @@ -5,6 +5,7 @@ import textwrap import zipfile from collections.abc import Mapping +from curses import ascii from dataclasses import dataclass, field from pathlib import Path from reprlib import Repr @@ -41,7 +42,7 @@ def _clean_table(table: str) -> str: # replace line breaks "\n" with html tag
, however, leave end-of-line # line breaks (eol_lb) intact eol_lb = "|\n" - placeholder = "\x1f" # unit separator control character + placeholder = chr(ascii.US) # unit separator control character, \x1f table = ( table.replace(eol_lb, placeholder) .replace("\n", "
") @@ -195,7 +196,7 @@ def split_subsection_names(key: str) -> list[str]: The individual (sub)sections. """ - placeholder = "\x1f" # unit separator control character + placeholder = chr(ascii.US) # unit separator control character, \x1f key = key.replace("\\/", placeholder) parts = (part.strip() for part in key.split("/")) return [part.replace(placeholder, "/") for part in parts] From 084309e4813db39a0806b5d36e28acb2567b6ddc Mon Sep 17 00:00:00 2001 From: = Date: Mon, 19 Dec 2022 10:44:41 +0000 Subject: [PATCH 3/4] Remove curses code --- skops/card/_model_card.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/skops/card/_model_card.py b/skops/card/_model_card.py index efdd28ec..e4b01d2d 100644 --- a/skops/card/_model_card.py +++ b/skops/card/_model_card.py @@ -5,7 +5,6 @@ import textwrap import zipfile from collections.abc import Mapping -from curses import ascii from dataclasses import dataclass, field from pathlib import Path from reprlib import Repr @@ -42,7 +41,7 @@ def _clean_table(table: str) -> str: # replace line breaks "\n" with html tag
, however, leave end-of-line # line breaks (eol_lb) intact eol_lb = "|\n" - placeholder = chr(ascii.US) # unit separator control character, \x1f + placeholder = "\x1f" # unit separator control character table = ( table.replace(eol_lb, placeholder) .replace("\n", "
") @@ -196,7 +195,7 @@ def split_subsection_names(key: str) -> list[str]: The individual (sub)sections. """ - placeholder = chr(ascii.US) # unit separator control character, \x1f + placeholder = "\x1f" # unit separator control character key = key.replace("\\/", placeholder) parts = (part.strip() for part in key.split("/")) return [part.replace(placeholder, "/") for part in parts] From 5716a2d659c7e4a236bca8f8ff1bc60d83965e68 Mon Sep 17 00:00:00 2001 From: = Date: Mon, 19 Dec 2022 10:53:04 +0000 Subject: [PATCH 4/4] Update coments for ascii control chars --- skops/card/_model_card.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skops/card/_model_card.py b/skops/card/_model_card.py index e4b01d2d..74fa377a 100644 --- a/skops/card/_model_card.py +++ b/skops/card/_model_card.py @@ -41,7 +41,7 @@ def _clean_table(table: str) -> str: # replace line breaks "\n" with html tag
, however, leave end-of-line # line breaks (eol_lb) intact eol_lb = "|\n" - placeholder = "\x1f" # unit separator control character + placeholder = "\x1f" # unit separator control character (ASCII control char 31) table = ( table.replace(eol_lb, placeholder) .replace("\n", "
") @@ -195,7 +195,7 @@ def split_subsection_names(key: str) -> list[str]: The individual (sub)sections. """ - placeholder = "\x1f" # unit separator control character + placeholder = "\x1f" # unit separator control character (ASCII control char 31) key = key.replace("\\/", placeholder) parts = (part.strip() for part in key.split("/")) return [part.replace(placeholder, "/") for part in parts]