# -*- makefile -*-;
# -----------------------------------------------------------------------
# Copyright 2019-2025 Open Networking Foundation Contributors
#
# 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.
# -----------------------------------------------------------------------
# SPDX-FileCopyrightText: 2019-2025 Open Networking Foundation Contributors
# SPDX-License-Identifier: Apache-2.0
# -----------------------------------------------------------------------

virtualenv

flake8>=3.8.2,<=7.2.0
pexpect==4.9.0
pre-commit>=2.5.2,<=4.2.0
pylint>=2.5.2,<=3.3.6
yamllint>=1.23.0,<=1.37.0

# -----------------------------------------------------------------------
# https://pypi.org/project/robotframework/#history
# -----------------------------------------------------------------------
robotframework>=3.1.2,<=7.2.2
robotframework-importresource==0.2.0
robotframework-kafkalibrary==0.0.3
robotframework-lint==1.1
robotframework-requests==0.9.7
robotframework-robocop>=5.5.0,<=6.0.3
robotframework-sshlibrary==3.8.0
cord-robot==2.1.10

# Cannot be included until after tests are moved past Ubuntu 18.04/Python 3.8
# robotframework-tidy==4.16.0

matplotlib>=3.3.4,<=3.10.1
requests>=2.24.0,<=2.32.3
grpcio<=1.39.0  # Required for voltha-protos
grpc-robot>=2.9.3
kafka-robot>=2.3.2
voltha-protos>=5.6.2
protobuf>=3.15.7,<3.20.0
protobuf3-to-dict>=0.1.5
device-management-interface>=1.2.1
