Repository: mlflow/mlflow

Issue:
[BUG] mlflow resets the global warning filter as a module import side-effect

### System information
- **Have I written custom code (as opposed to using a stock example script provided in MLflow)**: no
- **OS Platform and Distribution (e.g., Linux Ubuntu 16.04)**: linux Ubuntu -- Python 3.7.3
- **MLflow installed from (source or binary)**: source
- **MLflow version (run ``mlflow --version``)**: 1.2.0
- **Python version**: 3.7.3

### Describe the problem
I've encountered some unexpected behaviour when using mlflow and pytest together. It looks like warning filters do not behave as expected: warnings which should be surpressed are not.

Here is the response from the pytest devs when they looked into the [issue](https://github.com/pytest-dev/pytest/issues/6417):

> `mlflow` does a naughty thing and [resets the global warning filter as a module import side-effect](https://github.com/mlflow/mlflow/blob/c6be0a4472f41d2e78bd4c73ef2126a63bbd0c86/mlflow/__init__.py#L39)
> 
> there isn't really much `pytest` can do here to prevent/fix that -- I suggest creating [an issue on mlflow to stop doing that](https://github.com/mlflow/mlflow/issues)
> 
> _Originally posted by @asottile in https://github.com/pytest-dev/pytest/issues/6417#issuecomment-572580955_


### Code to reproduce issue
Here's a minimal example. 
pytest.ini:
```
[pytest]
filterwarnings =
    ignore::DeprecationWarning
```

And a simple test test_foo.py:
```python

import mlflow     # This seems to "break" the filterwarnings
import nbconvert  # An example lib that raises two DeprecationWarnings

def test_bar():
    assert True

```

When I run `pytest`, the warnings are not filtered out as they should be:
```
============ test session starts ==================
platform linux -- Python 3.7.3, pytest-5.3.0, py-1.8.0, pluggy-0.12.0
rootdir: /hpcdata/a_username/foo, inifile: pytest.ini
plugins: arraydiff-0.3, doctestplus-0.3.0, openfiles-0.4.0, remotedata-0.3.1, pyfakefs-3.6.1
collected 1 item                                                                                                                                                                                         

test_foo.py .                                                                                                                                                                                      [100%]

============== warnings summary ==================
/....lib/python3.7/site-packages/nbformat/notebooknode.py:4
  /.../lib/python3.7/site-packages/nbformat/notebooknode.py:4: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
    from collections import Mapping

/.../lib/python3.7/site-packages/jinja2/utils.py:485
  /.../lib/python3.7/site-packages/jinja2/utils.py:485: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
    from collections import MutableMapping

-- Docs: https://docs.pytest.org/en/latest/warnings.html
============ 1 passed, 2 warnings in 2.64s ============
```

### Other info / logs
Output of pip list:
<details>

```
Package                            Version   
---------------------------------- ----------
alabaster                          0.7.12    
alembic                            1.1.0     
anaconda-client                    1.7.2     
anaconda-project                   0.8.3     
asn1crypto                         0.24.0    
astroid                            2.2.5     
astropy                            3.2.1     
atomicwrites                       1.3.0     
attrs                              19.1.0    
Babel                              2.7.0     
backcall                           0.1.0     
backports.os                       0.1.1     
backports.shutil-get-terminal-size 1.0.0     
bcrypt                             3.1.7     
beautifulsoup4                     4.8.0     
bitarray                           1.0.1     
bkcharts                           0.2       
bleach                             3.1.0     
bokeh                              1.3.4     
boto                               2.49.0    
Bottleneck                         1.2.1     
certifi                            2019.11.28
cffi                               1.12.3    
chardet                            3.0.4     
Click                              7.0       
cloudpickle                        1.2.1     
clyent                             1.2.2     
colorama                           0.4.1     
configparser                       3.8.1     
contextlib2                        0.5.5     
cryptography                       2.7       
cycler                             0.10.0    
Cython                             0.29.13   
cytoolz                            0.10.0    
dask                               2.2.0     
dask-jobqueue                      0.6.3     
databricks-cli                     0.8.7     
decorator                          4.4.0     
defusedxml                         0.5.0     
distributed                        2.2.0     
docker                             4.0.2     
docrep                             0.2.7     
docutils                           0.15.2    
entrypoints                        0.3       
et-xmlfile                         1.0.1     
fastcache                          1.1.0     
filelock                           3.0.10    
Flask                              1.1.1     
fsspec                             0.4.1     
gevent                             1.4.0     
gitdb2                             2.0.5     
GitPython                          3.0.2     
glob2                              0.7       
gmpy2                              2.1.0b1   
gorilla                            0.3.0     
graphviz                           0.12      
greenlet                           0.4.15    
gunicorn                           19.9.0    
h5py                               2.9.0     
heapdict                           1.0.0     
holoviews                          1.12.4    
html5lib                           1.0.1     
idna                               2.8       
imageio                            2.5.0     
imagesize                          1.1.0     
importlib-metadata                 0.18      
ipydatawidgets                     4.0.1     
ipykernel                          5.1.2     
ipympl                             0.3.3     
ipyscales                          0.3.0     
ipython                            7.7.0     
ipython-genutils                   0.2.0     
ipyvolume                          0.5.2     
ipywebrtc                          0.5.0     
ipywidgets                         7.5.1     
isort                              4.3.21    
itsdangerous                       1.1.0     
jdcal                              1.4.1     
jedi                               0.14.1    
jeepney                            0.4       
Jinja2                             2.10.1    
joblib                             0.13.2    
json5                              0.8.5     
jsonschema                         3.0.2     
jupyter-client                     5.3.1     
jupyter-console                    6.0.0     
jupyter-core                       4.4.0     
jupyterlab                         1.0.4     
jupyterlab-server                  1.0.0     
keyring                            19.0.2    
kiwisolver                         1.1.0     
lasio                              0.24.1    
lazy-object-proxy                  1.4.1     
libarchive-c                       2.8       
lief                               0.9.0     
llvmlite                           0.29.0    
locket                             0.2.0     
lxml                               4.4.0     
Mako                               1.1.0     
Markdown                           3.1.1     
MarkupSafe                         1.1.1     
matplotlib                         3.1.1     
mccabe                             0.6.1     
mistune                            0.8.4     
mkl-fft                            1.0.14    
mkl-random                         1.0.4     
mkl-service                        2.1.0     
mlflow                             1.2.0     
mock                               3.0.5     
more-itertools                     7.2.0     
mpmath                             1.1.0     
msgpack                            0.6.1     
multipledispatch                   0.6.0     
mysql-connector-python             8.0.18    
nbconvert                          5.6.0     
nbformat                           4.4.0     
networkx                           2.3       
nltk                               3.4.4     
nose                               1.3.7     
notebook                           6.0.0     
numba                              0.45.1    
numexpr                            2.6.9     
numpy                              1.16.4    
numpydoc                           0.9.1     
olefile                            0.46      
openpyxl                           2.6.2     
packaging                          19.0      
pandas                             0.25.0    
pandocfilters                      1.4.2     
panel                              0.6.2     
param                              1.9.1     
paramiko                           2.6.0     
parso                              0.5.1     
partd                              1.0.0     
path.py                            12.0.1    
pathlib2                           2.3.4     
patsy                              0.5.1     
pep8                               1.7.1     
pexpect                            4.7.0     
pickleshare                        0.7.5     
Pillow                             6.1.0     
pip                                19.2.1    
pkginfo                            1.5.0.1   
plotly                             4.1.1     
pluggy                             0.12.0    
ply                                3.11      
prometheus-client                  0.7.1     
prompt-toolkit                     2.0.9     
protobuf                           3.11.1    
psutil                             5.6.3     
PTable                             0.9.2     
ptyprocess                         0.6.0     
py                                 1.8.0     
pycodestyle                        2.5.0     
pycosat                            0.6.3     
pycparser                          2.19      
pycrypto                           2.6.1     
pyct                               0.4.6     
pycurl                             7.43.0.2  
pyfakefs                           3.6.1     
pyflakes                           2.1.1     
Pygments                           2.4.2     
pylint                             2.3.1     
PyNaCl                             1.3.0     
pyodbc                             4.0.27    
pyOpenSSL                          19.0.0    
pyparsing                          2.4.2     
pyproj                             2.2.1     
pyrsistent                         0.15.4    
PySocks                            1.7.0     
pytest                             5.3.0     
pytest-arraydiff                   0.3       
pytest-astropy                     0.5.0     
pytest-doctestplus                 0.3.0     
pytest-openfiles                   0.4.0     
pytest-remotedata                  0.3.1     
python-dateutil                    2.8.0     
python-editor                      1.0.4     
python-pptx                        0.6.18    
pythreejs                          2.1.1     
pytz                               2019.2    
pyviz-comms                        0.7.2     
PyWavelets                         1.0.3     
PyYAML                             5.1.2     
pyzmq                              18.0.2    
qgrid                              1.1.1     
QtAwesome                          0.6.0     
qtconsole                          4.5.2     
QtPy                               1.9.0     
querystring-parser                 1.2.4     
requests                           2.22.0    
retrying                           1.3.3     
rope                               0.14.0    
ruamel-yaml                        0.15.71   
scikit-image                       0.15.0    
scikit-learn                       0.21.3    
scipy                              1.3.0     
seaborn                            0.9.0     
SecretStorage                      3.1.1     
Send2Trash                         1.5.0     
setuptools                         41.0.1    
simplegeneric                      0.8.1     
simplejson                         3.16.0    
singledispatch                     3.4.0.3   
six                                1.12.0    
smmap2                             2.0.5     
snowballstemmer                    1.9.0     
sortedcollections                  1.1.2     
sortedcontainers                   2.1.0     
soupsieve                          1.9.2     
Sphinx                             2.1.2     
sphinxcontrib-applehelp            1.0.1     
sphinxcontrib-devhelp              1.0.1     
sphinxcontrib-htmlhelp             1.0.2     
sphinxcontrib-jsmath               1.0.1     
sphinxcontrib-qthelp               1.0.2     
sphinxcontrib-serializinghtml      1.1.1     
sphinxcontrib-websupport           1.1.2     
spyder                             3.3.6     
spyder-kernels                     0.5.1     
SQLAlchemy                         1.3.6     
sqlparse                           0.3.0     
sshtunnel                          0.1.5     
statsmodels                        0.10.1    
sympy                              1.4       
tables                             3.5.2     
tabulate                           0.8.3     
tblib                              1.4.0     
terminado                          0.8.2     
testpath                           0.4.2     
toolz                              0.10.0    
tornado                            6.0.3     
tqdm                               4.33.0    
traitlets                          4.3.2     
traittypes                         0.2.1     
unicodecsv                         0.14.1    
urllib3                            1.25.3    
wcwidth                            0.1.7     
webencodings                       0.5.1     
websocket-client                   0.56.0    
Werkzeug                           0.15.5    
wheel                              0.33.4    
widgetsnbextension                 3.5.1     
wrapt                              1.11.2    
wurlitzer                          1.0.3     
xlrd                               1.2.0     
XlsxWriter                         1.1.8     
xlwt                               1.3.0     
zict                               1.0.0     
zipp                               0.5.2     
zmapio                             0.3       
```
</details>



Discussion:
@Connossor makes sense, we'd welcome a contribution to fix this issue

Resolving patch:
diff --git a/mlflow/__init__.py b/mlflow/__init__.py
--- a/mlflow/__init__.py
+++ b/mlflow/__init__.py
@@ -41,8 +41,6 @@
 
 warnings.filterwarnings("ignore", message="numpy.dtype size changed")  # noqa: E402
 warnings.filterwarnings("ignore", message="numpy.ufunc size changed")  # noqa: E402
-# log a deprecated warning only once per function per module
-warnings.filterwarnings("module", category=DeprecationWarning)
 
 import mlflow.projects as projects  # noqa: E402
 import mlflow.tracking as tracking  # noqa: E402


Test patch: