def hierarchy_check(self, clazz, expected_set): pkg_root = 'tests.util.test_pkg_1' full_tree = class_util.find_subclasses_in_packages([pkg_root], clazz) res_set = set() res_set.update(full_tree.values()) self.assertEqual(res_set, expected_set)
def hierarchy_check(self, clazz, expected_dict): pkg_root = 'tests.util.test_pkg_1' result_dict = class_util.find_subclasses_in_packages([pkg_root], clazz) self.assertDictEqual(result_dict, expected_dict)
'start_date': datetime.combine(pipeline['start_date'], datetime.min.time()), __DEPENDS_ON_PAST: default_args[ __DEPENDS_ON_PAST ] if __DEPENDS_ON_PAST in default_args else False, } default_args.update(override_args) return default_args logging.info(f'Loading task implementations..') # TODO: add configuration for user tasks package impl_packages = 'liminal.runners.airflow.tasks' user_task_package = 'TODO: user_tasks_package' tasks_by_liminal_name = class_util.find_subclasses_in_packages([impl_packages], Task) logging.info(f'Finished loading task implementations: {tasks_by_liminal_name.keys()}') executors_by_liminal_name = class_util.find_subclasses_in_packages( ['liminal.runners.airflow.executors'], executor.Executor) logging.info(f'Finished loading executor implementations: {executors_by_liminal_name.keys()}') def get_task_class(task_type): return tasks_by_liminal_name[task_type] def get_executor_class(executor_type):
def __get_task_build_class(task_type): return task_build_types.get(task_type, None) def __get_service_build_class(service_type): return service_build_types.get(service_type, None) logging.info(f'Loading image builder implementations..') # TODO: add configuration for user image builders package image_builders_package = 'liminal.build.image' # user_image_builders_package = 'TODO: user_image_builders_package' task_build_types = class_util.find_subclasses_in_packages( [image_builders_package], ImageBuilder) logging.info( f'Finished loading image builder implementations: {task_build_types}') logging.info(f'Loading service image builder implementations..') # TODO: add configuration for user service image builders package service_builders_package = 'liminal.build.service' # user_service_builders_package = 'TODO: user_service_builders_package' service_build_types = class_util.find_subclasses_in_packages( [service_builders_package], ServiceImageBuilderMixin) logging.info( f'Finished loading service image builder implementations: {service_build_types}' )
return dags logging.info(f'Loading task implementations..') # TODO: add configuration for user tasks package impl_packages = 'liminal.runners.airflow.tasks' user_task_package = 'TODO: user_tasks_package' def tasks_by_liminal_name(task_classes): return { full_name.replace(impl_packages, '').replace(clzz.__name__, '')[1:-1]: clzz for (full_name, clzz) in task_classes.items() } tasks_by_liminal_name = tasks_by_liminal_name( class_util.find_subclasses_in_packages([impl_packages], Task)) logging.info(f'Finished loading task implementations: {tasks_by_liminal_name}') def get_task_class(task_type): return tasks_by_liminal_name[task_type] register_dags(environment.get_dags_dir())
override_args = { 'start_date': datetime.combine(pipeline['start_date'], datetime.min.time()), __DEPENDS_ON_PAST: default_args[__DEPENDS_ON_PAST] if __DEPENDS_ON_PAST in default_args else False, } default_args.update(override_args) return default_args logging.info(f'Loading task implementations..') # TODO: add configuration for user tasks package impl_packages = 'liminal.runners.airflow.tasks' user_task_package = 'TODO: user_tasks_package' tasks_by_liminal_name = class_util.find_subclasses_in_packages([impl_packages], Task) logging.info( f'Finished loading task implementations: {tasks_by_liminal_name.keys()}') def get_task_class(task_type): return tasks_by_liminal_name[task_type] register_dags( os.path.join(env.get_airflow_home_dir(), env.DEFAULT_PIPELINES_SUBDIR))
def __get_task_build_class(task_type): return task_build_types.get(task_type, None) def __get_service_build_class(service_type): return service_build_types.get(service_type, None) logging.info(f'Loading image builder implementations..') # TODO: add configuration for user image builders package image_builders_package = 'liminal.build.image' # user_image_builders_package = 'TODO: user_image_builders_package' TASK_BUILD_CLASSES = class_util.find_subclasses_in_packages( [image_builders_package], ImageBuilder) def get_types_dict(task_build_classes): # take module name from class name return {x.split(".")[-2]: c for x, c in task_build_classes.items()} task_build_types = get_types_dict(TASK_BUILD_CLASSES) logging.info(f'Finished loading image builder implementations: {TASK_BUILD_CLASSES}') logging.info(f'Loading service image builder implementations..') # TODO: add configuration for user service image builders package service_builders_package = 'liminal.build.service'