57 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
import threading
 | 
						|
from .runnable import GraphRunnableTask
 | 
						|
from .base import BaseRunner
 | 
						|
 | 
						|
from dbt.contracts.results import RunStatus, RunResult
 | 
						|
from dbt.exceptions import InternalException
 | 
						|
from dbt.graph import ResourceTypeSelector
 | 
						|
from dbt.logger import print_timestamped_line
 | 
						|
from dbt.node_types import NodeType
 | 
						|
 | 
						|
 | 
						|
class CompileRunner(BaseRunner):
 | 
						|
    def before_execute(self):
 | 
						|
        pass
 | 
						|
 | 
						|
    def after_execute(self, result):
 | 
						|
        pass
 | 
						|
 | 
						|
    def execute(self, compiled_node, manifest):
 | 
						|
        return RunResult(
 | 
						|
            node=compiled_node,
 | 
						|
            status=RunStatus.Success,
 | 
						|
            timing=[],
 | 
						|
            thread_id=threading.current_thread().name,
 | 
						|
            execution_time=0,
 | 
						|
            message=None,
 | 
						|
            adapter_response={},
 | 
						|
            failures=None
 | 
						|
        )
 | 
						|
 | 
						|
    def compile(self, manifest):
 | 
						|
        compiler = self.adapter.get_compiler()
 | 
						|
        return compiler.compile_node(self.node, manifest, {})
 | 
						|
 | 
						|
 | 
						|
class CompileTask(GraphRunnableTask):
 | 
						|
    def raise_on_first_error(self):
 | 
						|
        return True
 | 
						|
 | 
						|
    def get_node_selector(self) -> ResourceTypeSelector:
 | 
						|
        if self.manifest is None or self.graph is None:
 | 
						|
            raise InternalException(
 | 
						|
                'manifest and graph must be set to get perform node selection'
 | 
						|
            )
 | 
						|
        return ResourceTypeSelector(
 | 
						|
            graph=self.graph,
 | 
						|
            manifest=self.manifest,
 | 
						|
            previous_state=self.previous_state,
 | 
						|
            resource_types=NodeType.executable(),
 | 
						|
        )
 | 
						|
 | 
						|
    def get_runner_type(self, _):
 | 
						|
        return CompileRunner
 | 
						|
 | 
						|
    def task_end_messages(self, results):
 | 
						|
        print_timestamped_line('Done.')
 |