Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

deprecate new #100

Merged
merged 4 commits into from
Dec 20, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 5 additions & 22 deletions src/pymgrid/envs/base/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from abc import abstractmethod

from pymgrid import NonModularMicrogrid, Microgrid
from pymgrid.envs.base.skip_init import skip_init
from pymgrid.errors.env_signature import environment_signature_error


class BaseMicrogridEnv(Microgrid, Env):
Expand Down Expand Up @@ -70,26 +70,6 @@ class BaseMicrogridEnv(Microgrid, Env):
observation_space = None
'Space object corresponding to valid observations.'

def __new__(cls, modules, *args, **kwargs):
if isinstance(modules, (NonModularMicrogrid, Microgrid)):
import warnings
warnings.warn('Initializing an environment with a microgrid will be deprecated in a future version.'
'Use from_microgrid() instead.', category=FutureWarning)

instance = cls.from_microgrid(modules, **kwargs)

elif isinstance(modules, int):
import warnings
warnings.warn('Initializing an environment with a scenario integer will be deprecated in a future version.'
'Use from_scenario() instead.', category=FutureWarning)
instance = cls.from_scenario(modules, **kwargs)

else:
return super().__new__(cls)

cls.__init__ = skip_init(cls, cls.__init__)
return instance

def __init__(self,
modules,
add_unbalanced_module=True,
Expand All @@ -103,6 +83,9 @@ def __init__(self,
reset_callback=None
):

if isinstance(modules, (NonModularMicrogrid, Microgrid, int)):
environment_signature_error(self.__class__.__name__, modules)

super().__init__(modules,
add_unbalanced_module=add_unbalanced_module,
loss_load_cost=loss_load_cost,
Expand Down Expand Up @@ -440,4 +423,4 @@ def from_scenario(cls, microgrid_number=0, **kwargs):

@classmethod
def load(cls, stream):
return cls(super().load(stream))
return cls.from_microgrid(super().load(stream))
13 changes: 13 additions & 0 deletions src/pymgrid/errors/env_signature.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from pymgrid import Microgrid, NonModularMicrogrid
from pymgrid.errors import DeprecatedError


def environment_signature_error(cls, modules):
if isinstance(modules, (Microgrid, NonModularMicrogrid)):
msg = f'Initializing a {cls} with a microgrid is deprecated as of version 1.5.0. ' \
f'Use {cls}.from_microgrid() as a drop in replacement.'
else:
msg = f'Initializing a {cls} with a scenario integer is deprecated as of version 1.5.0. ' \
f'Use {cls}.from_scenario() as a drop in replacement.'

raise DeprecatedError(msg)
2 changes: 1 addition & 1 deletion tests/envs/test_discrete.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class TestDiscreteEnv(TestCase):

def test_init_from_microgrid(self):
microgrid = get_modular_microgrid()
env = DiscreteMicrogridEnv(microgrid)
env = DiscreteMicrogridEnv.from_microgrid(microgrid)

self.assertEqual(env.modules, microgrid.modules)
self.assertIsNot(env.modules.to_tuples(), microgrid.modules.to_tuples())
Expand Down