diff --git a/.coin-or/projDesc.xml b/.coin-or/projDesc.xml
index 1ee247e100f..da977677d1f 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.7.0
- 6.7.0
+ 6.7.1
+ 6.7.1
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 553a4f1c3bd..c06e0f71378 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,82 @@ Pyomo CHANGELOG
===============
+-------------------------------------------------------------------------------
+Pyomo 6.7.1 (21 Feb 2024)
+-------------------------------------------------------------------------------
+
+- General
+ - Add support for tuples in `ComponentMap`; add `DefaultComponentMap` (#3150)
+ - Update `Path`, `PathList`, and `IsInstance` Domain Validators (#3144)
+ - Remove usage of `__all__` (#3142)
+ - Extend Path and Type Checking Validators of `common.config` (#3140)
+ - Update Copyright Statements (#3139)
+ - Update `ExitNodeDispatcher` to better support extensibility (#3125)
+ - Create contributors data gathering script (#3117)
+ - Prevent duplicate entries in ConfigDict declaration order (#3116)
+ - Remove unnecessary `__future__` imports (#3109)
+ - Import pandas through pyomo.common.dependencies (#3102)
+ - Update links to workshop slides (#3079)
+ - Remove incorrect use of identity (is) comparisons (#3061)
+- Core
+ - Add `Block.register_private_data_initializer()` (#3153)
+ - Generalize the simple_constraint_rule decorator (#3152)
+ - Fix edge case assigning new numeric types to Var/Param with units (#3151)
+ - Add private_data to `_BlockData` (#3138)
+ - IndexComponent create implicit sets as "anonymous" sets (#3075)
+ - Add `all_different` and `count_if` to the logical expression system (#3058)
+ - Fix RangeSet.__len__ when defined by floats (#3119)
+ - Overhaul the `Suffix` component (#3072)
+ - Enforce expression immutability in `expr.args` (#3099)
+ - Improve NumPy registration when assigning numpy to Param (#3093)
+ - Track changes in PyPy behavior introduced in 7.3.14 (#3087)
+ - Remove automatic numpy import (#3077)
+ - Fix `range_difference` for Sets with nonzero anchor points (#3063)
+ - Clarify errors raised by accessing Sets by positional index (#3062)
+- Documentation
+ - Update intersphinx links, remove docs for nonfunctional code (#3155)
+ - Update MPC documentation and citation (#3148)
+ - Fix an error in the documentation for LinearExpression (#3090)
+ - Fix Pyomo.DoE documentation (#3070)
+ - Fix latex_printer documentation (#3066)
+- Solver Interfaces
+ - Preview release of new solver interfaces as pyomo.contrib.solver
+ (#3137, #3156)
+ - Make error msg more explicit wrt different interfaces (#3141)
+ - NLv2: only raise exception for empty models in the legacy API (#3135)
+ - Add `to_expr()` to AMPLRepn, fix NLWriterInfo return type (#3095)
+- Testing
+ - Update Release Wheel Builder Action (#3149)
+ - Actions Version Update: Address node.js deprecations (#3118)
+ - New Black Major Release (24.1.0) (#3108)
+ - Use scip for PyROS tests (#3104)
+ - Add missing solver dependency flags for OnlineDocs tests (#3094)
+ - Re-enable `contrib.viewer.tests.test_qt.py` (#3085)
+ - Add automated testing of OnlineDocs examples (#3080)
+ - Silence deprecation warnings emitted by Pyomo tests (#3076)
+ - Fix Python 3.12 tests (manage `pyutilib`, `distutils` dependencies) (#3065)
+- DAE
+ - Replace deprecated `numpy.math` alias with standard `math` module (#3074)
+- GDP
+ - Handle nested GDPs correctly in all the transformations (#3145)
+ - Fix bugs in nested models in gdp.hull transformation (#3143)
+ - Various bug fixes in gdp.mbigm transformation (#3073)
+ - Add GDP => MINLP Transformation (#3082)
+- Contributed Packages
+ - GDPopt: Fix lbb solve_data bug (#3133)
+ - GDPopt: Adding missing import for gdpopt.enumerate (#3105)
+ - FBBT: Extend `fbbt.ExpressionBoundsVisitor` to handle relational
+ expressions and Expr_if (#3129)
+ - incidence_analysis: Method to add an edge in IncidenceGraphInterface (#3120)
+ - incidence_analysis: Add subgraph method to IncidencegraphInterface (#3122)
+ - incidence_analysis: Add `ampl_repn` option (#3069)
+ - incidence_analysis: Update documentation (#3067)
+ - interior_point: Resolve test failure due to Mumps update (#3114)
+ - MindtPy: Various bug fixes (#3034)
+ - PyROS: Update Solver Argument Resolution and Validation Routines (#3126)
+ - PyROS: Update Subproblem Initialization Routines (#3071)
+ - PyROS: Fix DR polishing under nominal objective focus (#3060)
+
-------------------------------------------------------------------------------
Pyomo 6.7.0 (29 Nov 2023)
-------------------------------------------------------------------------------
diff --git a/README.md b/README.md
index 2f8a25403c2..95558e52a42 100644
--- a/README.md
+++ b/README.md
@@ -83,7 +83,7 @@ To get help from the Pyomo community ask a question on one of the following:
### Developers
-Pyomo development moved to this repository in June, 2016 from
+Pyomo development moved to this repository in June 2016 from
Sandia National Laboratories. Developer discussions are hosted by
[Google Groups](https://groups.google.com/forum/#!forum/pyomo-developers).
diff --git a/RELEASE.md b/RELEASE.md
index 03baa803ac9..9b101e0999a 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -1,4 +1,4 @@
-We are pleased to announce the release of Pyomo 6.7.0.
+We are pleased to announce the release of Pyomo 6.7.1.
Pyomo is a collection of Python software packages that supports a
diverse set of optimization capabilities for formulating and analyzing
@@ -9,8 +9,10 @@ The following are highlights of the 6.7 release series:
- Added support for Python 3.12
- Removed support for Python 3.7
- New writer for converting linear models to matrix form
+ - Improved handling of nested GDPs
- New packages:
- latex_printer (print Pyomo models to a LaTeX compatible format)
+ - contrib.solver: preview of redesigned solver interfaces
- ...and of course numerous minor bug fixes and performance enhancements
A full list of updates and changes is available in the
diff --git a/pyomo/contrib/solver/base.py b/pyomo/contrib/solver/base.py
index f3d60bef03d..13bd5ddb212 100644
--- a/pyomo/contrib/solver/base.py
+++ b/pyomo/contrib/solver/base.py
@@ -396,7 +396,7 @@ def _map_config(
"`keepfiles` has been deprecated in the new solver interface. "
"Use `working_dir` instead to designate a directory in which "
f"files should be generated and saved. Setting `working_dir` to `{cwd}`.",
- version='6.7.1.dev0',
+ version='6.7.1',
)
self.config.working_dir = cwd
# I believe this currently does nothing; however, it is unclear what
diff --git a/pyomo/core/base/suffix.py b/pyomo/core/base/suffix.py
index 0c27eee060f..be2f732650d 100644
--- a/pyomo/core/base/suffix.py
+++ b/pyomo/core/base/suffix.py
@@ -341,7 +341,7 @@ def clear_all_values(self):
@deprecated(
'Suffix.set_datatype is replaced with the Suffix.datatype property',
- version='6.7.1.dev0',
+ version='6.7.1',
)
def set_datatype(self, datatype):
"""
@@ -351,7 +351,7 @@ def set_datatype(self, datatype):
@deprecated(
'Suffix.get_datatype is replaced with the Suffix.datatype property',
- version='6.7.1.dev0',
+ version='6.7.1',
)
def get_datatype(self):
"""
@@ -361,7 +361,7 @@ def get_datatype(self):
@deprecated(
'Suffix.set_direction is replaced with the Suffix.direction property',
- version='6.7.1.dev0',
+ version='6.7.1',
)
def set_direction(self, direction):
"""
@@ -371,7 +371,7 @@ def set_direction(self, direction):
@deprecated(
'Suffix.get_direction is replaced with the Suffix.direction property',
- version='6.7.1.dev0',
+ version='6.7.1',
)
def get_direction(self):
"""
diff --git a/pyomo/version/info.py b/pyomo/version/info.py
index 0db00ac240f..dae1b6b6c7f 100644
--- a/pyomo/version/info.py
+++ b/pyomo/version/info.py
@@ -27,8 +27,8 @@
major = 6
minor = 7
micro = 1
-releaselevel = 'invalid'
-# releaselevel = 'final'
+# releaselevel = 'invalid'
+releaselevel = 'final'
serial = 0
if releaselevel == 'final':