diff --git a/certbot-dns-digitalocean/certbot_dns_digitalocean/_internal/dns_digitalocean.py b/certbot-dns-digitalocean/certbot_dns_digitalocean/_internal/dns_digitalocean.py index 0c0ab3faf..37fc215ed 100644 --- a/certbot-dns-digitalocean/certbot_dns_digitalocean/_internal/dns_digitalocean.py +++ b/certbot-dns-digitalocean/certbot_dns_digitalocean/_internal/dns_digitalocean.py @@ -2,6 +2,7 @@ import logging from typing import Any from typing import Callable +from typing import cast from typing import Optional import digitalocean @@ -56,7 +57,7 @@ class Authenticator(dns_common.DNSAuthenticator): def _get_digitalocean_client(self) -> "_DigitalOceanClient": if not self.credentials: # pragma: no cover raise errors.Error("Plugin has not been prepared.") - return _DigitalOceanClient(self.credentials.conf('token')) + return _DigitalOceanClient(cast(str, self.credentials.conf('token'))) class _DigitalOceanClient: diff --git a/certbot-dns-dnsimple/certbot_dns_dnsimple/_internal/dns_dnsimple.py b/certbot-dns-dnsimple/certbot_dns_dnsimple/_internal/dns_dnsimple.py index 0d89d4dc1..c361e9b07 100644 --- a/certbot-dns-dnsimple/certbot_dns_dnsimple/_internal/dns_dnsimple.py +++ b/certbot-dns-dnsimple/certbot_dns_dnsimple/_internal/dns_dnsimple.py @@ -2,6 +2,7 @@ import logging from typing import Any from typing import Callable +from typing import cast from typing import Optional from lexicon.providers import dnsimple @@ -58,7 +59,7 @@ class Authenticator(dns_common.DNSAuthenticator): def _get_dnsimple_client(self) -> "_DNSimpleLexiconClient": if not self.credentials: # pragma: no cover raise errors.Error("Plugin has not been prepared.") - return _DNSimpleLexiconClient(self.credentials.conf('token'), self.ttl) + return _DNSimpleLexiconClient(cast(str, self.credentials.conf('token')), self.ttl) class _DNSimpleLexiconClient(dns_common_lexicon.LexiconClient): diff --git a/certbot-dns-dnsmadeeasy/certbot_dns_dnsmadeeasy/_internal/dns_dnsmadeeasy.py b/certbot-dns-dnsmadeeasy/certbot_dns_dnsmadeeasy/_internal/dns_dnsmadeeasy.py index f089296b0..b426d43b2 100644 --- a/certbot-dns-dnsmadeeasy/certbot_dns_dnsmadeeasy/_internal/dns_dnsmadeeasy.py +++ b/certbot-dns-dnsmadeeasy/certbot_dns_dnsmadeeasy/_internal/dns_dnsmadeeasy.py @@ -2,6 +2,7 @@ import logging from typing import Any from typing import Callable +from typing import cast from typing import Optional from lexicon.providers import dnsmadeeasy @@ -62,8 +63,8 @@ class Authenticator(dns_common.DNSAuthenticator): def _get_dnsmadeeasy_client(self) -> "_DNSMadeEasyLexiconClient": if not self.credentials: # pragma: no cover raise errors.Error("Plugin has not been prepared.") - return _DNSMadeEasyLexiconClient(self.credentials.conf('api-key'), - self.credentials.conf('secret-key'), + return _DNSMadeEasyLexiconClient(cast(str, self.credentials.conf('api-key')), + cast(str, self.credentials.conf('secret-key')), self.ttl) diff --git a/certbot-dns-gehirn/certbot_dns_gehirn/_internal/dns_gehirn.py b/certbot-dns-gehirn/certbot_dns_gehirn/_internal/dns_gehirn.py index 799d02859..60a13d965 100644 --- a/certbot-dns-gehirn/certbot_dns_gehirn/_internal/dns_gehirn.py +++ b/certbot-dns-gehirn/certbot_dns_gehirn/_internal/dns_gehirn.py @@ -2,6 +2,7 @@ import logging from typing import Any from typing import Callable +from typing import cast from typing import Optional from lexicon.providers import gehirn @@ -64,8 +65,8 @@ class Authenticator(dns_common.DNSAuthenticator): if not self.credentials: # pragma: no cover raise errors.Error("Plugin has not been prepared.") return _GehirnLexiconClient( - self.credentials.conf('api-token'), - self.credentials.conf('api-secret'), + cast(str, self.credentials.conf('api-token')), + cast(str, self.credentials.conf('api-secret')), self.ttl ) diff --git a/certbot-dns-linode/certbot_dns_linode/_internal/dns_linode.py b/certbot-dns-linode/certbot_dns_linode/_internal/dns_linode.py index 65dc01e9b..2abc3a5c8 100644 --- a/certbot-dns-linode/certbot_dns_linode/_internal/dns_linode.py +++ b/certbot-dns-linode/certbot_dns_linode/_internal/dns_linode.py @@ -3,6 +3,7 @@ import logging import re from typing import Any from typing import Callable +from typing import cast from typing import Optional from typing import Union @@ -61,7 +62,7 @@ class Authenticator(dns_common.DNSAuthenticator): def _get_linode_client(self) -> '_LinodeLexiconClient': if not self.credentials: # pragma: no cover raise errors.Error("Plugin has not been prepared.") - api_key = self.credentials.conf('key') + api_key = cast(str, self.credentials.conf('key')) api_version: Optional[Union[str, int]] = self.credentials.conf('version') if api_version == '': api_version = None diff --git a/certbot-dns-luadns/certbot_dns_luadns/_internal/dns_luadns.py b/certbot-dns-luadns/certbot_dns_luadns/_internal/dns_luadns.py index c99273561..684113b62 100644 --- a/certbot-dns-luadns/certbot_dns_luadns/_internal/dns_luadns.py +++ b/certbot-dns-luadns/certbot_dns_luadns/_internal/dns_luadns.py @@ -2,6 +2,7 @@ import logging from typing import Any from typing import Callable +from typing import cast from typing import Optional from lexicon.providers import luadns @@ -59,8 +60,8 @@ class Authenticator(dns_common.DNSAuthenticator): def _get_luadns_client(self) -> "_LuaDNSLexiconClient": if not self.credentials: # pragma: no cover raise errors.Error("Plugin has not been prepared.") - return _LuaDNSLexiconClient(self.credentials.conf('email'), - self.credentials.conf('token'), + return _LuaDNSLexiconClient(cast(str, self.credentials.conf('email')), + cast(str, self.credentials.conf('token')), self.ttl) diff --git a/certbot-dns-nsone/certbot_dns_nsone/_internal/dns_nsone.py b/certbot-dns-nsone/certbot_dns_nsone/_internal/dns_nsone.py index ebc7f5fef..b4d1e801f 100644 --- a/certbot-dns-nsone/certbot_dns_nsone/_internal/dns_nsone.py +++ b/certbot-dns-nsone/certbot_dns_nsone/_internal/dns_nsone.py @@ -2,6 +2,7 @@ import logging from typing import Any from typing import Callable +from typing import cast from typing import Optional from lexicon.providers import nsone @@ -58,7 +59,7 @@ class Authenticator(dns_common.DNSAuthenticator): def _get_nsone_client(self) -> "_NS1LexiconClient": if not self.credentials: # pragma: no cover raise errors.Error("Plugin has not been prepared.") - return _NS1LexiconClient(self.credentials.conf('api-key'), self.ttl) + return _NS1LexiconClient(cast(str, self.credentials.conf('api-key')), self.ttl) class _NS1LexiconClient(dns_common_lexicon.LexiconClient): diff --git a/certbot-dns-ovh/certbot_dns_ovh/_internal/dns_ovh.py b/certbot-dns-ovh/certbot_dns_ovh/_internal/dns_ovh.py index 301410ca8..9d327180b 100644 --- a/certbot-dns-ovh/certbot_dns_ovh/_internal/dns_ovh.py +++ b/certbot-dns-ovh/certbot_dns_ovh/_internal/dns_ovh.py @@ -2,6 +2,7 @@ import logging from typing import Any from typing import Callable +from typing import cast from typing import Optional from lexicon.providers import ovh @@ -65,10 +66,10 @@ class Authenticator(dns_common.DNSAuthenticator): if not self.credentials: # pragma: no cover raise errors.Error("Plugin has not been prepared.") return _OVHLexiconClient( - self.credentials.conf('endpoint'), - self.credentials.conf('application-key'), - self.credentials.conf('application-secret'), - self.credentials.conf('consumer-key'), + cast(str, self.credentials.conf('endpoint')), + cast(str, self.credentials.conf('application-key')), + cast(str, self.credentials.conf('application-secret')), + cast(str, self.credentials.conf('consumer-key')), self.ttl ) diff --git a/certbot-dns-rfc2136/certbot_dns_rfc2136/_internal/dns_rfc2136.py b/certbot-dns-rfc2136/certbot_dns_rfc2136/_internal/dns_rfc2136.py index d48307750..36079ddd0 100644 --- a/certbot-dns-rfc2136/certbot_dns_rfc2136/_internal/dns_rfc2136.py +++ b/certbot-dns-rfc2136/certbot_dns_rfc2136/_internal/dns_rfc2136.py @@ -2,6 +2,7 @@ import logging from typing import Any from typing import Callable +from typing import cast from typing import Optional import dns.flags @@ -59,7 +60,7 @@ class Authenticator(dns_common.DNSAuthenticator): 'RFC 2136 Dynamic Updates.' def _validate_credentials(self, credentials: CredentialsConfiguration) -> None: - server = credentials.conf('server') + server = cast(str, credentials.conf('server')) if not is_ipaddress(server): raise errors.PluginError("The configured target DNS server ({0}) is not a valid IPv4 " "or IPv6 address. A hostname is not allowed.".format(server)) @@ -89,11 +90,11 @@ class Authenticator(dns_common.DNSAuthenticator): def _get_rfc2136_client(self) -> "_RFC2136Client": if not self.credentials: # pragma: no cover raise errors.Error("Plugin has not been prepared.") - return _RFC2136Client(self.credentials.conf('server'), - int(self.credentials.conf('port') or self.PORT), - self.credentials.conf('name'), - self.credentials.conf('secret'), - self.ALGORITHMS.get(self.credentials.conf('algorithm'), + return _RFC2136Client(cast(str, self.credentials.conf('server')), + int(cast(str, self.credentials.conf('port')) or self.PORT), + cast(str, self.credentials.conf('name')), + cast(str, self.credentials.conf('secret')), + self.ALGORITHMS.get(self.credentials.conf('algorithm') or '', dns.tsig.HMAC_MD5)) diff --git a/certbot-dns-sakuracloud/certbot_dns_sakuracloud/_internal/dns_sakuracloud.py b/certbot-dns-sakuracloud/certbot_dns_sakuracloud/_internal/dns_sakuracloud.py index 4302a78d4..0100c0c9b 100644 --- a/certbot-dns-sakuracloud/certbot_dns_sakuracloud/_internal/dns_sakuracloud.py +++ b/certbot-dns-sakuracloud/certbot_dns_sakuracloud/_internal/dns_sakuracloud.py @@ -2,6 +2,7 @@ import logging from typing import Any from typing import Callable +from typing import cast from typing import Optional from lexicon.providers import sakuracloud @@ -64,8 +65,8 @@ class Authenticator(dns_common.DNSAuthenticator): if not self.credentials: # pragma: no cover raise errors.Error("Plugin has not been prepared.") return _SakuraCloudLexiconClient( - self.credentials.conf('api-token'), - self.credentials.conf('api-secret'), + cast(str, self.credentials.conf('api-token')), + cast(str, self.credentials.conf('api-secret')), self.ttl ) diff --git a/certbot/certbot/plugins/dns_common.py b/certbot/certbot/plugins/dns_common.py index a8e6a5a4d..128024bec 100644 --- a/certbot/certbot/plugins/dns_common.py +++ b/certbot/certbot/plugins/dns_common.py @@ -312,12 +312,12 @@ class CredentialsConfiguration: ) ) - def conf(self, var: str) -> str: + def conf(self, var: str) -> Optional[str]: """Find a configuration value for variable `var`, as transformed by `mapper`. :param str var: The variable to get. - :returns: The value of the variable. - :rtype: str + :returns: The value of the variable, if it exists. + :rtype: str or None """ return self._get(var) @@ -325,7 +325,7 @@ class CredentialsConfiguration: def _has(self, var: str) -> bool: return self.mapper(var) in self.confobj - def _get(self, var: str) -> str: + def _get(self, var: str) -> Optional[str]: return self.confobj.get(self.mapper(var))