generate_preference_list: Declare base as optional

master
Felix Stupp 2 years ago
parent 073af5d2e6
commit c51a9acbe9
Signed by: zocker
GPG Key ID: 93E1BD26F6B02FB7

@ -385,12 +385,13 @@ PreferenceScoreCompatible = Union[
def generate_preference_list( def generate_preference_list(
base: PreferenceScore,
object_gen: Callable[[], List[MediaElement]], object_gen: Callable[[], List[MediaElement]],
score_adapt: float, score_adapt: float,
base: Optional[PreferenceScore] = None,
limit: Optional[int] = None, limit: Optional[int] = None,
) -> List[MediaElement]: ) -> List[MediaElement]:
element_list = set(object_gen()) element_list = set(object_gen())
preference = base if base is not None else PreferenceScore()
# add tags corresponding to collections # add tags corresponding to collections
collections: Iterable[MediaCollection] = MediaCollection.select() collections: Iterable[MediaCollection] = MediaCollection.select()
@ -464,7 +465,7 @@ def generate_preference_list(
return math.fsum(chain(all_nerfs, (-val for val in all_buffs))) return math.fsum(chain(all_nerfs, (-val for val in all_buffs)))
def gen_score(element: MediaElement) -> float: def gen_score(element: MediaElement) -> float:
return gen_statis_score(element) + base.calculate_iter_score(all_tags(element)) return gen_statis_score(element) + preference.calculate_iter_score(all_tags(element))
# gen elements # gen elements
res_ids = list[int]() res_ids = list[int]()
@ -476,7 +477,7 @@ def generate_preference_list(
if limit is not None and limit <= len(res_ids): if limit is not None and limit <= len(res_ids):
break break
element_list.remove(first_element) element_list.remove(first_element)
base = base.adapt_score(first_element, score_adapt) preference = preference.adapt_score(first_element, score_adapt)
orm.rollback() orm.rollback()
db.execute(f"ALTER TABLE {Tag._table_} AUTO_INCREMENT = 1;") db.execute(f"ALTER TABLE {Tag._table_} AUTO_INCREMENT = 1;")
return [MediaElement[i] for i in res_ids] return [MediaElement[i] for i in res_ids]

Loading…
Cancel
Save