diff --git a/.coin-or/projDesc.xml b/.coin-or/projDesc.xml index b656b18fdeb..180d366a1fd 100644 --- a/.coin-or/projDesc.xml +++ b/.coin-or/projDesc.xml @@ -227,8 +227,8 @@ Carl D. Laird, Chair, Pyomo Management Committee, claird at andrew dot cmu dot e Use explicit overrides to disable use of automated version reporting. --> - 6.8.0 - 6.8.0 + 6.8.1 + 6.8.1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d16105d24b..c8392ac8106 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,67 @@ Pyomo CHANGELOG =============== +------------------------------------------------------------------------------- +Pyomo 6.8.1 (15 Nov 2024) +------------------------------------------------------------------------------- + +"Annie" + +SIGNIFICANT CHANGE NOTICE + +- This will be the last release to support Python 3.8 +- This is the first release to be tested against Python 3.13 +- Complete reorganization of our online documentation (#3382, #3378) + +CHANGELOG + +- General + - Add a 'Do not delete' Disclaimer to Issues/PR Templates (#3361) + - Add URL Status Badge to README (#3373) + - Resolve change in `InvalidNumber` handling in writers (#3390) + - Update `common.timing` to make tests more deterministic (#3397) + - Defer processing `ConfigValue`/`ConfigList` default until first use (#3394) + - Improved support for moved/renamed/deprecated modules (#3385) + - Fix `ConfigValue` initialization in multithreaded environments (#3405) + - `ConfigDict`: prevent recursion on partially-constructed objects (#3409) + - Fix bug in `AutoSlots` deepcopy (#3412, #3413) + - Update `mpi4py_available` to work around `conda-forge/openmpi` (#3416) +- Core + - Resolve bugs in `create_node_with_local_data` (#3376) + - Resolve issue in filter/validate deprecation path (#3368) + - Support `Param.pprint()` for non-finite Params (#3387) + - Add (parameterized) linear programming dual transformation (#3402) +- Documentation + - Autogenerate API documentation (#3378) + - Add Alternative Solutions documentation (#3370) + - Reorganize online documentation (#3382) + - Fix broken doc URLs (#3398) + - Improved autoenum documentation (#3389) + - Reduce the number of formats built on readthedocs to avoid timeout (#3404) +- Solver Interfaces + - Remove deprecated `gurobipy` `addConstr` call (#3350) + - Update Xpress interfaces to support 9.5 (#3392) + - Add support for templatized models in `gurobi_direct_v2` (#3362) + - Update test for GAMS mapping 'infeasible or unbounded' to infeasible (#3396) + - `XpressDirect.available()`: check there is a valid license (#3400) + - Move away from dependence on gurobi.sh (#3384) + - Fix error when xpress is imported before `xpress_direct` (#3410) +- Testing + - Move URL Checker to Weekly Job (#3360) + - Correct newly discovered typos (#3365, #3399) + - Remove Octeract from NEOS solvers list (and other testing fixes) (#3374) + - Guard tests against broken Gurobi licenses (#3383) + - Remove pin to Gurobi 10.0.3 (#3393) + - Add Python 3.13 to Testing Infrastructure (#3401) + - Resolve `timeout()` failures on Windows/py3.13 (#3415) +- GDP + - Fix performance degradation in hull transformation (#3366) +- Contributed Packages + - DoE: Fix bug from using hardcoded value (#3358) + - iis: Catch catastrophic solver failure when building MIS (#3403) + - PyNumero: Reverse `BlockVector`/`MPIBlockVector` base class order (#3380) + - PyNumero: Resolve incompatibilities with NumPy2 (#3408) + - PyROS: Overhaul preprocessor subroutine and subproblem objects (#3341) ------------------------------------------------------------------------------- Pyomo 6.8.0 (20 Aug 2024) diff --git a/RELEASE.md b/RELEASE.md index ec1e532cbcc..1334ea8d2a6 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,4 +1,4 @@ -We are pleased to announce the release of Pyomo 6.8.0. +We are pleased to announce the release of Pyomo 6.8.1. Pyomo is a collection of Python software packages that supports a diverse set of optimization capabilities for formulating and analyzing @@ -6,7 +6,10 @@ optimization models. The following are highlights of the 6.8 release series: -- Support for Numpy2 +- Complete Documentation Reorganization +- Added support for Python 3.13 +- Refactor default Gurobi interface to support version 12 +- Support for NumPy2 - Refactor of Design of Experiments (`contrib.doe`) - New packages: - alternative_solutions: alternative (near) optimal solutions diff --git a/pyomo/common/deprecation.py b/pyomo/common/deprecation.py index 313c834ffe4..50ad43ff1f8 100644 --- a/pyomo/common/deprecation.py +++ b/pyomo/common/deprecation.py @@ -307,7 +307,7 @@ def _import_object(name, target, version, remove_in, msg): @deprecated( "relocated_module() has been deprecated. Please use moved_module()", - version='6.8.1.dev0', + version='6.8.1', ) def relocated_module(new_name, msg=None, logger=None, version=None, remove_in=None): """Provide a deprecation path for moved / renamed modules diff --git a/pyomo/opt/results/__init__.py b/pyomo/opt/results/__init__.py index 524b9e0706a..fb52575f134 100644 --- a/pyomo/opt/results/__init__.py +++ b/pyomo/opt/results/__init__.py @@ -31,7 +31,7 @@ for _attr in ('ScalarData', 'ScalarType', 'default_print_options', 'strict'): relocated_module_attribute( - _attr, 'pyomo.opt.results.container.' + _attr, version='6.8.1.dev0' + _attr, 'pyomo.opt.results.container.' + _attr, version='6.8.1' ) del _attr del relocated_module_attribute diff --git a/pyomo/repn/linear.py b/pyomo/repn/linear.py index 90dc58eabc0..3cb3106b9cb 100644 --- a/pyomo/repn/linear.py +++ b/pyomo/repn/linear.py @@ -716,7 +716,7 @@ def __init__( deprecation_warning( "var_map, var_order, and sorter are deprecated arguments to " "LinearRepnVisitor(). Please pass the VarRecorder object directly.", - version='6.7.4.dev0', + version='6.8.1', ) var_recorder = OrderedVarRecorder(var_map, var_order, sorter) if var_recorder is None: diff --git a/pyomo/version/info.py b/pyomo/version/info.py index 858e90f8c77..8d75a31ee61 100644 --- a/pyomo/version/info.py +++ b/pyomo/version/info.py @@ -27,8 +27,8 @@ major = 6 minor = 8 micro = 1 -releaselevel = 'invalid' -# releaselevel = 'final' +# releaselevel = 'invalid' +releaselevel = 'final' serial = 0 if releaselevel == 'final':