##############################################################################
# Copyright 2018 EuropeanSoftwareMarketingLtd.
# ===================================================================
#  Licensed under the ApacheLicense, Version2.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
#
# 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
##############################################################################
# vnftest comment: this is a modified copy of
# yardstick/test-requirements.txt

# 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.

coverage==4.4.2             # Apache 2.0; OSI Approved  Apache Software License; http://www.apache.org/licenses/LICENSE-2.0; http://www.apache.org/licenses/LICENSE-2.0
fixtures==3.0.0             # OSI Approved  BSD License; OSI Approved  Apache Software License
packaging==16.8.0           # BSD or Apache License, Version 2.0
pyflakes==1.0.0             # MIT; OSI Approved  MIT License
pylint==1.8.1               # GPLv2
python-subunit==1.2.0       # OSI Approved  Apache Software License; OSI Approved  BSD License
testrepository==0.0.20      # OSI Approved  BSD License; OSI Approved  Apache Software License
testtools==2.3.0            # OSI Approved  MIT License
unittest2==1.1.0            # OSI Approved  BSD License

