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 entity prefix. e.g. listing__ds__month -> listing.
docstr_tok: ["Return","the","entity","prefix",".","e.g",".","listing__ds__month","-",">","listing","."]
code: def entity_prefix(self) -> Optional[str]:
      """Return the entity prefix. e.g. listing__ds__month -> listing."""
      if len(self.entity_link_names) > 0:
          return DUNDER.join(self.entity_link_names)
  
      return None
  
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 3 for calling the StructuredLinkableSpecName obj's underlying member method code with example usage: obj.entity_prefix() and returns: None, DUNDER