diff --git a/stubs/openpyxl/openpyxl/cell/cell.pyi b/stubs/openpyxl/openpyxl/cell/cell.pyi index f8a90b74b..1f4ee9568 100644 --- a/stubs/openpyxl/openpyxl/cell/cell.pyi +++ b/stubs/openpyxl/openpyxl/cell/cell.pyi @@ -1,8 +1,8 @@ -from _typeshed import Incomplete from datetime import date, datetime, time, timedelta from decimal import Decimal +from re import Pattern from typing import overload -from typing_extensions import TypeAlias +from typing_extensions import Final, TypeAlias from openpyxl.cell.rich_text import CellRichText from openpyxl.comments.comments import Comment @@ -12,26 +12,30 @@ from openpyxl.worksheet.formula import ArrayFormula, DataTableFormula from openpyxl.worksheet.hyperlink import Hyperlink from openpyxl.worksheet.worksheet import Worksheet +_TimeTypes: TypeAlias = datetime | date | time | timedelta _CellValue: TypeAlias = ( # if numpy is installed also numpy bool and number types - bool | float | Decimal | str | CellRichText | date | time | timedelta | DataTableFormula | ArrayFormula + bool | float | Decimal | str | CellRichText | _TimeTypes | DataTableFormula | ArrayFormula ) -__docformat__: str -TIME_TYPES: Incomplete -TIME_FORMATS: Incomplete -STRING_TYPES: Incomplete -KNOWN_TYPES: Incomplete -ILLEGAL_CHARACTERS_RE: Incomplete -ERROR_CODES: Incomplete -TYPE_STRING: str -TYPE_FORMULA: str -TYPE_NUMERIC: str -TYPE_BOOL: str -TYPE_NULL: str -TYPE_INLINE: str -TYPE_ERROR: str -TYPE_FORMULA_CACHE_STRING: str -VALID_TYPES: Incomplete +__docformat__: Final = "restructuredtext en" +TIME_TYPES: Final[tuple[type, ...]] +TIME_FORMATS: Final[dict[type[_TimeTypes], str]] +STRING_TYPES: Final[tuple[type, ...]] +KNOWN_TYPES: Final[tuple[type, ...]] + +ILLEGAL_CHARACTERS_RE: Final[Pattern[str]] +ERROR_CODES: Final[tuple[str, ...]] + +TYPE_STRING: Final = "s" +TYPE_FORMULA: Final = "f" +TYPE_NUMERIC: Final = "n" +TYPE_BOOL: Final = "b" +TYPE_NULL: Final = "n" +TYPE_INLINE: Final = "inlineStr" +TYPE_ERROR: Final = "e" +TYPE_FORMULA_CACHE_STRING: Final = "str" + +VALID_TYPES: Final[tuple[str, ...]] def get_type(t: type, value: object) -> str | None: ... def get_time_format(t: datetime) -> str: ... diff --git a/stubs/openpyxl/openpyxl/cell/read_only.pyi b/stubs/openpyxl/openpyxl/cell/read_only.pyi index 2d1085d3c..71e54e185 100644 --- a/stubs/openpyxl/openpyxl/cell/read_only.pyi +++ b/stubs/openpyxl/openpyxl/cell/read_only.pyi @@ -1,4 +1,5 @@ from _typeshed import Incomplete +from typing_extensions import Final class ReadOnlyCell: parent: Incomplete @@ -48,4 +49,4 @@ class EmptyCell: alignment: Incomplete data_type: str -EMPTY_CELL: Incomplete +EMPTY_CELL: Final[EmptyCell] diff --git a/stubs/openpyxl/openpyxl/compat/numbers.pyi b/stubs/openpyxl/openpyxl/compat/numbers.pyi index 2d5d36fc1..5e49423c0 100644 --- a/stubs/openpyxl/openpyxl/compat/numbers.pyi +++ b/stubs/openpyxl/openpyxl/compat/numbers.pyi @@ -1,4 +1,17 @@ -from _typeshed import Incomplete +from decimal import Decimal +from typing_extensions import Final, TypeAlias -NUMERIC_TYPES: Incomplete -NUMPY: bool +# NOTE: Can't specify numpy as a dependency because openpyxl doesn't declare it as one +# import numpy +# if sys.version_info >= (3, 8): +# import numpy._typing + +# _NBitBase: TypeAlias = numpy._typing.NBitBase +# else: +# _NBitBase: TypeAlias = Any +# _NumericTypes: TypeAlias = int | float | Decimal | numpy.bool_ | numpy.floating[_NBitBase] | numpy.integer[_NBitBase] + +_NumericTypes: TypeAlias = int | float | Decimal +NUMERIC_TYPES: Final[tuple[type[_NumericTypes], ...]] + +NUMPY: Final[bool] diff --git a/stubs/openpyxl/openpyxl/compat/strings.pyi b/stubs/openpyxl/openpyxl/compat/strings.pyi index 0e3080ebd..7a6789a20 100644 --- a/stubs/openpyxl/openpyxl/compat/strings.pyi +++ b/stubs/openpyxl/openpyxl/compat/strings.pyi @@ -1,5 +1,6 @@ -from _typeshed import Incomplete +import sys +from typing_extensions import Final -VER: Incomplete +VER: Final[sys._version_info] def safe_string(value): ... diff --git a/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi b/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi index 671ed3a82..b037fcae6 100644 --- a/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi +++ b/stubs/openpyxl/openpyxl/descriptors/serialisable.pyi @@ -1,10 +1,11 @@ from _typeshed import Incomplete -from typing import ClassVar +from typing import Any, ClassVar +from typing_extensions import Final from openpyxl.descriptors import MetaSerialisable -KEYWORDS: Incomplete -seq_types: Incomplete +KEYWORDS: Final[frozenset[str]] +seq_types: Final[tuple[type[list[Any]], type[tuple[Any, ...]]]] class Serialisable(metaclass=MetaSerialisable): # These dunders are always set at runtime by MetaSerialisable so they can't be None diff --git a/stubs/openpyxl/openpyxl/drawing/colors.pyi b/stubs/openpyxl/openpyxl/drawing/colors.pyi index 8a1cb0858..5c358ea2e 100644 --- a/stubs/openpyxl/openpyxl/drawing/colors.pyi +++ b/stubs/openpyxl/openpyxl/drawing/colors.pyi @@ -1,6 +1,6 @@ from _typeshed import Incomplete from typing import ClassVar, overload -from typing_extensions import Literal, TypeAlias +from typing_extensions import Final, Literal, TypeAlias from openpyxl.descriptors import Strict, Typed from openpyxl.descriptors.base import Alias, Integer, MinMax, Set, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt @@ -43,7 +43,7 @@ _SystemColorVal: TypeAlias = Literal[ "menuHighlight", "menuBar", ] -_SchemeColorVal: TypeAlias = Literal[ +_SchemeColors: TypeAlias = Literal[ "bg1", "tx1", "bg2", @@ -255,8 +255,8 @@ _PresetColors: TypeAlias = Literal[ "yellowGreen", ] -PRESET_COLORS: list[_PresetColors] -SCHEME_COLORS: Incomplete +PRESET_COLORS: Final[list[_PresetColors]] +SCHEME_COLORS: Final[list[_SchemeColors]] class Transform(Serialisable): ... @@ -375,7 +375,7 @@ class SchemeColor(Serialisable): blueMod: NestedInteger[Literal[True]] gamma: EmptyTag[Literal[True]] invGamma: EmptyTag[Literal[True]] - val: Set[_SchemeColorVal] + val: Set[_SchemeColors] __elements__: ClassVar[tuple[str, ...]] @overload def __init__( @@ -409,7 +409,7 @@ class SchemeColor(Serialisable): gamma: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, invGamma: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None = None, *, - val: _SchemeColorVal, + val: _SchemeColors, ) -> None: ... @overload def __init__( @@ -442,7 +442,7 @@ class SchemeColor(Serialisable): blueMod: _HasTagAndGet[_ConvertibleToInt | None] | _ConvertibleToInt | None, gamma: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None, invGamma: _HasTagAndGet[_ConvertibleToBool | None] | _ConvertibleToBool | None, - val: _SchemeColorVal, + val: _SchemeColors, ) -> None: ... class ColorChoice(Serialisable): @@ -467,7 +467,7 @@ class ColorChoice(Serialisable): prstClr: _NestedNoneSetParam[_PresetColors] = None, ) -> None: ... -_COLOR_SET: tuple[_ColorSetType, ...] +_COLOR_SET: Final[tuple[_ColorSetType, ...]] class ColorMapping(Serialisable): tagname: str diff --git a/stubs/openpyxl/openpyxl/formula/tokenizer.pyi b/stubs/openpyxl/openpyxl/formula/tokenizer.pyi index 4f2561741..6b7d97431 100644 --- a/stubs/openpyxl/openpyxl/formula/tokenizer.pyi +++ b/stubs/openpyxl/openpyxl/formula/tokenizer.pyi @@ -1,13 +1,15 @@ from _typeshed import Incomplete +from re import Pattern +from typing_extensions import Final class TokenizerError(Exception): ... class Tokenizer: - SN_RE: Incomplete - WSPACE_RE: Incomplete - STRING_REGEXES: Incomplete - ERROR_CODES: Incomplete - TOKEN_ENDERS: str + SN_RE: Final[Pattern[str]] + WSPACE_RE: Final[Pattern[str]] + STRING_REGEXES: Final[dict[str, Pattern[str]]] + ERROR_CODES: Final[tuple[str, ...]] + TOKEN_ENDERS: Final = ",;}) +-*/^&=><%" formula: Incomplete items: Incomplete token_stack: Incomplete @@ -20,33 +22,33 @@ class Tokenizer: def render(self): ... class Token: - LITERAL: str - OPERAND: str - FUNC: str - ARRAY: str - PAREN: str - SEP: str - OP_PRE: str - OP_IN: str - OP_POST: str - WSPACE: str + LITERAL: Final = "LITERAL" + OPERAND: Final = "OPERAND" + FUNC: Final = "FUNC" + ARRAY: Final = "ARRAY" + PAREN: Final = "PAREN" + SEP: Final = "SEP" + OP_PRE: Final = "OPERATOR-PREFIX" + OP_IN: Final = "OPERATOR-INFIX" + OP_POST: Final = "OPERATOR-POSTFIX" + WSPACE: Final = "WHITE-SPACE" value: Incomplete type: Incomplete subtype: Incomplete def __init__(self, value, type_, subtype: str = "") -> None: ... - TEXT: str - NUMBER: str - LOGICAL: str - ERROR: str - RANGE: str + TEXT: Final = "TEXT" + NUMBER: Final = "NUMBER" + LOGICAL: Final = "LOGICAL" + ERROR: Final = "ERROR" + RANGE: Final = "RANGE" @classmethod def make_operand(cls, value): ... - OPEN: str - CLOSE: str + OPEN: Final = "OPEN" + CLOSE: Final = "CLOSE" @classmethod def make_subexp(cls, value, func: bool = False): ... def get_closer(self): ... - ARG: str - ROW: str + ARG: Final = "ARG" + ROW: Final = "ROW" @classmethod def make_separator(cls, value): ... diff --git a/stubs/openpyxl/openpyxl/formula/translate.pyi b/stubs/openpyxl/openpyxl/formula/translate.pyi index 61c618730..edbec1d54 100644 --- a/stubs/openpyxl/openpyxl/formula/translate.pyi +++ b/stubs/openpyxl/openpyxl/formula/translate.pyi @@ -1,4 +1,6 @@ from _typeshed import Incomplete +from re import Pattern +from typing_extensions import Final class TranslatorError(Exception): ... @@ -6,9 +8,9 @@ class Translator: tokenizer: Incomplete def __init__(self, formula, origin) -> None: ... def get_tokens(self): ... - ROW_RANGE_RE: Incomplete - COL_RANGE_RE: Incomplete - CELL_REF_RE: Incomplete + ROW_RANGE_RE: Final[Pattern[str]] + COL_RANGE_RE: Final[Pattern[str]] + CELL_REF_RE: Final[Pattern[str]] @staticmethod def translate_row(row_str, rdelta): ... @staticmethod diff --git a/stubs/openpyxl/openpyxl/packaging/custom.pyi b/stubs/openpyxl/openpyxl/packaging/custom.pyi index ba279e6e1..9aadb179c 100644 --- a/stubs/openpyxl/openpyxl/packaging/custom.pyi +++ b/stubs/openpyxl/openpyxl/packaging/custom.pyi @@ -2,7 +2,7 @@ from _typeshed import Incomplete from collections.abc import Iterator from datetime import datetime from typing import Any, Generic, TypeVar -from typing_extensions import Literal, Self +from typing_extensions import Final, Literal, Self, TypeAlias from openpyxl.descriptors import Sequence, Strict from openpyxl.descriptors.base import ( @@ -49,8 +49,9 @@ class BoolProperty(_TypedProperty[_ConvertibleToBool]): class LinkProperty(_TypedProperty[str]): value: String[Literal[False]] -CLASS_MAPPING: Incomplete -XML_MAPPING: Incomplete +_MappingPropertyType: TypeAlias = StringProperty | IntProperty | FloatProperty | DateTimeProperty | BoolProperty | LinkProperty +CLASS_MAPPING: Final[dict[type[_MappingPropertyType], str]] +XML_MAPPING: Final[dict[str, type[_MappingPropertyType]]] class CustomPropertyList(Strict): props: Sequence diff --git a/stubs/openpyxl/openpyxl/packaging/manifest.pyi b/stubs/openpyxl/openpyxl/packaging/manifest.pyi index bcc569d4e..1d7226ee8 100644 --- a/stubs/openpyxl/openpyxl/packaging/manifest.pyi +++ b/stubs/openpyxl/openpyxl/packaging/manifest.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete from collections.abc import Generator from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Final, Literal from openpyxl.descriptors.base import String from openpyxl.descriptors.serialisable import Serialisable @@ -20,8 +20,8 @@ class Override(Serialisable): ContentType: String[Literal[False]] def __init__(self, PartName: str, ContentType: str) -> None: ... -DEFAULT_TYPES: Incomplete -DEFAULT_OVERRIDE: Incomplete +DEFAULT_TYPES: Final[list[FileExtension]] +DEFAULT_OVERRIDE: Final[list[Override]] class Manifest(Serialisable): tagname: str diff --git a/stubs/openpyxl/openpyxl/reader/excel.pyi b/stubs/openpyxl/openpyxl/reader/excel.pyi index 410ba2223..4747182a4 100644 --- a/stubs/openpyxl/openpyxl/reader/excel.pyi +++ b/stubs/openpyxl/openpyxl/reader/excel.pyi @@ -1,4 +1,5 @@ from _typeshed import Incomplete, StrPath, SupportsRead +from typing_extensions import Final, Literal, TypeAlias from zipfile import ZipFile from openpyxl.chartsheet.chartsheet import Chartsheet @@ -7,7 +8,8 @@ from openpyxl.packaging.relationship import Relationship from openpyxl.reader.workbook import WorkbookParser from openpyxl.workbook import Workbook -SUPPORTED_FORMATS: Incomplete +_SupportedFormats: TypeAlias = Literal[".xlsx", ".xlsm", ".xltx", ".xltm"] +SUPPORTED_FORMATS: Final[tuple[_SupportedFormats, ...]] class ExcelReader: archive: ZipFile diff --git a/stubs/openpyxl/openpyxl/styles/borders.pyi b/stubs/openpyxl/openpyxl/styles/borders.pyi index f11117c9c..bae92b586 100644 --- a/stubs/openpyxl/openpyxl/styles/borders.pyi +++ b/stubs/openpyxl/openpyxl/styles/borders.pyi @@ -1,6 +1,6 @@ from _typeshed import Incomplete from typing import ClassVar -from typing_extensions import Literal, TypeAlias +from typing_extensions import Final, Literal, TypeAlias from openpyxl.descriptors.base import Alias, Bool, NoneSet, Typed, _ConvertibleToBool from openpyxl.descriptors.serialisable import Serialisable @@ -21,20 +21,20 @@ _SideStyle: TypeAlias = Literal[ "thin", ] -BORDER_NONE: Incomplete -BORDER_DASHDOT: str -BORDER_DASHDOTDOT: str -BORDER_DASHED: str -BORDER_DOTTED: str -BORDER_DOUBLE: str -BORDER_HAIR: str -BORDER_MEDIUM: str -BORDER_MEDIUMDASHDOT: str -BORDER_MEDIUMDASHDOTDOT: str -BORDER_MEDIUMDASHED: str -BORDER_SLANTDASHDOT: str -BORDER_THICK: str -BORDER_THIN: str +BORDER_NONE: Final = None +BORDER_DASHDOT: Final = "dashDot" +BORDER_DASHDOTDOT: Final = "dashDotDot" +BORDER_DASHED: Final = "dashed" +BORDER_DOTTED: Final = "dotted" +BORDER_DOUBLE: Final = "double" +BORDER_HAIR: Final = "hair" +BORDER_MEDIUM: Final = "medium" +BORDER_MEDIUMDASHDOT: Final = "mediumDashDot" +BORDER_MEDIUMDASHDOTDOT: Final = "mediumDashDotDot" +BORDER_MEDIUMDASHED: Final = "mediumDashed" +BORDER_SLANTDASHDOT: Final = "slantDashDot" +BORDER_THICK: Final = "thick" +BORDER_THIN: Final = "thin" class Side(Serialisable): __fields__: Incomplete @@ -83,4 +83,4 @@ class Border(Serialisable): ) -> None: ... def __iter__(self): ... -DEFAULT_BORDER: Incomplete +DEFAULT_BORDER: Final[Border] diff --git a/stubs/openpyxl/openpyxl/styles/colors.pyi b/stubs/openpyxl/openpyxl/styles/colors.pyi index 67fbdd861..72d38675d 100644 --- a/stubs/openpyxl/openpyxl/styles/colors.pyi +++ b/stubs/openpyxl/openpyxl/styles/colors.pyi @@ -1,16 +1,17 @@ from _typeshed import Incomplete, Unused +from re import Pattern from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Final, Literal from openpyxl.descriptors import Strict, Typed from openpyxl.descriptors.base import Bool, Integer, MinMax, String, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable -COLOR_INDEX: Incomplete -BLACK: Incomplete -WHITE: Incomplete -BLUE: Incomplete -aRGB_REGEX: Incomplete +COLOR_INDEX: Final[tuple[str, ...]] +BLACK: Final = "00000000" +WHITE: Final = "00FFFFFF" +BLUE: Final = "00FFFFFF" +aRGB_REGEX: Final[Pattern[str]] class RGB(Typed[str, Incomplete]): expected_type: type[str] diff --git a/stubs/openpyxl/openpyxl/styles/fills.pyi b/stubs/openpyxl/openpyxl/styles/fills.pyi index 889844800..409c8c436 100644 --- a/stubs/openpyxl/openpyxl/styles/fills.pyi +++ b/stubs/openpyxl/openpyxl/styles/fills.pyi @@ -75,8 +75,8 @@ class PatternFill(Fill): ) -> None: ... def to_tree(self, tagname: Incomplete | None = None, idx: Incomplete | None = None): ... # type: ignore[override] -DEFAULT_EMPTY_FILL: Incomplete -DEFAULT_GRAY_FILL: Incomplete +DEFAULT_EMPTY_FILL: Final[PatternFill] +DEFAULT_GRAY_FILL: Final[PatternFill] class Stop(Serialisable): tagname: str diff --git a/stubs/openpyxl/openpyxl/styles/fonts.pyi b/stubs/openpyxl/openpyxl/styles/fonts.pyi index c61cb4cbb..7e5236152 100644 --- a/stubs/openpyxl/openpyxl/styles/fonts.pyi +++ b/stubs/openpyxl/openpyxl/styles/fonts.pyi @@ -1,6 +1,6 @@ from _typeshed import Incomplete from typing import ClassVar -from typing_extensions import Literal, TypeAlias +from typing_extensions import Final, Literal, TypeAlias from openpyxl.descriptors.base import Alias, _ConvertibleToBool, _ConvertibleToFloat, _ConvertibleToInt from openpyxl.descriptors.nested import ( @@ -20,10 +20,10 @@ _FontVertAlign: TypeAlias = Literal["superscript", "subscript", "baseline"] _FontScheme: TypeAlias = Literal["major", "minor"] class Font(Serialisable): - UNDERLINE_DOUBLE: str - UNDERLINE_DOUBLE_ACCOUNTING: str - UNDERLINE_SINGLE: str - UNDERLINE_SINGLE_ACCOUNTING: str + UNDERLINE_DOUBLE: Final = "double" + UNDERLINE_DOUBLE_ACCOUNTING: Final = "doubleAccounting" + UNDERLINE_SINGLE: Final = "single" + UNDERLINE_SINGLE_ACCOUNTING: Final = "singleAccounting" name: NestedString[Literal[True]] charset: NestedInteger[Literal[True]] family: NestedMinMax[float, Literal[True]] @@ -72,4 +72,4 @@ class Font(Serialisable): @classmethod def from_tree(cls, node): ... -DEFAULT_FONT: Incomplete +DEFAULT_FONT: Final[Font] diff --git a/stubs/openpyxl/openpyxl/styles/numbers.pyi b/stubs/openpyxl/openpyxl/styles/numbers.pyi index a2ad642a1..d23d987c8 100644 --- a/stubs/openpyxl/openpyxl/styles/numbers.pyi +++ b/stubs/openpyxl/openpyxl/styles/numbers.pyi @@ -1,53 +1,55 @@ from _typeshed import Incomplete, Unused +from re import Pattern from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Final, Literal from openpyxl.descriptors import Strict, String from openpyxl.descriptors.base import Integer, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable -BUILTIN_FORMATS: Incomplete -BUILTIN_FORMATS_MAX_SIZE: int -BUILTIN_FORMATS_REVERSE: Incomplete -FORMAT_GENERAL: Incomplete -FORMAT_TEXT: Incomplete -FORMAT_NUMBER: Incomplete -FORMAT_NUMBER_00: Incomplete -FORMAT_NUMBER_COMMA_SEPARATED1: Incomplete -FORMAT_NUMBER_COMMA_SEPARATED2: str -FORMAT_PERCENTAGE: Incomplete -FORMAT_PERCENTAGE_00: Incomplete -FORMAT_DATE_YYYYMMDD2: str -FORMAT_DATE_YYMMDD: str -FORMAT_DATE_DDMMYY: str -FORMAT_DATE_DMYSLASH: str -FORMAT_DATE_DMYMINUS: str -FORMAT_DATE_DMMINUS: str -FORMAT_DATE_MYMINUS: str -FORMAT_DATE_XLSX14: Incomplete -FORMAT_DATE_XLSX15: Incomplete -FORMAT_DATE_XLSX16: Incomplete -FORMAT_DATE_XLSX17: Incomplete -FORMAT_DATE_XLSX22: Incomplete -FORMAT_DATE_DATETIME: str -FORMAT_DATE_TIME1: Incomplete -FORMAT_DATE_TIME2: Incomplete -FORMAT_DATE_TIME3: Incomplete -FORMAT_DATE_TIME4: Incomplete -FORMAT_DATE_TIME5: Incomplete -FORMAT_DATE_TIME6: Incomplete -FORMAT_DATE_TIME7: str -FORMAT_DATE_TIME8: str -FORMAT_DATE_TIMEDELTA: str -FORMAT_DATE_YYMMDDSLASH: str -FORMAT_CURRENCY_USD_SIMPLE: str -FORMAT_CURRENCY_USD: str -FORMAT_CURRENCY_EUR_SIMPLE: str -COLORS: str -LITERAL_GROUP: str -LOCALE_GROUP: str -STRIP_RE: Incomplete -TIMEDELTA_RE: Incomplete +BUILTIN_FORMATS: Final[dict[int, str]] +BUILTIN_FORMATS_MAX_SIZE: Final = 164 +BUILTIN_FORMATS_REVERSE: Final[dict[str, int]] +FORMAT_GENERAL: Final = "General" +FORMAT_TEXT: Final = "@" +FORMAT_NUMBER: Final = "0" +FORMAT_NUMBER_00: Final = "0.00" +FORMAT_NUMBER_COMMA_SEPARATED1: Final = "#,##0.00" +FORMAT_NUMBER_COMMA_SEPARATED2: Final = "#,##0.00_-" +FORMAT_PERCENTAGE: Final = "0%" +FORMAT_PERCENTAGE_00: Final = "0.00%" +FORMAT_DATE_YYYYMMDD2: Final = "yyyy-mm-dd" +FORMAT_DATE_YYMMDD: Final = "yy-mm-dd" +FORMAT_DATE_DDMMYY: Final = "dd/mm/yy" +FORMAT_DATE_DMYSLASH: Final = "d/m/y" +FORMAT_DATE_DMYMINUS: Final = "d-m-y" +FORMAT_DATE_DMMINUS: Final = "d-m" +FORMAT_DATE_MYMINUS: Final = "m-y" +FORMAT_DATE_XLSX14: Final = "mm-dd-yy" +FORMAT_DATE_XLSX15: Final = "d-mmm-yy" +FORMAT_DATE_XLSX16: Final = "d-mmm" +FORMAT_DATE_XLSX17: Final = "mmm-yy" +FORMAT_DATE_XLSX22: Final = "m/d/yy h:mm" +FORMAT_DATE_DATETIME: Final = "yyyy-mm-dd h:mm:ss" +FORMAT_DATE_TIME1: Final = "h:mm AM/PM" +FORMAT_DATE_TIME2: Final = "h:mm:ss AM/PM" +FORMAT_DATE_TIME3: Final = "h:mm" +FORMAT_DATE_TIME4: Final = "h:mm:ss" +FORMAT_DATE_TIME5: Final = "mm:ss" +FORMAT_DATE_TIME6: Final = "h:mm:ss" +FORMAT_DATE_TIME7: Final = "i:s.S" +FORMAT_DATE_TIME8: Final = "h:mm:ss@" +FORMAT_DATE_TIMEDELTA: Final = "[hh]:mm:ss" +FORMAT_DATE_YYMMDDSLASH: Final = "yy/mm/dd@" +FORMAT_CURRENCY_USD_SIMPLE: Final = '"$"#,##0.00_-' +FORMAT_CURRENCY_USD: Final = "$#,##0_-" +FORMAT_CURRENCY_EUR_SIMPLE: Final = "[$EUR ]#,##0.00_-" + +COLORS: Final[str] +LITERAL_GROUP: Final = r'".*?"' +LOCALE_GROUP: Final = r"\[(?!hh?\]|mm?\]|ss?\])[^\]]*\]" +STRIP_RE: Final[Pattern[str]] +TIMEDELTA_RE: Final[Pattern[str]] def is_date_format(fmt): ... def is_timedelta_format(fmt): ... diff --git a/stubs/openpyxl/openpyxl/utils/cell.pyi b/stubs/openpyxl/openpyxl/utils/cell.pyi index bddf718b7..5b15e29f3 100644 --- a/stubs/openpyxl/openpyxl/utils/cell.pyi +++ b/stubs/openpyxl/openpyxl/utils/cell.pyi @@ -1,20 +1,19 @@ from _typeshed import Incomplete from collections.abc import Generator +from re import Pattern +from typing_extensions import Final -COORD_RE: Incomplete -COL_RANGE: str -ROW_RANGE: str -RANGE_EXPR: str -ABSOLUTE_RE: Incomplete -SHEET_TITLE: str -SHEETRANGE_RE: Incomplete +COORD_RE: Final[Pattern[str]] +COL_RANGE: Final = """[A-Z]{1,3}:[A-Z]{1,3}:""" +ROW_RANGE: Final = r"""\d+:\d+:""" +RANGE_EXPR: Final[str] +ABSOLUTE_RE: Final[Pattern[str]] +SHEET_TITLE: Final[str] +SHEETRANGE_RE: Final[Pattern[str]] def get_column_interval(start: str | int, end: str | int) -> list[str]: ... def coordinate_from_string(coord_string: str) -> tuple[str, int]: ... def absolute_coordinate(coord_string: str) -> str: ... - -col: Incomplete - def get_column_letter(idx: int) -> str: ... def column_index_from_string(str_col: str) -> int: ... def range_boundaries(range_string: str) -> tuple[int, int, int, int]: ... diff --git a/stubs/openpyxl/openpyxl/utils/datetime.pyi b/stubs/openpyxl/openpyxl/utils/datetime.pyi index 70b029bde..de2c233d5 100644 --- a/stubs/openpyxl/openpyxl/utils/datetime.pyi +++ b/stubs/openpyxl/openpyxl/utils/datetime.pyi @@ -1,14 +1,16 @@ -from _typeshed import Incomplete +from datetime import datetime +from re import Pattern +from typing_extensions import Final -MAC_EPOCH: Incomplete -WINDOWS_EPOCH: Incomplete +MAC_EPOCH: Final[datetime] +WINDOWS_EPOCH: Final[datetime] # The following two constants are defined twice in the implementation. CALENDAR_WINDOWS_1900 = WINDOWS_EPOCH CALENDAR_MAC_1904 = MAC_EPOCH -SECS_PER_DAY: int -ISO_FORMAT: str -ISO_REGEX: Incomplete -ISO_DURATION: Incomplete +SECS_PER_DAY: Final = 86400 +ISO_FORMAT: Final = "%Y-%m-%dT%H:%M:%SZ" +ISO_REGEX: Final[Pattern[str]] +ISO_DURATION: Final[Pattern[str]] def to_ISO8601(dt): ... def from_ISO8601(formatted_string): ... diff --git a/stubs/openpyxl/openpyxl/utils/formulas.pyi b/stubs/openpyxl/openpyxl/utils/formulas.pyi index 8e49ec3ad..6d16169b1 100644 --- a/stubs/openpyxl/openpyxl/utils/formulas.pyi +++ b/stubs/openpyxl/openpyxl/utils/formulas.pyi @@ -1,3 +1,3 @@ -from _typeshed import Incomplete +from typing_extensions import Final -FORMULAE: Incomplete +FORMULAE: Final[frozenset[str]] diff --git a/stubs/openpyxl/openpyxl/utils/inference.pyi b/stubs/openpyxl/openpyxl/utils/inference.pyi index b8411c805..85e0441c6 100644 --- a/stubs/openpyxl/openpyxl/utils/inference.pyi +++ b/stubs/openpyxl/openpyxl/utils/inference.pyi @@ -1,8 +1,9 @@ -from _typeshed import Incomplete +from re import Pattern +from typing_extensions import Final -PERCENT_REGEX: Incomplete -TIME_REGEX: Incomplete -NUMBER_REGEX: Incomplete +PERCENT_REGEX: Final[Pattern[str]] +TIME_REGEX: Final[Pattern[str]] +NUMBER_REGEX: Final[Pattern[str]] def cast_numeric(value): ... def cast_percentage(value): ... diff --git a/stubs/openpyxl/openpyxl/utils/units.pyi b/stubs/openpyxl/openpyxl/utils/units.pyi index 8f9c3d1a5..6264bc826 100644 --- a/stubs/openpyxl/openpyxl/utils/units.pyi +++ b/stubs/openpyxl/openpyxl/utils/units.pyi @@ -1,11 +1,11 @@ -from _typeshed import Incomplete +from typing_extensions import Final -DEFAULT_ROW_HEIGHT: float -BASE_COL_WIDTH: int -DEFAULT_COLUMN_WIDTH: Incomplete -DEFAULT_LEFT_MARGIN: float -DEFAULT_TOP_MARGIN: float -DEFAULT_HEADER: float +DEFAULT_ROW_HEIGHT: Final[float] +BASE_COL_WIDTH: Final = 8 +DEFAULT_COLUMN_WIDTH: Final = 13 +DEFAULT_LEFT_MARGIN: Final[float] +DEFAULT_TOP_MARGIN: Final[float] +DEFAULT_HEADER: Final[float] def inch_to_dxa(value): ... def dxa_to_inch(value): ... diff --git a/stubs/openpyxl/openpyxl/workbook/child.pyi b/stubs/openpyxl/openpyxl/workbook/child.pyi index b74da8ee3..fa39d2e42 100644 --- a/stubs/openpyxl/openpyxl/workbook/child.pyi +++ b/stubs/openpyxl/openpyxl/workbook/child.pyi @@ -1,6 +1,8 @@ from _typeshed import Incomplete +from re import Pattern +from typing_extensions import Final -INVALID_TITLE_REGEX: Incomplete +INVALID_TITLE_REGEX: Final[Pattern[str]] def avoid_duplicate_name(names, value): ... diff --git a/stubs/openpyxl/openpyxl/workbook/defined_name.pyi b/stubs/openpyxl/openpyxl/workbook/defined_name.pyi index 9aa62c731..f4b33db33 100644 --- a/stubs/openpyxl/openpyxl/workbook/defined_name.pyi +++ b/stubs/openpyxl/openpyxl/workbook/defined_name.pyi @@ -2,14 +2,14 @@ from _typeshed import Incomplete from collections import defaultdict from collections.abc import Generator from re import Pattern -from typing_extensions import Literal +from typing_extensions import Final, Literal from openpyxl.descriptors import Sequence from openpyxl.descriptors.base import Alias, Bool, Integer, String, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable -RESERVED: frozenset[str] -RESERVED_REGEX: Pattern[str] +RESERVED: Final[frozenset[str]] +RESERVED_REGEX: Final[Pattern[str]] class DefinedName(Serialisable): tagname: str diff --git a/stubs/openpyxl/openpyxl/workbook/workbook.pyi b/stubs/openpyxl/openpyxl/workbook/workbook.pyi index 3fc2bf03e..c609d6b3e 100644 --- a/stubs/openpyxl/openpyxl/workbook/workbook.pyi +++ b/stubs/openpyxl/openpyxl/workbook/workbook.pyi @@ -2,6 +2,7 @@ from _typeshed import Incomplete, StrPath from collections.abc import Iterator from datetime import datetime from typing import IO +from typing_extensions import Final from openpyxl.chartsheet.chartsheet import Chartsheet from openpyxl.styles.named_styles import NamedStyle @@ -9,7 +10,7 @@ from openpyxl.workbook.child import _WorkbookChild from openpyxl.worksheet._write_only import WriteOnlyWorksheet from openpyxl.worksheet.worksheet import Worksheet -INTEGER_TYPES: Incomplete +INTEGER_TYPES: Final[tuple[type[int]]] class Workbook: template: bool diff --git a/stubs/openpyxl/openpyxl/worksheet/_reader.pyi b/stubs/openpyxl/openpyxl/worksheet/_reader.pyi index fc1d7028f..840801abb 100644 --- a/stubs/openpyxl/openpyxl/worksheet/_reader.pyi +++ b/stubs/openpyxl/openpyxl/worksheet/_reader.pyi @@ -1,40 +1,41 @@ import datetime from _typeshed import Incomplete from collections.abc import Container, Generator +from typing_extensions import Final from .hyperlink import HyperlinkList from .pagebreak import ColBreak, RowBreak from .protection import SheetProtection from .table import TablePartList -CELL_TAG: Incomplete -VALUE_TAG: Incomplete -FORMULA_TAG: Incomplete -MERGE_TAG: Incomplete -INLINE_STRING: Incomplete -COL_TAG: Incomplete -ROW_TAG: Incomplete -CF_TAG: Incomplete -LEGACY_TAG: Incomplete -PROT_TAG: Incomplete -EXT_TAG: Incomplete -HYPERLINK_TAG: Incomplete -TABLE_TAG: Incomplete -PRINT_TAG: Incomplete -MARGINS_TAG: Incomplete -PAGE_TAG: Incomplete -HEADER_TAG: Incomplete -FILTER_TAG: Incomplete -VALIDATION_TAG: Incomplete -PROPERTIES_TAG: Incomplete -VIEWS_TAG: Incomplete -FORMAT_TAG: Incomplete -ROW_BREAK_TAG: Incomplete -COL_BREAK_TAG: Incomplete -SCENARIOS_TAG: Incomplete -DATA_TAG: Incomplete -DIMENSION_TAG: Incomplete -CUSTOM_VIEWS_TAG: Incomplete +CELL_TAG: Final[str] +VALUE_TAG: Final[str] +FORMULA_TAG: Final[str] +MERGE_TAG: Final[str] +INLINE_STRING: Final[str] +COL_TAG: Final[str] +ROW_TAG: Final[str] +CF_TAG: Final[str] +LEGACY_TAG: Final[str] +PROT_TAG: Final[str] +EXT_TAG: Final[str] +HYPERLINK_TAG: Final[str] +TABLE_TAG: Final[str] +PRINT_TAG: Final[str] +MARGINS_TAG: Final[str] +PAGE_TAG: Final[str] +HEADER_TAG: Final[str] +FILTER_TAG: Final[str] +VALIDATION_TAG: Final[str] +PROPERTIES_TAG: Final[str] +VIEWS_TAG: Final[str] +FORMAT_TAG: Final[str] +ROW_BREAK_TAG: Final[str] +COL_BREAK_TAG: Final[str] +SCENARIOS_TAG: Final[str] +DATA_TAG: Final[str] +DIMENSION_TAG: Final[str] +CUSTOM_VIEWS_TAG: Final[str] class WorkSheetParser: min_row: Incomplete | None diff --git a/stubs/openpyxl/openpyxl/worksheet/_writer.pyi b/stubs/openpyxl/openpyxl/worksheet/_writer.pyi index d22d6bb92..a76d960d6 100644 --- a/stubs/openpyxl/openpyxl/worksheet/_writer.pyi +++ b/stubs/openpyxl/openpyxl/worksheet/_writer.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete from collections.abc import Generator -ALL_TEMP_FILES: Incomplete +ALL_TEMP_FILES: list[str] def create_temporary_file(suffix: str = ""): ... diff --git a/stubs/openpyxl/openpyxl/worksheet/header_footer.pyi b/stubs/openpyxl/openpyxl/worksheet/header_footer.pyi index 3128bf684..0ed2ab37d 100644 --- a/stubs/openpyxl/openpyxl/worksheet/header_footer.pyi +++ b/stubs/openpyxl/openpyxl/worksheet/header_footer.pyi @@ -1,21 +1,21 @@ -from _typeshed import Incomplete +from re import Pattern from typing import ClassVar -from typing_extensions import Literal +from typing_extensions import Final, Literal from openpyxl.descriptors import Strict from openpyxl.descriptors.base import Alias, Bool, Integer, MatchPattern, String, Typed, _ConvertibleToBool, _ConvertibleToInt from openpyxl.descriptors.serialisable import Serialisable -FONT_PATTERN: str -COLOR_PATTERN: str -SIZE_REGEX: str -FORMAT_REGEX: Incomplete +FONT_PATTERN: Final = '&"(?P.+)"' +COLOR_PATTERN: Final = "&K(?P[A-F0-9]{6})" +SIZE_REGEX: Final = r"&(?P\d+\s?)" +FORMAT_REGEX: Final[Pattern[str]] class _HeaderFooterPart(Strict): text: String[Literal[True]] font: String[Literal[True]] size: Integer[Literal[True]] - RGB: str + RGB: ClassVar[str] color: MatchPattern[str, Literal[True]] def __init__( self, text: str | None = None, font: str | None = None, size: _ConvertibleToInt | None = None, color: str | None = None diff --git a/stubs/openpyxl/openpyxl/worksheet/print_settings.pyi b/stubs/openpyxl/openpyxl/worksheet/print_settings.pyi index 37f39cdfa..91aeee436 100644 --- a/stubs/openpyxl/openpyxl/worksheet/print_settings.pyi +++ b/stubs/openpyxl/openpyxl/worksheet/print_settings.pyi @@ -1,7 +1,7 @@ from _typeshed import Incomplete, Unused from re import Pattern from typing import overload -from typing_extensions import Literal, Self +from typing_extensions import Final, Literal, Self from openpyxl.descriptors import Integer, Strict, String from openpyxl.descriptors.base import Typed, _ConvertibleToInt @@ -9,12 +9,12 @@ from openpyxl.utils.cell import SHEETRANGE_RE as SHEETRANGE_RE from .cell_range import MultiCellRange -COL_RANGE: str -COL_RANGE_RE: Pattern[str] -ROW_RANGE: str -ROW_RANGE_RE: Pattern[str] -TITLES_REGEX: Pattern[str] -PRINT_AREA_RE: Pattern[str] +COL_RANGE: Final[str] +COL_RANGE_RE: Final[Pattern[str]] +ROW_RANGE: Final[str] +ROW_RANGE_RE: Final[Pattern[str]] +TITLES_REGEX: Final[Pattern[str]] +PRINT_AREA_RE: Final[Pattern[str]] class ColRange(Strict): min_col: String[Literal[False]] diff --git a/stubs/openpyxl/openpyxl/worksheet/table.pyi b/stubs/openpyxl/openpyxl/worksheet/table.pyi index ac50fe04d..c07c80b17 100644 --- a/stubs/openpyxl/openpyxl/worksheet/table.pyi +++ b/stubs/openpyxl/openpyxl/worksheet/table.pyi @@ -1,6 +1,6 @@ from _typeshed import Incomplete, Unused from typing import ClassVar, overload -from typing_extensions import Literal, TypeAlias +from typing_extensions import Final, Literal, TypeAlias from openpyxl.descriptors import Strict, String from openpyxl.descriptors.base import Alias, Bool, Integer, NoneSet, Typed, _ConvertibleToBool, _ConvertibleToInt @@ -13,8 +13,8 @@ _TableColumnTotalsRowFunction: TypeAlias = Literal[ ] _TableTableType: TypeAlias = Literal["worksheet", "xml", "queryTable"] -TABLESTYLES: Incomplete -PIVOTSTYLES: Incomplete +TABLESTYLES: Final[tuple[str, ...]] +PIVOTSTYLES: Final[tuple[str, ...]] class TableStyleInfo(Serialisable): tagname: str diff --git a/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi b/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi index 97e75b9ec..d59e9c424 100644 --- a/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi +++ b/stubs/openpyxl/openpyxl/worksheet/worksheet.pyi @@ -23,25 +23,28 @@ from openpyxl.worksheet.views import SheetView, SheetViewList class Worksheet(_WorkbookChild): mime_type: str - BREAK_NONE: int - BREAK_ROW: int - BREAK_COLUMN: int + BREAK_NONE: Final = 0 + BREAK_ROW: Final = 1 + BREAK_COLUMN: Final = 2 + SHEETSTATE_VISIBLE: Final = "visible" SHEETSTATE_HIDDEN: Final = "hidden" SHEETSTATE_VERYHIDDEN: Final = "veryHidden" - PAPERSIZE_LETTER: str - PAPERSIZE_LETTER_SMALL: str - PAPERSIZE_TABLOID: str - PAPERSIZE_LEDGER: str - PAPERSIZE_LEGAL: str - PAPERSIZE_STATEMENT: str - PAPERSIZE_EXECUTIVE: str - PAPERSIZE_A3: str - PAPERSIZE_A4: str - PAPERSIZE_A4_SMALL: str - PAPERSIZE_A5: str - ORIENTATION_PORTRAIT: str - ORIENTATION_LANDSCAPE: str + + PAPERSIZE_LETTER: Final = "1" + PAPERSIZE_LETTER_SMALL: Final = "2" + PAPERSIZE_TABLOID: Final = "3" + PAPERSIZE_LEDGER: Final = "4" + PAPERSIZE_LEGAL: Final = "5" + PAPERSIZE_STATEMENT: Final = "6" + PAPERSIZE_EXECUTIVE: Final = "7" + PAPERSIZE_A3: Final = "8" + PAPERSIZE_A4: Final = "9" + PAPERSIZE_A4_SMALL: Final = "10" + PAPERSIZE_A5: Final = "11" + + ORIENTATION_PORTRAIT: Final = "portrait" + ORIENTATION_LANDSCAPE: Final = "landscape" row_dimensions: DimensionHolder[RowDimension] column_dimensions: DimensionHolder[ColumnDimension] diff --git a/stubs/openpyxl/openpyxl/xml/__init__.pyi b/stubs/openpyxl/openpyxl/xml/__init__.pyi index 9c4670087..517f09dd4 100644 --- a/stubs/openpyxl/openpyxl/xml/__init__.pyi +++ b/stubs/openpyxl/openpyxl/xml/__init__.pyi @@ -1,11 +1,11 @@ -from _typeshed import Incomplete +from typing_extensions import Final def lxml_available(): ... def lxml_env_set(): ... -LXML: Incomplete +LXML: Final[bool] def defusedxml_available(): ... def defusedxml_env_set(): ... -DEFUSEDXML: Incomplete +DEFUSEDXML: Final[bool] diff --git a/stubs/openpyxl/openpyxl/xml/constants.pyi b/stubs/openpyxl/openpyxl/xml/constants.pyi index 63217f413..0903b9c24 100644 --- a/stubs/openpyxl/openpyxl/xml/constants.pyi +++ b/stubs/openpyxl/openpyxl/xml/constants.pyi @@ -1,74 +1,91 @@ -from _typeshed import Incomplete +from typing_extensions import Final -MIN_ROW: int -MIN_COLUMN: int -MAX_COLUMN: int -MAX_ROW: int -PACKAGE_PROPS: str -PACKAGE_XL: str -PACKAGE_RELS: str -PACKAGE_THEME: Incomplete -PACKAGE_WORKSHEETS: Incomplete -PACKAGE_CHARTSHEETS: Incomplete -PACKAGE_DRAWINGS: Incomplete -PACKAGE_CHARTS: Incomplete -PACKAGE_IMAGES: Incomplete -PACKAGE_WORKSHEET_RELS: Incomplete -PACKAGE_CHARTSHEETS_RELS: Incomplete -PACKAGE_PIVOT_TABLE: Incomplete -PACKAGE_PIVOT_CACHE: Incomplete -ARC_CONTENT_TYPES: str -ARC_ROOT_RELS: Incomplete -ARC_WORKBOOK_RELS: Incomplete -ARC_CORE: Incomplete -ARC_APP: Incomplete -ARC_WORKBOOK: Incomplete -ARC_STYLE: Incomplete -ARC_THEME: Incomplete -ARC_SHARED_STRINGS: Incomplete -ARC_CUSTOM_UI: str -XML_NS: str -DCORE_NS: str -DCTERMS_NS: str -DCTERMS_PREFIX: str -DOC_NS: str -REL_NS: Incomplete -COMMENTS_NS: Incomplete -IMAGE_NS: Incomplete -VML_NS: Incomplete -VTYPES_NS: Incomplete -XPROPS_NS: Incomplete -EXTERNAL_LINK_NS: Incomplete -PKG_NS: str -PKG_REL_NS: Incomplete -COREPROPS_NS: Incomplete -CONTYPES_NS: Incomplete -XSI_NS: str -SHEET_MAIN_NS: str -CHART_NS: str -DRAWING_NS: str -SHEET_DRAWING_NS: str -CHART_DRAWING_NS: str -CUSTOMUI_NS: str -NAMESPACES: Incomplete -WORKBOOK_MACRO: str -WORKBOOK: str -SPREADSHEET: str -SHARED_STRINGS: Incomplete -EXTERNAL_LINK: Incomplete -WORKSHEET_TYPE: Incomplete -COMMENTS_TYPE: Incomplete -STYLES_TYPE: Incomplete -CHARTSHEET_TYPE: Incomplete -DRAWING_TYPE: str -CHART_TYPE: str -CHARTSHAPE_TYPE: str -THEME_TYPE: str -XLTM: Incomplete -XLSM: Incomplete -XLTX: Incomplete -XLSX: Incomplete -EXT_TYPES: Incomplete -CTRL: str -ACTIVEX: str -VBA: str +MIN_ROW: Final = 0 +MIN_COLUMN: Final = 0 +MAX_COLUMN: Final = 16384 +MAX_ROW: Final = 1048576 + +PACKAGE_PROPS: Final = "docProps" +PACKAGE_XL: Final = "xl" +PACKAGE_RELS: Final = "_rels" +PACKAGE_THEME: Final = "xl/theme" +PACKAGE_WORKSHEETS: Final = "xl/worksheets" +PACKAGE_CHARTSHEETS: Final = "xl/chartsheets" +PACKAGE_DRAWINGS: Final = "xl/drawings" +PACKAGE_CHARTS: Final = "xl/charts" +PACKAGE_IMAGES: Final = "xl/media" +PACKAGE_WORKSHEET_RELS: Final = "xl/worksheets/_rels" +PACKAGE_CHARTSHEETS_RELS: Final = "xl/chartsheets/_rels" +PACKAGE_PIVOT_TABLE: Final = "xl/pivotTables" +PACKAGE_PIVOT_CACHE: Final = "xl/pivotCache" + +ARC_CONTENT_TYPES: Final = "[Content_Types].xml" +ARC_ROOT_RELS: Final = "_rels/.rels" +ARC_WORKBOOK_RELS: Final = "xl/_rels/workbook.xml.rels" +ARC_CORE: Final = "docProps/core.xml" +ARC_APP: Final = "docProps/app.xml" +ARC_CUSTOM: Final = "docProps/custom.xml" +ARC_WORKBOOK: Final = "xl/workbook.xml" +ARC_STYLE: Final = "xl/styles.xml" +ARC_THEME: Final = "xl/theme/theme1.xml" +ARC_SHARED_STRINGS: Final = "xl/sharedStrings.xml" +ARC_CUSTOM_UI: Final = "customUI/customUI.xml" + +DCORE_NS: Final = "http://purl.org/dc/elements/1.1/" +DCTERMS_NS: Final = "http://purl.org/dc/terms/" +DCTERMS_PREFIX: Final = "dcterms" + +DOC_NS: Final[str] +REL_NS: Final[str] +COMMENTS_NS: Final[str] +IMAGE_NS: Final[str] +VML_NS: Final[str] +VTYPES_NS: Final[str] +XPROPS_NS: Final[str] +CUSTPROPS_NS: Final[str] +EXTERNAL_LINK_NS: Final[str] + +CPROPS_FMTID: Final = "{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" + +PKG_NS: Final = "http://schemas.openxmlformats.org/package/2006/" +PKG_REL_NS: Final[str] +COREPROPS_NS: Final[str] +CONTYPES_NS: Final[str] + +XSI_NS: Final = "http://www.w3.org/2001/XMLSchema-instance" +XML_NS: Final = "http://www.w3.org/XML/1998/namespace" +SHEET_MAIN_NS: Final[str] + +CHART_NS: Final[str] +DRAWING_NS: Final[str] +SHEET_DRAWING_NS: Final[str] +CHART_DRAWING_NS: Final[str] + +CUSTOMUI_NS: Final[str] + +NAMESPACES: Final[dict[str, str]] + +WORKBOOK_MACRO: Final = "application/vnd.ms-excel.%s.macroEnabled.main+xml" +WORKBOOK: Final[str] +SPREADSHEET: Final[str] +SHARED_STRINGS: Final[str] +EXTERNAL_LINK: Final[str] +WORKSHEET_TYPE: Final[str] +COMMENTS_TYPE: Final[str] +STYLES_TYPE: Final[str] +CHARTSHEET_TYPE: Final[str] +DRAWING_TYPE: Final[str] +CHART_TYPE: Final[str] +CHARTSHAPE_TYPE: Final[str] +THEME_TYPE: Final[str] +CPROPS_TYPE: Final[str] +XLTM: Final[str] +XLSM: Final[str] +XLTX: Final[str] +XLSX: Final[str] + +EXT_TYPES: Final[dict[str, str]] + +CTRL: Final = "application/vnd.ms-excel.controlproperties+xml" +ACTIVEX: Final = "application/vnd.ms-office.activeX+xml" +VBA: Final = "application/vnd.ms-office.vbaProject" diff --git a/stubs/openpyxl/openpyxl/xml/functions.pyi b/stubs/openpyxl/openpyxl/xml/functions.pyi index c9438a9e7..6abacd8af 100644 --- a/stubs/openpyxl/openpyxl/xml/functions.pyi +++ b/stubs/openpyxl/openpyxl/xml/functions.pyi @@ -1,7 +1,8 @@ -from _typeshed import Incomplete +from re import Pattern +from typing_extensions import Final from xml.etree.ElementTree import Element as Element # possibly also imported from lxml -NS_REGEX: Incomplete +NS_REGEX: Final[Pattern[str]] def localname(node): ... def whitespace(node) -> None: ...