REF: move SparseDtype, ArrowDtype to dtypes.dtypes
- [ ] closes #xxxx (Replace xxxx with the GitHub issue number)
- [ ] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [ ] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [ ] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [ ] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.

Yes. Without this we raise at import time bc of circularity

On Tue, May 9, 2023 at 10:45 AM Matthew Roeschke ***@***.***>
wrote:

> ***@***.**** commented on this pull request.
> ------------------------------
>
> In pandas/util/__init__.py
> <https://github.com/pandas-dev/pandas/pull/53116#discussion_r1188939656>:
>
> > @@ -1,11 +1,25 @@
> -# pyright: reportUnusedImport = false
> -from pandas.util._decorators import (  # noqa: F401
> -    Appender,
> -    Substitution,
> -    cache_readonly,
> -)
> -
> -from pandas.core.util.hashing import (  # noqa: F401
> -    hash_array,
> -    hash_pandas_object,
> -)
> +def __getattr__(key: str):
>
> Are these changes related to this PR?
>
> —
> Reply to this email directly, view it on GitHub
> <https://github.com/pandas-dev/pandas/pull/53116#pullrequestreview-1419158994>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/AB5UM6B6EB6DE66CNDWQZBDXFJ7CVANCNFSM6AAAAAAXXVJH6M>
> .
> You are receiving this because you authored the thread.Message ID:
> ***@***.***>
>
 Thanks @jbrockmendel 