diff --git a/src/bioversions/sources/__init__.py b/src/bioversions/sources/__init__.py index a8919e41..b09cb1cd 100644 --- a/src/bioversions/sources/__init__.py +++ b/src/bioversions/sources/__init__.py @@ -21,6 +21,7 @@ from .drugcentral import DrugCentralGetter from .expasy import ExPASyGetter from .flybase import FlybaseGetter +from .guidetopharmacology import GuideToPharmacologyGetter from .homologene import HomoloGeneGetter from .intact import IntActGetter from .interpro import InterProGetter @@ -95,6 +96,7 @@ def get_getters() -> List[Type[Getter]]: NCItGetter, RxNormGetter, ChemIDplusGetter, + GuideToPharmacologyGetter, OncoTreeGetter, MOAlmanacGetter, ] diff --git a/src/bioversions/sources/guidetopharmacology.py b/src/bioversions/sources/guidetopharmacology.py new file mode 100644 index 00000000..daf003f4 --- /dev/null +++ b/src/bioversions/sources/guidetopharmacology.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- + +"""A getter for GuideToPharmacology.""" + +import re +from datetime import datetime +from typing import Dict + +from bioversions.utils import Getter, VersionType, get_soup + +__all__ = [ + "GuideToPharmacologyGetter", +] + +URL = "https://www.guidetopharmacology.org/download.jsp" +RE = re.compile(r"^.*(\d{4}\.\d+).*(\d{2}\/\d{2}\/\d{2}).*$") + + +class GuideToPharmacologyGetter(Getter): + """A getter for the IUPHAR Guide to Pharmacology.""" + + name = "Guide to Pharmacology" + homepage_fmt = "https://www.guidetopharmacology.org/DATA/public_iuphardb_v{version}.zip" + date_fmt = "%Y-%m-%d" + version_type = VersionType.year_minor + + def get(self) -> Dict[str, str]: + """Get the latest Guide to Pharmacology version number.""" + soup = get_soup(URL) + text = soup.findAll("div", {"class": "contentboxfullhelp"})[4].div.ul.li.a.text + search = RE.search(text) + if not search: + raise ValueError( + "Unable to extract version/date from Guide to Pharmacology Downloads page." + ) + grps = search.groups() + date = datetime.strftime(datetime.strptime(grps[1], "%d/%m/%y"), self.date_fmt) + return {"version": grps[0], "date": date} + + +if __name__ == "__main__": + GuideToPharmacologyGetter.print() diff --git a/src/bioversions/utils.py b/src/bioversions/utils.py index c0ab25aa..c9513b27 100644 --- a/src/bioversions/utils.py +++ b/src/bioversions/utils.py @@ -31,6 +31,7 @@ class VersionType(enum.Enum): date = "CalVer (YYYY-MM-DD)" month = "CalVer (YYYY-MM)" year = "CalVer (YYYY)" + year_minor = "CalVer (YYYY.X)" semver_minor = "SemVer (X.Y)" sequential = "Sequential (X)" daily = "Daily"