CLN: Deduplicate show_versions
State: closed

Closes #26814 

The old version had special cases for numpy, scipy, and pytz. All those now provide a standard `__version__`. xlrd and xlwt are the only special ones now (`__version__`)

I messed up the minimum xlwt version in the last PR. I copied openpyxl's rather than xlwt's. That's now fixed.


I prettied up the output format a bit, to align the version numbers. Hope that 's OK.

```
INSTALLED VERSIONS
------------------
commit           : cbc6edf8bfad33c8bc698a3d035b593d921b0112
python           : 3.7.3.final.0
python-bits      : 64
OS               : Darwin
OS-release       : 18.6.0
machine          : x86_64
processor        : i386
byteorder        : little
LC_ALL           : None
LANG             : en_US.UTF-8
LOCALE           : en_US.UTF-8

pandas           : 0.25.0.dev0+729.gcbc6edf8b
pytest           : 4.6.2
pip              : 19.1.1
setuptools       : 41.0.1
Cython           : 0.29.10
numpy            : 1.17.0.dev0+5b06588
scipy            : 1.3.0
pyarrow          : 0.13.0
xarray           : 0.12.1
IPython          : 7.5.0
sphinx           : 1.8.5
patsy            : 0.5.1
dateutil         : 2.7.3
pytz             : 2018.5
blosc            : 1.5.1
bottleneck       : 1.2.1
tables           : 3.5.1
numexpr          : 2.6.8
feather          : 0.4.0
matplotlib       : 3.1.0
openpyxl         : 2.5.11
xlrd             : 1.1.0
xlwt             : 1.3.0
xlsxwriter       : 1.1.2
lxml.etree       : 4.2.5
bs4              : 4.7.1
html5lib         : 1.0.1
sqlalchemy       : 1.2.14
pymysql          : 0.9.2
psycopg2         : 2.7.6.1 (dt dec pq3 ext lo64)
jinja2           : 2.10.1
s3fs             : 0.1.6
fastparquet      : None
pandas_gbq       : 0.10.0
pandas_datareader: None
gcsfs            : 0.1.2

```

Labels:
name: CI
description: Continuous Integration
name: Dependencies
description: Required and optional dependencies

