mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 23:10:16 +00:00
Add support for Python 3.9.0 (#1090)
https://pythoninsider.blogspot.com/2020/10/python-390-is-now-available-and-you-can.html https://www.python.org/downloads/release/python-390/ https://docs.python.org/release/3.9.0/whatsnew/3.9.html Binaries generated using: ``` make deploy-runtimes RUNTIMES='python-3.9.0' STACKS='heroku-16 heroku-18' ENV_FILE=... ``` Closes @W-7791272@.
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
## Unreleased
|
||||
|
||||
- Python 3.9.0 is now available (CPython) (#1090).
|
||||
- Migrate from the `lang-python` S3 bucket to `heroku-buildpack-python` (#1089).
|
||||
- Remove `vendor/shunit2` (#1086).
|
||||
- Replace `BUILDPACK_VENDOR_URL` and `USE_STAGING_BINARIES` with `BUILDPACK_S3_BASE_URL` (#1085).
|
||||
|
||||
@@ -62,6 +62,7 @@ Specify a Python Runtime
|
||||
|
||||
Supported runtime options include:
|
||||
|
||||
- `python-3.9.0`
|
||||
- `python-3.8.6`
|
||||
- `python-3.7.9`
|
||||
- `python-3.6.12`
|
||||
|
||||
@@ -57,6 +57,7 @@ export S3_BASE_URL
|
||||
source "$BIN_DIR/default_pythons"
|
||||
|
||||
# Supported Python Branches
|
||||
PY39="python-3.9"
|
||||
PY38="python-3.8"
|
||||
PY37="python-3.7"
|
||||
PY36="python-3.6"
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
# shellcheck disable=2034
|
||||
|
||||
DEFAULT_PYTHON_VERSION="python-3.6.12"
|
||||
LATEST_39="python-3.9.0"
|
||||
LATEST_38="python-3.8.6"
|
||||
LATEST_37="python-3.7.9"
|
||||
LATEST_36="python-3.6.12"
|
||||
|
||||
@@ -30,6 +30,9 @@ if [[ -f $BUILD_DIR/Pipfile ]]; then
|
||||
if [ "$PYTHON" = 3.8 ]; then
|
||||
echo "$LATEST_38" > "$BUILD_DIR/runtime.txt"
|
||||
fi
|
||||
if [ "$PYTHON" = 3.9 ]; then
|
||||
echo "$LATEST_39" > "$BUILD_DIR/runtime.txt"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
@@ -16,6 +16,12 @@ PYTHON_2_EOL_UPDATE="Python 2 has reached it's community EOL. Upgrade your Pytho
|
||||
|
||||
# check if runtime exists
|
||||
if curl --output /dev/null --silent --head --fail "$VENDORED_PYTHON"; then
|
||||
if [[ "$PYTHON_VERSION" == $PY39* ]]; then
|
||||
if [ "$PYTHON_VERSION" != "$LATEST_39" ]; then
|
||||
puts-warn "$SECURITY_UPDATE" "$LATEST_39"
|
||||
echo " Learn More: https://devcenter.heroku.com/articles/python-runtimes"
|
||||
fi
|
||||
fi
|
||||
if [[ "$PYTHON_VERSION" == $PY38* ]]; then
|
||||
# do things to alert the user of security release available
|
||||
if [ "$PYTHON_VERSION" != "$LATEST_38" ]; then
|
||||
|
||||
Executable
+4
@@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Build Path: /app/.heroku/python/
|
||||
|
||||
source $(dirname $0)/python3
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
python-3.9.0
|
||||
+1
@@ -0,0 +1 @@
|
||||
python-3.9.0
|
||||
@@ -140,6 +140,34 @@ testPython3_8_warn() {
|
||||
fi
|
||||
}
|
||||
|
||||
testPython3_9() {
|
||||
# Cedar-14 is EOL, so we're not building new major Python versions for it.
|
||||
if [[ "${STACK}" = "cedar-14" ]]; then
|
||||
return
|
||||
fi
|
||||
compile "python3_9"
|
||||
assertNotCaptured "security update"
|
||||
assertCaptured $LATEST_39
|
||||
assertCaptured "Installing pip 20.1.1, setuptools 47.1.1 and wheel 0.34.2"
|
||||
assertCaptured "Installing SQLite3"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPython3_9_warn() {
|
||||
# Cedar-14 is EOL, so we're not building new major Python versions for it.
|
||||
if [[ "${STACK}" = "cedar-14" ]]; then
|
||||
return
|
||||
fi
|
||||
# Can't test the version warning until there is at least one old version of Python 3.9.
|
||||
if [[ "${LATEST_39}" = "python-3.9.0" ]]; then
|
||||
return
|
||||
fi
|
||||
compile "python3_9_warn"
|
||||
assertCaptured "python-3.9.0"
|
||||
assertCaptured "security update!"
|
||||
assertCapturedSuccess
|
||||
}
|
||||
|
||||
testPythonVersionInvalid() {
|
||||
compile "python_version_invalid"
|
||||
assertCaptured "Requested runtime (python-3.8.99) is not available for this stack"
|
||||
|
||||
Reference in New Issue
Block a user