diff --git a/.gitignore b/.gitignore index 2d2cfe2b9..71fb75bd1 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ var/ *.egg-info/ .installed.cfg *.egg +uv.lock # PyInstaller # Usually these files are written by a python script from a template @@ -85,3 +86,6 @@ docsrc/source/pages/api/_autosummary/ # User created VERSION version.py + +# local java/spark sdk environment files +.sdkmanrc diff --git a/pyproject.toml b/pyproject.toml index eae6b3dd4..e46cb237c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -87,6 +87,7 @@ dev = [ "sphinx-autodoc-typehints>=1.10.3", "sphinx-multiversion>=0.2.3", "autodoc_pydantic", + "standard-imghdr" ] docs = [ diff --git a/src/ydata_profiling/report/formatters.py b/src/ydata_profiling/report/formatters.py index d2c4657e0..199ea854d 100644 --- a/src/ydata_profiling/report/formatters.py +++ b/src/ydata_profiling/report/formatters.py @@ -245,13 +245,16 @@ def fmt_numeric(value: float, precision: int = 10) -> str: Returns: The numeric value with the given precision. """ - fmtted = f"{{:.{precision}g}}".format(value) - for v in ["e+", "e-"]: - if v in fmtted: - sign = "-" if v in "e-" else "" - fmtted = fmtted.replace(v, " × 10") + "" - fmtted = fmtted.replace("0", "") - fmtted = fmtted.replace("", f"{sign}") + if value is None: + fmtted = "N/A" + else: + fmtted = f"{{:.{precision}g}}".format(value) + for v in ["e+", "e-"]: + if v in fmtted: + sign = "-" if v in "e-" else "" + fmtted = fmtted.replace(v, " × 10") + "" + fmtted = fmtted.replace("0", "") + fmtted = fmtted.replace("", f"{sign}") return fmtted diff --git a/tests/unit/test_formatters.py b/tests/unit/test_formatters.py index 156cc4385..f49e693d8 100644 --- a/tests/unit/test_formatters.py +++ b/tests/unit/test_formatters.py @@ -83,6 +83,7 @@ def test_fmt_array(array, threshold, expected): (1e20, 10, "1 × 1020"), (1e-20, 10, "1 × 10-20"), (1e8, 3, "1 × 108"), + (None, 3, "N/A"), ], ) def test_fmt_numeric(value, precision, expected):