| # Version pinning strategy: |
| # 1. Start with the highest Python version we support and pin the latest available package |
| # version for it. If that version also supports older Python versions, it covers a range |
| # (e.g. "python_version >= X"). |
| # 2. Work backwards through older Python versions, pinning the highest package version that |
| # is still compatible with each one. |
| # |
| # This means that when a new Python version is added, only the last (open-ended range) entry |
| # for each package typically needs to be updated. |
| |
| |
| pytest==4.6.11; python_version == "2.7" |
| pytest==6.2.5; python_version == "3.6" |
| pytest==7.4.4; python_version == "3.7" |
| pytest==8.3.5; python_version == "3.8" |
| pytest==8.4.2; python_version == "3.9" |
| pytest==9.0.3; python_version >= "3.10" |
| |
| pytest-timeout==1.4.2; python_version == "2.7" |
| pytest-timeout==2.1.0; python_version == "3.6" |
| pytest-timeout==2.4.0; python_version > "3.6" |
| |
| setuptools==44.1.1; python_version == "2.7" |
| setuptools==58.5.3; python_version == "3.6" |
| setuptools==59.8.0; python_version == "3.7" |
| setuptools==69.5.1; python_version == "3.8" |
| setuptools==82.0.1; python_version >= "3.9" |
| |
| pandas==0.24.2; python_version == "2.7" |
| pandas==1.1.5; python_version >= "3.6" and python_version < "3.8" |
| pandas==1.5.3; python_version == "3.8" |
| # Last 2.x (below 3.0); avoids pandas 3 defaults that break scanner tests (CoW). |
| pandas==2.3.3; python_version >= "3.9" |
| |
| numpy==1.16.6; python_version == "2.7" |
| numpy==1.19.5; python_version == "3.6" |
| numpy==1.21.6; python_version == "3.7" |
| numpy==1.24.4; python_version == "3.8" |
| numpy==2.0.2; python_version == "3.9" |
| numpy==2.2.6; python_version == "3.10" |
| numpy==2.4.4; python_version >= "3.11" |