Skip to content

Commit 1084116

Browse files
authored
[datetime] Fix datetime.combine inference when tzinfo is omitted (#16811)
1 parent 00fd40b commit 1084116

2 files changed

Lines changed: 12 additions & 4 deletions

File tree

‎stdlib/@tests/test_cases/check_datetime.py‎

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,14 @@
5858

5959
# Combine
6060

61-
assert_type(datetime.combine(date(2000, 1, 1), time(12, 0)), datetime[None])
62-
assert_type(datetime.combine(date(2000, 1, 1), time(12, 0), tzinfo=None), datetime[None])
63-
assert_type(datetime.combine(date(2000, 1, 1), time(12, 0), tzinfo=UTC), datetime[tzinfo])
61+
d = date(2000, 1, 1)
62+
naive_time = time(12, 0)
63+
aware_time = time(12, 0, tzinfo=UTC)
64+
65+
assert_type(datetime.combine(d, naive_time), Union[datetime[tzinfo], datetime[None]])
66+
assert_type(datetime.combine(d, aware_time), Union[datetime[tzinfo], datetime[None]])
67+
assert_type(datetime.combine(d, aware_time, tzinfo=None), datetime[None])
68+
assert_type(datetime.combine(d, naive_time, tzinfo=UTC), datetime[tzinfo])
6469

6570
# Replace
6671

‎stdlib/datetime.pyi‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,10 @@ class datetime(date, Generic[_TzInfoT]):
379379

380380
@overload
381381
@classmethod
382-
def combine(cls, date: _Date, time: _Time, tzinfo: None = None) -> datetime[None]: ...
382+
def combine(cls, date: _Date, time: _Time) -> datetime[_TzInfo] | datetime[None]: ...
383+
@overload
384+
@classmethod
385+
def combine(cls, date: _Date, time: _Time, tzinfo: None) -> datetime[None]: ...
383386
@overload
384387
@classmethod
385388
def combine(cls, date: _Date, time: _Time, tzinfo: _TzInfo) -> datetime[_TzInfo]: ...

0 commit comments

Comments
 (0)