This is an automated email from the ASF dual-hosted git repository.
alamb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion-python.git
The following commit(s) were added to refs/heads/main by this push:
new 231ed2b1 Enable doc tests in local and CI testing (#1409)
231ed2b1 is described below
commit 231ed2b1d375fefe9aa01cdc8ae41c620c772f76
Author: Nick <[email protected]>
AuthorDate: Thu Mar 5 10:42:20 2026 -0500
Enable doc tests in local and CI testing (#1409)
* Turn on doctests
* Fix existing doc examples
* Remove stale referenece to rust-toolchain removed in #1383, surpised
pre-commit didn't flag for anyone else
---
.github/workflows/test.yml | 4 ++--
pyproject.toml | 3 +++
python/datafusion/dataframe.py | 14 +++++++++-----
3 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 4cad8db2..69256301 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -62,7 +62,7 @@ jobs:
uses: actions/cache@v5
with:
path: ~/.cargo
- key: cargo-cache-${{ steps.rust-toolchain.outputs.cachekey }}-${{
hashFiles('Cargo.lock') }}
+ key: cargo-cache-${{ matrix.toolchain }}-${{ hashFiles('Cargo.lock')
}}
- name: Install dependencies
uses: astral-sh/setup-uv@v7
@@ -106,7 +106,7 @@ jobs:
RUST_BACKTRACE: 1
run: |
git submodule update --init
- uv run --no-project pytest -v . --import-mode=importlib
+ uv run --no-project pytest -v --import-mode=importlib
- name: FFI unit tests
run: |
diff --git a/pyproject.toml b/pyproject.toml
index 08d64eca..b238e049 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -70,6 +70,9 @@ features = ["substrait"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
+addopts = "--doctest-modules"
+doctest_optionflags = ["NORMALIZE_WHITESPACE", "ELLIPSIS"]
+testpaths = ["python/tests", "python/datafusion"]
# Enable docstring linting using the google style guide
[tool.ruff.lint]
diff --git a/python/datafusion/dataframe.py b/python/datafusion/dataframe.py
index d302c12a..5bd0eec2 100644
--- a/python/datafusion/dataframe.py
+++ b/python/datafusion/dataframe.py
@@ -327,8 +327,9 @@ class DataFrame:
>>> df = ctx.sql("SELECT 1 AS value")
>>> view = df.into_view()
>>> ctx.register_table("values_view", view)
- >>> df.collect() # The DataFrame is still usable
- >>> ctx.sql("SELECT value FROM values_view").collect()
+ >>> result = ctx.sql("SELECT value FROM values_view").collect()
+ >>> result[0].column("value").to_pylist()
+ [1]
"""
from datafusion.catalog import Table as _Table
@@ -1389,9 +1390,12 @@ class DataFrame:
DataFrame with null values replaced where type casting is possible
Examples:
- >>> df = df.fill_null(0) # Fill all nulls with 0 where possible
- >>> # Fill nulls in specific string columns
- >>> df = df.fill_null("missing", subset=["name", "category"])
+ >>> from datafusion import SessionContext, col
+ >>> ctx = SessionContext()
+ >>> df = ctx.from_pydict({"a": [1, None, 3], "b": [None, 5, 6]})
+ >>> filled = df.fill_null(0)
+ >>> filled.sort(col("a")).collect()[0].column("a").to_pylist()
+ [0, 1, 3]
Notes:
- Only fills nulls in columns where the value can be cast to the
column type
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]