class_docstr: A custom data type, to be paired with an ExtensionArray.
  
  See Also
  --------
  extensions.register_extension_dtype: Register an ExtensionType
      with pandas as class decorator.
  extensions.ExtensionArray: Abstract base class for custom 1-D array types.
  
  Notes
  -----
  The interface includes the following abstract methods that must
  be implemented by subclasses:
  
  * type
  * name
  * construct_array_type
  
  The following attributes and methods influence the behavior of the dtype in
  pandas operations
  
  * _is_numeric
  * _is_boolean
  * _get_common_dtype
  
  The `na_value` class attribute can be used to set the default NA value
  for this type. :attr:`numpy.nan` is used by default.
  
  ExtensionDtypes are required to be hashable. The base class provides
  a default implementation, which relies on the ``_metadata`` class
  attribute. ``_metadata`` should be a tuple containing the strings
  that define your data type. For example, with ``PeriodDtype`` that's
  the ``freq`` attribute.
  
  **If you have a parametrized dtype you should set the ``_metadata``
  class property**.
  
  Ideally, the attributes in ``_metadata`` will match the
  parameters to your ``ExtensionDtype.__init__`` (if any). If any of
  the attributes in ``_metadata`` don't implement the standard
  ``__eq__`` or ``__hash__``, the default implementations here will not
  work.
  
  Examples
  --------
  
  For interaction with Apache Arrow (pyarrow), a ``__from_arrow__`` method
  can be implemented: this method receives a pyarrow Array or ChunkedArray
  as only argument and is expected to return the appropriate pandas
  ExtensionArray for this dtype and the passed values:
  
  >>> import pyarrow
  >>> from pandas.api.extensions import ExtensionArray
  >>> class ExtensionDtype:
  ...     def __from_arrow__(
  ...         self,
  ...         array: pyarrow.Array | pyarrow.ChunkedArray
  ...     ) -> ExtensionArray:
  ...         ...
  
  This class does not inherit from 'abc.ABCMeta' for performance reasons.
  Methods and properties required by the interface raise
  ``pandas.errors.AbstractMethodError`` and no ``register`` method is
  provided for registering virtual subclasses.
class_docstr_tok: ["A","custom","data","type",",","to","be","paired","with","an","ExtensionArray",".","See","Also","--","--","--","--","extensions.register_extension_dtype",":","Register","an","ExtensionType","with","pandas","as","class","decorator",".","extensions.ExtensionArray",":","Abstract","base","class","for","custom","1-D","array","types",".","Notes","--","--","-","The","interface","includes","the","following","abstract","methods","that","must","be","implemented","by","subclasses",":","*","type","*","name","*","construct_array_type","The","following","attributes","and","methods","influence","the","behavior","of","the","dtype","in","pandas","operations","*","_is_numeric","*","_is_boolean","*","_get_common_dtype","The","`","na_value","`","class","attribute","can","be","used","to","set","the","default","NA","value","for","this","type",".",":","attr",":","`","numpy.nan","`","is","used","by","default",".","ExtensionDtypes","are","required","to","be","hashable",".","The","base","class","provides","a","default","implementation",",","which","relies","on","the","``","_metadata","``","class","attribute",".","``","_metadata","``","should","be","a","tuple","containing","the","strings","that","define","your","data","type",".","For","example",",","with","``","PeriodDtype","``","that's","the","``","freq","``","attribute",".","*","*","If","you","have","a","parametrized","dtype","you","should","set","the","``","_metadata","``","class","property","*","*",".","Ideally",",","the","attributes","in","``","_metadata","``","will","match","the","parameters","to","your","``","ExtensionDtype.__init__","``","(","if","any",")",".","If","any","of","the","attributes","in","``","_metadata","``","do","n't","implement","the","standard","``","__eq__","``","or","``","__hash__","``",",","the","default","implementations","here","will","not","work",".","Examples","--","--","--","--","For","interaction","with","Apache","Arrow","(","pyarrow",")",",","a","``","__from_arrow__","``","method","can","be","implemented",":","this","method","receives","a","pyarrow","Array","or","ChunkedArray","as","only","argument","and","is","expected","to","return","the","appropriate","pandas","ExtensionArray","for","this","dtype","and","the","passed","values",":",">",">",">","import","pyarrow",">",">",">","from","pandas.api.extensions","import","ExtensionArray",">",">",">","class","ExtensionDtype",":","...","def","__from_arrow__","(","...","self",",","...","array",":","pyarrow.Array","|","pyarrow.ChunkedArray","...",")","-",">","ExtensionArray",":","...","...","This","class","does","not","inherit","from","'abc.ABCMeta","'","for","performance","reasons",".","Methods","and","properties","required","by","the","interface","raise","``","pandas.errors.AbstractMethodError","``","and","no","``","register","``","method","is","provided","for","registering","virtual","subclasses","."]
docstr: The scalar type for the array, e.g. ``int``
  
  It's expected ``ExtensionArray[item]`` returns an instance
  of ``ExtensionDtype.type`` for scalar ``item``, assuming
  that value is valid (not NA). NA values do not need to be
  instances of `type`.
docstr_tok: ["The","scalar","type","for","the","array",",","e.g",".","``","int","``","It","'s","expected","``","ExtensionArray","[","item","]","``","returns","an","instance","of","``","ExtensionDtype.type","``","for","scalar","``","item","``",",","assuming","that","value","is","valid","(","not","NA",")",".","NA","values","do","not","need","to","be","instances","of","`","type","`","."]
code: def type(self) -> type_t[Any]:
      """
      The scalar type for the array, e.g. ``int``
  
      It's expected ``ExtensionArray[item]`` returns an instance
      of ``ExtensionDtype.type`` for scalar ``item``, assuming
      that value is valid (not NA). NA values do not need to be
      instances of `type`.
      """
      raise AbstractMethodError(self)
  
imports: from __future__ import annotations
  from typing import TYPE_CHECKING, Any, TypeVar, cast, overload
  import numpy
  from pandas._libs import missing
  from pandas._libs.hashtable import object_hash
  from pandas._libs.properties import cache_readonly
  from pandas.errors import AbstractMethodError
  from pandas.core.dtypes.generic import ABCDataFrame, ABCIndex, ABCSeries
label_desc: Use image node_id 6 for calling the ExtensionDtype obj's underlying member method code with example usage: obj.type() without return types