Source code for pyabsa.utils.check_utils.package_version_check

# -*- coding: utf-8 -*-
# file: package_version_check.py
# time: 02/11/2022 15:50
# author: YANG, HENG <hy345@exeter.ac.uk> (杨恒)
# github: https://github.com/yangheng95
# GScholar: https://scholar.google.com/citations?user=NPq5a_0AAAAJ&hl=en
# ResearchGate: https://www.researchgate.net/profile/Heng-Yang-17/research
# Copyright (C) 2022. All Rights Reserved.
from packaging import version

import requests
from termcolor import colored
from update_checker import parse_version, UpdateChecker

from pyabsa import __version__ as current_version
from pyabsa.utils.exception_utils.exception_utils import time_out
from pyabsa.utils.pyabsa_utils import fprint


@time_out(10)
[docs] def check_package_version(min_version, max_version=None): if version.parse(current_version) < version.parse(min_version): raise ValueError( f"Current version {current_version} is lower than minimum version {min_version}," f" please upgrade your package." ) if max_version is not None and version.parse(current_version) > version.parse( max_version ): raise ValueError( f"Current version {current_version} is higher than maximum version {max_version}," f" please downgrade your package." )
@time_out(10)
[docs] def validate_pyabsa_version(): try: response = requests.get("https://pypi.org/pypi/pyabsa/json", timeout=1) except requests.exceptions.RequestException: return if response.status_code == 200: data = response.json() versions = list(data["releases"].keys()) versions.sort(key=parse_version, reverse=True) if current_version not in versions: fprint( colored( "You are using a DEPRECATED or TEST version of PyABSA. Consider update using pip install -U pyabsa!", "red", ) )
@time_out(10)
[docs] def query_release_notes(**kwargs): logger = kwargs.get("logger", None) try: release_url = ( "https://github.com/yangheng95/PyABSA/blob/release/release-note.json" ) content = requests.get(release_url, timeout=5) release_note = content.json() if logger: logger.info("Release note: ") logger.info(release_note) else: fprint("Release note: ") fprint(release_note[current_version]) except Exception as e: try: release_url = ( "https://gitee.com/yangheng95/PyABSA/raw/release/release-note.json" ) content = requests.get(release_url, timeout=5) release_note = content.json() if logger: logger.info("Release note: ") logger.info(release_note[current_version]) except Exception as e: if logger: logger.warning( "Failed to query release notes, " "please check the latest version of PyABSA at {}".format( release_url ) ) else: fprint( colored( "Failed to query release notes, " "please check the latest version of PyABSA at {}".format( release_url ), "red", ) )
@time_out(10)
[docs] def check_pyabsa_update(): try: checker = UpdateChecker() check_result = checker.check(__name__, current_version) if check_result: fprint(check_result) query_release_notes() except Exception as e: fprint("Failed to check update for {}, error: {}".format(__name__, e))