From b68f9eb4db08211798690041aeb6a9f49755b637 Mon Sep 17 00:00:00 2001 From: ArnabRollin Date: Tue, 10 Jan 2023 16:56:05 +0530 Subject: [PATCH 1/9] Updated type hints Updated classes `Workbook`, `Worksheet`, `Cell`. Type checking works in VS Code --- stubs/openpyxl/openpyxl/cell/cell.pyi | 64 ++++---- stubs/openpyxl/openpyxl/reader/excel.pyi | 13 +- stubs/openpyxl/openpyxl/workbook/workbook.pyi | 86 ++++++----- .../openpyxl/openpyxl/worksheet/worksheet.pyi | 138 +++++++++--------- 4 files changed, 165 insertions(+), 136 deletions(-) diff --git a/stubs/openpyxl/openpyxl/cell/cell.pyi b/stubs/openpyxl/openpyxl/cell/cell.pyi index b8a89507bd80..6b2798e71be7 100644 --- a/stubs/openpyxl/openpyxl/cell/cell.pyi +++ b/stubs/openpyxl/openpyxl/cell/cell.pyi @@ -1,6 +1,10 @@ +from datetime import datetime from typing import Any - +from openpyxl.styles.cell_style import StyleArray from openpyxl.styles.styleable import StyleableObject +from openpyxl.worksheet.hyperlink import Hyperlink +from openpyxl.worksheet.worksheet import Worksheet +from openpyxl.comments.comments import Comment __docformat__: str TIME_TYPES: Any @@ -19,55 +23,55 @@ TYPE_ERROR: str TYPE_FORMULA_CACHE_STRING: str VALID_TYPES: Any -def get_type(t, value): ... -def get_time_format(t): ... +def get_type(t: Any, value: Any) -> Any: ... +def get_time_format(t: Any) -> Any: ... class Cell(StyleableObject): - row: Any - column: Any + row: int + column: int data_type: str def __init__( - self, worksheet, row: Any | None = ..., column: Any | None = ..., value: Any | None = ..., style_array: Any | None = ... + self, worksheet: Worksheet, row: int | None = ..., column: int | None = ..., value: str | float | int | datetime | None = ..., style_array: StyleArray | None = ... ) -> None: ... @property - def coordinate(self): ... + def coordinate(self) -> str: ... @property - def col_idx(self): ... + def col_idx(self) -> int: ... @property - def column_letter(self): ... + def column_letter(self) -> str: ... @property - def encoding(self): ... + def encoding(self) -> str: ... @property - def base_date(self): ... - def check_string(self, value): ... - def check_error(self, value): ... + def base_date(self) -> Any: ... + def check_string(self, value: str): ... + def check_error(self, value: Any) -> Any | str: ... @property - def value(self): ... + def value(self) -> str | float | int | datetime | None: ... @value.setter - def value(self, value) -> None: ... + def value(self, value: str | float | int | datetime | None) -> None: ... @property - def internal_value(self): ... + def internal_value(self) -> Any: ... @property - def hyperlink(self): ... + def hyperlink(self) -> Hyperlink | str: ... @hyperlink.setter - def hyperlink(self, val) -> None: ... + def hyperlink(self, val: Hyperlink | str | None) -> None: ... @property - def is_date(self): ... - def offset(self, row: int = ..., column: int = ...): ... + def is_date(self) -> bool: ... + def offset(self, row: int = ..., column: int = ...) -> Cell: ... @property - def comment(self): ... + def comment(self) -> Comment: ... @comment.setter - def comment(self, value) -> None: ... + def comment(self, value: Comment) -> None: ... class MergedCell(StyleableObject): data_type: str - comment: Any - hyperlink: Any - row: Any - column: Any - def __init__(self, worksheet, row: Any | None = ..., column: Any | None = ...) -> None: ... + comment: Comment + hyperlink: Hyperlink + row: int + column: int + def __init__(self, worksheet: Worksheet, row: int | None = ..., column: int | None = ...) -> None: ... @property - def coordinate(self): ... - value: Any + def coordinate(self) -> str: ... + value: str | float | int | datetime | None -def WriteOnlyCell(ws: Any | None = ..., value: Any | None = ...): ... +def WriteOnlyCell(ws: Worksheet | None = ..., value: str | float | int | datetime | None = ...) -> Cell: ... diff --git a/stubs/openpyxl/openpyxl/reader/excel.pyi b/stubs/openpyxl/openpyxl/reader/excel.pyi index c70d2e8e472c..1baab7a8133c 100644 --- a/stubs/openpyxl/openpyxl/reader/excel.pyi +++ b/stubs/openpyxl/openpyxl/reader/excel.pyi @@ -1,7 +1,11 @@ from typing import Any +from openpyxl.chartsheet.chartsheet import Chartsheet +from openpyxl.workbook.workbook import Workbook + SUPPORTED_FORMATS: Any + class ExcelReader: archive: Any valid_files: Any @@ -10,7 +14,8 @@ class ExcelReader: data_only: Any keep_links: Any shared_strings: Any - def __init__(self, fn, read_only: bool = ..., keep_vba=..., data_only: bool = ..., keep_links: bool = ...) -> None: ... + def __init__(self, fn: Any, read_only: bool = ..., keep_vba=..., + data_only: bool = ..., keep_links: bool = ...) -> None: ... package: Any def read_manifest(self) -> None: ... def read_strings(self) -> None: ... @@ -19,8 +24,10 @@ class ExcelReader: def read_workbook(self) -> None: ... def read_properties(self) -> None: ... def read_theme(self) -> None: ... - def read_chartsheet(self, sheet, rel) -> None: ... + def read_chartsheet(self, sheet: Chartsheet, rel: Any) -> None: ... def read_worksheets(self) -> None: ... def read(self) -> None: ... -def load_workbook(filename, read_only: bool = ..., keep_vba=..., data_only: bool = ..., keep_links: bool = ...): ... + +def load_workbook(filename: str, read_only: bool = ..., keep_vba: bool = ..., + data_only: bool = ..., keep_links: bool = ...) -> Workbook: ... diff --git a/stubs/openpyxl/openpyxl/workbook/workbook.pyi b/stubs/openpyxl/openpyxl/workbook/workbook.pyi index 0ce9d9be2d33..157d93bdb076 100644 --- a/stubs/openpyxl/openpyxl/workbook/workbook.pyi +++ b/stubs/openpyxl/openpyxl/workbook/workbook.pyi @@ -1,7 +1,11 @@ -from typing import Any +from openpyxl.worksheet.worksheet import Worksheet +from openpyxl.chartsheet.chartsheet import Chartsheet +from openpyxl.styles.named_styles import NamedStyle +from typing import Any, Iterator INTEGER_TYPES: Any + class Workbook: template: bool path: str @@ -18,54 +22,62 @@ class Workbook: rels: Any calculation: Any views: Any - def __init__(self, write_only: bool = ..., iso_dates: bool = ...) -> None: ... + def __init__(self, write_only: bool = ..., + iso_dates: bool = ...) -> None: ... + @property - def epoch(self): ... + def epoch(self) -> Any: ... @epoch.setter - def epoch(self, value) -> None: ... + def epoch(self, value: Any) -> None: ... @property - def read_only(self): ... + def read_only(self) -> bool: ... @property - def data_only(self): ... + def data_only(self) -> bool: ... @property - def write_only(self): ... + def write_only(self) -> bool: ... @property - def excel_base_date(self): ... + def excel_base_date(self) -> Any: ... @property - def active(self): ... + def active(self) -> Worksheet: ... @active.setter - def active(self, value) -> None: ... - def create_sheet(self, title: Any | None = ..., index: Any | None = ...): ... - def move_sheet(self, sheet, offset: int = ...) -> None: ... - def remove(self, worksheet) -> None: ... - def remove_sheet(self, worksheet) -> None: ... - def create_chartsheet(self, title: Any | None = ..., index: Any | None = ...): ... - def get_sheet_by_name(self, name): ... - def __contains__(self, key): ... - def index(self, worksheet): ... - def get_index(self, worksheet): ... - def __getitem__(self, key): ... - def __delitem__(self, key) -> None: ... - def __iter__(self): ... - def get_sheet_names(self): ... + def active(self, value: Worksheet) -> None: ... + def create_sheet(self, title: str | None = ..., + index: int | None = ...): ... + + def move_sheet(self, sheet: Worksheet, offset: int = ...) -> None: ... + def remove(self, worksheet: Worksheet) -> None: ... + def remove_sheet(self, worksheet: Worksheet) -> None: ... + def create_chartsheet(self, title: str | None = ..., + index: int | None = ...) -> None: ... + + def get_sheet_by_name(self, name: str) -> Worksheet: ... + def __contains__(self, key: str) -> bool: ... + def index(self, worksheet: Worksheet) -> int: ... + def get_index(self, worksheet: Worksheet) -> int: ... + def __getitem__(self, key: str) -> Worksheet: ... + def __delitem__(self, key: str) -> None: ... + def __iter__(self) -> Iterator[Worksheet]: ... + def get_sheet_names(self) -> list[Worksheet]: ... @property - def worksheets(self): ... + def worksheets(self) -> list[Worksheet]: ... @property - def chartsheets(self): ... + def chartsheets(self) -> list[Chartsheet]: ... @property - def sheetnames(self): ... - def create_named_range(self, name, worksheet: Any | None = ..., value: Any | None = ..., scope: Any | None = ...) -> None: ... - def add_named_style(self, style) -> None: ... + def sheetnames(self) -> list[str]: ... + def create_named_range(self, name: str, worksheet: Worksheet | None = ..., + value: str | Any | None = ..., scope: Any | None = ...) -> None: ... + + def add_named_style(self, style: Any) -> None: ... @property - def named_styles(self): ... - def get_named_ranges(self): ... - def add_named_range(self, named_range) -> None: ... - def get_named_range(self, name): ... - def remove_named_range(self, named_range) -> None: ... + def named_styles(self) -> list[NamedStyle]: ... + def get_named_ranges(self) -> list[Any]: ... + def add_named_range(self, named_range: Any) -> None: ... + def get_named_range(self, name: Any) -> Any: ... + def remove_named_range(self, named_range: Any) -> None: ... @property - def mime_type(self): ... - def save(self, filename) -> None: ... + def mime_type(self) -> Any: ... + def save(self, filename: str) -> None: ... @property - def style_names(self): ... - def copy_worksheet(self, from_worksheet): ... + def style_names(self) -> list[NamedStyle]: ... + def copy_worksheet(self, from_worksheet: Worksheet) -> Worksheet: ... def close(self) -> None: ... diff --git a/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi b/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi index 615fd2ad38f8..32a26fa3211b 100644 --- a/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi +++ b/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi @@ -1,5 +1,11 @@ from collections.abc import Generator -from typing import Any +from openpyxl.workbook.workbook import Workbook +from openpyxl.worksheet.cell_range import CellRange +from openpyxl.worksheet.pagebreak import PageBreak +from openpyxl.worksheet.table import Table, TableList +from openpyxl.worksheet.views import SheetView +from openpyxl.cell.cell import Cell +from typing import Any, Iterable, Iterator from openpyxl.workbook.child import _WorkbookChild @@ -24,106 +30,106 @@ class Worksheet(_WorkbookChild): PAPERSIZE_A5: str ORIENTATION_PORTRAIT: str ORIENTATION_LANDSCAPE: str - def __init__(self, parent, title: Any | None = ...) -> None: ... + def __init__(self, parent: Workbook, title: str | None = ...) -> None: ... @property - def sheet_view(self): ... + def sheet_view(self) -> SheetView: ... @property - def selected_cell(self): ... + def selected_cell(self) -> Cell: ... @property - def active_cell(self): ... + def active_cell(self) -> Cell: ... @property - def page_breaks(self): ... + def page_breaks(self) -> PageBreak: ... @property - def show_gridlines(self): ... + def show_gridlines(self) -> Any: ... @property - def show_summary_below(self): ... + def show_summary_below(self) -> Any: ... @property - def show_summary_right(self): ... + def show_summary_right(self) -> Any: ... @property - def freeze_panes(self): ... + def freeze_panes(self) -> Any: ... @freeze_panes.setter def freeze_panes(self, topLeftCell: Any | None = ...) -> None: ... - def cell(self, row, column, value: Any | None = ...): ... - def __getitem__(self, key): ... - def __setitem__(self, key, value) -> None: ... - def __iter__(self): ... - def __delitem__(self, key) -> None: ... + def cell(self, row: int, column: int, value: str | None = ...) -> Cell: ... + def __getitem__(self, key: str) -> Cell | tuple[Cell]: ... + def __setitem__(self, key: str, value: str) -> None: ... + def __iter__(self) -> Iterator[Cell]: ... + def __delitem__(self, key: str) -> None: ... @property - def min_row(self): ... + def min_row(self) -> int: ... @property - def max_row(self): ... + def max_row(self) -> int: ... @property - def min_column(self): ... + def min_column(self) -> int: ... @property - def max_column(self): ... - def calculate_dimension(self): ... + def max_column(self) -> int: ... + def calculate_dimension(self) -> str: ... @property - def dimensions(self): ... + def dimensions(self) -> str: ... def iter_rows( self, - min_row: Any | None = ..., - max_row: Any | None = ..., - min_col: Any | None = ..., - max_col: Any | None = ..., + min_row: int | None = ..., + max_row: int | None = ..., + min_col: int | None = ..., + max_col: int | None = ..., values_only: bool = ..., - ): ... + ) -> Generator[Iterable[Cell], None, None]: ... @property - def rows(self): ... + def rows(self) -> Generator[Iterable[Cell], None, None]: ... @property - def values(self) -> Generator[Any, None, None]: ... + def values(self) -> Generator[str | None, None, None]: ... def iter_cols( self, - min_col: Any | None = ..., - max_col: Any | None = ..., - min_row: Any | None = ..., - max_row: Any | None = ..., + min_col: int | None = ..., + max_col: int | None = ..., + min_row: int | None = ..., + max_row: int | None = ..., values_only: bool = ..., - ): ... + ) -> Generator[Iterable[Cell], None, None]: ... @property - def columns(self): ... - def set_printer_settings(self, paper_size, orientation) -> None: ... - def add_data_validation(self, data_validation) -> None: ... - def add_chart(self, chart, anchor: Any | None = ...) -> None: ... - def add_image(self, img, anchor: Any | None = ...) -> None: ... - def add_table(self, table) -> None: ... + def columns(self) -> Generator[Iterable[Cell], None, None]: ... + def set_printer_settings(self, paper_size: Any, orientation: Any) -> None: ... + def add_data_validation(self, data_validation: Any) -> None: ... + def add_chart(self, chart: Any, anchor: Any | None = ...) -> None: ... + def add_image(self, img: Any, anchor: Any | None = ...) -> None: ... + def add_table(self, table: Table) -> None: ... @property - def tables(self): ... - def add_pivot(self, pivot) -> None: ... + def tables(self) -> TableList: ... + def add_pivot(self, pivot: Any) -> None: ... def merge_cells( self, - range_string: Any | None = ..., - start_row: Any | None = ..., - start_column: Any | None = ..., - end_row: Any | None = ..., - end_column: Any | None = ..., + range_string: str | None = ..., + start_row: int | None = ..., + start_column: int | None = ..., + end_row: int | None = ..., + end_column: int | None = ..., ) -> None: ... @property - def merged_cell_ranges(self): ... + def merged_cell_ranges(self) -> list[CellRange]: ... def unmerge_cells( self, - range_string: Any | None = ..., - start_row: Any | None = ..., - start_column: Any | None = ..., - end_row: Any | None = ..., - end_column: Any | None = ..., + range_string: str | None = ..., + start_row: int | None = ..., + start_column: int | None = ..., + end_row: int | None = ..., + end_column: int | None = ..., ) -> None: ... - def append(self, iterable) -> None: ... - def insert_rows(self, idx, amount: int = ...) -> None: ... - def insert_cols(self, idx, amount: int = ...) -> None: ... - def delete_rows(self, idx, amount: int = ...) -> None: ... - def delete_cols(self, idx, amount: int = ...) -> None: ... - def move_range(self, cell_range, rows: int = ..., cols: int = ..., translate: bool = ...) -> None: ... - @property - def print_title_rows(self): ... + def append(self, iterable: Iterable[Any]) -> None: ... + def insert_rows(self, idx: int, amount: int = ...) -> None: ... + def insert_cols(self, idx: int, amount: int = ...) -> None: ... + def delete_rows(self, idx: int, amount: int = ...) -> None: ... + def delete_cols(self, idx: int, amount: int = ...) -> None: ... + def move_range(self, cell_range: CellRange, rows: int = ..., cols: int = ..., translate: bool = ...) -> None: ... + @property + def print_title_rows(self) -> Any: ... @print_title_rows.setter - def print_title_rows(self, rows) -> None: ... + def print_title_rows(self, rows: int) -> None: ... @property - def print_title_cols(self): ... + def print_title_cols(self) -> Any: ... @print_title_cols.setter - def print_title_cols(self, cols) -> None: ... + def print_title_cols(self, cols: int) -> None: ... @property - def print_titles(self): ... + def print_titles(self) -> Any: ... @property - def print_area(self): ... + def print_area(self) -> Any: ... @print_area.setter - def print_area(self, value) -> None: ... + def print_area(self, value: str) -> None: ... From ad01e5774b8a294a5acb9cfbdaa957f072ff63de Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 10 Jan 2023 11:52:20 +0000 Subject: [PATCH 2/9] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stubs/openpyxl/openpyxl/cell/cell.pyi | 10 ++++++-- stubs/openpyxl/openpyxl/reader/excel.pyi | 10 ++++---- stubs/openpyxl/openpyxl/workbook/workbook.pyi | 24 +++++++------------ .../openpyxl/openpyxl/worksheet/worksheet.pyi | 8 +++---- 4 files changed, 25 insertions(+), 27 deletions(-) diff --git a/stubs/openpyxl/openpyxl/cell/cell.pyi b/stubs/openpyxl/openpyxl/cell/cell.pyi index 6b2798e71be7..d6b80e5cefaa 100644 --- a/stubs/openpyxl/openpyxl/cell/cell.pyi +++ b/stubs/openpyxl/openpyxl/cell/cell.pyi @@ -1,10 +1,11 @@ from datetime import datetime from typing import Any + +from openpyxl.comments.comments import Comment from openpyxl.styles.cell_style import StyleArray from openpyxl.styles.styleable import StyleableObject from openpyxl.worksheet.hyperlink import Hyperlink from openpyxl.worksheet.worksheet import Worksheet -from openpyxl.comments.comments import Comment __docformat__: str TIME_TYPES: Any @@ -31,7 +32,12 @@ class Cell(StyleableObject): column: int data_type: str def __init__( - self, worksheet: Worksheet, row: int | None = ..., column: int | None = ..., value: str | float | int | datetime | None = ..., style_array: StyleArray | None = ... + self, + worksheet: Worksheet, + row: int | None = ..., + column: int | None = ..., + value: str | float | int | datetime | None = ..., + style_array: StyleArray | None = ..., ) -> None: ... @property def coordinate(self) -> str: ... diff --git a/stubs/openpyxl/openpyxl/reader/excel.pyi b/stubs/openpyxl/openpyxl/reader/excel.pyi index 1baab7a8133c..8c3feb36dd20 100644 --- a/stubs/openpyxl/openpyxl/reader/excel.pyi +++ b/stubs/openpyxl/openpyxl/reader/excel.pyi @@ -5,7 +5,6 @@ from openpyxl.workbook.workbook import Workbook SUPPORTED_FORMATS: Any - class ExcelReader: archive: Any valid_files: Any @@ -14,8 +13,7 @@ class ExcelReader: data_only: Any keep_links: Any shared_strings: Any - def __init__(self, fn: Any, read_only: bool = ..., keep_vba=..., - data_only: bool = ..., keep_links: bool = ...) -> None: ... + def __init__(self, fn: Any, read_only: bool = ..., keep_vba=..., data_only: bool = ..., keep_links: bool = ...) -> None: ... package: Any def read_manifest(self) -> None: ... def read_strings(self) -> None: ... @@ -28,6 +26,6 @@ class ExcelReader: def read_worksheets(self) -> None: ... def read(self) -> None: ... - -def load_workbook(filename: str, read_only: bool = ..., keep_vba: bool = ..., - data_only: bool = ..., keep_links: bool = ...) -> Workbook: ... +def load_workbook( + filename: str, read_only: bool = ..., keep_vba: bool = ..., data_only: bool = ..., keep_links: bool = ... +) -> Workbook: ... diff --git a/stubs/openpyxl/openpyxl/workbook/workbook.pyi b/stubs/openpyxl/openpyxl/workbook/workbook.pyi index 157d93bdb076..3d33fd67f1e3 100644 --- a/stubs/openpyxl/openpyxl/workbook/workbook.pyi +++ b/stubs/openpyxl/openpyxl/workbook/workbook.pyi @@ -1,11 +1,11 @@ -from openpyxl.worksheet.worksheet import Worksheet +from typing import Any, Iterator + from openpyxl.chartsheet.chartsheet import Chartsheet from openpyxl.styles.named_styles import NamedStyle -from typing import Any, Iterator +from openpyxl.worksheet.worksheet import Worksheet INTEGER_TYPES: Any - class Workbook: template: bool path: str @@ -22,9 +22,7 @@ class Workbook: rels: Any calculation: Any views: Any - def __init__(self, write_only: bool = ..., - iso_dates: bool = ...) -> None: ... - + def __init__(self, write_only: bool = ..., iso_dates: bool = ...) -> None: ... @property def epoch(self) -> Any: ... @epoch.setter @@ -41,15 +39,11 @@ class Workbook: def active(self) -> Worksheet: ... @active.setter def active(self, value: Worksheet) -> None: ... - def create_sheet(self, title: str | None = ..., - index: int | None = ...): ... - + def create_sheet(self, title: str | None = ..., index: int | None = ...): ... def move_sheet(self, sheet: Worksheet, offset: int = ...) -> None: ... def remove(self, worksheet: Worksheet) -> None: ... def remove_sheet(self, worksheet: Worksheet) -> None: ... - def create_chartsheet(self, title: str | None = ..., - index: int | None = ...) -> None: ... - + def create_chartsheet(self, title: str | None = ..., index: int | None = ...) -> None: ... def get_sheet_by_name(self, name: str) -> Worksheet: ... def __contains__(self, key: str) -> bool: ... def index(self, worksheet: Worksheet) -> int: ... @@ -64,9 +58,9 @@ class Workbook: def chartsheets(self) -> list[Chartsheet]: ... @property def sheetnames(self) -> list[str]: ... - def create_named_range(self, name: str, worksheet: Worksheet | None = ..., - value: str | Any | None = ..., scope: Any | None = ...) -> None: ... - + def create_named_range( + self, name: str, worksheet: Worksheet | None = ..., value: str | Any | None = ..., scope: Any | None = ... + ) -> None: ... def add_named_style(self, style: Any) -> None: ... @property def named_styles(self) -> list[NamedStyle]: ... diff --git a/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi b/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi index 32a26fa3211b..6c231a5ec253 100644 --- a/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi +++ b/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi @@ -1,13 +1,13 @@ from collections.abc import Generator +from typing import Any, Iterable, Iterator + +from openpyxl.cell.cell import Cell +from openpyxl.workbook.child import _WorkbookChild from openpyxl.workbook.workbook import Workbook from openpyxl.worksheet.cell_range import CellRange from openpyxl.worksheet.pagebreak import PageBreak from openpyxl.worksheet.table import Table, TableList from openpyxl.worksheet.views import SheetView -from openpyxl.cell.cell import Cell -from typing import Any, Iterable, Iterator - -from openpyxl.workbook.child import _WorkbookChild class Worksheet(_WorkbookChild): mime_type: str From ed44b078f9d74ec1c23481377fdfef34e68d2657 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 11 Jan 2023 17:02:55 +0000 Subject: [PATCH 3/9] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stubs/openpyxl/openpyxl/cell/cell.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/openpyxl/openpyxl/cell/cell.pyi b/stubs/openpyxl/openpyxl/cell/cell.pyi index 71ac922a2397..6370fb458f6a 100644 --- a/stubs/openpyxl/openpyxl/cell/cell.pyi +++ b/stubs/openpyxl/openpyxl/cell/cell.pyi @@ -1,6 +1,6 @@ +from _typeshed import Incomplete from datetime import datetime from typing import Any -from _typeshed import Incomplete from openpyxl.comments.comments import Comment from openpyxl.styles.cell_style import StyleArray From 933b9f7cc44cd62c6d245f3ba5813317d2bfbfc0 Mon Sep 17 00:00:00 2001 From: Alex Waygood Date: Wed, 11 Jan 2023 17:07:08 +0000 Subject: [PATCH 4/9] Add back missing import --- stubs/openpyxl/openpyxl/reader/excel.pyi | 1 + 1 file changed, 1 insertion(+) diff --git a/stubs/openpyxl/openpyxl/reader/excel.pyi b/stubs/openpyxl/openpyxl/reader/excel.pyi index 128ce4295322..3d8a1f1b979e 100644 --- a/stubs/openpyxl/openpyxl/reader/excel.pyi +++ b/stubs/openpyxl/openpyxl/reader/excel.pyi @@ -1,4 +1,5 @@ from _typeshed import Incomplete +from typing import Any from openpyxl.chartsheet.chartsheet import Chartsheet from openpyxl.workbook.workbook import Workbook From 2f0d3c5cef65be889ca04855f3e87f2e2bb7ceac Mon Sep 17 00:00:00 2001 From: Mynhardt Burger Date: Sun, 19 Feb 2023 17:22:40 -0500 Subject: [PATCH 5/9] Implement suggested changes --- stubs/openpyxl/openpyxl/cell/cell.pyi | 29 +++++----- stubs/openpyxl/openpyxl/reader/excel.pyi | 16 ++++-- stubs/openpyxl/openpyxl/workbook/workbook.pyi | 40 +++++++------ .../openpyxl/openpyxl/worksheet/worksheet.pyi | 56 ++++++++++--------- 4 files changed, 76 insertions(+), 65 deletions(-) diff --git a/stubs/openpyxl/openpyxl/cell/cell.pyi b/stubs/openpyxl/openpyxl/cell/cell.pyi index 6370fb458f6a..ce7c7df30a53 100644 --- a/stubs/openpyxl/openpyxl/cell/cell.pyi +++ b/stubs/openpyxl/openpyxl/cell/cell.pyi @@ -1,6 +1,5 @@ from _typeshed import Incomplete from datetime import datetime -from typing import Any from openpyxl.comments.comments import Comment from openpyxl.styles.cell_style import StyleArray @@ -25,8 +24,8 @@ TYPE_ERROR: str TYPE_FORMULA_CACHE_STRING: str VALID_TYPES: Incomplete -def get_type(t: Any, value: Any) -> Any: ... -def get_time_format(t: Any) -> Any: ... +def get_type(t: type, value: object) -> str | None: ... +def get_time_format(t: datetime) -> str: ... class Cell(StyleableObject): row: int @@ -37,7 +36,7 @@ class Cell(StyleableObject): worksheet: Worksheet, row: int | None = ..., column: int | None = ..., - value: str | float | int | datetime | None = ..., + value: str | float | datetime | None = ..., style_array: StyleArray | None = ..., ) -> None: ... @property @@ -49,31 +48,31 @@ class Cell(StyleableObject): @property def encoding(self) -> str: ... @property - def base_date(self) -> Any: ... + def base_date(self) -> datetime: ... def check_string(self, value: str): ... - def check_error(self, value: Any) -> Any | str: ... + def check_error(self, value: object) -> str: ... @property - def value(self) -> str | float | int | datetime | None: ... + def value(self) -> str | float | datetime | None: ... @value.setter - def value(self, value: str | float | int | datetime | None) -> None: ... + def value(self, value: str | float | datetime | None) -> None: ... @property - def internal_value(self) -> Any: ... + def internal_value(self) -> str | float | datetime | None: ... @property - def hyperlink(self) -> Hyperlink | str: ... + def hyperlink(self) -> Hyperlink | None: ... @hyperlink.setter def hyperlink(self, val: Hyperlink | str | None) -> None: ... @property def is_date(self) -> bool: ... def offset(self, row: int = ..., column: int = ...) -> Cell: ... @property - def comment(self) -> Comment: ... + def comment(self) -> Comment | None: ... @comment.setter - def comment(self, value: Comment) -> None: ... + def comment(self, value: Comment | None) -> None: ... class MergedCell(StyleableObject): data_type: str - comment: Comment - hyperlink: Hyperlink + comment: Comment | None + hyperlink: Hyperlink | None row: int column: int def __init__(self, worksheet: Worksheet, row: int | None = ..., column: int | None = ...) -> None: ... @@ -81,4 +80,4 @@ class MergedCell(StyleableObject): def coordinate(self) -> str: ... value: str | float | int | datetime | None -def WriteOnlyCell(ws: Worksheet | None = ..., value: str | float | int | datetime | None = ...) -> Cell: ... +def WriteOnlyCell(ws: Worksheet | None = ..., value: str | float | datetime | None = ...) -> Cell: ... diff --git a/stubs/openpyxl/openpyxl/reader/excel.pyi b/stubs/openpyxl/openpyxl/reader/excel.pyi index 3d8a1f1b979e..81db9f7f3be5 100644 --- a/stubs/openpyxl/openpyxl/reader/excel.pyi +++ b/stubs/openpyxl/openpyxl/reader/excel.pyi @@ -1,7 +1,7 @@ -from _typeshed import Incomplete -from typing import Any +from _typeshed import Incomplete, SupportsRead from openpyxl.chartsheet.chartsheet import Chartsheet +from openpyxl.packaging.relationship import Relationship from openpyxl.workbook.workbook import Workbook SUPPORTED_FORMATS: Incomplete @@ -14,7 +14,9 @@ class ExcelReader: data_only: Incomplete keep_links: Incomplete shared_strings: Incomplete - def __init__(self, fn: Any, read_only: bool = ..., keep_vba=..., data_only: bool = ..., keep_links: bool = ...) -> None: ... + def __init__( + self, fn: SupportsRead[bytes] | str, read_only: bool = ..., keep_vba=..., data_only: bool = ..., keep_links: bool = ... + ) -> None: ... package: Incomplete def read_manifest(self) -> None: ... def read_strings(self) -> None: ... @@ -23,10 +25,14 @@ class ExcelReader: def read_workbook(self) -> None: ... def read_properties(self) -> None: ... def read_theme(self) -> None: ... - def read_chartsheet(self, sheet: Chartsheet, rel: Any) -> None: ... + def read_chartsheet(self, sheet: Chartsheet, rel: Relationship) -> None: ... def read_worksheets(self) -> None: ... def read(self) -> None: ... def load_workbook( - filename: str, read_only: bool = ..., keep_vba: bool = ..., data_only: bool = ..., keep_links: bool = ... + filename: SupportsRead[bytes] | str, + read_only: bool = ..., + keep_vba: bool = ..., + data_only: bool = ..., + keep_links: bool = ..., ) -> Workbook: ... diff --git a/stubs/openpyxl/openpyxl/workbook/workbook.pyi b/stubs/openpyxl/openpyxl/workbook/workbook.pyi index a2c5c176a873..c18e03905196 100644 --- a/stubs/openpyxl/openpyxl/workbook/workbook.pyi +++ b/stubs/openpyxl/openpyxl/workbook/workbook.pyi @@ -1,8 +1,12 @@ from _typeshed import Incomplete -from typing import Any, Iterator +from collections.abc import Iterator +from datetime import datetime from openpyxl.chartsheet.chartsheet import Chartsheet from openpyxl.styles.named_styles import NamedStyle +from openpyxl.workbook.child import _WorkbookChild +from openpyxl.workbook.defined_name import DefinedName, DefinedNameList +from openpyxl.worksheet._write_only import WriteOnlyWorksheet from openpyxl.worksheet.worksheet import Worksheet INTEGER_TYPES: Incomplete @@ -25,9 +29,9 @@ class Workbook: views: Incomplete def __init__(self, write_only: bool = ..., iso_dates: bool = ...) -> None: ... @property - def epoch(self) -> Any: ... + def epoch(self) -> datetime: ... @epoch.setter - def epoch(self, value: Any) -> None: ... + def epoch(self, value: datetime) -> None: ... @property def read_only(self) -> bool: ... @property @@ -35,16 +39,16 @@ class Workbook: @property def write_only(self) -> bool: ... @property - def excel_base_date(self) -> Any: ... + def excel_base_date(self) -> datetime: ... @property - def active(self) -> Worksheet: ... + def active(self) -> _WorkbookChild | None: ... @active.setter - def active(self, value: Worksheet) -> None: ... + def active(self, value: _WorkbookChild | int) -> None: ... def create_sheet(self, title: str | None = ..., index: int | None = ...): ... - def move_sheet(self, sheet: Worksheet, offset: int = ...) -> None: ... + def move_sheet(self, sheet: Worksheet | str, offset: int = ...) -> None: ... def remove(self, worksheet: Worksheet) -> None: ... def remove_sheet(self, worksheet: Worksheet) -> None: ... - def create_chartsheet(self, title: str | None = ..., index: int | None = ...) -> None: ... + def create_chartsheet(self, title: str | None = ..., index: int | None = ...) -> Chartsheet | None: ... def get_sheet_by_name(self, name: str) -> Worksheet: ... def __contains__(self, key: str) -> bool: ... def index(self, worksheet: Worksheet) -> int: ... @@ -60,19 +64,19 @@ class Workbook: @property def sheetnames(self) -> list[str]: ... def create_named_range( - self, name: str, worksheet: Worksheet | None = ..., value: str | Any | None = ..., scope: Incomplete | None = ... + self, name: str, worksheet: Worksheet | None = ..., value: str | Incomplete | None = ..., scope: Incomplete | None = ... ) -> None: ... - def add_named_style(self, style: Any) -> None: ... + def add_named_style(self, style: NamedStyle) -> None: ... @property - def named_styles(self) -> list[NamedStyle]: ... - def get_named_ranges(self) -> list[Any]: ... - def add_named_range(self, named_range: Any) -> None: ... - def get_named_range(self, name: Any) -> Any: ... - def remove_named_range(self, named_range: Any) -> None: ... + def named_styles(self) -> list[str]: ... + def get_named_ranges(self) -> DefinedNameList: ... + def add_named_range(self, named_range: DefinedName) -> None: ... + def get_named_range(self, name: str) -> DefinedName: ... + def remove_named_range(self, named_range: DefinedName) -> None: ... @property - def mime_type(self) -> Any: ... + def mime_type(self) -> str: ... def save(self, filename: str) -> None: ... @property - def style_names(self) -> list[NamedStyle]: ... - def copy_worksheet(self, from_worksheet: Worksheet) -> Worksheet: ... + def style_names(self) -> list[str]: ... + def copy_worksheet(self, from_worksheet: Worksheet) -> Worksheet | WriteOnlyWorksheet: ... def close(self) -> None: ... diff --git a/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi b/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi index 9381b18dffe3..57cd963230e4 100644 --- a/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi +++ b/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi @@ -1,12 +1,14 @@ from _typeshed import Incomplete from collections.abc import Generator, Iterable, Iterator -from typing import Any +from datetime import datetime +from typing_extensions import Literal from openpyxl.cell.cell import Cell from openpyxl.workbook.child import _WorkbookChild from openpyxl.workbook.workbook import Workbook from openpyxl.worksheet.cell_range import CellRange -from openpyxl.worksheet.pagebreak import PageBreak +from openpyxl.worksheet.datavalidation import DataValidation +from openpyxl.worksheet.pagebreak import ColBreak, RowBreak from openpyxl.worksheet.table import Table, TableList from openpyxl.worksheet.views import SheetView @@ -39,19 +41,19 @@ class Worksheet(_WorkbookChild): @property def active_cell(self) -> Cell: ... @property - def page_breaks(self) -> PageBreak: ... + def page_breaks(self) -> tuple[RowBreak, ColBreak]: ... @property - def show_gridlines(self) -> Any: ... + def show_gridlines(self) -> bool: ... @property - def show_summary_below(self) -> Any: ... + def show_summary_below(self) -> bool: ... @property - def show_summary_right(self) -> Any: ... + def show_summary_right(self) -> bool: ... @property - def freeze_panes(self) -> Any: ... + def freeze_panes(self) -> str | None: ... @freeze_panes.setter def freeze_panes(self, topLeftCell: Incomplete | None = ...) -> None: ... def cell(self, row: int, column: int, value: str | None = ...) -> Cell: ... - def __getitem__(self, key: str) -> Cell | tuple[Cell]: ... + def __getitem__(self, key: str | int | slice) -> Cell | tuple[Cell, ...]: ... def __setitem__(self, key: str, value: str) -> None: ... def __iter__(self) -> Iterator[Cell]: ... def __delitem__(self, key: str) -> None: ... @@ -73,11 +75,11 @@ class Worksheet(_WorkbookChild): min_col: int | None = ..., max_col: int | None = ..., values_only: bool = ..., - ) -> Generator[Iterable[Cell], None, None]: ... + ) -> Generator[Cell | str | float | datetime | None, None, None]: ... @property - def rows(self) -> Generator[Iterable[Cell], None, None]: ... + def rows(self) -> Generator[Cell, None, None]: ... @property - def values(self) -> Generator[str | None, None, None]: ... + def values(self) -> Generator[str | float | datetime | None, None, None]: ... def iter_cols( self, min_col: int | None = ..., @@ -85,17 +87,17 @@ class Worksheet(_WorkbookChild): min_row: int | None = ..., max_row: int | None = ..., values_only: bool = ..., - ) -> Generator[Iterable[Cell], None, None]: ... + ) -> Generator[Cell | str | float | datetime | None, None, None]: ... @property - def columns(self) -> Generator[Iterable[Cell], None, None]: ... - def set_printer_settings(self, paper_size: Any, orientation: Any) -> None: ... - def add_data_validation(self, data_validation: Any) -> None: ... - def add_chart(self, chart: Any, anchor: Incomplete | None = ...) -> None: ... - def add_image(self, img: Any, anchor: Incomplete | None = ...) -> None: ... + def columns(self) -> Generator[Cell, None, None]: ... + def set_printer_settings(self, paper_size: int, orientation: None | Literal["default", "portrait", "landscape"]) -> None: ... + def add_data_validation(self, data_validation: DataValidation) -> None: ... + def add_chart(self, chart: Incomplete, anchor: Incomplete | None = ...) -> None: ... + def add_image(self, img: Incomplete, anchor: Incomplete | None = ...) -> None: ... def add_table(self, table: Table) -> None: ... @property def tables(self) -> TableList: ... - def add_pivot(self, pivot: Any) -> None: ... + def add_pivot(self, pivot: Incomplete) -> None: ... def merge_cells( self, range_string: str | None = ..., @@ -114,23 +116,23 @@ class Worksheet(_WorkbookChild): end_row: int | None = ..., end_column: int | None = ..., ) -> None: ... - def append(self, iterable: Iterable[Any]) -> None: ... + def append(self, iterable: Iterable[Incomplete]) -> None: ... def insert_rows(self, idx: int, amount: int = ...) -> None: ... def insert_cols(self, idx: int, amount: int = ...) -> None: ... def delete_rows(self, idx: int, amount: int = ...) -> None: ... def delete_cols(self, idx: int, amount: int = ...) -> None: ... - def move_range(self, cell_range: CellRange, rows: int = ..., cols: int = ..., translate: bool = ...) -> None: ... + def move_range(self, cell_range: CellRange | str, rows: int = ..., cols: int = ..., translate: bool = ...) -> None: ... @property - def print_title_rows(self) -> Any: ... + def print_title_rows(self) -> str: ... @print_title_rows.setter - def print_title_rows(self, rows: int) -> None: ... + def print_title_rows(self, rows: str | None) -> None: ... @property - def print_title_cols(self) -> Any: ... + def print_title_cols(self) -> str: ... @print_title_cols.setter - def print_title_cols(self, cols: int) -> None: ... + def print_title_cols(self, cols: str | None) -> None: ... @property - def print_titles(self) -> Any: ... + def print_titles(self) -> str: ... @property - def print_area(self) -> Any: ... + def print_area(self) -> list[str]: ... @print_area.setter - def print_area(self, value: str) -> None: ... + def print_area(self, value: str | Iterable[str]) -> None: ... From 8ed83b411545cafe16c5d2c9d0089dd6f12e1f8a Mon Sep 17 00:00:00 2001 From: Alex Waygood Date: Mon, 20 Feb 2023 14:02:59 +0000 Subject: [PATCH 6/9] Add overloads for `iter_rows` and `iter_cols` --- .../openpyxl/openpyxl/worksheet/worksheet.pyi | 67 +++++++++++++++++-- 1 file changed, 63 insertions(+), 4 deletions(-) diff --git a/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi b/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi index 57cd963230e4..703ab74f47f4 100644 --- a/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi +++ b/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi @@ -1,6 +1,7 @@ from _typeshed import Incomplete from collections.abc import Generator, Iterable, Iterator from datetime import datetime +from typing import overload from typing_extensions import Literal from openpyxl.cell.cell import Cell @@ -68,26 +69,84 @@ class Worksheet(_WorkbookChild): def calculate_dimension(self) -> str: ... @property def dimensions(self) -> str: ... + @overload + def iter_rows( + self, min_row: int | None, max_row: int | None, min_col: int | None, max_col: int | None, values_only: Literal[True] + ) -> Generator[tuple[str | float | datetime | None, ...], None, None]: ... + @overload + def iter_rows( + self, + min_row: int | None = None, + max_row: int | None = None, + min_col: int | None = None, + max_col: int | None = None, + *, + values_only: Literal[True], + ) -> Generator[tuple[str | float | datetime | None, ...], None, None]: ... + @overload def iter_rows( self, min_row: int | None = ..., max_row: int | None = ..., min_col: int | None = ..., max_col: int | None = ..., - values_only: bool = ..., - ) -> Generator[Cell | str | float | datetime | None, None, None]: ... + values_only: Literal[False] = False, + ) -> Generator[tuple[Cell, ...], None, None]: ... + @overload + def iter_rows( + self, min_row: int | None, max_row: int | None, min_col: int | None, max_col: int | None, values_only: bool + ) -> Generator[tuple[Cell | str | float | datetime | None, ...], None, None]: ... + @overload + def iter_rows( + self, + min_row: int | None = None, + max_row: int | None = None, + min_col: int | None = None, + max_col: int | None = None, + *, + values_only: bool, + ) -> Generator[tuple[Cell | str | float | datetime | None, ...], None, None]: ... @property def rows(self) -> Generator[Cell, None, None]: ... @property def values(self) -> Generator[str | float | datetime | None, None, None]: ... + @overload + def iter_cols( + self, min_col: int | None, max_col: int | None, min_row: int | None, max_row: int | None, values_only: Literal[True] + ) -> Generator[tuple[str | float | datetime | None, ...], None, None]: ... + @overload + def iter_cols( + self, + min_col: int | None = None, + max_col: int | None = None, + min_row: int | None = None, + max_row: int | None = None, + *, + values_only: Literal[True], + ) -> Generator[tuple[str | float | datetime | None, ...], None, None]: ... + @overload def iter_cols( self, min_col: int | None = ..., max_col: int | None = ..., min_row: int | None = ..., max_row: int | None = ..., - values_only: bool = ..., - ) -> Generator[Cell | str | float | datetime | None, None, None]: ... + values_only: Literal[False] = False, + ) -> Generator[tuple[Cell, ...], None, None]: ... + @overload + def iter_cols( + self, min_col: int | None, max_col: int | None, min_row: int | None, max_row: int | None, values_only: bool + ) -> Generator[tuple[Cell | str | float | datetime | None, ...], None, None]: ... + @overload + def iter_cols( + self, + min_col: int | None = None, + max_col: int | None = None, + min_row: int | None = None, + max_row: int | None = None, + *, + values_only: bool, + ) -> Generator[tuple[Cell | str | float | datetime | None, ...], None, None]: ... @property def columns(self) -> Generator[Cell, None, None]: ... def set_printer_settings(self, paper_size: int, orientation: None | Literal["default", "portrait", "landscape"]) -> None: ... From 04f0e7bdbcea261c4a936d23128efcdff760e0d6 Mon Sep 17 00:00:00 2001 From: Mynhardt Burger Date: Mon, 20 Feb 2023 15:28:47 -0500 Subject: [PATCH 7/9] Suggested changes and clearing mypy_primer errors --- stubs/openpyxl/openpyxl/reader/excel.pyi | 4 ++-- stubs/openpyxl/openpyxl/workbook/workbook.pyi | 11 ++++++----- stubs/openpyxl/openpyxl/worksheet/worksheet.pyi | 16 +++++++++------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/stubs/openpyxl/openpyxl/reader/excel.pyi b/stubs/openpyxl/openpyxl/reader/excel.pyi index 81db9f7f3be5..28a99d45b868 100644 --- a/stubs/openpyxl/openpyxl/reader/excel.pyi +++ b/stubs/openpyxl/openpyxl/reader/excel.pyi @@ -1,4 +1,4 @@ -from _typeshed import Incomplete, SupportsRead +from _typeshed import Incomplete, StrPath, SupportsRead from openpyxl.chartsheet.chartsheet import Chartsheet from openpyxl.packaging.relationship import Relationship @@ -30,7 +30,7 @@ class ExcelReader: def read(self) -> None: ... def load_workbook( - filename: SupportsRead[bytes] | str, + filename: SupportsRead[bytes] | StrPath, read_only: bool = ..., keep_vba: bool = ..., data_only: bool = ..., diff --git a/stubs/openpyxl/openpyxl/workbook/workbook.pyi b/stubs/openpyxl/openpyxl/workbook/workbook.pyi index c18e03905196..1c22fae0353e 100644 --- a/stubs/openpyxl/openpyxl/workbook/workbook.pyi +++ b/stubs/openpyxl/openpyxl/workbook/workbook.pyi @@ -1,11 +1,12 @@ -from _typeshed import Incomplete +from _typeshed import Incomplete, StrPath from collections.abc import Iterator from datetime import datetime +from typing import IO from openpyxl.chartsheet.chartsheet import Chartsheet from openpyxl.styles.named_styles import NamedStyle from openpyxl.workbook.child import _WorkbookChild -from openpyxl.workbook.defined_name import DefinedName, DefinedNameList +from openpyxl.workbook.defined_name import DefinedName from openpyxl.worksheet._write_only import WriteOnlyWorksheet from openpyxl.worksheet.worksheet import Worksheet @@ -48,7 +49,7 @@ class Workbook: def move_sheet(self, sheet: Worksheet | str, offset: int = ...) -> None: ... def remove(self, worksheet: Worksheet) -> None: ... def remove_sheet(self, worksheet: Worksheet) -> None: ... - def create_chartsheet(self, title: str | None = ..., index: int | None = ...) -> Chartsheet | None: ... + def create_chartsheet(self, title: str | None = ..., index: int | None = ...) -> Chartsheet: ... def get_sheet_by_name(self, name: str) -> Worksheet: ... def __contains__(self, key: str) -> bool: ... def index(self, worksheet: Worksheet) -> int: ... @@ -69,13 +70,13 @@ class Workbook: def add_named_style(self, style: NamedStyle) -> None: ... @property def named_styles(self) -> list[str]: ... - def get_named_ranges(self) -> DefinedNameList: ... + def get_named_ranges(self) -> list[DefinedName] | tuple[DefinedName]: ... def add_named_range(self, named_range: DefinedName) -> None: ... def get_named_range(self, name: str) -> DefinedName: ... def remove_named_range(self, named_range: DefinedName) -> None: ... @property def mime_type(self) -> str: ... - def save(self, filename: str) -> None: ... + def save(self, filename: StrPath | IO[bytes]) -> None: ... @property def style_names(self) -> list[str]: ... def copy_worksheet(self, from_worksheet: Worksheet) -> Worksheet | WriteOnlyWorksheet: ... diff --git a/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi b/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi index 703ab74f47f4..a5e49fe5b9ed 100644 --- a/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi +++ b/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi @@ -149,14 +149,16 @@ class Worksheet(_WorkbookChild): ) -> Generator[tuple[Cell | str | float | datetime | None, ...], None, None]: ... @property def columns(self) -> Generator[Cell, None, None]: ... - def set_printer_settings(self, paper_size: int, orientation: None | Literal["default", "portrait", "landscape"]) -> None: ... + def set_printer_settings( + self, paper_size: int | None, orientation: None | Literal["default", "portrait", "landscape"] + ) -> None: ... def add_data_validation(self, data_validation: DataValidation) -> None: ... - def add_chart(self, chart: Incomplete, anchor: Incomplete | None = ...) -> None: ... - def add_image(self, img: Incomplete, anchor: Incomplete | None = ...) -> None: ... + def add_chart(self, chart, anchor: Incomplete | None = ...) -> None: ... + def add_image(self, img, anchor: Incomplete | None = ...) -> None: ... def add_table(self, table: Table) -> None: ... @property def tables(self) -> TableList: ... - def add_pivot(self, pivot: Incomplete) -> None: ... + def add_pivot(self, pivot) -> None: ... def merge_cells( self, range_string: str | None = ..., @@ -182,15 +184,15 @@ class Worksheet(_WorkbookChild): def delete_cols(self, idx: int, amount: int = ...) -> None: ... def move_range(self, cell_range: CellRange | str, rows: int = ..., cols: int = ..., translate: bool = ...) -> None: ... @property - def print_title_rows(self) -> str: ... + def print_title_rows(self) -> str | None: ... @print_title_rows.setter def print_title_rows(self, rows: str | None) -> None: ... @property - def print_title_cols(self) -> str: ... + def print_title_cols(self) -> str | None: ... @print_title_cols.setter def print_title_cols(self, cols: str | None) -> None: ... @property - def print_titles(self) -> str: ... + def print_titles(self) -> str | None: ... @property def print_area(self) -> list[str]: ... @print_area.setter From 12c1e4962f89e85a5dec2311e8601ed1551c63bd Mon Sep 17 00:00:00 2001 From: Mynhardt Burger Date: Tue, 21 Feb 2023 09:16:42 -0500 Subject: [PATCH 8/9] Correct workbook.get_named_ranges() --- stubs/openpyxl/openpyxl/workbook/workbook.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stubs/openpyxl/openpyxl/workbook/workbook.pyi b/stubs/openpyxl/openpyxl/workbook/workbook.pyi index 1c22fae0353e..528f19c1c1d3 100644 --- a/stubs/openpyxl/openpyxl/workbook/workbook.pyi +++ b/stubs/openpyxl/openpyxl/workbook/workbook.pyi @@ -1,5 +1,5 @@ from _typeshed import Incomplete, StrPath -from collections.abc import Iterator +from collections.abc import Iterator, Sequence from datetime import datetime from typing import IO @@ -70,7 +70,7 @@ class Workbook: def add_named_style(self, style: NamedStyle) -> None: ... @property def named_styles(self) -> list[str]: ... - def get_named_ranges(self) -> list[DefinedName] | tuple[DefinedName]: ... + def get_named_ranges(self) -> list[DefinedName] | tuple[DefinedName, ...]: ... def add_named_range(self, named_range: DefinedName) -> None: ... def get_named_range(self, name: str) -> DefinedName: ... def remove_named_range(self, named_range: DefinedName) -> None: ... From dd3da246d1209361c499b7fe3f6221fdcf014d6c Mon Sep 17 00:00:00 2001 From: Mynhardt Burger Date: Tue, 21 Feb 2023 09:30:38 -0500 Subject: [PATCH 9/9] Remove unused Sequence import --- stubs/openpyxl/openpyxl/workbook/workbook.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/openpyxl/openpyxl/workbook/workbook.pyi b/stubs/openpyxl/openpyxl/workbook/workbook.pyi index 528f19c1c1d3..5b5543e64220 100644 --- a/stubs/openpyxl/openpyxl/workbook/workbook.pyi +++ b/stubs/openpyxl/openpyxl/workbook/workbook.pyi @@ -1,5 +1,5 @@ from _typeshed import Incomplete, StrPath -from collections.abc import Iterator, Sequence +from collections.abc import Iterator from datetime import datetime from typing import IO