Skip to content

Commit 3f6f54e

Browse files
mynhardtburgerArnabRollinAlexWaygood
authored
Improve openpyxl annotations (#9764)
Co-authored-by: ArnabRollin <[email protected]> Co-authored-by: ArnabRollin <[email protected]> Co-authored-by: Alex Waygood <[email protected]>
1 parent f2ae354 commit 3f6f54e

File tree

4 files changed

+238
-141
lines changed

4 files changed

+238
-141
lines changed

stubs/openpyxl/openpyxl/cell/cell.pyi

+38-33
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
from _typeshed import Incomplete
2+
from datetime import datetime
23

4+
from openpyxl.comments.comments import Comment
5+
from openpyxl.styles.cell_style import StyleArray
36
from openpyxl.styles.styleable import StyleableObject
7+
from openpyxl.worksheet.hyperlink import Hyperlink
8+
from openpyxl.worksheet.worksheet import Worksheet
49

510
__docformat__: str
611
TIME_TYPES: Incomplete
@@ -19,60 +24,60 @@ TYPE_ERROR: str
1924
TYPE_FORMULA_CACHE_STRING: str
2025
VALID_TYPES: Incomplete
2126

22-
def get_type(t, value): ...
23-
def get_time_format(t): ...
27+
def get_type(t: type, value: object) -> str | None: ...
28+
def get_time_format(t: datetime) -> str: ...
2429

2530
class Cell(StyleableObject):
26-
row: Incomplete
27-
column: Incomplete
31+
row: int
32+
column: int
2833
data_type: str
2934
def __init__(
3035
self,
31-
worksheet,
32-
row: Incomplete | None = ...,
33-
column: Incomplete | None = ...,
34-
value: Incomplete | None = ...,
35-
style_array: Incomplete | None = ...,
36+
worksheet: Worksheet,
37+
row: int | None = ...,
38+
column: int | None = ...,
39+
value: str | float | datetime | None = ...,
40+
style_array: StyleArray | None = ...,
3641
) -> None: ...
3742
@property
38-
def coordinate(self): ...
43+
def coordinate(self) -> str: ...
3944
@property
40-
def col_idx(self): ...
45+
def col_idx(self) -> int: ...
4146
@property
42-
def column_letter(self): ...
47+
def column_letter(self) -> str: ...
4348
@property
44-
def encoding(self): ...
49+
def encoding(self) -> str: ...
4550
@property
46-
def base_date(self): ...
47-
def check_string(self, value): ...
48-
def check_error(self, value): ...
51+
def base_date(self) -> datetime: ...
52+
def check_string(self, value: str): ...
53+
def check_error(self, value: object) -> str: ...
4954
@property
50-
def value(self): ...
55+
def value(self) -> str | float | datetime | None: ...
5156
@value.setter
52-
def value(self, value) -> None: ...
57+
def value(self, value: str | float | datetime | None) -> None: ...
5358
@property
54-
def internal_value(self): ...
59+
def internal_value(self) -> str | float | datetime | None: ...
5560
@property
56-
def hyperlink(self): ...
61+
def hyperlink(self) -> Hyperlink | None: ...
5762
@hyperlink.setter
58-
def hyperlink(self, val) -> None: ...
63+
def hyperlink(self, val: Hyperlink | str | None) -> None: ...
5964
@property
60-
def is_date(self): ...
61-
def offset(self, row: int = ..., column: int = ...): ...
65+
def is_date(self) -> bool: ...
66+
def offset(self, row: int = ..., column: int = ...) -> Cell: ...
6267
@property
63-
def comment(self): ...
68+
def comment(self) -> Comment | None: ...
6469
@comment.setter
65-
def comment(self, value) -> None: ...
70+
def comment(self, value: Comment | None) -> None: ...
6671

6772
class MergedCell(StyleableObject):
6873
data_type: str
69-
comment: Incomplete
70-
hyperlink: Incomplete
71-
row: Incomplete
72-
column: Incomplete
73-
def __init__(self, worksheet, row: Incomplete | None = ..., column: Incomplete | None = ...) -> None: ...
74+
comment: Comment | None
75+
hyperlink: Hyperlink | None
76+
row: int
77+
column: int
78+
def __init__(self, worksheet: Worksheet, row: int | None = ..., column: int | None = ...) -> None: ...
7479
@property
75-
def coordinate(self): ...
76-
value: Incomplete
80+
def coordinate(self) -> str: ...
81+
value: str | float | int | datetime | None
7782

78-
def WriteOnlyCell(ws: Incomplete | None = ..., value: Incomplete | None = ...): ...
83+
def WriteOnlyCell(ws: Worksheet | None = ..., value: str | float | datetime | None = ...) -> Cell: ...

stubs/openpyxl/openpyxl/reader/excel.pyi

+16-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
from _typeshed import Incomplete
1+
from _typeshed import Incomplete, StrPath, SupportsRead
2+
3+
from openpyxl.chartsheet.chartsheet import Chartsheet
4+
from openpyxl.packaging.relationship import Relationship
5+
from openpyxl.workbook.workbook import Workbook
26

37
SUPPORTED_FORMATS: Incomplete
48

@@ -10,7 +14,9 @@ class ExcelReader:
1014
data_only: Incomplete
1115
keep_links: Incomplete
1216
shared_strings: Incomplete
13-
def __init__(self, fn, read_only: bool = ..., keep_vba=..., data_only: bool = ..., keep_links: bool = ...) -> None: ...
17+
def __init__(
18+
self, fn: SupportsRead[bytes] | str, read_only: bool = ..., keep_vba=..., data_only: bool = ..., keep_links: bool = ...
19+
) -> None: ...
1420
package: Incomplete
1521
def read_manifest(self) -> None: ...
1622
def read_strings(self) -> None: ...
@@ -19,8 +25,14 @@ class ExcelReader:
1925
def read_workbook(self) -> None: ...
2026
def read_properties(self) -> None: ...
2127
def read_theme(self) -> None: ...
22-
def read_chartsheet(self, sheet, rel) -> None: ...
28+
def read_chartsheet(self, sheet: Chartsheet, rel: Relationship) -> None: ...
2329
def read_worksheets(self) -> None: ...
2430
def read(self) -> None: ...
2531

26-
def load_workbook(filename, read_only: bool = ..., keep_vba=..., data_only: bool = ..., keep_links: bool = ...): ...
32+
def load_workbook(
33+
filename: SupportsRead[bytes] | StrPath,
34+
read_only: bool = ...,
35+
keep_vba: bool = ...,
36+
data_only: bool = ...,
37+
keep_links: bool = ...,
38+
) -> Workbook: ...
+46-36
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
1-
from _typeshed import Incomplete
1+
from _typeshed import Incomplete, StrPath
2+
from collections.abc import Iterator
3+
from datetime import datetime
4+
from typing import IO
5+
6+
from openpyxl.chartsheet.chartsheet import Chartsheet
7+
from openpyxl.styles.named_styles import NamedStyle
8+
from openpyxl.workbook.child import _WorkbookChild
9+
from openpyxl.workbook.defined_name import DefinedName
10+
from openpyxl.worksheet._write_only import WriteOnlyWorksheet
11+
from openpyxl.worksheet.worksheet import Worksheet
212

313
INTEGER_TYPES: Incomplete
414

@@ -20,54 +30,54 @@ class Workbook:
2030
views: Incomplete
2131
def __init__(self, write_only: bool = ..., iso_dates: bool = ...) -> None: ...
2232
@property
23-
def epoch(self): ...
33+
def epoch(self) -> datetime: ...
2434
@epoch.setter
25-
def epoch(self, value) -> None: ...
35+
def epoch(self, value: datetime) -> None: ...
2636
@property
27-
def read_only(self): ...
37+
def read_only(self) -> bool: ...
2838
@property
29-
def data_only(self): ...
39+
def data_only(self) -> bool: ...
3040
@property
31-
def write_only(self): ...
41+
def write_only(self) -> bool: ...
3242
@property
33-
def excel_base_date(self): ...
43+
def excel_base_date(self) -> datetime: ...
3444
@property
35-
def active(self): ...
45+
def active(self) -> _WorkbookChild | None: ...
3646
@active.setter
37-
def active(self, value) -> None: ...
38-
def create_sheet(self, title: Incomplete | None = ..., index: Incomplete | None = ...): ...
39-
def move_sheet(self, sheet, offset: int = ...) -> None: ...
40-
def remove(self, worksheet) -> None: ...
41-
def remove_sheet(self, worksheet) -> None: ...
42-
def create_chartsheet(self, title: Incomplete | None = ..., index: Incomplete | None = ...): ...
43-
def get_sheet_by_name(self, name): ...
44-
def __contains__(self, key): ...
45-
def index(self, worksheet): ...
46-
def get_index(self, worksheet): ...
47-
def __getitem__(self, key): ...
48-
def __delitem__(self, key) -> None: ...
49-
def __iter__(self): ...
50-
def get_sheet_names(self): ...
47+
def active(self, value: _WorkbookChild | int) -> None: ...
48+
def create_sheet(self, title: str | None = ..., index: int | None = ...): ...
49+
def move_sheet(self, sheet: Worksheet | str, offset: int = ...) -> None: ...
50+
def remove(self, worksheet: Worksheet) -> None: ...
51+
def remove_sheet(self, worksheet: Worksheet) -> None: ...
52+
def create_chartsheet(self, title: str | None = ..., index: int | None = ...) -> Chartsheet: ...
53+
def get_sheet_by_name(self, name: str) -> Worksheet: ...
54+
def __contains__(self, key: str) -> bool: ...
55+
def index(self, worksheet: Worksheet) -> int: ...
56+
def get_index(self, worksheet: Worksheet) -> int: ...
57+
def __getitem__(self, key: str) -> Worksheet: ...
58+
def __delitem__(self, key: str) -> None: ...
59+
def __iter__(self) -> Iterator[Worksheet]: ...
60+
def get_sheet_names(self) -> list[Worksheet]: ...
5161
@property
52-
def worksheets(self): ...
62+
def worksheets(self) -> list[Worksheet]: ...
5363
@property
54-
def chartsheets(self): ...
64+
def chartsheets(self) -> list[Chartsheet]: ...
5565
@property
56-
def sheetnames(self): ...
66+
def sheetnames(self) -> list[str]: ...
5767
def create_named_range(
58-
self, name, worksheet: Incomplete | None = ..., value: Incomplete | None = ..., scope: Incomplete | None = ...
68+
self, name: str, worksheet: Worksheet | None = ..., value: str | Incomplete | None = ..., scope: Incomplete | None = ...
5969
) -> None: ...
60-
def add_named_style(self, style) -> None: ...
70+
def add_named_style(self, style: NamedStyle) -> None: ...
6171
@property
62-
def named_styles(self): ...
63-
def get_named_ranges(self): ...
64-
def add_named_range(self, named_range) -> None: ...
65-
def get_named_range(self, name): ...
66-
def remove_named_range(self, named_range) -> None: ...
72+
def named_styles(self) -> list[str]: ...
73+
def get_named_ranges(self) -> list[DefinedName] | tuple[DefinedName, ...]: ...
74+
def add_named_range(self, named_range: DefinedName) -> None: ...
75+
def get_named_range(self, name: str) -> DefinedName: ...
76+
def remove_named_range(self, named_range: DefinedName) -> None: ...
6777
@property
68-
def mime_type(self): ...
69-
def save(self, filename) -> None: ...
78+
def mime_type(self) -> str: ...
79+
def save(self, filename: StrPath | IO[bytes]) -> None: ...
7080
@property
71-
def style_names(self): ...
72-
def copy_worksheet(self, from_worksheet): ...
81+
def style_names(self) -> list[str]: ...
82+
def copy_worksheet(self, from_worksheet: Worksheet) -> Worksheet | WriteOnlyWorksheet: ...
7383
def close(self) -> None: ...

0 commit comments

Comments
 (0)