Link: https://code.alibaba-inc.com/Ali-MaaS/MaaS-lib/codereview/9319772master
| @@ -43,7 +43,7 @@ extensions = [ | |||||
| 'sphinx.ext.autodoc', | 'sphinx.ext.autodoc', | ||||
| 'sphinx.ext.napoleon', | 'sphinx.ext.napoleon', | ||||
| 'sphinx.ext.viewcode', | 'sphinx.ext.viewcode', | ||||
| 'recommonmark', | |||||
| 'myst_parser', | |||||
| 'sphinx_markdown_tables', | 'sphinx_markdown_tables', | ||||
| 'sphinx_copybutton', | 'sphinx_copybutton', | ||||
| ] | ] | ||||
| @@ -11,8 +11,8 @@ import requests | |||||
| from modelscope.utils.logger import get_logger | from modelscope.utils.logger import get_logger | ||||
| from ..msdatasets.config import DOWNLOADED_DATASETS_PATH, HUB_DATASET_ENDPOINT | from ..msdatasets.config import DOWNLOADED_DATASETS_PATH, HUB_DATASET_ENDPOINT | ||||
| from ..utils.constant import DownloadMode | |||||
| from .constants import MODELSCOPE_URL_SCHEME | |||||
| from ..utils.constant import (DEFAULT_DATASET_REVISION, DEFAULT_MODEL_REVISION, | |||||
| DownloadMode) | |||||
| from .errors import (InvalidParameter, NotExistError, datahub_raise_on_error, | from .errors import (InvalidParameter, NotExistError, datahub_raise_on_error, | ||||
| handle_http_response, is_ok, raise_on_error) | handle_http_response, is_ok, raise_on_error) | ||||
| from .utils.utils import get_endpoint, model_id_to_group_owner_name | from .utils.utils import get_endpoint, model_id_to_group_owner_name | ||||
| @@ -35,7 +35,7 @@ class HubApi: | |||||
| Login with username and password | Login with username and password | ||||
| Args: | Args: | ||||
| username(`str`): user name on modelscope | |||||
| user_name(`str`): user name on modelscope | |||||
| password(`str`): password | password(`str`): password | ||||
| Returns: | Returns: | ||||
| @@ -135,7 +135,7 @@ class HubApi: | |||||
| def get_model( | def get_model( | ||||
| self, | self, | ||||
| model_id: str, | model_id: str, | ||||
| revision: str = 'master', | |||||
| revision: str = DEFAULT_MODEL_REVISION, | |||||
| ) -> str: | ) -> str: | ||||
| """ | """ | ||||
| Get model information at modelscope_hub | Get model information at modelscope_hub | ||||
| @@ -144,7 +144,7 @@ class HubApi: | |||||
| model_id(`str`): The model id. | model_id(`str`): The model id. | ||||
| revision(`str`): revision of model | revision(`str`): revision of model | ||||
| Returns: | Returns: | ||||
| The model details information. | |||||
| The model detail information. | |||||
| Raises: | Raises: | ||||
| NotExistError: If the model is not exist, will throw NotExistError | NotExistError: If the model is not exist, will throw NotExistError | ||||
| <Tip> | <Tip> | ||||
| @@ -207,7 +207,7 @@ class HubApi: | |||||
| def get_model_files(self, | def get_model_files(self, | ||||
| model_id: str, | model_id: str, | ||||
| revision: Optional[str] = 'master', | |||||
| revision: Optional[str] = DEFAULT_MODEL_REVISION, | |||||
| root: Optional[str] = None, | root: Optional[str] = None, | ||||
| recursive: Optional[str] = False, | recursive: Optional[str] = False, | ||||
| use_cookies: Union[bool, CookieJar] = False, | use_cookies: Union[bool, CookieJar] = False, | ||||
| @@ -216,12 +216,12 @@ class HubApi: | |||||
| Args: | Args: | ||||
| model_id (str): The model id | model_id (str): The model id | ||||
| revision (Optional[str], optional): The branch or tag name. Defaults to 'master'. | |||||
| revision (Optional[str], optional): The branch or tag name. | |||||
| root (Optional[str], optional): The root path. Defaults to None. | root (Optional[str], optional): The root path. Defaults to None. | ||||
| recursive (Optional[str], optional): Is recurive list files. Defaults to False. | |||||
| use_cookies (Union[bool, CookieJar], optional): If is cookieJar, we will use this cookie, if True, will | |||||
| recursive (Optional[str], optional): Is recursive list files. Defaults to False. | |||||
| use_cookies (Union[bool, CookieJar], optional): If is cookieJar, we will use this cookie, if True, | |||||
| will load cookie from local. Defaults to False. | will load cookie from local. Defaults to False. | ||||
| is_snapshot(Optional[bool], optional): when snapshot_download set to True, otherwise False. | |||||
| headers: request headers | |||||
| Raises: | Raises: | ||||
| ValueError: If user_cookies is True, but no local cookie. | ValueError: If user_cookies is True, but no local cookie. | ||||
| @@ -258,18 +258,19 @@ class HubApi: | |||||
| dataset_list = r.json()['Data'] | dataset_list = r.json()['Data'] | ||||
| return [x['Name'] for x in dataset_list] | return [x['Name'] for x in dataset_list] | ||||
| def fetch_dataset_scripts(self, | |||||
| dataset_name: str, | |||||
| namespace: str, | |||||
| download_mode: Optional[DownloadMode], | |||||
| version: Optional[str] = 'master'): | |||||
| def fetch_dataset_scripts( | |||||
| self, | |||||
| dataset_name: str, | |||||
| namespace: str, | |||||
| download_mode: Optional[DownloadMode], | |||||
| revision: Optional[str] = DEFAULT_DATASET_REVISION): | |||||
| if namespace is None: | if namespace is None: | ||||
| raise ValueError( | raise ValueError( | ||||
| f'Dataset from Hubs.modelscope should have a valid "namespace", but get {namespace}' | f'Dataset from Hubs.modelscope should have a valid "namespace", but get {namespace}' | ||||
| ) | ) | ||||
| version = version or 'master' | |||||
| revision = revision or DEFAULT_DATASET_REVISION | |||||
| cache_dir = os.path.join(DOWNLOADED_DATASETS_PATH, dataset_name, | cache_dir = os.path.join(DOWNLOADED_DATASETS_PATH, dataset_name, | ||||
| namespace, version) | |||||
| namespace, revision) | |||||
| download_mode = DownloadMode(download_mode | download_mode = DownloadMode(download_mode | ||||
| or DownloadMode.REUSE_DATASET_IF_EXISTS) | or DownloadMode.REUSE_DATASET_IF_EXISTS) | ||||
| if download_mode == DownloadMode.FORCE_REDOWNLOAD and os.path.exists( | if download_mode == DownloadMode.FORCE_REDOWNLOAD and os.path.exists( | ||||
| @@ -281,7 +282,7 @@ class HubApi: | |||||
| resp = r.json() | resp = r.json() | ||||
| datahub_raise_on_error(datahub_url, resp) | datahub_raise_on_error(datahub_url, resp) | ||||
| dataset_id = resp['Data']['Id'] | dataset_id = resp['Data']['Id'] | ||||
| datahub_url = f'{self.dataset_endpoint}/api/v1/datasets/{dataset_id}/repo/tree?Revision={version}' | |||||
| datahub_url = f'{self.dataset_endpoint}/api/v1/datasets/{dataset_id}/repo/tree?Revision={revision}' | |||||
| r = requests.get(datahub_url) | r = requests.get(datahub_url) | ||||
| resp = r.json() | resp = r.json() | ||||
| datahub_raise_on_error(datahub_url, resp) | datahub_raise_on_error(datahub_url, resp) | ||||
| @@ -289,7 +290,7 @@ class HubApi: | |||||
| if file_list is None: | if file_list is None: | ||||
| raise NotExistError( | raise NotExistError( | ||||
| f'The modelscope dataset [dataset_name = {dataset_name}, namespace = {namespace}, ' | f'The modelscope dataset [dataset_name = {dataset_name}, namespace = {namespace}, ' | ||||
| f'version = {version}] dose not exist') | |||||
| f'version = {revision}] dose not exist') | |||||
| file_list = file_list['Files'] | file_list = file_list['Files'] | ||||
| local_paths = defaultdict(list) | local_paths = defaultdict(list) | ||||
| @@ -297,7 +298,7 @@ class HubApi: | |||||
| file_path = file_info['Path'] | file_path = file_info['Path'] | ||||
| if file_path.endswith('.py'): | if file_path.endswith('.py'): | ||||
| datahub_url = f'{self.dataset_endpoint}/api/v1/datasets/{dataset_id}/repo/files?' \ | datahub_url = f'{self.dataset_endpoint}/api/v1/datasets/{dataset_id}/repo/files?' \ | ||||
| f'Revision={version}&Path={file_path}' | |||||
| f'Revision={revision}&Path={file_path}' | |||||
| r = requests.get(datahub_url) | r = requests.get(datahub_url) | ||||
| r.raise_for_status() | r.raise_for_status() | ||||
| content = r.json()['Data']['Content'] | content = r.json()['Data']['Content'] | ||||
| @@ -11,8 +11,12 @@ LOGGER_NAME = 'ModelScopeHub' | |||||
| class Licenses(object): | class Licenses(object): | ||||
| APACHE_V2 = 'Apache License 2.0' | APACHE_V2 = 'Apache License 2.0' | ||||
| GPL = 'GPL' | |||||
| LGPL = 'LGPL' | |||||
| GPL_V2 = 'GPL-2.0' | |||||
| GPL_V3 = 'GPL-3.0' | |||||
| LGPL_V2_1 = 'LGPL-2.1' | |||||
| LGPL_V3 = 'LGPL-3.0' | |||||
| AFL_V3 = 'AFL-3.0' | |||||
| ECL_V2 = 'ECL-2.0' | |||||
| MIT = 'MIT' | MIT = 'MIT' | ||||
| @@ -20,6 +20,7 @@ from tqdm import tqdm | |||||
| from modelscope import __version__ | from modelscope import __version__ | ||||
| from modelscope.utils.logger import get_logger | from modelscope.utils.logger import get_logger | ||||
| from ..utils.constant import DEFAULT_MODEL_REVISION | |||||
| from .api import HubApi, ModelScopeConfig | from .api import HubApi, ModelScopeConfig | ||||
| from .constants import (DEFAULT_MODELSCOPE_GROUP, LOGGER_NAME, | from .constants import (DEFAULT_MODELSCOPE_GROUP, LOGGER_NAME, | ||||
| MODEL_ID_SEPARATOR) | MODEL_ID_SEPARATOR) | ||||
| @@ -35,7 +36,7 @@ logger = get_logger() | |||||
| def model_file_download( | def model_file_download( | ||||
| model_id: str, | model_id: str, | ||||
| file_path: str, | file_path: str, | ||||
| revision: Optional[str] = 'master', | |||||
| revision: Optional[str] = DEFAULT_MODEL_REVISION, | |||||
| cache_dir: Optional[str] = None, | cache_dir: Optional[str] = None, | ||||
| user_agent: Union[Dict, str, None] = None, | user_agent: Union[Dict, str, None] = None, | ||||
| local_files_only: Optional[bool] = False, | local_files_only: Optional[bool] = False, | ||||
| @@ -55,7 +56,7 @@ def model_file_download( | |||||
| Path of the file to be downloaded, relative to the root of model repo | Path of the file to be downloaded, relative to the root of model repo | ||||
| revision(`str`, *optional*): | revision(`str`, *optional*): | ||||
| revision of the model file to be downloaded. | revision of the model file to be downloaded. | ||||
| Can be any of a branch, tag or commit hash, default to `master` | |||||
| Can be any of a branch, tag or commit hash | |||||
| cache_dir (`str`, `Path`, *optional*): | cache_dir (`str`, `Path`, *optional*): | ||||
| Path to the folder where cached files are stored. | Path to the folder where cached files are stored. | ||||
| user_agent (`dict`, `str`, *optional*): | user_agent (`dict`, `str`, *optional*): | ||||
| @@ -120,8 +121,7 @@ def model_file_download( | |||||
| model_id=model_id, | model_id=model_id, | ||||
| revision=revision, | revision=revision, | ||||
| recursive=True, | recursive=True, | ||||
| use_cookies=False if cookies is None else cookies, | |||||
| ) | |||||
| use_cookies=False if cookies is None else cookies) | |||||
| for model_file in model_files: | for model_file in model_files: | ||||
| if model_file['Type'] == 'tree': | if model_file['Type'] == 'tree': | ||||
| @@ -3,6 +3,7 @@ from typing import Optional | |||||
| from modelscope.hub.errors import GitError, InvalidParameter | from modelscope.hub.errors import GitError, InvalidParameter | ||||
| from modelscope.utils.logger import get_logger | from modelscope.utils.logger import get_logger | ||||
| from ..utils.constant import DEFAULT_MODEL_REVISION | |||||
| from .api import ModelScopeConfig | from .api import ModelScopeConfig | ||||
| from .git import GitCommandWrapper | from .git import GitCommandWrapper | ||||
| from .utils.utils import get_endpoint | from .utils.utils import get_endpoint | ||||
| @@ -18,7 +19,7 @@ class Repository: | |||||
| self, | self, | ||||
| model_dir: str, | model_dir: str, | ||||
| clone_from: str, | clone_from: str, | ||||
| revision: Optional[str] = 'master', | |||||
| revision: Optional[str] = DEFAULT_MODEL_REVISION, | |||||
| auth_token: Optional[str] = None, | auth_token: Optional[str] = None, | ||||
| git_path: Optional[str] = None, | git_path: Optional[str] = None, | ||||
| ): | ): | ||||
| @@ -76,15 +77,15 @@ class Repository: | |||||
| def push(self, | def push(self, | ||||
| commit_message: str, | commit_message: str, | ||||
| branch: Optional[str] = 'master', | |||||
| force: Optional[bool] = False): | |||||
| branch: Optional[str] = DEFAULT_MODEL_REVISION, | |||||
| force: bool = False): | |||||
| """Push local files to remote, this method will do. | """Push local files to remote, this method will do. | ||||
| git add | git add | ||||
| git commit | git commit | ||||
| git push | git push | ||||
| Args: | Args: | ||||
| commit_message (str): commit message | commit_message (str): commit message | ||||
| branch (Optional[str]): which branch to push. Defaults to 'master'. | |||||
| branch (Optional[str], optional): which branch to push. | |||||
| force (Optional[bool]): whether to use forced-push. | force (Optional[bool]): whether to use forced-push. | ||||
| """ | """ | ||||
| if commit_message is None or not isinstance(commit_message, str): | if commit_message is None or not isinstance(commit_message, str): | ||||
| @@ -4,6 +4,7 @@ from pathlib import Path | |||||
| from typing import Dict, Optional, Union | from typing import Dict, Optional, Union | ||||
| from modelscope.utils.logger import get_logger | from modelscope.utils.logger import get_logger | ||||
| from ..utils.constant import DEFAULT_MODEL_REVISION | |||||
| from .api import HubApi, ModelScopeConfig | from .api import HubApi, ModelScopeConfig | ||||
| from .errors import NotExistError | from .errors import NotExistError | ||||
| from .file_download import (get_file_download_url, http_get_file, | from .file_download import (get_file_download_url, http_get_file, | ||||
| @@ -15,7 +16,7 @@ logger = get_logger() | |||||
| def snapshot_download(model_id: str, | def snapshot_download(model_id: str, | ||||
| revision: Optional[str] = 'master', | |||||
| revision: Optional[str] = DEFAULT_MODEL_REVISION, | |||||
| cache_dir: Union[str, Path, None] = None, | cache_dir: Union[str, Path, None] = None, | ||||
| user_agent: Optional[Union[Dict, str]] = None, | user_agent: Optional[Union[Dict, str]] = None, | ||||
| local_files_only: Optional[bool] = False) -> str: | local_files_only: Optional[bool] = False) -> str: | ||||
| @@ -7,7 +7,7 @@ from typing import Dict, Optional, Union | |||||
| from modelscope.hub.snapshot_download import snapshot_download | from modelscope.hub.snapshot_download import snapshot_download | ||||
| from modelscope.models.builder import build_model | from modelscope.models.builder import build_model | ||||
| from modelscope.utils.config import Config | from modelscope.utils.config import Config | ||||
| from modelscope.utils.constant import ModelFile | |||||
| from modelscope.utils.constant import DEFAULT_MODEL_REVISION, ModelFile | |||||
| from modelscope.utils.logger import get_logger | from modelscope.utils.logger import get_logger | ||||
| logger = get_logger() | logger = get_logger() | ||||
| @@ -44,7 +44,7 @@ class Model(ABC): | |||||
| @classmethod | @classmethod | ||||
| def from_pretrained(cls, | def from_pretrained(cls, | ||||
| model_name_or_path: str, | model_name_or_path: str, | ||||
| revision: Optional[str] = 'master', | |||||
| revision: Optional[str] = DEFAULT_MODEL_REVISION, | |||||
| *model_args, | *model_args, | ||||
| **kwargs): | **kwargs): | ||||
| """ Instantiate a model from local directory or remote model repo. Note | """ Instantiate a model from local directory or remote model repo. Note | ||||
| @@ -6,7 +6,7 @@ from modelscope.hub.snapshot_download import snapshot_download | |||||
| from modelscope.metainfo import Pipelines | from modelscope.metainfo import Pipelines | ||||
| from modelscope.models.base import Model | from modelscope.models.base import Model | ||||
| from modelscope.utils.config import ConfigDict | from modelscope.utils.config import ConfigDict | ||||
| from modelscope.utils.constant import Tasks | |||||
| from modelscope.utils.constant import DEFAULT_MODEL_REVISION, Tasks | |||||
| from modelscope.utils.hub import read_config | from modelscope.utils.hub import read_config | ||||
| from modelscope.utils.registry import Registry, build_from_cfg | from modelscope.utils.registry import Registry, build_from_cfg | ||||
| from .base import Pipeline | from .base import Pipeline | ||||
| @@ -105,7 +105,7 @@ def pipeline(task: str = None, | |||||
| pipeline_name: str = None, | pipeline_name: str = None, | ||||
| framework: str = None, | framework: str = None, | ||||
| device: int = -1, | device: int = -1, | ||||
| model_revision: Optional[str] = 'master', | |||||
| model_revision: Optional[str] = DEFAULT_MODEL_REVISION, | |||||
| **kwargs) -> Pipeline: | **kwargs) -> Pipeline: | ||||
| """ Factory method to build an obj:`Pipeline`. | """ Factory method to build an obj:`Pipeline`. | ||||
| @@ -5,7 +5,7 @@ from typing import List, Optional, Union | |||||
| from modelscope.hub.api import HubApi | from modelscope.hub.api import HubApi | ||||
| from modelscope.hub.file_download import model_file_download | from modelscope.hub.file_download import model_file_download | ||||
| from modelscope.utils.config import Config | from modelscope.utils.config import Config | ||||
| from modelscope.utils.constant import ModelFile | |||||
| from modelscope.utils.constant import DEFAULT_MODEL_REVISION, ModelFile | |||||
| from modelscope.utils.logger import get_logger | from modelscope.utils.logger import get_logger | ||||
| logger = get_logger() | logger = get_logger() | ||||
| @@ -21,7 +21,7 @@ def is_config_has_model(cfg_file): | |||||
| def is_official_hub_path(path: Union[str, List], | def is_official_hub_path(path: Union[str, List], | ||||
| revision: Optional[str] = 'master'): | |||||
| revision: Optional[str] = DEFAULT_MODEL_REVISION): | |||||
| """ Whether path is an official hub name or a valid local | """ Whether path is an official hub name or a valid local | ||||
| path to official hub directory. | path to official hub directory. | ||||
| """ | """ | ||||
| @@ -117,3 +117,6 @@ class Requirements(object): | |||||
| TENSORFLOW = 'tensorflow' | TENSORFLOW = 'tensorflow' | ||||
| PYTORCH = 'pytorch' | PYTORCH = 'pytorch' | ||||
| DEFAULT_MODEL_REVISION = 'master' | |||||
| DEFAULT_DATASET_REVISION = 'master' | |||||
| @@ -10,7 +10,7 @@ from modelscope.hub.constants import Licenses, ModelVisibility | |||||
| from modelscope.hub.file_download import model_file_download | from modelscope.hub.file_download import model_file_download | ||||
| from modelscope.hub.snapshot_download import snapshot_download | from modelscope.hub.snapshot_download import snapshot_download | ||||
| from modelscope.utils.config import Config | from modelscope.utils.config import Config | ||||
| from modelscope.utils.constant import ModelFile | |||||
| from modelscope.utils.constant import DEFAULT_MODEL_REVISION, ModelFile | |||||
| from .logger import get_logger | from .logger import get_logger | ||||
| logger = get_logger(__name__) | logger = get_logger(__name__) | ||||
| @@ -22,7 +22,7 @@ def create_model_if_not_exist( | |||||
| chinese_name: str, | chinese_name: str, | ||||
| visibility: Optional[int] = ModelVisibility.PUBLIC, | visibility: Optional[int] = ModelVisibility.PUBLIC, | ||||
| license: Optional[str] = Licenses.APACHE_V2, | license: Optional[str] = Licenses.APACHE_V2, | ||||
| revision: Optional[str] = 'master'): | |||||
| revision: Optional[str] = DEFAULT_MODEL_REVISION): | |||||
| exists = True | exists = True | ||||
| try: | try: | ||||
| api.get_model(model_id=model_id, revision=revision) | api.get_model(model_id=model_id, revision=revision) | ||||
| @@ -42,12 +42,13 @@ def create_model_if_not_exist( | |||||
| return True | return True | ||||
| def read_config(model_id_or_path: str, revision: Optional[str] = 'master'): | |||||
| def read_config(model_id_or_path: str, | |||||
| revision: Optional[str] = DEFAULT_MODEL_REVISION): | |||||
| """ Read config from hub or local path | """ Read config from hub or local path | ||||
| Args: | Args: | ||||
| model_id_or_path (str): Model repo name or local directory path. | model_id_or_path (str): Model repo name or local directory path. | ||||
| revision: revision of the model when getting from the hub | |||||
| Return: | Return: | ||||
| config (:obj:`Config`): config object | config (:obj:`Config`): config object | ||||
| """ | """ | ||||