mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 23:10:16 +00:00
Compare commits
49 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9a227e6c73 | |||
| ddc9c24d34 | |||
| 42488a2be7 | |||
| 839486c25b | |||
| 5d56200179 | |||
| fef1d4f7c0 | |||
| 43defcc17e | |||
| f78460e2a7 | |||
| 3448923b69 | |||
| 58a13bc268 | |||
| c18038f986 | |||
| d4356a1f4c | |||
| 3c8f478b65 | |||
| 23493302e6 | |||
| 35ceaf728d | |||
| 5c9412fc33 | |||
| 825c9329eb | |||
| 9ebb990716 | |||
| f964209589 | |||
| 2e699d392e | |||
| 431ecee509 | |||
| 90696215ae | |||
| 5b55261700 | |||
| 727ff90acf | |||
| 0060fdacd8 | |||
| 85ad1fa988 | |||
| 56c022ca41 | |||
| f68e0989ea | |||
| 7381117bb8 | |||
| c9209ebb3d | |||
| 35345d11f5 | |||
| 6ee17b4c26 | |||
| 86267f93a1 | |||
| 50642e7069 | |||
| 8349f291d2 | |||
| 1aad21382e | |||
| 686ee087a5 | |||
| f137ba213a | |||
| 5ae51010cc | |||
| 29d8e7f670 | |||
| 5be3e0ce52 | |||
| ddde30a12e | |||
| 2db5578998 | |||
| 290250836f | |||
| 0ff4df4dc3 | |||
| 9177aa2c08 | |||
| ad791dc7f8 | |||
| 6b298ff7f3 | |||
| 01e30e938c |
@@ -49,6 +49,6 @@ You can also provide arbitrary releases Python with a `runtime.txt` file.
|
|||||||
|
|
||||||
Runtime options include:
|
Runtime options include:
|
||||||
|
|
||||||
- python-2.7.3
|
- python-2.7.4
|
||||||
- python-3.3.0
|
- python-3.3.1
|
||||||
- pypy-1.9 (experimental)
|
- pypy-1.9 (experimental)
|
||||||
|
|||||||
+131
-81
@@ -1,34 +1,10 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# This script serves as the
|
# Usage:
|
||||||
# [**Python Buildpack**](https://github.com/heroku/heroku-buildpack-python)
|
|
||||||
# compiler.
|
|
||||||
#
|
|
||||||
# A [buildpack](http://devcenter.heroku.com/articles/buildpacks) is an
|
|
||||||
# adapter between a Python application and Heroku's runtime.
|
|
||||||
#
|
|
||||||
# You can intreract with the Heroku API directly with [heroku.py](https://github.com/heroku/heroku.py/).
|
|
||||||
#
|
|
||||||
# See also: [Release history](/changelog.html), [Detection](/detect.html).
|
|
||||||
#
|
|
||||||
# ## Usage
|
|
||||||
# Compiling an app into a slug is simple:
|
|
||||||
#
|
#
|
||||||
# $ bin/compile <build-dir> <cache-dir>
|
# $ bin/compile <build-dir> <cache-dir>
|
||||||
|
|
||||||
|
|
||||||
# ## Assumptions
|
|
||||||
#
|
|
||||||
# This buildpack makes the following assumptions:
|
|
||||||
#
|
|
||||||
# - The desired Python VM is available on the base system.
|
|
||||||
# - Library dependencies are available on the base system.
|
|
||||||
# - Django applications should not require any platform-specific configuration.
|
|
||||||
|
|
||||||
# <hr />
|
|
||||||
|
|
||||||
# ## Context
|
|
||||||
|
|
||||||
# Fail fast and fail hard.
|
# Fail fast and fail hard.
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
|
||||||
@@ -49,12 +25,30 @@ LEGACY_TRIGGER="lib/python2.7"
|
|||||||
PROFILE_PATH="$BUILD_DIR/.profile.d/python.sh"
|
PROFILE_PATH="$BUILD_DIR/.profile.d/python.sh"
|
||||||
|
|
||||||
# Python version. This will be used in the future to specify custom Pythons.
|
# Python version. This will be used in the future to specify custom Pythons.
|
||||||
DEFAULT_PYTHON_VERSION="python-2.7.3"
|
DEFAULT_PYTHON_VERSION="python-2.7.4"
|
||||||
PYTHON_EXE="/app/.heroku/python/bin/python"
|
PYTHON_EXE="/app/.heroku/python/bin/python"
|
||||||
|
PIP_VERSION="1.3.1"
|
||||||
|
DISTRIBUTE_VERSION="0.6.36"
|
||||||
|
|
||||||
|
# Setup bpwatch
|
||||||
|
export PATH=$PATH:$ROOT_DIR/vendor/bpwatch
|
||||||
|
LOGPLEX_KEY="t.b396af7f-ad75-4643-8b9e-ebb288acc624"
|
||||||
|
export BPWATCH_STORE_PATH=$CACHE_DIR/bpwatch.json
|
||||||
|
BUILDPACK_VERSION=v24
|
||||||
|
|
||||||
|
# Support Anvil Build_IDs
|
||||||
|
[ ! "$REQUEST_ID" ] && REQUEST_ID=$SLUG_ID
|
||||||
|
|
||||||
# Sanitizing environment variables.
|
# Sanitizing environment variables.
|
||||||
unset GIT_DIR PYTHONHOME PYTHONPATH LD_LIBRARY_PATH LIBRARY_PATH
|
unset GIT_DIR PYTHONHOME PYTHONPATH LD_LIBRARY_PATH LIBRARY_PATH
|
||||||
|
|
||||||
|
bpwatch init $LOGPLEX_KEY
|
||||||
|
bpwatch build python $BUILDPACK_VERSION $REQUEST_ID
|
||||||
|
TMP_APP_DIR=$CACHE_DIR/tmp_app_dir
|
||||||
|
|
||||||
|
bpwatch start compile
|
||||||
|
|
||||||
|
|
||||||
# We'll need to send these statics to other scripts we `source`.
|
# We'll need to send these statics to other scripts we `source`.
|
||||||
export BUILD_DIR CACHE_DIR BIN_DIR PROFILE_PATH
|
export BUILD_DIR CACHE_DIR BIN_DIR PROFILE_PATH
|
||||||
|
|
||||||
@@ -66,11 +60,19 @@ APP_DIR='/app'
|
|||||||
TMP_APP_DIR=$CACHE_DIR/tmp_app_dir
|
TMP_APP_DIR=$CACHE_DIR/tmp_app_dir
|
||||||
|
|
||||||
# Copy Anvil app dir to temporary storage...
|
# Copy Anvil app dir to temporary storage...
|
||||||
mkdir -p $TMP_APP_DIR
|
bpwatch start anvil_appdir_stage
|
||||||
deep-mv $APP_DIR $TMP_APP_DIR
|
if [ "$SLUG_ID" ]; then
|
||||||
|
mkdir -p $TMP_APP_DIR
|
||||||
|
deep-mv $APP_DIR $TMP_APP_DIR
|
||||||
|
else
|
||||||
|
deep-rm $APP_DIR
|
||||||
|
fi
|
||||||
|
bpwatch stop anvil_appdir_stage
|
||||||
|
|
||||||
# Copy Application code in.
|
# Copy Application code in.
|
||||||
deep-mv $BUILD_DIR $APP_DIR
|
bpwatch start appdir_stage
|
||||||
|
deep-mv $BUILD_DIR $APP_DIR
|
||||||
|
bpwatch stop appdir_stage
|
||||||
|
|
||||||
# Set new context.
|
# Set new context.
|
||||||
ORIG_BUILD_DIR=$BUILD_DIR
|
ORIG_BUILD_DIR=$BUILD_DIR
|
||||||
@@ -79,15 +81,17 @@ BUILD_DIR=$APP_DIR
|
|||||||
# Prepend proper path buildpack use.
|
# Prepend proper path buildpack use.
|
||||||
export PATH=$BUILD_DIR/.heroku/python/bin:$PATH
|
export PATH=$BUILD_DIR/.heroku/python/bin:$PATH
|
||||||
export PYTHONUNBUFFERED=1
|
export PYTHONUNBUFFERED=1
|
||||||
|
export LANG=en_US.UTF-8
|
||||||
# ## Build Time
|
export LIBRARY_PATH=/app/.heroku/vendor/lib
|
||||||
#
|
export LD_LIBRARY_PATH=/app/.heroku/vendor/lib
|
||||||
|
|
||||||
# Switch to the repo's context.
|
# Switch to the repo's context.
|
||||||
cd $BUILD_DIR
|
cd $BUILD_DIR
|
||||||
|
|
||||||
# Experimental pre_compile hook.
|
# Experimental pre_compile hook.
|
||||||
source $BIN_DIR/steps/hooks/pre_compile
|
bpwatch start pre_compile
|
||||||
|
source $BIN_DIR/steps/hooks/pre_compile
|
||||||
|
bpwatch stop pre_compile
|
||||||
|
|
||||||
# If no requirements given, assume `setup.py develop`.
|
# If no requirements given, assume `setup.py develop`.
|
||||||
if [ ! -f requirements.txt ]; then
|
if [ ! -f requirements.txt ]; then
|
||||||
@@ -105,13 +109,17 @@ fi
|
|||||||
mkdir -p $CACHE_DIR
|
mkdir -p $CACHE_DIR
|
||||||
|
|
||||||
# Purge "old-style" virtualenvs.
|
# Purge "old-style" virtualenvs.
|
||||||
[ -d $CACHE_DIR/$LEGACY_TRIGGER ] && rm -fr $CACHE_DIR/.heroku/bin $CACHE_DIR/.heroku/lib $CACHE_DIR/.heroku/include
|
bpwatch start clear_old_venvs
|
||||||
[ -d $CACHE_DIR/$VIRTUALENV_LOC ] && rm -fr $CACHE_DIR/.heroku/venv $CACHE_DIR/.heroku/src
|
[ -d $CACHE_DIR/$LEGACY_TRIGGER ] && rm -fr $CACHE_DIR/.heroku/bin $CACHE_DIR/.heroku/lib $CACHE_DIR/.heroku/include
|
||||||
|
[ -d $CACHE_DIR/$VIRTUALENV_LOC ] && rm -fr $CACHE_DIR/.heroku/venv $CACHE_DIR/.heroku/src
|
||||||
|
bpwatch stop clear_old_venvs
|
||||||
|
|
||||||
# Restore old artifacts from the cache.
|
# Restore old artifacts from the cache.
|
||||||
for dir in $CACHED_DIRS; do
|
bpwatch start restore_cache
|
||||||
cp -R $CACHE_DIR/$dir . &> /dev/null || true
|
for dir in $CACHED_DIRS; do
|
||||||
done
|
cp -R $CACHE_DIR/$dir . &> /dev/null || true
|
||||||
|
done
|
||||||
|
bpwatch stop restore_cache
|
||||||
|
|
||||||
set +e
|
set +e
|
||||||
# Create set-aside `.heroku` folder.
|
# Create set-aside `.heroku` folder.
|
||||||
@@ -126,8 +134,10 @@ PYTHON_VERSION=$(cat runtime.txt)
|
|||||||
# Install Python.
|
# Install Python.
|
||||||
if [ -f .heroku/python-version ]; then
|
if [ -f .heroku/python-version ]; then
|
||||||
if [ ! $(cat .heroku/python-version) = $PYTHON_VERSION ]; then
|
if [ ! $(cat .heroku/python-version) = $PYTHON_VERSION ]; then
|
||||||
puts-step "Found $(cat .heroku/python-version), removing."
|
bpwatch start uninstall_python
|
||||||
rm -fr .heroku/python
|
puts-step "Found $(cat .heroku/python-version), removing."
|
||||||
|
rm -fr .heroku/python
|
||||||
|
bpwatch stop uninstall_python
|
||||||
else
|
else
|
||||||
SKIP_INSTALL=1
|
SKIP_INSTALL=1
|
||||||
fi
|
fi
|
||||||
@@ -135,79 +145,119 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
if [ ! "$SKIP_INSTALL" ]; then
|
if [ ! "$SKIP_INSTALL" ]; then
|
||||||
puts-step "Preparing Python runtime ($PYTHON_VERSION)"
|
bpwatch start install_python
|
||||||
curl http://envy-versions.s3.amazonaws.com/$PYTHON_VERSION.tar.bz2 -s | tar jx &> /dev/null
|
puts-step "Preparing Python runtime ($PYTHON_VERSION)"
|
||||||
if [[ $? != 0 ]] ; then
|
curl http://envy-versions.s3.amazonaws.com/$PYTHON_VERSION.tar.bz2 -s | tar jx &> /dev/null
|
||||||
puts-warn "Requested runtime ($PYTHON_VERSION) was not found."
|
if [[ $? != 0 ]] ; then
|
||||||
puts-warn "Aborting. More info: https://devcenter.heroku.com/articles/python-support"
|
puts-warn "Requested runtime ($PYTHON_VERSION) was not found."
|
||||||
exit 1
|
puts-warn "Aborting. More info: https://devcenter.heroku.com/articles/python-support"
|
||||||
fi
|
exit 1
|
||||||
mv python .heroku/python
|
fi
|
||||||
|
mv python .heroku/python
|
||||||
|
bpwatch stop install_python
|
||||||
|
|
||||||
# Record for future reference.
|
# Record for future reference.
|
||||||
echo $PYTHON_VERSION > .heroku/python-version
|
echo $PYTHON_VERSION > .heroku/python-version
|
||||||
WORKING_DIR=$(pwd)
|
FRESH_PYTHON=true
|
||||||
|
|
||||||
# Prepare it for the real world
|
|
||||||
puts-step "Installing Distribute (0.6.34)"
|
|
||||||
cd $ROOT_DIR/vendor/distribute-0.6.34/
|
|
||||||
python setup.py install &> /dev/null
|
|
||||||
cd $WORKING_DIR
|
|
||||||
|
|
||||||
puts-step "Installing Pip (1.2.1)"
|
|
||||||
cd $ROOT_DIR/vendor/pip-1.2.1/
|
|
||||||
python setup.py install &> /dev/null
|
|
||||||
cd $WORKING_DIR
|
|
||||||
|
|
||||||
hash -r
|
hash -r
|
||||||
else
|
else
|
||||||
puts-step "Using Python runtime ($PYTHON_VERSION)"
|
puts-step "Using Python runtime ($PYTHON_VERSION)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# If Pip isn't up to date:
|
||||||
|
if [ "$FRESH_PYTHON" ] || [[ ! $(pip --version) == *$PIP_VERSION* ]]; then
|
||||||
|
WORKING_DIR=$(pwd)
|
||||||
|
|
||||||
|
bpwatch start prepare_environment
|
||||||
|
|
||||||
|
bpwatch start install_distribute
|
||||||
|
# Prepare it for the real world
|
||||||
|
puts-step "Installing Distribute ($DISTRIBUTE_VERSION)"
|
||||||
|
cd $ROOT_DIR/vendor/distribute-$DISTRIBUTE_VERSION/
|
||||||
|
python setup.py install &> /dev/null
|
||||||
|
cd $WORKING_DIR
|
||||||
|
bpwatch stop install_distribute
|
||||||
|
|
||||||
|
bpwatch start install_pip
|
||||||
|
puts-step "Installing Pip ($PIP_VERSION)"
|
||||||
|
cd $ROOT_DIR/vendor/pip-$PIP_VERSION/
|
||||||
|
python setup.py install &> /dev/null
|
||||||
|
cd $WORKING_DIR
|
||||||
|
|
||||||
|
bpwatch stop install_pip
|
||||||
|
bpwatch stop prepare_environment
|
||||||
|
fi
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
hash -r
|
||||||
|
|
||||||
# Pylibmc support.
|
# Pylibmc support.
|
||||||
# See [`bin/steps/pylibmc`](pylibmc.html).
|
# See [`bin/steps/pylibmc`](pylibmc.html).
|
||||||
source $BIN_DIR/steps/pylibmc
|
bpwatch start pylibmc_install
|
||||||
|
source $BIN_DIR/steps/pylibmc
|
||||||
|
bpwatch stop pylibmc_install
|
||||||
|
|
||||||
# Install Mercurial if it appears to be required.
|
# Install Mercurial if it appears to be required.
|
||||||
if (in-req "hg+" requirements.txt) then
|
if (grep -Fiq "hg+" requirements.txt) then
|
||||||
pip install --use-mirrors mercurial | cleanup | indent
|
bpwatch start mercurial_install
|
||||||
|
/app/.heroku/python/bin/pip install --use-mirrors mercurial | cleanup | indent
|
||||||
|
bpwatch stop mercurial_install
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Install dependencies with Pip.
|
# Install dependencies with Pip.
|
||||||
puts-step "Installing dependencies using Pip (1.2.1)"
|
puts-step "Installing dependencies using Pip ($PIP_VERSION)"
|
||||||
pip install --use-mirrors -r requirements.txt --exists-action=w --src=./.heroku/src | cleanup | indent
|
|
||||||
|
|
||||||
|
[ ! "$FRESH_PYTHON" ] && bpwatch start pip_install
|
||||||
|
[ "$FRESH_PYTHON" ] && bpwatch start pip_install_first
|
||||||
|
|
||||||
|
/app/.heroku/python/bin/pip install --use-mirrors -r requirements.txt --exists-action=w --src=./.heroku/src | cleanup | indent
|
||||||
|
|
||||||
|
[ ! "$FRESH_PYTHON" ] && bpwatch stop pip_install
|
||||||
|
[ "$FRESH_PYTHON" ] && bpwatch stop pip_install_first
|
||||||
|
|
||||||
# Django collectstatic support.
|
# Django collectstatic support.
|
||||||
source $BIN_DIR/steps/collectstatic
|
bpwatch start collectstatic
|
||||||
|
source $BIN_DIR/steps/collectstatic
|
||||||
|
bpwatch stop collectstatic
|
||||||
|
|
||||||
# ### Finalize
|
# ### Finalize
|
||||||
#
|
#
|
||||||
|
|
||||||
# Store new artifacts in cache.
|
|
||||||
for dir in $CACHED_DIRS; do
|
|
||||||
rm -rf $CACHE_DIR/$dir
|
|
||||||
cp -R $dir $CACHE_DIR/
|
|
||||||
done
|
|
||||||
|
|
||||||
# Set context environment variables.
|
# Set context environment variables.
|
||||||
set-env PATH '$HOME/.heroku/python/bin:$PATH'
|
set-env PATH '$HOME/.heroku/python/bin:$PATH'
|
||||||
# set-env PYTHONHOME /app/.heroku/python/
|
|
||||||
set-env PYTHONUNBUFFERED true
|
set-env PYTHONUNBUFFERED true
|
||||||
|
set-env PYTHONHOME /app/.heroku/python
|
||||||
set-default-env LIBRARY_PATH /app/.heroku/vendor/lib
|
set-default-env LIBRARY_PATH /app/.heroku/vendor/lib
|
||||||
set-default-env LD_LIBRARY_PATH /app/.heroku/vendor/lib
|
set-default-env LD_LIBRARY_PATH /app/.heroku/vendor/lib
|
||||||
set-default-env LANG en_US.UTF-8
|
set-default-env LANG en_US.UTF-8
|
||||||
set-default-env PYTHONHASHSEED random
|
set-default-env PYTHONHASHSEED random
|
||||||
set-default-env PYTHONPATH /app/
|
set-default-env PYTHONPATH /app/
|
||||||
un-set-env PYTHONHOME
|
|
||||||
|
|
||||||
|
|
||||||
# ### Fin.
|
|
||||||
|
|
||||||
deep-mv $BUILD_DIR $ORIG_BUILD_DIR
|
|
||||||
deep-mv $TMP_APP_DIR $APP_DIR
|
|
||||||
|
|
||||||
|
|
||||||
# Experimental post_compile hook.
|
# Experimental post_compile hook.
|
||||||
source $BIN_DIR/steps/hooks/post_compile
|
bpwatch start post_compile
|
||||||
|
source $BIN_DIR/steps/hooks/post_compile
|
||||||
|
bpwatch stop post_compile
|
||||||
|
|
||||||
|
# Store new artifacts in cache.
|
||||||
|
bpwatch start dump_cache
|
||||||
|
for dir in $CACHED_DIRS; do
|
||||||
|
rm -rf $CACHE_DIR/$dir
|
||||||
|
cp -R $dir $CACHE_DIR/
|
||||||
|
done
|
||||||
|
bpwatch stop dump_cache
|
||||||
|
|
||||||
|
# ### Fin.
|
||||||
|
bpwatch start appdir_commit
|
||||||
|
deep-mv $BUILD_DIR $ORIG_BUILD_DIR
|
||||||
|
bpwatch stop appdir_commit
|
||||||
|
|
||||||
|
bpwatch start anvil_appdir_commit
|
||||||
|
if [ "$SLUG_ID" ]; then
|
||||||
|
deep-mv $TMP_APP_DIR $APP_DIR
|
||||||
|
fi
|
||||||
|
bpwatch stop anvil_appdir_commit
|
||||||
|
|
||||||
|
bpwatch stop compile
|
||||||
|
|||||||
+2
-2
@@ -18,6 +18,6 @@ if [[ $MANAGE_FILE ]]; then
|
|||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
|
||||||
addons:
|
addons:
|
||||||
shared-database:5mb
|
heroku-postgresql:dev
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -7,13 +7,11 @@ indent() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
MANAGE_FILE=$(find . -maxdepth 3 -type f -name 'manage.py' | head -1)
|
MANAGE_FILE=$(find . -maxdepth 3 -type f -name 'manage.py' | head -1)
|
||||||
MANAGE_FILE=${MANAGE_FILE:2}
|
MANAGE_FILE=${MANAGE_FILE:-fakepath}
|
||||||
|
|
||||||
if [ -f .heroku/collectstatic_disabled ]; then
|
[ -f .heroku/collectstatic_disabled ] && DISABLE_COLLECTSTATIC=1
|
||||||
DISABLE_COLLECTSTATIC=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! "$DISABLE_COLLECTSTATIC" ]; then
|
if [ ! "$DISABLE_COLLECTSTATIC" ] && [ -f "$MANAGE_FILE" ]; then
|
||||||
set +e
|
set +e
|
||||||
|
|
||||||
# Check if collectstatic is configured properly.
|
# Check if collectstatic is configured properly.
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@ VENDORED_MEMCACHED="http://cl.ly/0a191R3K160t1w1P0N25/vendor-libmemcached.tar.gz
|
|||||||
source $BIN_DIR/utils
|
source $BIN_DIR/utils
|
||||||
|
|
||||||
# If pylibmc exists within requirements, use vendored libmemcached.
|
# If pylibmc exists within requirements, use vendored libmemcached.
|
||||||
if (in-req "pylibmc" requirements.txt) then
|
if (grep -Eiq "^\s*pylibmc" requirements.txt) then
|
||||||
echo "-----> Noticed pylibmc. Bootstrapping libmemcached."
|
echo "-----> Noticed pylibmc. Bootstrapping libmemcached."
|
||||||
cd .heroku
|
cd .heroku
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,12 @@ testDetectWithEmptyReqs() {
|
|||||||
assertCapturedSuccess
|
assertCapturedSuccess
|
||||||
}
|
}
|
||||||
|
|
||||||
|
testDetectDjango15() {
|
||||||
|
detect "django-1.5-skeleton"
|
||||||
|
assertCapturedEquals "Python"
|
||||||
|
assertCapturedSuccess
|
||||||
|
}
|
||||||
|
|
||||||
testDetectDjango14() {
|
testDetectDjango14() {
|
||||||
detect "django-1.4-skeleton"
|
detect "django-1.4-skeleton"
|
||||||
assertCapturedEquals "Python"
|
assertCapturedEquals "Python"
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
Script started on Wed Dec 19 22:40:46 2012
|
|
||||||
[1m[7m%[27m[1m[0m
|
|
||||||
|
|
||||||
@@ -53,24 +53,10 @@ function deep-mv (){
|
|||||||
find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec rm -fr '{}' \;
|
find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec rm -fr '{}' \;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Recursively finds requirements.txt files
|
# Does some serious deleting.
|
||||||
function list-req (){
|
function deep-rm (){
|
||||||
echo $@
|
rm -fr $1/!(tmp)
|
||||||
for req in $(grep -Fie "-r " $@ | sed 's/-r //g')
|
find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec rm -fr '{}' \;
|
||||||
do
|
|
||||||
path="$(dirname $@)/$req"
|
|
||||||
list-req $path
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Find pattern in requirements files recursively
|
|
||||||
# Usage: $ in-req pattern file
|
|
||||||
function in-req (){
|
|
||||||
for file in $(list-req $2)
|
|
||||||
do
|
|
||||||
if (grep -Fiqe "$1" "$file") then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -0,0 +1,156 @@
|
|||||||
|
# Django settings for haystack project.
|
||||||
|
|
||||||
|
DEBUG = True
|
||||||
|
TEMPLATE_DEBUG = DEBUG
|
||||||
|
|
||||||
|
ADMINS = (
|
||||||
|
# ('Your Name', 'your_email@example.com'),
|
||||||
|
)
|
||||||
|
|
||||||
|
MANAGERS = ADMINS
|
||||||
|
|
||||||
|
DATABASES = {
|
||||||
|
'default': {
|
||||||
|
'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
|
||||||
|
'NAME': '', # Or path to database file if using sqlite3.
|
||||||
|
# The following settings are not used with sqlite3:
|
||||||
|
'USER': '',
|
||||||
|
'PASSWORD': '',
|
||||||
|
'HOST': '', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
|
||||||
|
'PORT': '', # Set to empty string for default.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Hosts/domain names that are valid for this site; required if DEBUG is False
|
||||||
|
# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts
|
||||||
|
ALLOWED_HOSTS = []
|
||||||
|
|
||||||
|
# Local time zone for this installation. Choices can be found here:
|
||||||
|
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
|
||||||
|
# although not all choices may be available on all operating systems.
|
||||||
|
# In a Windows environment this must be set to your system time zone.
|
||||||
|
TIME_ZONE = 'America/Chicago'
|
||||||
|
|
||||||
|
# Language code for this installation. All choices can be found here:
|
||||||
|
# http://www.i18nguy.com/unicode/language-identifiers.html
|
||||||
|
LANGUAGE_CODE = 'en-us'
|
||||||
|
|
||||||
|
SITE_ID = 1
|
||||||
|
|
||||||
|
# If you set this to False, Django will make some optimizations so as not
|
||||||
|
# to load the internationalization machinery.
|
||||||
|
USE_I18N = True
|
||||||
|
|
||||||
|
# If you set this to False, Django will not format dates, numbers and
|
||||||
|
# calendars according to the current locale.
|
||||||
|
USE_L10N = True
|
||||||
|
|
||||||
|
# If you set this to False, Django will not use timezone-aware datetimes.
|
||||||
|
USE_TZ = True
|
||||||
|
|
||||||
|
# Absolute filesystem path to the directory that will hold user-uploaded files.
|
||||||
|
# Example: "/var/www/example.com/media/"
|
||||||
|
MEDIA_ROOT = ''
|
||||||
|
|
||||||
|
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
|
||||||
|
# trailing slash.
|
||||||
|
# Examples: "http://example.com/media/", "http://media.example.com/"
|
||||||
|
MEDIA_URL = ''
|
||||||
|
|
||||||
|
# Absolute path to the directory static files should be collected to.
|
||||||
|
# Don't put anything in this directory yourself; store your static files
|
||||||
|
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
|
||||||
|
# Example: "/var/www/example.com/static/"
|
||||||
|
STATIC_ROOT = ''
|
||||||
|
|
||||||
|
# URL prefix for static files.
|
||||||
|
# Example: "http://example.com/static/", "http://static.example.com/"
|
||||||
|
STATIC_URL = '/static/'
|
||||||
|
|
||||||
|
# Additional locations of static files
|
||||||
|
STATICFILES_DIRS = (
|
||||||
|
# Put strings here, like "/home/html/static" or "C:/www/django/static".
|
||||||
|
# Always use forward slashes, even on Windows.
|
||||||
|
# Don't forget to use absolute paths, not relative paths.
|
||||||
|
)
|
||||||
|
|
||||||
|
# List of finder classes that know how to find static files in
|
||||||
|
# various locations.
|
||||||
|
STATICFILES_FINDERS = (
|
||||||
|
'django.contrib.staticfiles.finders.FileSystemFinder',
|
||||||
|
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
|
||||||
|
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
|
||||||
|
)
|
||||||
|
|
||||||
|
# Make this unique, and don't share it with anybody.
|
||||||
|
SECRET_KEY = '@w-1$9#jh05!qvbh#1k)c4=w9llcq116f$5(4&s_c)n4@%n=pc'
|
||||||
|
|
||||||
|
# List of callables that know how to import templates from various sources.
|
||||||
|
TEMPLATE_LOADERS = (
|
||||||
|
'django.template.loaders.filesystem.Loader',
|
||||||
|
'django.template.loaders.app_directories.Loader',
|
||||||
|
# 'django.template.loaders.eggs.Loader',
|
||||||
|
)
|
||||||
|
|
||||||
|
MIDDLEWARE_CLASSES = (
|
||||||
|
'django.middleware.common.CommonMiddleware',
|
||||||
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
|
'django.middleware.csrf.CsrfViewMiddleware',
|
||||||
|
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||||
|
'django.contrib.messages.middleware.MessageMiddleware',
|
||||||
|
# Uncomment the next line for simple clickjacking protection:
|
||||||
|
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||||
|
)
|
||||||
|
|
||||||
|
ROOT_URLCONF = 'haystack.urls'
|
||||||
|
|
||||||
|
# Python dotted path to the WSGI application used by Django's runserver.
|
||||||
|
WSGI_APPLICATION = 'haystack.wsgi.application'
|
||||||
|
|
||||||
|
TEMPLATE_DIRS = (
|
||||||
|
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
|
||||||
|
# Always use forward slashes, even on Windows.
|
||||||
|
# Don't forget to use absolute paths, not relative paths.
|
||||||
|
)
|
||||||
|
|
||||||
|
INSTALLED_APPS = (
|
||||||
|
'django.contrib.auth',
|
||||||
|
'django.contrib.contenttypes',
|
||||||
|
'django.contrib.sessions',
|
||||||
|
'django.contrib.sites',
|
||||||
|
'django.contrib.messages',
|
||||||
|
'django.contrib.staticfiles',
|
||||||
|
# Uncomment the next line to enable the admin:
|
||||||
|
# 'django.contrib.admin',
|
||||||
|
# Uncomment the next line to enable admin documentation:
|
||||||
|
# 'django.contrib.admindocs',
|
||||||
|
)
|
||||||
|
|
||||||
|
# A sample logging configuration. The only tangible logging
|
||||||
|
# performed by this configuration is to send an email to
|
||||||
|
# the site admins on every HTTP 500 error when DEBUG=False.
|
||||||
|
# See http://docs.djangoproject.com/en/dev/topics/logging for
|
||||||
|
# more details on how to customize your logging configuration.
|
||||||
|
LOGGING = {
|
||||||
|
'version': 1,
|
||||||
|
'disable_existing_loggers': False,
|
||||||
|
'filters': {
|
||||||
|
'require_debug_false': {
|
||||||
|
'()': 'django.utils.log.RequireDebugFalse'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'handlers': {
|
||||||
|
'mail_admins': {
|
||||||
|
'level': 'ERROR',
|
||||||
|
'filters': ['require_debug_false'],
|
||||||
|
'class': 'django.utils.log.AdminEmailHandler'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'loggers': {
|
||||||
|
'django.request': {
|
||||||
|
'handlers': ['mail_admins'],
|
||||||
|
'level': 'ERROR',
|
||||||
|
'propagate': True,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
from django.conf.urls import patterns, include, url
|
||||||
|
|
||||||
|
# Uncomment the next two lines to enable the admin:
|
||||||
|
# from django.contrib import admin
|
||||||
|
# admin.autodiscover()
|
||||||
|
|
||||||
|
urlpatterns = patterns('',
|
||||||
|
# Examples:
|
||||||
|
# url(r'^$', 'haystack.views.home', name='home'),
|
||||||
|
# url(r'^haystack/', include('haystack.foo.urls')),
|
||||||
|
|
||||||
|
# Uncomment the admin/doc line below to enable admin documentation:
|
||||||
|
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
|
||||||
|
|
||||||
|
# Uncomment the next line to enable the admin:
|
||||||
|
# url(r'^admin/', include(admin.site.urls)),
|
||||||
|
)
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
"""
|
||||||
|
WSGI config for haystack project.
|
||||||
|
|
||||||
|
This module contains the WSGI application used by Django's development server
|
||||||
|
and any production WSGI deployments. It should expose a module-level variable
|
||||||
|
named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
|
||||||
|
this application via the ``WSGI_APPLICATION`` setting.
|
||||||
|
|
||||||
|
Usually you will have the standard Django WSGI application here, but it also
|
||||||
|
might make sense to replace the whole Django WSGI application with a custom one
|
||||||
|
that later delegates to the Django one. For example, you could introduce WSGI
|
||||||
|
middleware here, or combine a Django application with an application of another
|
||||||
|
framework.
|
||||||
|
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
|
||||||
|
# We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks
|
||||||
|
# if running multiple sites in the same mod_wsgi process. To fix this, use
|
||||||
|
# mod_wsgi daemon mode with each site in its own daemon process, or use
|
||||||
|
# os.environ["DJANGO_SETTINGS_MODULE"] = "haystack.settings"
|
||||||
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "haystack.settings")
|
||||||
|
|
||||||
|
# This application object is used by any WSGI server configured to use this
|
||||||
|
# file. This includes Django's development server, if the WSGI_APPLICATION
|
||||||
|
# setting points here.
|
||||||
|
from django.core.wsgi import get_wsgi_application
|
||||||
|
application = get_wsgi_application()
|
||||||
|
|
||||||
|
# Apply WSGI middleware here.
|
||||||
|
# from helloworld.wsgi import HelloWorldApplication
|
||||||
|
# application = HelloWorldApplication(application)
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "haystack.settings")
|
||||||
|
|
||||||
|
from django.core.management import execute_from_command_line
|
||||||
|
|
||||||
|
execute_from_command_line(sys.argv)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
django==1.5
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
pylibmc
|
||||||
|
psycopg2
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/local/bin/python
|
||||||
|
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
DEFUALT_PATH = '{}.zip'.format(os.path.abspath(__file__))
|
||||||
|
BPWATCH_DISTRO_PATH = os.environ.get('BPWATCH_DISTRO_PATH', DEFUALT_PATH)
|
||||||
|
|
||||||
|
sys.path.insert(0, BPWATCH_DISTRO_PATH)
|
||||||
|
|
||||||
|
import bp_cli
|
||||||
|
bp_cli.main()
|
||||||
Vendored
BIN
Binary file not shown.
+26
-4
@@ -2,11 +2,33 @@
|
|||||||
CHANGES
|
CHANGES
|
||||||
=======
|
=======
|
||||||
|
|
||||||
----------
|
------
|
||||||
Unreleased
|
0.6.36
|
||||||
----------
|
------
|
||||||
|
|
||||||
+ Issue #341: 0.6.33 fails to build under python 2.4
|
* Pull Request #35: In `Buildout issue 64
|
||||||
|
<https://github.com/buildout/buildout/issues/64>`_, it was reported that
|
||||||
|
under Python 3, installation of distutils scripts could attempt to copy
|
||||||
|
the ``__pycache__`` directory as a file, causing an error, apparently only
|
||||||
|
under Windows. Easy_install now skips all directories when processing
|
||||||
|
metadata scripts.
|
||||||
|
|
||||||
|
------
|
||||||
|
0.6.35
|
||||||
|
------
|
||||||
|
|
||||||
|
Note this release is backward-incompatible with distribute 0.6.23-0.6.34 in
|
||||||
|
how it parses version numbers.
|
||||||
|
|
||||||
|
* Issue #278: Restored compatibility with distribute 0.6.22 and setuptools
|
||||||
|
0.6. Updated the documentation to match more closely with the version
|
||||||
|
parsing as intended in setuptools 0.6.
|
||||||
|
|
||||||
|
------
|
||||||
|
0.6.34
|
||||||
|
------
|
||||||
|
|
||||||
|
* Issue #341: 0.6.33 fails to build under Python 2.4.
|
||||||
|
|
||||||
------
|
------
|
||||||
0.6.33
|
0.6.33
|
||||||
+41
-26
@@ -1,6 +1,6 @@
|
|||||||
Metadata-Version: 1.1
|
Metadata-Version: 1.1
|
||||||
Name: distribute
|
Name: distribute
|
||||||
Version: 0.6.34
|
Version: 0.6.36
|
||||||
Summary: Easily download, build, install, upgrade, and uninstall Python packages
|
Summary: Easily download, build, install, upgrade, and uninstall Python packages
|
||||||
Home-page: http://packages.python.org/distribute
|
Home-page: http://packages.python.org/distribute
|
||||||
Author: The fellowship of the packaging
|
Author: The fellowship of the packaging
|
||||||
@@ -107,9 +107,9 @@ Description: ===============================
|
|||||||
|
|
||||||
Download the source tarball, uncompress it, then run the install command::
|
Download the source tarball, uncompress it, then run the install command::
|
||||||
|
|
||||||
$ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.34.tar.gz
|
$ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.36.tar.gz
|
||||||
$ tar -xzvf distribute-0.6.34.tar.gz
|
$ tar -xzvf distribute-0.6.36.tar.gz
|
||||||
$ cd distribute-0.6.34
|
$ cd distribute-0.6.36
|
||||||
$ python setup.py install
|
$ python setup.py install
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
@@ -238,11 +238,33 @@ Description: ===============================
|
|||||||
CHANGES
|
CHANGES
|
||||||
=======
|
=======
|
||||||
|
|
||||||
----------
|
------
|
||||||
Unreleased
|
0.6.36
|
||||||
----------
|
------
|
||||||
|
|
||||||
+ `Issue #341`_: 0.6.33 fails to build under python 2.4
|
* Pull Request #35: In `Buildout `issue 64`_
|
||||||
|
<https://github.com/buildout/buildout/issues/64>`_, it was reported that
|
||||||
|
under Python 3, installation of distutils scripts could attempt to copy
|
||||||
|
the ``__pycache__`` directory as a file, causing an error, apparently only
|
||||||
|
under Windows. Easy_install now skips all directories when processing
|
||||||
|
metadata scripts.
|
||||||
|
|
||||||
|
------
|
||||||
|
0.6.35
|
||||||
|
------
|
||||||
|
|
||||||
|
Note this release is backward-incompatible with distribute 0.6.23-0.6.34 in
|
||||||
|
how it parses version numbers.
|
||||||
|
|
||||||
|
* `Issue #278`_: Restored compatibility with distribute 0.6.22 and setuptools
|
||||||
|
0.6. Updated the documentation to match more closely with the version
|
||||||
|
parsing as intended in setuptools 0.6.
|
||||||
|
|
||||||
|
------
|
||||||
|
0.6.34
|
||||||
|
------
|
||||||
|
|
||||||
|
* `Issue #341`_: 0.6.33 fails to build under Python 2.4.
|
||||||
|
|
||||||
------
|
------
|
||||||
0.6.33
|
0.6.33
|
||||||
@@ -273,8 +295,8 @@ Description: ===============================
|
|||||||
* `Issue #303`_: Make sure the manifest only ever contains UTF-8 in Python 3.
|
* `Issue #303`_: Make sure the manifest only ever contains UTF-8 in Python 3.
|
||||||
* `Issue #329`_: Properly close files created by tests for compatibility with
|
* `Issue #329`_: Properly close files created by tests for compatibility with
|
||||||
Jython.
|
Jython.
|
||||||
* Work around Jython bugs `#1980 <http://bugs.jython.org/`issue1980`_>`_ and
|
* Work around Jython bugs `#1980 <http://bugs.jython.org/issue1980>`_ and
|
||||||
`#1981 <http://bugs.jython.org/`issue1981`_>`_.
|
`#1981 <http://bugs.jython.org/issue1981>`_.
|
||||||
* `Issue #334`_: Provide workaround for packages that reference `sys.__stdout__`
|
* `Issue #334`_: Provide workaround for packages that reference `sys.__stdout__`
|
||||||
such as numpy does. This change should address
|
such as numpy does. This change should address
|
||||||
`virtualenv #359 <https://github.com/pypa/virtualenv/issues/359>`_ as long
|
`virtualenv #359 <https://github.com/pypa/virtualenv/issues/359>`_ as long
|
||||||
@@ -625,19 +647,19 @@ Description: ===============================
|
|||||||
==========
|
==========
|
||||||
|
|
||||||
* Added Python 3 support; see docs/python3.txt.
|
* Added Python 3 support; see docs/python3.txt.
|
||||||
This closes http://bugs.python.org/setuptools/`issue39`_.
|
This closes http://bugs.python.org/setuptools/issue39.
|
||||||
|
|
||||||
* Added option to run 2to3 automatically when installing on Python 3.
|
* Added option to run 2to3 automatically when installing on Python 3.
|
||||||
This closes `issue #31`_.
|
This closes `issue #31`_.
|
||||||
|
|
||||||
* Fixed invalid usage of requirement.parse, that broke develop -d.
|
* Fixed invalid usage of requirement.parse, that broke develop -d.
|
||||||
This closes http://bugs.python.org/setuptools/`issue44`_.
|
This closes http://bugs.python.org/setuptools/issue44.
|
||||||
|
|
||||||
* Fixed script launcher for 64-bit Windows.
|
* Fixed script launcher for 64-bit Windows.
|
||||||
This closes http://bugs.python.org/setuptools/`issue2`_.
|
This closes http://bugs.python.org/setuptools/issue2.
|
||||||
|
|
||||||
* KeyError when compiling extensions.
|
* KeyError when compiling extensions.
|
||||||
This closes http://bugs.python.org/setuptools/`issue41`_.
|
This closes http://bugs.python.org/setuptools/issue41.
|
||||||
|
|
||||||
bootstrapping
|
bootstrapping
|
||||||
=============
|
=============
|
||||||
@@ -647,7 +669,7 @@ Description: ===============================
|
|||||||
* Fixed 2.6 dependencies. This closes `issue #50`_.
|
* Fixed 2.6 dependencies. This closes `issue #50`_.
|
||||||
|
|
||||||
* Make sure setuptools is patched when running through easy_install
|
* Make sure setuptools is patched when running through easy_install
|
||||||
This closes http://bugs.python.org/setuptools/`issue40`_.
|
This closes http://bugs.python.org/setuptools/issue40.
|
||||||
|
|
||||||
-----
|
-----
|
||||||
0.6.1
|
0.6.1
|
||||||
@@ -660,9 +682,9 @@ Description: ===============================
|
|||||||
This closes `issue #16`_ and `issue #18`_.
|
This closes `issue #16`_ and `issue #18`_.
|
||||||
|
|
||||||
* zip_ok is now False by default. This closes
|
* zip_ok is now False by default. This closes
|
||||||
http://bugs.python.org/setuptools/`issue33`_.
|
http://bugs.python.org/setuptools/issue33.
|
||||||
|
|
||||||
* Fixed invalid URL error catching. http://bugs.python.org/setuptools/`issue20`_.
|
* Fixed invalid URL error catching. http://bugs.python.org/setuptools/issue20.
|
||||||
|
|
||||||
* Fixed invalid bootstraping with easy_install installation (`issue #40`_).
|
* Fixed invalid bootstraping with easy_install installation (`issue #40`_).
|
||||||
Thanks to Florian Schulze for the help.
|
Thanks to Florian Schulze for the help.
|
||||||
@@ -746,6 +768,7 @@ Description: ===============================
|
|||||||
.. _`Issue #269`: http://bitbucket.org/tarek/distribute/issue/269
|
.. _`Issue #269`: http://bitbucket.org/tarek/distribute/issue/269
|
||||||
.. _`Issue #272`: http://bitbucket.org/tarek/distribute/issue/272
|
.. _`Issue #272`: http://bitbucket.org/tarek/distribute/issue/272
|
||||||
.. _`Issue #273`: http://bitbucket.org/tarek/distribute/issue/273
|
.. _`Issue #273`: http://bitbucket.org/tarek/distribute/issue/273
|
||||||
|
.. _`Issue #278`: http://bitbucket.org/tarek/distribute/issue/278
|
||||||
.. _`Issue #283`: http://bitbucket.org/tarek/distribute/issue/283
|
.. _`Issue #283`: http://bitbucket.org/tarek/distribute/issue/283
|
||||||
.. _`Issue #294`: http://bitbucket.org/tarek/distribute/issue/294
|
.. _`Issue #294`: http://bitbucket.org/tarek/distribute/issue/294
|
||||||
.. _`Issue #299`: http://bitbucket.org/tarek/distribute/issue/299
|
.. _`Issue #299`: http://bitbucket.org/tarek/distribute/issue/299
|
||||||
@@ -836,15 +859,7 @@ Description: ===============================
|
|||||||
.. _`issue #7`: http://bitbucket.org/tarek/distribute/issue/7
|
.. _`issue #7`: http://bitbucket.org/tarek/distribute/issue/7
|
||||||
.. _`issue #8`: http://bitbucket.org/tarek/distribute/issue/8
|
.. _`issue #8`: http://bitbucket.org/tarek/distribute/issue/8
|
||||||
.. _`issue #9`: http://bitbucket.org/tarek/distribute/issue/9
|
.. _`issue #9`: http://bitbucket.org/tarek/distribute/issue/9
|
||||||
.. _`issue1980`: http://bitbucket.org/tarek/distribute/issue/1980
|
.. _`issue 64`: http://bitbucket.org/tarek/distribute/issue/64
|
||||||
.. _`issue1981`: http://bitbucket.org/tarek/distribute/issue/1981
|
|
||||||
.. _`issue2`: http://bitbucket.org/tarek/distribute/issue/2
|
|
||||||
.. _`issue20`: http://bitbucket.org/tarek/distribute/issue/20
|
|
||||||
.. _`issue33`: http://bitbucket.org/tarek/distribute/issue/33
|
|
||||||
.. _`issue39`: http://bitbucket.org/tarek/distribute/issue/39
|
|
||||||
.. _`issue40`: http://bitbucket.org/tarek/distribute/issue/40
|
|
||||||
.. _`issue41`: http://bitbucket.org/tarek/distribute/issue/41
|
|
||||||
.. _`issue44`: http://bitbucket.org/tarek/distribute/issue/44
|
|
||||||
|
|
||||||
|
|
||||||
Keywords: CPAN PyPI distutils eggs package management
|
Keywords: CPAN PyPI distutils eggs package management
|
||||||
@@ -99,9 +99,9 @@ Source installation
|
|||||||
|
|
||||||
Download the source tarball, uncompress it, then run the install command::
|
Download the source tarball, uncompress it, then run the install command::
|
||||||
|
|
||||||
$ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.34.tar.gz
|
$ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.36.tar.gz
|
||||||
$ tar -xzvf distribute-0.6.34.tar.gz
|
$ tar -xzvf distribute-0.6.36.tar.gz
|
||||||
$ cd distribute-0.6.34
|
$ cd distribute-0.6.36
|
||||||
$ python setup.py install
|
$ python setup.py install
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
Vendored
Vendored
+41
-26
@@ -1,6 +1,6 @@
|
|||||||
Metadata-Version: 1.1
|
Metadata-Version: 1.1
|
||||||
Name: distribute
|
Name: distribute
|
||||||
Version: 0.6.34
|
Version: 0.6.36
|
||||||
Summary: Easily download, build, install, upgrade, and uninstall Python packages
|
Summary: Easily download, build, install, upgrade, and uninstall Python packages
|
||||||
Home-page: http://packages.python.org/distribute
|
Home-page: http://packages.python.org/distribute
|
||||||
Author: The fellowship of the packaging
|
Author: The fellowship of the packaging
|
||||||
@@ -107,9 +107,9 @@ Description: ===============================
|
|||||||
|
|
||||||
Download the source tarball, uncompress it, then run the install command::
|
Download the source tarball, uncompress it, then run the install command::
|
||||||
|
|
||||||
$ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.34.tar.gz
|
$ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.36.tar.gz
|
||||||
$ tar -xzvf distribute-0.6.34.tar.gz
|
$ tar -xzvf distribute-0.6.36.tar.gz
|
||||||
$ cd distribute-0.6.34
|
$ cd distribute-0.6.36
|
||||||
$ python setup.py install
|
$ python setup.py install
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
@@ -238,11 +238,33 @@ Description: ===============================
|
|||||||
CHANGES
|
CHANGES
|
||||||
=======
|
=======
|
||||||
|
|
||||||
----------
|
------
|
||||||
Unreleased
|
0.6.36
|
||||||
----------
|
------
|
||||||
|
|
||||||
+ `Issue #341`_: 0.6.33 fails to build under python 2.4
|
* Pull Request #35: In `Buildout `issue 64`_
|
||||||
|
<https://github.com/buildout/buildout/issues/64>`_, it was reported that
|
||||||
|
under Python 3, installation of distutils scripts could attempt to copy
|
||||||
|
the ``__pycache__`` directory as a file, causing an error, apparently only
|
||||||
|
under Windows. Easy_install now skips all directories when processing
|
||||||
|
metadata scripts.
|
||||||
|
|
||||||
|
------
|
||||||
|
0.6.35
|
||||||
|
------
|
||||||
|
|
||||||
|
Note this release is backward-incompatible with distribute 0.6.23-0.6.34 in
|
||||||
|
how it parses version numbers.
|
||||||
|
|
||||||
|
* `Issue #278`_: Restored compatibility with distribute 0.6.22 and setuptools
|
||||||
|
0.6. Updated the documentation to match more closely with the version
|
||||||
|
parsing as intended in setuptools 0.6.
|
||||||
|
|
||||||
|
------
|
||||||
|
0.6.34
|
||||||
|
------
|
||||||
|
|
||||||
|
* `Issue #341`_: 0.6.33 fails to build under Python 2.4.
|
||||||
|
|
||||||
------
|
------
|
||||||
0.6.33
|
0.6.33
|
||||||
@@ -273,8 +295,8 @@ Description: ===============================
|
|||||||
* `Issue #303`_: Make sure the manifest only ever contains UTF-8 in Python 3.
|
* `Issue #303`_: Make sure the manifest only ever contains UTF-8 in Python 3.
|
||||||
* `Issue #329`_: Properly close files created by tests for compatibility with
|
* `Issue #329`_: Properly close files created by tests for compatibility with
|
||||||
Jython.
|
Jython.
|
||||||
* Work around Jython bugs `#1980 <http://bugs.jython.org/`issue1980`_>`_ and
|
* Work around Jython bugs `#1980 <http://bugs.jython.org/issue1980>`_ and
|
||||||
`#1981 <http://bugs.jython.org/`issue1981`_>`_.
|
`#1981 <http://bugs.jython.org/issue1981>`_.
|
||||||
* `Issue #334`_: Provide workaround for packages that reference `sys.__stdout__`
|
* `Issue #334`_: Provide workaround for packages that reference `sys.__stdout__`
|
||||||
such as numpy does. This change should address
|
such as numpy does. This change should address
|
||||||
`virtualenv #359 <https://github.com/pypa/virtualenv/issues/359>`_ as long
|
`virtualenv #359 <https://github.com/pypa/virtualenv/issues/359>`_ as long
|
||||||
@@ -625,19 +647,19 @@ Description: ===============================
|
|||||||
==========
|
==========
|
||||||
|
|
||||||
* Added Python 3 support; see docs/python3.txt.
|
* Added Python 3 support; see docs/python3.txt.
|
||||||
This closes http://bugs.python.org/setuptools/`issue39`_.
|
This closes http://bugs.python.org/setuptools/issue39.
|
||||||
|
|
||||||
* Added option to run 2to3 automatically when installing on Python 3.
|
* Added option to run 2to3 automatically when installing on Python 3.
|
||||||
This closes `issue #31`_.
|
This closes `issue #31`_.
|
||||||
|
|
||||||
* Fixed invalid usage of requirement.parse, that broke develop -d.
|
* Fixed invalid usage of requirement.parse, that broke develop -d.
|
||||||
This closes http://bugs.python.org/setuptools/`issue44`_.
|
This closes http://bugs.python.org/setuptools/issue44.
|
||||||
|
|
||||||
* Fixed script launcher for 64-bit Windows.
|
* Fixed script launcher for 64-bit Windows.
|
||||||
This closes http://bugs.python.org/setuptools/`issue2`_.
|
This closes http://bugs.python.org/setuptools/issue2.
|
||||||
|
|
||||||
* KeyError when compiling extensions.
|
* KeyError when compiling extensions.
|
||||||
This closes http://bugs.python.org/setuptools/`issue41`_.
|
This closes http://bugs.python.org/setuptools/issue41.
|
||||||
|
|
||||||
bootstrapping
|
bootstrapping
|
||||||
=============
|
=============
|
||||||
@@ -647,7 +669,7 @@ Description: ===============================
|
|||||||
* Fixed 2.6 dependencies. This closes `issue #50`_.
|
* Fixed 2.6 dependencies. This closes `issue #50`_.
|
||||||
|
|
||||||
* Make sure setuptools is patched when running through easy_install
|
* Make sure setuptools is patched when running through easy_install
|
||||||
This closes http://bugs.python.org/setuptools/`issue40`_.
|
This closes http://bugs.python.org/setuptools/issue40.
|
||||||
|
|
||||||
-----
|
-----
|
||||||
0.6.1
|
0.6.1
|
||||||
@@ -660,9 +682,9 @@ Description: ===============================
|
|||||||
This closes `issue #16`_ and `issue #18`_.
|
This closes `issue #16`_ and `issue #18`_.
|
||||||
|
|
||||||
* zip_ok is now False by default. This closes
|
* zip_ok is now False by default. This closes
|
||||||
http://bugs.python.org/setuptools/`issue33`_.
|
http://bugs.python.org/setuptools/issue33.
|
||||||
|
|
||||||
* Fixed invalid URL error catching. http://bugs.python.org/setuptools/`issue20`_.
|
* Fixed invalid URL error catching. http://bugs.python.org/setuptools/issue20.
|
||||||
|
|
||||||
* Fixed invalid bootstraping with easy_install installation (`issue #40`_).
|
* Fixed invalid bootstraping with easy_install installation (`issue #40`_).
|
||||||
Thanks to Florian Schulze for the help.
|
Thanks to Florian Schulze for the help.
|
||||||
@@ -746,6 +768,7 @@ Description: ===============================
|
|||||||
.. _`Issue #269`: http://bitbucket.org/tarek/distribute/issue/269
|
.. _`Issue #269`: http://bitbucket.org/tarek/distribute/issue/269
|
||||||
.. _`Issue #272`: http://bitbucket.org/tarek/distribute/issue/272
|
.. _`Issue #272`: http://bitbucket.org/tarek/distribute/issue/272
|
||||||
.. _`Issue #273`: http://bitbucket.org/tarek/distribute/issue/273
|
.. _`Issue #273`: http://bitbucket.org/tarek/distribute/issue/273
|
||||||
|
.. _`Issue #278`: http://bitbucket.org/tarek/distribute/issue/278
|
||||||
.. _`Issue #283`: http://bitbucket.org/tarek/distribute/issue/283
|
.. _`Issue #283`: http://bitbucket.org/tarek/distribute/issue/283
|
||||||
.. _`Issue #294`: http://bitbucket.org/tarek/distribute/issue/294
|
.. _`Issue #294`: http://bitbucket.org/tarek/distribute/issue/294
|
||||||
.. _`Issue #299`: http://bitbucket.org/tarek/distribute/issue/299
|
.. _`Issue #299`: http://bitbucket.org/tarek/distribute/issue/299
|
||||||
@@ -836,15 +859,7 @@ Description: ===============================
|
|||||||
.. _`issue #7`: http://bitbucket.org/tarek/distribute/issue/7
|
.. _`issue #7`: http://bitbucket.org/tarek/distribute/issue/7
|
||||||
.. _`issue #8`: http://bitbucket.org/tarek/distribute/issue/8
|
.. _`issue #8`: http://bitbucket.org/tarek/distribute/issue/8
|
||||||
.. _`issue #9`: http://bitbucket.org/tarek/distribute/issue/9
|
.. _`issue #9`: http://bitbucket.org/tarek/distribute/issue/9
|
||||||
.. _`issue1980`: http://bitbucket.org/tarek/distribute/issue/1980
|
.. _`issue 64`: http://bitbucket.org/tarek/distribute/issue/64
|
||||||
.. _`issue1981`: http://bitbucket.org/tarek/distribute/issue/1981
|
|
||||||
.. _`issue2`: http://bitbucket.org/tarek/distribute/issue/2
|
|
||||||
.. _`issue20`: http://bitbucket.org/tarek/distribute/issue/20
|
|
||||||
.. _`issue33`: http://bitbucket.org/tarek/distribute/issue/33
|
|
||||||
.. _`issue39`: http://bitbucket.org/tarek/distribute/issue/39
|
|
||||||
.. _`issue40`: http://bitbucket.org/tarek/distribute/issue/40
|
|
||||||
.. _`issue41`: http://bitbucket.org/tarek/distribute/issue/41
|
|
||||||
.. _`issue44`: http://bitbucket.org/tarek/distribute/issue/44
|
|
||||||
|
|
||||||
|
|
||||||
Keywords: CPAN PyPI distutils eggs package management
|
Keywords: CPAN PyPI distutils eggs package management
|
||||||
Vendored
+1
-1
@@ -49,7 +49,7 @@ except ImportError:
|
|||||||
args = [quote(arg) for arg in args]
|
args = [quote(arg) for arg in args]
|
||||||
return os.spawnl(os.P_WAIT, sys.executable, *args) == 0
|
return os.spawnl(os.P_WAIT, sys.executable, *args) == 0
|
||||||
|
|
||||||
DEFAULT_VERSION = "0.6.34"
|
DEFAULT_VERSION = "0.6.36"
|
||||||
DEFAULT_URL = "http://pypi.python.org/packages/source/d/distribute/"
|
DEFAULT_URL = "http://pypi.python.org/packages/source/d/distribute/"
|
||||||
SETUPTOOLS_FAKED_VERSION = "0.6c11"
|
SETUPTOOLS_FAKED_VERSION = "0.6c11"
|
||||||
|
|
||||||
+6
-12
@@ -187,10 +187,11 @@ than ``2.4.1`` (which has a higher release number).
|
|||||||
|
|
||||||
A pre-release tag is a series of letters that are alphabetically before
|
A pre-release tag is a series of letters that are alphabetically before
|
||||||
"final". Some examples of prerelease tags would include ``alpha``, ``beta``,
|
"final". Some examples of prerelease tags would include ``alpha``, ``beta``,
|
||||||
``a``, ``c``, ``dev``, and so on. You do not have to place a dot before
|
``a``, ``c``, ``dev``, and so on. You do not have to place a dot or dash
|
||||||
the prerelease tag if it's immediately after a number, but it's okay to do
|
before the prerelease tag if it's immediately after a number, but it's okay to
|
||||||
so if you prefer. Thus, ``2.4c1`` and ``2.4.c1`` both represent release
|
do so if you prefer. Thus, ``2.4c1`` and ``2.4.c1`` and ``2.4-c1`` all
|
||||||
candidate 1 of version ``2.4``, and are treated as identical by setuptools.
|
represent release candidate 1 of version ``2.4``, and are treated as identical
|
||||||
|
by setuptools.
|
||||||
|
|
||||||
In addition, there are three special prerelease tags that are treated as if
|
In addition, there are three special prerelease tags that are treated as if
|
||||||
they were the letter ``c``: ``pre``, ``preview``, and ``rc``. So, version
|
they were the letter ``c``: ``pre``, ``preview``, and ``rc``. So, version
|
||||||
@@ -216,13 +217,6 @@ a post-release tag, so this version is *newer* than ``0.6a9.dev``.
|
|||||||
For the most part, setuptools' interpretation of version numbers is intuitive,
|
For the most part, setuptools' interpretation of version numbers is intuitive,
|
||||||
but here are a few tips that will keep you out of trouble in the corner cases:
|
but here are a few tips that will keep you out of trouble in the corner cases:
|
||||||
|
|
||||||
* Don't use ``-`` or any other character than ``.`` as a separator, unless you
|
|
||||||
really want a post-release. Remember that ``2.1-rc2`` means you've
|
|
||||||
*already* released ``2.1``, whereas ``2.1rc2`` and ``2.1.c2`` are candidates
|
|
||||||
you're putting out *before* ``2.1``. If you accidentally distribute copies
|
|
||||||
of a post-release that you meant to be a pre-release, the only safe fix is to
|
|
||||||
bump your main release number (e.g. to ``2.1.1``) and re-release the project.
|
|
||||||
|
|
||||||
* Don't stick adjoining pre-release tags together without a dot or number
|
* Don't stick adjoining pre-release tags together without a dot or number
|
||||||
between them. Version ``1.9adev`` is the ``adev`` prerelease of ``1.9``,
|
between them. Version ``1.9adev`` is the ``adev`` prerelease of ``1.9``,
|
||||||
*not* a development pre-release of ``1.9a``. Use ``.dev`` instead, as in
|
*not* a development pre-release of ``1.9a``. Use ``.dev`` instead, as in
|
||||||
@@ -239,7 +233,7 @@ but here are a few tips that will keep you out of trouble in the corner cases:
|
|||||||
>>> parse_version('1.9.a.dev') == parse_version('1.9a0dev')
|
>>> parse_version('1.9.a.dev') == parse_version('1.9a0dev')
|
||||||
True
|
True
|
||||||
>>> parse_version('2.1-rc2') < parse_version('2.1')
|
>>> parse_version('2.1-rc2') < parse_version('2.1')
|
||||||
False
|
True
|
||||||
>>> parse_version('0.6a9dev-r41475') < parse_version('0.6a9')
|
>>> parse_version('0.6a9dev-r41475') < parse_version('0.6a9')
|
||||||
True
|
True
|
||||||
|
|
||||||
+2
-2
@@ -48,9 +48,9 @@ copyright = u'2009-2011, The fellowship of the packaging'
|
|||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = '0.6.34'
|
version = '0.6.36'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '0.6.34'
|
release = '0.6.36'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
Vendored
Vendored
Vendored
+6
-12
@@ -187,10 +187,11 @@ than ``2.4.1`` (which has a higher release number).
|
|||||||
|
|
||||||
A pre-release tag is a series of letters that are alphabetically before
|
A pre-release tag is a series of letters that are alphabetically before
|
||||||
"final". Some examples of prerelease tags would include ``alpha``, ``beta``,
|
"final". Some examples of prerelease tags would include ``alpha``, ``beta``,
|
||||||
``a``, ``c``, ``dev``, and so on. You do not have to place a dot before
|
``a``, ``c``, ``dev``, and so on. You do not have to place a dot or dash
|
||||||
the prerelease tag if it's immediately after a number, but it's okay to do
|
before the prerelease tag if it's immediately after a number, but it's okay to
|
||||||
so if you prefer. Thus, ``2.4c1`` and ``2.4.c1`` both represent release
|
do so if you prefer. Thus, ``2.4c1`` and ``2.4.c1`` and ``2.4-c1`` all
|
||||||
candidate 1 of version ``2.4``, and are treated as identical by setuptools.
|
represent release candidate 1 of version ``2.4``, and are treated as identical
|
||||||
|
by setuptools.
|
||||||
|
|
||||||
In addition, there are three special prerelease tags that are treated as if
|
In addition, there are three special prerelease tags that are treated as if
|
||||||
they were the letter ``c``: ``pre``, ``preview``, and ``rc``. So, version
|
they were the letter ``c``: ``pre``, ``preview``, and ``rc``. So, version
|
||||||
@@ -216,13 +217,6 @@ a post-release tag, so this version is *newer* than ``0.6a9.dev``.
|
|||||||
For the most part, setuptools' interpretation of version numbers is intuitive,
|
For the most part, setuptools' interpretation of version numbers is intuitive,
|
||||||
but here are a few tips that will keep you out of trouble in the corner cases:
|
but here are a few tips that will keep you out of trouble in the corner cases:
|
||||||
|
|
||||||
* Don't use ``-`` or any other character than ``.`` as a separator, unless you
|
|
||||||
really want a post-release. Remember that ``2.1-rc2`` means you've
|
|
||||||
*already* released ``2.1``, whereas ``2.1rc2`` and ``2.1.c2`` are candidates
|
|
||||||
you're putting out *before* ``2.1``. If you accidentally distribute copies
|
|
||||||
of a post-release that you meant to be a pre-release, the only safe fix is to
|
|
||||||
bump your main release number (e.g. to ``2.1.1``) and re-release the project.
|
|
||||||
|
|
||||||
* Don't stick adjoining pre-release tags together without a dot or number
|
* Don't stick adjoining pre-release tags together without a dot or number
|
||||||
between them. Version ``1.9adev`` is the ``adev`` prerelease of ``1.9``,
|
between them. Version ``1.9adev`` is the ``adev`` prerelease of ``1.9``,
|
||||||
*not* a development pre-release of ``1.9a``. Use ``.dev`` instead, as in
|
*not* a development pre-release of ``1.9a``. Use ``.dev`` instead, as in
|
||||||
@@ -239,7 +233,7 @@ but here are a few tips that will keep you out of trouble in the corner cases:
|
|||||||
>>> parse_version('1.9.a.dev') == parse_version('1.9a0dev')
|
>>> parse_version('1.9.a.dev') == parse_version('1.9a0dev')
|
||||||
True
|
True
|
||||||
>>> parse_version('2.1-rc2') < parse_version('2.1')
|
>>> parse_version('2.1-rc2') < parse_version('2.1')
|
||||||
False
|
True
|
||||||
>>> parse_version('0.6a9dev-r41475') < parse_version('0.6a9')
|
>>> parse_version('0.6a9dev-r41475') < parse_version('0.6a9')
|
||||||
True
|
True
|
||||||
|
|
||||||
+3
-1
@@ -1936,7 +1936,7 @@ replace = {'pre':'c', 'preview':'c','-':'final-','rc':'c','dev':'@'}.get
|
|||||||
def _parse_version_parts(s):
|
def _parse_version_parts(s):
|
||||||
for part in component_re.split(s):
|
for part in component_re.split(s):
|
||||||
part = replace(part,part)
|
part = replace(part,part)
|
||||||
if part in ['', '.']:
|
if not part or part=='.':
|
||||||
continue
|
continue
|
||||||
if part[:1] in '0123456789':
|
if part[:1] in '0123456789':
|
||||||
yield part.zfill(8) # pad for numeric comparison
|
yield part.zfill(8) # pad for numeric comparison
|
||||||
@@ -1979,6 +1979,8 @@ def parse_version(s):
|
|||||||
parts = []
|
parts = []
|
||||||
for part in _parse_version_parts(s.lower()):
|
for part in _parse_version_parts(s.lower()):
|
||||||
if part.startswith('*'):
|
if part.startswith('*'):
|
||||||
|
if part<'*final': # remove '-' before a prerelease tag
|
||||||
|
while parts and parts[-1]=='*final-': parts.pop()
|
||||||
# remove trailing zeros from each series of numeric parts
|
# remove trailing zeros from each series of numeric parts
|
||||||
while parts and parts[-1]=='00000000':
|
while parts and parts[-1]=='00000000':
|
||||||
parts.pop()
|
parts.pop()
|
||||||
@@ -20,7 +20,7 @@ try:
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
VERSION = '0.6.34'
|
VERSION = '0.6.36'
|
||||||
|
|
||||||
def get_next_version():
|
def get_next_version():
|
||||||
digits = map(int, VERSION.split('.'))
|
digits = map(int, VERSION.split('.'))
|
||||||
@@ -50,7 +50,7 @@ def get_mercurial_creds(system='https://bitbucket.org', username=None):
|
|||||||
# todo: consider getting this from .hgrc
|
# todo: consider getting this from .hgrc
|
||||||
username = username or getpass.getuser()
|
username = username or getpass.getuser()
|
||||||
keyring_username = '@@'.join((username, system))
|
keyring_username = '@@'.join((username, system))
|
||||||
system = '@'.join((keyring_username, 'Mercurial'))
|
system = 'Mercurial'
|
||||||
password = (
|
password = (
|
||||||
keyring.get_password(system, keyring_username)
|
keyring.get_password(system, keyring_username)
|
||||||
if 'keyring' in globals()
|
if 'keyring' in globals()
|
||||||
@@ -46,7 +46,7 @@ exec(init_file.read(), d)
|
|||||||
init_file.close()
|
init_file.close()
|
||||||
|
|
||||||
SETUP_COMMANDS = d['__all__']
|
SETUP_COMMANDS = d['__all__']
|
||||||
VERSION = "0.6.34"
|
VERSION = "0.6.36"
|
||||||
|
|
||||||
from setuptools import setup, find_packages
|
from setuptools import setup, find_packages
|
||||||
from setuptools.command.build_py import build_py as _build_py
|
from setuptools.command.build_py import build_py as _build_py
|
||||||
@@ -136,7 +136,7 @@ if _being_installed():
|
|||||||
# return contents of reStructureText file with linked issue references
|
# return contents of reStructureText file with linked issue references
|
||||||
def _linkified(rst_path):
|
def _linkified(rst_path):
|
||||||
bitroot = 'http://bitbucket.org/tarek/distribute'
|
bitroot = 'http://bitbucket.org/tarek/distribute'
|
||||||
revision = re.compile(r'\b(issue\s*#?\d+)\b', re.M | re.I)
|
revision = re.compile(r'\b(issue\s+#?\d+)\b', re.M | re.I)
|
||||||
|
|
||||||
rst_file = open(rst_path)
|
rst_file = open(rst_path)
|
||||||
rst_content = rst_file.read()
|
rst_content = rst_file.read()
|
||||||
Vendored
Vendored
Vendored
+4
@@ -522,6 +522,10 @@ Please make the appropriate changes for your system and try again.
|
|||||||
"""Write all the scripts for `dist`, unless scripts are excluded"""
|
"""Write all the scripts for `dist`, unless scripts are excluded"""
|
||||||
if not self.exclude_scripts and dist.metadata_isdir('scripts'):
|
if not self.exclude_scripts and dist.metadata_isdir('scripts'):
|
||||||
for script_name in dist.metadata_listdir('scripts'):
|
for script_name in dist.metadata_listdir('scripts'):
|
||||||
|
if dist.metadata_isdir('scripts/' + script_name):
|
||||||
|
# The "script" is a directory, likely a Python 3
|
||||||
|
# __pycache__ directory, so skip it.
|
||||||
|
continue
|
||||||
self.install_script(
|
self.install_script(
|
||||||
dist, script_name,
|
dist, script_name,
|
||||||
dist.get_metadata('scripts/'+script_name)
|
dist.get_metadata('scripts/'+script_name)
|
||||||
Vendored
Vendored
Vendored
Vendored
Vendored
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user