:py:mod:`wfexs_backend.utils.groovy_parsing`
============================================

.. py:module:: wfexs_backend.utils.groovy_parsing

.. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing
   :allowtitles:

Module Contents
---------------

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`NfProcess <wfexs_backend.utils.groovy_parsing.NfProcess>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfProcess
          :summary:
   * - :py:obj:`NfInclude <wfexs_backend.utils.groovy_parsing.NfInclude>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfInclude
          :summary:
   * - :py:obj:`NfIncludeConfig <wfexs_backend.utils.groovy_parsing.NfIncludeConfig>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfIncludeConfig
          :summary:
   * - :py:obj:`NfWorkflow <wfexs_backend.utils.groovy_parsing.NfWorkflow>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfWorkflow
          :summary:
   * - :py:obj:`NfPlugin <wfexs_backend.utils.groovy_parsing.NfPlugin>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfPlugin
          :summary:

Functions
~~~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`extract_strings <wfexs_backend.utils.groovy_parsing.extract_strings>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_strings
          :summary:
   * - :py:obj:`extract_values_as_pairs <wfexs_backend.utils.groovy_parsing.extract_values_as_pairs>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_values_as_pairs
          :summary:
   * - :py:obj:`extract_nextflow_containers <wfexs_backend.utils.groovy_parsing.extract_nextflow_containers>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_containers
          :summary:
   * - :py:obj:`extract_nextflow_condas <wfexs_backend.utils.groovy_parsing.extract_nextflow_condas>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_condas
          :summary:
   * - :py:obj:`extract_nextflow_templates <wfexs_backend.utils.groovy_parsing.extract_nextflow_templates>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_templates
          :summary:
   * - :py:obj:`extract_process_features <wfexs_backend.utils.groovy_parsing.extract_process_features>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_process_features
          :summary:
   * - :py:obj:`extract_nextflow_process <wfexs_backend.utils.groovy_parsing.extract_nextflow_process>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_process
          :summary:
   * - :py:obj:`extract_nextflow_includes <wfexs_backend.utils.groovy_parsing.extract_nextflow_includes>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_includes
          :summary:
   * - :py:obj:`extract_nextflow_config_includeconfigs <wfexs_backend.utils.groovy_parsing.extract_nextflow_config_includeconfigs>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_config_includeconfigs
          :summary:
   * - :py:obj:`extract_nextflow_workflow <wfexs_backend.utils.groovy_parsing.extract_nextflow_workflow>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_workflow
          :summary:
   * - :py:obj:`extract_nextflow_config_plugins <wfexs_backend.utils.groovy_parsing.extract_nextflow_config_plugins>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_config_plugins
          :summary:
   * - :py:obj:`deep_update <wfexs_backend.utils.groovy_parsing.deep_update>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.deep_update
          :summary:
   * - :py:obj:`extract_nested_assignments <wfexs_backend.utils.groovy_parsing.extract_nested_assignments>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nested_assignments
          :summary:
   * - :py:obj:`extract_nextflow_features <wfexs_backend.utils.groovy_parsing.extract_nextflow_features>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_features
          :summary:
   * - :py:obj:`cached_parse_and_digest_groovy_content <wfexs_backend.utils.groovy_parsing.cached_parse_and_digest_groovy_content>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.cached_parse_and_digest_groovy_content
          :summary:
   * - :py:obj:`analyze_nf_content <wfexs_backend.utils.groovy_parsing.analyze_nf_content>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.analyze_nf_content
          :summary:

Data
~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`ROOT_RULE <wfexs_backend.utils.groovy_parsing.ROOT_RULE>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.ROOT_RULE
          :summary:
   * - :py:obj:`INCLUDE_PROCESS_RULE <wfexs_backend.utils.groovy_parsing.INCLUDE_PROCESS_RULE>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.INCLUDE_PROCESS_RULE
          :summary:
   * - :py:obj:`VAR_RULE <wfexs_backend.utils.groovy_parsing.VAR_RULE>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.VAR_RULE
          :summary:
   * - :py:obj:`IDENTIFIER_RULE <wfexs_backend.utils.groovy_parsing.IDENTIFIER_RULE>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.IDENTIFIER_RULE
          :summary:
   * - :py:obj:`NAME_PART_RULE <wfexs_backend.utils.groovy_parsing.NAME_PART_RULE>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NAME_PART_RULE
          :summary:
   * - :py:obj:`BLOCK_STATEMENTS_RULE <wfexs_backend.utils.groovy_parsing.BLOCK_STATEMENTS_RULE>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.BLOCK_STATEMENTS_RULE
          :summary:
   * - :py:obj:`PATHEXP_RULE <wfexs_backend.utils.groovy_parsing.PATHEXP_RULE>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.PATHEXP_RULE
          :summary:
   * - :py:obj:`PRE_IDENTIFIER_NAME <wfexs_backend.utils.groovy_parsing.PRE_IDENTIFIER_NAME>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.PRE_IDENTIFIER_NAME
          :summary:
   * - :py:obj:`PRE_CLOSURE_NAME <wfexs_backend.utils.groovy_parsing.PRE_CLOSURE_NAME>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.PRE_CLOSURE_NAME
          :summary:
   * - :py:obj:`PROCESS_CHILD <wfexs_backend.utils.groovy_parsing.PROCESS_CHILD>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.PROCESS_CHILD
          :summary:
   * - :py:obj:`INCLUDE_CHILD <wfexs_backend.utils.groovy_parsing.INCLUDE_CHILD>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.INCLUDE_CHILD
          :summary:
   * - :py:obj:`WORKFLOW_CHILD <wfexs_backend.utils.groovy_parsing.WORKFLOW_CHILD>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.WORKFLOW_CHILD
          :summary:
   * - :py:obj:`CONTAINER_CHILD <wfexs_backend.utils.groovy_parsing.CONTAINER_CHILD>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.CONTAINER_CHILD
          :summary:
   * - :py:obj:`CONDA_CHILD <wfexs_backend.utils.groovy_parsing.CONDA_CHILD>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.CONDA_CHILD
          :summary:
   * - :py:obj:`TEMPLATE_CHILD <wfexs_backend.utils.groovy_parsing.TEMPLATE_CHILD>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.TEMPLATE_CHILD
          :summary:
   * - :py:obj:`MANIFEST_CHILD <wfexs_backend.utils.groovy_parsing.MANIFEST_CHILD>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.MANIFEST_CHILD
          :summary:
   * - :py:obj:`INCLUDECONFIG_CHILD <wfexs_backend.utils.groovy_parsing.INCLUDECONFIG_CHILD>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.INCLUDECONFIG_CHILD
          :summary:
   * - :py:obj:`PLUGINS_CHILD <wfexs_backend.utils.groovy_parsing.PLUGINS_CHILD>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.PLUGINS_CHILD
          :summary:
   * - :py:obj:`ID_CHILD <wfexs_backend.utils.groovy_parsing.ID_CHILD>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.ID_CHILD
          :summary:
   * - :py:obj:`COMMON_RULE <wfexs_backend.utils.groovy_parsing.COMMON_RULE>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.COMMON_RULE
          :summary:
   * - :py:obj:`P_RULE <wfexs_backend.utils.groovy_parsing.P_RULE>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.P_RULE
          :summary:
   * - :py:obj:`CLOSURE_RULE <wfexs_backend.utils.groovy_parsing.CLOSURE_RULE>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.CLOSURE_RULE
          :summary:
   * - :py:obj:`W_RULE <wfexs_backend.utils.groovy_parsing.W_RULE>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.W_RULE
          :summary:
   * - :py:obj:`NAMELESS_W_RULE <wfexs_backend.utils.groovy_parsing.NAMELESS_W_RULE>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NAMELESS_W_RULE
          :summary:
   * - :py:obj:`ERROR_PROCESS_NAME <wfexs_backend.utils.groovy_parsing.ERROR_PROCESS_NAME>`
     - .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.ERROR_PROCESS_NAME
          :summary:

API
~~~

.. py:data:: ROOT_RULE
   :canonical: wfexs_backend.utils.groovy_parsing.ROOT_RULE
   :value: ['compilation_unit', 'script_statements']

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.ROOT_RULE

.. py:data:: INCLUDE_PROCESS_RULE
   :canonical: wfexs_backend.utils.groovy_parsing.INCLUDE_PROCESS_RULE
   :value: ['statement', 'statement_expression', 'command_expression']

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.INCLUDE_PROCESS_RULE

.. py:data:: VAR_RULE
   :canonical: wfexs_backend.utils.groovy_parsing.VAR_RULE
   :value: None

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.VAR_RULE

.. py:data:: IDENTIFIER_RULE
   :canonical: wfexs_backend.utils.groovy_parsing.IDENTIFIER_RULE
   :value: ['primary', 'identifier']

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.IDENTIFIER_RULE

.. py:data:: NAME_PART_RULE
   :canonical: wfexs_backend.utils.groovy_parsing.NAME_PART_RULE
   :value: ['name_part', 'identifier']

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NAME_PART_RULE

.. py:data:: BLOCK_STATEMENTS_RULE
   :canonical: wfexs_backend.utils.groovy_parsing.BLOCK_STATEMENTS_RULE
   :value: ['block_statements_opt', 'block_statements']

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.BLOCK_STATEMENTS_RULE

.. py:data:: PATHEXP_RULE
   :canonical: wfexs_backend.utils.groovy_parsing.PATHEXP_RULE
   :value: ['expression', 'postfix_expression', 'path_expression']

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.PATHEXP_RULE

.. py:data:: PRE_IDENTIFIER_NAME
   :canonical: wfexs_backend.utils.groovy_parsing.PRE_IDENTIFIER_NAME
   :value: None

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.PRE_IDENTIFIER_NAME

.. py:data:: PRE_CLOSURE_NAME
   :canonical: wfexs_backend.utils.groovy_parsing.PRE_CLOSURE_NAME
   :value: None

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.PRE_CLOSURE_NAME

.. py:data:: PROCESS_CHILD
   :canonical: wfexs_backend.utils.groovy_parsing.PROCESS_CHILD
   :value: None

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.PROCESS_CHILD

.. py:data:: INCLUDE_CHILD
   :canonical: wfexs_backend.utils.groovy_parsing.INCLUDE_CHILD
   :value: None

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.INCLUDE_CHILD

.. py:data:: WORKFLOW_CHILD
   :canonical: wfexs_backend.utils.groovy_parsing.WORKFLOW_CHILD
   :value: None

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.WORKFLOW_CHILD

.. py:data:: CONTAINER_CHILD
   :canonical: wfexs_backend.utils.groovy_parsing.CONTAINER_CHILD
   :value: None

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.CONTAINER_CHILD

.. py:data:: CONDA_CHILD
   :canonical: wfexs_backend.utils.groovy_parsing.CONDA_CHILD
   :value: None

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.CONDA_CHILD

.. py:data:: TEMPLATE_CHILD
   :canonical: wfexs_backend.utils.groovy_parsing.TEMPLATE_CHILD
   :value: None

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.TEMPLATE_CHILD

.. py:data:: MANIFEST_CHILD
   :canonical: wfexs_backend.utils.groovy_parsing.MANIFEST_CHILD
   :value: None

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.MANIFEST_CHILD

.. py:data:: INCLUDECONFIG_CHILD
   :canonical: wfexs_backend.utils.groovy_parsing.INCLUDECONFIG_CHILD
   :value: None

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.INCLUDECONFIG_CHILD

.. py:data:: PLUGINS_CHILD
   :canonical: wfexs_backend.utils.groovy_parsing.PLUGINS_CHILD
   :value: None

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.PLUGINS_CHILD

.. py:data:: ID_CHILD
   :canonical: wfexs_backend.utils.groovy_parsing.ID_CHILD
   :value: None

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.ID_CHILD

.. py:data:: COMMON_RULE
   :canonical: wfexs_backend.utils.groovy_parsing.COMMON_RULE
   :value: ['argument_list', 'first_argument_list_element', 'expression_list_element', 'expression', 'postfix_e...

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.COMMON_RULE

.. py:data:: P_RULE
   :canonical: wfexs_backend.utils.groovy_parsing.P_RULE
   :value: None

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.P_RULE

.. py:data:: CLOSURE_RULE
   :canonical: wfexs_backend.utils.groovy_parsing.CLOSURE_RULE
   :value: None

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.CLOSURE_RULE

.. py:data:: W_RULE
   :canonical: wfexs_backend.utils.groovy_parsing.W_RULE
   :value: None

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.W_RULE

.. py:data:: NAMELESS_W_RULE
   :canonical: wfexs_backend.utils.groovy_parsing.NAMELESS_W_RULE
   :value: None

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NAMELESS_W_RULE

.. py:function:: extract_strings(node: Union[EmptyNode, LeafNode, RuleNode]) -> Iterator[str]
   :canonical: wfexs_backend.utils.groovy_parsing.extract_strings

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_strings

.. py:function:: extract_values_as_pairs(node: Union[EmptyNode, LeafNode, RuleNode]) -> Iterator[LeafPair]
   :canonical: wfexs_backend.utils.groovy_parsing.extract_values_as_pairs

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_values_as_pairs

.. py:class:: NfProcess
   :canonical: wfexs_backend.utils.groovy_parsing.NfProcess

   Bases: :py:obj:`typing.NamedTuple`

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfProcess

   .. py:attribute:: name
      :canonical: wfexs_backend.utils.groovy_parsing.NfProcess.name
      :type: str
      :value: None

      .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfProcess.name

   .. py:attribute:: containers
      :canonical: wfexs_backend.utils.groovy_parsing.NfProcess.containers
      :type: Sequence[str]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfProcess.containers

   .. py:attribute:: condas
      :canonical: wfexs_backend.utils.groovy_parsing.NfProcess.condas
      :type: Sequence[str]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfProcess.condas

   .. py:attribute:: templates
      :canonical: wfexs_backend.utils.groovy_parsing.NfProcess.templates
      :type: Sequence[str]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfProcess.templates

.. py:function:: extract_nextflow_containers(node: Union[EmptyNode, LeafNode, RuleNode]) -> Iterator[str]
   :canonical: wfexs_backend.utils.groovy_parsing.extract_nextflow_containers

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_containers

.. py:function:: extract_nextflow_condas(node: Union[EmptyNode, LeafNode, RuleNode]) -> Iterator[str]
   :canonical: wfexs_backend.utils.groovy_parsing.extract_nextflow_condas

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_condas

.. py:function:: extract_nextflow_templates(node: Union[EmptyNode, LeafNode, RuleNode]) -> Iterator[str]
   :canonical: wfexs_backend.utils.groovy_parsing.extract_nextflow_templates

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_templates

.. py:function:: extract_process_features(t_tree: groovy_parser.parser.RuleNode) -> Tuple[Sequence[str], Sequence[str], Sequence[str]]
   :canonical: wfexs_backend.utils.groovy_parsing.extract_process_features

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_process_features

.. py:data:: ERROR_PROCESS_NAME
   :canonical: wfexs_backend.utils.groovy_parsing.ERROR_PROCESS_NAME
   :value: '<error>'

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.ERROR_PROCESS_NAME

.. py:function:: extract_nextflow_process(node: groovy_parser.parser.RuleNode) -> wfexs_backend.utils.groovy_parsing.NfProcess
   :canonical: wfexs_backend.utils.groovy_parsing.extract_nextflow_process

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_process

.. py:class:: NfInclude
   :canonical: wfexs_backend.utils.groovy_parsing.NfInclude

   Bases: :py:obj:`typing.NamedTuple`

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfInclude

   .. py:attribute:: path
      :canonical: wfexs_backend.utils.groovy_parsing.NfInclude.path
      :type: str
      :value: None

      .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfInclude.path

.. py:function:: extract_nextflow_includes(node: groovy_parser.parser.RuleNode) -> Sequence[NfInclude]
   :canonical: wfexs_backend.utils.groovy_parsing.extract_nextflow_includes

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_includes

.. py:class:: NfIncludeConfig
   :canonical: wfexs_backend.utils.groovy_parsing.NfIncludeConfig

   Bases: :py:obj:`typing.NamedTuple`

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfIncludeConfig

   .. py:attribute:: path
      :canonical: wfexs_backend.utils.groovy_parsing.NfIncludeConfig.path
      :type: str
      :value: None

      .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfIncludeConfig.path

.. py:function:: extract_nextflow_config_includeconfigs(node: groovy_parser.parser.RuleNode) -> Sequence[NfIncludeConfig]
   :canonical: wfexs_backend.utils.groovy_parsing.extract_nextflow_config_includeconfigs

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_config_includeconfigs

.. py:class:: NfWorkflow
   :canonical: wfexs_backend.utils.groovy_parsing.NfWorkflow

   Bases: :py:obj:`typing.NamedTuple`

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfWorkflow

   .. py:attribute:: name
      :canonical: wfexs_backend.utils.groovy_parsing.NfWorkflow.name
      :type: Optional[str]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfWorkflow.name

.. py:function:: extract_nextflow_workflow(node: groovy_parser.parser.RuleNode) -> wfexs_backend.utils.groovy_parsing.NfWorkflow
   :canonical: wfexs_backend.utils.groovy_parsing.extract_nextflow_workflow

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_workflow

.. py:class:: NfPlugin
   :canonical: wfexs_backend.utils.groovy_parsing.NfPlugin

   Bases: :py:obj:`typing.NamedTuple`

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfPlugin

   .. py:attribute:: label
      :canonical: wfexs_backend.utils.groovy_parsing.NfPlugin.label
      :type: str
      :value: None

      .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.NfPlugin.label

.. py:function:: extract_nextflow_config_plugins(node: groovy_parser.parser.RuleNode) -> Sequence[NfPlugin]
   :canonical: wfexs_backend.utils.groovy_parsing.extract_nextflow_config_plugins

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_config_plugins

.. py:function:: deep_update(mapping: Mapping[KeyType, DeepValType], *updating_mappings: Mapping[KeyType, DeepValType]) -> Mapping[KeyType, DeepValType]
   :canonical: wfexs_backend.utils.groovy_parsing.deep_update

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.deep_update

.. py:function:: extract_nested_assignments(children: Sequence[Union[EmptyNode, LeafNode, RuleNode]], only_names: Sequence[str] = []) -> wfexs_backend.utils.groovy_parsing.ContextAssignments
   :canonical: wfexs_backend.utils.groovy_parsing.extract_nested_assignments

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nested_assignments

.. py:function:: extract_nextflow_features(t_tree: groovy_parser.parser.RuleNode) -> Tuple[Sequence[NfProcess], Sequence[NfInclude], Sequence[NfWorkflow], Sequence[NfIncludeConfig], Sequence[NfPlugin]]
   :canonical: wfexs_backend.utils.groovy_parsing.extract_nextflow_features

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.extract_nextflow_features

.. py:function:: cached_parse_and_digest_groovy_content(content: str, cache_dir: Optional[str] = None) -> Union[RuleNode, LeafNode, EmptyNode]
   :canonical: wfexs_backend.utils.groovy_parsing.cached_parse_and_digest_groovy_content

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.cached_parse_and_digest_groovy_content

.. py:function:: analyze_nf_content(content: str, only_names: Sequence[str] = [], cache_dir: Optional[str] = None) -> Tuple[Union[RuleNode, LeafNode, EmptyNode], Sequence[NfProcess], Sequence[NfInclude], Sequence[NfWorkflow], Sequence[NfIncludeConfig], Sequence[NfPlugin], ContextAssignments]
   :canonical: wfexs_backend.utils.groovy_parsing.analyze_nf_content

   .. autodoc2-docstring:: wfexs_backend.utils.groovy_parsing.analyze_nf_content
