Public API for extension arrays / types.
State: closed

**API Changes**

Adds

* pandas.integer_array
* pandas.period_array
* pandas.IntervalArray
* pandas.CategoricalDtype
* pandas.api.extensions.IntergerArray
* pandas.api.extensions.PeriodDtype
* pandas.api.extensions.PeriodArray
* pandas.api.extensions.IntervalDtype
* pandas.api.extensions.DatetimeTZDtype

And adds documentation for those.

The organizing principle here is "what's useful to users." `integer_array` is useful to users, so it's in the top-level, while `IntegerArray` isn't so useful on it's own, so it's in `api.extensions`. `IntervalArray` is useful, so it's at the top-level.

Closes https://github.com/pandas-dev/pandas/issues/22860

Labels:
name: Docs
name: ExtensionArray
description: Extending pandas with custom dtypes or arrays.

Comments:
Hello @TomAugspurger! Thanks for submitting the PR.

 - There are no PEP8 issues in the file [`pandas/api/extensions/__init__.py`](https://github.com/TomAugspurger/pandas/blob/2e492bc8292bdd4105e72d757453210c7a499d69/pandas/api/extensions/__init__.py) !

 - There are no PEP8 issues in the file [`pandas/core/api.py`](https://github.com/TomAugspurger/pandas/blob/2e492bc8292bdd4105e72d757453210c7a499d69/pandas/core/api.py) !

 - There are no PEP8 issues in the file [`pandas/core/arrays/categorical.py`](https://github.com/TomAugspurger/pandas/blob/2e492bc8292bdd4105e72d757453210c7a499d69/pandas/core/arrays/categorical.py) !

 - There are no PEP8 issues in the file [`pandas/core/arrays/interval.py`](https://github.com/TomAugspurger/pandas/blob/2e492bc8292bdd4105e72d757453210c7a499d69/pandas/core/arrays/interval.py) !

 - There are no PEP8 issues in the file [`pandas/core/arrays/period.py`](https://github.com/TomAugspurger/pandas/blob/2e492bc8292bdd4105e72d757453210c7a499d69/pandas/core/arrays/period.py) !

 - There are no PEP8 issues in the file [`pandas/tests/api/test_api.py`](https://github.com/TomAugspurger/pandas/blob/2e492bc8292bdd4105e72d757453210c7a499d69/pandas/tests/api/test_api.py) !


# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/23532?src=pr&el=h1) Report
> Merging [#23532](https://codecov.io/gh/pandas-dev/pandas/pull/23532?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/6bf6cd2fe991f4f57e045e1f28a9dff860b72b37?src=pr&el=desc) will **increase** coverage by `<.01%`.
> The diff coverage is `100%`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/23532/graphs/tree.svg?width=650&token=eZ4WkYLtcO&height=150&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/23532?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master   #23532      +/-   ##
==========================================
+ Coverage   92.25%   92.25%   +<.01%     
==========================================
  Files         161      161              
  Lines       51186    51189       +3     
==========================================
+ Hits        47222    47225       +3     
  Misses       3964     3964
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `90.64% <100%> (ø)` | :arrow_up: |
| #single | `42.28% <80%> (ø)` | :arrow_up: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/23532?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/core/arrays/interval.py](https://codecov.io/gh/pandas-dev/pandas/pull/23532/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvYXJyYXlzL2ludGVydmFsLnB5) | `93.02% <ø> (ø)` | :arrow_up: |
| [pandas/core/arrays/categorical.py](https://codecov.io/gh/pandas-dev/pandas/pull/23532/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvYXJyYXlzL2NhdGVnb3JpY2FsLnB5) | `95.21% <ø> (ø)` | :arrow_up: |
| [pandas/core/arrays/period.py](https://codecov.io/gh/pandas-dev/pandas/pull/23532/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvYXJyYXlzL3BlcmlvZC5weQ==) | `98.08% <100%> (ø)` | :arrow_up: |
| [pandas/core/api.py](https://codecov.io/gh/pandas-dev/pandas/pull/23532/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvYXBpLnB5) | `100% <100%> (ø)` | :arrow_up: |
| [pandas/api/extensions/\_\_init\_\_.py](https://codecov.io/gh/pandas-dev/pandas/pull/23532/diff?src=pr&el=tree#diff-cGFuZGFzL2FwaS9leHRlbnNpb25zL19faW5pdF9fLnB5) | `100% <100%> (ø)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/23532?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/23532?src=pr&el=footer). Last update [6bf6cd2...2e492bc](https://codecov.io/gh/pandas-dev/pandas/pull/23532?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

This is being superseded by #23581.