Skip to content

Clean up release-gate warnings: pandas compatibility, deprecated test calls and unasserted diagnostics #432

Closed

Description

@iskandr

Topiary 5.86.1's clean-master release gate passed all 4,746 tests with zero skips, but emitted 82 warnings. This is a separate cleanup problem from test failures.

Count Source
31 pandas FutureWarnings: 12 index-inference warnings in topiary/ranking/nodes.py, two concatenation warnings in topiary/result.py and topiary/predictor.py, and 17 warnings in test construction/assertions
13 gtfparse/read_gtf.py calls Polars' deprecated enable_string_cache()
12 _TaggedRandomPredictor in tests/test_cached_predictor.py calls deprecated predict_peptides_dataframe()
21 Deliberately mixed predictor versions in consumer workflow tests emit Topiary provenance diagnostics
5 DSL tests emit diagnostics for an unpopulated score scope, allele-keyed peptide-level scores, or single-allele presentation aggregation

The pandas warnings describe future changes to dtype inference, concatenation with all-null columns and equality of None/NaN. Four production locations are involved (ranking/nodes.py:1295, ranking/nodes.py:1396, result.py:631, predictor.py:1049); the warnings should not be dismissed as test-only noise.

Suggested scope:

  • Make the intended pandas behavior explicit while preserving null-group and heterogeneous-source results; verify the composed workflows, not only helper output.
  • Update the predictor test double to the current API, or explicitly assert a deprecation only where the test deliberately exercises compatibility behavior.
  • Assert expected Topiary diagnostics with pytest.warns, including relevant messages, so unexpected warnings remain visible.
  • Track the GTFParse/Polars dependency warning without changing sibling repositories as part of this Topiary task. Avoid broad warning suppression.
  • Re-run the full release gate and report any remaining warnings by cause.

Observed on merge 595697f29821b6f328c98ccc5bce79b9885ceed5 (v5.86.1), Python 3.12. This inventory describes warning emissions, not 82 distinct defects or 82 failed tests.

Pandas portion shipped in 5.86.2

Resolved by #433, merged as 856fb6f4c11e3aab4549f3e0038da624a0254a27 and published at https://pypi.org/project/topiary/5.86.2/. PR and master CI are green. The release gate passed 4,773 tests with zero failures/skips, 94% coverage, and no pandas FutureWarnings or PerformanceWarnings. FutureWarnings now fail the suite.

The final release gate emitted 39 non-pandas warnings:

Count Remaining source
16 GTFParse/Polars deprecated string-cache call
12 Deprecated predictor method in the cached-predictor test double
6 Deliberate mixed-version diagnostics in other consumer tests
5 Deliberate DSL diagnostics

Counts depend on worker scheduling and data-cache use (the pre-merge full run had 40). This issue remains open for those remaining categories. Expected version warnings in the expanded pandas round-trip regression are now asserted explicitly.

Remaining warning cleanup shipped in 5.88.1

Resolved by #440, merged as b8e9cad100e5ce6a44732eb41106764209b8c7d8 and published at https://pypi.org/project/topiary/5.88.1/. PR and master CI are green, and the release tag points to that merge commit. Both PyPI artifact hashes match the local release build.

The final clean-master deploy.sh gate passed 4,864 tests with zero failures, zero skips, and zero warnings, with 94% coverage. It used one worker and about 4 GiB observed combined memory. Unexpected warnings now fail the suite; intentional scientific diagnostics are asserted explicitly.

The cache uses the current predictor DataFrame API while retaining legacy-only fallback support. GTFParse >=2.8.1 supplies the Polars deprecation fix; mhctools >=3.45.1 supplies the predictor log-handle cleanup (openvax/mhctools#478). A leaked test input handle is also closed explicitly.

The separate optional TensorFlow Lite fallback warning observed in the mhctools release environment is tracked in openvax/mhctools#479. It is not a remaining Topiary warning.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions