Skip to content

Commit f096ce1

Browse files
authored
Merge pull request #2841 from mrmundt/finalize-release
Finalize Pyomo for 6.6.0 Release
2 parents a9713fe + 6545ef1 commit f096ce1

File tree

16 files changed

+95
-35
lines changed

16 files changed

+95
-35
lines changed

.coin-or/projDesc.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -227,8 +227,8 @@ Carl D. Laird, Chair, Pyomo Management Committee, claird at andrew dot cmu dot e
227227
Use explicit overrides to disable use of automated
228228
version reporting.
229229
-->
230-
<stableVersionNumber>6.5.0</stableVersionNumber>
231-
<releaseNumber>6.5.0</releaseNumber>
230+
<stableVersionNumber>6.6.0</stableVersionNumber>
231+
<releaseNumber>6.6.0</releaseNumber>
232232

233233
</developmentStatus>
234234

CHANGELOG.md

+54
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,60 @@
11
Pyomo CHANGELOG
22
===============
33

4+
-------------------------------------------------------------------------------
5+
Pyomo 6.6.0 (24 May 2023)
6+
-------------------------------------------------------------------------------
7+
8+
- General
9+
- Remove `pyomo check`/`pyomo.checker` module (#2753)
10+
- Improve formatting of docstrings generated from `ConfigDict` (#2754)
11+
- Deprecate `add_docstring_list` (#2755)
12+
- Reapply `black` to previously completed directories (#2775)
13+
- Improve formatting for `DeveloperError`, `MouseTrap` messages (#2805)
14+
- Core
15+
- Bugfix: component indexes specified as lists (#2765)
16+
- Remove the use of weakrefs in `SymbolMap` (#2791)
17+
- Improve conversions between Pyomo and Sympy expressions (#2806)
18+
- Rework expression generation to leverage multiple dispatch (#2722)
19+
- Improve robustness of `calculate_variable_from_constraint()` (#2812)
20+
- Add support for infix Boolean logical operators (#2835)
21+
- Improvements to Pyomo component iteration (#2829)
22+
- Documentation
23+
- Copyright and Book Updates (#2750)
24+
- Link documentation in incidence_analysis README (#2759)
25+
- Update ReadtheDocs Configuration (#2780)
26+
- Correct import in community.rst (#2792)
27+
- Remove instructions for python <= 3.0 (#2822)
28+
- Solvers Interfaces
29+
- NEOS: fix typo in `kestrelAMPL.kill()` argument (#2758)
30+
- Better handling of mutable parameters in HiGHS interface (#2763)
31+
- Improve linear data structure in NL writer (#2769)
32+
- Bugfix for shared named expressions in NL writer (#2790)
33+
- Resolve NPV constants in `LinearExpressions` in NL writer (#2811)
34+
- GAMS/Baron: ensure negative numbers are parenthesized (#2833)
35+
- Release LP version 2 (LPv2) writer (#2823, #2840)
36+
- Testing
37+
- Rework Upload of Coverage Reports (#2761)
38+
- Update constant for visitor tests for python 3.11.2 (#2799)
39+
- Auto-Linting: Spelling Black Style Checker (#2800, #2818)
40+
- Skip MOSEK tests on NEOS (due to unknown NEOS error) (#2839)
41+
- GDP
42+
- Add `gdp.bound_pretransformation` (#2824)
43+
- Contributed Packages
44+
- APPSI: Improve logging consistency across solvers (#2787)
45+
- APPSI: Update `available` method in APPSI-Gurobi interface (#2828)
46+
- DoE: Release version 2 (#2794)
47+
- incidence_analysis: Remove strict usage of PyomoNLP (#2752)
48+
- incidence_analysis: Test `IndexedBlock` (#2789)
49+
- incidence_analysis: Use standard repn for incidence graph generation (#2834)
50+
- Parmest: Update for pandas 2.0.0 release (#2795)
51+
- piecewise: Add contrib.piecewise package (#2708, #2768, #2766, #2797, #2798,
52+
#2826)
53+
- PyNumero: Refactor CyIpopt interface to subclass `cyipopt.Problem` (#2760)
54+
- PyNumero: Fix CyIpopt interface when `load_solutions=False` (#2820)
55+
- PyROS: Fixes to PyROS Separation Routine (#2815)
56+
- PyROS: Fixes to Coefficient Matching and Timing Functionalities (#2837)
57+
458
-------------------------------------------------------------------------------
559
Pyomo 6.5.0 (16 Feb 2023)
660
-------------------------------------------------------------------------------

RELEASE.md

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
We are pleased to announce the release of Pyomo 6.5.0.
1+
We are pleased to announce the release of Pyomo 6.6.0.
22

33
Pyomo is a collection of Python software packages that supports a
44
diverse set of optimization capabilities for formulating and analyzing
@@ -9,16 +9,23 @@ The following are highlights of the 6.0 release series:
99
- Improved stability and robustness of core Pyomo code and solver interfaces
1010
- Integration of Boolean variables into GDP
1111
- Integration of NumPy support into the Pyomo expression system
12+
- Implemented a more performant and robust expression generation system
1213
- Implemented a more performant NL file writer (NLv2)
14+
- Implemented a more performant LP file writer (LPv2)
15+
- Applied [PEP8 standards](https://peps.python.org/pep-0008/) throughout the
16+
codebase
1317
- Added support for Python 3.10, 3.11
1418
- Removed support for Python 3.6
19+
- Removed the `pyomo check` command
1520
- New packages:
1621
- APPSI (Auto-Persistent Pyomo Solver Interfaces)
1722
- CP (Constraint programming models and solver interfaces)
1823
- DoE (Model based design of experiments)
1924
- External grey box models
2025
- IIS (Standard interface to solver IIS capabilities)
2126
- MPC (Data structures/utils for rolling horizon dynamic optimization)
27+
- piecewise (Modeling with and reformulating multivariate piecewise linear
28+
functions)
2229
- PyROS (Pyomo Robust Optimization Solver)
2330
- Structural model analysis
2431
- Rewrite of the TrustRegion Solver

pyomo/common/config.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1443,7 +1443,7 @@ def _finalize(self):
14431443
@deprecated(
14441444
"add_docstring_list is deprecated. Please use the "
14451445
"@document_kwargs_from_configdict() decorator.",
1446-
version='6.5.1.dev0',
1446+
version='6.6.0',
14471447
)
14481448
def add_docstring_list(docstring, configdict, indent_by=4):
14491449
"""Returns the docstring with a formatted configuration arguments listing."""
@@ -2010,7 +2010,7 @@ def generate_documentation(
20102010
f"Overriding '{name}' by passing strings to "
20112011
"generate_documentation is deprecated. Create an instance of a "
20122012
"StringConfigFormatter and pass it as the 'format' argument.",
2013-
version='6.5.1.dev0',
2013+
version='6.6.0',
20142014
)
20152015
setattr(
20162016
formatter, "_" + name, _formatter_str_to_callback(arg, formatter)
@@ -2020,7 +2020,7 @@ def generate_documentation(
20202020
f"Overriding 'item_body' by passing strings to "
20212021
"generate_documentation is deprecated. Create an instance of a "
20222022
"StringConfigFormatter and pass it as the 'format' argument.",
2023-
version='6.5.1.dev0',
2023+
version='6.6.0',
20242024
)
20252025
setattr(
20262026
formatter,

pyomo/common/numeric_types.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
relocated_module_attribute(
4545
'native_boolean_types',
4646
'pyomo.common.numeric_types._native_boolean_types',
47-
version='6.5.1.dev0',
47+
version='6.6.0',
4848
msg="The native_boolean_types set will be removed in the future: the set "
4949
"contains types that were convertible to bool, and not types that should "
5050
"be treated as if they were bool (as was the case for the other "
@@ -96,7 +96,7 @@ def RegisterIntegerType(new_type):
9696
@deprecated(
9797
"The native_boolean_types set (and hence RegisterBooleanType) "
9898
"is deprecated. Users likely should use RegisterLogicalType.",
99-
version='6.5.1.dev0',
99+
version='6.6.0',
100100
)
101101
def RegisterBooleanType(new_type):
102102
"""

pyomo/contrib/pynumero/algorithms/solvers/cyipopt_solver.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,17 @@
4747
relocated_module_attribute(
4848
"cyipopt_available",
4949
"pyomo.contrib.pynumero.interfaces.cyipopt_interface.cyipopt_available",
50-
"6.5.1.dev0",
50+
"6.6.0",
5151
)
5252
relocated_module_attribute(
5353
"CyIpoptProblemInterface",
5454
"pyomo.contrib.pynumero.interfaces.cyipopt_interface.CyIpoptProblemInterface",
55-
"6.5.1.dev0",
55+
"6.6.0",
5656
)
5757
relocated_module_attribute(
5858
"CyIpoptNLP",
5959
"pyomo.contrib.pynumero.interfaces.cyipopt_interface.CyIpoptNLP",
60-
"6.5.1.dev0",
60+
"6.6.0",
6161
)
6262

6363
from pyomo.common.config import ConfigBlock, ConfigValue

pyomo/contrib/pynumero/interfaces/ampl_nlp.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -773,7 +773,7 @@ def primals_names(self):
773773

774774
@deprecated(
775775
msg='This method has been replaced with primals_names',
776-
version='6.0.0.dev0',
776+
version='6.0.0',
777777
remove_in='6.0',
778778
)
779779
def variable_names(self):
@@ -797,7 +797,7 @@ def ineq_constraint_names(self):
797797

798798
@deprecated(
799799
msg='This method has been replaced with primal_idx',
800-
version='6.0.0.dev0',
800+
version='6.0.0',
801801
remove_in='6.0',
802802
)
803803
def variable_idx(self, var_name):

pyomo/contrib/pynumero/interfaces/pyomo_nlp.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# ___________________________________________________________________________
21
#
32
# Pyomo: Python Optimization Modeling Objects
43
# Copyright (c) 2008-2022
@@ -185,7 +184,7 @@ def get_pyomo_inequality_constraints(self):
185184

186185
@deprecated(
187186
msg='This method has been replaced with primals_names',
188-
version='6.0.0.dev0',
187+
version='6.0.0',
189188
remove_in='6.0',
190189
)
191190
def variable_names(self):
@@ -1109,7 +1108,7 @@ def report_solver_status(self, status_code, status_message):
11091108

11101109
@deprecated(
11111110
msg='This method has been replaced with primals_names',
1112-
version='6.0.0.dev0',
1111+
version='6.0.0',
11131112
remove_in='6.0',
11141113
)
11151114
def variable_names(self):

pyomo/core/base/block.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1613,7 +1613,7 @@ def component_data_objects(
16131613
"The component_data_iterindex method is deprecated. "
16141614
"Components now know their index, so it is more efficient to use the "
16151615
"Block.component_data_objects() method followed by .index().",
1616-
version="6.5.1.dev0",
1616+
version="6.6.0",
16171617
)
16181618
def component_data_iterindex(
16191619
self, ctype=None, active=None, sort=False, descend_into=True, descent_order=None

pyomo/core/base/indexed_component.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,7 @@ def keys(self, sort=SortComponents.UNSORTED, ordered=NOTSET):
438438
deprecation_warning(
439439
f"keys(ordered={ordered}) is deprecated. "
440440
"Please use `sort=SortComponents.ORDERED_INDICES`",
441-
version='6.5.1.dev0',
441+
version='6.6.0',
442442
)
443443
if ordered:
444444
sort = sort | SortComponents.ORDERED_INDICES
@@ -529,7 +529,7 @@ def values(self, sort=SortComponents.UNSORTED, ordered=NOTSET):
529529
deprecation_warning(
530530
f"values(ordered={ordered}) is deprecated. "
531531
"Please use `sort=SortComponents.ORDERED_INDICES`",
532-
version='6.5.1.dev0',
532+
version='6.6.0',
533533
)
534534
if ordered:
535535
sort = SortComponents(sort) | SortComponents.ORDERED_INDICES
@@ -564,7 +564,7 @@ def items(self, sort=SortComponents.UNSORTED, ordered=NOTSET):
564564
deprecation_warning(
565565
f"items(ordered={ordered}) is deprecated. "
566566
"Please use `sort=SortComponents.ORDERED_INDICES`",
567-
version='6.5.1.dev0',
567+
version='6.6.0',
568568
)
569569
if ordered:
570570
sort = SortComponents(sort) | SortComponents.ORDERED_INDICES

pyomo/core/expr/numeric_expr.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -696,7 +696,7 @@ def _to_string(self, values, verbose, smap):
696696
@deprecated(
697697
"SumExpression.add() is deprecated. Please use regular Python operators "
698698
"(infix '+' or inplace '+='.)",
699-
version='6.5.1.dev0',
699+
version='6.6.0',
700700
)
701701
def add(self, new_arg):
702702
self += new_arg

pyomo/core/expr/numvalue.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
relocated_module_attribute(
7676
'native_boolean_types',
7777
'pyomo.common.numeric_types._native_boolean_types',
78-
version='6.5.1.dev0',
78+
version='6.6.0',
7979
f_globals=globals(),
8080
msg="The native_boolean_types set will be removed in the future: the set "
8181
"contains types that were convertible to bool, and not types that should "
@@ -85,19 +85,19 @@
8585
relocated_module_attribute(
8686
'RegisterNumericType',
8787
'pyomo.common.numeric_types.RegisterNumericType',
88-
version='6.5.1.dev0',
88+
version='6.6.0',
8989
f_globals=globals(),
9090
)
9191
relocated_module_attribute(
9292
'RegisterIntegerType',
9393
'pyomo.common.numeric_types.RegisterIntegerType',
94-
version='6.5.1.dev0',
94+
version='6.6.0',
9595
f_globals=globals(),
9696
)
9797
relocated_module_attribute(
9898
'RegisterBooleanType',
9999
'pyomo.common.numeric_types.RegisterBooleanType',
100-
version='6.5.1.dev0',
100+
version='6.6.0',
101101
f_globals=globals(),
102102
)
103103

pyomo/core/util.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def quicksum(args, start=0, linear=None):
9494
if linear is not None:
9595
deprecation_warning(
9696
"The quicksum(linear=...) argument is deprecated and ignored.",
97-
version='6.5.1.dev0',
97+
version='6.6.0',
9898
)
9999

100100
#

pyomo/repn/linear.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ def _handle_product_constant_constant(visitor, node, arg1, arg2):
220220
"Mapping the NaN result to 0 for compatibility "
221221
"with the lp_v1 writer. In the future, this NaN "
222222
"will be preserved/emitted to comply with IEEE-754.",
223-
version='6.5.1.dev0',
223+
version='6.6.0',
224224
)
225225
return _, 0
226226
return _, arg1 * arg2
@@ -628,7 +628,7 @@ def _before_monomial(visitor, child):
628628
"Mapping the NaN result to 0 for compatibility "
629629
"with the lp_v1 writer. In the future, this NaN "
630630
"will be preserved/emitted to comply with IEEE-754.",
631-
version='6.5.1.dev0',
631+
version='6.6.0',
632632
)
633633
return False, (_CONSTANT, arg1)
634634

@@ -669,7 +669,7 @@ def _before_linear(visitor, child):
669669
"Mapping the NaN result to 0 for compatibility "
670670
"with the lp_v1 writer. In the future, this NaN "
671671
"will be preserved/emitted to comply with IEEE-754.",
672-
version='6.5.1.dev0',
672+
version='6.6.0',
673673
)
674674
continue
675675
_id = id(arg2)
@@ -914,7 +914,7 @@ def finalizeResult(self, result):
914914
"Mapping the NaN result to 0 for compatibility "
915915
"with the lp_v1 writer. In the future, this NaN "
916916
"will be preserved/emitted to comply with IEEE-754.",
917-
version='6.5.1.dev0',
917+
version='6.6.0',
918918
)
919919
return self.Result()
920920
else:

pyomo/repn/tests/ampl/nl_diff.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@
1111

1212
from pyomo.common.deprecation import relocated_module
1313

14-
relocated_module('pyomo.repn.tests.nl_diff', version='6.5.0.dev0', remove_in='6.5.1')
14+
relocated_module('pyomo.repn.tests.nl_diff', version='6.6.0', remove_in='6.6.1')

pyomo/version/info.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@
2525
# should generally be left at 0, unless a downstream package is tracking
2626
# main and needs a hard reference to "suitably new" development.
2727
major = 6
28-
minor = 5
29-
micro = 1
30-
releaselevel = 'invalid'
31-
# releaselevel='final'
28+
minor = 6
29+
micro = 0
30+
# releaselevel = 'invalid'
31+
releaselevel='final'
3232
serial = 0
3333

3434
if releaselevel == 'final':

0 commit comments

Comments
 (0)