# Path: opentuner/search/plugin.py
# class SearchPlugin(object):
#     @property
#     def priority(self):
#         """control order the plugin hooks gets run in, lower runs first"""
#         return 0
# 
#     def set_driver(self, driver):
#         """called before all other methods"""
#         self.driver = driver
# 
#     def before_main(self): pass
# 
#     def after_main(self):  pass
# 
#     def before_techniques(self): pass
# 
#     def after_techniques(self):  pass
# 
#     def before_results_wait(self): pass
# 
#     def after_results_wait(self):  pass
# 
#     def on_result(self, result):
#         """
#         called once for every new result
#         """
#         pass
# 
#     def on_result_for_technique(self, result, technique):
#         """
#         called right before a result is given to a technique
#         (result may be requested by multiple techniques)
#         """
#         pass
# 
#     def on_new_best_result(self, result):
#         """
#         called whenever the global best result changes
#         """
#         pass


import abc
import argparse
import logging
import os
import random
import sys
from builtins import map
from builtins import next
from builtins import str
from datetime import datetime
from importlib import import_module
from fn import _
from future.utils import with_metaclass
from opentuner.resultsdb.models import *
from .plugin import SearchPlugin
    from .metatechniques import RoundRobinMetaSearchTechnique
from __future__ import absolute_import
from __future__ import print_function




log = logging.getLogger(__name__)
# log.setLevel(logging.DEBUG)

argparser = argparse.ArgumentParser(add_help=False)
argparser.add_argument('--technique', '-t', action='append',
                       help="which technique to use")

# Path: opentuner/search/plugin.py
# class SearchPlugin(object):
#     @property
#     def priority(self):
#         """control order the plugin hooks gets run in, lower runs first"""
#         return 0
# 
#     def set_driver(self, driver):
#         """called before all other methods"""
#         self.driver = driver
# 
#     def before_main(self): pass
# 
#     def after_main(self):  pass
# 
#     def before_techniques(self): pass
# 
#     def after_techniques(self):  pass
# 
#     def before_results_wait(self): pass
# 
#     def after_results_wait(self):  pass
# 
#     def on_result(self, result):
#         """
#         called once for every new result
#         """
#         pass
# 
#     def on_result_for_technique(self, result, technique):
#         """
#         called right before a result is given to a technique
#         (result may be requested by multiple techniques)
#         """
#         pass
# 
#     def on_new_best_result(self, result):
#         """
#         called whenever the global best result changes
#         """
#         pass


# Path: opentuner/search/technique.py
import abc
import argparse
import logging
import os
import random
import sys
from builtins import map
from builtins import next
from builtins import str
from datetime import datetime
from importlib import import_module
from fn import _
from future.utils import with_metaclass
from opentuner.resultsdb.models import *
from .plugin import SearchPlugin
    from .metatechniques import RoundRobinMetaSearchTechnique

from __future__ import absolute_import
from __future__ import print_function




log = logging.getLogger(__name__)
# log.setLevel(logging.DEBUG)

argparser = argparse.ArgumentParser(add_help=False)
argparser.add_argument('--technique', '-t', action='append',
                       help="which technique to use")

argparser.add_argument('--list-techniques', '-lt', action='store_true',