Source code for bioregistry.external.zazuko

"""Download Zazuko."""

import json
from collections.abc import Sequence
from pathlib import Path
from typing import Any, ClassVar

import requests

from bioregistry.constants import URI_FORMAT_KEY
from bioregistry.external.alignment_utils import Aligner, load_processed

__all__ = [
    "ZazukoAligner",
    "get_zazuko",
]


DIRECTORY = Path(__file__).parent.resolve()
RAW_PATH = DIRECTORY / "raw.json"
PROCESSED_PATH = DIRECTORY / "processed.json"
URL = "https://prefix.zazuko.com/api/v1/prefixes"


[docs] def get_zazuko(*, force_download: bool = False) -> dict[str, dict[str, Any]]: """Get the Zazuko context map.""" if PROCESSED_PATH.exists() and not force_download: return load_processed(PROCESSED_PATH) data = requests.get(URL, timeout=15).json() rv = { prefix: {URI_FORMAT_KEY: f"{uri_prefix.strip()}$1"} for prefix, uri_prefix in data.items() } with PROCESSED_PATH.open("w") as file: json.dump(rv, file, indent=2, sort_keys=True) return rv
class ZazukoAligner(Aligner): """Aligner for Zazuko.""" key = "zazuko" getter = get_zazuko curation_header: ClassVar[Sequence[str]] = [URI_FORMAT_KEY] if __name__ == "__main__": ZazukoAligner.cli()