Changelog¶
v1.3.3 (2025-07-26)¶
ContourPy 1.3.3 is a compatibility release adding support for CPython 3.14 and Windows on ARM.
This release supports CPython 3.11 to 3.14, and PyPy 3.11.
Compatibility:
Bump minimum supported Python to 3.11 (##478)
Code improvements:
Update type annotations for
bokeh3.7.3 (#475)Support type annotation changes in
numpy2.3.0 (#480)
Build, testing and CI improvements:
v1.3.2 (2025-04-15)¶
ContourPy 1.3.2 is a minor release to support changes in type annotations in Bokeh >= 3.7 and add support for PyPy 3.11.
This release supports CPython 3.10 to 3.13, and PyPy 3.10 to 3.11.
Compatibility:
Fix type annotations for Bokeh >= 3.7 (#471)
Build, testing and CI improvements:
v1.3.1 (2024-11-12)¶
ContourPy 1.3.1 is a compatibility release to support changes in bokeh, meson-python and
pybind11.
This release supports Python 3.10 to 3.13.
Compatibility:
Drop support for Python 3.9 (#435)
Update to
bokeh3.6.0 (#444)Update minimum
pybind11to 2.13.2 (#451)Read
meson-pythonversion in recommended way (#452)
Code improvements:
Use
itertools.pairwiseinstead ofzipwhere possible (#437)Typing changes from
ruffUP035 and UP038 (#438)
Build, testing and CI improvements:
v1.3.0 (2024-08-27)¶
ContourPy 1.3.0 adds new ContourGenerator functions multi_lines and multi_filled to
calculate contour lines and filled contours over a sequence of levels in a single function call.
There are also new functions to render, convert and dechunk the returns from
multi_lines and multi_filled.
This release adds support for Python 3.13, including free-threaded. The latter should be considered experimental.
The use of np.nan as the lower_level or upper_level of ContourGenerator.filled() is
no longer permitted.
Windows wheels uploaded to PyPI now bundle the C++ runtime statically to avoid problems with up and downstream libraries causing the use of incorrect DLLs.
This release supports CPython 3.9 to 3.13, and PyPy 3.9 to 3.10.
Thanks to new contributor @lysnikolaou and core maintainer @ianthomas23.
Enhancements:
multi_linesandmulti_filled:Prevent use of
np.nanas lower or upper level infilled(#339)
Compatibility:
Support CPython 3.13 including free-threaded (#382, #384, #388, #408, #410, #411, #412, #423)
Support PyPy 3.10 (#404)
Code improvements:
Support improved typing in NumPy 2.1.0 (#422)
Documentation improvements:
Simpler sphinx cross-references (#361)
Add more doc cross-references to explain returned data formats (#366)
Remove download numbers for conda packages (#428)
Document possibility of duplicate contour points (#432)
Build, testing and CI improvements:
v1.2.1 (2024-04-02)¶
ContourPy 1.2.1 is a compatibility release to support NumPy 2.
This release supports Python 3.9 to 3.12.
Thanks to new contributor @motoro and core maintainer @ianthomas23.
Compatibility:
Code improvements:
Fix a few f-strings (#332)
Documentation improvements:
Clarify use of quotes in
pip install(#349)
Build, testing and CI improvements:
v1.2.0 (2023-11-03)¶
ContourPy 1.2.0 is a significant release with a number of new features. There is a new format for
contour lines called LineType.ChunkCombinedNan that is designed to work directly with Bokeh and
HoloViews. There are also new functions for manipulating contour lines and filled contours
(convert_filled, convert_lines, dechunk_filled and dechunk_lines).
Calling ContourGenerator.filled() with two identical levels now raises a ValueError whereas
previously it gave different results depending on algorithm name.
This release supports Python 3.9 to 3.12, and is the first release to ship musllinux aarch64 wheels.
Enhancements:
Support strings as well as enums in renderer functions (#284)
Add new functions
dechunk_filledanddechunk_lines(#290)Add new functions
convert_filledandconvert_lines(#291, #293, #294, #312, #313)Raise if call
filled()withlower_level==upper_level(#317)
Code improvements:
Improvements to array checking functions (#298)
Better use of dtypes and casting when calling numpy functions (#300, #306, #308, #314)
Update type annotations for matplotlib 3.8 (#303)
Extra validation when dechunking and converting contour lines and filled contours (#316)
Documentation improvements:
Use
versionaddedsphinx directive (#285)Remove threaded experimental warnings (#297)
Extract benchmark ratios when generating benchmark plots (#302)
Document new functions and conversion to Shapely geometries (#318)
Build, testing and CI improvements:
Add new CI run using NumPy nightly wheels (#280)
Test contour levels that are
+/-np.inf(#283)Use better names for enums when reporting parameterised tests (#292)
Improved mpl debug renderer tests (#295)
Support musllinux aarch64 (#305)
Run test suite in parallel (#311)
Miscellaneous build and CI improvements (#279, #281, #288, #315, #319)
v1.1.1 (2023-09-16)¶
This release adds support for CPython 3.12 and reinstates the release of
Windows 32-bit wheels following NumPy’s intention to continue doing so.
There is a new keyword argument webdriver to the BokehRenderer save
functions to reuse the same Selenium WebDriver instance across multiple calls.
This release supports Python 3.8 to 3.12.
Thanks to new contributor @shadchin and existing contributors @eli-schwartz and @ianthomas23.
Enhancements:
Add
webdriverkwarg to Bokeh export functions (#261)Add
--driver-pathpytest option to specify chrome driver path (#264)
Code improvements:
Documentation improvements:
Exclude prompts when using sphinx copybutton (#269)
Build system and CI improvements:
v1.1.0 (2023-06-13)¶
This release features a change in the build system from distutils, which
is scheduled for removal in Python 3.12, to meson and meson-python.
It includes the building of wheels for ppc64le and s390x (on x86_64 only) and
removes building of all 32-bit wheels and macOS universal2 wheels.
Note
Windows 32-bit wheels were retroactively released for v1.1.0 on 2023-09-15 following NumPy’s decision to keep releasing Win32 wheels.
This release supports Python 3.8 to 3.11.
Thanks to new contributor @eli-schwartz.
Build system improvements:
Drop building universal2 wheels (#225)
Add build_config to store and show build configuration info (#227)
Build ppc64le and s390x wheels (#246)
Code improvements:
Documentation improvements:
CI improvements:
v1.0.7 (2023-01-13)¶
This release adds type annotations and moves project metadata to pyproject.toml (PEP 621). Documentation now uses the Sphinx Furo theme, supporting dark and light modes. There are no functional changes.
Type annotations:
Documentation improvements:
Use sphinx copy button (#189)
Add conda monthly download badges to README (#192)
Furo sphinx theme (#195)
Code improvements:
Improved if statement (#186)
Test nonfinite z and decreasing zlevel for filled (#190)
Add abstract base class Renderer (#198)
Replace mpl scatter call with plot instead (#203)
Use absolute imports (#204)
Minor improvement to get_boundary_start_point (#205)
Build system and CI improvements:
v1.0.6 (2022-10-30)¶
This release features major improvements to the robustness of the threaded algorithm on both CPython and PyPy.
Thanks to new contributors @mgorny and @Zac-HD.
Threaded algorithm improvements:
Correctly acquire and release GIL in multithreaded code (#172)
Update benchmarks in line with recent changes (#174)
CI improvements:
v1.0.5 (2022-09-02)¶
This release includes performance improvements for threaded and serial chunked algorithms, and is the first release to support CPython 3.11.
Performance improvements:
Shorter threaded lock (#154)
Init cache by chunk if more than 1 chunk (#155)
Update benchmark documentation and plots (#156)
CPython 3.11 support:
v1.0.4 (2022-07-31)¶
This release puts all C++ code within a namespace to avoid symbol conflicts such as on IBM AIX.
v1.0.3 (2022-06-12)¶
v1.0.2 (2022-04-08)¶
Add tests that do not write text to images (#124)
v1.0.1 (2022-03-02)¶
v1.0.0 (2022-02-19)¶
Finalised API for version 1.0 release.
v0.0.5 (2022-02-13)¶
All ContourGenerator classes implement the same readonly properties (#91)
Support string to enum conversion in contour_generator (#92)
Default line/fill type for serial/threaded (#96)
Check for negative z if using log interp (#97)
contour_generator args vs kwargs (#99)
String to enum moved from C++ to python (#100)
Don’t store mask in mpl2005 (#101)
Sphinx documentation (#102)
Fixed missing SW corner mask starts (#105)
Finalise enum spellings (#106)
Complete mask render function (#107)
Test filled compare slow (#108)
v0.0.4 (2021-11-07)¶
Build on Python 3.10 (#76)
v0.0.3 (2021-10-01)¶
Improvements to build on older MSVC (#85)
v0.0.2 (2021-09-30)¶
Include license file in sdist (#81)
v0.0.1 (2021-09-20)¶
Initial release.