# Sudden failures for the same commit despite no changes in the list of installed packages

**URL:** <https://travis-ci.community/t/sudden-failures-for-the-same-commit-despite-no-changes-in-the-list-of-installed-packages/9436>\
**Category:** Python\
**Created:** [July 24, 2020, 10:40pm UTC](https://travis-ci.community/t/sudden-failures-for-the-same-commit-despite-no-changes-in-the-list-of-installed-packages/9436 "2020-07-24T22:40:50Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![dgw](https://sea1.discourse-cdn.com/flex015/user_avatar/travis-ci.community/dgw/32/2638_2.png) [@dgw](https://travis-ci.community/u/dgw)\
**Post date:** [July 24, 2020, 10:40pm UTC](https://travis-ci.community/t/sudden-failures-for-the-same-commit-despite-no-changes-in-the-list-of-installed-packages/9436/1 "2020-07-24T22:40:50Z")

</div>

Five days ago, the last merge to our `master` branch [succeeded](https://travis-ci.org/github/sopel-irc/sopel/builds/709777294) on Travis

Today, I tried to run some builds in a test branch to see if bumping a certain dependency would break anything. However, after getting very confusing build results I got sidetracked and eventually discovered that the exact same commit [now fails](https://travis-ci.org/github/sopel-irc/sopel/builds/711610078).

Python 3.3 builds say there’s `No module named 'typing'` (true, but while there’s a PyPI package to backport it the list of installed packages hasn’t changed between jobs).

Python 3.5 builds point to a syntax error in one of our dependencies (`geoip2` 2.9.0) that hasn’t changed in years.

These errors don’t make sense, since the exact same build succeeded a few days ago. I can only conclude that something in the Travis CI Python archives has changed due to a recent update. It’s either that or the package artifact on PyPI changed, and we all know the policy there. (In case not: It’s impossible to replace an uploaded artifact, period. Broken releases must be version-bumped.)

---

<div class="post-metadata">

**Author:** ![native-api](https://sea1.discourse-cdn.com/flex015/user_avatar/travis-ci.community/native-api/32/430_2.png) [@native-api](https://travis-ci.community/u/native-api)\
**Post date:** [July 25, 2020, 1:14am UTC](https://travis-ci.community/t/sudden-failures-for-the-same-commit-despite-no-changes-in-the-list-of-installed-packages/9436/2 "2020-07-25T01:14:54Z")

</div>

> [@dgw](#):
>
> the list of installed packages hasn’t changed between jobs

Please check your list of packages being installed more closely. Since you are using `>=` specificaltions rather than `==`, you will be getting newer versions whenever they are available.

* * *

[Travis CI - Test and Deploy with Confidence](https://travis-ci.org/github/sopel-irc/sopel/jobs/709777296) vs [Travis CI - Test and Deploy with Confidence](https://travis-ci.org/github/sopel-irc/sopel/jobs/711610080:)

```auto
-Successfully installed Jinja2-2.11.2 MarkupSafe-1.1.1 PyYAML-3.13 Pygments-2.6.1 alabaster-0.7.12 babel-2.8.0 certifi-2020.6.20 chardet-3.0.4 coverage-5.2 coveralls-2.1.1 dnspython-1.15.0 docopt-0.6.2 docutils-0.16 enum34-1.1.10 flake8-3.5.0 flake8-coding-1.3.2 flake8-future-import-0.4.5 flake8-import-order-0.18.1 geoip2-2.9.0 idna-2.10 imagesize-1.2.0 maxminddb-1.5.4 mccabe-0.6.1 packaging-20.4 praw-5.4.0 prawcore-0.14.0 py-1.9.0 pycodestyle-2.3.1 pyflakes-1.6.0 pyparsing-2.4.7 pytest-3.2.5 pytest-vcr-0.3.0 pytz-2020.1 requests-2.24.0 six-1.15.0 snowballstemmer-2.0.0 sphinx-3.1.2 sphinxcontrib-applehelp-1.0.2 sphinxcontrib-autoprogram-0.1.5 sphinxcontrib-devhelp-1.0.2 sphinxcontrib-htmlhelp-1.0.3 sphinxcontrib-jsmath-1.0.1 sphinxcontrib-qthelp-1.0.3 sphinxcontrib-serializinghtml-1.1.4 sqlalchemy-1.2.19 update-checker-0.17 urllib3-1.22 vcrpy-1.11.1 wrapt-1.12.1 xmltodict-0.11.0
+Successfully installed Jinja2-2.11.2 MarkupSafe-1.1.1 PyYAML-3.13 Pygments-2.6.1 alabaster-0.7.12 babel-2.8.0 certifi-2020.6.20 chardet-3.0.4 coverage-5.2.1 coveralls-2.1.1 dnspython-1.15.0 docopt-0.6.2 docutils-0.16 enum34-1.1.10 flake8-3.5.0 flake8-coding-1.3.2 flake8-future-import-0.4.5 flake8-import-order-0.18.1 geoip2-2.9.0 idna-2.10 imagesize-1.2.0 maxminddb-2.0.1 mccabe-0.6.1 packaging-20.4 praw-5.4.0 prawcore-0.14.0 py-1.9.0 pycodestyle-2.3.1 pyflakes-1.6.0 pyparsing-2.4.7 pytest-3.2.5 pytest-vcr-0.3.0 pytz-2020.1 requests-2.24.0 six-1.15.0 snowballstemmer-2.0.0 sphinx-3.1.2 sphinxcontrib-applehelp-1.0.2 sphinxcontrib-autoprogram-0.1.5 sphinxcontrib-devhelp-1.0.2 sphinxcontrib-htmlhelp-1.0.3 sphinxcontrib-jsmath-1.0.1 sphinxcontrib-qthelp-1.0.3 sphinxcontrib-serializinghtml-1.1.4 sqlalchemy-1.2.19 update-checker-0.17 urllib3-1.22 vcrpy-1.11.1 wrapt-1.12.1 xmltodict-0.11.0

```

[Travis CI - Test and Deploy with Confidence](https://travis-ci.org/github/sopel-irc/sopel/jobs/709777298) vs [Travis CI - Test and Deploy with Confidence](https://travis-ci.org/github/sopel-irc/sopel/jobs/711610082:)

```auto
-Successfully installed Jinja2-2.11.2 MarkupSafe-1.1.1 PyYAML-5.3.1 Pygments-2.6.1 alabaster-0.7.12 babel-2.8.0 chardet-3.0.4 coverage-5.2 coveralls-2.1.1 dnspython-1.16.0 docopt-0.6.2 docutils-0.16 entrypoints-0.3 flake8-3.7.9 flake8-coding-1.3.2 flake8-future-import-0.4.5 flake8-import-order-0.18.1 geoip2-2.9.0 idna-2.10 imagesize-1.2.0 importlib-metadata-1.7.0 maxminddb-1.5.4 mccabe-0.6.1 multidict-4.7.6 packaging-20.4 pluggy-0.13.1 praw-5.4.0 prawcore-0.14.0 pycodestyle-2.5.0 pyflakes-2.1.1 pyparsing-2.4.7 pytest-4.6.11 pytest-vcr-1.0.2 pytz-2020.1 requests-2.24.0 snowballstemmer-2.0.0 sphinx-3.1.2 sphinxcontrib-applehelp-1.0.2 sphinxcontrib-autoprogram-0.1.5 sphinxcontrib-devhelp-1.0.2 sphinxcontrib-htmlhelp-1.0.3 sphinxcontrib-jsmath-1.0.1 sphinxcontrib-qthelp-1.0.3 sphinxcontrib-serializinghtml-1.1.4 sqlalchemy-1.3.18 update-checker-0.17 urllib3-1.25.9 vcrpy-2.1.1 wcwidth-0.2.5 wrapt-1.12.1 xmltodict-0.12.0 yarl-1.3.0 zipp-1.2.0
+Successfully installed Jinja2-2.11.2 MarkupSafe-1.1.1 PyYAML-5.3.1 Pygments-2.6.1 alabaster-0.7.12 babel-2.8.0 chardet-3.0.4 coverage-5.2.1 coveralls-2.1.1 dnspython-1.16.0 docopt-0.6.2 docutils-0.16 entrypoints-0.3 flake8-3.7.9 flake8-coding-1.3.2 flake8-future-import-0.4.5 flake8-import-order-0.18.1 geoip2-2.9.0 idna-2.10 imagesize-1.2.0 importlib-metadata-1.7.0 maxminddb-2.0.0 mccabe-0.6.1 multidict-4.7.6 packaging-20.4 pluggy-0.13.1 praw-5.4.0 prawcore-0.14.0 pycodestyle-2.5.0 pyflakes-2.1.1 pyparsing-2.4.7 pytest-4.6.11 pytest-vcr-1.0.2 pytz-2020.1 requests-2.24.0 snowballstemmer-2.0.0 sphinx-3.1.2 sphinxcontrib-applehelp-1.0.2 sphinxcontrib-autoprogram-0.1.5 sphinxcontrib-devhelp-1.0.2 sphinxcontrib-htmlhelp-1.0.3 sphinxcontrib-jsmath-1.0.1 sphinxcontrib-qthelp-1.0.3 sphinxcontrib-serializinghtml-1.1.4 sqlalchemy-1.3.18 update-checker-0.17 urllib3-1.25.10 vcrpy-2.1.1 wcwidth-0.2.5 wrapt-1.12.1 xmltodict-0.12.0 yarl-1.3.0 zipp-1.2.0

```

* * *

Diffing the raw logs in WinMerge highlights the changed parts: `coverage`, `maxminddb` and `urllib3`.

---

<div class="post-metadata">

**Author:** ![dgw](https://sea1.discourse-cdn.com/flex015/user_avatar/travis-ci.community/dgw/32/2638_2.png) [@dgw](https://travis-ci.community/u/dgw)\
**Post date:** [July 25, 2020, 5:26am UTC](https://travis-ci.community/t/sudden-failures-for-the-same-commit-despite-no-changes-in-the-list-of-installed-packages/9436/3 "2020-07-25T05:26:44Z")

</div>

Well, this gives `cwd` a whole new definition for me: “committing while drowsy”.

I did compare log output—and even used WinMerge to do so—but I must have copied the wrong log.

`maxminddb` is a sub-dependency of `geoip2`, which _also_ uses a `>=` requirement specifier. Sigh.

Accidentally comparing the wrong logs is embarrassing 😅 😹 but I’m glad it turned out to be something fairly trivial. We just have to explicitly cap `maxminddb`'s version ourselves, since the newest major version dropped support for older Python releases that we still support until _our_ next major version.

---

<div class="post-metadata">

**Author:** ![native-api](https://sea1.discourse-cdn.com/flex015/user_avatar/travis-ci.community/native-api/32/430_2.png) [@native-api](https://travis-ci.community/u/native-api)\
**Post date:** [July 25, 2020, 3:59pm UTC](https://travis-ci.community/t/sudden-failures-for-the-same-commit-despite-no-changes-in-the-list-of-installed-packages/9436/4 "2020-07-25T15:59:30Z")

</div>

> [@dgw](#):
>
> the newest major version [of `maxminddb`] dropped support for older Python releases

The problem is, it doesn’t specify so in its metadata which is a bug. If it did, Pip woudn’t have picked it.

I see that [this release is yanked](https://pypi.org/project/maxminddb/2.0.0/). But [Pip only recognizes yanked releases since 19.2](https://github.com/pypa/pip/commit/fc46a185631a3b1341e0c85aa547576f46a13197). So **you need to upgrade Pip to prevent this from happening in the future.**
