Hi, Today I was trying to upgrade Airflow to 1.10.0 and it appears that there are some version conflicts with click and flask-login. I uncovered these because I use Pipenv to manage our project's dependencies. You can see here that Flask-AppBuilder pins click==6.7 and flask-login>=0.3,<0.5
https://github.com/dpgaspar/Flask-AppBuilder/blob/master/setup.py#L37-L47 I'm able to force pipenv to install click==6.7 because that is not pinned in Airflow's setup.py, but I can do nothing about flask-login because Airflow pins the flask-login version: https://github.com/apache/incubator-airflow/blob/master/setup.py#L304 This prevents me from being able to upgrade to 1.10.0. *Pipenv's Graphed project dependencies (conflicts highlighted):* apache-airflow==1.10.0 - alembic [required: >=0.8.3,<0.9, installed: 0.8.10] - Mako [required: Any, installed: 1.0.7] - MarkupSafe [required: >=0.9.2, installed: 1.0] - python-editor [required: >=0.3, installed: 1.0.3] - SQLAlchemy [required: >=0.7.6, installed: 1.2.12] - bleach [required: ==2.1.2, installed: 2.1.2] - html5lib [required: >=0.99999999pre,!=1.0b8,!=1.0b7,!=1.0b6,!=1.0b5,!=1.0b4,!=1.0b3,!=1.0b2,!=1.0b1, installed: 1.0.1] - six [required: >=1.9, installed: 1.11.0] - webencodings [required: Any, installed: 0.5.1] - six [required: Any, installed: 1.11.0] - configparser [required: >=3.5.0,<3.6.0, installed: 3.5.0] - croniter [required: >=0.3.17,<0.4, installed: 0.3.25] - python-dateutil [required: Any, installed: 2.7.3] - six [required: >=1.5, installed: 1.11.0] - dill [required: >=0.2.2,<0.3, installed: 0.2.8.2] - flask [required: >=0.12.4,<0.13, installed: 0.12.4] - click [required: >=2.0, installed: 7.0] - itsdangerous [required: >=0.21, installed: 0.24] - Jinja2 [required: >=2.4, installed: 2.8.1] - MarkupSafe [required: Any, installed: 1.0] - Werkzeug [required: >=0.7, installed: 0.14.1] - flask-admin [required: ==1.4.1, installed: 1.4.1] - Flask [required: >=0.7, installed: 0.12.4] - click [required: >=2.0, installed: 7.0] - itsdangerous [required: >=0.21, installed: 0.24] - Jinja2 [required: >=2.4, installed: 2.8.1] - MarkupSafe [required: Any, installed: 1.0] - Werkzeug [required: >=0.7, installed: 0.14.1] - wtforms [required: Any, installed: 2.2.1] - flask-appbuilder [required: >=1.11.1,<2.0.0, installed: 1.12.0] - click [required: ==6.7, installed: 7.0] - colorama [required: ==0.3.9, installed: 0.3.9] - Flask [required: >=0.10.0,<0.12.99, installed: 0.12.4] - click [required: >=2.0, installed: 7.0] - itsdangerous [required: >=0.21, installed: 0.24] - Jinja2 [required: >=2.4, installed: 2.8.1] - MarkupSafe [required: Any, installed: 1.0] - Werkzeug [required: >=0.7, installed: 0.14.1] - Flask-Babel [required: ==0.11.1, installed: 0.11.1] - Babel [required: >=2.3, installed: 2.6.0] - pytz [required: >=0a, installed: 2018.5] - Flask [required: Any, installed: 0.12.4] - click [required: >=2.0, installed: 7.0] - itsdangerous [required: >=0.21, installed: 0.24] - Jinja2 [required: >=2.4, installed: 2.8.1] - MarkupSafe [required: Any, installed: 1.0] - Werkzeug [required: >=0.7, installed: 0.14.1] - Jinja2 [required: >=2.5, installed: 2.8.1] - MarkupSafe [required: Any, installed: 1.0] - Flask-Login [required: >=0.3,<0.5, installed: 0.2.11] - Flask [required: Any, installed: 0.12.4] - click [required: >=2.0, installed: 7.0] - itsdangerous [required: >=0.21, installed: 0.24] - Jinja2 [required: >=2.4, installed: 2.8.1] - MarkupSafe [required: Any, installed: 1.0] - Werkzeug [required: >=0.7, installed: 0.14.1] - Flask-OpenID [required: ==1.2.5, installed: 1.2.5] - Flask [required: >=0.10.1, installed: 0.12.4] - click [required: >=2.0, installed: 7.0] - itsdangerous [required: >=0.21, installed: 0.24] - Jinja2 [required: >=2.4, installed: 2.8.1] - MarkupSafe [required: Any, installed: 1.0] - Werkzeug [required: >=0.7, installed: 0.14.1] - python3-openid [required: >=2.0, installed: 3.1.0] - defusedxml [required: Any, installed: 0.5.0] - Flask-SQLAlchemy [required: ==2.1, installed: 2.1] - Flask [required: >=0.10, installed: 0.12.4] - click [required: >=2.0, installed: 7.0] - itsdangerous [required: >=0.21, installed: 0.24] - Jinja2 [required: >=2.4, installed: 2.8.1] - MarkupSafe [required: Any, installed: 1.0] - Werkzeug [required: >=0.7, installed: 0.14.1] - SQLAlchemy [required: >=0.7, installed: 1.2.12] - Flask-WTF [required: ==0.14.2, installed: 0.14.2] - Flask [required: Any, installed: 0.12.4] - click [required: >=2.0, installed: 7.0] - itsdangerous [required: >=0.21, installed: 0.24] - Jinja2 [required: >=2.4, installed: 2.8.1] - MarkupSafe [required: Any, installed: 1.0] - Werkzeug [required: >=0.7, installed: 0.14.1] - WTForms [required: Any, installed: 2.2.1] - python-dateutil [required: >=2.3,<3, installed: 2.7.3] - six [required: >=1.5, installed: 1.11.0] - flask-caching [required: >=1.3.3,<1.4.0, installed: 1.3.3] - Flask [required: Any, installed: 0.12.4] - click [required: >=2.0, installed: 7.0] - itsdangerous [required: >=0.21, installed: 0.24] - Jinja2 [required: >=2.4, installed: 2.8.1] - MarkupSafe [required: Any, installed: 1.0] - Werkzeug [required: >=0.7, installed: 0.14.1] - Werkzeug [required: >=0.12, installed: 0.14.1] - flask-login [required: ==0.2.11, installed: 0.2.11] - Flask [required: Any, installed: 0.12.4] - click [required: >=2.0, installed: 7.0] - itsdangerous [required: >=0.21, installed: 0.24] - Jinja2 [required: >=2.4, installed: 2.8.1] - MarkupSafe [required: Any, installed: 1.0] - Werkzeug [required: >=0.7, installed: 0.14.1] - flask-swagger [required: ==0.2.13, installed: 0.2.13] - Flask [required: >=0.10, installed: 0.12.4] - click [required: >=2.0, installed: 7.0] - itsdangerous [required: >=0.21, installed: 0.24] - Jinja2 [required: >=2.4, installed: 2.8.1] - MarkupSafe [required: Any, installed: 1.0] - Werkzeug [required: >=0.7, installed: 0.14.1] - PyYAML [required: >=3.0, installed: 3.13] - flask-wtf [required: >=0.14.2,<0.15, installed: 0.14.2] - Flask [required: Any, installed: 0.12.4] - click [required: >=2.0, installed: 7.0] - itsdangerous [required: >=0.21, installed: 0.24] - Jinja2 [required: >=2.4, installed: 2.8.1] - MarkupSafe [required: Any, installed: 1.0] - Werkzeug [required: >=0.7, installed: 0.14.1] - WTForms [required: Any, installed: 2.2.1] - funcsigs [required: ==1.0.0, installed: 1.0.0] - ordereddict [required: Any, installed: 1.1] - future [required: >=0.16.0,<0.17, installed: 0.16.0] - gitpython [required: >=2.0.2, installed: 2.1.11] - gitdb2 [required: >=2.0.0, installed: 2.0.4] - smmap2 [required: >=2.0.0, installed: 2.0.4] - gunicorn [required: >=19.4.0,<20.0, installed: 19.9.0] - iso8601 [required: >=0.1.12, installed: 0.1.12] - jinja2 [required: >=2.7.3,<2.9.0, installed: 2.8.1] - MarkupSafe [required: Any, installed: 1.0] - lxml [required: >=3.6.0,<4.0, installed: 3.8.0] - markdown [required: >=2.5.2,<3.0, installed: 2.6.11] - pandas [required: >=0.17.1,<1.0.0, installed: 0.23.4] - numpy [required: >=1.9.0, installed: 1.15.2] - python-dateutil [required: >=2.5.0, installed: 2.7.3] - six [required: >=1.5, installed: 1.11.0] - pytz [required: >=2011k, installed: 2018.5] - pendulum [required: ==1.4.4, installed: 1.4.4] - python-dateutil [required: >=2.6.0.0,<3.0.0.0, installed: 2.7.3] - six [required: >=1.5, installed: 1.11.0] - pytzdata [required: >=2018.3.0.0, installed: 2018.5] - tzlocal [required: >=1.5.0.0,<2.0.0.0, installed: 1.5.1] - pytz [required: Any, installed: 2018.5] - psutil [required: >=4.2.0,<5.0.0, installed: 4.4.2] - pygments [required: >=2.0.1,<3.0, installed: 2.2.0] - python-daemon [required: >=2.1.1,<2.2, installed: 2.1.2] - docutils [required: Any, installed: 0.14] - lockfile [required: >=0.10, installed: 0.12.2] - setuptools [required: Any, installed: 40.4.3] - python-dateutil [required: >=2.3,<3, installed: 2.7.3] - six [required: >=1.5, installed: 1.11.0] - python-nvd3 [required: ==0.15.0, installed: 0.15.0] - Jinja2 [required: >=2.8, installed: 2.8.1] - MarkupSafe [required: Any, installed: 1.0] - python-slugify [required: >=1.2.5, installed: 1.2.6] - Unidecode [required: >=0.04.16, installed: 1.0.22] - requests [required: >=2.5.1,<3, installed: 2.19.1] - certifi [required: >=2017.4.17, installed: 2018.8.24] - chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4] - idna [required: >=2.5,<2.8, installed: 2.7] - urllib3 [required: >=1.21.1,<1.24, installed: 1.23] - setproctitle [required: >=1.1.8,<2, installed: 1.1.10] - sqlalchemy [required: >=1.1.15,<1.2.0, installed: 1.2.12] - tabulate [required: >=0.7.5,<0.8.0, installed: 0.7.7] - tenacity [required: ==4.8.0, installed: 4.8.0] - monotonic [required: >=0.6, installed: 1.5] - six [required: >=1.9.0, installed: 1.11.0] - thrift [required: >=0.9.2, installed: 0.11.0] - six [required: >=1.7.2, installed: 1.11.0] - tzlocal [required: >=1.4, installed: 1.5.1] - pytz [required: Any, installed: 2018.5] - unicodecsv [required: >=0.14.1, installed: 0.14.1] - werkzeug [required: >=0.14.1,<0.15.0, installed: 0.14.1] - zope.deprecation [required: >=4.0,<5.0, installed: 4.3.0] - setuptools [required: Any, installed: 40.4.3] -- Kyle Hamlin