Determine the canonical name of *name*. The canonical name is the name the resolver uses for queries after all CNAME and DNAME renamings have been applied. *name*, a ``dns.name.Name`` or ``str``, the query name. This method can raise any exception that ``resolve()`
(self, name: dns.name.Name | str)
| 208 | # pylint: disable=redefined-outer-name |
| 209 | |
| 210 | async def canonical_name(self, name: dns.name.Name | str) -> dns.name.Name: |
| 211 | """Determine the canonical name of *name*. |
| 212 | |
| 213 | The canonical name is the name the resolver uses for queries |
| 214 | after all CNAME and DNAME renamings have been applied. |
| 215 | |
| 216 | *name*, a ``dns.name.Name`` or ``str``, the query name. |
| 217 | |
| 218 | This method can raise any exception that ``resolve()`` can |
| 219 | raise, other than ``dns.resolver.NoAnswer`` and |
| 220 | ``dns.resolver.NXDOMAIN``. |
| 221 | |
| 222 | Returns a ``dns.name.Name``. |
| 223 | """ |
| 224 | try: |
| 225 | answer = await self.resolve(name, raise_on_no_answer=False) |
| 226 | canonical_name = answer.canonical_name |
| 227 | except dns.resolver.NXDOMAIN as e: |
| 228 | canonical_name = e.canonical_name |
| 229 | return canonical_name |
| 230 | |
| 231 | async def try_ddr(self, lifetime: float = 5.0) -> None: |
| 232 | """Try to update the resolver's nameservers using Discovery of Designated |
no test coverage detected