Browse Source

[ENH] add SearchResults class

tags/v0.3.2
bxdd 2 years ago
parent
commit
b51d64c770
1 changed files with 25 additions and 4 deletions
  1. +25
    -4
      learnware/market/base.py

+ 25
- 4
learnware/market/base.py View File

@@ -3,7 +3,8 @@ from __future__ import annotations
import traceback
import zipfile
import tempfile
from typing import Tuple, Any, List, Union
from typing import Tuple, Any, List, Union, Dict
from dataclasses import dataclass
from ..learnware import Learnware, get_learnware_from_dirpath
from ..logger import get_module_logger

@@ -54,6 +55,26 @@ class BaseUserInfo:
"""
self.stat_info[name] = item

@dataclass
class SearchItem:
score: float
learnware_list: List[Learnware]

class SearchResults:
def __init__(self):
self.search_results: Dict[str, List[SearchItem]] = {}

def get_types(self):
return list(self.search_results.keys())
def update(self, type, score_list: List[float], learnware_lists: List[List[Learnware]]):
search_terms = [SearchItem(score, learnware_list) for score, learnware_list in zip(score_list, learnware_lists)]
search_terms = sorted(search_terms, key=lambda x:x.score)
self.search_results[type] = search_terms
def get(self, type, default=None):
return self.search_results.get(type, default)


class LearnwareMarket:
"""Base interface for market, it provide the interface of search/add/detele/update learnwares"""
@@ -150,7 +171,7 @@ class LearnwareMarket:

def search_learnware(
self, user_info: BaseUserInfo, check_status: int = None, **kwargs
) -> Tuple[Any, List[Learnware]]:
) -> SearchResults:
"""Search learnwares based on user_info from learnwares with check_status

Parameters
@@ -163,7 +184,7 @@ class LearnwareMarket:

Returns
-------
Tuple[Any, List[Learnware]]
SearchResults
Search results
"""
return self.learnware_searcher(user_info, check_status, **kwargs)
@@ -450,7 +471,7 @@ class BaseSearcher:
def reset(self, organizer: BaseOrganizer, **kwargs):
self.learnware_organizer = organizer

def __call__(self, user_info: BaseUserInfo, check_status: int = None):
def __call__(self, user_info: BaseUserInfo, check_status: int = None) -> SearchResults:
"""Search learnwares based on user_info from learnwares with check_status

Parameters


Loading…
Cancel
Save