Skip to content

Deprecate windowslinetermination CSV option - #23363

Open
utkarshparekh wants to merge 9 commits into
NVIDIA:mainfrom
utkarshparekh:deprecate-windows-line-termination
Open

Deprecate windowslinetermination CSV option#23363
utkarshparekh wants to merge 9 commits into
NVIDIA:mainfrom
utkarshparekh:deprecate-windows-line-termination

Conversation

@utkarshparekh

@utkarshparekh utkarshparekh commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Description

Deprecates the unused libcudf windowslinetermination CSV reader option. The option is stored in csv_reader_options but is not used by the CSV reader.

This change:

  • Marks the getter, setter, and builder APIs as deprecated in 26.10, with removal planned for 26.12 or later.
  • Directs callers to rely on the default lineterminator='\n', which supports CRLF input.
  • Removes the deprecated option from the CSV reader benchmark.
  • Adds a regression test confirming that CRLF input, including blank lines, is read correctly using the default options.
  • Leaves the Cython declarations in place until the deprecated C++ APIs are removed.

No Python-facing deprecation warning is needed because this option is not exposed through the Python API.

Closes #15985.

Testing

  • Added CsvReaderTest.WindowsLineTerminators.
  • All applicable pre-commit hooks passed.
  • Pinned clang-format check passed.
  • Doxygen 1.9.1 check passed.
  • The C++ test was not executed locally because the development machine does not have an NVIDIA GPU.

Checklist

  • I am familiar with the Contributing Guidelines.
  • New or existing tests cover these changes.
  • The documentation is up to date with these changes.

@utkarshparekh
utkarshparekh requested a review from a team as a code owner July 21, 2026 05:04
@utkarshparekh
utkarshparekh requested review from lamarrr and ttnghia July 21, 2026 05:04
@copy-pr-bot

copy-pr-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@github-actions github-actions Bot added the libcudf Affects libcudf (C++/CUDA) code. label Jul 21, 2026
@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: c9519194-9ebc-49e6-ae0f-86b2fed66fc9

📥 Commits

Reviewing files that changed from the base of the PR and between 5b6960d and 6126866.

📒 Files selected for processing (3)
  • cpp/benchmarks/io/csv/csv_reader_options.cpp
  • cpp/include/cudf/io/csv.hpp
  • cpp/tests/io/csv_test.cpp
🚧 Files skipped from review as they are similar to previous changes (3)
  • cpp/tests/io/csv_test.cpp
  • cpp/benchmarks/io/csv/csv_reader_options.cpp
  • cpp/include/cudf/io/csv.hpp

📝 Walkthrough

Summary by CodeRabbit

  • Deprecations

    • Deprecated CSV reader options for explicitly enabling Windows-style line termination handling.
    • CSV parsing continues to support Windows CRLF line endings without requiring these options.
  • Bug Fixes

    • Improved validation for CSV files using Windows-style CRLF line endings, including blank lines.
    • Verified correct parsing of numeric and text data with expected table structure.

Walkthrough

The CSV reader deprecates Windows line termination APIs, adds CRLF parsing coverage, and removes the deprecated option from the benchmark configuration.

Changes

CSV line termination handling

Layer / File(s) Summary
Deprecate APIs and validate CRLF parsing
cpp/include/cudf/io/csv.hpp, cpp/tests/io/csv_test.cpp
CSV reader Windows line termination methods are marked deprecated. A test validates CRLF parsing with blank lines and integer and string columns.
Remove deprecated benchmark configuration
cpp/benchmarks/io/csv/csv_reader_options.cpp
The benchmark no longer enables Windows line termination and updates the SPDX copyright notice.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 61268

This localized change deprecates an unused CSV option, adds coverage for CRLF input, and removes obsolete benchmark usage; no actionable merge-blocking risk remains beyond normal checks and review.

Suggested reviewers: ttnghia

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 42.86% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main change: deprecating the CSV windowslinetermination option.
Description check ✅ Passed The description accurately explains the deprecation, benchmark update, regression test, API scope, and linked issue.
Linked Issues check ✅ Passed The changes satisfy issue #15985 by deprecating the unused getter, setter, and builder APIs and adding coverage for CRLF input.
Out of Scope Changes check ✅ Passed The benchmark update, regression test, API changes, and copyright notice are consistent with the stated objectives.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@utkarshparekh

Copy link
Copy Markdown
Contributor Author

@coderabbitai help

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

CodeRabbit commands

These commands are invoked using PR/Issue comments.

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai rate limit to show your current review rate limit status.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai evaluate custom pre-merge check --instructions <custom-checks-instructions> --name <custom-checks-title> [--mode <error|warning>] to validate the custom pre-merge checks instructions. Defaults to error when --mode is omitted.
  • @coderabbitai ignore pre-merge checks to override pre-merge checks and get an approval on PR.
  • @coderabbitai run pre-merge checks to run pre-merge checks on the pull request.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai emit path instructions to emit generated path-specific review instructions for this repository.
  • @coderabbitai resolve merge conflict to automatically resolve merge conflicts.
  • @coderabbitai autofix to automatically fix issues identified in unresolved review comments.
  • @coderabbitai fix-ci to automatically fix failing CI checks by creating a stacked PR with fixes.
  • @coderabbitai resolve to resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai generate configuration to create a PR that adds the current resolved configuration as .coderabbit.yaml (or show it if already present).
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Status, support, documentation and community

  • Visit our status page to check the current availability of CodeRabbit.
  • Create a ticket on our support page for assistance with any issues or questions.
  • Visit our documentation site for detailed information on how to use CodeRabbit.
  • Join our Discord community to connect with other users and get help from the community.
  • Follow us on X/Twitter for updates and announcements.

@utkarshparekh

Copy link
Copy Markdown
Contributor Author

Could a maintainer please add the improvement and non-breaking labels? This PR introduces a non-breaking API deprecation, and Label Checker is currently failing.

@utkarshparekh

Copy link
Copy Markdown
Contributor Author

I pushed a fix in commit ecf0463, please review it.

@utkarshparekh

Copy link
Copy Markdown
Contributor Author

@coderabbitai I pushed a fix in commit 1f54e05, please review it.

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown

@utkarshparekh, I’ll review the latest changes in commit 1f54e05.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@utkarshparekh

Copy link
Copy Markdown
Contributor Author

@coderabbitai I pushed a fix in commit f532729, please review it

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown

@utkarshparekh I’ll review the latest changes in commit f532729.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@vyasr vyasr left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@vyasr vyasr added improvement Improvement / enhancement to an existing function non-breaking Non-breaking change labels Aug 14, 2026
@vyasr
vyasr requested a review from a team as a code owner August 14, 2026 19:07
@vyasr

vyasr commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

/ok to test 3f55fe0

@coderabbitai

coderabbitai Bot commented Aug 14, 2026

Copy link
Copy Markdown

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@vuule

vuule commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

/ok to test 6126866

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

Labels

improvement Improvement / enhancement to an existing function libcudf Affects libcudf (C++/CUDA) code. non-breaking Non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Deprecate windowslinetermination from libcudf read_csv

4 participants