mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 23:10:16 +00:00
Migrate away from sp-grep (#1119)
Switches the last consumers of it to a simpler utility function that uses `pkgutil.find_loader()`: https://docs.python.org/3/library/pkgutil.html#pkgutil.find_loader Both of these consumers are covered by existing tests. Then removes `sp-grep` and the remaining parts of `pip-pop`. Closes @W-8208817@.
This commit is contained in:
+2
-2
@@ -68,9 +68,9 @@ DEFAULT_PYTHON_STACK="heroku-18"
|
||||
WARNINGS_LOG=$(mktemp)
|
||||
RECOMMENDED_PYTHON_VERSION=$DEFAULT_PYTHON_VERSION
|
||||
|
||||
# The buildpack ships with a few executable tools (e.g. pip-grep, etc).
|
||||
# The buildpack ships with a few executable tools.
|
||||
# This installs them into the path, so we can execute them directly.
|
||||
export PATH=$PATH:$ROOT_DIR/vendor/:$ROOT_DIR/vendor/pip-pop
|
||||
export PATH=$PATH:$ROOT_DIR/vendor/
|
||||
|
||||
# Set environment variables if they weren't set by the platform.
|
||||
# Note: this is legacy, for a deprecated build system known as Anvil.
|
||||
|
||||
@@ -20,8 +20,8 @@ MANAGE_FILE=${MANAGE_FILE:-fakepath}
|
||||
# Legacy file-based support for $DISABLE_COLLECTSTATIC
|
||||
[ -f .heroku/collectstatic_disabled ] && DISABLE_COLLECTSTATIC=1
|
||||
|
||||
# Ensure that Django is explicitly specified in requirements.txt
|
||||
sp-grep -s django && DJANGO_INSTALLED=1
|
||||
# Ensure that Django is actually installed.
|
||||
is_module_available 'django' && DJANGO_INSTALLED=1
|
||||
|
||||
|
||||
if [ ! "$DISABLE_COLLECTSTATIC" ] && [ -f "$MANAGE_FILE" ] && [ "$DJANGO_INSTALLED" ]; then
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@
|
||||
source "$BIN_DIR/utils"
|
||||
|
||||
# Check that nltk was installed by pip, otherwise obviously not needed
|
||||
if sp-grep -s nltk; then
|
||||
if is_module_available 'nltk'; then
|
||||
puts-step "Downloading NLTK corpora…"
|
||||
|
||||
nltk_packages_definition="$BUILD_DIR/nltk.txt"
|
||||
|
||||
@@ -96,3 +96,11 @@ python_sqlite3_check() {
|
||||
( python2_check "$VERSION" && version_gte "$VERSION" "$MIN_PYTHON_2" ) \
|
||||
|| ( python3_check "$VERSION" && version_gte "$VERSION" "$MIN_PYTHON_3" )
|
||||
}
|
||||
|
||||
is_module_available() {
|
||||
# Returns 0 is the specified module exists, otherwise returns 1.
|
||||
# Uses pkgutil rather than pkg_resources or pip's CLI, since pkgutil exists
|
||||
# in the stdlib, and doesn't depend on the choice of package manager.
|
||||
local module_name="${1}"
|
||||
python -c "import sys, pkgutil; sys.exit(0 if pkgutil.find_loader('${module_name}') else 1)"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user