@lru_cache(maxsize=<NUM_LIT:10>)<EOL><INDENT>def get_packages(self) -> set:<DEDENT>
_LOGGER.debug(f"<STR_LIT>")<EOL>response = requests.get(self.url, verify=self.verify_ssl)<EOL>response.raise_for_status()<EOL>soup = BeautifulSoup(response.text, "<STR_LIT>")<EOL>links = soup.find_all("<STR_LIT:a>")<EOL>packages = set()<EOL>for link in links:<EOL><INDENT>package_parts = link["<STR_LIT>"].rsplit("<STR_LIT:/>", maxsplit=<NUM_LIT:2>)<EOL>if not package_parts[-<NUM_LIT:1>]:<EOL><INDENT>package_parts = package_parts[:-<NUM_LIT:1>]<EOL><DEDENT>package_name = package_parts[-<NUM_LIT:1>]<EOL>link_text = link.text<EOL>if link_text.endswith("<STR_LIT:/>"):<EOL><INDENT>link_text = link_text[:-<NUM_LIT:1>]<EOL><DEDENT>if self.is_normalized_python_package_name(package_name) and package_name == link_text:<EOL><INDENT>packages.add(package_name)<EOL><DEDENT><DEDENT>return packages<EOL>
List packages available on the source package index.