def define_context(raise_on_error=True, instance=None): return DagsterGraphQLContext( handle=ExecutionTargetHandle.for_repo_fn(define_repository), instance=instance or DagsterInstance.ephemeral(), execution_manager=SynchronousExecutionManager(), raise_on_error=raise_on_error, )
def define_context_for_file(python_file, fn_name, instance=None): return DagsterGraphQLContext( handle=ExecutionTargetHandle.for_repo_python_file( python_file, fn_name), instance=instance or DagsterInstance.ephemeral(), execution_manager=SynchronousExecutionManager(), )
def define_context(raise_on_error=True): return DagsterGraphQLContext( RepositoryContainer(repository=define_repository()), PipelineRunStorage(), execution_manager=SynchronousExecutionManager(), raise_on_error=raise_on_error, )
def define_examples_context(raise_on_error=True): return DagsterGraphQLContext( handle=ExecutionTargetHandle.for_repo_module('dagster_examples', 'define_demo_repo'), pipeline_runs=PipelineRunStorage(), execution_manager=SynchronousExecutionManager(), raise_on_error=raise_on_error, )
def define_test_snapshot_context(): return DagsterSnapshotGraphQLContext( instance=DagsterInstance.ephemeral(), execution_manager=SynchronousExecutionManager(), repository_snapshot=RepositorySnapshot.from_repository_definition( define_repository()), )
def define_context_for_file(python_file, fn_name, instance): check.inst_param(instance, 'instance', DagsterInstance) return DagsterGraphQLInProcessRepositoryContext( recon_repo=ReconstructableRepository.for_file(python_file, fn_name), instance=instance, execution_manager=SynchronousExecutionManager(), )
def define_examples_context(): return DagsterGraphQLContext( handle=ExecutionTargetHandle.for_repo_module('dagster_examples', 'define_demo_repo'), instance=DagsterInstance.ephemeral(), execution_manager=SynchronousExecutionManager(), )
def define_context_for_repository_yaml(path, instance): check.inst_param(instance, 'instance', DagsterInstance) return DagsterGraphQLInProcessRepositoryContext( recon_repo=ReconstructableRepository.from_yaml(path), instance=instance, execution_manager=SynchronousExecutionManager(), )
def define_context(raise_on_error=True, log_dir=None): return DagsterGraphQLContext( handle=ExecutionTargetHandle.for_repo_fn(define_repository), pipeline_runs=PipelineRunStorage(log_dir), execution_manager=SynchronousExecutionManager(), raise_on_error=raise_on_error, )
def define_test_snapshot_context(): return DagsterGraphQLOutOfProcessRepositoryContext( instance=DagsterInstance.ephemeral(), execution_manager=SynchronousExecutionManager(), external_repository=ExternalRepository.from_repository_def( define_repository()), )
def test_pipelines_python_error(): ctx = DagsterGraphQLContext( handle=ExecutionTargetHandle.for_repo_fn(define_error_pipeline_repo), pipeline_runs=InMemoryRunStorage(), execution_manager=SynchronousExecutionManager(), ) result = execute_dagster_graphql(ctx, PIPELINES) assert result.data['pipelinesOrError']['__typename'] == "PythonError"
def test_pipelines_python_error(): ctx = DagsterGraphQLContext( RepositoryContainer(repository=define_error_pipeline_repo()), PipelineRunStorage(), execution_manager=SynchronousExecutionManager(), ) result = execute_dagster_graphql(ctx, PIPELINES) assert result.data['pipelinesOrError']['__typename'] == "PythonError"
def define_context(raise_on_error=True, log_dir=None, schedule_dir=None): return DagsterGraphQLContext( handle=ExecutionTargetHandle.for_repo_fn(define_repository), pipeline_runs=FilesystemRunStorage(base_dir=log_dir) if log_dir else InMemoryRunStorage(), scheduler=TestSystemCronScheduler(schedule_dir) if schedule_dir else None, execution_manager=SynchronousExecutionManager(), raise_on_error=raise_on_error, )
def create_app(handle, pipeline_run_storage, use_synchronous_execution_manager=False): check.inst_param(handle, 'handle', ExecutionTargetHandle) check.inst_param(pipeline_run_storage, 'pipeline_run_storage', PipelineRunStorage) check.bool_param(use_synchronous_execution_manager, 'use_synchronous_execution_manager') app = Flask('dagster-ui') sockets = Sockets(app) app.app_protocol = lambda environ_path_info: 'graphql-ws' schema = create_schema() subscription_server = DagsterSubscriptionServer(schema=schema) if use_synchronous_execution_manager: execution_manager = SynchronousExecutionManager() else: execution_manager = MultiprocessingExecutionManager() context = DagsterGraphQLContext( handle=handle, pipeline_runs=pipeline_run_storage, execution_manager=execution_manager, version=__version__, ) app.add_url_rule( '/graphql', 'graphql', DagsterGraphQLView.as_view( 'graphql', schema=schema, graphiql=True, # XXX(freiksenet): Pass proper ws url graphiql_template=PLAYGROUND_TEMPLATE, executor=Executor(), context=context, ), ) sockets.add_url_rule( '/graphql', 'graphql', dagster_graphql_subscription_view(subscription_server, context)) # these routes are specifically for the Dagit UI and are not part of the graphql # API that we want other people to consume, so they're separate for now. # Also grabbing the magic glabl request args dict so that notebook_view is testable app.add_url_rule('/dagit/notebook', 'notebook', lambda: notebook_view(request.args)) app.add_url_rule('/static/<path:path>/<string:file>', 'static_view', static_view) app.add_url_rule('/<path:_path>', 'index_catchall', index_view) app.add_url_rule('/', 'index', index_view, defaults={'_path': ''}) CORS(app) return app
def define_test_snapshot_context(): return DagsterGraphQLContext( instance=DagsterInstance.ephemeral(), environments=[ InProcessDagsterEnvironment( ReconstructableRepository.for_file(__file__, 'define_repository'), execution_manager=SynchronousExecutionManager(), ) ], )
def define_context_for_repository_yaml(path, instance): check.inst_param(instance, 'instance', DagsterInstance) return DagsterGraphQLContext( environments=[ InProcessDagsterEnvironment( ReconstructableRepository.from_yaml(path), execution_manager=SynchronousExecutionManager(), ) ], instance=instance, )
def define_examples_context(): return DagsterGraphQLContext( environments=[ InProcessDagsterEnvironment( ReconstructableRepository.for_module('dagster_examples', 'define_demo_repo'), execution_manager=SynchronousExecutionManager(), ) ], instance=DagsterInstance.ephemeral(), )
def define_context_for_file(python_file, fn_name, instance): check.inst_param(instance, 'instance', DagsterInstance) return DagsterGraphQLContext( environments=[ InProcessDagsterEnvironment( ReconstructableRepository.for_file(python_file, fn_name), execution_manager=SynchronousExecutionManager(), ) ], instance=instance, )
def test_pipelines_or_error_invalid(): context = DagsterGraphQLContext( handle=ExecutionTargetHandle.for_repo_fn(define_test_repository), instance=DagsterInstance.ephemeral(), execution_manager=SynchronousExecutionManager(), ) result = execute_dagster_graphql( context, '{ pipelinesOrError { ... on PythonError { message } } }') msg = result.data['pipelinesOrError']['message'] assert 'circular reference detected in solid "csolid"' in msg
def test_pipelines_or_error_invalid(): context = DagsterGraphQLContext( handle=ExecutionTargetHandle.for_repo_fn(define_test_repository), pipeline_runs=PipelineRunStorage(), execution_manager=SynchronousExecutionManager(), ) result = execute_dagster_graphql( context, '{ pipelinesOrError { ... on InvalidDefinitionError { message } } }' ) msg = result.data['pipelinesOrError']['message'] assert "Circular reference detected in solid csolid" in msg
def test_pipelines_or_error_invalid(): repository = RepositoryDefinition( name='test', pipeline_dict={'pipeline': define_circular_dependency_pipeline}) context = DagsterGraphQLContext( RepositoryContainer(repository=repository), PipelineRunStorage(), execution_manager=SynchronousExecutionManager(), ) result = execute_dagster_graphql( context, '{ pipelinesOrError { ... on InvalidDefinitionError { message } } }') msg = result.data['pipelinesOrError']['message'] assert "Circular reference detected in solid csolid" in msg
def create_app(repository_container, pipeline_runs, use_synchronous_execution_manager=False): app = Flask('dagster-ui') sockets = Sockets(app) app.app_protocol = lambda environ_path_info: 'graphql-ws' schema = create_schema() subscription_server = DagsterSubscriptionServer(schema=schema) if use_synchronous_execution_manager: execution_manager = SynchronousExecutionManager() else: execution_manager = MultiprocessingExecutionManager() context = DagsterGraphQLContext( repository_container=repository_container, pipeline_runs=pipeline_runs, execution_manager=execution_manager, version=__version__, ) app.add_url_rule( '/graphql', 'graphql', DagsterGraphQLView.as_view( 'graphql', schema=schema, graphiql=True, # XXX(freiksenet): Pass proper ws url graphiql_template=PLAYGROUND_TEMPLATE, executor=Executor(), context=context, ), ) sockets.add_url_rule( '/graphql', 'graphql', dagster_graphql_subscription_view(subscription_server, context) ) # these routes are specifically for the Dagit UI and are not part of the graphql # API that we want other people to consume, so they're separate for now. app.add_url_rule('/dagit/notebook', 'notebook', notebook_view) app.add_url_rule('/static/<path:path>/<string:file>', 'static_view', static_view) app.add_url_rule('/<path:_path>', 'index_catchall', index_view) app.add_url_rule('/', 'index', index_view, defaults={'_path': ''}) CORS(app) return app
def define_context(repo_fn, instance=None): return DagsterGraphQLInProcessRepositoryContext( handle=ExecutionTargetHandle.for_repo_fn(repo_fn), instance=instance or DagsterInstance.ephemeral(), execution_manager=SynchronousExecutionManager(), )
def define_context_for_repository_yaml(path, instance=None): return DagsterGraphQLContext( handle=ExecutionTargetHandle.for_repo_yaml(path), instance=instance or DagsterInstance.ephemeral(), execution_manager=SynchronousExecutionManager(), )