debian: build-wheels: partial debian support

Add debian support to wheels scripts. Note: this solution is not fully
functional. Remaining issues will be addressed in separate commits. See
FIXME file in this patch.

* build-wheels: move OS-specific files to subdirectories
  {dev,stable}-wheels.cfg
  {dev,stable}-wheels-py2.cfg
  openstack.cfg
  Dockerfile

* added a copy of openstack/ussuri requirements files under
  debian/openstack-requirements/ussuri/upstream for reference

* added a patched version of openstack/ussuri requirements files based
  on above. Changes:
  - added lines for python3.9
  - disabled some packages that don't compile on debian (nss, thrift);
    these will be installed as DEB files into the base image

* build-base-wheels.sh:
  - auto-detect OS & version by default
  - add local build repo to docker file
  - define CPUCOUNT=2 when building wheels. Otherwise some wheels run
    out of RAM when building.

* build-wheel-tarball.sh:
  - auto-detect OS & version
  - new option: --keep-image
  - allow openstack URL to be a local file name
  - assume DEB wheel packages may install wheels at any level, not just
    under "/wheels". It's not consistent with CentOS, but many DEB
    packages do it that way now.

* get-stx-wheels.sh:
  - auto-detect OS & version defaults
  - debian: don't scan 3rd-party libraries for wheels. They don't exist
    as files within the POD, but only in the repomgr repo. To be
    addressed later.
  - debian: don't scan for lower layer wheels. Layered builds are not
    supported by Debian right now. To be addressed later.
  - debian: extarct wheels from DEB files

CHANGES TO DEBIAN WHEEL VERSIONS COMPARED TO CENTOS
===================================================

* Python 3 (stable-wheels.cfg):
  - libvirt_python 4.7.0 upgraded to 7.0.0. Original version doesn't
    compile on debian/bullseye. New version matches the SO package
    included with bullseye
  - python_nss: removed. This module doesn't compile on bullseye as-is.
    A patched version is compiled as a DEB package as part of STX [1]
  - thriftpy: removed. This module doesn't compile on bullseye as-is. A
    patched version is provided by Debian [2]

* Python2 (stable-wheels-py2.cfg):
  - python-nss: removed. This module doesn't compile on bullseye as-is.
    A patched version is compiled as a DEB package as part of STX, which
    also provides the wheel [1]

TESTS
=====

- Build py2 & py3 wheels on debian & centos

REFERENCES
==========
[1] Import python-nss package to debian:
    https://review.opendev.org/c/starlingx/integ/+/837399

[2] Add additional packages to download lists:
    https://review.opendev.org/c/starlingx/tools/+/837904

Story: 2009897
Task: 44694

Depends-On: https://review.opendev.org/c/starlingx/integ/+/837399
Depends-On: https://review.opendev.org/c/starlingx/tools/+/837904

Signed-off-by: Davlet Panech <davlet.panech@windriver.com>
Change-Id: I0889118b9f0125888fb661e58ff41579da7eb3b4
This commit is contained in:
Davlet Panech 2022-03-30 00:09:11 +00:00
parent 9ed4cf97c6
commit 075b71dcf9
23 changed files with 4231 additions and 44 deletions

View File

@ -0,0 +1,20 @@
Debian
======
debian/Dockerfile:
- disable upstream repo, use only the managed packages.
Requires additions to download lists in stx-tool.
- convert thrifty & nss to wheels and don't install them in Dockerfile
build-wheel-tarball.sh:
- current DEB wheel packages install wheels at random locations, rather
than under /wheels as in CentOS. Fix them and remove the workaround
in this script.
build-wheel-tarball.sh:
- look for wheels in non-Starlingx DEBs. Requires accessing repomgr via
the REST API (?)
- support layered builds (ie scan DEBs from lower layers)
debian/openstack-requirements:
- requirements are not compatible with debian/bullseye

View File

