mirror of
https://github.com/xtekky/gpt4free.git
synced 2024-11-23 17:23:57 +03:00
c617b18d12
Add AbstractProvider class Add ProviderType type Add get_last_provider function Add version module and VersionUtils Display used provider in gui Fix error response in api
47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
from os import environ
|
|
import requests
|
|
from functools import cached_property
|
|
from importlib.metadata import version as get_package_version, PackageNotFoundError
|
|
from subprocess import check_output, CalledProcessError, PIPE
|
|
from .errors import VersionNotFoundError
|
|
|
|
|
|
class VersionUtils():
|
|
@cached_property
|
|
def current_version(self) -> str:
|
|
# Read from package manager
|
|
try:
|
|
return get_package_version("g4f")
|
|
except PackageNotFoundError:
|
|
pass
|
|
# Read from docker environment
|
|
version = environ.get("G4F_VERSION")
|
|
if version:
|
|
return version
|
|
# Read from git repository
|
|
try:
|
|
command = ["git", "describe", "--tags", "--abbrev=0"]
|
|
return check_output(command, text=True, stderr=PIPE).strip()
|
|
except CalledProcessError:
|
|
pass
|
|
raise VersionNotFoundError("Version not found")
|
|
|
|
@cached_property
|
|
def latest_version(self) -> str:
|
|
try:
|
|
get_package_version("g4f")
|
|
response = requests.get("https://pypi.org/pypi/g4f/json").json()
|
|
return response["info"]["version"]
|
|
except PackageNotFoundError:
|
|
url = "https://api.github.com/repos/xtekky/gpt4free/releases/latest"
|
|
response = requests.get(url).json()
|
|
return response["tag_name"]
|
|
|
|
def check_pypi_version(self) -> None:
|
|
try:
|
|
if self.current_version != self.latest_version:
|
|
print(f'New pypi version: {self.latest_version} (current: {self.version}) | pip install -U g4f')
|
|
except Exception as e:
|
|
print(f'Failed to check g4f pypi version: {e}')
|
|
|
|
utils = VersionUtils() |