Skip to content

Commit 2dda659

Browse files
authored
Merge pull request #2748 from blnicho/finalize-release-6.5.0
Finalize Pyomo 6.5.0 release
2 parents c0e5494 + cd32187 commit 2dda659

File tree

16 files changed

+102
-35
lines changed

16 files changed

+102
-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.4.4</stableVersionNumber>
231-
<releaseNumber>6.4.4</releaseNumber>
230+
<stableVersionNumber>6.5.0</stableVersionNumber>
231+
<releaseNumber>6.5.0</releaseNumber>
232232

233233
</developmentStatus>
234234

CHANGELOG.md

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

4+
-------------------------------------------------------------------------------
5+
Pyomo 6.5.0 (16 Feb 2023)
6+
-------------------------------------------------------------------------------
7+
8+
- General
9+
- Apply `black` to enforce PEP8 standards in certain modules (#2737, #2738,
10+
#2733, #2732, #2731, #2728, #2730, #2729, #2720, #2721, #2719, #2718)
11+
- Add Developers' call information to README (#2665)
12+
- Deprecate `pyomo.checker` module (#2734)
13+
- Warn when infeasibility tools will not log output (#2666)
14+
- Separate identification from logging in `pyomo.util.infeasible.log_*` (#2669)
15+
- Convert subprocess timeout parameters to module attributes (#2672)
16+
- Resolve consistency issues in the Bunch class (#2685)
17+
- Remove GSL downloader from `download-extensions` (#2725)
18+
- Update enhancement GitHub issue template to link to wiki (#2739)
19+
- Add deprecation warning to `pyomo` command (#2740)
20+
- Require `version=` for all deprecation utilities (#2744)
21+
- Fix `pyomo --version` version string (#2743)
22+
- Core
23+
- Fix minor typo: taht -> that in set.py (#2679)
24+
- Fix bugs in scaling transformation (#2678)
25+
- Rework handling of 'dimensionless' units in Pyomo (#2691)
26+
- Solver Interfaces
27+
- Switch default NL writer to nlv2 and bug fixes (#2676, #2710, #2726)
28+
- Enable MOSEK10 warm-start flag and relocate var initialization (#2647)
29+
- Fix handling of POW in Baron writer (#2693)
30+
- Update GAMS license check to avoid exception when not available (#2697)
31+
- Documentation
32+
- Fix incorrect documentation for sending options to solvers (#2688)
33+
- Fix Sphinx warnings (#2712)
34+
- Document Python Version Support policy (#2735)
35+
- Document deprecation and removal of functionality (#2741)
36+
- Document docstring formatting requirements (#2742)
37+
- Testing
38+
- Skip failing Baron tests (#2694)
39+
- Remove residual `nose` references (#2736)
40+
- Update GHA setup-python version (#2705)
41+
- Improve GHA conda setup performance (#2701)
42+
- Add unit test for QCQO problems with MOSEK (#2682)
43+
- DAE
44+
- Fix typo in `__init__.py` (#2683)
45+
- Add `active` filter to flattener (#2643)
46+
- GDP
47+
- Add GDP-to-MIP transformation base class (#2687)
48+
- Contributed Packages
49+
- DoE: New module for model-based design of experiments (#2294, #2711, #2527)
50+
- FBBT: Add tolerances to tests (#2675)
51+
- GDPopt: Switch a LBB test to use Gurobi as MINLP solver (#2686)
52+
- incidence_analysis: Add `plot` method to `IncidenceGraphInterface` (#2716)
53+
- incidence_analysis: Refactor to cache a graph instead of a matrix (#2715)
54+
- incidence_analysis: Add documentation and update API (#2727, #2745)
55+
- incidence_analysis: Add logging solve_strongly_connected_components (#2723)
56+
- MindtPy: Refactor to improve extensibility and maintainability (#2654)
57+
- Parmest: Suppress mpi-sppy output in import (#2692)
58+
- PyNumero: Add tee argument to Pyomo-SciPy square solvers (#2668)
59+
- PyNumero: Support implicit function solvers in ExternalPyomoModel (#2652)
60+
- PyROS: Fix user_time and wallclock_time bug (#2670)
61+
- PyROS: More judicious enforcement of PyROS Solver time limit (#2660, #2706)
62+
- PyROS: Update documentation (#2698, #2707)
63+
- PyROS: Adjust routine for loading DR polishing model solutions (#2700)
64+
- Viewer: Update to support PySide6 and display units and domain (#2689)
65+
466
-------------------------------------------------------------------------------
567
Pyomo 6.4.4 (9 Dec 2022)
668
-------------------------------------------------------------------------------

RELEASE.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
We are pleased to announce the release of Pyomo 6.4.4.
1+
We are pleased to announce the release of Pyomo 6.5.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,11 +9,13 @@ 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 NL file writer (NLv2)
1213
- Added support for Python 3.10, 3.11
1314
- Removed support for Python 3.6
1415
- New packages:
1516
- APPSI (Auto-Persistent Pyomo Solver Interfaces)
1617
- CP (Constraint programming models and solver interfaces)
18+
- DoE (Model based design of experiments)
1719
- External grey box models
1820
- IIS (Standard interface to solver IIS capabilities)
1921
- MPC (Data structures/utils for rolling horizon dynamic optimization)

pyomo/checker/checker.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515

1616
@deprecated(
17-
'The pyomo.checker module has been deprecated.', version='TBD', remove_in='6.6'
17+
'The pyomo.checker module has been deprecated.', version='6.5.0', remove_in='6.6.0'
1818
)
1919
class IModelChecker(Interface):
2020
def check(self, runner, script, info):

pyomo/checker/runner.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def generic_visit(self, node):
6161

6262

6363
@deprecated(
64-
'The pyomo.checker module has been deprecated.', version='TBD', remove_in='6.6'
64+
'The pyomo.checker module has been deprecated.', version='6.5.0', remove_in='6.6.0'
6565
)
6666
class ModelCheckRunner(object):
6767

pyomo/checker/script.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414

1515
@deprecated(
16-
'The pyomo.checker module has been deprecated.', version='TBD', remove_in='6.6'
16+
'The pyomo.checker module has been deprecated.', version='6.5.0', remove_in='6.6.0'
1717
)
1818
class ModelScript(object):
1919
def __init__(self, filename=None, text=None):

pyomo/common/getGSL.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.common.gsl', version='TBD')
14+
relocated_module('pyomo.common.gsl', version='6.5.0')

pyomo/common/gsl.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
@deprecated(
2020
"Use of get_gsl is deprecated and NO LONGER FUNCTIONS as of February 9, "
2121
"2023. ",
22-
version='TBD')
22+
version='6.5.0')
2323
def get_gsl(downloader):
2424
logger.info("As of February 9, 2023, AMPL GSL can no longer be downloaded\
2525
through download-extensions. Visit https://portal.ampl.com/\

pyomo/common/plugin.py

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

1212
from pyomo.common.deprecation import (relocated_module)
1313

14-
relocated_module('pyomo.common.plugin_base', version='TBD')
14+
relocated_module('pyomo.common.plugin_base', version='6.5.0')
1515

pyomo/contrib/incidence_analysis/interface.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -380,31 +380,31 @@ def n_edges(self):
380380
@property
381381
@deprecated(
382382
msg="``var_index_map`` is deprecated. Please use ``get_matrix_coord`` instead.",
383-
version="6.4.5",
383+
version="6.5.0",
384384
)
385385
def var_index_map(self):
386386
return self._var_index_map
387387

388388
@property
389389
@deprecated(
390390
msg="``con_index_map`` is deprecated. Please use ``get_matrix_coord`` instead.",
391-
version="6.4.5",
391+
version="6.5.0",
392392
)
393393
def con_index_map(self):
394394
return self._con_index_map
395395

396396
@property
397397
@deprecated(
398398
msg="The ``row_block_map`` attribute is deprecated and will be removed.",
399-
version="6.4.5",
399+
version="6.5.0",
400400
)
401401
def row_block_map(self):
402402
return None
403403

404404
@property
405405
@deprecated(
406406
msg="The ``col_block_map`` attribute is deprecated and will be removed.",
407-
version="6.4.5",
407+
version="6.5.0",
408408
)
409409
def col_block_map(self):
410410
return None
@@ -694,9 +694,9 @@ def block_triangularize(self, variables=None, constraints=None):
694694
695695
.. note::
696696
697-
**Breaking change in Pyomo 6.4.5**
697+
**Breaking change in Pyomo 6.5.0**
698698
699-
The pre-6.4.5 ``block_triangularize`` method returned maps from
699+
The pre-6.5.0 ``block_triangularize`` method returned maps from
700700
each variable or constraint to the index of its block in a block
701701
lower triangularization as the original intent of this function
702702
was to identify when variables do or don't share a diagonal block
@@ -708,7 +708,7 @@ def block_triangularize(self, variables=None, constraints=None):
708708
This functionality was previously available via the
709709
``get_diagonal_blocks`` method, which was confusing as it did not
710710
capture that the partition was the diagonal of a block
711-
*triangularization* (as opposed to diagonalization). The pre-6.4.5
711+
*triangularization* (as opposed to diagonalization). The pre-6.5.0
712712
functionality of ``block_triangularize`` is still available via the
713713
``map_nodes_to_block_triangular_indices`` method.
714714
@@ -729,7 +729,7 @@ def block_triangularize(self, variables=None, constraints=None):
729729
" Please use ``IncidenceGraphInterface.block_triangularize``"
730730
" instead."
731731
),
732-
version="6.4.5",
732+
version="6.5.0",
733733
)
734734
def get_diagonal_blocks(self, variables=None, constraints=None):
735735
variables, constraints = self._validate_input(variables, constraints)

pyomo/contrib/incidence_analysis/triangularize.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,9 @@ def block_triangularize(matrix, matching=None):
147147
148148
.. note::
149149
150-
**Breaking change in Pyomo 6.4.5**
150+
**Breaking change in Pyomo 6.5.0**
151151
152-
The pre-6.4.5 ``block_triangularize`` function returned maps from
152+
The pre-6.5.0 ``block_triangularize`` function returned maps from
153153
each row or column to the index of its block in a block
154154
lower triangularization as the original intent of this function
155155
was to identify when coordinates do or don't share a diagonal block
@@ -161,7 +161,7 @@ def block_triangularize(matrix, matching=None):
161161
This functionality was previously available via the
162162
``get_diagonal_blocks`` method, which was confusing as it did not
163163
capture that the partition was the diagonal of a block
164-
*triangularization* (as opposed to diagonalization). The pre-6.4.5
164+
*triangularization* (as opposed to diagonalization). The pre-6.5.0
165165
functionality of ``block_triangularize`` is still available via the
166166
``map_coords_to_block_triangular_indices`` function.
167167
@@ -200,7 +200,7 @@ def map_coords_to_block_triangular_indices(matrix, matching=None):
200200
"``get_blocks_from_maps`` is deprecated. This functionality has been"
201201
" incorporated into ``block_triangularize``."
202202
),
203-
version="6.4.5",
203+
version="6.5.0",
204204
)
205205
def get_blocks_from_maps(row_block_map, col_block_map):
206206
blocks = set(row_block_map.values())
@@ -220,7 +220,7 @@ def get_blocks_from_maps(row_block_map, col_block_map):
220220
"``get_diagonal_blocks`` has been deprecated. Please use"
221221
" ``block_triangularize`` instead."
222222
),
223-
version="6.4.5",
223+
version="6.5.0",
224224
)
225225
def get_diagonal_blocks(matrix, matching=None):
226226
return block_triangularize(matrix, matching=matching)

pyomo/contrib/incidence_analysis/util.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,13 @@
1010
# ___________________________________________________________________________
1111

1212
from pyomo.common.deprecation import relocated_module
13+
1314
msg = (
1415
"The 'pyomo.contrib.incidence_analysis.util' module has been moved to"
1516
" 'pyomo.contrib.incidence_analysis.scc_solver'. However, we recommend"
1617
" importing this functionality (e.g. solve_strongly_connected_components)"
1718
" directly from 'pyomo.contrib.incidence_analysis'."
1819
)
19-
relocated_module("pyomo.contrib.incidence_analysis.scc_solver", version='TBD', msg=msg)
20+
relocated_module(
21+
"pyomo.contrib.incidence_analysis.scc_solver", version='6.5.0', msg=msg
22+
)

pyomo/repn/plugins/nl_writer.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -536,7 +536,7 @@ def __init__(self, ostream, rowstream, colstream, config):
536536
deprecation_warning(
537537
f'{str(old)} ({int(old)}) is deprecated. '
538538
f'Please use {str(new)} ({int(new)})',
539-
version='TBD',
539+
version='6.5.0',
540540
)
541541

542542
def __enter__(self):

pyomo/scripting/plugins/check.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,8 @@ def main_exec(options):
130130
+ _default_deprecation_msg(
131131
None,
132132
'The pyomo.checker module has been deprecated',
133-
version='TBD',
134-
remove_in='6.6',
133+
version='6.5.0',
134+
remove_in='6.6.0',
135135
)
136136
+ """.
137137

pyomo/scripting/pyomo_main.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,12 @@ def main(args=None):
6464
if args[0] not in ['-h', '--help', '--version']:
6565
deprecation_warning("Running the 'pyomo' script with no subcommand is deprecated. "
6666
"Defaulting to 'pyomo solve'",
67-
version='TBD')
67+
version='6.5.0')
6868
args = ['solve'] + args[0:]
6969
elif args[0] not in pyomo_parser.subparsers:
7070
deprecation_warning("Running the 'pyomo' script with no subcommand is deprecated. "
7171
"Defaulting to 'pyomo solve'",
72-
version='TBD')
72+
version='6.5.0')
7373
args = ['solve'] + args[0:]
7474
#
7575
# Process arguments

pyomo/version/info.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,22 @@
1313

1414
# NOTE: releaselevel should be left at 'invalid' for trunk development
1515
# and set to 'final' for releases. During development, the
16-
# major.minor.micro should point ot the NEXT release (generally, the
16+
# major.minor.micro should point to the NEXT release (generally, the
1717
# next micro release after the current release).
1818
#
1919
# Note: When cutting a release, also update the major/minor/micro in
2020
#
21-
# pyomo/RELEASE.txt
21+
# pyomo/RELEASE.md
2222
#
2323
# The VOTD zipbuilder will automatically change releaselevel to "VOTD
2424
# {hash}" and set the serial number to YYMMDDhhmm. The serial number
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 = 4
29-
micro = 5
30-
releaselevel = 'invalid'
31-
# releaselevel='final'
28+
minor = 5
29+
micro = 0
30+
# releaselevel = 'invalid'
31+
releaselevel='final'
3232
serial = 0
3333

3434
if releaselevel == 'final':
@@ -51,7 +51,7 @@
5151
#
5252
# __file__ fails if script is called in different ways on Windows
5353
# __file__ fails if someone does os.chdir() before
54-
# sys.argv[0] also fails because it doesn't always contains the path
54+
# sys.argv[0] also fails because it doesn't always contain the path
5555
from inspect import getfile as _getfile, currentframe as _frame
5656
from os.path import abspath as _abspath
5757

0 commit comments

Comments
 (0)