Skip to content
Snippets Groups Projects
Commit 5496c02f authored by Kenneth Reitz's avatar Kenneth Reitz Committed by GitHub
Browse files

Don't install packages that could mess packaging up (#397)

* updated changelog

* remove setuptools sanity check

* update changelog

* pip-clean

* changelog note

* refactor codebase to improve package name detection

* fix version string

* cleanup

* add messaging, improve execution

* do uninstall first
parent 8d6d14b6
No related branches found
No related tags found
No related merge requests found
# Python Buildpack Changelog # 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 # 104
General improvements. General improvements.
......
...@@ -171,15 +171,19 @@ sub-env $BIN_DIR/steps/geo-libs ...@@ -171,15 +171,19 @@ sub-env $BIN_DIR/steps/geo-libs
# GDAL support. # GDAL support.
source $BIN_DIR/steps/gdal 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). # Install dependencies with Pip (where the magic happens).
let start=$(nowms) let start=$(nowms)
source $BIN_DIR/steps/pip-install source $BIN_DIR/steps/pip-install
mtime "pip.install.time" "${start}" 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. # Support for NLTK corpora.
let start=$(nowms) let start=$(nowms)
......
#!/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
#!/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()
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment