class_docstr: Parse a qualified name into different parts.
  
  e.g. listing__ds__week ->
  entity_links: ["listing"]
  element_name: "ds"
  granularity: TimeGranularity.WEEK
class_docstr_tok: ["Parse","a","qualified","name","into","different","parts",".","e.g",".","listing__ds__week","-",">","entity_links",":","[","``","listing","''","]","element_name",":","``","ds","''","granularity",":","TimeGranularity.WEEK"]
docstr: Return the full name form. e.g. ds or listing__ds__month.
  
  If date_part is specified, don't include granularity in qualified_name since it will not impact the result.
docstr_tok: ["Return","the","full","name","form",".","e.g",".","ds","or","listing__ds__month",".","If","date_part","is","specified",",","do","n't","include","granularity","in","qualified_name","since","it","will","not","impact","the","result","."]
code: def qualified_name(self) -> str:
      """Return the full name form. e.g. ds or listing__ds__month.
  
      If date_part is specified, don't include granularity in qualified_name since it will not impact the result.
      """
      items = list(self.entity_link_names) + [self.element_name]
      if self.date_part:
          items.append(self.date_part_suffix(date_part=self.date_part))
      elif self.time_granularity:
          items.append(self.time_granularity.value)
      return DUNDER.join(items)
  
file_path: metricflow/metricflow/naming/linkable_spec_name.py
imports: from __future__ import annotations
  import logging
  from dataclasses import dataclass
  from typing import Optional, Tuple
  from dbt_semantic_interfaces.type_enums.date_part import DatePart
  from dbt_semantic_interfaces.type_enums.time_granularity import TimeGranularity
label_desc: Use image node_id 2 for calling the StructuredLinkableSpecName obj's underlying member method code with example usage: obj.qualified_name() and returns: DUNDER