@@ -43,6 +43,24 @@ def create(cls, **kwargs):
4343
4444 return cls .judge (** kwargs ).model_dump (exclude_none = True )
4545
46+ class CSVFile (InputModel , title = "*.xlsx file tree" ):
47+ """
48+ .csv file tree structure
49+ Parameters
50+ ----------
51+ filename: str
52+ Filename (as a string) with a *.csv file extension.
53+ """
54+
55+ filename : str
56+
57+ @field_validator ("filename" , mode = "before" )
58+ def validate_file_extension (cls , v ):
59+ if not v .lower ().endswith (".csv" ):
60+ raise ValueError (
61+ f"The file '{ v } ' must be a '.csv'."
62+ )
63+ return v
4664
4765class XLSXFile (InputModel , title = "*.xlsx file tree" ):
4866 """
@@ -59,6 +77,13 @@ class XLSXFile(InputModel, title="*.xlsx file tree"):
5977 filename : str
6078 sheetname : Union [str , List [str ], Dict [str , str ]]
6179
80+ @field_validator ("filename" , mode = "before" )
81+ def validate_file_extension (cls , v ):
82+ if not v .lower ().endswith (".xlsx" ):
83+ raise ValueError (
84+ f"The file '{ v } ' must be a '.xlsx'."
85+ )
86+ return v
6287
6388class FileSettings (InputModel , title = "parameter file settings" ):
6489 """
@@ -74,8 +99,6 @@ class FileSettings(InputModel, title="parameter file settings"):
7499
75100 directory : str
76101 sheetname : str
77-
78-
79102class StratifiedSurveyMeanParameters (
80103 InputModel , title = "stratified survey parameters" , arbitrary_types_allowed = True
81104):
@@ -290,7 +313,6 @@ def validate_save_file_template(cls, v):
290313 # ---- Return value
291314 return v
292315
293-
294316class TSLRegressionParameters (InputModel , title = "TS-length regression parameters" ):
295317 """
296318 Target strength - length regression parameters
@@ -493,7 +515,6 @@ class BiologicalFile(InputModel, title="consolidated biological file input"):
493515 filename : str
494516 sheetname : BiologicalSheets
495517
496-
497518class BiologicalFiles (InputModel , title = "biological file inputs" ):
498519 """
499520 Biological data files
@@ -576,7 +597,9 @@ class CONFIG_DATA_MODEL(InputModel):
576597 data_root_dir : Optional [str ] = None
577598 CAN_haul_offset : Optional [int ] = None
578599 ship_id : Optional [Union [int , str , float , Dict [Any , Any ]]] = None
579- export_regions : Optional [Dict [str , XLSXFile ]] = None
600+ transect_filter : Optional [XLSXFile ] = None
601+ export_regions : Optional [Union [Union [CSVFile , XLSXFile ],
602+ Dict [str , Union [CSVFile , XLSXFile ]]]] = None
580603
581604 def __init__ (self , filename , ** kwargs ):
582605 try :
0 commit comments