pendulum icon indicating copy to clipboard operation
pendulum copied to clipboard

Fix leap year & negative week number issue

Open kwongtn opened this issue 2 years ago • 0 comments

Pull Request Check List

  • [x] Added tests for changed code.
  • [ ] Updated documentation for changed code. ^ There are no related documentation

This PR attempts to fix the following issues:

  • https://github.com/sdispater/pendulum/issues/438
  • https://github.com/sdispater/pendulum/issues/455
  • https://github.com/sdispater/pendulum/issues/536
  • https://github.com/sdispater/pendulum/issues/587
  • https://github.com/sdispater/pendulum/issues/598

If this PR is merged, the following PRs should be closed too:

  • https://github.com/sdispater/pendulum/pull/718

The following tests are mapped to their respective issues:

# https://github.com/sdispater/pendulum/issues/438
assert pendulum.Date(2020, 1, 7).week_of_month == 2
assert pendulum.Date(2020, 1, 14).week_of_month == 3

# https://github.com/sdispater/pendulum/issues/455
assert pendulum.Date(2000, 1, 1).week_of_month == 1
assert pendulum.Date(2000, 1, 3).week_of_month == 2
assert pendulum.Date(2029, 12, 31).week_of_month == 6

# https://github.com/sdispater/pendulum/issues/536
assert pendulum.Date(2019, 12, 29).week_of_month == 5
assert pendulum.Date(2019, 12, 31).week_of_month == 6
assert pendulum.Date(2019, 12, 30).week_of_month == 6
assert pendulum.Date(2021, 1, 2).week_of_month == 1
assert pendulum.Date(2021, 1, 9).week_of_month == 2
assert pendulum.Date(2021, 1, 16).week_of_month == 3
assert pendulum.Date(2021, 1, 23).week_of_month == 4
assert pendulum.Date(2021, 1, 30).week_of_month == 5

# https://github.com/sdispater/pendulum/issues/587
assert pendulum.Date(2021, 1, 15).week_of_month == 3
assert pendulum.Date(2023, 1, 2).week_of_month == 1

# https://github.com/sdispater/pendulum/issues/598
assert pendulum.Date(2022, 1, 1).week_of_month == 1
assert pendulum.Date(2022, 1, 3).week_of_month == 2
assert pendulum.Date(2022, 1, 10).week_of_month == 3
assert pendulum.Date(2021, 12, 29).week_of_month == 5
assert pendulum.Date(2021, 12, 30).week_of_month == 5
assert pendulum.Date(2021, 12, 31).week_of_month == 5

kwongtn avatar Nov 01 '23 17:11 kwongtn