runway.cfngin.lookups.handlers.output module

AWS CloudFormation Output lookup.

class runway.cfngin.lookups.handlers.output.OutputQuery[source]

Bases: NamedTuple

Output query NamedTuple.

stack_name: str

Alias for field number 0

output_name: str

Alias for field number 1

static __new__(_cls, stack_name: str, output_name: str)

Create new instance of OutputQuery(stack_name, output_name)

count(value, /)

Return number of occurrences of value.

index(value, start=0, stop=9223372036854775807, /)

Return first index of value.

Raises ValueError if the value is not present.

class runway.cfngin.lookups.handlers.output.OutputLookup[source]

Bases: runway.lookups.handlers.base.LookupHandler

AWS CloudFormation Output lookup.

TYPE_NAME: Final[typing_extensions.Literal[output]] = 'output'

Name that the Lookup is registered as.

classmethod legacy_parse(value: str) Tuple[runway.cfngin.lookups.handlers.output.OutputQuery, Dict[str, str]][source]

Retain support for legacy lookup syntax.

Format of value:


classmethod handle(value: str, context: runway.context.CfnginContext, **_: Any) str[source]

Fetch an output from the designated stack.

  • value – Parameter(s) given to this lookup. <relative-stack-name>.<OutputName>

  • context – Context instance.


Output from the specified stack.

classmethod dependencies(lookup_query: VariableValue) Set[str][source]

Calculate any dependencies required to perform this lookup.

Note that lookup_query may not be (completely) resolved at this time.


lookup_query – Parameter(s) given to this lookup.


Stack names this lookup depends on.

classmethod format_results(value: Any, get: Optional[str] = None, load: Optional[str] = None, transform: Optional[typing_extensions.Literal[bool, str]] = None, **kwargs: Any) Any

Format results to be returned by a lookup.

  • value – Data collected by the Lookup.

  • get – Nested value to get from a dictionary like object.

  • load – Parser to use to parse a formatted string before the get and transform method.

  • transform – Convert the final value to a different data type before returning it.


TypeError – If get is provided but the value value is not a dictionary like object.

Runs the following actions in order:

  1. load() if load is provided.

  2. runway.util.MutableMap.find() or dict.get() depending on the data type if get is provided.

  3. Convert null value string to NoneType object. This includes string values of “None” and “null”. This conversion is case insensitive.

  4. transform() if transform is provided.

classmethod load(value: Any, parser: Optional[str] = None, **kwargs: Any) Any

Load a formatted string or object into a python data type.

First action taken in format_results(). If a lookup needs to handling loading data to process it before it enters format_results(), is should use args.pop('load') to prevent the data from being loaded twice.

  • value – What is being loaded.

  • parser – Name of the parser to use.


The loaded value.

classmethod parse(value: str) Tuple[str, Dict[str, str]]

Parse the value passed to a lookup in a standardized way.


value – The raw value passed to a lookup.


The lookup query and a dict of arguments

classmethod transform(value: Any, *, to_type: Optional[typing_extensions.Literal[bool, str]] = 'str', **kwargs: Any) Any

Transform the result of a lookup into another datatype.

Last action taken in format_results(). If a lookup needs to handling transforming the data in a way that the base class can’t support it should overwrite this method of the base class to register different transform methods.

  • value – What is to be transformed.

  • to_type – The type the value will be transformed into.


The transformed value.

runway.cfngin.lookups.handlers.output.deconstruct(value: str) runway.cfngin.lookups.handlers.output.OutputQuery[source]

Deconstruct the value.