1
1
from __future__ import annotations
2
2
3
+ import datetime
3
4
import enum
4
- from datetime import date , datetime , time , timedelta
5
- from os import PathLike
6
- from typing import Protocol
5
+ import os
6
+ import typing
7
7
8
- ValueT = int | float | str | bool | time | date | datetime | timedelta
9
-
10
- class ReadBuffer (Protocol ):
8
+ @typing .type_check_only
9
+ class ReadBuffer (typing .Protocol ):
11
10
def seek (self , __offset : int , __whence : int = ...) -> int : ...
12
11
def read (self , __size : int = ...) -> bytes | None : ...
13
12
13
+ @typing .final
14
14
class SheetTypeEnum (enum .Enum ):
15
15
WorkSheet = ...
16
16
DialogSheet = ...
17
17
MacroSheet = ...
18
18
ChartSheet = ...
19
- VBA = ...
19
+ Vba = ...
20
20
21
+ @typing .final
21
22
class SheetVisibleEnum (enum .Enum ):
22
23
Visible = ...
23
24
Hidden = ...
24
25
VeryHidden = ...
25
26
27
+ @typing .final
26
28
class SheetMetadata :
27
29
name : str
28
30
typ : SheetTypeEnum
@@ -32,6 +34,7 @@ class SheetMetadata:
32
34
self , name : str , typ : SheetTypeEnum , visible : SheetVisibleEnum
33
35
) -> None : ...
34
36
37
+ @typing .final
35
38
class CalamineSheet :
36
39
name : str
37
40
@property
@@ -48,7 +51,18 @@ class CalamineSheet:
48
51
def end (self ) -> tuple [int , int ] | None : ...
49
52
def to_python (
50
53
self , skip_empty_area : bool = True , nrows : int | None = None
51
- ) -> list [list [ValueT ]]:
54
+ ) -> list [
55
+ list [
56
+ int
57
+ | float
58
+ | str
59
+ | bool
60
+ | datetime .time
61
+ | datetime .date
62
+ | datetime .datetime
63
+ | datetime .timedelta
64
+ ]
65
+ ]:
52
66
"""Retunrning data from sheet as list of lists.
53
67
54
68
Parameters
@@ -58,13 +72,14 @@ class CalamineSheet:
58
72
For suppress this behaviour, set `skip_empty_area` to `False`.
59
73
"""
60
74
75
+ @typing .final
61
76
class CalamineWorkbook :
62
77
path : str | None
63
78
sheet_names : list [str ]
64
79
sheets_metadata : list [SheetMetadata ]
65
80
@classmethod
66
81
def from_object (
67
- cls , path_or_filelike : str | PathLike | ReadBuffer
82
+ cls , path_or_filelike : str | os . PathLike | ReadBuffer
68
83
) -> "CalamineWorkbook" :
69
84
"""Determining type of pyobject and reading from it.
70
85
@@ -76,7 +91,7 @@ class CalamineWorkbook:
76
91
- IO (must imlpement read/seek methods).
77
92
"""
78
93
@classmethod
79
- def from_path (cls , path : str | PathLike ) -> "CalamineWorkbook" :
94
+ def from_path (cls , path : str | os . PathLike ) -> "CalamineWorkbook" :
80
95
"""Reading file from path.
81
96
82
97
Parameters
@@ -96,7 +111,7 @@ class CalamineWorkbook:
96
111
class CalamineError (Exception ): ...
97
112
98
113
def load_workbook (
99
- path_or_filelike : str | PathLike | ReadBuffer ,
114
+ path_or_filelike : str | os . PathLike | ReadBuffer ,
100
115
) -> CalamineWorkbook :
101
116
"""Determining type of pyobject and reading from it.
102
117
0 commit comments