def test_Selector_make_score_tools_performer_name_selector_01(): selector = Selector.make_score_tools_performer_name_selector() assert selector._run(pending_user_input='q') is None selector = Selector.make_score_tools_performer_name_selector() assert selector._run(pending_user_input='b') is None selector = Selector.make_score_tools_performer_name_selector() assert selector._run(pending_user_input='home') is None
def test_Selector_make_score_tools_performer_name_selector_02(): selector = Selector.make_score_tools_performer_name_selector() assert selector._run(pending_user_input='vn') == 'violinist'
def test_Selector_make_score_tools_performer_name_selector_03(): selector = Selector.make_score_tools_performer_name_selector() selector.is_ranged = True assert selector._run(pending_user_input='vn, va') == ['violinist', 'violist']
def _run( self, cache=False, clear=True, head=None, pending_user_input=None, ): from experimental.tools.scoremanagertools.iotools import Selector self.session.io_manager.assign_user_input(pending_user_input) self.session.cache_breadcrumbs(cache=cache) try_again = False performers = [] while True: self.session.push_breadcrumb(self._breadcrumb) selector = Selector.make_score_tools_performer_name_selector( session=self.session, ) selector.is_ranged=self.is_ranged with self.backtracking: result = selector._run() if self.session.backtrack(): break if isinstance(result, list): performer_names = result else: performer_names = [result] performers = [] for performer_name in performer_names: self.session.push_breadcrumb(self._breadcrumb) with self.backtracking: performer = scoretools.Performer(performer_name) self.interactively_initialize_performer(performer) self.session.pop_breadcrumb() was_backtracking_locally = \ self.session.is_backtracking_locally if self.session.backtrack(): if was_backtracking_locally: try_again = True else: try_again = False performers = [] break performers.append(performer) if not try_again: break else: try_again = False self.session.pop_breadcrumb() if self.is_ranged and performers: final_result = performers[:] elif self.is_ranged and not performers: final_result = [] elif not self.is_ranged and performers: final_result = performers[0] elif not self.is_ranged and not performers: final_result = None else: raise ValueError self.session.pop_breadcrumb() self.session.restore_breadcrumbs(cache=cache) self.target = final_result return self.target