diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1732366..65e6800 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -17,7 +17,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, macos-13, windows-latest] - python-version: [3.7, 3.8, 3.9, "3.10", "3.11", 3.12] + python-version: [3.7, 3.8, 3.9, "3.10", "3.11", 3.12, 3.13] steps: - uses: actions/checkout@v4 @@ -28,6 +28,7 @@ jobs: uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} + allow-prereleases: true - name: Get full python version id: full-python-version diff --git a/CHANGELOG.md b/CHANGELOG.md index aaeac72..2d04cc7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Change Log +## [unreleased] + +### Fixed + +- Fix the incompatiblity with 3.13 because of the `datetime.replace()` change. ([#333](https://github.com/python-poetry/tomlkit/issues/333)) + ## [0.12.4] - 2024-05-08 ### Fixed diff --git a/tests/test_items.py b/tests/test_items.py index 1a71b04..3d2de68 100644 --- a/tests/test_items.py +++ b/tests/test_items.py @@ -689,7 +689,7 @@ def test_dates_behave_like_dates(): assert i.as_string() == "2018-07-22" i += timedelta(days=1) - assert i == datetime(2018, 7, 23) + assert i == date(2018, 7, 23) assert i.as_string() == "2018-07-23" i -= timedelta(days=2) @@ -697,7 +697,7 @@ def test_dates_behave_like_dates(): assert i.as_string() == "2018-07-21" i = i.replace(year=2019) - assert i == datetime(2019, 7, 21) + assert i == date(2019, 7, 21) assert i.as_string() == "2019-07-21" doc = parse("dt = 2018-07-22 # Comment") diff --git a/tomlkit/items.py b/tomlkit/items.py index ef40a15..661e09c 100644 --- a/tomlkit/items.py +++ b/tomlkit/items.py @@ -958,9 +958,14 @@ def __new__(cls, year: int, month: int, day: int, *_: Any) -> date: return date.__new__(cls, year, month, day) def __init__( - self, year: int, month: int, day: int, trivia: Trivia, raw: str + self, + year: int, + month: int, + day: int, + trivia: Trivia | None = None, + raw: str = "", ) -> None: - super().__init__(trivia) + super().__init__(trivia or Trivia()) self._raw = raw @@ -1033,10 +1038,10 @@ def __init__( second: int, microsecond: int, tzinfo: tzinfo | None, - trivia: Trivia, - raw: str, + trivia: Trivia | None = None, + raw: str = "", ) -> None: - super().__init__(trivia) + super().__init__(trivia or Trivia()) self._raw = raw