Advertisement
DeaD_EyE

get latest python version string maybe....

Jul 26th, 2022
1,241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.05 KB | None | 0 0
  1. # This example is not good for production use
  2.  
  3. from urllib.request import urlopen, URLError
  4. from html.parser import HTMLParser
  5. from functools import cache
  6.  
  7.  
  8. class Parser(HTMLParser):
  9.     def __init__(self):
  10.         super().__init__()
  11.         self.versions = []
  12.         self.feed(urlopen("https://www.python.org/ftp/python").read().decode())
  13.         self.versions.sort(key=self._by_version)
  14.        
  15.     def handle_starttag(self, tag, content):
  16.         content = dict(content)        
  17.         match tag:
  18.             case "a" if "href" in content and content["href"][0].isdigit():
  19.                 self.versions.append(content["href"].rstrip("/"))
  20.  
  21.     @staticmethod
  22.     def _by_version(value):
  23.         return list(map(int, value.split(".")))
  24.  
  25.  
  26. @cache
  27. def get_latest_python_version():
  28.     try:
  29.         parser = Parser()
  30.     except URLError:
  31.         raise RuntimeError("Could not request python.org")
  32.     # removing latest version, which should be always
  33.     # a development version
  34.     return parser.versions[-2]
  35.  
  36.  
  37.  
  38. get_latest_python_version()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement