NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4048 most downloaded on PyPI
The Pyomo optimization modeling framework
Last release 4 months ago
04 Jun 2026
Ships fairly regularly
a new release about every 3 months
Nearly every release is documented
notes for 55 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
76 releases · first in 2014
New initialization module for nonconvex, nonlinear problems
plyinitialization module for nonconvex, nonlinear problemsgams_v2 solver, writer, and solution loadercuopt direct solver interfacescip direct and persistent solver interfacescapture_output deadlock in multiprocessing environments (#3957)pyomo.duality and pyomo.core.plugins.transform.model (#3876)ConstraintData.equality relational expression generation (#3893)scipopt.org; update DOI for DoE paper (#3968)SolutionLoader (#3701)nonlinear_to_pwl transform. (#3814)CardinalitySet documentation (#3972)CardinalitySet to allow negative deviations (#3969)CartesianProductSet (#3927, #3951)BudgetSet.budget_membership_mat (#3954)stdout (#3902)One column per quarter.
gams_v2 solver, writer, and solution loader
plygams_v2 solver, writer, and solution loadercuopt direct solver interfaceply dependency (#3840)black formatting updates (#3820)Config classes, tests, and docs (#3790)StreamIndenter objects (#3813)tabular_writer (#3804)SuffixFinder to look in context for external data objects (#3844)pyomo.contrib changes (#3768)core.lp_dual transformation (#3842)gdp.mbigm transformation (#3811)ipopt_v2 interface (#3792)iteration_count as a default Results object value (#3767)wall_time using time.perf_counter (#3825)gurobi_v2 interface (#3698)openmpi build type in testing environment (#3797)gurobi_minlp (#3822)conftest.py to support solver/writer marker expressions (#3854)IntersectionSet implementation (#3786)piecewise: Fix deprecation in NonlinearToPWL/LinearRepnVisitor
knitro_direct KNITRO Python bindings interfacegurobi_direct support for MINLPSIGNIFICANT CHANGE NOTICE
CHANGELOG
Results object is populated fully (#3709)New Logic-Based Discrete-Steepest Descent Algorithm in GDPOpt
collections module (#3708)IntEnum.__doc__ is None (#3711)capture_output(capture_fd=True) deadlock on Windows (#3679)New Logic-Based Discrete-Steepest Descent Algorithm in GDPOpt
ConfigDict numpydoc generation support (#3667)TeeStream robustness (#3583, #3588, #3601, #3633, #3640)pyproject.toml (#3603, #3676)PyomoException (#3596)download-extensions (#3656)black (#3660)core.relax_integer_vars transformation (#3586, #3645)del_component with ComponentData arguments (#3440)core.lp_dual transformation (#3672)contrib.simplemodel (#3666)building_documentation() (#3680)gdp.mbigm transformation (#3641)Expression objects (#3673)SolverResults (#3597)ipopt_v2 (#3577)row_order option in lp writer (#3678)__version__ requirement for performance test driver (#3617)appsi_highs (#3613)Update deprecation warnings in contrib.solver (#3553, #3555)
capture_output: do not output to captured file descriptors (#3537, #3560)calc_variable_from_constraint: guard against expression overflow (#3541)exception args in component __call__ implementations (#3538)BlockData.clone (#3542)XpressPersistent.update_var (#3566)AMPLFUNC entries in ipopt_v2 (#3554)contrib.solver (#3553, #3555)pathlib import, remove test output file (#3563)New Logic-Based Discrete-Steepest Descent Algorithm in GDPOpt
TeeStream and capture_output (#3497)Clean up identify_variables / identify_mutable_parameters; deprecate SimpleExpressionVisitor
TeeStream and capture_output (#3449)imp and DeferredImportCallbackFinder (#3444)identify_variables / identify_mutable_parameters;
deprecate SimpleExpressionVisitor (#3436)tee in contrib.solver.config (#3482)uncertain_params (#3439)EllipsoidalSet (#3434)Complete Documentation Reorganization
contrib.doe)Improved support for moved/renamed/deprecated modules
"Annie"
contrib.doe)SIGNIFICANT CHANGE NOTICE
CHANGELOG
InvalidNumber handling in writers (#3390)common.timing to make tests more deterministic (#3397)ConfigValue/ConfigList default until first use (#3394)ConfigValue initialization in multithreaded environments (#3405)ConfigDict: prevent recursion on partially-constructed objects (#3409)AutoSlots deepcopy (#3412, #3413)mpi4py_available to work around conda-forge/openmpi (#3416)create_node_with_local_data (#3376)Param.pprint() for non-finite Params (#3387)gurobipy addConstr call (#3350)gurobi_direct_v2 (#3362)XpressDirect.available(): check there is a valid license (#3400)xpress_direct (#3410)timeout() failures on Windows/py3.13 (#3415)BlockVector/MPIBlockVector base class order (#3380)Refactor of Design of Experiments (contrib.doe)
contrib.doe)SIGNIFICANT CHANGE NOTICE
CHANGELOG
pip (#3355)propagate_solution of scaling
transformation (#3275)context option to SuffixFinder (#3348)_suppress_ctypes attribute from Block (#3347)Set initialization performance (#3302)result and results (#3337)generate_strongly_connected_components
instead of asserting (#3305)Deprecate pyomo.core.plugins.transform.model.to_standard_form()
pyomo.core.plugins.transform.model.to_standard_form() (#3265)NameError in some situations (#3264)New writer for converting linear models to matrix form
ExitNodeDispatcher (#3194)IntEnum (#3224)Var objects in LinearExpression.args (#3189)TemplateSumExpression (#3196)identify_variables (#3190)LegacySolverWrapper compatibility with the pyomo script (#3202)gurobi_direct implementation (#3225)contrib.solver (#3164)solve_strongly_connected_components
performance for models with named expressions (#3186)IncidenceGraphInterface.remove_nodes (#3212)Actions Version Update: Address node.js deprecations
ComponentMap; add DefaultComponentMap (#3150)Path, PathList, and IsInstance Domain Validators (#3144)__all__ (#3142)common.config (#3140)ExitNodeDispatcher to better support extensibility (#3125)__future__ imports (#3109)Block.register_private_data_initializer() (#3153)_BlockData (#3138)all_different and count_if to the logical expression system (#3058)Suffix component (#3072)expr.args (#3099)range_difference for Sets with nonzero anchor points (#3063)to_expr() to AMPLRepn, fix NLWriterInfo return type (#3095)contrib.viewer.tests.test_qt.py (#3085)pyutilib, distutils dependencies) (#3065)numpy.math alias with standard math module (#3074)fbbt.ExpressionBoundsVisitor to handle relational
expressions and Expr_if (#3129)ampl_repn option (#3069)New writer for converting linear models to matrix form
Preformatted class for logging preformatted messages (#2998)CITATION file to main repository (#2992)Expressions with native_numeric_types (#3017)SetInitializer for initializing Param domains; reinitializing
IndexedVar domains (#3001)0* in linear, quadratic walkers (#2981)gurobipy version for testing to 10.0.3 (#3053)fileutils test failure that persists in OSX 12.7 (#3008)crate-ci/typos (#2987)Improved stability and robustness of core Pyomo code and solver interfaces
pyomo check commandADVANCE CHANGE NOTICE
General
multiprocessing.dummy when multiprocessing.Pool is not
available (#2890)FileDownloader.get_os_version exception for missing
lsb_release (#2911)calculate_variable_from_constraint error messages (#2914).dat file (#2923)Core
expr should always return NumericValue (#2948)expr.current (#2910)Documentation
pyomo.common documentation (#2912)Solvers Interfaces
{}**0 in Linear/QuadraticRepn (#2857){}**{float} (#2863, #2865)Testing
crate-ci/typos GitHub Actions (#2869, #2931)DAE
GDP
gdp.transform_current_disjunctive_logic
transformation (#2809)Contributed Packages
land in contrib.logical_to_disjunctive transformation
(#2879)get_incident_variables (#2882)linear_only argument in
get_incident_variables (#2883)PyNumeroEvaluationError (#2901)numpy.vstack rather than iterators
(#2881)Improved stability and robustness of core Pyomo code and solver interfaces
pyomo check commandconfig.StringFormatter (#2853)LinearRepn/QuadraticRepn (#2857)Improved stability and robustness of core Pyomo code and solver interfaces
pyomo check commandpyomo check/pyomo.checker module (#2753)ConfigDict (#2754)add_docstring_list (#2755)black to previously completed directories (#2775)DeveloperError, MouseTrap messages (#2805)SymbolMap (#2791)calculate_variable_from_constraint() (#2812)kestrelAMPL.kill() argument (#2758)LinearExpressions in NL writer (#2811)gdp.bound_pretransformation (#2824)available method in APPSI-Gurobi interface (#2828)IndexedBlock (#2789)cyipopt.Problem (#2760)load_solutions=False (#2820)Add deprecation warning to pyomo command
black to enforce PEP8 standards in certain modules (#2737, #2738,
#2733, #2732, #2731, #2728, #2730, #2729, #2720, #2721, #2719, #2718)pyomo.checker module (#2734)pyomo.util.infeasible.log_* (#2669)download-extensions (#2725)pyomo command (#2740)version= for all deprecation utilities (#2744)pyomo --version version string (#2743)nose references (#2736)__init__.py (#2683)active filter to flattener (#2643)plot method to IncidenceGraphInterface (#2716)Improved stability and robustness of core Pyomo code and solver interfaces
txt to md files (CHANGELOG, LICENSE, RELEASE) (#2635)relocated_module_attribute to work with cythonized modules (#2644)HierarchicalTimer (#2651)pyutilib directory in Jenkins driver (#2637)ExternalFunction expressions (#2657)FactorModelSet (#2620)BudgetSet (#2645)UncertaintySet.bounding_problem method (#2659)Update deprecation utilities to improve user messages
Add deprecation.relocated_module utility
Deprecate name_buffer argument to getname
PyNumero: Remove deprecated useage of numpy.bool
Improved stability and robustness of core Pyomo code and solver interfaces
ADVANCE CHANGE NOTICE
General
TempfileManager updates (deletion order, add context) (#2297)report_scaling utility to detect potential scaling issues (#2252)Core
as_quantity: evaluate a Pyomo expression to a pint Quantity (#2222)abs in numeric differentiation (#2232)Documentation
Solver Interfaces
Alias component (#2288)Testing
nosetests to pytest (#2298)GDP Updates
partition_disjuncts and between_steps transformations (#2221)Contributed Packages
Remove deprecated calls to warnings.warning
Update deprecation warnings to only be emitted once per context
Adding missing __init__.py files across Pyomo
Improvements in deprecation warning system (#2045, #2058, #2056)
Catch non-standard file.write() implementations
Resolve numerous deprecation warnings
BACKWARDS COMPATIBILITY WARNINGS
Moved PySP into a separate package available at https://github.com/Pyomo/pysp
Renamed "Simple" components to "Scalar" components
Removed support for implicit ranged inequalities
Removed support for component reconstruct method
Removed support for casting relational expressions to bool
Removed support for Python 2.7, 3.5, and pypy2
Drop PyUtilib Dependency
General
Core
Documentation
Solver Interfaces
Testing
DAE Updates
GDP Updates
Network Updates
Contributed Packages
Convert old deprecation messages to use pyomo.common.deprecation
ADVANCE CHANGE NOTICE:
This is the last Pyomo release to support Python 2.7, 3.4, and 3.5
This is the last Pyomo release to bundle PySP
This is the last Pyomo release that will have a strict PyUtilib dependency
General
Core
Documentation
Solver Interfaces
DAE Updates
GDP Updates
Testing
Contributed Packages
Deprecate use of base64.decodestring in Python 3 NEOS interface
Setting version number for new deprecation warnings
Nothing published for this version
Add 'version' and 'remove_in' arguments to deprecation_warning
Remove deprecated call to formatargspec in Python 3.x
Update links to tutorials and examples in the README
Remove a line in standard_repn that was unreachable
Remove non-ascii character from README.md
Resolve project description rendering on PyPI
Update the README (#990, #991, #992)
Deprecate pyomo.bilevel and pyomo.duality
Fix setup.py installation failure on Windows
Fixes to avoid deprecation warnings (#760, #765)
- General - Adding support for Python 3.7 -------------------------------------------------------------------------------
Nothing published for this version
Another fix in the release process.
Misc fix in the release process.
Misc version increment to support pypi idiosyncrasies.
Deprecated BigM piecewise representations
Resolved timeout issues running NEOS solvers
index.- Monkeypatch to resolve (#95) -------------------------------------------------------------------------------
Added a CONOPT plugin to handle a custom SOL file output
- Updating PyUtilib dependency -------------------------------------------------------------------------------
Added examples used in the Pyomo book to the Pyomo software repos
Fixing PyUtilib dependency version.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →