@@ -1954,27 +1954,32 @@ def dump(self):
19541954 return "" .join (texts )
19551955
19561956
1957+ @dc .dataclass (slots = True , repr = False )
19571958class Destination :
1958- def __init__ ( self , name , type , clinic , * args ):
1959- self . name = name
1960- self . type = type
1961- self . clinic = clinic
1962- self . buffers = BufferSeries ()
1959+ name : str
1960+ type : str
1961+ clinic : Clinic
1962+ buffers : BufferSeries = dc . field ( init = False , default_factory = BufferSeries )
1963+ filename : str = dc . field ( init = False ) # set in __post_init__
19631964
1965+ args : dc .InitVar [tuple [str , ...]] = ()
1966+
1967+ def __post_init__ (self , args : tuple [str , ...]) -> None :
19641968 valid_types = ('buffer' , 'file' , 'suppress' )
1965- if type not in valid_types :
1969+ if self . type not in valid_types :
19661970 fail (
1967- f"Invalid destination type { type !r} for { name } , "
1971+ f"Invalid destination type { self . type !r} for { self . name } , "
19681972 f"must be { ', ' .join (valid_types )} "
19691973 )
1970- extra_arguments = 1 if type == "file" else 0
1974+ extra_arguments = 1 if self . type == "file" else 0
19711975 if len (args ) < extra_arguments :
1972- fail (f"Not enough arguments for destination { name } new { type } " )
1976+ fail (f"Not enough arguments for destination { self . name } new { self . type } " )
19731977 if len (args ) > extra_arguments :
1974- fail (f"Too many arguments for destination { name } new { type } " )
1975- if type == 'file' :
1978+ fail (f"Too many arguments for destination { self . name } new { self . type } " )
1979+ if self . type == 'file' :
19761980 d = {}
1977- filename = clinic .filename
1981+ filename = self .clinic .filename
1982+ assert filename is not None
19781983 d ['path' ] = filename
19791984 dirname , basename = os .path .split (filename )
19801985 if not dirname :
@@ -1984,19 +1989,19 @@ def __init__(self, name, type, clinic, *args):
19841989 d ['basename_root' ], d ['basename_extension' ] = os .path .splitext (filename )
19851990 self .filename = args [0 ].format_map (d )
19861991
1987- def __repr__ (self ):
1992+ def __repr__ (self ) -> str :
19881993 if self .type == 'file' :
19891994 file_repr = " " + repr (self .filename )
19901995 else :
19911996 file_repr = ''
19921997 return "" .join (("<Destination " , self .name , " " , self .type , file_repr , ">" ))
19931998
1994- def clear (self ):
1999+ def clear (self ) -> None :
19952000 if self .type != 'buffer' :
19962001 fail ("Can't clear destination" + self .name + " , it's not of type buffer" )
19972002 self .buffers .clear ()
19982003
1999- def dump (self ):
2004+ def dump (self ) -> str :
20002005 return self .buffers .dump ()
20012006
20022007
@@ -2164,11 +2169,11 @@ def add_destination(
21642169 self ,
21652170 name : str ,
21662171 type : str ,
2167- * args
2172+ * args : str
21682173 ) -> None :
21692174 if name in self .destinations :
21702175 fail ("Destination already exists: " + repr (name ))
2171- self .destinations [name ] = Destination (name , type , self , * args )
2176+ self .destinations [name ] = Destination (name , type , self , args )
21722177
21732178 def get_destination (self , name : str ) -> Destination :
21742179 d = self .destinations .get (name )
0 commit comments