@@ -1954,27 +1954,32 @@ def dump(self):
1954
1954
return "" .join (texts )
1955
1955
1956
1956
1957
+ @dc .dataclass (slots = True , repr = False )
1957
1958
class 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__
1963
1964
1965
+ args : dc .InitVar [tuple [str , ...]] = ()
1966
+
1967
+ def __post_init__ (self , args : tuple [str , ...]) -> None :
1964
1968
valid_types = ('buffer' , 'file' , 'suppress' )
1965
- if type not in valid_types :
1969
+ if self . type not in valid_types :
1966
1970
fail (
1967
- f"Invalid destination type { type !r} for { name } , "
1971
+ f"Invalid destination type { self . type !r} for { self . name } , "
1968
1972
f"must be { ', ' .join (valid_types )} "
1969
1973
)
1970
- extra_arguments = 1 if type == "file" else 0
1974
+ extra_arguments = 1 if self . type == "file" else 0
1971
1975
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 } " )
1973
1977
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' :
1976
1980
d = {}
1977
- filename = clinic .filename
1981
+ filename = self .clinic .filename
1982
+ assert filename is not None
1978
1983
d ['path' ] = filename
1979
1984
dirname , basename = os .path .split (filename )
1980
1985
if not dirname :
@@ -1984,19 +1989,19 @@ def __init__(self, name, type, clinic, *args):
1984
1989
d ['basename_root' ], d ['basename_extension' ] = os .path .splitext (filename )
1985
1990
self .filename = args [0 ].format_map (d )
1986
1991
1987
- def __repr__ (self ):
1992
+ def __repr__ (self ) -> str :
1988
1993
if self .type == 'file' :
1989
1994
file_repr = " " + repr (self .filename )
1990
1995
else :
1991
1996
file_repr = ''
1992
1997
return "" .join (("<Destination " , self .name , " " , self .type , file_repr , ">" ))
1993
1998
1994
- def clear (self ):
1999
+ def clear (self ) -> None :
1995
2000
if self .type != 'buffer' :
1996
2001
fail ("Can't clear destination" + self .name + " , it's not of type buffer" )
1997
2002
self .buffers .clear ()
1998
2003
1999
- def dump (self ):
2004
+ def dump (self ) -> str :
2000
2005
return self .buffers .dump ()
2001
2006
2002
2007
@@ -2164,11 +2169,11 @@ def add_destination(
2164
2169
self ,
2165
2170
name : str ,
2166
2171
type : str ,
2167
- * args
2172
+ * args : str
2168
2173
) -> None :
2169
2174
if name in self .destinations :
2170
2175
fail ("Destination already exists: " + repr (name ))
2171
- self .destinations [name ] = Destination (name , type , self , * args )
2176
+ self .destinations [name ] = Destination (name , type , self , args )
2172
2177
2173
2178
def get_destination (self , name : str ) -> Destination :
2174
2179
d = self .destinations .get (name )
0 commit comments