import logging import pathlib import typing class TLDError(Exception): pass class TLDList: __slots__ = ["logger", "tlds"] def __init__(self) -> None: self.logger: logging.Logger = logging.getLogger(self.__class__.__name__) self.tlds: list[str] | None = None def __load_file(self) -> list[str]: out_lines = [] with (pathlib.Path(__file__).parent / "tld.txt").open() as file: for line in file: if len(line.strip()): out_lines += [line.strip()] return out_lines def load(self) -> None: self.tlds = self.__load_file() self.logger.info("Loaded %d TLD entries", len(self.tlds)) def __enter__(self) -> typing.Self: self.load() return self def __exit__(self, *_: object) -> None: pass