# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.

[tox]
env_list = codestyle,py31{0,1,2,3,4,4t}
isolated_build = True

[testenv]
passenv = *
use_develop = True
deps =
    -r ./requirements/install.txt
    -r ./requirements/tests.txt
recreate = True
commands = pytest -s --teamcity {posargs:tests}

[testenv:py314t]
set_env = PYTHON_GIL=0
commands =
    python -c "import sys; assert not sys._is_gil_enabled(), 'GIL is still enabled!'"
    pytest -s --teamcity {posargs:tests}
