Repository navigation
Remove required Polars dependency and default to pandas (3.0.0) - #89
Merged
Merged
Conversation
Coverage Report for CI Build 37486959393Coverage increased (+0.3%) to 97.011%Details
Uncovered ChangesNo uncovered changes found. Coverage Regressions5 previously-covered lines in 2 files lost coverage.
Coverage Stats
💛 - Coveralls |
Contributor
Author
|
Released gtfparse 3.0.0: https://pypi.org/project/gtfparse/3.0.0/
Published SHA-256:
Next-work review (recommendations only; no unrelated implementation started):
The final release checklist is recorded here as anticipated in |
This was referenced Oct 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
gtfparse currently requires Polars for every import, read, and write, while its transformations already use pandas. Version 3.0.0 reads fixed GTF columns with typed PyArrow CSV, processes attributes and writes bounded batches with pandas, and returns pandas by default. Installing ordinary gtfparse no longer installs or imports Polars. Explicit
result_type="polars", the legacy lazy adapter, and writing existing Polars frames remain supported throughgtfparse[polars].This is a major release: callers using the old default should request Polars explicitly and install the extra, or use pandas methods. Lower-level
parse_gtf/parse_gtf_and_expand_attributesalso return pandas. Empty/malformed fields raise the package'sParsingError. The README documents migration and retains progress, converters, aliases, biotype inference, raw attributes, version casts and dictionary output.The reader handles whole-line comments without truncating literal
#, UTF-8 BOM, text/binary/non-seekable streams, content-detected gzip, exact field counts, declared numeric types and filtering before pandas conversion. It does not alter global Polars string-cache state. The optional legacy Polars join test can emit its native categorical-remapping warning.Dependency validation also reproduced pandas 2.1.0's NumPy 2 ABI failure (#87); raise the pandas floor to 2.2.2 and exercise it with NumPy 2, rather than a CI-only NumPy 1 restriction. Archive validation reproduced mismatched Python/pytest environments (#88);
test.shnow launchespython -m pytestusing the interpreter used for xdist detection. Minimum and no-Polars jobs derive dependency floors from installed metadata.CI rerun validation exposed a reused, already-closed Coveralls parallel report (#90). Set the workflow-wide
COVERALLS_SERVICE_NUMBERtogithub.run_idplusgithub.run_attemptso uploads and finalization share a unique report per attempt. Preserve all matrix flags and aggregation.Validation:
./lint.shand./test.sh -W error::DeprecationWarningpass: 172 tests with current optional Polars, 97% coverage.benchmarks/results.jsoncontains 122 fresh-process records, corpus hashes, versions, stage medians and ranges. Three-run 250k-row Ensembl/GENCODE plain/gzip medians show 1.10–1.20x total time and about 1.03–1.10x peak RSS. A single full 4,119,244-row GENCODE check matches all columns: 38.88s/6189 MiB old versus 45.40s/5348 MiB new. The full pair checks scaling, not stable throughput. Complete load meets Evaluate migration from polars to pyarrow + pandas (with measurement plan) #69's 1.5x criterion; differing read-stage conversion work does not establish its 3x raw-CSV target. The user requested the dependency removal after considering the pandas default/optional Polars policy.Fixes #69
Fixes #85
Fixes #87
Fixes #88
Fixes #90
Related downstream conversion issue: openvax/pyensembl#423 (already resolved; requests pandas explicitly). After merge, deploy with
./deploy.shfrom clean master and verify both published distributions and a fresh base installation.