diff --git a/CHANGELOG.md b/CHANGELOG.md index c6b13c563c16f07090b5633038df3f0a931c6088..80d88287ed172ac1ac4af4f9e22b33dd0f97f2c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Python Buildpack Changelog +# 106 + +Don't install packages that could mess up packaging. + +- The Python buildpack will automatically remove `six`, `pyparsing`, `appdirs`, + `setuptools`, and `distribute` from a `requirements.txt` file now, as these + packages are provided by the Python buildpack. + +# 105 + +Improvements to output messaging. + # 104 General improvements. diff --git a/bin/compile b/bin/compile index ab60dbe7566d4cb6d30d33fc46c93ac4f382ded4..78b63bcd2e0d5acc1ca4bc95e6b7364ed73584e1 100755 --- a/bin/compile +++ b/bin/compile @@ -171,15 +171,19 @@ sub-env $BIN_DIR/steps/geo-libs # GDAL support. source $BIN_DIR/steps/gdal +# Uninstall removed dependencies with Pip. +let start=$(nowms) +source $BIN_DIR/steps/pip-uninstall +mtime "pip.uninstall.time" "${start}" + +# Cleanup requirements.txt +source $BIN_DIR/steps/setuptools + # Install dependencies with Pip (where the magic happens). let start=$(nowms) source $BIN_DIR/steps/pip-install mtime "pip.install.time" "${start}" -# Uninstall removed dependencies with Pip. -let start=$(nowms) -source $BIN_DIR/steps/pip-uninstall -mtime "pip.uninstall.time" "${start}" # Support for NLTK corpora. let start=$(nowms) diff --git a/bin/steps/setuptools b/bin/steps/setuptools new file mode 100755 index 0000000000000000000000000000000000000000..3bfc8ed37ca4b292eaf3aebedb2160f5b5352c7c --- /dev/null +++ b/bin/steps/setuptools @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +# Syntax sugar. +source $BIN_DIR/utils + +puts-step "Removing packaging utilities from requirements.txt." + +if [[ -f requirements.txt ]]; then + pip-clean requirements.txt +fi + diff --git a/vendor/pip-pop/pip-clean b/vendor/pip-pop/pip-clean new file mode 100755 index 0000000000000000000000000000000000000000..b17e4619c39a46d905fb4714cd188870f78d4a84 --- /dev/null +++ b/vendor/pip-pop/pip-clean @@ -0,0 +1,33 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +"""Usage: + pip-clean <req-file> + +Options: + -h --help Show this screen. +""" +from docopt import docopt + +BAD_PACKAGES = ['appdirs', 'packaging', 'pyparsing', 'six', 'setuptools', 'distribute'] + + +def good_package(line): + package_name = line.split('=')[0].split('<')[0].split('>')[0].split(' ')[0].split('#')[0].split('\n')[0] + return package_name not in BAD_PACKAGES + +def main(): + args = docopt(__doc__, version='pip-clean') + req_file = args['<req-file>'] + + with open(req_file, 'r') as f: + # Iterate over every line in the requirements file. + lines = [line for line in f if good_package(line)] + + # Write the requirements file to disk. + with open(req_file, 'w') as f: + f.write(''.join(lines)) + + +if __name__ == '__main__': + main() diff --git a/vendor/pip-pop/requirements.txt b/vendor/pip-pop/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..e2541fa2ec3a46b84e729f985220c7969be62cf8 --- /dev/null +++ b/vendor/pip-pop/requirements.txt @@ -0,0 +1,17 @@ +certifi==2017.4.17 +chardet==3.0.3 +dateparser +humanize==0.5.1 +idna==2.5 +maya==0.3.2 +pendulum==1.2.1 +python-dateutil==2.6.0 +pytz==2017.2 +pytzdata==2017.2 +regex==2017.5.26 +requests==2.17.3 +ruamel.ordereddict==0.4.9 +ruamel.yaml==0.14.12 +tzlocal==1.4 +urllib3==1.21.1 +