Skip to content

Commit

Permalink
Replace _BlockData with BlockData (cog-imperial#144)
Browse files Browse the repository at this point in the history
Pyomo recently made ComponentData classes public
(Pyomo/pyomo#3221) which will be part of the
upcoming release. Currently, this causes the following error to occur in
OMLT:

```
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
```

The Pyomo team is working to try to address this issue, however OMLT
should update its code to address this as otherwise deprecation warnings
will be emitted when using the old class names.

The fix is to replace all instances of `_BlockData` with `BlockData`
(just removing the underscore) - this applies to any other instance of
Pyomo component data objects as well (although I could only find 2
instances of these in the OMLT code).

**Legal Acknowledgement**\
By contributing to this software project, I agree my contributions are
submitted under the BSD license.
I represent I am authorized to make the contributions and grant the
license.
If my employer has rights to intellectual property that includes these
contributions,
I represent that I have received permission to make contributions and
grant the required license on behalf of that employer.

Co-authored-by: jalving <jhjalving@gmail.com>
  • Loading branch information
andrewlee94 and jalving authored Aug 22, 2024
1 parent c6d274f commit caebfc4
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
2 changes: 1 addition & 1 deletion docs/api_doc/omlt.block.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ OMLT Block
:show-inheritance:

.. note::
`OmltBlock` is the name used to declare the custom Pyomo block which is exposed to the user. The block functionality is given by `OmltBlockData` which inherits from Pyomo `_BlockData`.
`OmltBlock` is the name used to declare the custom Pyomo block which is exposed to the user. The block functionality is given by `OmltBlockData` which inherits from Pyomo `BlockData`.

.. autoclass:: omlt.block.OmltBlockData
:members:
Expand Down
4 changes: 2 additions & 2 deletions src/omlt/block.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@ class is used in combination with a formulation object to construct the
"""

import pyomo.environ as pyo
from pyomo.core.base.block import _BlockData, declare_custom_block
from pyomo.core.base.block import BlockData, declare_custom_block


@declare_custom_block(name="OmltBlock")
class OmltBlockData(_BlockData):
class OmltBlockData(BlockData):
def __init__(self, component):
super().__init__(component)
self.__formulation = None
Expand Down

0 comments on commit caebfc4

Please sign in to comment.