Skip to content
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
11 changes: 5 additions & 6 deletions flopy4/mf6/component.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from packaging.version import Version
from xattree import xattree

from flopy4.mf6.constants import FILL_DNODATA
from flopy4.mf6.constants import FILL_DNODATA, MF6
from flopy4.mf6.spec import field, fields_dict, to_field
from flopy4.uio import IO, Loader, Writer

Expand Down Expand Up @@ -84,9 +84,8 @@ class Component(ABC, MutableMapping):
_load = IO(Loader) # type: ignore
_write = IO(Writer) # type: ignore

filename: str | None = field(default=None)

dfn: ClassVar[Dfn]
filename: str | None = field(default=None)

@property
def path(self) -> Path:
Expand Down Expand Up @@ -180,19 +179,19 @@ def get_dfn(cls) -> Dfn:
blocks=blocks,
)

def _preio(self, format: str) -> None:
def _preio(self, format: str = MF6) -> None:
# prep for io operations
if not self.filename:
self.filename = self.default_filename()

def load(self, format: str) -> None:
def load(self, format: str = MF6) -> None:
"""Load the component and any children."""
self._preio(format=format)
self._load(format=format)
for child in self.children.values(): # type: ignore
child.load(format=format)

def write(self, format: str) -> None:
def write(self, format: str = MF6) -> None:
"""Write the component and any children."""
self._preio(format=format)
self._write(format=format)
Expand Down
13 changes: 8 additions & 5 deletions flopy4/uio.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ def register_writer(self, cls, format, function):

def load(self, cls, instance, *args, format=None, **kwargs):
_load = self.get_loader(cls, format)
_load(instance, *args, **kwargs)
return _load(instance, *args, **kwargs)

def write(self, cls, instance, *args, format=None, **kwargs):
_write = self.get_writer(cls, format)
Expand All @@ -71,14 +71,17 @@ def write(self, cls, instance, *args, format=None, **kwargs):


class IO(property):
"""Wrap a file IO descriptor as a property."""
"""
Custom property wrapper for IO operation descriptors.
See the `astropy` source for more details/motivation.
"""

def __get__(self, instance, owner_cls):
return self.fget(instance, owner_cls)


class IODescriptor:
"""Base class for file IO operations, implemented as descriptors."""
"""Base class for file IO operation descriptors."""

def __init__(self, instance, cls, op: Op, registry: Registry | None = None):
self._registry = registry or DEFAULT_REGISTRY
Expand Down Expand Up @@ -107,7 +110,7 @@ class Loader(IODescriptor):
def __init__(self, instance, cls):
super().__init__(instance, cls, "load", registry=DEFAULT_REGISTRY)

def __call__(self, *args, **kwargs) -> None:
def __call__(self, *args, **kwargs):
return self.registry.load(self._cls, self._instance, *args, **kwargs)


Expand All @@ -118,4 +121,4 @@ def __init__(self, instance, cls):
super().__init__(instance, cls, "write", registry=DEFAULT_REGISTRY)

def __call__(self, *args, **kwargs) -> None:
return self.registry.write(self._cls, self._instance, *args, **kwargs)
self.registry.write(self._cls, self._instance, *args, **kwargs)
Loading
Loading