diff --git a/learnware/__init__.py b/learnware/__init__.py index eed5dde..b7fb924 100644 --- a/learnware/__init__.py +++ b/learnware/__init__.py @@ -1,4 +1,4 @@ -__version__ = "0.2.0.5" +__version__ = "0.2.0.6" import os import json diff --git a/learnware/client/package_utils.py b/learnware/client/package_utils.py index 2312661..5ece653 100644 --- a/learnware/client/package_utils.py +++ b/learnware/client/package_utils.py @@ -30,7 +30,7 @@ def parse_pip_requirement(line: str): line = line.strip() if len(line) == 0 or line[0] in ("#", "-"): - return None + return None, None package_name, package_version = line, line for split_ch in ("=", ">", "<", "!", "~", " ", "="): diff --git a/learnware/market/heterogeneous/__init__.py b/learnware/market/heterogeneous/__init__.py index e7ab916..df0ad39 100644 --- a/learnware/market/heterogeneous/__init__.py +++ b/learnware/market/heterogeneous/__init__.py @@ -1,2 +1,12 @@ -from .organizer import HeteroMapTableOrganizer -from .searcher import HeteroSearcher +from ...utils import is_torch_available +from ...logger import get_module_logger + +logger = get_module_logger("market_hetero") + +if not is_torch_available(verbose=False): + HeteroMapTableOrganizer = None + HeteroSearcher = None + logger.error("HeteroMapTableOrganizer and HeteroSearcher are not available because 'torch' is not installed!") +else: + from .organizer import HeteroMapTableOrganizer + from .searcher import HeteroSearcher diff --git a/learnware/market/heterogeneous/searcher.py b/learnware/market/heterogeneous/searcher.py index f261703..7194f9c 100644 --- a/learnware/market/heterogeneous/searcher.py +++ b/learnware/market/heterogeneous/searcher.py @@ -1,11 +1,9 @@ -import traceback -from typing import Tuple, List +from typing import Optional from .utils import is_hetero from ..base import BaseUserInfo, SearchResults from ..easy import EasySearcher from ..utils import parse_specification_type -from ...learnware import Learnware from ...logger import get_module_logger @@ -14,7 +12,7 @@ logger = get_module_logger("hetero_searcher") class HeteroSearcher(EasySearcher): def __call__( - self, user_info: BaseUserInfo, check_status: int = None, max_search_num: int = 5, search_method: str = "greedy" + self, user_info: BaseUserInfo, check_status: Optional[int] = None, max_search_num: int = 5, search_method: str = "greedy" ) -> SearchResults: """Search learnwares based on user_info from learnwares with check_status. Employs heterogeneous learnware search if specific requirements are met, otherwise resorts to homogeneous search methods.