Skip to content

Preserve newlines when parsing S3 object keys - #430

Merged
yezz123 merged 1 commit into
pydantic:mainfrom
charan-rathore:fix-s3-newline-keys
Oct 1, 2026
Merged

yezz123 merged 1 commit into
pydantic:mainfrom
charan-rathore:fix-s3-newline-keys

Conversation

@charan-rathore

Copy link
Copy Markdown
Contributor

S3Path rejects keys with a newline in a prefix. For a path ending with a slash followed by a newline, it silently drops the newline from key and reports a different last_key while retaining the original string value. AWS supports newline characters in object keys.

Compile the existing pattern with DOTALL and require a full match when extracting components. Regression tests cover direct construction and Pydantic validation with embedded newlines, multiple prefixes, CRLF, a final newline and a trailing slash.

Validation on Python 3.12.12: new tests fail on unchanged main (10 failed, 2 passed); all 37 S3 tests pass patched; the full suite passes (13615 tests). Changed-file Ruff lint/format and s3.py mypy pass.

No AWS requests were made. Other Python versions and the full repository typecheck were not run. The frozen lockfile omits pandas; pandas 3.0.6 and numpy 2.5.3 were installed separately for the full suite.

@yezz123
yezz123 merged commit 5fece0e into pydantic:main Oct 1, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants