def is_extension_array_dtype(arr_or_dtype):
dtype = getattr(arr_or_dtype, '<STR_LIT>', arr_or_dtype)<EOL>return (isinstance(dtype, ExtensionDtype) or<EOL>registry.find(dtype) is not None)<EOL>
Check if an object is a pandas extension array type.

See the :ref:`Use Guide <extending.extension-types>` for more.

Parameters
----------
arr_or_dtype : object
    For array-like input, the ``.dtype`` attribute will
    be extracted.

Returns
-------
bool
    Whether the `arr_or_dtype` is an extension array type.

Notes
-----
This checks whether an object implements the pandas extension
array interface. In pandas, this includes:

* Categorical
* Sparse
* Interval
* Period
* DatetimeArray
* TimedeltaArray

Third-party libraries may implement arrays or types satisfying
this interface as well.

Examples
--------
>>> from pandas.api.types import is_extension_array_dtype
>>> arr = pd.Categorical(['a', 'b'])
>>> is_extension_array_dtype(arr)
True
>>> is_extension_array_dtype(arr.dtype)
True

>>> arr = np.array(['a', 'b'])
>>> is_extension_array_dtype(arr.dtype)
False