  [tox]
  envlist =
         {py36,py37,py38,py39}-django30,
         {py36,py37,py38,py39}-django31,
         {py36,py37,py38,py39,py310}-django32,
         {py38,py39,py310}-{django40,django41,djangomain},
         {py311}-{django41,djangomain},
         base,dist,docs,
  
  [travis:env]
  DJANGO =
      3.0: django30
      3.1: django31
      3.2: django32
      4.0: django40
      4.1: django41
      main: djangomain
  
  [testenv]
  commands = python -W error::DeprecationWarning -W error::PendingDeprecationWarning runtests.py --coverage {posargs}
  envdir = {toxworkdir}/venvs/{envname}
  setenv =
 
</s> remove commands = ./runtests.py --no-pkgroot --staticfiles {posargs}
 </s> add commands = python -W error::DeprecationWarning -W error::PendingDeprecationWarning runtests.py --no-pkgroot --staticfiles {posargs} </s> remove       run: python -m pip install --upgrade codecov tox tox-py
 </s> add       run: python -m pip install --upgrade codecov tox

    - name: Install tox-py
      if: ${{ matrix.python-version == '3.6' }}
      run: python -m pip install --upgrade tox-py

    - name: Run tox targets for ${{ matrix.python-version }}
      if: ${{ matrix.python-version != '3.6' }}
      run: tox run -f py$(echo ${{ matrix.python-version }} | tr -d .) </s> remove         tox -e dist --installpkg ./dist/djangorestframework-*.whl
 </s> add  </s> remove         python setup.py bdist_wheel
        rm -r djangorestframework.egg-info  # see #6139
 </s> add 
       {py36,py37,py38,py39}-django30
       {py36,py37,py38,py39}-django31
       {py36,py37,py38,py39,py310}-django32
       {py38,py39,py310}-{django40,django41,djangomain}
       {py311}-{django41,djangomain}
       base
       dist
       docs
  [tox]
  envlist =
       {py36,py37,py38,py39}-django30
       {py36,py37,py38,py39}-django31
       {py36,py37,py38,py39,py310}-django32
       {py38,py39,py310}-{django40,django41,djangomain}
       {py311}-{django41,djangomain}
       base
       dist
       docs
       {py36,py37,py38,py39}-django30
       {py36,py37,py38,py39}-django31
       {py36,py37,py38,py39,py310}-django32
       {py38,py39,py310}-{django40,django41,djangomain}
       {py311}-{django41,djangomain}
       base
       dist
       docs
       {py36,py37,py38,py39}-django30
       {py36,py37,py38,py39}-django31
       {py36,py37,py38,py39,py310}-django32
       {py38,py39,py310}-{django40,django41,djangomain}
       {py311}-{django41,djangomain}
       base
       dist
       docs
       {py36,py37,py38,py39}-django30
       {py36,py37,py38,py39}-django31
       {py36,py37,py38,py39,py310}-django32
       {py38,py39,py310}-{django40,django41,djangomain}
       {py311}-{django41,djangomain}
       base
       dist
       docs
       {py36,py37,py38,py39}-django30
       {py36,py37,py38,py39}-django31
       {py36,py37,py38,py39,py310}-django32
       {py38,py39,py310}-{django40,django41,djangomain}
       {py311}-{django41,djangomain}
       base
       dist
       docs
       {py36,py37,py38,py39}-django30
       {py36,py37,py38,py39}-django31
       {py36,py37,py38,py39,py310}-django32
       {py38,py39,py310}-{django40,django41,djangomain}
       {py311}-{django41,djangomain}
       base
       dist
       docs
       {py36,py37,py38,py39}-django30
       {py36,py37,py38,py39}-django31
       {py36,py37,py38,py39,py310}-django32
       {py38,py39,py310}-{django40,django41,djangomain}
       {py311}-{django41,djangomain}
       base
       dist
       docs
       {py36,py37,py38,py39}-django30
       {py36,py37,py38,py39}-django31
       {py36,py37,py38,py39,py310}-django32
       {py38,py39,py310}-{django40,django41,djangomain}
       {py311}-{django41,djangomain}
       base
       dist
       docs
       {py36,py37,py38,py39}-django30
       {py36,py37,py38,py39}-django31
       {py36,py37,py38,py39,py310}-django32
       {py38,py39,py310}-{django40,django41,djangomain}
       {py311}-{django41,djangomain}
       base
       dist
       docs
       {py36,py37,py38,py39}-django30
       {py36,py37,py38,py39}-django31
       {py36,py37,py38,py39,py310}-django32
       {py38,py39,py310}-{django40,django41,djangomain}
       {py311}-{django41,djangomain}
       base
       dist
       docs
       {py36,py37,py38,py39}-django30
       {py36,py37,py38,py39}-django31
       {py36,py37,py38,py39,py310}-django32
       {py38,py39,py310}-{django40,django41,djangomain}
       {py311}-{django41,djangomain}
       base
       dist
       docs
       {py36,py37,py38,py39}-django30
       {py36,py37,py38,py39}-django31
       {py36,py37,py38,py39,py310}-django32
       {py38,py39,py310}-{django40,django41,djangomain}
       {py311}-{django41,djangomain}
       base
       dist
       docs
       {py36,py37,py38,py39}-django30
       {py36,py37,py38,py39}-django31
       {py36,py37,py38,py39,py310}-django32
       {py38,py39,py310}-{django40,django41,djangomain}
       {py311}-{django41,djangomain}
       base
       dist
       docs
       {py36,py37,py38,py39}-django30
       {py36,py37,py38,py39}-django31
       {py36,py37,py38,py39,py310}-django32
       {py38,py39,py310}-{django40,django41,djangomain}
       {py311}-{django41,djangomain}
       base
       dist
       docs
       {py36,py37,py38,py39}-django30
       {py36,py37,py38,py39}-django31
       {py36,py37,py38,py39,py310}-django32
       {py38,py39,py310}-{django40,django41,djangomain}
       {py311}-{django41,djangomain}
       base
       dist
       docs
  
  [testenv]
  commands = python -W error::DeprecationWarning -W error::PendingDeprecationWarning runtests.py --coverage {posargs}
  envdir = {toxworkdir}/venvs/{envname}
  setenv =
keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 Upgrade to tox 4 (#8795) 
tox.ini