Changelog
All notable changes to plotez will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.2.1] - 09-Mar-2026
Added
Custom Exception Hierarchy: Comprehensive domain-specific exceptions for better error handling
Base exceptions:
PlotError(base for all plotting errors),DataError(data-related errors),ConfigurationError(config/parameter errors)Data exceptions:
ShapeError(invalid array shapes),EmptyDataError(empty required data),ColumnCountError(invalid file column count)Configuration exceptions:
AxisLabelError(wrong axis_labels length),TwinXDataError(invalid x2_data for dual-Y plots),TwinYDataError(invalid y2_data for dual-X plots)Custom warning:
LabelConflictWarning(forauto_labeloverriding user labels)All exceptions available from
plotez.backend.error_handlingmodule19 new tests in
TestCustomExceptionsclass for comprehensive exception coverage
Top-level wrapper aliases:
lpc,epc,ebc,spc, and their long-form equivalents (line_plot_configuration,error_plot_configuration,error_band_configuration,scatter_plot_configuration) are now exported from the top-levelploteznamespace — no need to import fromplotez.backenddirectlyComprehensive wrapper function tests: New
tests/test_wrappers.pymodule with 34 tests covering:All four wrapper functions (
lpc,epc,ebc,spc) and their long-form equivalentsParameter mapping from shorthand aliases to full parameter names
Edge cases (None values, zero values, sequences, extra kwargs)
Config object independence and integration scenarios
Achieves 100% coverage for
backend/_wrappers.pymodule
docs/api.rst— new “Convenience / Wrapper Functions” section with alias table andautofunctiondirectives for all wrapper functionsdocs/api.rst— new “Shorthand Key Reference” section with RST tables documenting every accepted alias for line, error-bar, scatter, and figure parametersdocs/quickstart.rst— new “Convenience / Wrapper Functions” section with before/after examples showingepc(),lpc(),ebc(), andspc()
Changed
Code organization:
src/plotez/plotez.pyreorganized with logical section headers for improved readability:Error Visualization Functions (
plot_errorband,plot_errorbar)File I/O Functions (
plot_two_column_file)Simple Plotting Functions (
plot_xy)Dual-Axis Plotting Functions (
plot_xyy,plot_xxy,plot_with_dual_axes)Multi-Panel Plotting Functions (
two_subplots,n_plotter)
Exception handling: Replaced generic
ValueErrorexceptions with specific custom exceptionsplot_errorbar:ValueError→ShapeErrorfor invalid error array shapesplot_two_column_file:ValueError→ColumnCountErrorfor invalid file formatdual_axes_data_validation:ValueError→AxisLabelError,EmptyDataError,TwinXDataError,TwinYDataErrorfor specific validation failures_auto_handler:UserWarning→LabelConflictWarningfor label override warnings
docs/index.rst— Quick Example updated to use current API (plot_errorbar+epc()) instead of oldplot_errorbars+LinePlotdictProject Statussection replaced with a concise Markdown status table (version, Python support, coverage, docs link, license)docs/installation.rst— Requirements section corrected to list actual runtime deps (matplotlib,numpy)Dev-dependency list replaced with a full table matching
requirements-dev.txt(addsblack,isort,flake8,pydocstyle,pre-commit,sphinx-copybutton,myst-parser,build)
README.md— “Project Status” section replaced with a concise Markdown status table (version, Python support, coverage, docs link, license); Error Bar Plots example updated to useepc()with shorthand keyword aliasesTest coverage: Overall project coverage increased to 91% (from ~85%), with
backend/_wrappers.pyachieving 100% coverage
[v0.2.0] - 27-Feb-2026
Added
Error Bar Plotting:
plot_errorbarfunction for error bar plots with full customizationError Band Plotting:
plot_errorbandfunction for shaded error band visualizationErrorPlotConfig: Dataclass for error bar plot styling (color, capsize, ecolor, elinewidth, capthick, etc.)
ErrorBandConfig: Dataclass for error band styling (color, alpha, hatch, edgecolor, interpolate, etc.)
Comprehensive test suites for
plot_errorbarandplot_errorbandplot_errorbandand all config classes exported fromploteztop-level packageCHANGELOG.mdsymlink at repository root for GitHub visibility
Changed
Renamed parameter classes (breaking):
LinePlot→LinePlotConfigScatterPlot→ScatterPlotConfigFigureConfigfield names now use matplotlib-native names (figsize,sharex,shareyinstead offig_size,share_x,share_y)
Renamed function keyword arguments (breaking):
plot_dictionary→plot_configsubplot_dictionary/subplot_config→figure_config
All parameter classes converted to
dataclasseswith_extradict for arbitrary kwargspopulate()class methods on all config classes for alias-based dictionary creationReplaced
typing.Tuple/typing.Listwith built-intuple/listgenerics (Python >= 3.10)Added type annotation
Axes | Nonetoplot_xyy’saxisparameterAdded
Returnssections to all public function docstringsAdded
Attributessections to all config dataclass docstringsUpdated
quickstart.rst,api.rst, andREADME.mdto reflect current APIExcluded
md_SUMMARIES/from package builds
Fixed
Tests using non-existent
subplot_configkwarg (→figure_config)quickstart.rstreferencing oldLinePlot,ScatterPlot,plot_errorbars,plot_dictionary,subplot_dictionaryREADME.mdreferencing oldLinePlot,line_style,marker_size,mark_everyapi.rststale note about ErrorPlotConfig inheriting from LinePlotConfig
[v0.1.1] 16-Feb-2026
Changed
Path change for examples and images
Updated README
Updated type hints
Simplified parameter handling in
ScatterPlotandLinePlotw.r.t._PlotParamsUpdated
pyproject.tomlwith classifiers and removed commented URLs.Fixed parameter formatting to improve code readability.
Adjusted GitHub Actions workflows (
blacklinting and naming).
[v0.1.0] - 16-Feb-2026
Added
Initial release – Refactored and rebranded from the
mpyezprojectCore plotting functions:
plot_xy: Simple x vs. y plotting with extensive customizationplot_xyy: Dual-axis plotting (dual y-axis or dual x-axis)plot_with_dual_axes: Flexible single or dual-axis plottingtwo_subplots: Create two subplots (horizontal or vertical orientation)n_plotter: Create n$\times$m grid of subplotsplot_two_column_file: Direct CSV file plotting
Parameter classes for plot customization:
LinePlot: Line plot parameters (line style, width, color, markers, etc.)ScatterPlot: Scatter plot parameters (colors, sizes, markers, etc.)FigureConfig: Subplot configuration (figure size, axis sharing)
Custom exceptions:
PlotError: Base exception for plotting errorsOrientationError: Exception for invalid subplot orientation
Comprehensive test suite with 70%+ code coverage
Type hints throughout the codebase (PEP 561 compliant with
py.typedmarker)Development tools integration:
pytest for testing
pytest-cov for coverage reporting
mypy for static type checking
Sphinx for documentation generation
Notes
First official release of plotez
Evolved from the mpyez project with improved architecture and API