From 1cfb6dee41dbd5624146c93f4d66d05873abd058 Mon Sep 17 00:00:00 2001 From: dsmedia <63077097+dsmedia@users.noreply.github.com> Date: Sun, 19 Apr 2026 00:15:02 -0400 Subject: [PATCH] fix: declare pandas as runtime dep of parquet extra MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The ParquetParser unconditionally calls pyarrow.Table.to_pandas() and constructs a TableResource(data=df, format="pandas"), so pandas is required at runtime for any .parquet read. The `parquet` extra only declared pyarrow, so `pip install 'frictionless[parquet]'` in isolation raised ModuleNotFoundError: pandas on first read. Tests never caught this because the hatch default env installs frictionless[...,pandas,parquet,...] together, masking the gap. The proper regression guard is a dedicated CI job that installs only .[parquet] and runs the parquet tests in isolation — out of scope here. - pyproject.toml: add pandas>=1.0 to the parquet extra - CHANGELOG.md: note under [Unreleased] --- CHANGELOG.md | 6 ++++++ pyproject.toml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a1b2c2f34..5ab800f81d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ Here described only the breaking and most significant changes. The full changelog and documentation for all released versions could be found in nicely formatted [commit history](https://github.com/frictionlessdata/frictionless-py/commits/main). +## [Unreleased] + +- fix: declare `pandas` as a runtime dependency of the `parquet` extra — fixes + `ModuleNotFoundError: pandas` when reading `.parquet` files with only + `frictionless[parquet]` installed. + ## v5.19.0 - Deprecation warning for Python 3.8 and 3.9 ahead of future end of support diff --git a/pyproject.toml b/pyproject.toml index 02bcad8eb3..e613aa9e7e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -93,7 +93,7 @@ html = ["pyquery>=1.4"] mysql = ["sqlalchemy>=1.4", "pymysql>=1.0"] ods = ["ezodf>=0.3", "lxml>=4.0"] pandas = ["pyarrow>=14.0", "pandas>=1.0"] -parquet = ["pyarrow>=14.0"] +parquet = ["pyarrow>=14.0", "pandas>=1.0"] postgresql = ["sqlalchemy>=1.4", "psycopg>=3.0", "psycopg2>=2.9"] spss = ["savReaderWriter>=3.0"] sql = ["sqlalchemy>=1.4"]