From 0252dd469e2c22a0608bbd483ec85f6d98f15903 Mon Sep 17 00:00:00 2001 From: Mike Taves Date: Wed, 15 Sep 2021 13:57:33 +1200 Subject: [PATCH] refactor(Package): simplify __init__ in subclasses, remove "extra" --- flopy/mbase.py | 3 -- flopy/modflow/mf.py | 4 +- flopy/modflow/mfaddoutsidefile.py | 7 +-- flopy/modflow/mfag.py | 20 ++----- flopy/modflow/mfbas.py | 30 ++--------- flopy/modflow/mfbcf.py | 31 +++-------- flopy/modflow/mfbct.py | 7 +-- flopy/modflow/mfchd.py | 26 ++------- flopy/modflow/mfde4.py | 30 ++--------- flopy/modflow/mfdis.py | 26 ++------- flopy/modflow/mfdisu.py | 26 ++------- flopy/modflow/mfdrn.py | 28 +++------- flopy/modflow/mfdrt.py | 30 +++-------- flopy/modflow/mfevt.py | 31 +++-------- flopy/modflow/mffhb.py | 31 +++-------- flopy/modflow/mfflwob.py | 17 +----- flopy/modflow/mfgage.py | 42 ++++----------- flopy/modflow/mfghb.py | 35 +++--------- flopy/modflow/mfgmg.py | 37 +++---------- flopy/modflow/mfhfb.py | 26 ++------- flopy/modflow/mfhob.py | 37 +++---------- flopy/modflow/mfhyd.py | 37 +++---------- flopy/modflow/mflak.py | 42 ++++----------- flopy/modflow/mflmt.py | 26 ++------- flopy/modflow/mflpf.py | 31 +++-------- flopy/modflow/mfmlt.py | 29 ++-------- flopy/modflow/mfmnw1.py | 23 +++----- flopy/modflow/mfmnw2.py | 34 +++--------- flopy/modflow/mfmnwi.py | 52 ++++++------------ flopy/modflow/mfnwt.py | 26 ++------- flopy/modflow/mfoc.py | 88 +++++++++++-------------------- flopy/modflow/mfpbc.py | 7 +-- flopy/modflow/mfpcg.py | 30 ++--------- flopy/modflow/mfpcgn.py | 48 +++++------------ flopy/modflow/mfpks.py | 30 ++--------- flopy/modflow/mfpval.py | 31 ++--------- flopy/modflow/mfrch.py | 35 +++--------- flopy/modflow/mfriv.py | 36 +++---------- flopy/modflow/mfsfr2.py | 37 +++---------- flopy/modflow/mfsip.py | 31 ++--------- flopy/modflow/mfsms.py | 27 ++-------- flopy/modflow/mfsor.py | 31 ++--------- flopy/modflow/mfstr.py | 46 +++------------- flopy/modflow/mfsub.py | 55 ++++++------------- flopy/modflow/mfswi2.py | 72 +++++++++---------------- flopy/modflow/mfswr1.py | 31 ++--------- flopy/modflow/mfswt.py | 71 +++++++------------------ flopy/modflow/mfupw.py | 34 +++--------- flopy/modflow/mfuzf1.py | 50 +++++------------- flopy/modflow/mfwel.py | 36 +++---------- flopy/modflow/mfzon.py | 31 ++--------- flopy/modpath/mp6.py | 9 +--- flopy/modpath/mp6bas.py | 6 +-- flopy/modpath/mp6sim.py | 11 ++-- flopy/modpath/mp7.py | 9 +--- flopy/modpath/mp7bas.py | 6 +-- flopy/modpath/mp7sim.py | 8 +-- flopy/mt3d/mt.py | 5 +- flopy/mt3d/mtadv.py | 30 +++-------- flopy/mt3d/mtbtn.py | 26 ++------- flopy/mt3d/mtdsp.py | 26 ++------- flopy/mt3d/mtgcg.py | 26 ++------- flopy/mt3d/mtlkt.py | 44 +++++----------- flopy/mt3d/mtphc.py | 26 ++------- flopy/mt3d/mtrct.py | 30 ++--------- flopy/mt3d/mtsft.py | 44 +++++----------- flopy/mt3d/mtssm.py | 26 ++------- flopy/mt3d/mttob.py | 26 ++------- flopy/mt3d/mtuzt.py | 37 ++++--------- flopy/pakbase.py | 39 ++++++++++---- flopy/seawat/swt.py | 2 +- flopy/seawat/swtvdf.py | 26 ++------- flopy/seawat/swtvsc.py | 26 ++------- 73 files changed, 516 insertions(+), 1653 deletions(-) diff --git a/flopy/mbase.py b/flopy/mbase.py index 7f053a865c..c0879ec4a5 100644 --- a/flopy/mbase.py +++ b/flopy/mbase.py @@ -1062,7 +1062,6 @@ class Obj: fake_package = Obj() fake_package.write_file = lambda: None - fake_package.extra = [""] fake_package.name = [ptype] fake_package.extension = [filename.split(".")[-1]] fake_package.unit_number = [self.next_ext_unit()] @@ -1089,8 +1088,6 @@ def get_name_file_entries(self): if p.unit_number[i] == 0: continue s = f"{p.name[i]:14s} {p.unit_number[i]:5d} {p.file_name[i]}" - if p.extra[i]: - s += " " + p.extra[i] lines.append(s) return "\n".join(lines) + "\n" diff --git a/flopy/modflow/mf.py b/flopy/modflow/mf.py index 110b4eb1e7..90a0897566 100644 --- a/flopy/modflow/mf.py +++ b/flopy/modflow/mf.py @@ -24,7 +24,7 @@ class ModflowGlobal(Package): """ def __init__(self, model, extension="glo"): - Package.__init__(self, model, extension, "GLOBAL", 1) + super().__init__(model, extension, "GLOBAL", 1) return def __repr__(self): @@ -42,7 +42,7 @@ class ModflowList(Package): """ def __init__(self, model, extension="list", unitnumber=2): - Package.__init__(self, model, extension, "LIST", unitnumber) + super().__init__(model, extension, "LIST", unitnumber) return def __repr__(self): diff --git a/flopy/modflow/mfaddoutsidefile.py b/flopy/modflow/mfaddoutsidefile.py index 0450894aab..a5cbcd7b01 100644 --- a/flopy/modflow/mfaddoutsidefile.py +++ b/flopy/modflow/mfaddoutsidefile.py @@ -8,9 +8,10 @@ class mfaddoutsidefile(Package): """ def __init__(self, model, name, extension, unitnumber): - Package.__init__( - self, model, extension, name, unitnumber, allowDuplicates=True - ) # Call ancestor's init to set self.parent, extension, name and unit number + # call base package constructor + super().__init__( + model, extension, name, unitnumber, allowDuplicates=True + ) self.parent.add_package(self) def __repr__(self): diff --git a/flopy/modflow/mfag.py b/flopy/modflow/mfag.py index 6499af5f63..9db3485836 100644 --- a/flopy/modflow/mfag.py +++ b/flopy/modflow/mfag.py @@ -203,25 +203,13 @@ def __init__( if unitnumber is None: unitnumber = ModflowAg._defaultunit() - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - name = [ModflowAg._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - + # call base package constructor super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) # set up class diff --git a/flopy/modflow/mfbas.py b/flopy/modflow/mfbas.py index 1d81b29d5f..6a54c87a01 100644 --- a/flopy/modflow/mfbas.py +++ b/flopy/modflow/mfbas.py @@ -102,37 +102,17 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor. - - """ if unitnumber is None: unitnumber = ModflowBas._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowBas._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) self.url = "bas6.htm" diff --git a/flopy/modflow/mfbcf.py b/flopy/modflow/mfbcf.py index 137ca76183..42b9b2494f 100644 --- a/flopy/modflow/mfbcf.py +++ b/flopy/modflow/mfbcf.py @@ -116,40 +116,23 @@ def __init__( unitnumber = ModflowBcf._defaultunit() # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowBcf._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 - # Fill namefile items - name = [ModflowBcf._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) self.url = "bcf.htm" diff --git a/flopy/modflow/mfbct.py b/flopy/modflow/mfbct.py index bde549876c..73223e0d78 100644 --- a/flopy/modflow/mfbct.py +++ b/flopy/modflow/mfbct.py @@ -42,11 +42,8 @@ def __init__( if unitnumber is None: unitnumber = ModflowBct._defaultunit() - # Call ancestor's init to set self.parent, extension, name and unit - # number - Package.__init__( - self, model, extension, ModflowBct._ftype(), unitnumber - ) + # call base package constructor + super().__init__(model, extension, self._ftype(), unitnumber) self.url = "bct.htm" nrow, ncol, nlay, nper = self.parent.nrow_ncol_nlay_nper diff --git a/flopy/modflow/mfchd.py b/flopy/modflow/mfchd.py index d8cb1b7432..74ba5a1927 100644 --- a/flopy/modflow/mfchd.py +++ b/flopy/modflow/mfchd.py @@ -116,29 +116,13 @@ def __init__( if unitnumber is None: unitnumber = ModflowChd._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowChd._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) self.url = "chd.htm" diff --git a/flopy/modflow/mfde4.py b/flopy/modflow/mfde4.py index 97a9c7e280..16bf50c56c 100644 --- a/flopy/modflow/mfde4.py +++ b/flopy/modflow/mfde4.py @@ -127,38 +127,18 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor. - - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowDe4._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowDe4._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) # check if a valid model version has been specified diff --git a/flopy/modflow/mfdis.py b/flopy/modflow/mfdis.py index a4c4df0792..19d96ba9b6 100644 --- a/flopy/modflow/mfdis.py +++ b/flopy/modflow/mfdis.py @@ -149,29 +149,13 @@ def __init__( if unitnumber is None: unitnumber = ModflowDis._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowDis._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) self.url = "dis.htm" diff --git a/flopy/modflow/mfdisu.py b/flopy/modflow/mfdisu.py index e967614d24..9411b2b9c8 100644 --- a/flopy/modflow/mfdisu.py +++ b/flopy/modflow/mfdisu.py @@ -233,29 +233,13 @@ def __init__( if unitnumber is None: unitnumber = ModflowDisU._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowDisU._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) # Set values of all parameters diff --git a/flopy/modflow/mfdrn.py b/flopy/modflow/mfdrn.py index ee68943907..0c0bd5b083 100644 --- a/flopy/modflow/mfdrn.py +++ b/flopy/modflow/mfdrn.py @@ -124,19 +124,12 @@ def __init__( unitnumber = ModflowDrn._defaultunit() # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowDrn._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 @@ -151,22 +144,15 @@ def __init__( if self.is_drt: name = ["DRT"] else: - name = [ModflowDrn._ftype()] - units = [unitnumber] - extra = [""] + name = [self._ftype()] - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, name=name, - unit_number=units, - extra=extra, - filenames=fname, + unit_number=unitnumber, + filenames=filenames[0], ) self._generate_heading() diff --git a/flopy/modflow/mfdrt.py b/flopy/modflow/mfdrt.py index 7540761bbb..dc339af35f 100644 --- a/flopy/modflow/mfdrt.py +++ b/flopy/modflow/mfdrt.py @@ -122,19 +122,12 @@ def __init__( unitnumber = ModflowDrt._defaultunit() # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowDrt._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 @@ -149,22 +142,13 @@ def __init__( if not found: options.append("RETURNFLOW") - name = [ModflowDrt._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) self._generate_heading() diff --git a/flopy/modflow/mfevt.py b/flopy/modflow/mfevt.py index 44d3a7c181..1ab8c05875 100644 --- a/flopy/modflow/mfevt.py +++ b/flopy/modflow/mfevt.py @@ -103,40 +103,23 @@ def __init__( unitnumber = ModflowEvt._defaultunit() # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowEvt._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 - # Fill namefile items - name = [ModflowEvt._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) nrow, ncol, nlay, nper = self.parent.nrow_ncol_nlay_nper diff --git a/flopy/modflow/mffhb.py b/flopy/modflow/mffhb.py index 5d7f7c5dbc..029499ce68 100644 --- a/flopy/modflow/mffhb.py +++ b/flopy/modflow/mffhb.py @@ -160,40 +160,23 @@ def __init__( unitnumber = ModflowFhb._defaultunit() # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowFhb._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 - # Fill namefile items - name = [ModflowFhb._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) self._generate_heading() diff --git a/flopy/modflow/mfflwob.py b/flopy/modflow/mfflwob.py index a8c8a2aec1..7c64a4bfe7 100755 --- a/flopy/modflow/mfflwob.py +++ b/flopy/modflow/mfflwob.py @@ -130,9 +130,6 @@ def __init__( unitnumber=None, ): - """ - Package constructor - """ if nqobfb is None: nqobfb = [] if nqclfb is None: @@ -216,24 +213,14 @@ def __init__( unitnumber = [unitnumber[0], outunits[name[0].lower()]] iufbobsv = unitnumber[1] - # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - filenames.append(None) - # call base package constructor - Package.__init__( - self, + super().__init__( model, extension=extension, name=name, unit_number=unitnumber, allowDuplicates=True, - filenames=filenames, + filenames=self._prepare_filenames(filenames, 2), ) self.nqfb = nqfb diff --git a/flopy/modflow/mfgage.py b/flopy/modflow/mfgage.py index f4958b618a..3d32c6b7a2 100644 --- a/flopy/modflow/mfgage.py +++ b/flopy/modflow/mfgage.py @@ -88,26 +88,16 @@ def __init__( filenames=None, **kwargs, ): - """ - Package constructor. - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowGage._defaultunit() # set filenames - if filenames is None: - filenames = [None for x in range(numgage + 1)] - elif isinstance(filenames, str): - filenames = [filenames] + [None for x in range(numgage)] - elif isinstance(filenames, list): - if len(filenames) < numgage + 1: - for idx in range(len(filenames), numgage + 2): - filenames.append(None) + filenames = self._prepare_filenames(filenames, numgage + 1) # process gage output files - dtype = ModflowGage.get_default_dtype() + dtype = self.get_default_dtype() if numgage > 0: # check the provided file entries if filenames[1] is None: @@ -172,32 +162,20 @@ def __init__( # add gage output files to model for n in range(numgage): - iu = abs(gage_data["unit"][n]) - fname = files[n] model.add_output_file( - iu, - fname=fname, + abs(gage_data["unit"][n]), + fname=files[n], binflag=False, - package=ModflowGage._ftype(), + package=self._ftype(), ) - # Fill namefile items - name = [ModflowGage._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) # no heading for this format diff --git a/flopy/modflow/mfghb.py b/flopy/modflow/mfghb.py index d5b7308105..019aceb728 100644 --- a/flopy/modflow/mfghb.py +++ b/flopy/modflow/mfghb.py @@ -116,50 +116,29 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor. - - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowGhb._defaultunit() # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowGhb._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 - # Fill namefile items - name = [ModflowGhb._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) self._generate_heading() diff --git a/flopy/modflow/mfgmg.py b/flopy/modflow/mfgmg.py index 6e6e48c51b..4007475c2a 100644 --- a/flopy/modflow/mfgmg.py +++ b/flopy/modflow/mfgmg.py @@ -205,54 +205,33 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor. - - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowGmg._defaultunit() # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) # update external file information with gmg output, if necessary if iunitmhc is not None: - fname = filenames[1] model.add_output_file( iunitmhc, - fname=fname, + fname=filenames[1], extension="gmg.out", binflag=False, - package=ModflowGmg._ftype(), + package=self._ftype(), ) else: iunitmhc = 0 - # Fill namefile items - name = [ModflowGmg._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) # check if a valid model version has been specified diff --git a/flopy/modflow/mfhfb.py b/flopy/modflow/mfhfb.py index 9670703af9..c9cf3d5cf9 100644 --- a/flopy/modflow/mfhfb.py +++ b/flopy/modflow/mfhfb.py @@ -117,29 +117,13 @@ def __init__( if unitnumber is None: unitnumber = ModflowHfb._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowHfb._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) self._generate_heading() diff --git a/flopy/modflow/mfhob.py b/flopy/modflow/mfhob.py index 85e53d8a27..b4e1de3d7c 100755 --- a/flopy/modflow/mfhob.py +++ b/flopy/modflow/mfhob.py @@ -93,21 +93,12 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowHob._defaultunit() # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) # set filenames[1] to hobname if filenames[1] is not None if filenames[1] is None: @@ -115,35 +106,23 @@ def __init__( filenames[1] = hobname if iuhobsv is not None: - fname = filenames[1] model.add_output_file( iuhobsv, - fname=fname, + fname=filenames[1], extension="hob.out", binflag=False, - package=ModflowHob._ftype(), + package=self._ftype(), ) else: iuhobsv = 0 - # Fill namefile items - name = [ModflowHob._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, - # extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) self.url = "hob.htm" diff --git a/flopy/modflow/mfhyd.py b/flopy/modflow/mfhyd.py index 5c3fc9c964..8e65553571 100644 --- a/flopy/modflow/mfhyd.py +++ b/flopy/modflow/mfhyd.py @@ -120,54 +120,33 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor. - - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowHyd._defaultunit() # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) # set ihydun to a default unit number if it isn't specified if ihydun is None: ihydun = 536 # update external file information with hydmod output - fname = filenames[1] model.add_output_file( ihydun, - fname=fname, + fname=filenames[1], extension="hyd.bin", - package=ModflowHyd._ftype(), + package=self._ftype(), ) - # Fill namefile items - name = [ModflowHyd._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) nrow, ncol, nlay, nper = self.parent.nrow_ncol_nlay_nper diff --git a/flopy/modflow/mflak.py b/flopy/modflow/mflak.py index 02b72d4c21..7462759c13 100644 --- a/flopy/modflow/mflak.py +++ b/flopy/modflow/mflak.py @@ -280,10 +280,7 @@ def __init__( lwrt=0, **kwargs, ): - """ - Package constructor. - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowLak._defaultunit() @@ -297,19 +294,12 @@ def __init__( tabdata = True nlen += nlakes break - if filenames is None: - filenames = [None for x in range(nlen)] - elif isinstance(filenames, str): - filenames = [filenames] + [None for x in range(nlen - 1)] - elif isinstance(filenames, list): - if len(filenames) < nlen: - filenames = filenames + [None for x in range(2, nlen)] + filenames = self._prepare_filenames(filenames, nlen) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowLak._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 @@ -328,14 +318,14 @@ def __init__( "{} tabfiles specified " "instead of {} tabfiles".format(len(tab_files), nlakes) ) + # TODO: what should happen with msg? # make sure tab_files are not None - for idx, fname in enumerate(tab_files): + for idx, fname in enumerate(tab_files, 1): if fname is None: - msg = ( + raise ValueError( "a filename must be specified for the " - "tabfile for lake {}".format(idx + 1) + f"tabfile for lake {idx}" ) - raise ValueError(msg) # set unit for tab files if not passed to __init__ if tab_units is None: tab_units = [] @@ -345,23 +335,13 @@ def __init__( for iu, fname in zip(tab_units, tab_files): model.add_external(fname, iu) - # Fill namefile items - name = [ModflowLak._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) self._generate_heading() diff --git a/flopy/modflow/mflmt.py b/flopy/modflow/mflmt.py index fd998224cb..775a60bacd 100644 --- a/flopy/modflow/mflmt.py +++ b/flopy/modflow/mflmt.py @@ -91,29 +91,13 @@ def __init__( if unitnumber is None: unitnumber = ModflowLmt._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowLmt._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) self._generate_heading() diff --git a/flopy/modflow/mflpf.py b/flopy/modflow/mflpf.py index e58df37d78..8043dec0f5 100644 --- a/flopy/modflow/mflpf.py +++ b/flopy/modflow/mflpf.py @@ -216,40 +216,23 @@ def __init__( unitnumber = ModflowLpf._defaultunit() # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowLpf._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 - # Fill namefile items - name = [ModflowLpf._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) self._generate_heading() diff --git a/flopy/modflow/mfmlt.py b/flopy/modflow/mfmlt.py index 884752dce1..eaea8b6d80 100644 --- a/flopy/modflow/mfmlt.py +++ b/flopy/modflow/mfmlt.py @@ -63,37 +63,18 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor. - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowMlt._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowMlt._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) self._generate_heading() diff --git a/flopy/modflow/mfmnw1.py b/flopy/modflow/mfmnw1.py index 141eca74bf..d72b424a08 100644 --- a/flopy/modflow/mfmnw1.py +++ b/flopy/modflow/mfmnw1.py @@ -99,34 +99,23 @@ def __init__( unitnumber = ModflowMnw1._defaultunit() # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowMnw1._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name, and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension, - ModflowMnw1._ftype(), + self._ftype(), unitnumber, - filenames=fname, + filenames=filenames[0], ) self.url = "mnw1.htm" diff --git a/flopy/modflow/mfmnw2.py b/flopy/modflow/mfmnw2.py index 1fcb4cdcb6..9e23d30119 100644 --- a/flopy/modflow/mfmnw2.py +++ b/flopy/modflow/mfmnw2.py @@ -1009,48 +1009,28 @@ def __init__( filenames=None, gwt=False, ): - """ - Package constructor - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowMnw2._defaultunit() # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowMnw2._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 - # Fill namefile items - name = [ModflowMnw2._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) self.url = "mnw2.htm" diff --git a/flopy/modflow/mfmnwi.py b/flopy/modflow/mfmnwi.py index 73a51f138a..f1ddd14135 100644 --- a/flopy/modflow/mfmnwi.py +++ b/flopy/modflow/mfmnwi.py @@ -81,82 +81,60 @@ def __init__( # set filenames nfn = 4 + len(unique_units) - if filenames is None: - filenames = [None for x in range(nfn)] - elif isinstance(filenames, str): - filenames = [filenames] + [None for x in range(nfn)] - elif isinstance(filenames, list): - if len(filenames) < nfn: - n = nfn - len(filenames) + 1 - filenames = filenames + [None for x in range(n)] + filenames = self._prepare_filenames(filenames, nfn) # update external file information with unit_pc output, if necessary if wel1flag is not None: - fname = filenames[1] model.add_output_file( wel1flag, - fname=fname, + fname=filenames[1], extension="wel1", binflag=False, - package=ModflowMnwi._ftype(), + package=self._ftype(), ) else: wel1flag = 0 # update external file information with unit_ts output, if necessary if qsumflag is not None: - fname = filenames[2] model.add_output_file( qsumflag, - fname=fname, + fname=filenames[2], extension="qsum", binflag=False, - package=ModflowMnwi._ftype(), + package=self._ftype(), ) else: qsumflag = 0 # update external file information with ipunit output, if necessary if byndflag is not None: - fname = filenames[3] model.add_output_file( byndflag, - fname=fname, + fname=filenames[3], extension="bynd", binflag=False, - package=ModflowMnwi._ftype(), + package=self._ftype(), ) else: byndflag = 0 - idx = 4 - for iu in unique_units: - fname = filenames[idx] + for idx, iu in enumerate(unique_units, 4): model.add_output_file( iu, - fname=fname, + fname=filenames[idx], extension=f"{iu:04d}.mnwobs", binflag=False, - package=ModflowMnwi._ftype(), + package=self._ftype(), ) - idx += 1 - name = [ModflowMnwi._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) self.url = "mnwi.htm" diff --git a/flopy/modflow/mfnwt.py b/flopy/modflow/mfnwt.py index 8d414b7cf7..687ce89fab 100644 --- a/flopy/modflow/mfnwt.py +++ b/flopy/modflow/mfnwt.py @@ -245,29 +245,13 @@ def __init__( if unitnumber is None: unitnumber = ModflowNwt._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowNwt._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) self._generate_heading() diff --git a/flopy/modflow/mfoc.py b/flopy/modflow/mfoc.py index 4cfecd79da..87179a0a5d 100644 --- a/flopy/modflow/mfoc.py +++ b/flopy/modflow/mfoc.py @@ -157,10 +157,6 @@ def __init__( **kwargs, ): - """ - Package constructor. - - """ if unitnumber is None: unitnumber = ModflowOc._defaultunit() elif isinstance(unitnumber, list): @@ -168,15 +164,9 @@ def __init__( for idx in range(len(unitnumber), 6): unitnumber.append(0) self.label = label + # set filenames - if filenames is None: - filenames = [None, None, None, None, None] - elif isinstance(filenames, str): - filenames = [filenames, None, None, None, None] - elif isinstance(filenames, list): - if len(filenames) < 5: - for idx in range(len(filenames), 5): - filenames.append(None) + filenames = self._prepare_filenames(filenames, 5) # support structured and unstructured dis dis = model.get_package("DIS") @@ -217,28 +207,26 @@ def __init__( icnt += 1 # set output unit numbers based on oc settings - self.savehead, self.saveddn, self.savebud, self.saveibnd = ( - False, - False, - False, - False, - ) + self.savehead = False + self.saveddn = False + self.savebud = False + self.saveibnd = False for key, value in stress_period_data.items(): - tlist = list(value) - for t in tlist: - if "save head" in t.lower(): + for t in list(value): + tlwr = t.lower() + if "save head" in tlwr: self.savehead = True if unitnumber[1] == 0: unitnumber[1] = 51 - if "save drawdown" in t.lower(): + if "save drawdown" in tlwr: self.saveddn = True if unitnumber[2] == 0: unitnumber[2] = 52 - if "save budget" in t.lower(): + if "save budget" in tlwr: self.savebud = True if unitnumber[3] == 0 and filenames is None: unitnumber[3] = 53 - if "save ibound" in t.lower(): + if "save ibound" in tlwr: self.saveibnd = True if unitnumber[4] == 0: unitnumber[4] = 54 @@ -262,23 +250,19 @@ def __init__( # add output files # head file if self.savehead: - iu = unitnumber[1] - binflag = True - if chedfm is not None: - binflag = False - fname = filenames[1] model.add_output_file( - iu, fname=fname, extension=extension[1], binflag=binflag + unitnumber[1], + fname=filenames[1], + extension=extension[1], + binflag=chedfm is None, ) # drawdown file if self.saveddn: - iu = unitnumber[2] - binflag = True - if cddnfm is not None: - binflag = False - fname = filenames[2] model.add_output_file( - iu, fname=fname, extension=extension[2], binflag=binflag + unitnumber[2], + fname=filenames[2], + extension=extension[2], + binflag=cddnfm is None, ) # budget file # Nothing is needed for the budget file @@ -286,32 +270,20 @@ def __init__( # ibound file ibouun = unitnumber[4] if self.saveibnd: - iu = unitnumber[4] - binflag = True - if cboufm is not None: - binflag = False - fname = filenames[4] model.add_output_file( - iu, fname=fname, extension=extension[4], binflag=binflag + unitnumber[4], + fname=filenames[4], + extension=extension[4], + binflag=cboufm is None, ) - name = [ModflowOc._ftype()] - extra = [""] - extension = [extension[0]] - unitnumber = unitnumber[0] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, - extension=extension, - name=name, - unit_number=unitnumber, - extra=extra, - filenames=fname, + extension=extension[0], + name=self._ftype(), + unit_number=unitnumber[0], + filenames=filenames[0], ) self._generate_heading() diff --git a/flopy/modflow/mfpbc.py b/flopy/modflow/mfpbc.py index b3c8d72ec3..2f857ea31b 100644 --- a/flopy/modflow/mfpbc.py +++ b/flopy/modflow/mfpbc.py @@ -21,11 +21,8 @@ def __init__( if unitnumber is None: unitnumber = ModflowPbc._defaultunit() - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, model, extension, ModflowPbc._ftype(), unitnumber - ) + # call base package constructor + super().__init__(model, extension, self._ftype(), unitnumber) self._generate_heading() self.mxactp = 0 if layer_row_column_data is None: diff --git a/flopy/modflow/mfpcg.py b/flopy/modflow/mfpcg.py index 8658bd7851..17a5761077 100644 --- a/flopy/modflow/mfpcg.py +++ b/flopy/modflow/mfpcg.py @@ -110,38 +110,18 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor. - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowPcg._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowPcg._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) # check if a valid model version has been specified diff --git a/flopy/modflow/mfpcgn.py b/flopy/modflow/mfpcgn.py index 4d32f44f17..5bc9e08ef4 100644 --- a/flopy/modflow/mfpcgn.py +++ b/flopy/modflow/mfpcgn.py @@ -198,46 +198,33 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor. - - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowPcgn._defaultunit() # set filenames - if filenames is None: - filenames = [None, None, None, None] - elif isinstance(filenames, str): - filenames = [filenames, None, None, None] - elif isinstance(filenames, list): - if len(filenames) < 4: - for idx in range(len(filenames), 4): - filenames.append(None) + filenames = self._prepare_filenames(filenames, 4) # update external file information with unit_pc output, if necessary if unit_pc is not None: - fname = filenames[1] model.add_output_file( unit_pc, - fname=fname, + fname=filenames[1], extension="pcgni", binflag=False, - package=ModflowPcgn._ftype(), + package=self._ftype(), ) else: unit_pc = 0 # update external file information with unit_ts output, if necessary if unit_ts is not None: - fname = filenames[2] model.add_output_file( unit_ts, - fname=fname, + fname=filenames[2], extension="pcgnt", binflag=False, - package=ModflowPcgn._ftype(), + package=self._ftype(), ) else: unit_ts = 0 @@ -245,34 +232,23 @@ def __init__( # update external file information with ipunit output, if necessary if ipunit is not None: if ipunit > 0: - fname = filenames[3] model.add_output_file( ipunit, - fname=fname, + fname=filenames[3], extension="pcgno", binflag=False, - package=ModflowPcgn._ftype(), + package=self._ftype(), ) else: ipunit = -1 - name = [ModflowPcgn._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) # check if a valid model version has been specified diff --git a/flopy/modflow/mfpks.py b/flopy/modflow/mfpks.py index 8e31467023..12cd691ae5 100644 --- a/flopy/modflow/mfpks.py +++ b/flopy/modflow/mfpks.py @@ -103,37 +103,17 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor. - - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowPks._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowPks._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) # check if a valid model version has been specified if model.version == "mf2k" or model.version == "mfnwt": diff --git a/flopy/modflow/mfpval.py b/flopy/modflow/mfpval.py index 88c741209e..7bd9d18166 100644 --- a/flopy/modflow/mfpval.py +++ b/flopy/modflow/mfpval.py @@ -65,38 +65,17 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor. - - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowPval._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowPval._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) self._generate_heading() diff --git a/flopy/modflow/mfrch.py b/flopy/modflow/mfrch.py index 2fc1540144..5640ae1762 100644 --- a/flopy/modflow/mfrch.py +++ b/flopy/modflow/mfrch.py @@ -100,50 +100,29 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor. - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowRch._defaultunit() # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowRch._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 - # Fill namefile items - name = [ModflowRch._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) nrow, ncol, nlay, nper = self.parent.nrow_ncol_nlay_nper diff --git a/flopy/modflow/mfriv.py b/flopy/modflow/mfriv.py index 99f6101a17..a86117e018 100644 --- a/flopy/modflow/mfriv.py +++ b/flopy/modflow/mfriv.py @@ -124,50 +124,28 @@ def __init__( filenames=None, **kwargs, ): - """ - Package constructor. - - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowRiv._defaultunit() # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowRiv._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 - # Fill namefile items - name = [ModflowRiv._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) self._generate_heading() diff --git a/flopy/modflow/mfsfr2.py b/flopy/modflow/mfsfr2.py index 485ef85897..5367f1e70a 100644 --- a/flopy/modflow/mfsfr2.py +++ b/flopy/modflow/mfsfr2.py @@ -344,28 +344,17 @@ def __init__( options=None, ): - """ - Package constructor - """ # set default unit number of one is not specified if unit_number is None: unit_number = ModflowSfr2._defaultunit() # set filenames - if filenames is None: - filenames = [None, None, None] - elif isinstance(filenames, str): - filenames = [filenames, None, None] - elif isinstance(filenames, list): - if len(filenames) < 3: - for _ in range(len(filenames), 3): - filenames.append(None) + filenames = self._prepare_filenames(filenames, 3) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowSfr2._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 @@ -385,28 +374,18 @@ def __init__( abs(istcb2), fname=fname, binflag=binflag, - package=ModflowSfr2._ftype(), + package=self._ftype(), ) else: istcb2 = 0 - # Fill namefile items - name = [ModflowSfr2._ftype()] - units = [unit_number] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unit_number, + filenames=filenames[0], ) self.url = "sfr2.htm" diff --git a/flopy/modflow/mfsip.py b/flopy/modflow/mfsip.py index 98db739c87..41c884e267 100644 --- a/flopy/modflow/mfsip.py +++ b/flopy/modflow/mfsip.py @@ -93,38 +93,17 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor. - - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowSip._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowSip._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) # check if a valid model version has been specified diff --git a/flopy/modflow/mfsms.py b/flopy/modflow/mfsms.py index 090931e996..333bdbf7cf 100644 --- a/flopy/modflow/mfsms.py +++ b/flopy/modflow/mfsms.py @@ -274,30 +274,13 @@ def __init__( if unitnumber is None: unitnumber = ModflowSms._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowSms._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) self._generate_heading() diff --git a/flopy/modflow/mfsor.py b/flopy/modflow/mfsor.py index 1595de24de..df646a4f34 100644 --- a/flopy/modflow/mfsor.py +++ b/flopy/modflow/mfsor.py @@ -77,38 +77,17 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor. - - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowSor._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowSor._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) # check if a valid model version has been specified diff --git a/flopy/modflow/mfstr.py b/flopy/modflow/mfstr.py index 0e395e2c04..e92eb2472e 100644 --- a/flopy/modflow/mfstr.py +++ b/flopy/modflow/mfstr.py @@ -242,65 +242,35 @@ def __init__( options=None, **kwargs, ): - """ - Package constructor. - - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowStr._defaultunit() # set filenames - if filenames is None: - filenames = [None, None, None] - elif isinstance(filenames, str): - filenames = [filenames, None, None] - elif isinstance(filenames, list): - if len(filenames) < 3: - for idx in range(len(filenames), 3): - filenames.append(None) + filenames = self._prepare_filenames(filenames, 3) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowStr._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 if istcb2 is not None: - fname = filenames[2] model.add_output_file( - istcb2, fname=fname, package=ModflowStr._ftype() + istcb2, fname=filenames[2], package=self._ftype() ) else: ipakcb = 0 - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowStr._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) self._generate_heading() diff --git a/flopy/modflow/mfsub.py b/flopy/modflow/mfsub.py index d978376e2c..8fa3fbbd4e 100644 --- a/flopy/modflow/mfsub.py +++ b/flopy/modflow/mfsub.py @@ -247,40 +247,27 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor. - - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowSub._defaultunit() # set filenames - if filenames is None: - filenames = [None for x in range(9)] - elif isinstance(filenames, str): - filenames = [filenames] + [None for x in range(8)] - elif isinstance(filenames, list): - if len(filenames) < 9: - n = 9 - len(filenames) + 1 - filenames = filenames + [None for x in range(n)] + filenames = self._prepare_filenames(filenames, 9) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowSub._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 if idsave is not None: - fname = filenames[2] model.add_output_file( idsave, - fname=fname, + fname=filenames[2], extension="rst", - package=ModflowSub._ftype(), + package=self._ftype(), ) else: idsave = 0 @@ -299,37 +286,25 @@ def __init__( item15_units = [2052 + i for i in range(len(item15_extensions))] if isuboc > 0: - idx = 0 - for k in range(1, 12, 2): - ext = item15_extensions[idx] + for idx, k in enumerate(range(1, 12, 2)): if ids15 is None: iu = item15_units[idx] else: iu = ids15[k] - fname = filenames[idx + 3] model.add_output_file( - iu, fname=fname, extension=ext, package=ModflowSub._ftype() + iu, + fname=filenames[idx + 3], + extension=item15_extensions[idx], + package=self._ftype(), ) - idx += 1 - - extensions = [extension] - name = [ModflowSub._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, - extension=extensions, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + extension=extension, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) nrow, ncol, nlay, nper = self.parent.nrow_ncol_nlay_nper diff --git a/flopy/modflow/mfswi2.py b/flopy/modflow/mfswi2.py index bba78f14f1..f55da4a9be 100644 --- a/flopy/modflow/mfswi2.py +++ b/flopy/modflow/mfswi2.py @@ -224,29 +224,20 @@ def __init__( unitnumber=None, filenames=None, ): - """Package constructor.""" # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowSwi2._defaultunit() # set filenames - if filenames is None: - filenames = [None, None, None, None] - elif isinstance(filenames, str): - filenames = [filenames, None, None, None] - elif isinstance(filenames, list): - if len(filenames) < 4: - for idx in range(len(filenames), 4): - filenames.append(None) + filenames = self._prepare_filenames(filenames, 4) # update external file information with zeta output, if necessary if iswizt is not None: - fname = filenames[1] model.add_output_file( iswizt, - fname=fname, + fname=filenames[1], extension="zta", - package=ModflowSwi2._ftype(), + package=self._ftype(), ) else: iswizt = 0 @@ -255,9 +246,7 @@ def __init__( # if necessary if ipakcb is not None: fname = filenames[2] - model.add_output_file( - ipakcb, fname=fname, package=ModflowSwi2._ftype() - ) + model.add_output_file(ipakcb, fname=fname, package=self._ftype()) else: ipakcb = 0 @@ -308,29 +297,18 @@ def __init__( fname=fname, binflag=binflag, extension=ext, - package=ModflowSwi2._ftype(), + package=self._ftype(), ) else: iswiobs = 0 - # Fill namefile items - name = [ModflowSwi2._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) nrow, ncol, nlay, nper = self.parent.nrow_ncol_nlay_nper @@ -355,29 +333,29 @@ def __init__( print("npln keyword is deprecated. use the nsrf keyword") nsrf = npln - self.nsrf, self.istrat, self.nobs, self.iswizt, self.iswiobs = ( - nsrf, - istrat, - nobs, - iswizt, - iswiobs, - ) + self.nsrf = nsrf + self.istrat = istrat + self.nobs = nobs + self.iswizt = iswizt + self.iswiobs = iswiobs # set cbc unit self.ipakcb = ipakcb # set solver flags - self.nsolver, self.iprsol, self.mutsol = nsolver, iprsol, mutsol + self.nsolver = nsolver + self.iprsol = iprsol + self.mutsol = mutsol # set solver parameters self.solver2params = solver2params # - self.toeslope, self.tipslope, self.alpha, self.beta = ( - toeslope, - tipslope, - alpha, - beta, - ) - self.nadptmx, self.nadptmn, self.adptfct = nadptmx, nadptmn, adptfct + self.toeslope = toeslope + self.tipslope = tipslope + self.alpha = alpha + self.beta = beta + self.nadptmx = nadptmx + self.nadptmn = nadptmn + self.adptfct = adptfct # Create arrays so that they have the correct size if self.istrat == 1: diff --git a/flopy/modflow/mfswr1.py b/flopy/modflow/mfswr1.py index edd6ad2662..650c5018b6 100644 --- a/flopy/modflow/mfswr1.py +++ b/flopy/modflow/mfswr1.py @@ -57,38 +57,17 @@ class ModflowSwr1(Package): def __init__( self, model, extension="swr", unitnumber=None, filenames=None ): - """ - Package constructor. - - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowSwr1._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowSwr1._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) # check if a valid model version has been specified diff --git a/flopy/modflow/mfswt.py b/flopy/modflow/mfswt.py index 0147fdd248..fcbbfd988c 100644 --- a/flopy/modflow/mfswt.py +++ b/flopy/modflow/mfswt.py @@ -361,29 +361,17 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor. - - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowSwt._defaultunit() # set filenames - if filenames is None: - filenames = [None for x in range(15)] - elif isinstance(filenames, str): - filenames = [filenames] + [None for x in range(14)] - elif isinstance(filenames, list): - if len(filenames) < 15: - n = 15 - len(filenames) + 1 - filenames = filenames + [None for x in range(n)] + filenames = self._prepare_filenames(filenames, 15) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowSwt._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 @@ -406,37 +394,25 @@ def __init__( item16_units = [2052 + i for i in range(len(item16_extensions))] if iswtoc > 0: - idx = 0 - for k in range(1, 26, 2): - ext = item16_extensions[idx] + for idx, k in enumerate(range(1, 26, 2)): if ids16 is None: iu = item16_units[idx] else: iu = ids16[k] - fname = filenames[idx + 2] model.add_output_file( - iu, fname=fname, extension=ext, package=ModflowSwt._ftype() + iu, + fname=filenames[idx + 2], + extension=item16_extensions[idx], + package=self._ftype(), ) - idx += 1 - - extensions = [extension] - name = [ModflowSwt._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, - extension=extensions, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + extension=extension, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) nrow, ncol, nlay, nper = self.parent.nrow_ncol_nlay_nper @@ -471,50 +447,45 @@ def __init__( self.sgs = Util2d(model, (nrow, ncol), np.float32, sgs, name="sgs") # interbed data - names = ["thick system " for n in range(nsystm)] self.thick = Util3d( model, (nsystm, nrow, ncol), np.float32, thick, - name=names, + name=["thick system " for n in range(nsystm)], locat=self.unit_number[0], ) - names = ["void system " for n in range(nsystm)] self.void = Util3d( model, (nsystm, nrow, ncol), np.float32, void, - name=names, + name=["void system " for n in range(nsystm)], locat=self.unit_number[0], ) - names = ["sub system " for n in range(nsystm)] self.sub = Util3d( model, (nsystm, nrow, ncol), np.float32, sub, - name=names, + name=["sub system " for n in range(nsystm)], locat=self.unit_number[0], ) if icrcc != 0: - names = ["sse system " for n in range(nsystm)] self.sse = Util3d( model, (nsystm, nrow, ncol), np.float32, sse, - name=names, + name=["sse system " for n in range(nsystm)], locat=self.unit_number[0], ) - names = ["ssc system " for n in range(nsystm)] self.ssv = Util3d( model, (nsystm, nrow, ncol), np.float32, ssv, - name=names, + name=["ssc system " for n in range(nsystm)], locat=self.unit_number[0], ) self.cr = None @@ -522,22 +493,20 @@ def __init__( else: self.sse = None self.ssv = None - names = ["cr system " for n in range(nsystm)] self.cr = Util3d( model, (nsystm, nrow, ncol), np.float32, cr, - name=names, + name=["cr system " for n in range(nsystm)], locat=self.unit_number[0], ) - names = ["cc system " for n in range(nsystm)] self.cc = Util3d( model, (nsystm, nrow, ncol), np.float32, cc, - name=names, + name=["cc system " for n in range(nsystm)], locat=self.unit_number[0], ) diff --git a/flopy/modflow/mfupw.py b/flopy/modflow/mfupw.py index 43c469c796..b606097386 100644 --- a/flopy/modflow/mfupw.py +++ b/flopy/modflow/mfupw.py @@ -162,7 +162,7 @@ def __init__( if model.version != "mfnwt": raise Exception( "Error: model version must be mfnwt to use " - "{} package".format(ModflowUpw._ftype()) + f"{self._ftype()} package" ) # set default unit number of one is not specified @@ -170,41 +170,23 @@ def __init__( unitnumber = ModflowUpw._defaultunit() # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowUpw._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 - # Fill namefile items - name = [ModflowUpw._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) self._generate_heading() diff --git a/flopy/modflow/mfuzf1.py b/flopy/modflow/mfuzf1.py index b29a75789a..86778a3c96 100644 --- a/flopy/modflow/mfuzf1.py +++ b/flopy/modflow/mfuzf1.py @@ -404,31 +404,22 @@ def __init__( nlen = 3 if uzgag is not None: nlen += len(uzgag) - if filenames is None: - filenames = [None for x in range(nlen)] - elif isinstance(filenames, str): - filenames = [filenames] + [None for x in range(nlen)] - elif isinstance(filenames, list): - if len(filenames) < nlen: - for idx in range(len(filenames), nlen + 1): - filenames.append(None) + filenames = self._prepare_filenames(filenames, nlen) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - abs(ipakcb), fname=fname, package=ModflowUzf1._ftype() + abs(ipakcb), fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 if iuzfcb2 is not None: - fname = filenames[2] model.add_output_file( abs(iuzfcb2), - fname=fname, + fname=filenames[2], extension="uzfcb2.bin", - package=ModflowUzf1._ftype(), + package=self._ftype(), ) else: iuzfcb2 = 0 @@ -445,15 +436,13 @@ def __init__( d[-np.abs(l[0])] = [] uzgag = d for key, value in uzgag.items(): - fname = filenames[ipos] iu = abs(key) - uzgagext = f"uzf{iu}.out" model.add_output_file( iu, - fname=fname, + fname=filenames[ipos], binflag=False, - extension=uzgagext, - package=ModflowUzf1._ftype(), + extension=f"uzf{iu}.out", + package=self._ftype(), ) ipos += 1 # handle case where iftunit is listed in the values @@ -463,29 +452,18 @@ def __init__( elif len(value) == 1: uzgag[-np.abs(key)] = [] - # Fill namefile items - name = [ModflowUzf1._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) if ( - self.parent.get_package("RCH") != None - or self.parent.get_package("EVT") != None + self.parent.get_package("RCH") is not None + or self.parent.get_package("EVT") is not None ): print( "WARNING!\n The RCH and EVT packages should not be " diff --git a/flopy/modflow/mfwel.py b/flopy/modflow/mfwel.py index 8345da2202..dc9097f389 100644 --- a/flopy/modflow/mfwel.py +++ b/flopy/modflow/mfwel.py @@ -149,50 +149,28 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor. - - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowWel._defaultunit() # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) # update external file information with cbc output, if necessary if ipakcb is not None: - fname = filenames[1] model.add_output_file( - ipakcb, fname=fname, package=ModflowWel._ftype() + ipakcb, fname=filenames[1], package=self._ftype() ) else: ipakcb = 0 - # Fill namefile items - name = [ModflowWel._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) self._generate_heading() diff --git a/flopy/modflow/mfzon.py b/flopy/modflow/mfzon.py index f9ba1537f6..26e7637c7c 100644 --- a/flopy/modflow/mfzon.py +++ b/flopy/modflow/mfzon.py @@ -67,38 +67,17 @@ def __init__( unitnumber=None, filenames=None, ): - """ - Package constructor. - - """ # set default unit number of one is not specified if unitnumber is None: unitnumber = ModflowZon._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [ModflowZon._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) self._generate_heading() diff --git a/flopy/modpath/mp6.py b/flopy/modpath/mp6.py index 87e7c119c9..474e238a48 100644 --- a/flopy/modpath/mp6.py +++ b/flopy/modpath/mp6.py @@ -11,13 +11,8 @@ class Modpath6List(Package): """ def __init__(self, model, extension="list", listunit=7): - """ - Package constructor. - - """ - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__(self, model, extension, "LIST", listunit) + # call base package constructor + super().__init__(model, extension, "LIST", listunit) # self.parent.add_package(self) This package is not added to the base # model so that it is not included in get_name_file_entries() return diff --git a/flopy/modpath/mp6bas.py b/flopy/modpath/mp6bas.py index 9e682c612f..4e38187a76 100644 --- a/flopy/modpath/mp6bas.py +++ b/flopy/modpath/mp6bas.py @@ -80,11 +80,7 @@ def __init__( extension="mpbas", unitnumber=86, ): - """ - Package constructor. - - """ - Package.__init__(self, model, extension, "MPBAS", unitnumber) + super().__init__(model, extension, "MPBAS", unitnumber) nrow, ncol, nlay, nper = self.parent.mf.nrow_ncol_nlay_nper self.parent.mf.get_name_file_entries() self.heading1 = "# MPBAS for Modpath, generated by Flopy." diff --git a/flopy/modpath/mp6sim.py b/flopy/modpath/mp6sim.py index 15c34e7db6..ea0bdeed53 100644 --- a/flopy/modpath/mp6sim.py +++ b/flopy/modpath/mp6sim.py @@ -82,8 +82,8 @@ def __init__( extension="mpsim", ): - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__(self, model, extension, "MPSIM", 32) + # call base package constructor + super().__init__(model, extension, "MPSIM", 32) nrow, ncol, nlay, nper = self.parent.mf.nrow_ncol_nlay_nper self.heading1 = "# MPSIM for Modpath, generated by Flopy." @@ -415,7 +415,7 @@ class StartingLocationsFile(Package): def __init__(self, model, inputstyle=1, extension="loc", verbose=False): - Package.__init__(self, model, extension, "LOC", 33) + super().__init__(model, extension, "LOC", 33) self.model = model self.heading = ( @@ -427,9 +427,8 @@ def __init__(self, model, inputstyle=1, extension="loc", verbose=False): self.data = self.get_empty_starting_locations_data(0) self.extension = extension - self.parent.add_package( - self - ) # add to package list so location are written with other ModPath files + # add to package list so location are written with other ModPath files + self.parent.add_package(self) @staticmethod def get_dtypes(): diff --git a/flopy/modpath/mp7.py b/flopy/modpath/mp7.py index d94040320c..5848d3566c 100644 --- a/flopy/modpath/mp7.py +++ b/flopy/modpath/mp7.py @@ -23,16 +23,11 @@ class Modpath7List(Package): """ def __init__(self, model, extension="list", unitnumber=None): - """ - Package constructor. - - """ if unitnumber is None: unitnumber = model.next_unit() - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__(self, model, extension, "LIST", unitnumber) + # call base package constructor + super().__init__(model, extension, "LIST", unitnumber) # self.parent.add_package(self) This package is not added to the base # model so that it is not included in get_name_file_entries() return diff --git a/flopy/modpath/mp7bas.py b/flopy/modpath/mp7bas.py index f47b424d60..07337263ba 100644 --- a/flopy/modpath/mp7bas.py +++ b/flopy/modpath/mp7bas.py @@ -39,14 +39,10 @@ class Modpath7Bas(Package): def __init__( self, model, porosity=0.30, defaultiface=None, extension="mpbas" ): - """ - Package constructor. - - """ unitnumber = model.next_unit() - Package.__init__(self, model, extension, "MPBAS", unitnumber) + super().__init__(model, extension, "MPBAS", unitnumber) shape = model.shape if len(shape) == 3: diff --git a/flopy/modpath/mp7sim.py b/flopy/modpath/mp7sim.py index 8a0491576f..1888bad755 100644 --- a/flopy/modpath/mp7sim.py +++ b/flopy/modpath/mp7sim.py @@ -268,15 +268,11 @@ def __init__( particlegroups=None, extension="mpsim", ): - """ - Package constructor. - - """ unitnumber = model.next_unit() - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__(self, model, extension, "MPSIM", unitnumber) + # call base package constructor + super().__init__(model, extension, "MPSIM", unitnumber) self._generate_heading() diff --git a/flopy/mt3d/mt.py b/flopy/mt3d/mt.py index 531dd37706..693bea7503 100644 --- a/flopy/mt3d/mt.py +++ b/flopy/mt3d/mt.py @@ -24,9 +24,8 @@ class Mt3dList(Package): """ def __init__(self, model, extension="list", listunit=7): - # Call ancestor's init to set self.parent, extension, name and - # unit number - Package.__init__(self, model, extension, "LIST", listunit) + # call base package constructor + super().__init__(model, extension, "LIST", listunit) # self.parent.add_package(self) This package is not added to the base # model so that it is not included in get_name_file_entries() return diff --git a/flopy/mt3d/mtadv.py b/flopy/mt3d/mtadv.py index c044b09fd2..dfe4d1a5f0 100644 --- a/flopy/mt3d/mtadv.py +++ b/flopy/mt3d/mtadv.py @@ -191,29 +191,13 @@ def __init__( elif unitnumber == 0: unitnumber = Mt3dAdv._reservedunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [Mt3dAdv._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) self.mixelm = mixelm @@ -229,7 +213,9 @@ def __init__( self.nph = nph self.npmin = npmin self.npmax = npmax - self.interp = 1 # Command-line 'interp' might once be needed if MT3DMS is updated to include other interpolation method + # Command-line 'interp' might once be needed if MT3DMS is updated to + # include other interpolation method + self.interp = 1 self.nlsink = nlsink self.npsink = npsink self.dchmoc = dchmoc diff --git a/flopy/mt3d/mtbtn.py b/flopy/mt3d/mtbtn.py index 47b6a5c223..f9f154d4b7 100644 --- a/flopy/mt3d/mtbtn.py +++ b/flopy/mt3d/mtbtn.py @@ -236,29 +236,13 @@ def __init__( elif unitnumber == 0: unitnumber = Mt3dBtn._reservedunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [Mt3dBtn._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) # Set these variables from the Modflow model (self.parent.mf) unless diff --git a/flopy/mt3d/mtdsp.py b/flopy/mt3d/mtdsp.py index bdd1d29e94..e181cfec9c 100644 --- a/flopy/mt3d/mtdsp.py +++ b/flopy/mt3d/mtdsp.py @@ -120,29 +120,13 @@ def __init__( elif unitnumber == 0: unitnumber = Mt3dDsp._reservedunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [Mt3dDsp._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) nrow = model.nrow diff --git a/flopy/mt3d/mtgcg.py b/flopy/mt3d/mtgcg.py index ab2a413342..8ad8e591aa 100644 --- a/flopy/mt3d/mtgcg.py +++ b/flopy/mt3d/mtgcg.py @@ -97,29 +97,13 @@ def __init__( elif unitnumber == 0: unitnumber = Mt3dGcg._reservedunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [Mt3dGcg._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) self.mxiter = mxiter diff --git a/flopy/mt3d/mtlkt.py b/flopy/mt3d/mtlkt.py index a0c1e8da28..aad9442d55 100644 --- a/flopy/mt3d/mtlkt.py +++ b/flopy/mt3d/mtlkt.py @@ -126,26 +126,16 @@ def __init__( unitnumber = Mt3dLkt._reservedunit() # set filenames - if filenames is None: - filenames = [None, None] - if abs(icbclk) > 0: - filenames[1] = model.name - elif isinstance(filenames, str): - filenames = [filenames, None, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - for idx in range(len(filenames), 2): - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) + if filenames[1] is None and abs(icbclk) > 0: + filenames[1] = model.name if icbclk is not None: ext = "lkcobs.out" if filenames[1] is not None: - if ( - len(filenames[1].split(".", 1)) > 1 - ): # already has extension - fname = "{}.{}".format(*filenames[1].split(".", 1)) - else: - fname = f"{filenames[1]}.{ext}" + fname = filenames[1] + if "." not in fname: # add extension + fname += f".{ext}" else: fname = f"{model.name}.{ext}" model.add_output_file( @@ -153,28 +143,18 @@ def __init__( fname=fname, extension=None, binflag=False, - package=Mt3dLkt._ftype(), + package=self._ftype(), ) else: icbclk = 0 - # Fill namefile items - name = [Mt3dLkt._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) # Set dimensions diff --git a/flopy/mt3d/mtphc.py b/flopy/mt3d/mtphc.py index 28629992c8..29f94960d5 100644 --- a/flopy/mt3d/mtphc.py +++ b/flopy/mt3d/mtphc.py @@ -36,29 +36,13 @@ def __init__( elif unitnumber == 0: unitnumber = Mt3dPhc._reservedunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [Mt3dPhc._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) self.os = os diff --git a/flopy/mt3d/mtrct.py b/flopy/mt3d/mtrct.py index 03d2527d18..b7b4e1cdcf 100644 --- a/flopy/mt3d/mtrct.py +++ b/flopy/mt3d/mtrct.py @@ -174,39 +174,19 @@ def __init__( filenames=None, **kwargs, ): - """ - Package constructor. - - """ if unitnumber is None: unitnumber = Mt3dRct._defaultunit() elif unitnumber == 0: unitnumber = Mt3dRct._reservedunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [Mt3dRct._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) nrow = model.nrow diff --git a/flopy/mt3d/mtsft.py b/flopy/mt3d/mtsft.py index b14c75954a..c77d8394f7 100644 --- a/flopy/mt3d/mtsft.py +++ b/flopy/mt3d/mtsft.py @@ -214,26 +214,16 @@ def __init__( unitnumber = Mt3dSft._reservedunit() # set filenames - if filenames is None: # if filename not passed - filenames = [None, None] # setup filenames - if abs(ioutobs) > 0: - filenames[1] = model.name - elif isinstance(filenames, str): - filenames = [filenames, None, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - for idx in range(len(filenames), 2): - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) + if filenames[1] is None and abs(ioutobs) > 0: + filenames[1] = model.name if ioutobs is not None: ext = "sftcobs.out" if filenames[1] is not None: - if ( - len(filenames[1].split(".", 1)) > 1 - ): # already has extension - fname = "{}.{}".format(*filenames[1].split(".", 1)) - else: - fname = f"{filenames[1]}.{ext}" + fname = filenames[1] + if "." not in fname: # add extension + fname += f".{ext}" else: fname = f"{model.name}.{ext}" model.add_output_file( @@ -241,28 +231,18 @@ def __init__( fname=fname, extension=None, binflag=False, - package=Mt3dSft._ftype(), + package=self._ftype(), ) else: ioutobs = 0 - # Fill namefile items - name = [Mt3dSft._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) # Set dimensions diff --git a/flopy/mt3d/mtssm.py b/flopy/mt3d/mtssm.py index c2208342c9..76c94405c4 100644 --- a/flopy/mt3d/mtssm.py +++ b/flopy/mt3d/mtssm.py @@ -172,29 +172,13 @@ def __init__( elif unitnumber == 0: unitnumber = Mt3dSsm._reservedunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [Mt3dSsm._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) deprecated_kwargs = ["criv", "cghb", "cibd", "cchd", "cpbc", "cwel"] diff --git a/flopy/mt3d/mttob.py b/flopy/mt3d/mttob.py index 893cf8cbfd..4e74bb1860 100644 --- a/flopy/mt3d/mttob.py +++ b/flopy/mt3d/mttob.py @@ -24,29 +24,13 @@ def __init__( elif unitnumber == 0: unitnumber = Mt3dTob._reservedunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [Mt3dTob._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) self.heading = "# TOB for MT3DMS, generated by Flopy." diff --git a/flopy/mt3d/mtuzt.py b/flopy/mt3d/mtuzt.py index acee737ad9..dcefcebcea 100644 --- a/flopy/mt3d/mtuzt.py +++ b/flopy/mt3d/mtuzt.py @@ -154,45 +154,26 @@ def __init__( unitnumber = Mt3dUzt._reservedunit() # set filenames - if filenames is None: - filenames = [None, None] - elif isinstance(filenames, str): - filenames = [filenames, None, None] - elif isinstance(filenames, list): - if len(filenames) < 2: - for idx in range(len(filenames), 2): - filenames.append(None) + filenames = self._prepare_filenames(filenames, 2) if icbcuz is not None: - fname = filenames[1] - extension = "uzcobs.out" model.add_output_file( icbcuz, - fname=fname, - extension=extension, + fname=filenames[1], + extension="uzcobs.out", binflag=False, - package=Mt3dUzt._ftype(), + package=self._ftype(), ) else: icbcuz = 0 - # Fill namefile items - name = [Mt3dUzt._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=filenames[0], ) # Set dimensions diff --git a/flopy/pakbase.py b/flopy/pakbase.py index f8019c0594..610f94c13c 100644 --- a/flopy/pakbase.py +++ b/flopy/pakbase.py @@ -433,6 +433,19 @@ class Package(PackageInterface): """ Base package class from which most other packages are derived. + Parameters + ---------- + parent : object + Parent model object. + extension : str or list, default "glo" + File extension, without ".", use list to describe more than one. + name : str or list, default "GLOBAL" + Package name, use list to describe more than one. + unit_number : int or list, default 1 + Unit number, use list to describe more than one. + filenames : str or list, default None + allowDuplicates : bool, default False + Allow more than one instance of package in parent. """ def __init__( @@ -441,20 +454,17 @@ def __init__( extension="glo", name="GLOBAL", unit_number=1, - extra="", filenames=None, allowDuplicates=False, ): - """ - Package init - - """ # To be able to access the parent model object's attributes self.parent = parent if not isinstance(extension, list): extension = [extension] self.extension = [] self.file_name = [] + if isinstance(filenames, str): + filenames = [filenames] for idx, e in enumerate(extension): self.extension.append(e) file_name = f"{self.parent.name}.{e}" @@ -471,10 +481,6 @@ def __init__( if not isinstance(unit_number, list): unit_number = [unit_number] self.unit_number = unit_number - if not isinstance(extra, list): - self.extra = len(self.unit_number) * [extra] - else: - self.extra = extra self.url = "index.html" self.allowDuplicates = allowDuplicates @@ -675,6 +681,21 @@ def _generate_heading(self): f"generated by Flopy {__version__}" ) + @staticmethod + def _prepare_filenames(filenames, num=1): + """Prepare filenames parameter.""" + if filenames is None: + return [None] * num + elif isinstance(filenames, str): + filenames = [filenames] + if isinstance(filenames, list): + if len(filenames) < num: + filenames += [None] * (num - len(filenames)) + elif len(filenames) > num: + filenames = filenames[:num] + return filenames + raise ValueError(f"unexpected filenames: {filenames}") + @staticmethod def add_to_dtype(dtype, field_names, field_types): """ diff --git a/flopy/seawat/swt.py b/flopy/seawat/swt.py index 9ea83a24ca..fc44f3ad80 100644 --- a/flopy/seawat/swt.py +++ b/flopy/seawat/swt.py @@ -15,7 +15,7 @@ class SeawatList(Package): """ def __init__(self, model, extension="list", listunit=7): - Package.__init__(self, model, extension, "LIST", listunit) + super().__init__(model, extension, "LIST", listunit) return def __repr__(self): diff --git a/flopy/seawat/swtvdf.py b/flopy/seawat/swtvdf.py index 1109871440..459e502b19 100644 --- a/flopy/seawat/swtvdf.py +++ b/flopy/seawat/swtvdf.py @@ -210,29 +210,13 @@ def __init__( if unitnumber is None: unitnumber = SeawatVdf._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [SeawatVdf._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) nrow, ncol, nlay, nper = self.parent.nrow_ncol_nlay_nper diff --git a/flopy/seawat/swtvsc.py b/flopy/seawat/swtvsc.py index 70baec3f18..8e897583a4 100644 --- a/flopy/seawat/swtvsc.py +++ b/flopy/seawat/swtvsc.py @@ -156,29 +156,13 @@ def __init__( if unitnumber is None: unitnumber = SeawatVsc._defaultunit() - # set filenames - if filenames is None: - filenames = [None] - elif isinstance(filenames, str): - filenames = [filenames] - - # Fill namefile items - name = [SeawatVsc._ftype()] - units = [unitnumber] - extra = [""] - - # set package name - fname = [filenames[0]] - - # Call ancestor's init to set self.parent, extension, name and unit number - Package.__init__( - self, + # call base package constructor + super().__init__( model, extension=extension, - name=name, - unit_number=units, - extra=extra, - filenames=fname, + name=self._ftype(), + unit_number=unitnumber, + filenames=self._prepare_filenames(filenames), ) nrow, ncol, nlay, nper = self.parent.nrow_ncol_nlay_nper