@@ -63,7 +63,7 @@ async def test_connection(
6363
6464 # Obscure configuration and transform if needed
6565 obscured_config = await self .obscure_config (configuration )
66- transformed_config = self .transform_polybox_switchdriver_config (obscured_config )
66+ transformed_config = self .inject_default_values ( self . transform_polybox_switchdriver_config (obscured_config ) )
6767
6868 with tempfile .NamedTemporaryFile (mode = "w+" , delete = False , encoding = "utf-8" ) as f :
6969 config = "\n " .join (f"{ k } ={ v } " for k , v in transformed_config .items ())
@@ -166,6 +166,25 @@ async def get_doi_metadata(self, configuration: Union["RCloneConfig", dict[str,
166166 detail = f"Reason: { stderr .decode ().strip ()} " ,
167167 )
168168
169+ def inject_default_values (
170+ self , config : Union ["RCloneConfig" , dict [str , Any ]]
171+ ) -> Union ["RCloneConfig" , dict [str , Any ]]:
172+ """Adds default values for required options that are not provided in the config."""
173+ provider = self .get_provider (config )
174+ for opt in provider .options :
175+ if not opt .required or not opt .default or opt .name in config :
176+ continue
177+
178+ match opt .default :
179+ case RCloneTriState () as ts :
180+ def_val : Any = ts .value
181+ case v :
182+ def_val = v
183+
184+ config .update ({opt .name : def_val })
185+
186+ return config
187+
169188 @staticmethod
170189 def transform_polybox_switchdriver_config (
171190 configuration : Union ["RCloneConfig" , dict [str , Any ]],
0 commit comments