@ -18,15 +18,16 @@ if [ -z "${MY_WORKSPACE}" -o -z "${MY_REPO}" ]; then
exit 1
fi
DOCKER_PATH=${MY_REPO}/build-tools/build-wheels/docker
KEEP_IMAGE=no
KEEP_CONTAINER=no
OS=centos
OS_VERSION=7.5.1804
SUPPORTED_OS_LIST=('centos' 'debian')
OS=
OS_VERSION=
BUILD_STREAM=stable
HTTP_PROXY=""
HTTPS_PROXY=""
NO_PROXY=""
: ${PYTHON3:=python3}
declare -i MAX_ATTEMPTS=1
function usage {
@ -35,8 +36,8 @@ Usage:
$(basename $0) [ --os <os> ] [ --keep-image ] [ --keep-container ] [ --stream <stable|dev> ]
Options:
--os: Specify base OS (eg. centos)
--os-version: Specify OS version
--os: Override base OS (eg. centos; default: auto)
--os-version: Override OS version (default: auto)
--keep-image: Skip deletion of the wheel build image in docker
--keep-container: Skip deletion of container used for the build
--http_proxy: Set http proxy <URL>:<PORT>, urls splitted by ","
@ -114,26 +115,38 @@ while true; do
esac
done
if [ -z "$OS" ] ; then
OS="$(ID= && source /etc/os-release 2>/dev/null && echo $ID || true)"
if ! [ -n "$OS" ]; then
echo "Unable to determine OS" >&2
echo "Re-run with \"--os\" option" >&2
exit 1
fi
fi
BUILD_IMAGE_NAME="${USER}-$(basename ${MY_WORKSPACE})-wheelbuilder:${OS}-${BUILD_STREAM}"
# BUILD_IMAGE_NAME can't have caps if it's passed to docker build -t $BUILD_IMAGE_NAME.
# The following will substitute caps with lower case.
BUILD_IMAGE_NAME="${BUILD_IMAGE_NAME,,}"
DOCKER_FILE=${DOCKER_PATH}/${OS}-dockerfile
function supported_os_list {
for f in ${DOCKER_PATH}/*-dockerfile; do
echo $(basename ${f%-dockerfile})
done | xargs echo
}
DOCKER_FILE=${MY_SCRIPT_DIR}/${OS}/Dockerfile
if [ ! -f ${DOCKER_FILE} ]; then
echo "Unsupported OS specified: ${OS}" >&2
echo "Supported OS options: $(supported_os_list)" >&2
echo "Supported OS options: ${SUPPORTED_OS_LIST[@]}" >&2
exit 1
fi
if [ -z "$OS_VERSION" ]; then
OS_VERSION="$(sed -r -n 's/^\s*ARG\s+RELEASE\s*=\s*(\S+).*/\1/p' "$DOCKER_FILE")"
if [ -z "$OS_VERSION" ]; then
echo "Unable to determine OS_VERSION" >&2
echo "Re-run with \"--os-version\" option" >&2
exit 1
fi
fi
# Print a loud message
function notice {
(
@ -191,10 +204,11 @@ function prepare_output_dir {
fi
}
DOCKER_BUILD_PATH=${MY_WORKSPACE}/std/build-wheels-${OS}-${BUILD_STREAM}/docker
BUILD_OUTPUT_PATH=${MY_WORKSPACE}/std/build-wheels-${OS}-${BUILD_STREAM}/base
BUILD_OUTPUT_PATH_PY2=${MY_WORKSPACE}/std/build-wheels-${OS}-${BUILD_STREAM}/base-py2
WHEELS_CFG=${DOCKER_PATH}/${BUILD_STREAM}-wheels.cfg
WHEELS_CFG_PY2=${DOCKER_PATH}/${BUILD_STREAM}-wheels-py2.cfg
WHEELS_CFG=${MY_SCRIPT_DIR}/${OS}/${BUILD_STREAM}-wheels.cfg
WHEELS_CFG_PY2=${MY_SCRIPT_DIR}/${OS}/${BUILD_STREAM}-wheels-py2.cfg
# make sure .cfg files exist
require_file "${WHEELS_CFG}"
@ -276,6 +290,53 @@ if all_wheels_exist "${BUILD_OUTPUT_PATH}" "${WHEELS_CFG}" && \
exit 0
fi
# Create a directory containing docker files
\rm -rf "${DOCKER_BUILD_PATH}"
mkdir -p "${DOCKER_BUILD_PATH}"
\cp -r "${MY_SCRIPT_DIR}/docker-common" "${MY_SCRIPT_DIR}/${OS}" "${DOCKER_BUILD_PATH}" || exit 1
# Replace "@...@" vars in apt/*.in files
if [[ "${OS}" == "debian" ]] ; then
(
# REPOMGR_DEPLOY_URL must be defined in the environment and refer
# to the k8s repomgr service. It is normally defined by the helm
# chart of STX tools.
if [[ -z "$REPOMGR_DEPLOY_URL" ]] ; then
echo "REPOMGR_DEPLOY_URL must be defined in the environment!" >&2
exit 1
fi
# Make sure pyhon3 exists
$PYTHON3 --version >/dev/null || exit 1
# Extract host name from repomgr URL
REPOMGR_HOST=$(
$PYTHON3 -c '
import sys
from urllib.parse import urlparse
print (urlparse (sys.argv[1]).hostname)
' "$REPOMGR_DEPLOY_URL"
)
if [[ $? -ne 0 || -z "$REPOMGR_HOST" ]] ; then
echo "failed to parse REPOMGR_DEPLOY_URL !" >&2
exit 1
fi
# replace @...@ vars in apt/*.in files
count=0
for src in "${DOCKER_BUILD_PATH}/${OS}/apt"/*.in ; do
dst="${src%.in}"
sed -e "s#@REPOMGR_URL@#$REPOMGR_DEPLOY_URL#g" \
-e "s#@REPOMGR_HOST@#$REPOMGR_HOST#g" \
"$src" >"$dst" || exit 1
let ++count
done
if [[ $count -eq 0 ]] ; then
echo "No *.in files found in ${DOCKER_BUILD_PATH}/${OS}/apt !" >&2
exit 1
fi
) || exit 1
fi
# Check to see if the OS image is already pulled
docker images --format '{{.Repository}}:{{.Tag}}' ${OS}:${OS_VERSION} | grep -q "^${OS}:${OS_VERSION}$"
BASE_IMAGE_PRESENT=$?
@ -297,7 +358,7 @@ if [ ! -z "$NO_PROXY" ]; then
fi
BUILD_ARGS+=(-t ${BUILD_IMAGE_NAME})
BUILD_ARGS+=(-f ${DOCKER_PATH}/${OS}-dockerfile ${DOCKER_PATH})
BUILD_ARGS+=(-f ${DOCKER_BUILD_PATH}/${OS}/Dockerfile ${DOCKER_BUILD_PATH})
# Build image
with_retries ${MAX_ATTEMPTS} docker build "${BUILD_ARGS[@]}"
@ -321,6 +382,7 @@ if [ ! -z "$NO_PROXY" ]; then
RUN_ARGS+=(--env no_proxy=$NO_PROXY)
fi
RUN_ARGS+=(--env DISPLAY_RESULT=no)
RUN_ARGS+=(--env CPUCOUNT=2)
# Run container to build wheels
rm -f ${BUILD_OUTPUT_PATH}/failed.lst

View File

@ -17,9 +17,9 @@ if [ -z "${MY_WORKSPACE}" -o -z "${MY_REPO}" ]; then
exit 1
fi
SUPPORTED_OS_ARGS=('centos')
OS=centos
OS_VERSION=7.5.1804
SUPPORTED_OS_ARGS=('centos' 'debian')
OS=
OS_VERSION=
BUILD_STREAM=stable
VERSION=$(date --utc '+%Y.%m.%d.%H.%M') # Default version, using timestamp
PUSH=no
@ -27,6 +27,7 @@ HTTP_PROXY=""
HTTPS_PROXY=""
NO_PROXY=""
CLEAN=no
KEEP_IMAGE=no
DOCKER_USER=${USER}
declare -i MAX_ATTEMPTS=1
PYTHON2=no
@ -72,11 +73,12 @@ Options:
--version: Version for pushed image (if used with --push)
--attempts: Max attempts, in case of failure (default: 1)
--python2: Build a python2 tarball
--keep-image: Don't delete wheel builder image at the end
EOF
}
OPTS=$(getopt -o h -l help,os:,os-version:,push,clean,user:,release:,stream:,http_proxy:,https_proxy:,no_proxy:,version:,attempts:,python2 -- "$@")
OPTS=$(getopt -o h -l help,os:,os-version:,push,clean,user:,release:,stream:,http_proxy:,https_proxy:,no_proxy:,version:,attempts:,python2,keep-image -- "$@")
if [ $? -ne 0 ]; then
usage
exit 1
@ -143,6 +145,10 @@ while true; do
PYTHON2=yes
shift
;;
--keep-image)
KEEP_IMAGE=yes
shift
;;
-h | --help )
usage
exit 1
@ -155,6 +161,14 @@ while true; do
done
# Validate the OS option
if [ -z "$OS" ] ; then
OS="$(ID= && source /etc/os-release 2>/dev/null && echo $ID || true)"
if ! [ -n "$OS" ]; then
echo "Unable to determine OS" >&2
echo "Re-run with \"--os\" option" >&2
exit 1
fi
fi
VALID_OS=1
for supported_os in ${SUPPORTED_OS_ARGS[@]}; do
if [ "$OS" = "${supported_os}" ]; then
@ -169,7 +183,8 @@ if [ ${VALID_OS} -ne 0 ]; then
fi
# Read openstack URLs
source "${MY_SCRIPT_DIR}/openstack.cfg" || exit 1
OPENSTACK_CFG="${MY_SCRIPT_DIR}/$OS/openstack.cfg"
source "$OPENSTACK_CFG" || exit 1
# Set python version-specific variables
if [ "${PYTHON2}" = "yes" ]; then
@ -179,7 +194,10 @@ fi
# Build the base wheels and retrieve the StarlingX wheels
declare -a BUILD_BASE_WL_ARGS
BUILD_BASE_WL_ARGS+=(--os ${OS} --os-version ${OS_VERSION} --stream ${BUILD_STREAM})
BUILD_BASE_WL_ARGS+=(--os ${OS} --stream ${BUILD_STREAM})
if [ -n "$OS_VERSION" ]; then
BUILD_BASE_WL_ARGS+=(--os-version "${OS_VERSION}")
fi
if [ ! -z "$HTTP_PROXY" ]; then
BUILD_BASE_WL_ARGS+=(--http_proxy ${HTTP_PROXY})
fi
@ -192,6 +210,10 @@ if [ ! -z "$NO_PROXY" ]; then
BUILD_BASE_WL_ARGS+=(--no_proxy ${NO_PROXY})
fi
if [ "$KEEP_IMAGE" = "yes" ]; then
BUILD_BASE_WL_ARGS+=(--keep-image)
fi
${MY_SCRIPT_DIR}/build-base-wheels.sh ${BUILD_BASE_WL_ARGS[@]} --attempts ${MAX_ATTEMPTS}
if [ $? -ne 0 ]; then
echo "Failure running build-base-wheels.sh" >&2
@ -234,17 +256,21 @@ else
fi
fi
with_retries ${MAX_ATTEMPTS} wget "${OPENSTACK_REQ_URL}/global-requirements.txt"
if [ $? -ne 0 ]; then
echo "Failed to download global-requirements.txt" >&2
exit 1
fi
with_retries ${MAX_ATTEMPTS} wget "${OPENSTACK_REQ_URL}/upper-constraints.txt"
if [ $? -ne 0 ]; then
echo "Failed to download upper-constraints.txt" >&2
exit 1
fi
for url in "${OPENSTACK_REQ_URL}/global-requirements.txt" "${OPENSTACK_REQ_URL}/upper-constraints.txt" ; do
if echo "$url" | grep -q -E '^(https?|ftp):' >/dev/null ; then
with_retries ${MAX_ATTEMPTS} wget "$url"
if [ $? -ne 0 ]; then
echo "Failed to download $url" >&2
exit 1
fi
else
# Remove "file:" from url and treat what remains as a file name.
# Local files should be relative to the location of openstack.cfg,
# so leading slashes are menaingless, remove them as well.
url="$(echo "$url" | sed -r 's,^(file:)?/*,,')"
\cp "$(dirname "$OPENSTACK_CFG")"/"$url" ./ || exit 1
fi
done
# Delete $SKIP_CONSTRAINTS from upper-constraints.txt, if any present
for name in ${SKIP_CONSTRAINTS[@]}; do
@ -259,7 +285,14 @@ done
shopt -s nullglob
# Copy the base and stx wheels, updating upper-constraints.txt as necessary
for wheel in ../base${PY_SUFFIX}/*.whl ../stx/wheels/*.whl; do
# FIXME: debian packages install *.whl files under /usr/share/..., rather than
# /wheels. Do a deep search on that platform
if [ "${OS}" == "debian" ]; then
stx_find_wheels_cmd=(find ../stx -name '*.whl')
else
stx_find_wheels_cmd=(find ../stx/wheels -mindepth 1 -maxdepth 1 -name '*.whl')
fi
for wheel in ../base${PY_SUFFIX}/*.whl $("${stx_find_wheels_cmd[@]}") ; do
# Get the wheel name and version from the METADATA
METADATA=$(unzip -p ${wheel} '*/METADATA')
name=$(echo "${METADATA}" | grep '^Name:' | awk '{print $2}')

View File

@ -32,15 +32,15 @@ RUN set -ex ;\
# while setuptools is larger than 45.3, it no longer support "Features" in setup.py
python3 -m pip install --user setuptools==45.3 ;\
python3 -m pip install --user --upgrade wheel
COPY docker-build-wheel.sh /
COPY ${BUILD_STREAM}-wheels.cfg /wheels.cfg
COPY docker-common/docker-build-wheel.sh /
COPY centos/${BUILD_STREAM}-wheels.cfg /wheels.cfg
# Python2 packages
RUN set -ex; \
yum -y install python python-devel ;\
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py ;\
python get-pip.py
COPY ${BUILD_STREAM}-wheels-py2.cfg /wheels-py2.cfg
COPY centos/${BUILD_STREAM}-wheels-py2.cfg /wheels-py2.cfg
# root CA cert expired on October 1st, 2021
RUN yum update -y ca-certificates

View File

@ -0,0 +1,89 @@
ARG RELEASE=11.3
FROM debian:${RELEASE}
ARG BUILD_STREAM=stable
# Install apt repos
RUN mv /etc/apt/sources.list /etc/apt/sources.list.d/debian.list
COPY debian/apt/sources.list /etc/apt/sources.list.d/stx.list
COPY debian/apt/preferences /etc/apt/preferences.d/stx
# FIXME: disable upstream bullseye repo. Requires all dependent packages
# referenced by apt-get to be added to stx-tools .lst file(s). Otherwise
# we get a "random" set of packages, some from upstream, some from STX.
# FIXME: there's no ussuri/bullseye port, best we can do is "victoria" or more recent
#RUN set -ex ; \
# echo "deb [trusted=yes] http://osbpo.debian.net/osbpo bullseye-victoria-backports-nochange main" \
# /etc/apt/sources.list.d/openstack-victoria.list.disabled ; \
# Install the necessary packages for building the python modules.
# Some of these are dependencies of the specific modules, and could
# instead be added to the wheels.cfg file in the future.
RUN set -ex ; \
apt-get -y update ; \
apt-get -y --no-install-recommends --no-install-suggests install \
bzip2 \
ca-certificates \
g++ \
gcc \
git \
libev-dev \
liberasurecode-dev \
libffi-dev \
libkrb5-dev \
libldap2-dev \
libmariadb-dev \
libnss3-dev \
libpcre3-dev \
libpq-dev \
libsasl2-dev \
libsystemd-dev \
libvirt-dev \
libxml2-dev \
libxslt1-dev \
pkg-config \
python3 \
python3-dev \
python3-nss \
python3-pip \
python3-setuptools \
python3-thriftpy \
python3-wheel \
swig \
unzip \
wget \
zip \
; \
# make sure python3-nss is sane \
# the upstream version of it doesn't install pip metadata, but our patched version does
if [ `find /usr/lib/python3/dist-packages -maxdepth 1 -type f -name 'python_nss*.egg-info' -print -quit | wc -l` -eq 0 ] ; then \
echo "python-nss didn't install pip metadata!" >&2 ; \
echo "Did you compile python-nss locally prior to building this docker image?" >&2 ; \
exit 1 ; \
fi
# These are required to build the python lxml module
ENV XML2_CONFIG=/usr/bin/xml2-config XSLT_CONFIG=/usr/bin/xslt-config
# Python2 environment
RUN set -ex ; \
apt-get -y install \
python \
python-dev \
python-setuptools \
; \
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py ; \
python get-pip.py ; \
rm -f get-pip.py
# APT clean up
RUN apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Copy local files
COPY docker-common/docker-build-wheel.sh /
COPY debian/${BUILD_STREAM}-wheels.cfg /wheels.cfg
COPY debian/${BUILD_STREAM}-wheels-py2.cfg /wheels-py2.cfg

View File

@ -0,0 +1,7 @@
# See: https://manpages.debian.org/buster/apt/apt_preferences.5.en.html
Explanation: Prefer StarlingX repos over vanilla Debian
Package: *
Pin: origin "@REPOMGR_HOST@"
Pin-Priority: 999

View File

@ -0,0 +1,2 @@
deb [trusted=yes] @REPOMGR_URL@/deb-local-binary bullseye main
deb [trusted=yes] @REPOMGR_URL@/deb-local-build bullseye main

View File

@ -0,0 +1,6 @@
This directory contains the patched versions of openstack/requirements files:
ussuri/ - openstack/ussuri release
upstream/ - original unpatched versions
global-requirements.txt - patched for Debian/bullseye
upper-constraints.txt - patched for Debian/bullseye

View File

@ -0,0 +1,604 @@
abclient # Apache-2.0
alembic!=1.2.0 # MIT
amqp!=2.1.4 # BSD
ansible-runner!=1.3.5 # Apache 2.0
anyjson # BSD
appdirs # MIT License
apscheduler # MIT License
autobahn # MIT License
automaton # Apache-2.0
beautifulsoup4 # MIT
Babel!=2.4.0 # BSD
bcrypt # Apache-2.0
betamax # Apache-2.0
betamax-matchers # Apache-2.0
blockdiag!=2.0.0 # Apache-2.0
boto # MIT
boto3 # Apache-2.0
botocore # Apache-2.0
cassandra-driver!=3.6.0 # Apache-2.0
castellan # Apache-2.0
ceilometermiddleware # Apache-2.0
cachetools # MIT License
cffi # MIT
cliff!=2.9.0,!=2.17.0,<3.0.0;python_version=='2.7' # Apache-2.0
cliff!=2.9.0,!=2.17.0;python_version>='3.6' # Apache-2.0
# NOTE(mordred) python-openstackclient is broken due to bug 1810213
cmd2!=0.8.3,<0.9.0 # MIT
confluent-kafka!=1.4.0 # Apache-2.0
cotyledon # Apache-2.0
construct<2.9 # MIT
PuLP # MIT
contextlib2;python_version<'3.0' # PSF License
croniter # MIT License
cryptography!=2.0 # BSD/Apache-2.0
cursive # Apache-2.0
dataclasses;python_version=='3.6' # Apache-2.0
ddt # MIT
debtcollector<2.0.0;python_version<'3.0' # Apache-2.0
debtcollector;python_version>='3.0' # Apache-2.0
decorator # BSD
defusedxml # PSF
dib-utils # Apache-2.0
diskimage-builder!=1.6.0,!=1.7.0,!=1.7.1 # Apache-2.0
distro # Apache-2.0
Django<2;python_version<'3.0' # BSD
Django<3.0;python_version>='3.0' # BSD
django-compressor # MIT
django-debreach # BSD
django-floppyforms<2 # BSD
django-formtools # BSD
dnspython;python_version=='2.7' # http://www.dnspython.org/LICENSE
dnspython3!=1.13.0,!=1.14.0;python_version>='3.0' # http://www.dnspython.org/LICENSE
# Note(tonyb): We don't actually directly depend on docutils but we pull it in
# indirectly and we needed to blacklist 0.13.1 for problems with
# Sphinx 1.3. This can be now removed once all projects removed it.
docutils # OSI-Approved Open Source, Public Domain
dogpile.cache # BSD
dogtag-pki # LGPLv3+
dulwich!=0.19.3,!=0.19.7 # Apache-2.0
edgegrid-python # Apache-2.0
elasticsearch<3.0.0 # Apache-2.0
enmerkar;python_version>='3.0' # BSD
enum34;python_version=='2.7' or python_version=='2.6' or python_version=='3.3' # BSD
# NOTE: New versions of eventlet should not be accepted lightly
# as they have earned a reputation of frequently breaking things.
eventlet!=0.18.3,!=0.20.1,!=0.21.0,!=0.23.0,!=0.25.0 # MIT
exabgp!=4.0.6 # BSD
extras # MIT
faker # MIT
falcon # Apache-2.0
Flask!=0.11 # BSD
flask-keystone # Apache-2.0
flask-oslolog # Apache-2.0
Flask-RESTful # BSD
Flask-SQLAlchemy # BSD
fortiosclient # Apache-2.0
futures!=0.17.0;python_version=='2.7' or python_version=='2.6' # PSF
futurist<2.0.0;python_version=='2.7' # Apache-2.0
futurist;python_version>='3.6' # Apache-2.0
funcsigs;python_version=='2.7' or python_version=='2.6' # Apache-2.0
glance-store!=0.29.0 # Apache-2.0
google-api-python-client # Apache-2.0
graphviz!=0.5.0 # MIT License
greenlet!=0.4.14 # MIT
GitPython<2.1.12;python_version<'3.0' # BSD License (3 clause)
GitPython;python_version>='3.0' # BSD License (3 clause)
gunicorn<20.0.0;python_version<'3.0' # MIT
gunicorn;python_version>='3.0' # MIT
happybase!=0.7,!=1.0.0;python_version=='2.7' # MIT
heat-translator # Apache-2.0
horizon # Apache-2.0
httplib2 # MIT
hvac # Apache-2.0
icalendar # BSD
importlib-metadata # Apache-2.0
infinisdk # BSD-3
influxdb!=5.2.0,!=5.2.1,!=5.2.2,!=5.2.3;python_version<'3.0' # MIT
influxdb;python_version>='3.0' # MIT
instack-undercloud # Apache-2.0
ironic-lib # Apache-2.0
ipaddress;python_version<'3.3' # PSF
iso8601 # MIT
jira # BSD License (2 clause)
Jinja2 # BSD License (3 clause)
jmespath # MIT
jsonmodels # BSD License (3 clause)
jsonpatch!=1.20 # BSD
jsonpath-rw<2.0 # Apache-2.0
jsonpath-rw-ext # Apache-2.0
jsonschema # MIT
kazoo # Apache-2.0
keystoneauth1 # Apache-2.0
keystonemiddleware # Apache-2.0
krest # Apache-2.0
kubernetes # Apache-2.0
kuryr-lib # Apache-2.0
packaging # Apache-2.0
pylev # BSD
pypowervm!=1.1.21,!=1.1.22 # Apache-2.0
pyScss!=1.3.5 # MIT License
django-pyscss # BSD License (2 clause)
kombu!=4.0.2 # BSD
ldap3 # LGPLv3
deprecation # Apache-2.0
libvirt-python!=4.1.0,!=4.2.0,<6.0.0;python_version<'3.0' # LGPLv2+
libvirt-python!=4.1.0,!=4.2.0;python_version>='3.0' # LGPLv2+
lxml!=3.7.0 # BSD
Mako # MIT
marathon!=0.9.1 # MIT
metalsmith # Apache-2.0
microversion-parse # Apache-2.0
mistral-lib # Apache-2.0
monasca-common # Apache-2.0
monasca-statsd # Apache-2.0
monotonic;python_version<'3.3' # Apache-2.0
msgpack # Apache-2.0
munch # MIT
murano-pkg-check # Apache-2.0
mypy;python_version>='3.4' # MIT
ndg-httpsclient;python_version<'3.0' # BSD
netaddr # BSD
netifaces!=0.10.0,!=0.10.1 # MIT
netmiko # MIT
network-runner # Apache 2.0
networking-bagpipe # Apache-2.0
networking-bgpvpn # Apache-2.0
networking-l2gw # Apache-2.0
networking-odl # Apache-2.0
networking-sfc # Apache-2.0
# NOTE(fdegir): NetworkX 2.3 dropped support for Python 2
networkx<2.3;python_version<'3.0' # BSD
networkx;python_version>='3.4' # BSD
# NOTE(ralonsoh): neutron-lib 2.0.0 dropped support for Python 2
neutron-lib<2.0.0;python_version=='2.7' # Apache-2.0
neutron-lib;python_version>='3.6' # Apache-2.0
neutron-dynamic-routing # Apache-2.0
neutron-fwaas # Apache-2.0
neutron-lbaas # Apache-2.0
neutron-vpnaas # Apache-2.0
neutron # Apache-2.0
notifier # Apache-2.0
oauth2client!=4.0.0 # Apache-2.0
oauthlib # BSD
octavia-lib # Apache-2.0
openstackdocstheme # Apache-2.0
osc-lib # Apache-2.0
osc-placement # Apache-2.0
oslo.cache!=1.31.1,<2.0.0;python_version<'3.0' # Apache-2.0
oslo.cache!=1.31.1,!=2.1.0;python_version>='3.0' # Apache-2.0
oslo.config!=4.3.0,!=4.4.0,<8.0.0;python_version<'3.0' # Apache-2.0
oslo.config!=4.3.0,!=4.4.0;python_version>='3.0' # Apache-2.0
oslo.concurrency<4.0.0;python_version<'3.0' # Apache-2.0
oslo.concurrency;python_version>='3.0' # Apache-2.0
oslo.context<3.0.0;python_version<'3.0' # Apache-2.0
oslo.context;python_version>='3.0' # Apache-2.0
oslo.db # Apache-2.0
oslo.i18n<4.0.0;python_version=='2.7' # Apache-2.0
oslo.i18n;python_version>='3.6' # Apache-2.0
oslo.limit<1.0.0;python_version=='2.7' # Apache-2.0
oslo.limit;python_version>='3.0' # Apache-2.0
oslo.log<4.0.0;python_version<'3.0' # Apache-2.0
oslo.log;python_version>='3.0' # Apache-2.0
oslo.messaging!=9.0.0 # Apache-2.0
oslo.middleware # Apache-2.0
oslo.policy<3.0.0;python_version=='2.7' # Apache-2.0
oslo.policy!=3.0.0;python_version>='3.6' # Apache-2.0
oslo.privsep<2.0.0;python_version=='2.7' # Apache-2.0
oslo.privsep;python_version>='3.6' # Apache-2.0
oslo.reports<2.0.0;python_version<'3.0' # Apache-2.0
oslo.reports;python_version>='3.6' # Apache-2.0
oslo.rootwrap # Apache-2.0
# NOTE(mriedem): oslo.serialization 2.19.1 is blocked for bug 1593641
oslo.serialization!=2.19.1,<3.0.0;python_version<'3.0' # Apache-2.0
oslo.serialization!=2.19.1;python_version>='3.0' # Apache-2.0
oslo.service!=1.28.1 # Apache-2.0
oslo.upgradecheck<0.4.0;python_version=='2.7' # Apache-2.0
oslo.upgradecheck;python_version>='3.6' # Apache-2.0
# NOTE(lajoskatona): oslo.utils version between 3.39.1 and 3.40.1 excluded due to bug 1812922
oslo.utils!=3.39.1,!=3.40.0,!=3.40.1,<4.0.0;python_version<'3.0' # Apache-2.0
oslo.utils!=3.39.1,!=3.40.0,!=3.40.1;python_version>='3.0' # Apache-2.0
oslo.vmware # Apache-2.0
oslo.versionedobjects<2.0.0;python_version=='2.7' # Apache-2.0
oslo.versionedobjects;python_version>='3.6' # Apache-2.0
osprofiler # Apache-2.0
os-apply-config # Apache-2.0
os-brick!=2.8.0 # Apache-2.0
os-client-config # Apache-2.0
os-collect-config # Apache-2.0
os-dpm # Apache-2.0
os-net-config # Apache-2.0
os-refresh-config # Apache-2.0
os-resource-classes # Apache-2.0
os-service-types # Apache-2.0
os-testr<2.0.0;python_version=='2.7' # Apache-2.0
os-testr;python_version>='3.6' # Apache-2.0
os-traits # Apache-2.0
os-ken<1.0.0;python_version=='2.7' # Apache-2.0
os-ken;python_version>='3.6' # Apache-2.0
os-vif!=1.8.0,!=1.12.0,<2.0.0;python_version=='2.7' # Apache-2.0
os-vif!=1.8.0,!=1.12.0;python_version>='3.6' # Apache-2.0
ovs # Apache-2.0
os-win<5.0.0;python_version=='2.7' # Apache-2.0
os-win;python_version>='3.6' # Apache-2.0
os-xenapi # Apache-2.0
paramiko # LGPLv2.1+
Parsley # MIT
pathlib2 # MIT
passlib # BSD
Paste # MIT
PasteDeploy # MIT
paunch # Apache-2.0
pbr!=2.1.0 # Apache-2.0
pecan!=1.0.2,!=1.0.3,!=1.0.4,!=1.2 # BSD
pexpect!=3.3 # ISC License
pifpaf # Apache-2.0
pika # BSD
Pillow # PIL License
Pint<0.10;python_version<'3.6' # BSD
Pint;python_version>='3.6' # BSD
pip # MIT
prometheus-client # Apache-2.0
protobuf # BSD License (3 clause)
PrettyTable<0.8 # BSD
psutil # BSD
pyasn1!=0.2.3 # BSD
pyasn1-modules # BSD
pycadf!=2.0.0,<3.0.0;python_version=='2.7' # Apache-2.0
pycadf!=2.0.0;python_version>='3.6' # Apache-2.0
PyECLib # BSD
pyghmi!=1.4.0,!=1.5.11 # Apache-2.0
pyinotify;sys_platform!='win32' and sys_platform!='darwin' and sys_platform!='sunos5' # MIT
PyJWT # MIT
pykmip # Apache 2.0 License
python-ldap # PSF
pylxd # Apache-2.0
pymemcache!=1.3.0 # Apache 2.0 License
pymongo!=3.1 # Apache-2.0
PyMySQL # MIT License
pytest # MIT
pytest-django # BSD (3 clause)
pytest-html #MPL-2.0
python-etcd # MIT License
pywbem # LGPLv2.1+
pywinrm # MIT
salt!=2019.2.1,!=2019.2.2 # Apache-2.0
storpool!=5.2.0,!=5.3.0 # Apache-2.0
storpool.spopenstack # Apache-2.0
dfs-sdk # Apache-2.0
tap-as-a-service # Apache-2.0
etcd3 # Apache-2.0
etcd3gw!=0.2.2,!=0.2.3 # Apache-2.0
typing # PSF
voluptuous # BSD License
pydot # MIT License
pydotplus # MIT License
crc16 # LGPLv3+
pyzabbix # LGPL
statsd # MIT
weakrefmethod;python_version=='2.7' # PSF
zVMCloudConnector;sys_platform!='win32' # Apache 2.0 License
opentracing # Apache-2.0
jaeger-client # Apache-2.0
pyngus # Apache-2.0
pyOpenSSL # Apache-2.0
pyparsing # MIT
pyroute2!=0.5.4,!=0.5.5;sys_platform!='win32' # Apache-2.0 (+ dual licensed GPL2)
pysnmp # BSD
pystache # MIT
pysaml2!=4.0.3,!=4.0.4,!=4.0.5,!=4.0.5rc1,!=4.1.0,!=4.2.0,!=4.3.0,!=4.4.0,!=4.6.0 # Apache-2.0
# OpenStack clients. None of these should have an upper bound
# as that has implications for testing in the gate.
aodhclient # Apache-2.0
gnocchiclient # Apache-2.0
tricircleclient<1.0.0;python_version=='2.7' # Apache-2.0
tricircleclient;python_version>='3.6' # Apache-2.0
python-barbicanclient # Apache-2.0
python-blazarclient<3.0.0;python_version=='2.7' # Apache-2.0
python-blazarclient;python_version>='3.6' # Apache-2.0
python-ceilometerclient # Apache-2.0
python-cinderclient!=4.0.0,<6.0.0;python_version=='2.7' # Apache-2.0
python-cinderclient!=4.0.0;python_version>='3.6' # Apache-2.0
python-cloudkittyclient<4.0.0;python_version=='2.7' # Apache-2.0
python-cloudkittyclient;python_version>='3.6' # Apache-2.0
python-congressclient<2.0.0;python_version=='2.7' # Apache-2.0
python-congressclient<2000;python_version>='3.6' # Apache-2.0
python-designateclient # Apache-2.0
python-freezerclient<3.0.0;python_version=='2.7' # Apache-2.0
python-freezerclient;python_version>='3.6' # Apache-2.0
python-heatclient<2.0.0;python_version=='2.7' # Apache-2.0
python-heatclient;python_version>='3.6' # Apache-2.0
python-hnvclient # Apache-2.0
python-glanceclient # Apache-2.0
python-glareclient # Apache-2.0
python-ironic-inspector-client # Apache-2.0
python-ironicclient!=2.5.2,!=2.7.1,!=3.0.0,<4.0.0;python_version=='2.7' # Apache-2.0
python-ironicclient!=2.5.2,!=2.7.1,!=3.0.0;python_version>='3.6' # Apache-2.0
python-karborclient # Apache-2.0
python-keystoneclient!=2.1.0 # Apache-2.0
python-kingbirdclient # Apache-2.0
python-magnumclient # Apache-2.0
python-masakariclient # Apache-2.0
python-manilaclient<2.0.0;python_version=='2.7' # Apache-2.0
python-manilaclient;python_version>='3.6' # Apache-2.0
python-mistralclient!=3.2.0,<4.0.0;python_version=='2.7' # Apache-2.0
python-mistralclient!=3.2.0;python_version>='3.6' # Apache-2.0
python-muranoclient<2.0.0;python_version=='2.7' # Apache-2.0
python-muranoclient;python_version>='3.6' # Apache-2.0
python-monascaclient<2.0.0;python_version=='2.7' # Apache-2.0
python-monascaclient;python_version>='3.6' # Apache-2.0
python-neutronclient # Apache-2.0
python-novaclient # Apache-2.0
python-octaviaclient # Apache-2.0
python-openstackclient # Apache-2.0
python-qinlingclient<5.0.0;python_version=='2.7' # Apache-2.0
python-qinlingclient;python_version>='3.6' # Apache-2.0
python-rsdclient # Apache-2.0
python-saharaclient<3.0.0;python_version=='2.7' # Apache-2.0
python-saharaclient;python_version>='3.6' # Apache-2.0
python-searchlightclient<2.0.0;python_version=='2.7' #Apache-2.0
python-searchlightclient;python_version>='3.6' #Apache-2.0
python-senlinclient<2.0.0;python_version=='2.7' # Apache-2.0
python-senlinclient;python_version>='3.6' # Apache-2.0
python-smaugclient # Apache-2.0
python-solumclient<3.0.0;python_version=='2.7' # Apache-2.0
python-solumclient;python_version>='3.6' # Apache-2.0
python-swiftclient # Apache-2.0
python-tackerclient<1.0.0;python_version=='2.7' # Apache-2.0
python-tackerclient;python_version>='3.6' # Apache-2.0
python-troveclient # Apache-2.0
python-vitrageclient<4.0.0;python_version=='2.7' # Apache-2.0
python-vitrageclient;python_version>='3.6' # Apache-2.0
python-watcherclient # Apache-2.0
python-zaqarclient # Apache-2.0
python-zunclient # Apache-2.0
python-magic # MIT
python-memcached # PSF
python-dateutil # BSD
# 2013.6 is the first version of pytz that is PEP 440 compatible.
pytz # MIT
pyudev # LGPLv2.1+
PyYAML # MIT
qpid-python;python_version=='2.7' # Apache-2.0
raven # BSD
reno<3.0.0;python_version<'3.0' # Apache-2.0
reno;python_version>='3.0' # Apache-2.0
requests!=2.20.0 # Apache-2.0
requests-aws # BSD License (3 clause)
requests-kerberos # ISC
requestsexceptions # Apache-2.0
rfc3986 # Apache-2.0
rsd-lib # Apache-2.0
Routes # MIT
rtslib-fb # Apache-2.0
ryu # Apache-2.0
semantic-version # BSD
fasteners!=0.15 # Apache-2.0
scrypt # BSD
simplejson # MIT
six # MIT
scipy # BSD
scikit-learn<=0.20.0;python_version<='3.4' # BSD
scikit-learn;python_version>='3.5' # BSD
setproctitle # BSD
# NOTE(yamahata):
# bug work around of sqlalchemy
# https://bitbucket.org/zzzeek/sqlalchemy/issues/3952/
# The fix which is in git master branch is planned for 1.1.9
SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8 # MIT
SQLAlchemy-Utils # BSD License
sqlalchemy-migrate # Apache-2.0
sqlalchemy-filters # Apache-2.0
sqlparse # BSD
stevedore # Apache-2.0
storops # Apache-2.0
systemd-python # LGPLv2+
sysv-ipc # BSD License
suds-jurko # LGPLv3+
sympy # BSD
taskflow # Apache-2.0
tempest # Apache-2.0
tooz # Apache-2.0
tosca-parser # Apache-2.0
tripleo-common!=11.3.0 # Apache-2.0
validations-libs # Apache-2.0
urllib3 # MIT
unicodecsv;python_version<'3.0' # BSD
warlock<2 # Apache-2.0
WebOb # MIT
websocket-client # LGPLv2+
websockify # LGPLv3
wheel # MIT
PyMI;sys_platform=='win32' # Apache 2.0 License
wmi;sys_platform=='win32' # MIT
WSME # MIT
xattr;sys_platform!='win32' # MIT
xstatic-angular-uuid # MIT License
xstatic-angular-vis # MIT License
xstatic-filesaver # MIT License
xstatic-js-yaml # MIT License
xstatic-json2yaml # MIT License
XenAPI # LGPL
XStatic # MIT License
XStatic-Angular # MIT License
XStatic-Angular-Bootstrap # MIT License
XStatic-Angular-Gettext # MIT License
XStatic-Angular-lrdragndrop # MIT License
XStatic-Angular-Schema-Form # MIT
XStatic-angular-ui-router # MIT
XStatic-Bootstrap-Datepicker # Apache 2.0 License
XStatic-Bootstrap-SCSS # Apache 2.0 License
XStatic-bootswatch # MIT License
XStatic-D3 # BSD License (3 clause)
XStatic-Dagre # MIT License
XStatic-Dagre-D3 # MIT License
XStatic-Font-Awesome # SIL OFL 1.1 License, MIT License
XStatic-Graphlib # MIT License
XStatic-Hogan # Apache 2.0 License
XStatic-Jasmine # MIT License
XStatic-jQuery<2 # MIT License
XStatic-JQuery-Migrate # MIT License
XStatic-JQuery.quicksearch # MIT License
XStatic-JQuery.TableSorter # MIT License
XStatic-jquery-ui # MIT License
XStatic-JSEncrypt # MIT License
XStatic-lodash # MIT License
XStatic-mdi # SIL OPEN FONT LICENSE Version 1.1
XStatic-moment # MIT License
XStatic-Moment-Timezone # MIT License
XStatic-objectpath # MIT
XStatic-Rickshaw # BSD License (prior)
XStatic-roboto-fontface # Apache 2.0 License
XStatic-smart-table # MIT License
XStatic-Spin # MIT License
XStatic-term.js # MIT License
XStatic-tv4 # MIT
XStatic-Angular-FileUpload # MIT License
yaql # Apache 2.0 License
# NOTE(dtantsur): zeroconf dropped compatibility with Python 2 in version 0.20
zeroconf<0.20;python_version=='2.7' # LGPL
zeroconf;python_version>='3.0' # LGPL
zhmcclient # Apache 2.0 License
# Testing tools below, which are typically in test-requires.txt
bashate<1.0.0;python_version=='2.7' # Apache-2.0
bashate;python_version>='3.6' # Apache-2.0
couchdb # Apache-2.0
coverage!=4.4 # Apache-2.0
demjson # GLGPLv3+
docker # Apache-2.0
django-nose # BSD
doc8 # Apache-2.0
Pygments # BSD license
fixtures # Apache-2.0/BSD
fixtures-git # Apache-2.0
freezegun # Apache-2.0
gabbi # Apache-2.0
kafka-python # Apache-2.0
keyring<19.0.0;python_version=='2.7' # MIT/PSF
keyring;python_version>='3.4' # MIT/PSF
ldappool # MPL
# Do not make mock conditional on Python version: we depend on newer code than
# in [most] releases of the Python std library.
# https://github.com/testing-cabal/mock/issues/487 for 4.0.[0-1] blacklist
mock!=4.0.0,!=4.0.1 # BSD
mox # Apache-2.0
mox3 # Apache-2.0
nodeenv # BSD
nose # LGPL
nose-exclude # LGPL
nosehtmloutput # Apache-2.0
nosexcover # BSD
openstack-doc-tools # Apache-2.0
openstack.nose-plugin # Apache-2.0
openstacksdk # Apache-2.0
os-api-ref # Apache-2.0
oslosphinx # Apache-2.0
oslotest # Apache-2.0
ovsdbapp # Apache-2.0
proboscis # Apache-2.0
psycopg2 # LGPL/ZPL
psycopg2-binary # LGPL/ZPL
purestorage # BSD
pysendfile;sys_platform!='win32' # MIT
python-3parclient # Apache-2.0
python-consul # MIT License
python-subunit # Apache-2.0/BSD
python-pytun # MIT
pyzmq # LGPL+BSD
redis # MIT
hiredis # BSD
requests-mock # Apache-2.0
tenacity # Apache-2.0
retrying!=1.3.0 # Apache-2.0
selenium # Apache-2.0
# While setuptools cannot deal with pre-installed incompatible versions,
# setting a lower bound is not harmful - it makes error messages cleaner. DO
# NOT set an upper bound on setuptools, as that will lead to uninstallable
# situations as progressive releases of projects are done.
# Blacklist setuptools 34.0.0-34.3.2 due to https://github.com/pypa/setuptools/issues/951
# Blacklist setuptools 36.2.0 due to https://github.com/pypa/setuptools/issues/1086
# Cap setuptools to 58.0.0 on python3.5 due to the incompatibility with decorator 3.4.0.
setuptools!=24.0.0,!=34.0.0,!=34.0.1,!=34.0.2,!=34.0.3,!=34.1.0,!=34.1.1,!=34.2.0,!=34.3.0,!=34.3.1,!=34.3.2,!=36.2.0,<58.0.0;python_version>='3.5' # PSF/ZPL
setuptools!=24.0.0,!=34.0.0,!=34.0.1,!=34.0.2,!=34.0.3,!=34.1.0,!=34.1.1,!=34.2.0,!=34.3.0,!=34.3.1,!=34.3.2,!=36.2.0,<45.0.0;python_version<='2.7' # PSF/ZPL
sphinx!=1.6.6,!=1.6.7,<2.0.0;python_version=='2.7' # BSD
sphinx!=1.6.6,!=1.6.7,!=2.1.0,!=3.0.0;python_version>='3.4' # BSD
sphinx-testing # BSD License
sphinxcontrib-actdiag<2.0.0;python_version=='2.7' # BSD
sphinxcontrib-actdiag;python_version>='3.4' # BSD
sphinxcontrib-apidoc # BSD
sphinxcontrib-blockdiag<2.0.0;python_version=='2.7' # BSD
sphinxcontrib-blockdiag;python_version>='3.4' # BSD
sphinxcontrib-httpdomain # BSD
sphinxcontrib-nwdiag<2.0.0;python_version=='2.7' # BSD
sphinxcontrib-nwdiag;python_version>='3.4' # BSD
sphinxcontrib-seqdiag<2.0.0;python_version=='2.7' # BSD
sphinxcontrib-seqdiag;python_version>='3.4' # BSD
sphinxcontrib-pecanwsme # Apache-2.0
sphinxcontrib-fulltoc # Apache-2.0
sphinx-feature-classification # Apache-2.0
sphinxmark # Apache-2.0
sphinxcontrib.datatemplates # BSD License
sphinxcontrib-programoutput # BSD license
sphinxcontrib-svg2pdfconverter # BSD License
stestr!=2.3.0,!=3.0.0 # Apache-2.0
sushy!=1.9.0<3.0.0;python_version=='2.7' # Apache-2.0
sushy!=1.9.0;python_version>='3.6' # Apache-2.0
tabulate # MIT
testrepository # Apache-2.0/BSD
testresources # Apache-2.0/BSD
testscenarios # Apache-2.0/BSD
testtools # MIT
trollius;python_version=='2.7' # Apache-2.0
ujson # BSD
unittest2 # BSD
virtualbmc # Apache-2.0
virtualenv<20.8 # MIT
vmware-nsxlib # Apache-2.0
wrapt # BSD License
WebTest # MIT
Werkzeug # BSD License
whereto # Apache-2.0
xmltodict # MIT
wsgi-intercept # MIT License
xvfbwrapper #license: MIT
zake # Apache-2.0
zuul-sphinx # Apache-2.0
shade # Apache-2.0
sadisplay # BSD
# NOTE(tonyb): Generally adding OpenSatck services isn't allowed but some consumers of ceilometer
# use it like a library so until there is a ceilometer-lib (or similar) this is our best option.
ceilometer # Apache-2.0
# Indirect dependencies that need blocking
# NOTE(bnemec): 1.16.0 introduced a bug that is breaking tooz. 1.18.0 fixes it.
# See https://bugs.launchpad.net/python-tooz/+bug/1808046
grpcio!=1.16.0,!=1.16.1,!=1.17.0,!=1.17.1
# NOTE(dhellmann): We need to include this package for testing the
# release jobs that propose constraint updates, even though it is not
# a real requirement of any of our software.
openstack-release-test
# NOTE(snapiri): This is required for Dragonflow topology visualization
skydive-client # Apache-2.0
# NOTE(anilvenkata): This is required for profiling oslo.service processes
Yappi!=0.98,!=0.99 # MIT
# NOTE(yoctozepto): To avoid repeated breakage (this is a dep of deps)
zipp<2;python_version<'3.6' # MIT
zipp;python_version>='3.6' # MIT
# NOTE(prometheanfire): python3 caps, are not approved for use in OpenStack
gitdb<4.0.0;python_version=='2.7' # BSD
gitdb;python_version>='3.4' # BSD
gitdb2<3.0.0;python_version=='2.7' # BSD
gitdb2;python_version>='3.4' # BSD

View File

@ -0,0 +1,604 @@
abclient # Apache-2.0
alembic!=1.2.0 # MIT
amqp!=2.1.4 # BSD
ansible-runner!=1.3.5 # Apache 2.0
anyjson # BSD
appdirs # MIT License
apscheduler # MIT License
autobahn # MIT License
automaton # Apache-2.0
beautifulsoup4 # MIT
Babel!=2.4.0 # BSD
bcrypt # Apache-2.0
betamax # Apache-2.0
betamax-matchers # Apache-2.0
blockdiag!=2.0.0 # Apache-2.0
boto # MIT
boto3 # Apache-2.0
botocore # Apache-2.0
cassandra-driver!=3.6.0 # Apache-2.0
castellan # Apache-2.0
ceilometermiddleware # Apache-2.0
cachetools # MIT License
cffi # MIT
cliff!=2.9.0,!=2.17.0,<3.0.0;python_version=='2.7' # Apache-2.0
cliff!=2.9.0,!=2.17.0;python_version>='3.6' # Apache-2.0
# NOTE(mordred) python-openstackclient is broken due to bug 1810213
cmd2!=0.8.3,<0.9.0 # MIT
confluent-kafka!=1.4.0 # Apache-2.0
cotyledon # Apache-2.0
construct<2.9 # MIT
PuLP # MIT
contextlib2;python_version<'3.0' # PSF License
croniter # MIT License
cryptography!=2.0 # BSD/Apache-2.0
cursive # Apache-2.0
dataclasses;python_version=='3.6' # Apache-2.0
ddt # MIT
debtcollector<2.0.0;python_version<'3.0' # Apache-2.0
debtcollector;python_version>='3.0' # Apache-2.0
decorator # BSD
defusedxml # PSF
dib-utils # Apache-2.0
diskimage-builder!=1.6.0,!=1.7.0,!=1.7.1 # Apache-2.0
distro # Apache-2.0
Django<2;python_version<'3.0' # BSD
Django<3.0;python_version>='3.0' # BSD
django-compressor # MIT
django-debreach # BSD
django-floppyforms<2 # BSD
django-formtools # BSD
dnspython;python_version=='2.7' # http://www.dnspython.org/LICENSE
dnspython3!=1.13.0,!=1.14.0;python_version>='3.0' # http://www.dnspython.org/LICENSE
# Note(tonyb): We don't actually directly depend on docutils but we pull it in
# indirectly and we needed to blacklist 0.13.1 for problems with
# Sphinx 1.3. This can be now removed once all projects removed it.
docutils # OSI-Approved Open Source, Public Domain
dogpile.cache # BSD
dogtag-pki # LGPLv3+
dulwich!=0.19.3,!=0.19.7 # Apache-2.0
edgegrid-python # Apache-2.0
elasticsearch<3.0.0 # Apache-2.0
enmerkar;python_version>='3.0' # BSD
enum34;python_version=='2.7' or python_version=='2.6' or python_version=='3.3' # BSD
# NOTE: New versions of eventlet should not be accepted lightly
# as they have earned a reputation of frequently breaking things.
eventlet!=0.18.3,!=0.20.1,!=0.21.0,!=0.23.0,!=0.25.0 # MIT
exabgp!=4.0.6 # BSD
extras # MIT
faker # MIT
falcon # Apache-2.0
Flask!=0.11 # BSD
flask-keystone # Apache-2.0
flask-oslolog # Apache-2.0
Flask-RESTful # BSD
Flask-SQLAlchemy # BSD
fortiosclient # Apache-2.0
futures!=0.17.0;python_version=='2.7' or python_version=='2.6' # PSF
futurist<2.0.0;python_version=='2.7' # Apache-2.0
futurist;python_version>='3.6' # Apache-2.0
funcsigs;python_version=='2.7' or python_version=='2.6' # Apache-2.0
glance-store!=0.29.0 # Apache-2.0
google-api-python-client # Apache-2.0
graphviz!=0.5.0 # MIT License
greenlet!=0.4.14 # MIT
GitPython<2.1.12;python_version<'3.0' # BSD License (3 clause)
GitPython;python_version>='3.0' # BSD License (3 clause)
gunicorn<20.0.0;python_version<'3.0' # MIT
gunicorn;python_version>='3.0' # MIT
happybase!=0.7,!=1.0.0;python_version=='2.7' # MIT
heat-translator # Apache-2.0
horizon # Apache-2.0
httplib2 # MIT
hvac # Apache-2.0
icalendar # BSD
importlib-metadata # Apache-2.0
infinisdk # BSD-3
influxdb!=5.2.0,!=5.2.1,!=5.2.2,!=5.2.3;python_version<'3.0' # MIT
influxdb;python_version>='3.0' # MIT
instack-undercloud # Apache-2.0
ironic-lib # Apache-2.0
ipaddress;python_version<'3.3' # PSF
iso8601 # MIT
jira # BSD License (2 clause)
Jinja2 # BSD License (3 clause)
jmespath # MIT
jsonmodels # BSD License (3 clause)
jsonpatch!=1.20 # BSD
jsonpath-rw<2.0 # Apache-2.0
jsonpath-rw-ext # Apache-2.0
jsonschema # MIT
kazoo # Apache-2.0
keystoneauth1 # Apache-2.0
keystonemiddleware # Apache-2.0
krest # Apache-2.0
kubernetes # Apache-2.0
kuryr-lib # Apache-2.0
packaging # Apache-2.0
pylev # BSD
pypowervm!=1.1.21,!=1.1.22 # Apache-2.0
pyScss!=1.3.5 # MIT License
django-pyscss # BSD License (2 clause)
kombu!=4.0.2 # BSD
ldap3 # LGPLv3
deprecation # Apache-2.0
libvirt-python!=4.1.0,!=4.2.0,<6.0.0;python_version<'3.0' # LGPLv2+
libvirt-python!=4.1.0,!=4.2.0;python_version>='3.0' # LGPLv2+
lxml!=3.7.0 # BSD
Mako # MIT
marathon!=0.9.1 # MIT
metalsmith # Apache-2.0
microversion-parse # Apache-2.0
mistral-lib # Apache-2.0
monasca-common # Apache-2.0
monasca-statsd # Apache-2.0
monotonic;python_version<'3.3' # Apache-2.0
msgpack # Apache-2.0
munch # MIT
murano-pkg-check # Apache-2.0
mypy;python_version>='3.4' # MIT
ndg-httpsclient;python_version<'3.0' # BSD
netaddr # BSD
netifaces!=0.10.0,!=0.10.1 # MIT
netmiko # MIT
network-runner # Apache 2.0
networking-bagpipe # Apache-2.0
networking-bgpvpn # Apache-2.0
networking-l2gw # Apache-2.0
networking-odl # Apache-2.0
networking-sfc # Apache-2.0
# NOTE(fdegir): NetworkX 2.3 dropped support for Python 2
networkx<2.3;python_version<'3.0' # BSD
networkx;python_version>='3.4' # BSD
# NOTE(ralonsoh): neutron-lib 2.0.0 dropped support for Python 2
neutron-lib<2.0.0;python_version=='2.7' # Apache-2.0
neutron-lib;python_version>='3.6' # Apache-2.0
neutron-dynamic-routing # Apache-2.0
neutron-fwaas # Apache-2.0
neutron-lbaas # Apache-2.0
neutron-vpnaas # Apache-2.0
neutron # Apache-2.0
notifier # Apache-2.0
oauth2client!=4.0.0 # Apache-2.0
oauthlib # BSD
octavia-lib # Apache-2.0
openstackdocstheme # Apache-2.0
osc-lib # Apache-2.0
osc-placement # Apache-2.0
oslo.cache!=1.31.1,<2.0.0;python_version<'3.0' # Apache-2.0
oslo.cache!=1.31.1,!=2.1.0;python_version>='3.0' # Apache-2.0
oslo.config!=4.3.0,!=4.4.0,<8.0.0;python_version<'3.0' # Apache-2.0
oslo.config!=4.3.0,!=4.4.0;python_version>='3.0' # Apache-2.0
oslo.concurrency<4.0.0;python_version<'3.0' # Apache-2.0
oslo.concurrency;python_version>='3.0' # Apache-2.0
oslo.context<3.0.0;python_version<'3.0' # Apache-2.0
oslo.context;python_version>='3.0' # Apache-2.0
oslo.db # Apache-2.0
oslo.i18n<4.0.0;python_version=='2.7' # Apache-2.0
oslo.i18n;python_version>='3.6' # Apache-2.0
oslo.limit<1.0.0;python_version=='2.7' # Apache-2.0
oslo.limit;python_version>='3.0' # Apache-2.0
oslo.log<4.0.0;python_version<'3.0' # Apache-2.0
oslo.log;python_version>='3.0' # Apache-2.0
oslo.messaging!=9.0.0 # Apache-2.0
oslo.middleware # Apache-2.0
oslo.policy<3.0.0;python_version=='2.7' # Apache-2.0
oslo.policy!=3.0.0;python_version>='3.6' # Apache-2.0
oslo.privsep<2.0.0;python_version=='2.7' # Apache-2.0
oslo.privsep;python_version>='3.6' # Apache-2.0
oslo.reports<2.0.0;python_version<'3.0' # Apache-2.0
oslo.reports;python_version>='3.6' # Apache-2.0
oslo.rootwrap # Apache-2.0
# NOTE(mriedem): oslo.serialization 2.19.1 is blocked for bug 1593641
oslo.serialization!=2.19.1,<3.0.0;python_version<'3.0' # Apache-2.0
oslo.serialization!=2.19.1;python_version>='3.0' # Apache-2.0
oslo.service!=1.28.1 # Apache-2.0
oslo.upgradecheck<0.4.0;python_version=='2.7' # Apache-2.0
oslo.upgradecheck;python_version>='3.6' # Apache-2.0
# NOTE(lajoskatona): oslo.utils version between 3.39.1 and 3.40.1 excluded due to bug 1812922
oslo.utils!=3.39.1,!=3.40.0,!=3.40.1,<4.0.0;python_version<'3.0' # Apache-2.0
oslo.utils!=3.39.1,!=3.40.0,!=3.40.1;python_version>='3.0' # Apache-2.0
oslo.vmware # Apache-2.0
oslo.versionedobjects<2.0.0;python_version=='2.7' # Apache-2.0
oslo.versionedobjects;python_version>='3.6' # Apache-2.0
osprofiler # Apache-2.0
os-apply-config # Apache-2.0
os-brick!=2.8.0 # Apache-2.0
os-client-config # Apache-2.0
os-collect-config # Apache-2.0
os-dpm # Apache-2.0
os-net-config # Apache-2.0
os-refresh-config # Apache-2.0
os-resource-classes # Apache-2.0
os-service-types # Apache-2.0
os-testr<2.0.0;python_version=='2.7' # Apache-2.0
os-testr;python_version>='3.6' # Apache-2.0
os-traits # Apache-2.0
os-ken<1.0.0;python_version=='2.7' # Apache-2.0
os-ken;python_version>='3.6' # Apache-2.0
os-vif!=1.8.0,!=1.12.0,<2.0.0;python_version=='2.7' # Apache-2.0
os-vif!=1.8.0,!=1.12.0;python_version>='3.6' # Apache-2.0
ovs # Apache-2.0
os-win<5.0.0;python_version=='2.7' # Apache-2.0
os-win;python_version>='3.6' # Apache-2.0
os-xenapi # Apache-2.0
paramiko # LGPLv2.1+
Parsley # MIT
pathlib2 # MIT
passlib # BSD
Paste # MIT
PasteDeploy # MIT
paunch # Apache-2.0
pbr!=2.1.0 # Apache-2.0
pecan!=1.0.2,!=1.0.3,!=1.0.4,!=1.2 # BSD
pexpect!=3.3 # ISC License
pifpaf # Apache-2.0
pika # BSD
Pillow # PIL License
Pint<0.10;python_version<'3.6' # BSD
Pint;python_version>='3.6' # BSD
pip # MIT
prometheus-client # Apache-2.0
protobuf # BSD License (3 clause)
PrettyTable<0.8 # BSD
psutil # BSD
pyasn1!=0.2.3 # BSD
pyasn1-modules # BSD
pycadf!=2.0.0,<3.0.0;python_version=='2.7' # Apache-2.0
pycadf!=2.0.0;python_version>='3.6' # Apache-2.0
PyECLib # BSD
pyghmi!=1.4.0,!=1.5.11 # Apache-2.0
pyinotify;sys_platform!='win32' and sys_platform!='darwin' and sys_platform!='sunos5' # MIT
PyJWT # MIT
pykmip # Apache 2.0 License
python-ldap # PSF
pylxd # Apache-2.0
pymemcache!=1.3.0 # Apache 2.0 License
pymongo!=3.1 # Apache-2.0
PyMySQL # MIT License
pytest # MIT
pytest-django # BSD (3 clause)
pytest-html #MPL-2.0
python-etcd # MIT License
pywbem # LGPLv2.1+
pywinrm # MIT
salt!=2019.2.1,!=2019.2.2 # Apache-2.0
storpool!=5.2.0,!=5.3.0 # Apache-2.0
storpool.spopenstack # Apache-2.0
dfs-sdk # Apache-2.0
tap-as-a-service # Apache-2.0
etcd3 # Apache-2.0
etcd3gw!=0.2.2,!=0.2.3 # Apache-2.0
typing # PSF
voluptuous # BSD License
pydot # MIT License
pydotplus # MIT License
crc16 # LGPLv3+
pyzabbix # LGPL
statsd # MIT
weakrefmethod;python_version=='2.7' # PSF
zVMCloudConnector;sys_platform!='win32' # Apache 2.0 License
opentracing # Apache-2.0
jaeger-client # Apache-2.0
pyngus # Apache-2.0
pyOpenSSL # Apache-2.0
pyparsing # MIT
pyroute2!=0.5.4,!=0.5.5;sys_platform!='win32' # Apache-2.0 (+ dual licensed GPL2)
pysnmp # BSD
pystache # MIT
pysaml2!=4.0.3,!=4.0.4,!=4.0.5,!=4.0.5rc1,!=4.1.0,!=4.2.0,!=4.3.0,!=4.4.0,!=4.6.0 # Apache-2.0
# OpenStack clients. None of these should have an upper bound
# as that has implications for testing in the gate.
aodhclient # Apache-2.0
gnocchiclient # Apache-2.0
tricircleclient<1.0.0;python_version=='2.7' # Apache-2.0
tricircleclient;python_version>='3.6' # Apache-2.0
python-barbicanclient # Apache-2.0
python-blazarclient<3.0.0;python_version=='2.7' # Apache-2.0
python-blazarclient;python_version>='3.6' # Apache-2.0
python-ceilometerclient # Apache-2.0
python-cinderclient!=4.0.0,<6.0.0;python_version=='2.7' # Apache-2.0
python-cinderclient!=4.0.0;python_version>='3.6' # Apache-2.0
python-cloudkittyclient<4.0.0;python_version=='2.7' # Apache-2.0
python-cloudkittyclient;python_version>='3.6' # Apache-2.0
python-congressclient<2.0.0;python_version=='2.7' # Apache-2.0
python-congressclient<2000;python_version>='3.6' # Apache-2.0
python-designateclient # Apache-2.0
python-freezerclient<3.0.0;python_version=='2.7' # Apache-2.0
python-freezerclient;python_version>='3.6' # Apache-2.0
python-heatclient<2.0.0;python_version=='2.7' # Apache-2.0
python-heatclient;python_version>='3.6' # Apache-2.0
python-hnvclient # Apache-2.0
python-glanceclient # Apache-2.0
python-glareclient # Apache-2.0
python-ironic-inspector-client # Apache-2.0
python-ironicclient!=2.5.2,!=2.7.1,!=3.0.0,<4.0.0;python_version=='2.7' # Apache-2.0
python-ironicclient!=2.5.2,!=2.7.1,!=3.0.0;python_version>='3.6' # Apache-2.0
python-karborclient # Apache-2.0
python-keystoneclient!=2.1.0 # Apache-2.0
python-kingbirdclient # Apache-2.0
python-magnumclient # Apache-2.0
python-masakariclient # Apache-2.0
python-manilaclient<2.0.0;python_version=='2.7' # Apache-2.0
python-manilaclient;python_version>='3.6' # Apache-2.0
python-mistralclient!=3.2.0,<4.0.0;python_version=='2.7' # Apache-2.0
python-mistralclient!=3.2.0;python_version>='3.6' # Apache-2.0
python-muranoclient<2.0.0;python_version=='2.7' # Apache-2.0
python-muranoclient;python_version>='3.6' # Apache-2.0
python-monascaclient<2.0.0;python_version=='2.7' # Apache-2.0
python-monascaclient;python_version>='3.6' # Apache-2.0
python-neutronclient # Apache-2.0
python-novaclient # Apache-2.0
python-octaviaclient # Apache-2.0
python-openstackclient # Apache-2.0
python-qinlingclient<5.0.0;python_version=='2.7' # Apache-2.0
python-qinlingclient;python_version>='3.6' # Apache-2.0
python-rsdclient # Apache-2.0
python-saharaclient<3.0.0;python_version=='2.7' # Apache-2.0
python-saharaclient;python_version>='3.6' # Apache-2.0
python-searchlightclient<2.0.0;python_version=='2.7' #Apache-2.0
python-searchlightclient;python_version>='3.6' #Apache-2.0
python-senlinclient<2.0.0;python_version=='2.7' # Apache-2.0
python-senlinclient;python_version>='3.6' # Apache-2.0
python-smaugclient # Apache-2.0
python-solumclient<3.0.0;python_version=='2.7' # Apache-2.0
python-solumclient;python_version>='3.6' # Apache-2.0
python-swiftclient # Apache-2.0
python-tackerclient<1.0.0;python_version=='2.7' # Apache-2.0
python-tackerclient;python_version>='3.6' # Apache-2.0
python-troveclient # Apache-2.0
python-vitrageclient<4.0.0;python_version=='2.7' # Apache-2.0
python-vitrageclient;python_version>='3.6' # Apache-2.0
python-watcherclient # Apache-2.0
python-zaqarclient # Apache-2.0
python-zunclient # Apache-2.0
python-magic # MIT
python-memcached # PSF
python-dateutil # BSD
# 2013.6 is the first version of pytz that is PEP 440 compatible.
pytz # MIT
pyudev # LGPLv2.1+
PyYAML # MIT
qpid-python;python_version=='2.7' # Apache-2.0
raven # BSD
reno<3.0.0;python_version<'3.0' # Apache-2.0
reno;python_version>='3.0' # Apache-2.0
requests!=2.20.0 # Apache-2.0
requests-aws # BSD License (3 clause)
requests-kerberos # ISC
requestsexceptions # Apache-2.0
rfc3986 # Apache-2.0
rsd-lib # Apache-2.0
Routes # MIT
rtslib-fb # Apache-2.0
ryu # Apache-2.0
semantic-version # BSD
fasteners!=0.15 # Apache-2.0
scrypt # BSD
simplejson # MIT
six # MIT
scipy # BSD
scikit-learn<=0.20.0;python_version<='3.4' # BSD
scikit-learn;python_version>='3.5' # BSD
setproctitle # BSD
# NOTE(yamahata):
# bug work around of sqlalchemy
# https://bitbucket.org/zzzeek/sqlalchemy/issues/3952/
# The fix which is in git master branch is planned for 1.1.9
SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8 # MIT
SQLAlchemy-Utils # BSD License
sqlalchemy-migrate # Apache-2.0
sqlalchemy-filters # Apache-2.0
sqlparse # BSD
stevedore # Apache-2.0
storops # Apache-2.0
systemd-python # LGPLv2+
sysv-ipc # BSD License
suds-jurko # LGPLv3+
sympy # BSD
taskflow # Apache-2.0
tempest # Apache-2.0
tooz # Apache-2.0
tosca-parser # Apache-2.0
tripleo-common!=11.3.0 # Apache-2.0
validations-libs # Apache-2.0
urllib3 # MIT
unicodecsv;python_version<'3.0' # BSD
warlock<2 # Apache-2.0
WebOb # MIT
websocket-client # LGPLv2+
websockify # LGPLv3
wheel # MIT
PyMI;sys_platform=='win32' # Apache 2.0 License
wmi;sys_platform=='win32' # MIT
WSME # MIT
xattr;sys_platform!='win32' # MIT
xstatic-angular-uuid # MIT License
xstatic-angular-vis # MIT License
xstatic-filesaver # MIT License
xstatic-js-yaml # MIT License
xstatic-json2yaml # MIT License
XenAPI # LGPL
XStatic # MIT License
XStatic-Angular # MIT License
XStatic-Angular-Bootstrap # MIT License
XStatic-Angular-Gettext # MIT License
XStatic-Angular-lrdragndrop # MIT License
XStatic-Angular-Schema-Form # MIT
XStatic-angular-ui-router # MIT
XStatic-Bootstrap-Datepicker # Apache 2.0 License
XStatic-Bootstrap-SCSS # Apache 2.0 License
XStatic-bootswatch # MIT License
XStatic-D3 # BSD License (3 clause)
XStatic-Dagre # MIT License
XStatic-Dagre-D3 # MIT License
XStatic-Font-Awesome # SIL OFL 1.1 License, MIT License
XStatic-Graphlib # MIT License
XStatic-Hogan # Apache 2.0 License
XStatic-Jasmine # MIT License
XStatic-jQuery<2 # MIT License
XStatic-JQuery-Migrate # MIT License
XStatic-JQuery.quicksearch # MIT License
XStatic-JQuery.TableSorter # MIT License
XStatic-jquery-ui # MIT License
XStatic-JSEncrypt # MIT License
XStatic-lodash # MIT License
XStatic-mdi # SIL OPEN FONT LICENSE Version 1.1
XStatic-moment # MIT License
XStatic-Moment-Timezone # MIT License
XStatic-objectpath # MIT
XStatic-Rickshaw # BSD License (prior)
XStatic-roboto-fontface # Apache 2.0 License
XStatic-smart-table # MIT License
XStatic-Spin # MIT License
XStatic-term.js # MIT License
XStatic-tv4 # MIT
XStatic-Angular-FileUpload # MIT License
yaql # Apache 2.0 License
# NOTE(dtantsur): zeroconf dropped compatibility with Python 2 in version 0.20
zeroconf<0.20;python_version=='2.7' # LGPL
zeroconf;python_version>='3.0' # LGPL
zhmcclient # Apache 2.0 License
# Testing tools below, which are typically in test-requires.txt
bashate<1.0.0;python_version=='2.7' # Apache-2.0
bashate;python_version>='3.6' # Apache-2.0
couchdb # Apache-2.0
coverage!=4.4 # Apache-2.0
demjson # GLGPLv3+
docker # Apache-2.0
django-nose # BSD
doc8 # Apache-2.0
Pygments # BSD license
fixtures # Apache-2.0/BSD
fixtures-git # Apache-2.0
freezegun # Apache-2.0
gabbi # Apache-2.0
kafka-python # Apache-2.0
keyring<19.0.0;python_version=='2.7' # MIT/PSF
keyring;python_version>='3.4' # MIT/PSF
ldappool # MPL
# Do not make mock conditional on Python version: we depend on newer code than
# in [most] releases of the Python std library.
# https://github.com/testing-cabal/mock/issues/487 for 4.0.[0-1] blacklist
mock!=4.0.0,!=4.0.1 # BSD
mox # Apache-2.0
mox3 # Apache-2.0
nodeenv # BSD
nose # LGPL
nose-exclude # LGPL
nosehtmloutput # Apache-2.0
nosexcover # BSD
openstack-doc-tools # Apache-2.0
openstack.nose-plugin # Apache-2.0
openstacksdk # Apache-2.0
os-api-ref # Apache-2.0
oslosphinx # Apache-2.0
oslotest # Apache-2.0
ovsdbapp # Apache-2.0
proboscis # Apache-2.0
psycopg2 # LGPL/ZPL
psycopg2-binary # LGPL/ZPL
purestorage # BSD
pysendfile;sys_platform!='win32' # MIT
python-3parclient # Apache-2.0
python-consul # MIT License
python-subunit # Apache-2.0/BSD
python-pytun # MIT
pyzmq # LGPL+BSD
redis # MIT
hiredis # BSD
requests-mock # Apache-2.0
tenacity # Apache-2.0
retrying!=1.3.0 # Apache-2.0
selenium # Apache-2.0
# While setuptools cannot deal with pre-installed incompatible versions,
# setting a lower bound is not harmful - it makes error messages cleaner. DO
# NOT set an upper bound on setuptools, as that will lead to uninstallable
# situations as progressive releases of projects are done.
# Blacklist setuptools 34.0.0-34.3.2 due to https://github.com/pypa/setuptools/issues/951
# Blacklist setuptools 36.2.0 due to https://github.com/pypa/setuptools/issues/1086
# Cap setuptools to 58.0.0 on python3.5 due to the incompatibility with decorator 3.4.0.
setuptools!=24.0.0,!=34.0.0,!=34.0.1,!=34.0.2,!=34.0.3,!=34.1.0,!=34.1.1,!=34.2.0,!=34.3.0,!=34.3.1,!=34.3.2,!=36.2.0,<58.0.0;python_version>='3.5' # PSF/ZPL
setuptools!=24.0.0,!=34.0.0,!=34.0.1,!=34.0.2,!=34.0.3,!=34.1.0,!=34.1.1,!=34.2.0,!=34.3.0,!=34.3.1,!=34.3.2,!=36.2.0,<45.0.0;python_version<='2.7' # PSF/ZPL
sphinx!=1.6.6,!=1.6.7,<2.0.0;python_version=='2.7' # BSD
sphinx!=1.6.6,!=1.6.7,!=2.1.0,!=3.0.0;python_version>='3.4' # BSD
sphinx-testing # BSD License
sphinxcontrib-actdiag<2.0.0;python_version=='2.7' # BSD
sphinxcontrib-actdiag;python_version>='3.4' # BSD
sphinxcontrib-apidoc # BSD
sphinxcontrib-blockdiag<2.0.0;python_version=='2.7' # BSD
sphinxcontrib-blockdiag;python_version>='3.4' # BSD
sphinxcontrib-httpdomain # BSD
sphinxcontrib-nwdiag<2.0.0;python_version=='2.7' # BSD
sphinxcontrib-nwdiag;python_version>='3.4' # BSD
sphinxcontrib-seqdiag<2.0.0;python_version=='2.7' # BSD
sphinxcontrib-seqdiag;python_version>='3.4' # BSD
sphinxcontrib-pecanwsme # Apache-2.0
sphinxcontrib-fulltoc # Apache-2.0
sphinx-feature-classification # Apache-2.0
sphinxmark # Apache-2.0
sphinxcontrib.datatemplates # BSD License
sphinxcontrib-programoutput # BSD license
sphinxcontrib-svg2pdfconverter # BSD License
stestr!=2.3.0,!=3.0.0 # Apache-2.0
sushy!=1.9.0<3.0.0;python_version=='2.7' # Apache-2.0
sushy!=1.9.0;python_version>='3.6' # Apache-2.0
tabulate # MIT
testrepository # Apache-2.0/BSD
testresources # Apache-2.0/BSD
testscenarios # Apache-2.0/BSD
testtools # MIT
trollius;python_version=='2.7' # Apache-2.0
ujson # BSD
unittest2 # BSD
virtualbmc # Apache-2.0
virtualenv<20.8 # MIT
vmware-nsxlib # Apache-2.0
wrapt # BSD License
WebTest # MIT
Werkzeug # BSD License
whereto # Apache-2.0
xmltodict # MIT
wsgi-intercept # MIT License
xvfbwrapper #license: MIT
zake # Apache-2.0
zuul-sphinx # Apache-2.0
shade # Apache-2.0
sadisplay # BSD
# NOTE(tonyb): Generally adding OpenSatck services isn't allowed but some consumers of ceilometer
# use it like a library so until there is a ceilometer-lib (or similar) this is our best option.
ceilometer # Apache-2.0
# Indirect dependencies that need blocking
# NOTE(bnemec): 1.16.0 introduced a bug that is breaking tooz. 1.18.0 fixes it.
# See https://bugs.launchpad.net/python-tooz/+bug/1808046
grpcio!=1.16.0,!=1.16.1,!=1.17.0,!=1.17.1
# NOTE(dhellmann): We need to include this package for testing the
# release jobs that propose constraint updates, even though it is not
# a real requirement of any of our software.
openstack-release-test
# NOTE(snapiri): This is required for Dragonflow topology visualization
skydive-client # Apache-2.0
# NOTE(anilvenkata): This is required for profiling oslo.service processes
Yappi!=0.98,!=0.99 # MIT
# NOTE(yoctozepto): To avoid repeated breakage (this is a dep of deps)
zipp<2;python_version<'3.6' # MIT
zipp;python_version>='3.6' # MIT
# NOTE(prometheanfire): python3 caps, are not approved for use in OpenStack
gitdb<4.0.0;python_version=='2.7' # BSD
gitdb;python_version>='3.4' # BSD
gitdb2<3.0.0;python_version=='2.7' # BSD
gitdb2;python_version>='3.4' # BSD

View File

@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@ -0,0 +1,13 @@
# This file specifies constraint/requirement URLs for current and python2
# openstack branches
# Current/stable
STABLE_OPENSTACK_REQ_URL="openstack-requirements/ussuri"
# Current/experimental (for dev images)
MASTER_OPENSTACK_REQ_URL="https://raw.githubusercontent.com/openstack/requirements/master"
# Python2/stable
STABLE_OPENSTACK_REQ_URL_PY2="openstack-requirements/ussuri"
# Python2/experimental (for dev images)
MASTER_OPENSTACK_REQ_URL_PY2="https://raw.githubusercontent.com/openstack/requirements/stable/train"

View File

@ -0,0 +1,175 @@
#
# git: wheelname|git|git-source|basedir|branch
# tar: wheelname|tar|wget-source|basedir
# pypi: wheelname|pypi|wget-source
# zip: wheelname|zip|wget-source|basedir
#
# If fix_setup must be called, add |fix_setup at the end of the line
#
abclient-0.2.3-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/49/eb/091b02c1e36d68927adfb746706e2c80f7e7bfb3f16e3cbcfec2632118ab/abclient-0.2.3.tar.gz|abclient-0.2.3
alembic-1.1.0-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/9a/0f/a5e8997d58882da8ecd288360dddf133a83145de6480216774923b393422/alembic-1.1.0.tar.gz|alembic-1.1.0
amqplib-1.0.2-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/75/b7/8c2429bf8d92354a0118614f9a4d15e53bc69ebedce534284111de5a0102/amqplib-1.0.2.tgz|amqplib-1.0.2
anyjson-0.3.3-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/c3/4d/d4089e1a3dd25b46bebdb55a992b0797cff657b4477bc32ce28038fdecbc/anyjson-0.3.3.tar.gz|anyjson-0.3.3
backports.ssl_match_hostname-3.7.0.1-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/ff/2b/8265224812912bc5b7a607c44bf7b027554e1b9775e9ee0de8032e3de4b2/backports.ssl_match_hostname-3.7.0.1.tar.gz|backports.ssl_match_hostname-3.7.0.1|fix_setup
bottle-0.12.17-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/c4/a5/6bf41779860e9b526772e1b3b31a65a22bd97535572988d16028c5ab617d/bottle-0.12.17.tar.gz|bottle-0.12.17
cassandra_driver-3.19.0-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/1c/fe/e4df42a3e864b6b7b2c7f6050b66cafc7fba8b46da0dfb9d51867e171a77/cassandra-driver-3.19.0.tar.gz|cassandra-driver-3.19.0
cmd2-0.8.9-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/e9/40/a71caa2aaff10c73612a7106e2d35f693e85b8cf6e37ab0774274bca3cf9/cmd2-0.8.9-py2.py3-none-any.whl
construct-2.8.22-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/e5/c6/3e3aeef38bb0c27364af3d21493d9690c7c3925f298559bca3c48b7c9419/construct-2.8.22.tar.gz|construct-2.8.22
crc16-0.1.1-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/a6/e0/70a44c4385f2b33df82e518005aae16b5c1feaf082c73c0acebe3426fc0a/crc16-0.1.1.tar.gz|crc16-0.1.1|fix_setup
demjson-2.2.4-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/96/67/6db789e2533158963d4af689f961b644ddd9200615b8ce92d6cad695c65a/demjson-2.2.4.tar.gz|demjson-2.2.4|fix_setup
django_floppyforms-1.7.0-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/8c/18/30a9137c7ae279a27ccdeb10f6fe8be18ee98551d01ec030b6cfe8b2d2e2/django-floppyforms-1.7.0.tar.gz|django-floppyforms-1.7.0
django_pyscss-2.0.2-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/4b/7f/d771802305184aac6010826f60a0b2ecaa3f57d19ab0e405f0c8db07e809/django-pyscss-2.0.2.tar.gz|django-pyscss-2.0.2
docopt-0.6.2-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-0.6.2.tar.gz|docopt-0.6.2
dogpile.cache-0.7.1-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/84/3e/dbf1cfc5228f1d3dca80ef714db2c5aaec5cd9efaf54d7e3daef6bc48b19/dogpile.cache-0.7.1.tar.gz|dogpile.cache-0.7.1
enum_compat-0.0.2-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/95/6e/26bdcba28b66126f66cf3e4cd03bcd63f7ae330d29ee68b1f6b623550bfa/enum-compat-0.0.2.tar.gz|enum-compat-0.0.2
etcd3-0.10.0-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/09/f1/93603a26daf7a993a0acbbcfd32afce8b2fdf30a765d5651571ab635969b/etcd3-0.10.0.tar.gz|etcd3-0.10.0
exabgp-4.1.2-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/b9/f1/f2417bc82c9caa220fcd369a3b55ac895088bcc8afc262e4bb07d48aa40c/exabgp-4.1.2.tar.gz|exabgp-4.1.2
flask_keystone-0.2-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/1f/ca/3938de8c5f4a3d1c5dd4278bedb9d31d79816feba4d088293c620a366fb1/flask_keystone-0.2.tar.gz|flask_keystone-0.2
flask_oslolog-0.1-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/a7/62/fec02ce761b548b1289680bb1be1aa0bce2b2c4017d5b31bd6c67c78aef9/flask_oslolog-0.1.tar.gz|flask_oslolog-0.1
fortiosclient-0.0.3-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/e9/aa/b2c0705d5e52c8d9af35422d940800b49c562758fbdad3179a6fbf6e92f5/fortiosclient-0.0.3.tar.gz|fortiosclient-0.0.3
frozendict-1.2-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/4e/55/a12ded2c426a4d2bee73f88304c9c08ebbdbadb82569ebdd6a0c007cfd08/frozendict-1.2.tar.gz|frozendict-1.2
funcparserlib-0.3.6-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/cb/f7/b4a59c3ccf67c0082546eaeb454da1a6610e924d2e7a2a21f337ecae7b40/funcparserlib-0.3.6.tar.gz|funcparserlib-0.3.6
functools32-3.2.3.post2-py2-none-any.whl|git|https://github.com/MiCHiLU/python-functools32|python-functools32|3.2.3-2|fix_setup
future-0.17.1-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/90/52/e20466b85000a181e1e144fd8305caf2cf475e2f9674e797b222f8105f5f/future-0.17.1.tar.gz|future-0.17.1
happybase-1.2.0-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/d1/9c/f5f7bdb5439cda2b7da4e20ac24ec0e2455fd68aade8397f211d2994c39d/happybase-1.2.0.tar.gz|happybase-1.2.0
hiredis-1.0.0-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/9e/e0/c160dbdff032ffe68e4b3c576cba3db22d8ceffc9513ae63368296d1bcc8/hiredis-1.0.0.tar.gz|hiredis-1.0.0
httplib2-0.13.1-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/78/23/bb9606e87a66fd8c72a2b1a75b049d3859a122bc2648915be845bc44e04f/httplib2-0.13.1.tar.gz|httplib2-0.13.1
itsdangerous-1.1.0-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
jaeger_client-4.1.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/f1/da/569a4f1bc3d0c412c7f903053f09ef62fa10949374ca90bc852b22dd3860/jaeger-client-4.1.0.tar.gz|jaeger-client-4.1.0
jsonpath_rw-1.4.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/71/7c/45001b1f19af8c4478489fbae4fc657b21c4c669d7a5a036a86882581d85/jsonpath-rw-1.4.0.tar.gz|jsonpath-rw-1.4.0
krest-1.3.1-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/fb/d2/9dbbd3a76f2385041720a0eb51ddab676e688fa8bee8a1489470839616cf/krest-1.3.1.tar.gz|krest-1.3.1
#libvirt_python-4.4.0-cp27-none-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/2b/8d/1160cf34dc3d296896eb5c8f4944439ea368b87d2d2431f58d08d6bdf374/libvirt-python-4.4.0.tar.gz|libvirt-python-4.4.0|fix_setup
logutils-0.3.5-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/49/b2/b57450889bf73da26027f8b995fd5fbfab258ec24ef967e4c1892f7cb121/logutils-0.3.5.tar.gz|logutils-0.3.5|fix_setup
lz4-0.9.0-cp27-cp27mu-linux_x86_64.whl|git|https://github.com/python-lz4/python-lz4|python-lz4|v0.9.0
Mako-1.1.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/b0/3c/8dcd6883d009f7cae0f3157fb53e9afb05a0d3d33b3db1268ec2e6f4a56b/Mako-1.1.0.tar.gz|Mako-1.1.0
marathon-0.11.0-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/97/e3/f036af0d94f98d199233faa71b5bcbef8b8e8e634551940d98c95d276e4f/marathon-0.11.0-py2.py3-none-any.whl
MarkupSafe-1.1.1-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/b9/2e/64db92e53b86efccfaea71321f597fa2e1b2bd3853d8ce658568f7a13094/MarkupSafe-1.1.1.tar.gz|MarkupSafe-1.1.1
mox-0.5.3-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/0c/a1/64740c638cc5fae807022368f4141700518ee343b53eb3e90bf3cc15a4d4/mox-0.5.3.tar.gz|mox-0.5.3|fix_setup
migrate-0.3.8-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/ce/31/1a4cbf8dc0536c55f41072e8ea37b3df1e412262dc731c57e5bb099eb9b2/migrate-0.3.8.tar.gz|migrate-0.3.8
mpmath-1.1.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/ca/63/3384ebb3b51af9610086b23ea976e6d27d6d97bf140a76a365bd77a3eb32/mpmath-1.1.0.tar.gz|mpmath-1.1.0|fix_setup
msgpack_python-0.4.8-cp27-cp27mu-linux_x86_64.whl|git|https://github.com/msgpack/msgpack-python.git|msgpack-python|0.4.8
munch-2.3.2-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/68/f4/260ec98ea840757a0da09e0ed8135333d59b8dfebe9752a365b04857660a/munch-2.3.2.tar.gz|munch-2.3.2
ndg_httpsclient-0.5.1-py2-none-any.whl|pypi|https://files.pythonhosted.org/packages/bf/b2/26470fde7ff55169df8e071fb42cb1f83e22bd952520ab2b5c5a5edc2acd/ndg_httpsclient-0.5.1-py2-none-any.whl
netifaces-0.10.9-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/0d/18/fd6e9c71a35b67a73160ec80a49da63d1eed2d2055054cc2995714949132/netifaces-0.10.9.tar.gz|netifaces-0.10.9
networking_sfc-8.0.0.0b2-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/6a/a8/0e9bdd1f87dfb50682f23a01f590530ec8fa715e51127cf9f58d1905886c/networking_sfc-8.0.0.0b2-py2.py3-none-any.whl
networkx-2.2-py2.py3-none-any.whl|zip|https://files.pythonhosted.org/packages/f3/f4/7e20ef40b118478191cec0b58c3192f822cace858c19505c7670961b76b2/networkx-2.2.zip|networkx-2.2
neutron_lib-1.29.1-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/6b/dd/548cbb7a936de18aa642372927e409540d8f5d96a2f7650c4d1197845f3c/neutron_lib-1.29.1-py2.py3-none-any.whl
nodeenv-1.3.3-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/00/6e/ed417bd1ed417ab3feada52d0c89ab0ed87d150f91590badf84273e047c9/nodeenv-1.3.3.tar.gz|nodeenv-1.3.3
nose_exclude-0.5.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/63/cf/90c4be56bf11b7bc8801086d9445baf731aa36b8e8fc5791731e8e604dcd/nose-exclude-0.5.0.tar.gz|nose-exclude-0.5.0
nosehtmloutput-0.0.5-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/0c/f7/6cb16c0b233d3f2d62be38ddb7d7c1bc967188c41575ecf0312e6575730d/nosehtmloutput-0.0.5.tar.gz|nosehtmloutput-0.0.5
openshift-0.8.6-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/73/ed/c92c0ba23b6c4c8e5542151a1b89cb8ff01f68a72fe68f6c95a28d885ebe/openshift-0.8.6.tar.gz|openshift-0.8.6
openstack.nose_plugin-0.11-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/bc/83/e7c9b9297e1a501d2c2617f98d6176199570e8ee32f0e72669c8852c6c81/openstack.nose_plugin-0.11.tar.gz|openstack.nose_plugin-0.11
opentracing-2.2.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/94/9f/289424136addf621fb4c75624ef9a3a80e8575da3993a87950c57e93217e/opentracing-2.2.0.tar.gz|opentracing-2.2.0
ovs-2.11.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/81/06/387b2159ac073de95e484aa6e2f108a232cd906e350307168843061f899f/ovs-2.11.0.tar.gz|ovs-2.11.0
panko-5.0.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/a9/89/d666e0889d869e41c9b7f87a0a34858b2520782b82e025da84c98e0db8f6/panko-5.0.0.tar.gz|panko-5.0.0
pathlib-1.0.1-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/ac/aa/9b065a76b9af472437a0059f77e8f962fe350438b927cb80184c32f075eb/pathlib-1.0.1.tar.gz|pathlib-1.0.1|fix_setup
pecan-1.3.3-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/93/98/889d7615595e894f4f7e4c17d4008c822c8e39e650c8ab390cc6c39b99c4/pecan-1.3.3.tar.gz|pecan-1.3.3
pifpaf-2.2.2-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/33/dc/4f276c55d94cd73fc1f94e2d23f34b476fea38d240e3e17b837a5749bc9f/pifpaf-2.2.2-py2.py3-none-any.whl
pika_pool-0.1.3-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/ec/48/50c8f02a3eef4cb824bec50661ec1713040402cc1b2a38954dc977a59c23/pika-pool-0.1.3.tar.gz|pika-pool-0.1.3
Pint-0.9-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/15/9d/bf177ebbc57d25e9e296addc14a1303d1e34d7964af5df428a8332349c42/Pint-0.9-py2.py3-none-any.whl
ply-3.11-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl
positional-1.1.2-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/8c/16/64a4fa0967c486380468dca18867d22ac1c17bba06349e31ace77c7757f7/positional-1.1.2.tar.gz|positional-1.1.2
prettytable-0.7.2-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/e0/a1/36203205f77ccf98f3c6cf17cf068c972e6458d7e58509ca66da949ca347/prettytable-0.7.2.tar.gz|prettytable-0.7.2
proboscis-1.2.6.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/3c/c8/c187818ab8d0faecdc3c16c1e0b2e522f3b38570f0fb91dcae21662019d0/proboscis-1.2.6.0.tar.gz|proboscis-1.2.6.0
psutil-5.6.3-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/1c/ca/5b8c1fe032a458c2c4bcbe509d1401dca9dda35c7fc46b36bb81c2834740/psutil-5.6.3.tar.gz|psutil-5.6.3
psycopg2-2.8.3-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/5c/1c/6997288da181277a0c29bc39a5f9143ff20b8c99f2a7d059cfb55163e165/psycopg2-2.8.3.tar.gz|psycopg2-2.8.3
PuLP-1.6.10-py2-none-any.whl|zip|https://files.pythonhosted.org/packages/2d/33/3ae6d9d2ac8c7068937af6372fd8828ac605e62a8b17106fe57110930d38/PuLP-1.6.10.zip|PuLP-1.6.10
pycparser-2.19-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/68/9e/49196946aee219aead1290e00d1e7fdeab8567783e83e1b9ab5585e6206a/pycparser-2.19.tar.gz|pycparser-2.19
pycrypto-2.6.1-cp27-cp27mu-linux_x86_64.whl|git|https://github.com/dlitz/pycrypto|pycrypto|v2.6.1|fix_setup
pycryptodomex-3.9.0-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/e4/90/a01cafbbad7466491e3a630bf1d734294a32ff1b10e7429e9a4e8478669e/pycryptodomex-3.9.0.tar.gz|pycryptodomex-3.9.0
pydot-1.4.1-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/33/d1/b1479a770f66d962f545c2101630ce1d5592d90cb4f083d38862e93d16d2/pydot-1.4.1-py2.py3-none-any.whl
pydotplus-2.0.2-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/60/bf/62567830b700d9f6930e9ab6831d6ba256f7b0b730acb37278b0ccdffacf/pydotplus-2.0.2.tar.gz|pydotplus-2.0.2
pyeclib-1.6.0-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/aa/d6/ca6bba5e66fc7a9810a995b17a3675492da2bec405806d8ac3db18cfd93b/pyeclib-1.6.0.tar.gz|pyeclib-1.6.0|fix_setup
pyinotify-0.9.6-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/e3/c0/fd5b18dde17c1249658521f69598f3252f11d9d7a980c5be8619970646e1/pyinotify-0.9.6.tar.gz|pyinotify-0.9.6
pykerberos-1.2.1-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/9a/b8/1ec56b6fa8a2e2a81420bd3d90e70b59fc83f6b857fb2c2c37accddc8be3/pykerberos-1.2.1.tar.gz|pykerberos-1.2.1
PyKMIP-0.9.1-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/24/b2/258332aea85163f49a187337e8c85ee4529eb499b84fe0a6fe2d1a9c8d25/PyKMIP-0.9.1.tar.gz|PyKMIP-0.9.1
pylxd-2.2.10-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/49/9a/eba58646721ffbff40dc41571b13c9528fdc4e26a82252318c997cdbe26a/pylxd-2.2.10.tar.gz|pylxd-2.2.10
pyngus-2.3.0-py2-none-any.whl|zip|https://files.pythonhosted.org/packages/58/b1/336b8f64e7e4efa9b95027af71e02cd4cfacca8f919345badb852381878a/pyngus-2.3.0.zip|pyngus-2.3.0
pyperclip-1.7.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/2d/0f/4eda562dffd085945d57c2d9a5da745cfb5228c02bc90f2c74bbac746243/pyperclip-1.7.0.tar.gz|pyperclip-1.7.0
pyroute2-0.5.6-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/f6/80/16a604075345f0c253537d55e5c5282a37c61a1fc8ee0fcc42d1fd2a0739/pyroute2-0.5.6.tar.gz|pyroute2-0.5.6|fix_setup
pyrsistent-0.15.4-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/b9/66/b2638d96a2d128b168d0dba60fdc77b7800a9b4a5340cefcc5fc4eae6295/pyrsistent-0.15.4.tar.gz|pyrsistent-0.15.4
pyScss-1.3.4-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/1d/4a/221ae7561c8f51c4f28b2b172366ccd0820b14bb947350df82428dfce381/pyScss-1.3.4.tar.gz|pyScss-1.3.4
pysendfile-2.0.1-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/cd/3f/4aa268afd0252f06b3b487c296a066a01ddd4222a46b7a3748599c8fc8c3/pysendfile-2.0.1.tar.gz|pysendfile-2.0.1
pystache-0.5.4-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/d6/fd/eb8c212053addd941cc90baac307c00ac246ac3fce7166b86434c6eae963/pystache-0.5.4.tar.gz|pystache-0.5.4
python_cinderclient-4.3.0-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/f1/09/760c454c5bf67509d7f8479d583a3e84411f51ec2a1942aea3741a49b090/python_cinderclient-4.3.0-py2.py3-none-any.whl
python_consul-1.1.0-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/3f/d0/59bc5f1c6c4d4b498c41d8ce7052ee9e9d68be19e16038a55252018a6c4d/python_consul-1.1.0-py2.py3-none-any.whl
python_editor-1.0.4-py2-none-any.whl|pypi|https://files.pythonhosted.org/packages/55/a0/3c0ba1c10f2ca381645dd46cb7afbb73fddc8de9f957e1f9e726a846eabc/python_editor-1.0.4-py2-none-any.whl
python_etcd-0.4.5-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/a1/da/616a4d073642da5dd432e5289b7c1cb0963cc5dde23d1ecb8d726821ab41/python-etcd-0.4.5.tar.gz|python-etcd-0.4.5
python_ldap-3.2.0-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/ea/93/596f875e003c770447f4b99267820a0c769dd2dc3ae3ed19afe460fcbad0/python-ldap-3.2.0.tar.gz|python-ldap-3.2.0
python_memcached-1.59-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/f5/90/19d3908048f70c120ec66a39e61b92c253e834e6e895cd104ce5e46cbe53/python_memcached-1.59-py2.py3-none-any.whl
#python_nss-1.0.1-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/6b/29/629098e34951c358b1f04f13a70b3590eb0cf2df817d945bd05c4169d71b/python-nss-1.0.1.tar.bz2|python-nss-1.0.1|fix_setup
python_pcre-0.7-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/9d/af/61435bd163f01fe3709fca9b1f79e4978d8089ee671d2e004fc85e10de29/python-pcre-0.7.tar.gz|python-pcre-0.7|fix_setup
python_pytun-2.3.0-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/52/a4/a062106c739eac79c8160fcf5779ebc84afc1c38b016ab216ed1e6da69b6/python-pytun-2.3.0.tar.gz|python-pytun-2.3.0|fix_setup
python_qpid_proton-0.28.0-cp27-cp27mu-linux_x86_64.whl|zip|https://files.pythonhosted.org/packages/96/35/2c86d844aec1acdfe7778966994aa270fcf03f076df393003bd4fc07dfa9/python-qpid-proton-0.28.0.zip|python-qpid-proton-0.28.0|fix_setup
python_string_utils-0.6.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/5d/13/216f2d4a71307f5a4e5782f1f59e6e8e5d6d6c00eaadf9f92aeccfbb900c/python-string-utils-0.6.0.tar.gz|python-string-utils-0.6.0|fix_setup
pyudev-0.21.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/bc/a2/31a07829acea8e70a28c247f43fa5d981229ae0f9edfeddedf52de00709b/pyudev-0.21.0.tar.gz|pyudev-0.21.0
PyYAML-5.1.2-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/e3/e8/b3212641ee2718d556df0f23f78de8303f068fe29cdaa7a91018849582fe/PyYAML-5.1.2.tar.gz|PyYAML-5.1.2
pyzabbix-0.7.5-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/11/ad/24e19d0cf16d05b7ee19f337f02058ee9b760649171865469ccceef83027/pyzabbix-0.7.5.tar.gz|pyzabbix-0.7.5
qpid_python-1.36.0.post1-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/2a/33/026ac50a29a85d5d54dd7784a98d624f6142cb07ce185ed268ef9bd3b6dc/qpid-python-1.36.0-1.tar.gz|qpid-python-1.36.0-1|fix_setup
rcssmin-1.0.6-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/e2/5f/852be8aa80d1c24de9b030cdb6532bc7e7a1c8461554f6edbe14335ba890/rcssmin-1.0.6.tar.gz|rcssmin-1.0.6|fix_setup
repoze.lru-0.7-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/12/bc/595a77c4b5e204847fdf19268314ef59c85193a9dc9f83630fc459c0fee5/repoze.lru-0.7.tar.gz|repoze.lru-0.7
requests_aws-0.1.8-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/5e/2f/4da17752036c04cf4c9af7a2da0d41ef2205043f1c61008006475aa24b8b/requests-aws-0.1.8.tar.gz|requests-aws-0.1.8
restructuredtext_lint-1.3.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/62/76/bd8760de759fb74d7863e6935200af101cb128a7de008741a4e22341d03c/restructuredtext_lint-1.3.0.tar.gz|restructuredtext_lint-1.3.0
retrying-1.3.3-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/44/ef/beae4b4ef80902f22e3af073397f079c96969c69b2c7d52a57ea9ae61c9d/retrying-1.3.3.tar.gz|retrying-1.3.3
rfc3986-1.4.0-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/78/be/7b8b99fd74ff5684225f50dd0e865393d2265656ef3b4ba9eaaaffe622b8/rfc3986-1.4.0-py2.py3-none-any.whl
rjsmin-1.1.0-cp27-cp27mu-manylinux1_x86_64.whl|pypi|https://files.pythonhosted.org/packages/c3/8e/079b7cc3a0fc9934ab05d868a00183c7aafd90b5d6138313d98ac2b9f666/rjsmin-1.1.0-cp27-cp27mu-manylinux1_x86_64.whl
rtslib_fb-2.1.69-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/fc/1a/77a26207bdad13cc39b93d874b3a1b04e5a0b0332fb716e4d654537bacdb/rtslib-fb-2.1.69.tar.gz|rtslib-fb-2.1.69
scandir-1.10.0-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/df/f5/9c052db7bd54d0cbf1bc0bb6554362bba1012d03e5888950a4f5c5dadc4e/scandir-1.10.0.tar.gz|scandir-1.10.0
scrypt-0.8.13-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/80/3d/141eb80e754b86f6c25a2ffaf6c3af3acdb65a3e3700829a05ab0c5d965d/scrypt-0.8.13.tar.gz|scrypt-0.8.13
SecretStorage-2.3.1-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/a5/a5/0830cfe34a4cfd0d1c3c8b614ede1edb2aaf999091ac8548dd19cb352e79/SecretStorage-2.3.1.tar.gz|SecretStorage-2.3.1
setproctitle-1.1.10-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/5a/0d/dc0d2234aacba6cf1a729964383e3452c52096dc695581248b548786f2b3/setproctitle-1.1.10.tar.gz|setproctitle-1.1.10
simplegeneric-0.8.1-py2-none-any.whl|zip|https://files.pythonhosted.org/packages/3d/57/4d9c9e3ae9a255cd4e1106bb57e24056d3d0709fc01b2e3e345898e49d5b/simplegeneric-0.8.1.zip|simplegeneric-0.8.1
simplejson-3.16.0-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/e3/24/c35fb1c1c315fc0fffe61ea00d3f88e85469004713dab488dee4f35b0aff/simplejson-3.16.0.tar.gz|simplejson-3.16.0
skydive_client-0.5.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/e4/68/78a246619d9b16bb226562c155f18f798283f86db8f01a89c30b97ac7a27/skydive-client-0.5.0.tar.gz|skydive-client-0.5.0
smmap2-2.0.5-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/55/d2/866d45e3a121ee15a1dc013824d58072fd5c7799c9c34d01378eb262ca8f/smmap2-2.0.5-py2.py3-none-any.whl
sphinxcontrib_fulltoc-1.2.0-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/8e/a6/d1297db9b75650681e5429e92e13df139ee6b64303ff1b2eea4ebd32c0a9/sphinxcontrib-fulltoc-1.2.0.tar.gz|sphinxcontrib-fulltoc-1.2.0
sphinxcontrib_pecanwsme-0.10.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/75/2b/105d07f47485ecf774cd80b881c29e148182b72a3a60596abdd016c87fce/sphinxcontrib-pecanwsme-0.10.0.tar.gz|sphinxcontrib-pecanwsme-0.10.0
SQLAlchemy-1.3.8-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/fc/49/82d64d705ced344ba458197dadab30cfa745f9650ee22260ac2b275d288c/SQLAlchemy-1.3.8.tar.gz|SQLAlchemy-1.3.8
SQLAlchemy_Utils-0.34.2-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/45/61/3bdd2931e86253fa7df6445a26929fbcc9bc43ad6b27a10f991eb6ecde75/SQLAlchemy-Utils-0.34.2.tar.gz|SQLAlchemy-Utils-0.34.2
stomp.py-4.1.22-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/52/7e/22ca617f61e0d5904e06c1ebd5d453adf30099526c0b64dca8d74fff0cad/stomp.py-4.1.22.tar.gz|stomp.py-4.1.22
subprocess32-3.5.4-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/32/c8/564be4d12629b912ea431f1a50eb8b3b9d00f1a0b1ceff17f266be190007/subprocess32-3.5.4.tar.gz|subprocess32-3.5.4
suds_jurko-0.6-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/bd/6f/54fbf0999a606680d27c69b1ad12dfff62768ecb9fe48524cebda6eb4423/suds-jurko-0.6.tar.bz2|suds-jurko-0.6
systemd_python-234-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/e8/a8/00ba0f605837a8f69523e6c3a4fb14675a6430c163f836540129c50b3aef/systemd-python-234.tar.gz|systemd-python-234|fix_setup
sysv_ipc-1.0.0-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/08/7d/a862f3045fa191eeece23650725273f2ccaf9ac6b95443dfe4cac6508638/sysv_ipc-1.0.0.tar.gz|sysv_ipc-1.0.0|fix_setup
Tempita-0.5.2-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/56/c8/8ed6eee83dbddf7b0fc64dd5d4454bc05e6ccaafff47991f73f2894d9ff4/Tempita-0.5.2.tar.gz|Tempita-0.5.2
termcolor-1.1.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz|termcolor-1.1.0|fix_setup
testrepository-0.0.20-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/0c/85/f495b58b2b0ac907def07385219e9747b75840fa01280f228546a4a5ad7f/testrepository-0.0.20.tar.gz|testrepository-0.0.20
thrift-0.11.0-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/c6/b4/510617906f8e0c5660e7d96fbc5585113f83ad547a3989b80297ac72a74c/thrift-0.11.0.tar.gz|thrift-0.11.0
thriftpy-0.3.9-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/f4/19/cca118cf7d2087310dbc8bd70dc7df0c1320f2652873a93d06d7ba356d4a/thriftpy-0.3.9.tar.gz|thriftpy-0.3.9
thriftpy2-0.4.8-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/2c/23/57b00b3d5d3d0ae66d79844a39d3c3b92dde3063c901036808602137d3ab/thriftpy2-0.4.8.tar.gz|thriftpy2-0.4.8
tinyrpc-1.0.3-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/21/7a/ff1a74256e1bcc04fbaa414c13a2bb79a29ac9918b25f2238592b991e3bc/tinyrpc-1.0.3.tar.gz|tinyrpc-1.0.3
tornado-4.5.3-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/e3/7b/e29ab3d51c8df66922fea216e2bddfcb6430fb29620e5165b16a216e0d3c/tornado-4.5.3.tar.gz|tornado-4.5.3
trollius-2.2.post1-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/0b/31/356ae13ad4df58f963e9954d55118f6cffdb3a903c1547973ad7bc347fb9/trollius-2.2.post1.tar.gz|trollius-2.2.post1
ujson-1.35-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/16/c4/79f3409bc710559015464e5f49b9879430d8f87498ecdc335899732e5377/ujson-1.35.tar.gz|ujson-1.35
unicodecsv-0.14.1-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/6f/a4/691ab63b17505a26096608cc309960b5a6bdf39e4ba1a793d5f9b1a53270/unicodecsv-0.14.1.tar.gz|unicodecsv-0.14.1
uWSGI-2.0.17.1-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/a2/c9/a2d5737f63cd9df4317a4acc15d1ddf4952e28398601d8d7d706c16381e0/uwsgi-2.0.17.1.tar.gz|uwsgi-2.0.17.1
voluptuous-0.11.7-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/24/3b/fe531688c0d9e057fccc0bc9430c0a3d4b90e0d2f015326e659c2944e328/voluptuous-0.11.7.tar.gz|voluptuous-0.11.7
warlock-1.3.3-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/c2/36/178b26a338cd6d30523246da4721b1114306f588deb813f3f503052825ee/warlock-1.3.3.tar.gz|warlock-1.3.3
weakrefmethod-1.0.3-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/99/82/73a21e3eab9a1ff76d12375f7301fba5c6325b9598eed0ae5b0cf5243656/weakrefmethod-1.0.3.tar.gz|weakrefmethod-1.0.3
websockify-0.9.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/c4/5b/16ec1e9f4fc536846d95a01a77d97da12f8042ca5cf83cdf3dd0442e881c/websockify-0.9.0.tar.gz|websockify-0.9.0
whereto-0.4.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/80/83/371a699ce90257608592dadca400a7ecd9a2db6137d78f6f433c7c5e3197/whereto-0.4.0.tar.gz|whereto-0.4.0
wrapt-1.11.2-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/23/84/323c2415280bc4fc880ac5050dddfb3c8062c2552b34c2e512eb4aa68f79/wrapt-1.11.2.tar.gz|wrapt-1.11.2|fix_setup
ws4py-0.5.1-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/53/20/4019a739b2eefe9282d3822ef6a225250af964b117356971bd55e274193c/ws4py-0.5.1.tar.gz|ws4py-0.5.1
WSME-0.9.3-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/d1/b6/8027248bfca3ce192bc54d46fcda4324c86c8beabe344cbb80fb57a6c868/WSME-0.9.3.tar.gz|WSME-0.9.3
xattr-0.9.6-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/60/80/a1f35bfd3c7ffb78791b2a6a15c233584a102a20547fd96d48933ec453e7/xattr-0.9.6.tar.gz|xattr-0.9.6
XStatic-1.0.2-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/36/78/c0ffaf14216517a14d3daa67ff24fbb60b4703e95ce1059a48fd508e6b8c/XStatic-1.0.2.tar.gz|XStatic-1.0.2
XStatic_Angular_FileUpload-12.0.4.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/4d/fd/c3051915d2f12e8fa11f59c01162ce85e38eca15d9ec73a3d7b271b49744/XStatic-Angular-FileUpload-12.0.4.0.tar.gz|XStatic-Angular-FileUpload-12.0.4.0
XStatic_Angular_lrdragndrop-1.0.2.4-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/80/ea/ffdde05892eabe468f22403f75299cf5d991f0af4f1400bebbf3af04bc9a/XStatic_Angular_lrdragndrop-1.0.2.4-py2.py3-none-any.whl
XStatic_Angular_Schema_Form-0.8.13.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/57/71/ceea2c0a72e2ee2d316d6ab1c06b21faa9f5cbc4b36a4127d7847b7079c5/XStatic-Angular-Schema-Form-0.8.13.0.tar.gz|XStatic-Angular-Schema-Form-0.8.13.0
XStatic_Bootstrap_Datepicker-1.3.1.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/91/4f/832f14478e714815bb3d44d01dfe8dbe19ccf9f823e0bc7ac1a8cf7fa6b3/XStatic-Bootstrap-Datepicker-1.3.1.0.tar.gz|XStatic-Bootstrap-Datepicker-1.3.1.0
XStatic_Hogan-2.0.0.2-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/21/fe/37d5c8247f24738e7e368d27ebf945de1ea29fbc3112ac5e75b1b7f1d0c9/XStatic-Hogan-2.0.0.2.tar.gz|XStatic-Hogan-2.0.0.2
XStatic_Jasmine-2.4.1.2-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/05/43/ceac7def3b6eaf82b6f593e3db2b03a9693a7b002b569e664e382aecddbc/XStatic_Jasmine-2.4.1.2-py2.py3-none-any.whl
XStatic_jQuery-1.12.4.1-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/67/f1/c18c14fc4aab386e4aba587c5d10c268de222c75bf5e271b6f68a2ea6e77/XStatic-jQuery-1.12.4.1.tar.gz|XStatic-jQuery-1.12.4.1
XStatic_JQuery_Migrate-1.2.1.1-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/7c/fc/edbfcb4574ec3cf0b68a0613dd1904c9139e3bf6dede792d2e7edcf13023/XStatic-JQuery-Migrate-1.2.1.1.tar.gz|XStatic-JQuery-Migrate-1.2.1.1
XStatic_JQuery.quicksearch-2.0.3.1-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/ea/ab/f934d06a78ce2c6bb594e9a426f6966b3192c4c279467c9898be6fd284d3/XStatic-JQuery.quicksearch-2.0.3.1.tar.gz|XStatic-JQuery.quicksearch-2.0.3.1
XStatic_JQuery.TableSorter-2.14.5.1-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/c1/6c/d6b0807906af90536e793a3b23cca557869fa5a27156639f0029de8b1f1f/XStatic-JQuery.TableSorter-2.14.5.1.tar.gz|XStatic-JQuery.TableSorter-2.14.5.1
XStatic_jquery_ui-1.12.1.1-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/e6/5a/883b22dad1d3e01708312d71c5bc63d543d66cef9b448c1cf85379d64fb3/XStatic-jquery-ui-1.12.1.1.tar.gz|XStatic-jquery-ui-1.12.1.1
XStatic_mdi-1.6.50.2-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/73/49/13b9f7ce9fbcc7fabe086b7ac1b056118cbd4c9abf185e01cc4a54631136/XStatic_mdi-1.6.50.2-py2.py3-none-any.whl
XStatic_objectpath-1.2.1.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/23/6c/56de25d9d3be430e7de2fcf4baac10279dad78d7b16cbda339cf014c2fe5/XStatic-objectpath-1.2.1.0.tar.gz|XStatic-objectpath-1.2.1.0
XStatic_Rickshaw-1.5.0.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/45/c6/39aa4d02ea96b04ff372d1e3558587155790b1c5444855a97b89c255be38/XStatic-Rickshaw-1.5.0.0.tar.gz|XStatic-Rickshaw-1.5.0.0
XStatic_Spin-1.2.5.2-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/af/21/cca7f0b7abfe008cdd03dd4c4255aad3087f4a892a010c0f6f1452d7344b/XStatic-Spin-1.2.5.2.tar.gz|XStatic-Spin-1.2.5.2
XStatic_term.js-0.0.7.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/63/7a/7bfec29f5f28fdda7170ebbbb2204aeb1d33d6050f3476a807590de06434/XStatic-term.js-0.0.7.0.tar.gz|XStatic-term.js-0.0.7.0
XStatic_tv4-1.2.7.0-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/2b/26/b07115af27b339c861b8c9a775a621524b421c898e26e015880dfb888c49/XStatic-tv4-1.2.7.0.tar.gz|XStatic-tv4-1.2.7.0
xvfbwrapper-0.2.9-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/57/b6/4920eabda9b49630dea58745e79f9919aba6408d460afe758bf6e9b21a04/xvfbwrapper-0.2.9.tar.gz|xvfbwrapper-0.2.9
yappi-1.0-cp27-cp27mu-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/d2/92/7cd637a19fa2a10c0e55a44f8b36bcb83f0e1943ba8f1fb5edb15c819f2e/yappi-1.0.tar.gz|yappi-1.0
zVMCloudConnector-1.4.1-py2-none-any.whl|tar|https://files.pythonhosted.org/packages/11/92/9f704de9759816e7b9897b9fb41285b421498b4642551b6fbcccd2850008/zVMCloudConnector-1.4.1.tar.gz|zVMCloudConnector-1.4.1

View File

@ -0,0 +1,180 @@
#
# git: wheelname|git|git-source|basedir|branch
# tar: wheelname|tar|wget-source|basedir
# pypi: wheelname|pypi|wget-source
# zip: wheelname|zip|wget-source|basedir
#
# If fix_setup must be called, add |fix_setup at the end of the line
#
abclient-0.2.3-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/49/eb/091b02c1e36d68927adfb746706e2c80f7e7bfb3f16e3cbcfec2632118ab/abclient-0.2.3.tar.gz|abclient-0.2.3
alembic-1.4.2-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/60/1e/cabc75a189de0fbb2841d0975243e59bde8b7822bacbb95008ac6fe9ad47/alembic-1.4.2.tar.gz|alembic-1.4.2
amqplib-1.0.2-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/75/b7/8c2429bf8d92354a0118614f9a4d15e53bc69ebedce534284111de5a0102/amqplib-1.0.2.tgz|amqplib-1.0.2
anyjson-0.3.3-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/c3/4d/d4089e1a3dd25b46bebdb55a992b0797cff657b4477bc32ce28038fdecbc/anyjson-0.3.3.tar.gz|anyjson-0.3.3
backports.ssl_match_hostname-3.7.0.1-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/ff/2b/8265224812912bc5b7a607c44bf7b027554e1b9775e9ee0de8032e3de4b2/backports.ssl_match_hostname-3.7.0.1.tar.gz|backports.ssl_match_hostname-3.7.0.1|fix_setup
bottle-0.12.18-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/e9/39/2bf3a1fd963e749cdbe5036a184eda8c37d8af25d1297d94b8b7aeec17c4/bottle-0.12.18-py3-none-any.whl
cassandra_driver-3.23.0-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/90/d7/d68083117bf50941870a795150f3261c5270e74c2d57ca3af0bd8423ed74/cassandra-driver-3.23.0.tar.gz|cassandra-driver-3.23.0
cmd2-0.8.9-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/e9/40/a71caa2aaff10c73612a7106e2d35f693e85b8cf6e37ab0774274bca3cf9/cmd2-0.8.9-py2.py3-none-any.whl
construct-2.8.22-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/e5/c6/3e3aeef38bb0c27364af3d21493d9690c7c3925f298559bca3c48b7c9419/construct-2.8.22.tar.gz|construct-2.8.22
crc16-0.1.1-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/a6/e0/70a44c4385f2b33df82e518005aae16b5c1feaf082c73c0acebe3426fc0a/crc16-0.1.1.tar.gz|crc16-0.1.1|fix_setup
demjson-2.2.4-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/96/67/6db789e2533158963d4af689f961b644ddd9200615b8ce92d6cad695c65a/demjson-2.2.4.tar.gz|demjson-2.2.4|fix_setup
django_debreach-2.0.1-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/2a/92/8c363cf5d1ee33d4c3b999b41c127c5cd3c64d4c20aa47bdfb6c386c9309/django_debreach-2.0.1-py3-none-any.whl
django_floppyforms-1.8.0-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/a9/d2/498b883ac309b56b70c26877974bd50927615dd3f6433f5463e2668b1128/django_floppyforms-1.8.0-py2.py3-none-any.whl
django_pyscss-2.0.2-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/4b/7f/d771802305184aac6010826f60a0b2ecaa3f57d19ab0e405f0c8db07e809/django-pyscss-2.0.2.tar.gz|django-pyscss-2.0.2
docopt-0.6.2-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-0.6.2.tar.gz|docopt-0.6.2
dogpile.cache-0.9.0-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/ac/6a/9ac405686a94b7f009a20a50070a5786b0e1aedc707b88d40d0c4b51a82e/dogpile.cache-0.9.0.tar.gz|dogpile.cache-0.9.0
enum_compat-0.0.3-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/55/ae/467bc4509246283bb59746e21a1a2f5a8aecbef56b1fa6eaca78cd438c8b/enum_compat-0.0.3-py3-none-any.whl
etcd3-0.10.0-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/09/f1/93603a26daf7a993a0acbbcfd32afce8b2fdf30a765d5651571ab635969b/etcd3-0.10.0.tar.gz|etcd3-0.10.0
exabgp-4.2.6-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/b6/36/7270c8e4b5b0ddba79301f5bbf206ce4b76247957169162b428e2695efa9/exabgp-4.2.6.tar.gz|exabgp-4.2.6
flask_keystone-0.2-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/1f/ca/3938de8c5f4a3d1c5dd4278bedb9d31d79816feba4d088293c620a366fb1/flask_keystone-0.2.tar.gz|flask_keystone-0.2
flask_oslolog-0.1-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/a7/62/fec02ce761b548b1289680bb1be1aa0bce2b2c4017d5b31bd6c67c78aef9/flask_oslolog-0.1.tar.gz|flask_oslolog-0.1
fortiosclient-0.0.3-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/e9/aa/b2c0705d5e52c8d9af35422d940800b49c562758fbdad3179a6fbf6e92f5/fortiosclient-0.0.3.tar.gz|fortiosclient-0.0.3
frozendict-1.2-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/4e/55/a12ded2c426a4d2bee73f88304c9c08ebbdbadb82569ebdd6a0c007cfd08/frozendict-1.2.tar.gz|frozendict-1.2
future-0.18.2-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/45/0b/38b06fd9b92dc2b68d58b75f900e97884c45bedd2ff83203d933cf5851c9/future-0.18.2.tar.gz|future-0.18.2
googleapis_common_protos-1.51.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/05/46/168fd780f594a4d61122f7f3dc0561686084319ad73b4febbf02ae8b32cf/googleapis-common-protos-1.51.0.tar.gz|googleapis-common-protos-1.51.0
happybase-1.2.0-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/d1/9c/f5f7bdb5439cda2b7da4e20ac24ec0e2455fd68aade8397f211d2994c39d/happybase-1.2.0.tar.gz|happybase-1.2.0
hiredis-1.0.1-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/7f/5c/62e5c6b811b4dcef4125b4a01f76db82c496d79299dd67053b8f9c0732c0/hiredis-1.0.1.tar.gz|hiredis-1.0.1
httplib2-0.17.2-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/dd/a6/e3d8ae2c5b3a89de9a6b5e1e9396ce41432e08feafe25c37c4dc6b49d79d/httplib2-0.17.2-py3-none-any.whl
ifaddr-0.1.6-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/9f/54/d92bda685093ebc70e2057abfa83ef1b3fb0ae2b6357262a3e19dfe96bb8/ifaddr-0.1.6.tar.gz|ifaddr-0.1.6
itsdangerous-1.1.0-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
jaeger_client-4.3.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/2b/75/17a937a61135671cebc175ab5c299dc0f7477042469482fd9a6f91262c68/jaeger-client-4.3.0.tar.gz|jaeger-client-4.3.0
jsonpath_rw-1.4.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/71/7c/45001b1f19af8c4478489fbae4fc657b21c4c669d7a5a036a86882581d85/jsonpath-rw-1.4.0.tar.gz|jsonpath-rw-1.4.0
krest-1.3.1-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/fb/d2/9dbbd3a76f2385041720a0eb51ddab676e688fa8bee8a1489470839616cf/krest-1.3.1.tar.gz|krest-1.3.1
libvirt_python-7.0.0-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/ee/32/f8f89f58e86ffd0d384d1864bbcefc1894efe5132dbc050489bd7555a6d6/libvirt-python-7.0.0.tar.gz|libvirt-python-7.0.0|fix_setup
logutils-0.3.5-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/49/b2/b57450889bf73da26027f8b995fd5fbfab258ec24ef967e4c1892f7cb121/logutils-0.3.5.tar.gz|logutils-0.3.5|fix_setup
lz4-0.9.0-cp39-cp39-linux_x86_64.whl|git|https://github.com/python-lz4/python-lz4|python-lz4|v0.9.0
Mako-1.1.2-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/50/78/f6ade1e18aebda570eed33b7c534378d9659351cadce2fcbc7b31be5f615/Mako-1.1.2-py2.py3-none-any.whl
marathon-0.12.0-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/41/66/814432693297dfb076958ae5ac781e3a88fd70d335473a57f4f2c6329515/marathon-0.12.0-py2.py3-none-any.whl
MarkupSafe-1.1.1-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/b9/2e/64db92e53b86efccfaea71321f597fa2e1b2bd3853d8ce658568f7a13094/MarkupSafe-1.1.1.tar.gz|MarkupSafe-1.1.1
migrate-0.3.8-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/ce/31/1a4cbf8dc0536c55f41072e8ea37b3df1e412262dc731c57e5bb099eb9b2/migrate-0.3.8.tar.gz|migrate-0.3.8
mox-0.5.3-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/0c/a1/64740c638cc5fae807022368f4141700518ee343b53eb3e90bf3cc15a4d4/mox-0.5.3.tar.gz|mox-0.5.3|fix_setup
mpmath-1.1.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/ca/63/3384ebb3b51af9610086b23ea976e6d27d6d97bf140a76a365bd77a3eb32/mpmath-1.1.0.tar.gz|mpmath-1.1.0|fix_setup
msgpack_python-0.4.8-cp39-cp39-linux_x86_64.whl|git|https://github.com/msgpack/msgpack-python.git|msgpack-python|0.4.8
munch-2.5.0-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/cc/ab/85d8da5c9a45e072301beb37ad7f833cd344e04c817d97e0cc75681d248f/munch-2.5.0-py2.py3-none-any.whl
ndg_httpsclient-0.5.1-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/fb/67/c2f508c00ed2a6911541494504b7cac16fe0b0473912568df65fd1801132/ndg_httpsclient-0.5.1-py3-none-any.whl
netifaces-0.10.9-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/0d/18/fd6e9c71a35b67a73160ec80a49da63d1eed2d2055054cc2995714949132/netifaces-0.10.9.tar.gz|netifaces-0.10.9
networking_sfc-8.0.0.0b2-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/6a/a8/0e9bdd1f87dfb50682f23a01f590530ec8fa715e51127cf9f58d1905886c/networking_sfc-8.0.0.0b2-py2.py3-none-any.whl
networkx-2.2-py2.py3-none-any.whl|zip|https://files.pythonhosted.org/packages/f3/f4/7e20ef40b118478191cec0b58c3192f822cace858c19505c7670961b76b2/networkx-2.2.zip|networkx-2.2
neutron_lib-2.3.0-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/83/52/805c061a96efca3c70c91d93fa8f7f555a7f86ba955ab9e4d1b41399459f/neutron_lib-2.3.0-py3-none-any.whl
nodeenv-1.3.5-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/08/43/86ff33286c83f7b5e8903c32db01fe122c5e8a9d8dc1067dcaa9be54a033/nodeenv-1.3.5-py2.py3-none-any.whl
nose_exclude-0.5.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/63/cf/90c4be56bf11b7bc8801086d9445baf731aa36b8e8fc5791731e8e604dcd/nose-exclude-0.5.0.tar.gz|nose-exclude-0.5.0
nosehtmloutput-0.0.7-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/e0/5d/2bb521a8ccb0222bd94ed557645955d95ba6798df6b3b4bdc2c31dec4f7c/nosehtmloutput-0.0.7-py2.py3-none-any.whl
openshift-0.8.6-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/73/ed/c92c0ba23b6c4c8e5542151a1b89cb8ff01f68a72fe68f6c95a28d885ebe/openshift-0.8.6.tar.gz|openshift-0.8.6
openstack.nose_plugin-0.11-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/bc/83/e7c9b9297e1a501d2c2617f98d6176199570e8ee32f0e72669c8852c6c81/openstack.nose_plugin-0.11.tar.gz|openstack.nose_plugin-0.11
opentracing-2.3.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/e4/a8/df5285f42cd07782409d0ae835785fae6e2a0f7e8b0036ea302f1422fd25/opentracing-2.3.0.tar.gz|opentracing-2.3.0
ovs-2.11.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/81/06/387b2159ac073de95e484aa6e2f108a232cd906e350307168843061f899f/ovs-2.11.0.tar.gz|ovs-2.11.0
panko-5.0.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/a9/89/d666e0889d869e41c9b7f87a0a34858b2520782b82e025da84c98e0db8f6/panko-5.0.0.tar.gz|panko-5.0.0
pathlib-1.0.1-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/ac/aa/9b065a76b9af472437a0059f77e8f962fe350438b927cb80184c32f075eb/pathlib-1.0.1.tar.gz|pathlib-1.0.1|fix_setup
pecan-1.3.3-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/93/98/889d7615595e894f4f7e4c17d4008c822c8e39e650c8ab390cc6c39b99c4/pecan-1.3.3.tar.gz|pecan-1.3.3
pifpaf-2.4.0-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/66/12/ed1533c0b31647ea9fb879b5ad239336ad98628227d0b90d3c7157ffb3fb/pifpaf-2.4.0-py2.py3-none-any.whl
pika_pool-0.1.3-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/ec/48/50c8f02a3eef4cb824bec50661ec1713040402cc1b2a38954dc977a59c23/pika-pool-0.1.3.tar.gz|pika-pool-0.1.3
Pint-0.9-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/15/9d/bf177ebbc57d25e9e296addc14a1303d1e34d7964af5df428a8332349c42/Pint-0.9-py2.py3-none-any.whl
ply-3.11-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl
positional-1.1.2-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/8c/16/64a4fa0967c486380468dca18867d22ac1c17bba06349e31ace77c7757f7/positional-1.1.2.tar.gz|positional-1.1.2
prettytable-0.7.2-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/e0/a1/36203205f77ccf98f3c6cf17cf068c972e6458d7e58509ca66da949ca347/prettytable-0.7.2.tar.gz|prettytable-0.7.2
proboscis-1.2.6.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/3c/c8/c187818ab8d0faecdc3c16c1e0b2e522f3b38570f0fb91dcae21662019d0/proboscis-1.2.6.0.tar.gz|proboscis-1.2.6.0
psutil-5.7.0-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/c4/b8/3512f0e93e0db23a71d82485ba256071ebef99b227351f0f5540f744af41/psutil-5.7.0.tar.gz|psutil-5.7.0
psycopg2-2.8.5-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/a8/8f/1c5690eebf148d1d1554fc00ccf9101e134636553dbb75bdfef4f85d7647/psycopg2-2.8.5.tar.gz|psycopg2-2.8.5
PuLP-2.1-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/41/34/757c88c320f80ce602199603afe63aed1e0bc11180b9a9fb6018fb2ce7ef/PuLP-2.1-py3-none-any.whl
pycparser-2.20-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/ae/e7/d9c3a176ca4b02024debf82342dab36efadfc5776f9c8db077e8f6e71821/pycparser-2.20-py2.py3-none-any.whl
pycrypto-2.6.1-cp39-cp39-linux_x86_64.whl|git|https://github.com/dlitz/pycrypto|pycrypto|v2.6.1|fix_setup
pycryptodomex-3.9.7-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/7f/3c/80cfaec41c3a9d0f524fe29bca9ab22d02ac84b5bfd6e22ade97d405bdba/pycryptodomex-3.9.7.tar.gz|pycryptodomex-3.9.7
pydot-1.4.1-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/33/d1/b1479a770f66d962f545c2101630ce1d5592d90cb4f083d38862e93d16d2/pydot-1.4.1-py2.py3-none-any.whl
pydotplus-2.0.2-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/60/bf/62567830b700d9f6930e9ab6831d6ba256f7b0b730acb37278b0ccdffacf/pydotplus-2.0.2.tar.gz|pydotplus-2.0.2
pyeclib-1.6.0-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/aa/d6/ca6bba5e66fc7a9810a995b17a3675492da2bec405806d8ac3db18cfd93b/pyeclib-1.6.0.tar.gz|pyeclib-1.6.0|fix_setup
pyinotify-0.9.6-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/e3/c0/fd5b18dde17c1249658521f69598f3252f11d9d7a980c5be8619970646e1/pyinotify-0.9.6.tar.gz|pyinotify-0.9.6
pykerberos-1.2.1-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/9a/b8/1ec56b6fa8a2e2a81420bd3d90e70b59fc83f6b857fb2c2c37accddc8be3/pykerberos-1.2.1.tar.gz|pykerberos-1.2.1
PyKMIP-0.10.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/f8/3e/e343bb9c2feb2a793affd052cb0da62326a021457a07d59251f771b523e7/PyKMIP-0.10.0.tar.gz|PyKMIP-0.10.0
pylxd-2.2.10-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/49/9a/eba58646721ffbff40dc41571b13c9528fdc4e26a82252318c997cdbe26a/pylxd-2.2.10.tar.gz|pylxd-2.2.10
pyngus-2.3.0-py3-none-any.whl|zip|https://files.pythonhosted.org/packages/58/b1/336b8f64e7e4efa9b95027af71e02cd4cfacca8f919345badb852381878a/pyngus-2.3.0.zip|pyngus-2.3.0
pyperclip-1.8.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/f6/5b/55866e1cde0f86f5eec59dab5de8a66628cb0d53da74b8dbc15ad8dabda3/pyperclip-1.8.0.tar.gz|pyperclip-1.8.0
pyroute2-0.5.11-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/00/5c/600b3fa746da0c857e1775b9cf0861eb8aaaec67c42352bb82f90c77e6fc/pyroute2-0.5.11.tar.gz|pyroute2-0.5.11
pyrsistent-0.16.0-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/9f/0d/cbca4d0bbc5671822a59f270e4ce3f2195f8a899c97d0d5abb81b191efb5/pyrsistent-0.16.0.tar.gz|pyrsistent-0.16.0
pyScss-1.3.7-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/e6/0d/6b52a5211121b870cc0c4c908b689fd460630b01a9e501a534db78e67bad/pyScss-1.3.7.tar.gz|pyScss-1.3.7
pysendfile-2.0.1-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/cd/3f/4aa268afd0252f06b3b487c296a066a01ddd4222a46b7a3748599c8fc8c3/pysendfile-2.0.1.tar.gz|pysendfile-2.0.1
pystache-0.5.4-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/d6/fd/eb8c212053addd941cc90baac307c00ac246ac3fce7166b86434c6eae963/pystache-0.5.4.tar.gz|pystache-0.5.4
python_barbicanclient-4.10.0-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/93/bf/b254f88d3c1a50212609d44ff8798e64f11df28011ead93161a2390cd4a2/python_barbicanclient-4.10.0-py3-none-any.whl
python_cinderclient-7.0.0-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/64/8f/c675ad3f12d52739948b299607285a56d0a1e7d1bcc72ceed1f625a38fff/python_cinderclient-7.0.0-py3-none-any.whl
python_consul-1.1.0-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/3f/d0/59bc5f1c6c4d4b498c41d8ce7052ee9e9d68be19e16038a55252018a6c4d/python_consul-1.1.0-py2.py3-none-any.whl
python_editor-1.0.4-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/c6/d3/201fc3abe391bbae6606e6f1d598c15d367033332bd54352b12f35513717/python_editor-1.0.4-py3-none-any.whl
python_etcd-0.4.5-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/a1/da/616a4d073642da5dd432e5289b7c1cb0963cc5dde23d1ecb8d726821ab41/python-etcd-0.4.5.tar.gz|python-etcd-0.4.5
python_json_logger-0.1.11-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/80/9d/1c3393a6067716e04e6fcef95104c8426d262b4adaf18d7aa2470eab028d/python-json-logger-0.1.11.tar.gz|python-json-logger-0.1.11
python_ldap-3.2.0-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/ea/93/596f875e003c770447f4b99267820a0c769dd2dc3ae3ed19afe460fcbad0/python-ldap-3.2.0.tar.gz|python-ldap-3.2.0
python_memcached-1.59-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/f5/90/19d3908048f70c120ec66a39e61b92c253e834e6e895cd104ce5e46cbe53/python_memcached-1.59-py2.py3-none-any.whl
python_neutronclient-7.1.0-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/e2/b9/2680f60f679e3d5099274e966a68d0c45e2387aa53c8754c7f120838aeb4/python_neutronclient-7.1.0-py3-none-any.whl
#python_nss-1.0.1-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/6b/29/629098e34951c358b1f04f13a70b3590eb0cf2df817d945bd05c4169d71b/python-nss-1.0.1.tar.bz2|python-nss-1.0.1|fix_setup
python_pcre-0.7-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/9d/af/61435bd163f01fe3709fca9b1f79e4978d8089ee671d2e004fc85e10de29/python-pcre-0.7.tar.gz|python-pcre-0.7|fix_setup
python_pytun-2.3.0-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/52/a4/a062106c739eac79c8160fcf5779ebc84afc1c38b016ab216ed1e6da69b6/python-pytun-2.3.0.tar.gz|python-pytun-2.3.0|fix_setup
python_string_utils-0.6.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/5d/13/216f2d4a71307f5a4e5782f1f59e6e8e5d6d6c00eaadf9f92aeccfbb900c/python-string-utils-0.6.0.tar.gz|python-string-utils-0.6.0|fix_setup
pyudev-0.22.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/72/c8/4660d815a79b1d42c409012aaa10ebd6b07a47529b4cb6880f27a24bd646/pyudev-0.22.0.tar.gz|pyudev-0.22.0
PyYAML-5.3.1-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/64/c2/b80047c7ac2478f9501676c988a5411ed5572f35d1beff9cae07d321512c/PyYAML-5.3.1.tar.gz|PyYAML-5.3.1
pyzabbix-0.7.5-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/11/ad/24e19d0cf16d05b7ee19f337f02058ee9b760649171865469ccceef83027/pyzabbix-0.7.5.tar.gz|pyzabbix-0.7.5
rcssmin-1.0.6-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/e2/5f/852be8aa80d1c24de9b030cdb6532bc7e7a1c8461554f6edbe14335ba890/rcssmin-1.0.6.tar.gz|rcssmin-1.0.6|fix_setup
repoze.lru-0.7-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/12/bc/595a77c4b5e204847fdf19268314ef59c85193a9dc9f83630fc459c0fee5/repoze.lru-0.7.tar.gz|repoze.lru-0.7
requests_aws-0.1.8-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/5e/2f/4da17752036c04cf4c9af7a2da0d41ef2205043f1c61008006475aa24b8b/requests-aws-0.1.8.tar.gz|requests-aws-0.1.8
restructuredtext_lint-1.3.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/62/76/bd8760de759fb74d7863e6935200af101cb128a7de008741a4e22341d03c/restructuredtext_lint-1.3.0.tar.gz|restructuredtext_lint-1.3.0
retrying-1.3.3-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/44/ef/beae4b4ef80902f22e3af073397f079c96969c69b2c7d52a57ea9ae61c9d/retrying-1.3.3.tar.gz|retrying-1.3.3
rfc3986-1.4.0-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/78/be/7b8b99fd74ff5684225f50dd0e865393d2265656ef3b4ba9eaaaffe622b8/rfc3986-1.4.0-py2.py3-none-any.whl
rjsmin-1.1.0-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/a2/ba/0fa30f7ec949714b8397e80ee2057d1a7e77b3a9f1b94c1ece93586cf34f/rjsmin-1.1.0.tar.gz|rjsmin-1.1.0
rtslib_fb-2.1.71-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/9e/1b/c26bc038888b1e6042d35ec97599cef05181fb6a7a7ecdbb0c041c3f50ea/rtslib-fb-2.1.71.tar.gz|rtslib-fb-2.1.71|
scandir-1.10.0-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/df/f5/9c052db7bd54d0cbf1bc0bb6554362bba1012d03e5888950a4f5c5dadc4e/scandir-1.10.0.tar.gz|scandir-1.10.0
scrypt-0.8.13-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/80/3d/141eb80e754b86f6c25a2ffaf6c3af3acdb65a3e3700829a05ab0c5d965d/scrypt-0.8.13.tar.gz|scrypt-0.8.13
SecretStorage-2.3.1-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/a5/a5/0830cfe34a4cfd0d1c3c8b614ede1edb2aaf999091ac8548dd19cb352e79/SecretStorage-2.3.1.tar.gz|SecretStorage-2.3.1
setproctitle-1.1.10-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/5a/0d/dc0d2234aacba6cf1a729964383e3452c52096dc695581248b548786f2b3/setproctitle-1.1.10.tar.gz|setproctitle-1.1.10
simplegeneric-0.8.1-py3-none-any.whl|zip|https://files.pythonhosted.org/packages/3d/57/4d9c9e3ae9a255cd4e1106bb57e24056d3d0709fc01b2e3e345898e49d5b/simplegeneric-0.8.1.zip|simplegeneric-0.8.1
simplejson-3.17.0-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/98/87/a7b98aa9256c8843f92878966dc3d8d914c14aad97e2c5ce4798d5743e07/simplejson-3.17.0.tar.gz|simplejson-3.17.0
skydive_client-0.7.0-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/98/86/62925511c6282add4e339639fc5a9e22fd0dc95783b7627fd56bf45a32bf/skydive_client-0.7.0-py3-none-any.whl
smmap-3.0.4-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/b0/9a/4d409a6234eb940e6a78dfdfc66156e7522262f5f2fecca07dc55915952d/smmap-3.0.4-py2.py3-none-any.whl
sphinxcontrib_fulltoc-1.2.0-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/8e/a6/d1297db9b75650681e5429e92e13df139ee6b64303ff1b2eea4ebd32c0a9/sphinxcontrib-fulltoc-1.2.0.tar.gz|sphinxcontrib-fulltoc-1.2.0
sphinxcontrib_pecanwsme-0.10.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/75/2b/105d07f47485ecf774cd80b881c29e148182b72a3a60596abdd016c87fce/sphinxcontrib-pecanwsme-0.10.0.tar.gz|sphinxcontrib-pecanwsme-0.10.0
SQLAlchemy-1.3.16-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/7f/4b/adfb1f03da7f50db054a5b728d32dbfae8937754cfa159efa0216a3758d1/SQLAlchemy-1.3.16.tar.gz|SQLAlchemy-1.3.16
SQLAlchemy_Utils-0.36.3-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/aa/24/68937e9b5c757f62795467e2f02a8f463a3a1fd3d08bd32a6b0583ba3dbf/SQLAlchemy-Utils-0.36.3.tar.gz|SQLAlchemy-Utils-0.36.3
stomp.py-6.0.0-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/d7/a0/a67e46ec1e63f2e78497e7331092eeb2ce4b69738d80a8210122e7a000a9/stomp.py-6.0.0-py3-none-any.whl
subprocess32-3.5.4-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/32/c8/564be4d12629b912ea431f1a50eb8b3b9d00f1a0b1ceff17f266be190007/subprocess32-3.5.4.tar.gz|subprocess32-3.5.4
suds_jurko-0.6-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/bd/6f/54fbf0999a606680d27c69b1ad12dfff62768ecb9fe48524cebda6eb4423/suds-jurko-0.6.tar.bz2|suds-jurko-0.6
systemd_python-234-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/e8/a8/00ba0f605837a8f69523e6c3a4fb14675a6430c163f836540129c50b3aef/systemd-python-234.tar.gz|systemd-python-234|fix_setup
sysv_ipc-1.0.1-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/57/8a/9bbb064566320cd66c6e32c35db76d43932d7b94348f0c4c1e74d03ec261/sysv_ipc-1.0.1.tar.gz|sysv_ipc-1.0.1|fix_setup
tabulate-0.8.7-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/c4/f4/770ae9385990f5a19a91431163d262182d3203662ea2b5739d0fcfc080f1/tabulate-0.8.7-py3-none-any.whl
tempest-24.0.0-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/f0/eb/d3fb2cdb72c20caa7a4e0af2c60176ce82e120e99ce7e5a62a386faae89c/tempest-24.0.0-py3-none-any.whl
Tempita-0.5.2-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/56/c8/8ed6eee83dbddf7b0fc64dd5d4454bc05e6ccaafff47991f73f2894d9ff4/Tempita-0.5.2.tar.gz|Tempita-0.5.2
termcolor-1.1.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz|termcolor-1.1.0|fix_setup
testrepository-0.0.20-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/0c/85/f495b58b2b0ac907def07385219e9747b75840fa01280f228546a4a5ad7f/testrepository-0.0.20.tar.gz|testrepository-0.0.20
thrift-0.13.0-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/97/1e/3284d19d7be99305eda145b8aa46b0c33244e4a496ec66440dac19f8274d/thrift-0.13.0.tar.gz|thrift-0.13.0
thriftpy2-0.4.11-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/a9/f0/9bf08e6b5983aa6a6103818da21eadfaea1ad99ec9882be3e75a30e8e9ff/thriftpy2-0.4.11.tar.gz|thriftpy2-0.4.11
tinyrpc-1.0.4-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/9d/91/c639ba014aada92446516c5fc4b04f2cee3539ab2d0758a6a87a6da973cb/tinyrpc-1.0.4.tar.gz|tinyrpc-1.0.4
tornado-6.0.4-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/95/84/119a46d494f008969bf0c775cb2c6b3579d3c4cc1bb1b41a022aa93ee242/tornado-6.0.4.tar.gz|tornado-6.0.4
trollius-2.2.post1-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/0b/31/356ae13ad4df58f963e9954d55118f6cffdb3a903c1547973ad7bc347fb9/trollius-2.2.post1.tar.gz|trollius-2.2.post1
ujson-2.0.3-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/50/d7/dce3fc97329639bba9c8b3cdadaa51ae2757c9402d4b43ac5feb8b624792/ujson-2.0.3.tar.gz|ujson-2.0.3
unicodecsv-0.14.1-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/6f/a4/691ab63b17505a26096608cc309960b5a6bdf39e4ba1a793d5f9b1a53270/unicodecsv-0.14.1.tar.gz|unicodecsv-0.14.1
uWSGI-2.0.17.1-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/a2/c9/a2d5737f63cd9df4317a4acc15d1ddf4952e28398601d8d7d706c16381e0/uwsgi-2.0.17.1.tar.gz|uwsgi-2.0.17.1
voluptuous-0.11.7-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/24/3b/fe531688c0d9e057fccc0bc9430c0a3d4b90e0d2f015326e659c2944e328/voluptuous-0.11.7.tar.gz|voluptuous-0.11.7
warlock-1.3.3-py2.py3-none-any.whl|tar|https://files.pythonhosted.org/packages/c2/36/178b26a338cd6d30523246da4721b1114306f588deb813f3f503052825ee/warlock-1.3.3.tar.gz|warlock-1.3.3
weakrefmethod-1.0.3-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/99/82/73a21e3eab9a1ff76d12375f7301fba5c6325b9598eed0ae5b0cf5243656/weakrefmethod-1.0.3.tar.gz|weakrefmethod-1.0.3
websockify-0.9.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/c4/5b/16ec1e9f4fc536846d95a01a77d97da12f8042ca5cf83cdf3dd0442e881c/websockify-0.9.0.tar.gz|websockify-0.9.0
whereto-0.4.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/80/83/371a699ce90257608592dadca400a7ecd9a2db6137d78f6f433c7c5e3197/whereto-0.4.0.tar.gz|whereto-0.4.0
wrapt-1.12.1-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/82/f7/e43cefbe88c5fd371f4cf0cf5eb3feccd07515af9fd6cf7dbf1d1793a797/wrapt-1.12.1.tar.gz|wrapt-1.12.1|fix_setup
ws4py-0.5.1-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/53/20/4019a739b2eefe9282d3822ef6a225250af964b117356971bd55e274193c/ws4py-0.5.1.tar.gz|ws4py-0.5.1
WSME-0.10.0-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/e6/79/8aca55e7f3f21549dba59c276fc990b8d9bbde071fb17e1a968254d1df36/WSME-0.10.0-py3-none-any.whl
xattr-0.9.7-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/c1/74/1ff659d6deb1d2d6babb9483171edfa330264ae2cbf005035bb7a77b07d2/xattr-0.9.7.tar.gz|xattr-0.9.7
XStatic-1.0.2-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/36/78/c0ffaf14216517a14d3daa67ff24fbb60b4703e95ce1059a48fd508e6b8c/XStatic-1.0.2.tar.gz|XStatic-1.0.2
XStatic_Angular_FileUpload-12.0.4.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/4d/fd/c3051915d2f12e8fa11f59c01162ce85e38eca15d9ec73a3d7b271b49744/XStatic-Angular-FileUpload-12.0.4.0.tar.gz|XStatic-Angular-FileUpload-12.0.4.0
XStatic_Angular_lrdragndrop-1.0.2.4-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/80/ea/ffdde05892eabe468f22403f75299cf5d991f0af4f1400bebbf3af04bc9a/XStatic_Angular_lrdragndrop-1.0.2.4-py2.py3-none-any.whl
XStatic_Angular_Schema_Form-0.8.13.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/57/71/ceea2c0a72e2ee2d316d6ab1c06b21faa9f5cbc4b36a4127d7847b7079c5/XStatic-Angular-Schema-Form-0.8.13.0.tar.gz|XStatic-Angular-Schema-Form-0.8.13.0
XStatic_Bootstrap_Datepicker-1.4.0.0-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/3e/ab/806279e234318feb71c392b51d3a5c537c96e123b8e53c7bdeadf987b174/XStatic_Bootstrap_Datepicker-1.4.0.0-py3-none-any.whl
XStatic_Hogan-2.0.0.3-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/6d/a3/822ce8570757a5b258c39f71f357b2276365f0e6d91094e37d706da5bee4/XStatic_Hogan-2.0.0.3-py3-none-any.whl
XStatic_Jasmine-2.4.1.2-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/05/43/ceac7def3b6eaf82b6f593e3db2b03a9693a7b002b569e664e382aecddbc/XStatic_Jasmine-2.4.1.2-py2.py3-none-any.whl
XStatic_jQuery-1.12.4.1-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/67/f1/c18c14fc4aab386e4aba587c5d10c268de222c75bf5e271b6f68a2ea6e77/XStatic-jQuery-1.12.4.1.tar.gz|XStatic-jQuery-1.12.4.1
XStatic_JQuery_Migrate-1.2.1.2-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/07/25/a1b3d6ecec8a889132951935cd1daec7b3a3f91bf08bdfb670b7ee5c3785/XStatic_JQuery_Migrate-1.2.1.2-py3-none-any.whl
XStatic_JQuery.quicksearch-2.0.3.2-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/41/cf/24665d03c2c5963f0ad476b2af16a59af377735ab89d48d97e178409faf5/XStatic_JQuery.quicksearch-2.0.3.2-py3-none-any.whl
XStatic_JQuery.TableSorter-2.14.5.2-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/38/af/f36c9ef0c5c1e12caca2d9f126573cdd7b97bc8d922fabe903964d078181/XStatic_JQuery.TableSorter-2.14.5.2-py3-none-any.whl
XStatic_jquery_ui-1.12.1.1-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/e6/5a/883b22dad1d3e01708312d71c5bc63d543d66cef9b448c1cf85379d64fb3/XStatic-jquery-ui-1.12.1.1.tar.gz|XStatic-jquery-ui-1.12.1.1
XStatic_mdi-1.6.50.2-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/73/49/13b9f7ce9fbcc7fabe086b7ac1b056118cbd4c9abf185e01cc4a54631136/XStatic_mdi-1.6.50.2-py2.py3-none-any.whl
XStatic_objectpath-1.2.1.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/23/6c/56de25d9d3be430e7de2fcf4baac10279dad78d7b16cbda339cf014c2fe5/XStatic-objectpath-1.2.1.0.tar.gz|XStatic-objectpath-1.2.1.0
XStatic_Rickshaw-1.5.1.0-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/23/cc/20380c36f60a424e655c005ce8be9329cbf41c58c5aa3db773485d1d0dcd/XStatic_Rickshaw-1.5.1.0-py3-none-any.whl
XStatic_Spin-1.2.5.3-py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/ba/27/c678a4ca0e0a14f5a9edf4c97a89a6c493446b1a00aee78ea03e79333097/XStatic_Spin-1.2.5.3-py3-none-any.whl
XStatic_term.js-0.0.7.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/63/7a/7bfec29f5f28fdda7170ebbbb2204aeb1d33d6050f3476a807590de06434/XStatic-term.js-0.0.7.0.tar.gz|XStatic-term.js-0.0.7.0
XStatic_tv4-1.2.7.0-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/2b/26/b07115af27b339c861b8c9a775a621524b421c898e26e015880dfb888c49/XStatic-tv4-1.2.7.0.tar.gz|XStatic-tv4-1.2.7.0
XStatic_Font_Awesome-4.7.0.0-py2.py3-none-any.whl|pypi|https://files.pythonhosted.org/packages/b4/ca/24685f91f744cde936294c033685cb4bb3302430f005cc834d86d75b9640/XStatic_Font_Awesome-4.7.0.0-py2.py3-none-any.whl
xvfbwrapper-0.2.9-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/57/b6/4920eabda9b49630dea58745e79f9919aba6408d460afe758bf6e9b21a04/xvfbwrapper-0.2.9.tar.gz|xvfbwrapper-0.2.9
yappi-1.2.3-cp39-cp39-linux_x86_64.whl|tar|https://files.pythonhosted.org/packages/37/dc/86bbe1822cdc6dbf46c644061bd24217f6a0f056f00162a3697c9bea7575/yappi-1.2.3.tar.gz|yappi-1.2.3
yaql-1.1.3-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/77/89/cfee017cf4f2d6f5e7159bbf13fe4131c7dbf20d675b78c9928ae9aa9df8/yaql-1.1.3.tar.gz|yaql-1.1.3
zVMCloudConnector-1.4.1-py3-none-any.whl|tar|https://files.pythonhosted.org/packages/11/92/9f704de9759816e7b9897b9fb41285b421498b4642551b6fbcccd2850008/zVMCloudConnector-1.4.1.tar.gz|zVMCloudConnector-1.4.1

View File

@ -14,8 +14,8 @@ if [ -z "${MY_WORKSPACE}" -o -z "${MY_REPO}" ]; then
exit 1
fi
SUPPORTED_OS_ARGS=('centos')
OS=centos
SUPPORTED_OS_ARGS=('centos' 'debian')
OS=
BUILD_STREAM=stable
function usage {
@ -69,6 +69,14 @@ while true; do
done
# Validate the OS option
if [ -z "$OS" ] ; then
OS="$(ID= && source /etc/os-release 2>/dev/null && echo $ID || true)"
if ! [ -n "$OS" ]; then
echo "Unable to determine OS" >&2
echo "Re-run with \"--os\" option" >&2
exit 1
fi
fi
VALID_OS=1
for supported_os in ${SUPPORTED_OS_ARGS[@]}; do
if [ "$OS" = "${supported_os}" ]; then
@ -85,12 +93,14 @@ fi
source ${MY_REPO}/build-tools/git-utils.sh
# For backward compatibility. Old repo location or new?
CENTOS_REPO=${MY_REPO}/centos-repo
if [ ! -d ${CENTOS_REPO} ]; then
CENTOS_REPO=${MY_REPO}/cgcs-centos-repo
if [ "${OS}" = "centos" ]; then
CENTOS_REPO=${MY_REPO}/centos-repo
if [ ! -d ${CENTOS_REPO} ]; then
echo "ERROR: directory ${MY_REPO}/centos-repo not found."
exit 1
CENTOS_REPO=${MY_REPO}/cgcs-centos-repo
if [ ! -d ${CENTOS_REPO} ]; then
echo "ERROR: directory ${MY_REPO}/centos-repo not found."
exit 1
fi
fi
fi
@ -99,6 +109,11 @@ function get_wheels_files {
}
function get_lower_layer_wheels_files {
# FIXME: debian: these are in repomgr pod, can't get to them easily
if [[ "${OS}" != "centos" ]] ; then
echo "$OS: lower layer wheels not supported!" >&2
return 1
fi
find ${CENTOS_REPO}/layer_wheels_inc -maxdepth 1 -name "*_${OS}_${BUILD_STREAM}_wheels.inc"
}
@ -114,6 +129,18 @@ function find_wheel_rpm {
done | head -n 1
}
function find_wheel_deb {
local wheel="$1"
local repo=
# FIXME: debian: we should also scan non-stx RPMs, but they are in repomgr
# pod and we can't easily get to them.
for repo in ${MY_WORKSPACE}/std ; do
if [ -d $repo ]; then
find $repo -name "${wheel}_[^-]*-[^-]*[.][^.]*[.]deb"
fi
done | head -n 1
}
declare -a WHEELS_FILES=($(get_wheels_files) $(get_lower_layer_wheels_files))
if [ ${#WHEELS_FILES[@]} -eq 0 ]; then
echo "Could not find ${OS} wheels.inc files" >&2
@ -121,6 +148,7 @@ if [ ${#WHEELS_FILES[@]} -eq 0 ]; then
fi
BUILD_OUTPUT_PATH=${MY_WORKSPACE}/std/build-wheels-${OS}-${BUILD_STREAM}/stx
echo "BUILD_OUTPUT_PATH: $BUILD_OUTPUT_PATH" >&2
if [ -d ${BUILD_OUTPUT_PATH} ]; then
# Wipe out the existing dir to ensure there are no stale files
rm -rf ${BUILD_OUTPUT_PATH}
@ -151,6 +179,22 @@ for wheel in $(sed -e 's/#.*//' ${WHEELS_FILES[@]} | sort -u); do
FAILED+=($wheel)
fi
;;
debian)
wheelfile="$(find_wheel_deb ${wheel})"
if [ ! -e "${wheelfile}" ]; then
echo "Could not find ${wheel}" >&2
FAILED+=($wheel)
continue
fi
echo Extracting ${wheelfile}
ar p ${wheelfile} data.tar.xz | tar -xJ
if [ ${PIPESTATUS[0]} -ne 0 -o ${PIPESTATUS[1]} -ne 0 ]; then
echo "Failed to extract content of ${wheelfile}" >&2
FAILED+=($wheel)
fi
;;
esac
done