NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1546 most downloaded on PyPI
Typing stubs for openpyxl
Last release 1 months ago
27 Aug 2026
Release timing varies
gaps range from 1 weeks to 6 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
88 releases · first in 2022
One column per quarter.
* Add Series export
Run Pyrefly on typeshed stubs in CI
* Replace NoReturn with Never
NoReturn with Never (#16079)Upgrade black to 26.5.0
Upgrade black to 26.5.0 (#15801)
Import some items from typing instead of typing_extensions
Import some items from typing instead of typing_extensions (#15711)
Part of #13782
Use dashes instead of underscores for METADATA.toml field names
Use dashes instead of underscores for METADATA.toml field names (#15614)
Update most test/lint dependencies
Add @type_check_only to stub-only private classes in various third-party stubs
Add @type_check_only to stub-only private classes in various third-party stubs (#15535)
Fix Final literal values in various third-party stubs
Fix Final literal values in various third-party stubs (#15521)
[openpyxl] Fix stubs for openpyxl.descriptors.sequence.UniqueSequence.seq_types
[openpyxl] Fix stubs for openpyxl.descriptors.sequence.UniqueSequence.seq_types (#14725)
Update mypy to 1.18.1
Update mypy to 1.18.1 (#14699)
Add __slots__ to third-party packages using stubdefaulter
Upgrade to mypy 1.17.1
Upgrade to mypy 1.17.1 (#14598)
Mark stub-only private symbols as @type_check_only in third-party stubs
Mark stub-only private symbols as @type_check_only in third-party stubs (#14545)
Co-authored-by: Sebastian Rittau Co-authored-by: Alex Waygood
Update mypy to 1.16.0 (#14194)
Co-authored-by: Sebastian Rittau srittau@rittau.biz Co-authored-by: Alex Waygood Alex.Waygood@Gmail.com
[openpyxl] Remove unnecessary overload (#14201)
Replace Incomplete | None = None in third party stubs
Replace Incomplete | None = None in third party stubs (#14063)
Openpyxl: type cell values
Openpyxl: type cell values (#13929)
Update tools versions in stubtest workflow
Update tools versions in stubtest workflow (#13582)
Add __hash__ for a bunch of types that set it to None
Add __hash__ for a bunch of types that set it to None (#13286)
openpyxl: Cell | MergedCell annotations
openpyxl: Cell | MergedCell annotations (#13092)
Support Writeable Zipfile on workbook.save
Support Writeable Zipfile on workbook.save (#13009)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Fix linting issues (#12898)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Update mypy to 1.12.0
Update mypy to 1.12.0 (#12859)
openpyxl: fix Worksheet.values annotation
openpyxl: fix Worksheet.values annotation (#12674)
Using precise code for pyright: ignore and re-enabling various pyright tests
Using precise code for pyright: ignore and re-enabling various pyright tests (#12576)
Forbid extremely long line lengths in non-autogenerated stubs
Forbid extremely long line lengths in non-autogenerated stubs (#12537)
Co-authored-by: Alex Waygood Alex.Waygood@Gmail.com
Bump mypy to 1.11.1
Bump mypy to 1.11.1 (#12463)
Openpyxl fixes for worksheet and image.
Bump openpyxl to 3.1.5
Bump openpyxl to 3.1.5 (#12238)
Copy openpyxl's Worksheet.__getitem__() and .__iter__() to ReadOnlyWorksheet
Copy openpyxl's Worksheet.__getitem__() and .__iter__() to ReadOnlyWorksheet (#12202)
Also make sequence types generic
pin openpyxl to 3.1.2 (#12072) helps with #12059
pin openpyxl to 3.1.2 (#12072)
helps with #12059
openpyxl: Use duck typing for workbook sheets
openpyxl: Use duck typing for workbook sheets (#11718)
Bump pyright to v1.1.360
Bump pyright to v1.1.360 (#11810)
openpyxl: Reduce false-positives in Worksheet.__getitem__
openpyxl: Reduce false-positives in Worksheet.__getitem__ (#11717)
openpyxl: Add _WorkbookChild / ReadOnlyWorksheet / Workbook annotations
openpyxl: Add _WorkbookChild / ReadOnlyWorksheet / Workbook annotations (#11677)
Remove bare Incomplete annotations in third-party stubs
Remove bare Incomplete annotations in third-party stubs (#11671)
Use PEP 570 syntax in third party stubs
Use PEP 570 syntax in third party stubs (#11554)
Add @deprecated decorator to openpyxl
Update pyright version to 1.1.350
Update pyright version to 1.1.350 (#11501)
If you're reading about this commit in an auto-generated changelog: this is an internal change that should have no impact on how these stubs are understood by static-analysis tools such as type checkers or IDEs
Fix invalid noqa comments and poorly formatted type ignores (#11497)
openpyxl: Add stubtest allowlist entry
openpyxl: Add stubtest allowlist entry (#11449)
Fixes #11448
A new shade of Black
A new shade of Black (#11362)
Update typing_extensions imports in third-party stubs
openpyxl: Type styleable descriptors
openpyxl: Type styleable descriptors (#11103)
Openpyxl: Various improvements
Openpyxl: Various improvements (#11092)
openpyxl: type to_tree methods
openpyxl: type to_tree methods (#10967)
Use ConvertibleToInt/ConvertibleToFloat in many third-party stubs
Use ConvertibleToInt/ConvertibleToFloat in many third-party stubs (#11022)
Note: this may make the latest version of certain stubs packages incompatible with older versions of mypy and pyright.
Third-party stubs: remove unused type: ignores
Bump flake8-pyi to 23.11.0
Bump flake8-pyi to 23.11.0 (#10997)
xml.etree: Fix tag param in __init__
xml.etree: Fix tag param in __init__ (#10968)
openpyxl TypeGuards and comparison dunders
openpyxl: Various minor improvements / previous PR fixes
Typed openpyxl colors descriptors
Typed openpyxl colors descriptors (#10882)
Type all @property in openpyxl
Type all @property in openpyxl (#10787)
Remove redundant NoReturn union in openpyxl
Remove redundant NoReturn union in openpyxl (#10819)
Complete openpyxl metaclasses
Complete openpyxl metaclasses (#10736)
openpyxl: Typed from_tree methods
openpyxl: Typed from_tree methods (#10602)
openpyxl: CellRange: title should not be required
openpyxl: CellRange: title should not be required (#10688)
Fixes #10682
openpyxl: Class attributes set explicitly as another class'
Make openpyxl stubtest-complete
Make openpyxl stubtest-complete (#10570)
Your coding agent can read these notes before it upgrades. Set up the MCP server →