@@ -93,31 +93,26 @@ def __repr__(self) -> str:
9393
9494
9595class DeprecatedOption (Option [_O ]): # pragma: no cover
96- def __init__ (self , new_name : str | None , * args : Any , ** kwargs : Any ) -> None :
97- self .new_name = new_name
98- with warnings .catch_warnings ():
99- warnings .simplefilter ("ignore" , DeprecationWarning )
100- super ().__init__ (* args , ** kwargs )
96+ def __init__ (self , new_opt : Option | None , name : str ) -> None :
97+ # copy over attrs
98+ attrs = new_opt .__dict__ .copy ()
99+ attrs .pop ("_current" , None )
100+ self .__dict__ .update (new_opt .__dict__ )
101+ # then set the ones needed here
102+ self ._name = name
103+ self ._new_opt = new_opt
101104
102105 @property
103- def current (self ) -> _O :
104- if self .new_name is None :
106+ def _current (self ) -> _O :
107+ if self ._new_opt . name is None :
105108 warnings .warn (f"{ self .name !r} has been removed" , DeprecationWarning )
106109 else :
107110 warnings .warn (
108- f"{ self .name !r} has been renamed to { self .new_name !r} " ,
111+ f"{ self .name !r} has been renamed to { self ._new_opt . name !r} " ,
109112 DeprecationWarning ,
110113 )
111- return super () .current
114+ return self . _new_opt .current
112115
113- @current .setter
114- def current (self , new : _O ) -> None :
115- if self .new_name is None :
116- warnings .warn (f"{ self .name !r} has been removed" , DeprecationWarning )
117- else :
118- warnings .warn (
119- f"{ self .name !r} has been renamed to { self .new_name !r} " ,
120- DeprecationWarning ,
121- )
122- self .set_current (new )
123- return None
116+ @_current .setter
117+ def _current (self , new : _O ) -> None :
118+ self ._new_opt .current = new
0 commit comments