REF: implement _shared_docs to de-circularize dependencies
A side effect of this is that a bunch of pd.concat imports can be done at import-time instead of at runtime, will do this in a separate pass.
nice idea - can you merge master? master merged; are the mypy complaints here real or ignorable? Not sure on first glance; haven’t seen that before. @simonjayhawkins any idea?

Sent from my iPad

> On Jun 18, 2020, at 6:02 PM, jbrockmendel <notifications@github.com> wrote:
> 
> ﻿
> master merged; are the mypy complaints here real or ignorable?
> 
> —
> You are receiving this because you commented.
> Reply to this email directly, view it on GitHub, or unsubscribe.
 This is weird...

with the change

```
        if isinstance(objs, (ABCSeries, ABCDataFrame, str)):
            raise TypeError(
                "first argument must be an iterable of pandas "
                f'objects, you passed an object of type "{type(objs).__name__}"'
            )
```
it appears mypy assumes \_\_init__ always raises and does not process the rest of \_\_init__ and the attributes are not defined.

This doesn't seem right. maybe mypy bug with combination of objs, ABCSeries and ABCDataFrame being Any.

adding type annotation for obj seems to fix.

 can you merge master again. I think this module as `shared_docs.py` is fine as we are going to move core to _core anyhow. > I think this module as shared_docs.py is fine as we are going to move core to _core anyhow.

updated+green ex merge conflict this lgtm great. you might want to create an issue and mark as good first so folks can move shared docs to the new location.