# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.

pbr>=2.0 # Apache-2.0

# xml parsing
lxml!=3.7.0,>=2.3 # BSD
tempest>=12.1.0 # Apache-2.0
oslo.config>=3.22.0 # Apache-2.0
testtools>=1.4.0  # MIT
six>=1.9.0
requests>=2.14.2 # Apache-2.0
