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):