Comments:
formatting looks nice!
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/26816?src=pr&el=h1) Report
> Merging [#26816](https://codecov.io/gh/pandas-dev/pandas/pull/26816?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/cfd65e98e694b2ad40e97d06ffdd9096a3dea909?src=pr&el=desc) will **decrease** coverage by `<.01%`.
> The diff coverage is `27.77%`.

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

```diff
@@            Coverage Diff             @@
##           master   #26816      +/-   ##
==========================================
- Coverage   91.87%   91.86%   -0.01%     
==========================================
  Files         180      180              
  Lines       50746    50748       +2     
==========================================
- Hits        46623    46622       -1     
- Misses       4123     4126       +3
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `90.46% <27.77%> (ø)` | :arrow_up: |
| #single | `41.12% <27.77%> (-0.07%)` | :arrow_down: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/26816?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/compat/\_optional.py](https://codecov.io/gh/pandas-dev/pandas/pull/26816/diff?src=pr&el=tree#diff-cGFuZGFzL2NvbXBhdC9fb3B0aW9uYWwucHk=) | `100% <ø> (ø)` | :arrow_up: |
| [pandas/util/\_test\_decorators.py](https://codecov.io/gh/pandas-dev/pandas/pull/26816/diff?src=pr&el=tree#diff-cGFuZGFzL3V0aWwvX3Rlc3RfZGVjb3JhdG9ycy5weQ==) | `93.84% <100%> (+0.19%)` | :arrow_up: |
| [pandas/io/pytables.py](https://codecov.io/gh/pandas-dev/pandas/pull/26816/diff?src=pr&el=tree#diff-cGFuZGFzL2lvL3B5dGFibGVzLnB5) | `90.29% <100%> (ø)` | :arrow_up: |
| [pandas/util/\_print\_versions.py](https://codecov.io/gh/pandas-dev/pandas/pull/26816/diff?src=pr&el=tree#diff-cGFuZGFzL3V0aWwvX3ByaW50X3ZlcnNpb25zLnB5) | `15.71% <7.14%> (ø)` | :arrow_up: |
| [pandas/io/gbq.py](https://codecov.io/gh/pandas-dev/pandas/pull/26816/diff?src=pr&el=tree#diff-cGFuZGFzL2lvL2dicS5weQ==) | `88.88% <0%> (-11.12%)` | :arrow_down: |
| [pandas/core/frame.py](https://codecov.io/gh/pandas-dev/pandas/pull/26816/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZnJhbWUucHk=) | `96.89% <0%> (-0.12%)` | :arrow_down: |
| [pandas/util/testing.py](https://codecov.io/gh/pandas-dev/pandas/pull/26816/diff?src=pr&el=tree#diff-cGFuZGFzL3V0aWwvdGVzdGluZy5weQ==) | `90.94% <0%> (+0.1%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/26816?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/26816?src=pr&el=footer). Last update [cfd65e9...e384c40](https://codecov.io/gh/pandas-dev/pandas/pull/26816?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

Got a bit carried away here, sorry. 

1. Fixed xlwt version in the docs / VERSIONS
2. Updated pytables to use the new way, added to docs / VERSIONS
3. Added a test decorator for skipping if a library is installed
4. Deduplicate show_versions (the intent of this PR).

updated output:

```

INSTALLED VERSIONS
------------------
commit           : a8e0c2dff540ceada75fec07c6ccd4e6f0e79039
python           : 3.7.3.final.0
python-bits      : 64
OS               : Darwin
OS-release       : 18.6.0
machine          : x86_64
processor        : i386
byteorder        : little
LC_ALL           : None
LANG             : en_US.UTF-8
LOCALE           : en_US.UTF-8

pandas           : 0.25.0.dev0+730.ga8e0c2dff.dirty
numpy            : 1.17.0.dev0+5b06588
pytz             : 2018.5
dateutil         : 2.7.3
pip              : 19.1.1
setuptools       : 41.0.1
Cython           : 0.29.10
pytest           : 4.6.2
hypothesis       : 3.59.1
sphinx           : 1.8.5
blosc            : 1.5.1
feather          : 0.4.0
xlsxwriter       : 1.1.2
lxml.etree       : 4.2.5
html5lib         : 1.0.1
pymysql          : 0.9.2
psycopg2         : 2.7.6.1 (dt dec pq3 ext lo64)
jinja2           : 2.10.1
IPython          : 7.5.0
pandas_datareader: None
bs4              : 4.7.1
bottleneck       : 1.2.1
fastparquet      : None
gcsfs            : 0.1.2
matplotlib       : 3.1.0
numexpr          : 2.6.8
openpyxl         : 2.5.11
pandas_gbq       : 0.10.0
pyarrow          : 0.13.0
tables           : 3.5.2
s3fs             : 0.1.6
scipy            : 1.3.0
sqlalchemy       : 1.2.14
xarray           : 0.12.1
xlrd             : 1.1.0
xlwt             : 1.3.0
```
I messed up in the previous PR. That was openpyxl's min version.

On Wed, Jun 12, 2019 at 3:52 PM gfyoung <notifications@github.com> wrote:

> *@gfyoung* commented on this pull request.
> ------------------------------
>
> In pandas/compat/_optional.py
> <https://github.com/pandas-dev/pandas/pull/26816#discussion_r293112317>:
>
> >      "s3fs": "0.0.8",
>      "scipy": "0.19.0",
>      "sqlalchemy": "1.1.4",
>      "xarray": "0.8.2",
>      "xlrd": "1.0.0",
> -    "xlwt": "2.4.0",
> +    "xlwt": "1.0.0",
>
> Why is this being downgraded?
>
> —
> You are receiving this because you authored the thread.
> Reply to this email directly, view it on GitHub
> <https://github.com/pandas-dev/pandas/pull/26816?email_source=notifications&email_token=AAKAOITCRUVDRB35ZWRRICLP2FOXNA5CNFSM4HXPCCTKYY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOB3LZ4FY#pullrequestreview-249011735>,
> or mute the thread
> <https://github.com/notifications/unsubscribe-auth/AAKAOIW33LL7I2P3I6KJEXTP2FOXNANCNFSM4HXPCCTA>
> .
>

lgtm. merge on green.
Apologies for the force push.

I've given up on my `missing_dependency` fixture. Split that off to https://github.com/pandas-dev/pandas/issues/26902.
> IIRC this had a lot more changes (meaning this actually did the de-duplication of show_versions)

Sorry, that de-duplication is restored now.
thanks @TomAugspurger very nice!