diff --git a/src/py/CHANGELOG.txt b/src/py/CHANGELOG.txt index a4ff80ce..39027af5 100644 --- a/src/py/CHANGELOG.txt +++ b/src/py/CHANGELOG.txt @@ -1,3 +1,6 @@ +v1.0.0rc15 +- BUG: Add regex sanitization for auto-filename generation + v1.0.0rc14 - Pass `plotlyjs` option through from Kaleido() to PageGenerator() diff --git a/src/py/kaleido/_fig_tools.py b/src/py/kaleido/_fig_tools.py index 84e5daa5..776f8065 100644 --- a/src/py/kaleido/_fig_tools.py +++ b/src/py/kaleido/_fig_tools.py @@ -1,3 +1,4 @@ +import glob import re from pathlib import Path @@ -91,10 +92,14 @@ def to_spec(figure, layout_opts): def _next_filename(path, prefix, ext): default = 1 if (path / f"{prefix}.{ext}").exists() else 0 - re_number = re.compile(r"^" + prefix + r"-(\d+)\." + ext + r"$") + re_number = re.compile( + r"^" + re.escape(prefix) + r"\-(\d+)\." + re.escape(ext) + r"$", + ) + escaped_prefix = glob.escape(prefix) + escaped_ext = glob.escape(ext) numbers = [ int(match.group(1)) - for name in path.glob(f"{prefix}-*.{ext}") + for name in path.glob(f"{escaped_prefix}-*.{escaped_ext}") if (match := re_number.match(Path(name).name)) ] n = max(numbers, default=default) + 1