Skip to content

Commit

Permalink
Merge pull request Pyomo#3256 from blnicho/finalize-release-6.7.2
Browse files Browse the repository at this point in the history
Finalize 6.7.2 release
  • Loading branch information
mrmundt authored May 9, 2024
2 parents c0fd062 + 28c158c commit 6f0dc65
Show file tree
Hide file tree
Showing 28 changed files with 136 additions and 58 deletions.
4 changes: 2 additions & 2 deletions .coin-or/projDesc.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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.
-->
<stableVersionNumber>6.7.1</stableVersionNumber>
<releaseNumber>6.7.1</releaseNumber>
<stableVersionNumber>6.7.2</stableVersionNumber>
<releaseNumber>6.7.2</releaseNumber>

</developmentStatus>

Expand Down
75 changes: 75 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,81 @@ Pyomo CHANGELOG
===============


-------------------------------------------------------------------------------
Pyomo 6.7.2 (9 May 2024)
-------------------------------------------------------------------------------

- General
- Support config domains with either method or attribute domain_name (#3159)
- Automate TPL callback registrations (#3167)
- Fix type registrations for ExternalFunction arguments (#3168)
- Only modify module path and spec for deferred import modules (#3176)
- Add "mixed" standard form representation (#3201)
- Support "default" dispatchers in `ExitNodeDispatcher` (#3194)
- Redefine objective sense as a proper `IntEnum` (#3224)
- Fix division-by-0 bug in linear walker (#3246)
- Core
- Allow `Var` objects in `LinearExpression.args` (#3189)
- Add type hints to components (#3173)
- Simplify expressions generated by `TemplateSumExpression` (#3196)
- Make component data public classes (#3221, #3253)
- Exploit repeated named expressions in `identify_variables` (#3190)
- Documentation
- NFC: Add link to the HOMOWP companion notebooks (#3195)
- Update installation documentation to include Cython instructions (#3208)
- Add links to the Pyomo Book Springer page (#3211)
- Solver Interfaces
- Fix division by zero error in linear presolve (#3161)
- Subprocess timeout update (#3183)
- Solver Refactor - Bug fixes for various components (#3181, #3214, #3228)
- NLv2: handle presolved independent linear subsystems (#3193)
- Update `LegacySolverWrapper` compatibility with the `pyomo` script (#3202)
- Fix mosek_direct to use putqconk instead of putqcon (#3199)
- Check _skip_trivial_constraints before the constraint body (#3226)
- Fix AMPL solver duplicate funcadd (#3206)
- Disable the use of universal newlines in the ipopt_v2 NL file (#3231)
- NLv2: fix reporting numbers of nonlinear discrete variables (#3238)
- Fix: Get SCIP solving time considering float number with some text (#3234)
- Solver Refactor - Add `gurobi_direct` implementation (#3225)
- Testing
- Update TPL package list due to `contrib.solver` (#3164)
- Set maxDiff=None on the base TestCase class (#3171)
- Testing infrastructure updates (#3175)
- Typos update for March 2024 (#3219)
- Add openmpi to testing environment to resolve issue in mpi4py (#3236, #3239)
- Skip black 24.4.1 due to a bug in the parser (#3247)
- Skip tests on draft and WIP pull requests (#3223)
- Update GHA to grab gurobipy from PyPI (#3254)
- GDP
- Use private_data for all original / transformed component mappings (#3166)
- Fix a bug in gdp.bigm transformation for nested GDPs (#3213)
- Contributed Packages
- APPSI: cmodel: handle non-mutable params in var / constraint bounds (#3182)
- APPSI: Allow APPSI FBBT to handle nested named Expressions (#3185)
- APPSI: Add MAiNGO solver interface (#3165)
- CP: Add SequenceVar and other logical expressions for scheduling (#3227)
- DoE: Bug fixes (#3245)
- iis: Add minimal intractable system infeasibility diagnostics (#3172)
- incidence_analysis: Improve `solve_strongly_connected_components`
performance for models with named expressions (#3186)
- incidence_analysis: Add function to plot incidence graph in
Dulmage-Mendelsohn order (#3207)
- incidence_analysis: Require variables and constraints to be specified
separately in `IncidenceGraphInterface.remove_nodes` (#3212)
- latex_printer: bugfix for set operations / multidimensional sets (#3177)
- MindtPy: Add HiGHS support (#2971)
- MindtPy: Add call_before_subproblem_solve callback (#3251)
- Parmest: New UI using experiment lists (#3160)
- piecewise: Add piecewise linear transformations (#3036)
- preprocessing: bugfix: intersect domains in variable aggregator (#3241)
- PyNumero: Allow CyIpopt to solve problems without objectives (#3163)
- PyNumero: Work around bug in CyIpopt 1.4.0 (#3222)
- PyNumero: Include "inventory" in readme (#3248)
- PyROS: Simplify custom domain validators (#3169)
- PyROS: Fix iteration logging for edge case involving discrete sets (#3170)
- PyROS: Update solver timing system (#3198)
- simplification: expression simplification using GiNaC or SymPy (#3088)

-------------------------------------------------------------------------------
Pyomo 6.7.1 (21 Feb 2024)
-------------------------------------------------------------------------------
Expand Down
9 changes: 7 additions & 2 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
We are pleased to announce the release of Pyomo 6.7.1.
We are pleased to announce the release of Pyomo 6.7.2.

Pyomo is a collection of Python software packages that supports a
diverse set of optimization capabilities for formulating and analyzing
Expand All @@ -10,9 +10,14 @@ The following are highlights of the 6.7 release series:
- Removed support for Python 3.7
- New writer for converting linear models to matrix form
- Improved handling of nested GDPs
- Redesigned user API for parameter estimation
- New packages:
- latex_printer (print Pyomo models to a LaTeX compatible format)
- iis: new capability for identifying minimal intractable systems
- latex_printer: print Pyomo models to a LaTeX compatible format
- contrib.solver: preview of redesigned solver interfaces
- simplification: simplify Pyomo expressions
- New solver interfaces
- MAiNGO: Mixed-integer nonlinear global optimization
- ...and of course numerous minor bug fixes and performance enhancements

A full list of updates and changes is available in the
Expand Down
6 changes: 3 additions & 3 deletions pyomo/common/dependencies.py
Original file line number Diff line number Diff line change
Expand Up @@ -611,7 +611,7 @@ def attempt_import(
want to import/return the first one that is available.
defer_check: bool, optional
DEPRECATED: renamed to ``defer_import`` (deprecated in version 6.7.2.dev0)
DEPRECATED: renamed to ``defer_import`` (deprecated in version 6.7.2)
defer_import: bool, optional
If True, then the attempted import is deferred until the first
Expand Down Expand Up @@ -674,7 +674,7 @@ def attempt_import(
if defer_check is not None:
deprecation_warning(
'defer_check=%s is deprecated. Please use defer_import' % (defer_check,),
version='6.7.2.dev0',
version='6.7.2',
)
assert defer_import is None
defer_import = defer_check
Expand Down Expand Up @@ -787,7 +787,7 @@ def _perform_import(
@deprecated(
"``declare_deferred_modules_as_importable()`` is deprecated. "
"Use the :py:class:`declare_modules_as_importable` context manager.",
version='6.7.2.dev0',
version='6.7.2',
)
def declare_deferred_modules_as_importable(globals_dict):
"""Make all :py:class:`DeferredImportModules` in ``globals_dict`` importable
Expand Down
2 changes: 1 addition & 1 deletion pyomo/common/numeric_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
relocated_module_attribute(
'pyomo_constant_types',
'pyomo.common.numeric_types._pyomo_constant_types',
version='6.7.2.dev0',
version='6.7.2',
msg="The pyomo_constant_types set will be removed in the future: the set "
"contained only NumericConstant and _PythonCallbackFunctionID, and provided "
"no meaningful value to clients or walkers. Users should likely handle "
Expand Down
6 changes: 3 additions & 3 deletions pyomo/contrib/incidence_analysis/interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -891,9 +891,9 @@ def remove_nodes(self, variables=None, constraints=None):
.. note::
**Deprecation in Pyomo v6.7.2.dev0**
**Deprecation in Pyomo v6.7.2**
The pre-6.7.2.dev0 implementation of ``remove_nodes`` allowed variables and
The pre-6.7.2 implementation of ``remove_nodes`` allowed variables and
constraints to remove to be specified in a single list. This made
error checking difficult, and indeed, if invalid components were
provided, we carried on silently instead of throwing an error or
Expand Down Expand Up @@ -923,7 +923,7 @@ def remove_nodes(self, variables=None, constraints=None):
if any(var in self._con_index_map for var in variables) or any(
con in self._var_index_map for con in constraints
):
deprecation_warning(depr_msg, version="6.7.2.dev0")
deprecation_warning(depr_msg, version="6.7.2")
# If we received variables/constraints in the same list, sort them.
# Any unrecognized objects will be caught by _validate_input.
for var in variables:
Expand Down
6 changes: 2 additions & 4 deletions pyomo/contrib/parmest/parmest.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,6 @@
from pyomo.common.deprecation import deprecated
from pyomo.common.deprecation import deprecation_warning

DEPRECATION_VERSION = '6.7.2.dev0'

parmest_available = numpy_available & pandas_available & scipy_available

inverse_reduced_hessian, inverse_reduced_hessian_available = attempt_import(
Expand Down Expand Up @@ -338,7 +336,7 @@ def _deprecated_init(
"You're using the deprecated parmest interface (model_function, "
"data, theta_names). This interface will be removed in a future release, "
"please update to the new parmest interface using experiment lists.",
version=DEPRECATION_VERSION,
version='6.7.2',
)
self.pest_deprecated = _DeprecatedEstimator(
model_function,
Expand Down Expand Up @@ -1386,7 +1384,7 @@ def confidence_region_test(
################################


@deprecated(version=DEPRECATION_VERSION)
@deprecated(version='6.7.2')
def group_data(data, groupby_column_name, use_mean=None):
"""
Group data by scenario
Expand Down
8 changes: 4 additions & 4 deletions pyomo/core/base/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,13 +163,13 @@
)
# Historically, only a subset of "private" component data classes were imported here
relocated_module_attribute(
f'_GeneralVarData', f'pyomo.core.base.VarData', version='6.7.2.dev0'
f'_GeneralVarData', f'pyomo.core.base.VarData', version='6.7.2'
)
relocated_module_attribute(
f'_GeneralBooleanVarData', f'pyomo.core.base.BooleanVarData', version='6.7.2.dev0'
f'_GeneralBooleanVarData', f'pyomo.core.base.BooleanVarData', version='6.7.2'
)
relocated_module_attribute(
f'_ExpressionData', f'pyomo.core.base.NamedExpressionData', version='6.7.2.dev0'
f'_ExpressionData', f'pyomo.core.base.NamedExpressionData', version='6.7.2'
)
for _cdata in (
'ConstraintData',
Expand All @@ -179,7 +179,7 @@
'ObjectiveData',
):
relocated_module_attribute(
f'_{_cdata}', f'pyomo.core.base.{_cdata}', version='6.7.2.dev0'
f'_{_cdata}', f'pyomo.core.base.{_cdata}', version='6.7.2'
)
del _cdata
del relocated_module_attribute
2 changes: 1 addition & 1 deletion pyomo/core/base/block.py
Original file line number Diff line number Diff line change
Expand Up @@ -1983,7 +1983,7 @@ def private_data(self, scope=None):

class _BlockData(metaclass=RenamedClass):
__renamed__new_class__ = BlockData
__renamed__version__ = '6.7.2.dev0'
__renamed__version__ = '6.7.2'


@ModelComponentFactory.register(
Expand Down
4 changes: 2 additions & 2 deletions pyomo/core/base/boolean_var.py
Original file line number Diff line number Diff line change
Expand Up @@ -252,12 +252,12 @@ def free(self):

class _BooleanVarData(metaclass=RenamedClass):
__renamed__new_class__ = BooleanVarData
__renamed__version__ = '6.7.2.dev0'
__renamed__version__ = '6.7.2'


class _GeneralBooleanVarData(metaclass=RenamedClass):
__renamed__new_class__ = BooleanVarData
__renamed__version__ = '6.7.2.dev0'
__renamed__version__ = '6.7.2'


@ModelComponentFactory.register("Logical decision variables.")
Expand Down
6 changes: 3 additions & 3 deletions pyomo/core/base/component.py
Original file line number Diff line number Diff line change
Expand Up @@ -477,7 +477,7 @@ def _pprint_base_impl(

class _ComponentBase(metaclass=RenamedClass):
__renamed__new_class__ = ComponentBase
__renamed__version__ = '6.7.2.dev0'
__renamed__version__ = '6.7.2'


class Component(ComponentBase):
Expand Down Expand Up @@ -663,7 +663,7 @@ def getname(self, fully_qualified=False, name_buffer=None, relative_to=None):
"use of this argument poses risks if the buffer contains "
"names relative to different Blocks in the model hierarchy or "
"a mixture of local and fully_qualified names.",
version='TODO',
version='6.4.1',
)
name_buffer[id(self)] = ans
return ans
Expand Down Expand Up @@ -922,7 +922,7 @@ def getname(self, fully_qualified=False, name_buffer=None, relative_to=None):
"use of this argument poses risks if the buffer contains "
"names relative to different Blocks in the model hierarchy or "
"a mixture of local and fully_qualified names.",
version='TODO',
version='6.4.1',
)
if id(self) in name_buffer:
# Return the name if it is in the buffer
Expand Down
2 changes: 1 addition & 1 deletion pyomo/core/base/connector.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ def _iter_vars(self):

class _ConnectorData(metaclass=RenamedClass):
__renamed__new_class__ = ConnectorData
__renamed__version__ = '6.7.2.dev0'
__renamed__version__ = '6.7.2'


@ModelComponentFactory.register(
Expand Down
4 changes: 2 additions & 2 deletions pyomo/core/base/constraint.py
Original file line number Diff line number Diff line change
Expand Up @@ -577,12 +577,12 @@ def slack(self):

class _ConstraintData(metaclass=RenamedClass):
__renamed__new_class__ = ConstraintData
__renamed__version__ = '6.7.2.dev0'
__renamed__version__ = '6.7.2'


class _GeneralConstraintData(metaclass=RenamedClass):
__renamed__new_class__ = ConstraintData
__renamed__version__ = '6.7.2.dev0'
__renamed__version__ = '6.7.2'


@ModelComponentFactory.register("General constraint expressions.")
Expand Down
6 changes: 3 additions & 3 deletions pyomo/core/base/expression.py
Original file line number Diff line number Diff line change
Expand Up @@ -198,12 +198,12 @@ def __ipow__(self, other):

class _ExpressionData(metaclass=RenamedClass):
__renamed__new_class__ = NamedExpressionData
__renamed__version__ = '6.7.2.dev0'
__renamed__version__ = '6.7.2'


class _GeneralExpressionDataImpl(metaclass=RenamedClass):
__renamed__new_class__ = NamedExpressionData
__renamed__version__ = '6.7.2.dev0'
__renamed__version__ = '6.7.2'


class ExpressionData(NamedExpressionData, ComponentData):
Expand Down Expand Up @@ -231,7 +231,7 @@ def __init__(self, expr=None, component=None):

class _GeneralExpressionData(metaclass=RenamedClass):
__renamed__new_class__ = ExpressionData
__renamed__version__ = '6.7.2.dev0'
__renamed__version__ = '6.7.2'


@ModelComponentFactory.register(
Expand Down
4 changes: 2 additions & 2 deletions pyomo/core/base/logical_constraint.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,12 +124,12 @@ def get_value(self):

class _LogicalConstraintData(metaclass=RenamedClass):
__renamed__new_class__ = LogicalConstraintData
__renamed__version__ = '6.7.2.dev0'
__renamed__version__ = '6.7.2'


class _GeneralLogicalConstraintData(metaclass=RenamedClass):
__renamed__new_class__ = LogicalConstraintData
__renamed__version__ = '6.7.2.dev0'
__renamed__version__ = '6.7.2'


@ModelComponentFactory.register("General logical constraints.")
Expand Down
4 changes: 2 additions & 2 deletions pyomo/core/base/objective.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,12 +145,12 @@ def set_sense(self, sense):

class _ObjectiveData(metaclass=RenamedClass):
__renamed__new_class__ = ObjectiveData
__renamed__version__ = '6.7.2.dev0'
__renamed__version__ = '6.7.2'


class _GeneralObjectiveData(metaclass=RenamedClass):
__renamed__new_class__ = ObjectiveData
__renamed__version__ = '6.7.2.dev0'
__renamed__version__ = '6.7.2'


@ModelComponentFactory.register("Expressions that are minimized or maximized.")
Expand Down
2 changes: 1 addition & 1 deletion pyomo/core/base/param.py
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ def _compute_polynomial_degree(self, result):

class _ParamData(metaclass=RenamedClass):
__renamed__new_class__ = ParamData
__renamed__version__ = '6.7.2.dev0'
__renamed__version__ = '6.7.2'


@ModelComponentFactory.register(
Expand Down
2 changes: 1 addition & 1 deletion pyomo/core/base/piecewise.py
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ def __call__(self, x):

class _PiecewiseData(metaclass=RenamedClass):
__renamed__new_class__ = PiecewiseData
__renamed__version__ = '6.7.2.dev0'
__renamed__version__ = '6.7.2'


class _SimpleSinglePiecewise(object):
Expand Down
Loading

0 comments on commit 6f0dc65

Please sign in to comment.