class DauphinDaemonStatus(dauphin.ObjectType): class Meta: name = "DaemonStatus" daemonType = dauphin.NonNull("DaemonType") required = dauphin.NonNull(dauphin.Boolean) healthy = dauphin.Boolean() lastHeartbeatTime = dauphin.Float() def __init__(self, daemon_status): check.inst_param(daemon_status, "daemon_status", DaemonStatus) if daemon_status.last_heartbeat is None: last_heartbeat_time = None else: last_heartbeat_time = datetime_as_float( daemon_status.last_heartbeat.timestamp) super(DauphinDaemonStatus, self).__init__( daemonType=daemon_status.daemon_type, required=daemon_status.required, healthy=daemon_status.healthy, lastHeartbeatTime=last_heartbeat_time, )
class DauphinDaemonStatus(dauphin.ObjectType): class Meta: name = "DaemonStatus" daemonType = dauphin.NonNull("DaemonType") required = dauphin.NonNull(dauphin.Boolean) healthy = dauphin.Boolean() lastHeartbeatTime = dauphin.Float() lastHeartbeatErrors = dauphin.non_null_list("PythonError") def __init__(self, daemon_status): check.inst_param(daemon_status, "daemon_status", DaemonStatus) super(DauphinDaemonStatus, self).__init__( daemonType=daemon_status.daemon_type, required=daemon_status.required, healthy=daemon_status.healthy, lastHeartbeatTime=daemon_status.last_heartbeat.timestamp if daemon_status.last_heartbeat else None, lastHeartbeatErrors=[ DauphinPythonError(error) for error in daemon_status.last_heartbeat.errors ] if daemon_status.last_heartbeat else [], )
class DauphinPartitionSet(dauphin.ObjectType): class Meta: name = "PartitionSet" id = dauphin.NonNull(dauphin.ID) name = dauphin.NonNull(dauphin.String) pipeline_name = dauphin.NonNull(dauphin.String) solid_selection = dauphin.List(dauphin.NonNull(dauphin.String)) mode = dauphin.NonNull(dauphin.String) partitionsOrError = dauphin.Field( dauphin.NonNull("PartitionsOrError"), cursor=dauphin.String(), limit=dauphin.Int(), reverse=dauphin.Boolean(), ) partition = dauphin.Field("Partition", partition_name=dauphin.NonNull(dauphin.String)) partitionStatusesOrError = dauphin.NonNull("PartitionStatusesOrError") def __init__(self, external_repository_handle, external_partition_set): self._external_repository_handle = check.inst_param( external_repository_handle, "external_respository_handle", RepositoryHandle) self._external_partition_set = check.inst_param( external_partition_set, "external_partition_set", ExternalPartitionSet) super(DauphinPartitionSet, self).__init__( name=external_partition_set.name, pipeline_name=external_partition_set.pipeline_name, solid_selection=external_partition_set.solid_selection, mode=external_partition_set.mode, ) def resolve_id(self, _graphene_info): return self._external_partition_set.get_external_origin_id() def resolve_partitionsOrError(self, graphene_info, **kwargs): return get_partitions( graphene_info, self._external_repository_handle, self._external_partition_set, cursor=kwargs.get("cursor"), limit=kwargs.get("limit"), reverse=kwargs.get("reverse"), ) def resolve_partition(self, graphene_info, partition_name): return get_partition_by_name( graphene_info, self._external_repository_handle, self._external_partition_set, partition_name, ) def resolve_partitionStatusesOrError(self, graphene_info): return get_partition_set_partition_statuses( graphene_info, self._external_repository_handle, self._external_partition_set.name)
class DauphinPartitionBackfillParams(dauphin.InputObjectType): class Meta(object): name = "PartitionBackfillParams" selector = dauphin.NonNull("PartitionSetSelector") partitionNames = dauphin.non_null_list(dauphin.String) reexecutionSteps = dauphin.List(dauphin.NonNull(dauphin.String)) fromFailure = dauphin.Boolean()
class DauphinPartitionSet(dauphin.ObjectType): class Meta(object): name = 'PartitionSet' name = dauphin.NonNull(dauphin.String) pipeline_name = dauphin.NonNull(dauphin.String) solid_selection = dauphin.List(dauphin.NonNull(dauphin.String)) mode = dauphin.NonNull(dauphin.String) partitions = dauphin.Field( dauphin.NonNull('Partitions'), cursor=dauphin.String(), limit=dauphin.Int(), reverse=dauphin.Boolean(), ) partition = dauphin.Field('Partition', partition_name=dauphin.NonNull(dauphin.String)) def __init__(self, external_repository_handle, external_partition_set): self._external_repository_handle = check.inst_param( external_repository_handle, 'external_respository_handle', RepositoryHandle) self._external_partition_set = check.inst_param( external_partition_set, 'external_partition_set', ExternalPartitionSet) super(DauphinPartitionSet, self).__init__( name=external_partition_set.name, pipeline_name=external_partition_set.pipeline_name, solid_selection=external_partition_set.solid_selection, mode=external_partition_set.mode, ) def resolve_partitions(self, graphene_info, **kwargs): return get_partitions( graphene_info, self._external_repository_handle, self._external_partition_set, cursor=kwargs.get("cursor"), limit=kwargs.get("limit"), reverse=kwargs.get('reverse'), ) def resolve_partition(self, graphene_info, partition_name): return get_partition_by_name( graphene_info, self._external_repository_handle, self._external_partition_set, partition_name, )
class DauphinOutputDefinition(dauphin.ObjectType): class Meta: name = "OutputDefinition" solid_definition = dauphin.NonNull("SolidDefinition") name = dauphin.NonNull(dauphin.String) description = dauphin.String() is_dynamic = dauphin.Boolean() type = dauphin.NonNull("DagsterType") def __init__(self, represented_pipeline, solid_def_name, output_def_name, is_dynamic): self._represented_pipeline = check.inst_param(represented_pipeline, "represented_pipeline", RepresentedPipeline) check.str_param(solid_def_name, "solid_def_name") check.str_param(output_def_name, "output_def_name") self._solid_def_snap = represented_pipeline.get_solid_def_snap( solid_def_name) self._output_def_snap = self._solid_def_snap.get_output_snap( output_def_name) super(DauphinOutputDefinition, self).__init__( name=self._output_def_snap.name, description=self._output_def_snap.description, is_dynamic=is_dynamic, ) def resolve_type(self, _): return to_dauphin_dagster_type( self._represented_pipeline.pipeline_snapshot, self._output_def_snap.dagster_type_key, ) def resolve_solid_definition(self, _): return build_dauphin_solid_definition(self._represented_pipeline, self._solid_def_snap.name)
class DauphinPartitionSet(dauphin.ObjectType): class Meta(object): name = 'PartitionSet' name = dauphin.NonNull(dauphin.String) pipeline_name = dauphin.NonNull(dauphin.String) solid_selection = dauphin.List(dauphin.NonNull(dauphin.String)) mode = dauphin.NonNull(dauphin.String) partitions = dauphin.Field( dauphin.NonNull('Partitions'), cursor=dauphin.String(), limit=dauphin.Int(), reverse=dauphin.Boolean(), ) def __init__(self, partition_set_def, external_partition_set): self._partition_set_def = check.inst_param(partition_set_def, 'partition_set_def', PartitionSetDefinition) self._external_partition_set = check.inst_param( external_partition_set, 'external_partition_set', ExternalPartitionSet) super(DauphinPartitionSet, self).__init__( name=external_partition_set.name, pipeline_name=external_partition_set.pipeline_name, solid_selection=external_partition_set.solid_selection, mode=external_partition_set.mode, ) def resolve_partitions(self, graphene_info, **kwargs): partition_names = self._external_partition_set.partition_names cursor = kwargs.get("cursor") limit = kwargs.get("limit") reverse = kwargs.get('reverse') start = 0 end = len(partition_names) index = 0 if cursor: index = next( (idx for (idx, partition_name) in enumerate(partition_names) if partition_name == cursor), None, ) if reverse: end = index else: start = index + 1 if limit: if reverse: start = end - limit else: end = start + limit partition_names = partition_names[start:end] return graphene_info.schema.type_named('Partitions')(results=[ graphene_info.schema.type_named('Partition')( partition_name=partition_name, partition_set_def=self._partition_set_def, external_partition_set=self._external_partition_set, ) for partition_name in partition_names ])
class DauphinQuery(dauphin.ObjectType): class Meta(object): name = 'Query' version = dauphin.NonNull(dauphin.String) repositoriesOrError = dauphin.NonNull('RepositoriesOrError') repositoryOrError = dauphin.Field( dauphin.NonNull('RepositoryOrError'), repositorySelector=dauphin.NonNull('RepositorySelector'), ) pipelineOrError = dauphin.Field(dauphin.NonNull('PipelineOrError'), params=dauphin.NonNull('PipelineSelector')) pipelineSnapshotOrError = dauphin.Field( dauphin.NonNull('PipelineSnapshotOrError'), snapshotId=dauphin.String(), activePipelineSelector=dauphin.Argument('PipelineSelector'), ) scheduler = dauphin.Field(dauphin.NonNull('SchedulerOrError')) scheduleDefinitionOrError = dauphin.Field( dauphin.NonNull('ScheduleDefinitionOrError'), schedule_selector=dauphin.NonNull('ScheduleSelector'), ) scheduleDefinitionsOrError = dauphin.Field( dauphin.NonNull('ScheduleDefinitionsOrError'), repositorySelector=dauphin.NonNull('RepositorySelector'), ) scheduleStatesOrError = dauphin.Field( dauphin.NonNull('ScheduleStatesOrError'), repositorySelector=dauphin.NonNull('RepositorySelector'), withNoScheduleDefinition=dauphin.Boolean(), ) partitionSetsOrError = dauphin.Field( dauphin.NonNull('PartitionSetsOrError'), repositorySelector=dauphin.NonNull('RepositorySelector'), pipelineName=dauphin.NonNull(dauphin.String), ) partitionSetOrError = dauphin.Field( dauphin.NonNull('PartitionSetOrError'), repositorySelector=dauphin.NonNull('RepositorySelector'), partitionSetName=dauphin.String(), ) pipelineRunsOrError = dauphin.Field( dauphin.NonNull('PipelineRunsOrError'), filter=dauphin.Argument('PipelineRunsFilter'), cursor=dauphin.String(), limit=dauphin.Int(), ) pipelineRunOrError = dauphin.Field(dauphin.NonNull('PipelineRunOrError'), runId=dauphin.NonNull(dauphin.ID)) pipelineRunTags = dauphin.non_null_list('PipelineTagAndValues') runGroupOrError = dauphin.Field(dauphin.NonNull('RunGroupOrError'), runId=dauphin.NonNull(dauphin.ID)) runGroupsOrError = dauphin.Field( dauphin.NonNull('RunGroupsOrError'), filter=dauphin.Argument('PipelineRunsFilter'), cursor=dauphin.String(), limit=dauphin.Int(), ) isPipelineConfigValid = dauphin.Field( dauphin.NonNull('PipelineConfigValidationResult'), args={ 'pipeline': dauphin.Argument(dauphin.NonNull('PipelineSelector')), 'runConfigData': dauphin.Argument('RunConfigData'), 'mode': dauphin.Argument(dauphin.NonNull(dauphin.String)), }, ) executionPlanOrError = dauphin.Field( dauphin.NonNull('ExecutionPlanOrError'), args={ 'pipeline': dauphin.Argument(dauphin.NonNull('PipelineSelector')), 'runConfigData': dauphin.Argument('RunConfigData'), 'mode': dauphin.Argument(dauphin.NonNull(dauphin.String)), }, ) runConfigSchemaOrError = dauphin.Field( dauphin.NonNull('RunConfigSchemaOrError'), args={ 'selector': dauphin.Argument(dauphin.NonNull('PipelineSelector')), 'mode': dauphin.Argument(dauphin.String), }, description= '''Fetch an environment schema given an execution selection and a mode. See the descripton on RunConfigSchema for more information.''', ) instance = dauphin.NonNull('Instance') assetsOrError = dauphin.Field(dauphin.NonNull('AssetsOrError')) assetOrError = dauphin.Field( dauphin.NonNull('AssetOrError'), assetKey=dauphin.Argument(dauphin.NonNull('AssetKeyInput')), ) def resolve_repositoriesOrError(self, graphene_info): return fetch_repositories(graphene_info) def resolve_repositoryOrError(self, graphene_info, **kwargs): return fetch_repository( graphene_info, RepositorySelector.from_graphql_input( kwargs.get('repositorySelector')), ) def resolve_pipelineSnapshotOrError(self, graphene_info, **kwargs): snapshot_id_arg = kwargs.get('snapshotId') pipeline_selector_arg = kwargs.get('activePipelineSelector') check.invariant( not (snapshot_id_arg and pipeline_selector_arg), 'Must only pass one of snapshotId or activePipelineSelector', ) check.invariant( snapshot_id_arg or pipeline_selector_arg, 'Must set one of snapshotId or activePipelineSelector', ) if pipeline_selector_arg: pipeline_selector = pipeline_selector_from_graphql( graphene_info.context, kwargs['activePipelineSelector']) return get_pipeline_snapshot_or_error_from_pipeline_selector( graphene_info, pipeline_selector) else: return get_pipeline_snapshot_or_error_from_snapshot_id( graphene_info, snapshot_id_arg) def resolve_version(self, graphene_info): return graphene_info.context.version def resolve_scheduler(self, graphene_info): return get_scheduler_or_error(graphene_info) def resolve_scheduleDefinitionOrError(self, graphene_info, schedule_selector): return get_schedule_definition_or_error( graphene_info, ScheduleSelector.from_graphql_input(schedule_selector)) def resolve_scheduleDefinitionsOrError(self, graphene_info, **kwargs): return get_schedule_definitions_or_error( graphene_info, RepositorySelector.from_graphql_input( kwargs.get('repositorySelector'))) def resolve_scheduleStatesOrError(self, graphene_info, **kwargs): return get_schedule_states_or_error( graphene_info, RepositorySelector.from_graphql_input( kwargs.get('repositorySelector')), kwargs.get('withNoScheduleDefinition'), ) def resolve_pipelineOrError(self, graphene_info, **kwargs): return get_pipeline_or_error( graphene_info, pipeline_selector_from_graphql(graphene_info.context, kwargs['params']), ) def resolve_pipelineRunsOrError(self, graphene_info, **kwargs): filters = kwargs.get('filter') if filters is not None: filters = filters.to_selector() return graphene_info.schema.type_named('PipelineRuns')( results=get_runs(graphene_info, filters, kwargs.get('cursor'), kwargs.get('limit'))) def resolve_pipelineRunOrError(self, graphene_info, runId): return get_run_by_id(graphene_info, runId) def resolve_runGroupsOrError(self, graphene_info, **kwargs): filters = kwargs.get('filter') if filters is not None: filters = filters.to_selector() return graphene_info.schema.type_named('RunGroupsOrError')( results=get_run_groups(graphene_info, filters, kwargs.get( 'cursor'), kwargs.get('limit'))) def resolve_partitionSetsOrError(self, graphene_info, **kwargs): return get_partition_sets_or_error( graphene_info, RepositorySelector.from_graphql_input( kwargs.get('repositorySelector')), kwargs.get('pipelineName'), ) def resolve_partitionSetOrError(self, graphene_info, **kwargs): return get_partition_set( graphene_info, RepositorySelector.from_graphql_input( kwargs.get('repositorySelector')), kwargs.get('partitionSetName'), ) def resolve_pipelineRunTags(self, graphene_info): return get_run_tags(graphene_info) def resolve_runGroupOrError(self, graphene_info, runId): return get_run_group(graphene_info, runId) def resolve_isPipelineConfigValid(self, graphene_info, pipeline, **kwargs): return validate_pipeline_config( graphene_info, pipeline_selector_from_graphql(graphene_info.context, pipeline), kwargs.get('runConfigData'), kwargs.get('mode'), ) def resolve_executionPlanOrError(self, graphene_info, pipeline, **kwargs): return get_execution_plan( graphene_info, pipeline_selector_from_graphql(graphene_info.context, pipeline), kwargs.get('runConfigData'), kwargs.get('mode'), ) def resolve_runConfigSchemaOrError(self, graphene_info, **kwargs): return resolve_run_config_schema_or_error( graphene_info, pipeline_selector_from_graphql(graphene_info.context, kwargs['selector']), kwargs.get('mode'), ) def resolve_instance(self, graphene_info): return graphene_info.schema.type_named('Instance')( graphene_info.context.instance) def resolve_assetsOrError(self, graphene_info): return get_assets(graphene_info) def resolve_assetOrError(self, graphene_info, **kwargs): return get_asset(graphene_info, AssetKey.from_graphql_input(kwargs['assetKey']))
class DauphinQuery(dauphin.ObjectType): class Meta(object): name = "Query" version = dauphin.NonNull(dauphin.String) repositoriesOrError = dauphin.NonNull("RepositoriesOrError") repositoryOrError = dauphin.Field( dauphin.NonNull("RepositoryOrError"), repositorySelector=dauphin.NonNull("RepositorySelector"), ) pipelineOrError = dauphin.Field(dauphin.NonNull("PipelineOrError"), params=dauphin.NonNull("PipelineSelector")) pipelineSnapshotOrError = dauphin.Field( dauphin.NonNull("PipelineSnapshotOrError"), snapshotId=dauphin.String(), activePipelineSelector=dauphin.Argument("PipelineSelector"), ) scheduler = dauphin.Field(dauphin.NonNull("SchedulerOrError")) scheduleDefinitionOrError = dauphin.Field( dauphin.NonNull("ScheduleDefinitionOrError"), schedule_selector=dauphin.NonNull("ScheduleSelector"), ) scheduleDefinitionsOrError = dauphin.Field( dauphin.NonNull("ScheduleDefinitionsOrError"), repositorySelector=dauphin.NonNull("RepositorySelector"), ) scheduleStatesOrError = dauphin.Field( dauphin.NonNull("ScheduleStatesOrError"), repositorySelector=dauphin.Argument("RepositorySelector"), withNoScheduleDefinition=dauphin.Boolean(), ) partitionSetsOrError = dauphin.Field( dauphin.NonNull("PartitionSetsOrError"), repositorySelector=dauphin.NonNull("RepositorySelector"), pipelineName=dauphin.NonNull(dauphin.String), ) partitionSetOrError = dauphin.Field( dauphin.NonNull("PartitionSetOrError"), repositorySelector=dauphin.NonNull("RepositorySelector"), partitionSetName=dauphin.String(), ) pipelineRunsOrError = dauphin.Field( dauphin.NonNull("PipelineRunsOrError"), filter=dauphin.Argument("PipelineRunsFilter"), cursor=dauphin.String(), limit=dauphin.Int(), ) pipelineRunOrError = dauphin.Field(dauphin.NonNull("PipelineRunOrError"), runId=dauphin.NonNull(dauphin.ID)) pipelineRunTags = dauphin.non_null_list("PipelineTagAndValues") runGroupOrError = dauphin.Field(dauphin.NonNull("RunGroupOrError"), runId=dauphin.NonNull(dauphin.ID)) runGroupsOrError = dauphin.Field( dauphin.NonNull("RunGroupsOrError"), filter=dauphin.Argument("PipelineRunsFilter"), cursor=dauphin.String(), limit=dauphin.Int(), ) isPipelineConfigValid = dauphin.Field( dauphin.NonNull("PipelineConfigValidationResult"), args={ "pipeline": dauphin.Argument(dauphin.NonNull("PipelineSelector")), "runConfigData": dauphin.Argument("RunConfigData"), "mode": dauphin.Argument(dauphin.NonNull(dauphin.String)), }, ) executionPlanOrError = dauphin.Field( dauphin.NonNull("ExecutionPlanOrError"), args={ "pipeline": dauphin.Argument(dauphin.NonNull("PipelineSelector")), "runConfigData": dauphin.Argument("RunConfigData"), "mode": dauphin.Argument(dauphin.NonNull(dauphin.String)), }, ) runConfigSchemaOrError = dauphin.Field( dauphin.NonNull("RunConfigSchemaOrError"), args={ "selector": dauphin.Argument(dauphin.NonNull("PipelineSelector")), "mode": dauphin.Argument(dauphin.String), }, description= """Fetch an environment schema given an execution selection and a mode. See the descripton on RunConfigSchema for more information.""", ) instance = dauphin.NonNull("Instance") assetsOrError = dauphin.Field(dauphin.NonNull("AssetsOrError")) assetOrError = dauphin.Field( dauphin.NonNull("AssetOrError"), assetKey=dauphin.Argument(dauphin.NonNull("AssetKeyInput")), ) def resolve_repositoriesOrError(self, graphene_info): return fetch_repositories(graphene_info) def resolve_repositoryOrError(self, graphene_info, **kwargs): return fetch_repository( graphene_info, RepositorySelector.from_graphql_input( kwargs.get("repositorySelector")), ) def resolve_pipelineSnapshotOrError(self, graphene_info, **kwargs): snapshot_id_arg = kwargs.get("snapshotId") pipeline_selector_arg = kwargs.get("activePipelineSelector") check.invariant( not (snapshot_id_arg and pipeline_selector_arg), "Must only pass one of snapshotId or activePipelineSelector", ) check.invariant( snapshot_id_arg or pipeline_selector_arg, "Must set one of snapshotId or activePipelineSelector", ) if pipeline_selector_arg: pipeline_selector = pipeline_selector_from_graphql( graphene_info.context, kwargs["activePipelineSelector"]) return get_pipeline_snapshot_or_error_from_pipeline_selector( graphene_info, pipeline_selector) else: return get_pipeline_snapshot_or_error_from_snapshot_id( graphene_info, snapshot_id_arg) def resolve_version(self, graphene_info): return graphene_info.context.version def resolve_scheduler(self, graphene_info): return get_scheduler_or_error(graphene_info) def resolve_scheduleDefinitionOrError(self, graphene_info, schedule_selector): return get_schedule_definition_or_error( graphene_info, ScheduleSelector.from_graphql_input(schedule_selector)) def resolve_scheduleDefinitionsOrError(self, graphene_info, **kwargs): return get_schedule_definitions_or_error( graphene_info, RepositorySelector.from_graphql_input( kwargs.get("repositorySelector"))) def resolve_scheduleStatesOrError(self, graphene_info, **kwargs): return get_schedule_states_or_error( graphene_info, RepositorySelector.from_graphql_input(kwargs["repositorySelector"]) if kwargs.get("repositorySelector") else None, kwargs.get("withNoScheduleDefinition"), ) def resolve_pipelineOrError(self, graphene_info, **kwargs): return get_pipeline_or_error( graphene_info, pipeline_selector_from_graphql(graphene_info.context, kwargs["params"]), ) def resolve_pipelineRunsOrError(self, graphene_info, **kwargs): filters = kwargs.get("filter") if filters is not None: filters = filters.to_selector() return graphene_info.schema.type_named("PipelineRuns")( results=get_runs(graphene_info, filters, kwargs.get("cursor"), kwargs.get("limit"))) def resolve_pipelineRunOrError(self, graphene_info, runId): return get_run_by_id(graphene_info, runId) def resolve_runGroupsOrError(self, graphene_info, **kwargs): filters = kwargs.get("filter") if filters is not None: filters = filters.to_selector() return graphene_info.schema.type_named("RunGroupsOrError")( results=get_run_groups(graphene_info, filters, kwargs.get( "cursor"), kwargs.get("limit"))) def resolve_partitionSetsOrError(self, graphene_info, **kwargs): return get_partition_sets_or_error( graphene_info, RepositorySelector.from_graphql_input( kwargs.get("repositorySelector")), kwargs.get("pipelineName"), ) def resolve_partitionSetOrError(self, graphene_info, **kwargs): return get_partition_set( graphene_info, RepositorySelector.from_graphql_input( kwargs.get("repositorySelector")), kwargs.get("partitionSetName"), ) def resolve_pipelineRunTags(self, graphene_info): return get_run_tags(graphene_info) def resolve_runGroupOrError(self, graphene_info, runId): return get_run_group(graphene_info, runId) def resolve_isPipelineConfigValid(self, graphene_info, pipeline, **kwargs): return validate_pipeline_config( graphene_info, pipeline_selector_from_graphql(graphene_info.context, pipeline), kwargs.get("runConfigData"), kwargs.get("mode"), ) def resolve_executionPlanOrError(self, graphene_info, pipeline, **kwargs): return get_execution_plan( graphene_info, pipeline_selector_from_graphql(graphene_info.context, pipeline), kwargs.get("runConfigData"), kwargs.get("mode"), ) def resolve_runConfigSchemaOrError(self, graphene_info, **kwargs): return resolve_run_config_schema_or_error( graphene_info, pipeline_selector_from_graphql(graphene_info.context, kwargs["selector"]), kwargs.get("mode"), ) def resolve_instance(self, graphene_info): return graphene_info.schema.type_named("Instance")( graphene_info.context.instance) def resolve_assetsOrError(self, graphene_info): return get_assets(graphene_info) def resolve_assetOrError(self, graphene_info, **kwargs): return get_asset(graphene_info, AssetKey.from_graphql_input(kwargs["assetKey"]))