1
1
import datetime
2
- from typing import IO , Any , TypeVar
3
- from typing_extensions import TypeAlias
2
+ from typing import Any , Protocol , TypeVar
3
+ from typing_extensions import Literal
4
4
5
5
from ..relativedelta import relativedelta
6
6
from ._common import _tzinfo as _tzinfo , enfold as enfold , tzname_in_python2 as tzname_in_python2 , tzrangebase as tzrangebase
7
7
8
- # TODO: _FileObj is used differently in classes below. Some need a byte stream,
9
- # some a str stream.
10
- _FileObj : TypeAlias = str | IO [Any ]
11
8
_DT = TypeVar ("_DT" , bound = datetime .datetime )
12
9
13
10
ZERO : datetime .timedelta
@@ -56,8 +53,14 @@ class _ttinfo:
56
53
__hash__ : Any
57
54
def __ne__ (self , other ): ...
58
55
56
+ class _TZFileReader (Protocol ):
57
+ # optional attribute:
58
+ # name: str
59
+ def read (self , __size : int ) -> bytes : ...
60
+ def seek (self , __target : int , __whence : Literal [1 ]) -> object : ...
61
+
59
62
class tzfile (_tzinfo ):
60
- def __init__ (self , fileobj : _FileObj , filename : str | None = ...) -> None : ...
63
+ def __init__ (self , fileobj : str | _TZFileReader , filename : str | None = ...) -> None : ...
61
64
def is_ambiguous (self , dt : datetime .datetime | None , idx : int | None = ...) -> bool : ...
62
65
def utcoffset (self , dt : datetime .datetime | None ) -> datetime .timedelta | None : ...
63
66
def dst (self , dt : datetime .datetime | None ) -> datetime .timedelta | None : ...
@@ -84,12 +87,17 @@ class tzrange(tzrangebase):
84
87
85
88
class tzstr (tzrange ):
86
89
hasdst : bool
87
- def __init__ (self , s : bytes | _FileObj , posix_offset : bool = ...) -> None : ...
90
+ def __init__ (self , s : str , posix_offset : bool = ...) -> None : ...
88
91
@classmethod
89
92
def instance (cls , name , offset ) -> tzoffset : ...
90
93
94
+ class _ICalReader (Protocol ):
95
+ # optional attribute:
96
+ # name: str
97
+ def read (self ) -> str : ...
98
+
91
99
class tzical :
92
- def __init__ (self , fileobj : _FileObj ) -> None : ...
100
+ def __init__ (self , fileobj : str | _ICalReader ) -> None : ...
93
101
def keys (self ): ...
94
102
def get (self , tzid : Any | None = ...): ...
95
103
0 commit comments