88from typing import TYPE_CHECKING
99
1010from poetry .config .config import Config
11+ from poetry .config .config_source import escape_config_key
1112from poetry .utils .threading import atomic_cached_property
1213
1314
@@ -210,10 +211,11 @@ def warn_plaintext_credentials_stored() -> None:
210211 logger .warning ("Using a plaintext file to store credentials" )
211212
212213 def set_pypi_token (self , repo_name : str , token : str ) -> None :
214+ repository = escape_config_key (repo_name )
213215 if not self .use_keyring :
214216 self .warn_plaintext_credentials_stored ()
215217 self ._config .auth_config_source .add_property (
216- f"pypi-token.{ repo_name } " , token
218+ f"pypi-token.{ repository } " , token
217219 )
218220 else :
219221 self .keyring .set_password (repo_name , "__token__" , token )
@@ -228,7 +230,8 @@ def get_pypi_token(self, repo_name: str) -> str | None:
228230 :param repo_name: Name of repository.
229231 :return: Returns a token as a string if found, otherwise None.
230232 """
231- token : str | None = self ._config .get (f"pypi-token.{ repo_name } " )
233+ repository = escape_config_key (repo_name )
234+ token : str | None = self ._config .get (f"pypi-token.{ repository } " )
232235 if token :
233236 return token
234237
@@ -240,14 +243,15 @@ def get_pypi_token(self, repo_name: str) -> str | None:
240243 def delete_pypi_token (self , repo_name : str ) -> None :
241244 if not self .use_keyring :
242245 return self ._config .auth_config_source .remove_property (
243- f"pypi-token.{ repo_name } "
246+ f"pypi-token.{ escape_config_key ( repo_name ) } "
244247 )
245248
246249 self .keyring .delete_password (repo_name , "__token__" )
247250
248251 def get_http_auth (self , repo_name : str ) -> HTTPAuthCredential :
249- username = self ._config .get (f"http-basic.{ repo_name } .username" )
250- password = self ._config .get (f"http-basic.{ repo_name } .password" )
252+ repository = escape_config_key (repo_name )
253+ username = self ._config .get (f"http-basic.{ repository } .username" )
254+ password = self ._config .get (f"http-basic.{ repository } .password" )
251255
252256 if password is None and self .use_keyring :
253257 password = self .keyring .get_password (repo_name , username )
@@ -264,7 +268,8 @@ def set_http_password(self, repo_name: str, username: str, password: str) -> Non
264268 else :
265269 self .keyring .set_password (repo_name , username , password )
266270
267- self ._config .auth_config_source .add_property (f"http-basic.{ repo_name } " , auth )
271+ repository = escape_config_key (repo_name )
272+ self ._config .auth_config_source .add_property (f"http-basic.{ repository } " , auth )
268273
269274 def delete_http_password (self , repo_name : str ) -> None :
270275 auth = self .get_http_auth (repo_name )
@@ -275,7 +280,8 @@ def delete_http_password(self, repo_name: str) -> None:
275280 with suppress (PoetryKeyringError ):
276281 self .keyring .delete_password (repo_name , auth .username )
277282
278- self ._config .auth_config_source .remove_property (f"http-basic.{ repo_name } " )
283+ repository = escape_config_key (repo_name )
284+ self ._config .auth_config_source .remove_property (f"http-basic.{ repository } " )
279285
280286 def get_credential (
281287 self , * names : str , username : str | None = None
0 commit comments