Repository navigation
fix: avoid counting partial intervals as full months - #1043
Open
sricharanreddycheruku wants to merge 1 commit into
Open
sricharanreddycheruku wants to merge 1 commit into
sricharanreddycheruku wants to merge 1 commit into
Conversation
This branch has not been deployed
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.
Fixes #790.
Intervals such as January 3 to February1 in a leap year incorrectly report a full month because the day difference happens to match the difference between the month lengths. Restrict that special case to month-end endpoints in both the Python and Rust helpers.
Tests cover leap and nonleap years, reversed intervals, the reported Toronto in_months() behavior, time borrowing, and the existing January 31-to-February28/29 clipping rule. Two existing month-end tests now freeze time in the same Toronto timezone used by today(), preserving their expected results while exercising their intended dates.
Pull Request Check List
Validation on Python 3.12.3: full Rust-extension and pure-Python suites each passed 1878 tests with 3 skips. The new regression tests fail 5 cases on unchanged master in each backend and pass after the fix. Mypy passed all 228 source files; Ruff 0.14.11 check and formatting passed; cargo fmt and cargo clippy --tests -- -D warnings passed.
All six prek hooks passed, including Rust lint.