mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 05:48:36 +08:00
1579 lines
46 KiB
Python
1579 lines
46 KiB
Python
from enum import Enum
|
|
from pathlib import Path
|
|
from typing import Any, TypedDict
|
|
|
|
# Constants - Evaluation Log Directories
|
|
BASE_IMAGE_BUILD_DIR = Path('logs/build_images/base')
|
|
ENV_IMAGE_BUILD_DIR = Path('logs/build_images/env')
|
|
INSTANCE_IMAGE_BUILD_DIR = Path('logs/build_images/instances')
|
|
RUN_EVALUATION_LOG_DIR = Path('logs/run_evaluation')
|
|
|
|
|
|
# Constants - Task Instance Class
|
|
class TestGenEvalInstance(TypedDict):
|
|
repo: str
|
|
base_commit: str
|
|
version: str
|
|
instance_id: str
|
|
patch: str
|
|
test_patch: str
|
|
preds_context: dict
|
|
code_src: str
|
|
test_src: str
|
|
code_file: str
|
|
test_file: str
|
|
local_imports: list
|
|
id: str
|
|
baseline_covs: dict
|
|
|
|
|
|
class TestStatus(Enum):
|
|
FAILED = 'FAILED'
|
|
PASSED = 'PASSED'
|
|
SKIPPED = 'SKIPPED'
|
|
ERROR = 'ERROR'
|
|
XFAIL = 'XFAIL'
|
|
|
|
|
|
FAIL_TO_PASS = 'FAIL_TO_PASS'
|
|
FAIL_TO_FAIL = 'FAIL_TO_FAIL'
|
|
PASS_TO_PASS = 'PASS_TO_PASS'
|
|
PASS_TO_FAIL = 'PASS_TO_FAIL'
|
|
|
|
TEST_PYTEST = 'coverage run -m pytest --no-header -rA --tb=no -p no:cacheprovider'
|
|
TEST_PYTEST_VERBOSE = 'coverage run -m pytest -rA --tb=long -p no:cacheprovider'
|
|
TEST_ASTROPY_PYTEST = (
|
|
'coverage run -m pytest -rA -vv -o console_output_style=classic --tb=no'
|
|
)
|
|
TEST_DJANGO = (
|
|
'coverage run ./tests/runtests.py --verbosity 2 --settings=test_sqlite --parallel 1'
|
|
)
|
|
TEST_DJANGO_NO_PARALLEL = 'coverage run ./tests/runtests.py --verbosity 2'
|
|
TEST_SEABORN = 'coverage run -m pytest --no-header -rA'
|
|
TEST_SEABORN_VERBOSE = 'coverage run -m pytest -rA --tb=long'
|
|
TEST_PYTEST = 'coverage run -m pytest -rA'
|
|
TEST_PYTEST_VERBOSE = 'coverage run -m pytest -rA --tb=long'
|
|
TEST_SPHINX = 'tox --current-env -epy39 -v --'
|
|
TEST_SYMPY = "PYTHONWARNINGS='ignore::UserWarning,ignore::SyntaxWarning' coverage run bin/test -C --verbose"
|
|
TEST_SYMPY_VERBOSE = 'coverage run bin/test -C --verbose'
|
|
|
|
|
|
# Constants - Installation Specifications
|
|
SPECS_SKLEARN = {
|
|
k: {
|
|
'python': '3.6',
|
|
'packages': 'numpy scipy cython pytest pandas matplotlib',
|
|
'install': 'python -m pip install -v --no-use-pep517 --no-build-isolation -e .',
|
|
'pip_packages': [
|
|
'cython',
|
|
'numpy==1.19.2',
|
|
'setuptools',
|
|
'scipy==1.5.2',
|
|
],
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in ['0.20', '0.21', '0.22']
|
|
}
|
|
SPECS_SKLEARN.update(
|
|
{
|
|
k: {
|
|
'python': '3.9',
|
|
'packages': "'numpy==1.19.2' 'scipy==1.5.2' 'cython==3.0.10' pytest 'pandas<2.0.0' 'matplotlib<3.9.0' setuptools pytest joblib threadpoolctl",
|
|
'install': 'python -m pip install -v --no-use-pep517 --no-build-isolation -e .',
|
|
'pip_packages': ['cython', 'setuptools', 'numpy', 'scipy'],
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in ['1.3', '1.4', '1.5', '1.6']
|
|
}
|
|
)
|
|
|
|
SPECS_FLASK = {
|
|
'2.0': {
|
|
'python': '3.9',
|
|
'packages': 'requirements.txt',
|
|
'install': 'python -m pip install -e .',
|
|
'pip_packages': [
|
|
'setuptools==70.0.0',
|
|
'Werkzeug==2.3.7',
|
|
'Jinja2==3.0.1',
|
|
'itsdangerous==2.1.2',
|
|
'click==8.0.1',
|
|
'MarkupSafe==2.1.3',
|
|
],
|
|
'test_cmd': TEST_PYTEST,
|
|
},
|
|
'2.1': {
|
|
'python': '3.10',
|
|
'packages': 'requirements.txt',
|
|
'install': 'python -m pip install -e .',
|
|
'pip_packages': [
|
|
'click==8.1.3',
|
|
'itsdangerous==2.1.2',
|
|
'Jinja2==3.1.2',
|
|
'MarkupSafe==2.1.1',
|
|
'Werkzeug==2.3.7',
|
|
],
|
|
'test_cmd': TEST_PYTEST,
|
|
},
|
|
}
|
|
SPECS_FLASK.update(
|
|
{
|
|
k: {
|
|
'python': '3.11',
|
|
'packages': 'requirements.txt',
|
|
'install': 'python -m pip install -e .',
|
|
'pip_packages': [
|
|
'click==8.1.3',
|
|
'itsdangerous==2.1.2',
|
|
'Jinja2==3.1.2',
|
|
'MarkupSafe==2.1.1',
|
|
'Werkzeug==2.3.7',
|
|
],
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in ['2.2', '2.3', '3.0', '3.1']
|
|
}
|
|
)
|
|
|
|
SPECS_DJANGO = {
|
|
k: {
|
|
'python': '3.5',
|
|
'packages': 'requirements.txt',
|
|
'pre_install': [
|
|
'apt-get update && apt-get install -y locales',
|
|
"echo 'en_US UTF-8' > /etc/locale.gen",
|
|
'locale-gen en_US.UTF-8',
|
|
],
|
|
'install': 'python setup.py install',
|
|
'pip_packages': ['setuptools'],
|
|
'eval_commands': [
|
|
'export LANG=en_US.UTF-8',
|
|
'export LC_ALL=en_US.UTF-8',
|
|
'export PYTHONIOENCODING=utf8',
|
|
'export LANGUAGE=en_US:en',
|
|
],
|
|
'test_cmd': TEST_DJANGO,
|
|
}
|
|
for k in ['1.7', '1.8', '1.9', '1.10', '1.11', '2.0', '2.1', '2.2']
|
|
}
|
|
SPECS_DJANGO.update(
|
|
{
|
|
k: {
|
|
'python': '3.5',
|
|
'install': 'python setup.py install',
|
|
'test_cmd': TEST_DJANGO,
|
|
}
|
|
for k in ['1.4', '1.5', '1.6']
|
|
}
|
|
)
|
|
SPECS_DJANGO.update(
|
|
{
|
|
k: {
|
|
'python': '3.6',
|
|
'packages': 'requirements.txt',
|
|
'install': 'python -m pip install -e .',
|
|
'eval_commands': [
|
|
"sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen",
|
|
'export LANG=en_US.UTF-8',
|
|
'export LANGUAGE=en_US:en',
|
|
'export LC_ALL=en_US.UTF-8',
|
|
],
|
|
'test_cmd': TEST_DJANGO,
|
|
}
|
|
for k in ['3.0', '3.1', '3.2']
|
|
}
|
|
)
|
|
SPECS_DJANGO.update(
|
|
{
|
|
k: {
|
|
'python': '3.8',
|
|
'packages': 'requirements.txt',
|
|
'install': 'python -m pip install -e .',
|
|
'test_cmd': TEST_DJANGO,
|
|
}
|
|
for k in ['4.0']
|
|
}
|
|
)
|
|
SPECS_DJANGO.update(
|
|
{
|
|
k: {
|
|
'python': '3.9',
|
|
'packages': 'requirements.txt',
|
|
'install': 'python -m pip install -e .',
|
|
'test_cmd': TEST_DJANGO,
|
|
}
|
|
for k in ['4.1', '4.2']
|
|
}
|
|
)
|
|
SPECS_DJANGO.update(
|
|
{
|
|
k: {
|
|
'python': '3.11',
|
|
'packages': 'requirements.txt',
|
|
'install': 'python -m pip install -e .',
|
|
'test_cmd': TEST_DJANGO,
|
|
}
|
|
for k in ['5.0', '5.1', '5.2']
|
|
}
|
|
)
|
|
SPECS_DJANGO['1.9']['test_cmd'] = TEST_DJANGO_NO_PARALLEL
|
|
|
|
SPECS_REQUESTS = {
|
|
k: {
|
|
'python': '3.9',
|
|
'packages': 'pytest',
|
|
'install': 'python -m pip install .',
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in ['0.7', '0.8', '0.9', '0.11', '0.13', '0.14', '1.1', '1.2', '2.0', '2.2']
|
|
+ ['2.3', '2.4', '2.5', '2.7', '2.8', '2.9', '2.10', '2.11', '2.12', '2.17']
|
|
+ ['2.18', '2.19', '2.22', '2.26', '2.25', '2.27', '2.31', '3.0']
|
|
}
|
|
|
|
SPECS_SEABORN = {
|
|
k: {
|
|
'python': '3.9',
|
|
'install': 'python -m pip install -e .',
|
|
'pip_packages': [
|
|
'contourpy==1.1.0',
|
|
'cycler==0.11.0',
|
|
'fonttools==4.42.1',
|
|
'importlib-resources==6.0.1',
|
|
'kiwisolver==1.4.5',
|
|
'matplotlib==3.7.2',
|
|
'numpy==1.25.2',
|
|
'packaging==23.1',
|
|
'pandas==1.3.5', # 2.0.3
|
|
'pillow==10.0.0',
|
|
'pyparsing==3.0.9',
|
|
'pytest',
|
|
'python-dateutil==2.8.2',
|
|
'pytz==2023.3.post1',
|
|
'scipy==1.11.2',
|
|
'six==1.16.0',
|
|
'tzdata==2023.1',
|
|
'zipp==3.16.2',
|
|
],
|
|
'test_cmd': TEST_SEABORN,
|
|
}
|
|
for k in ['0.11']
|
|
}
|
|
SPECS_SEABORN.update(
|
|
{
|
|
k: {
|
|
'python': '3.9',
|
|
'install': 'python -m pip install -e .[dev]',
|
|
'pip_packages': [
|
|
'contourpy==1.1.0',
|
|
'cycler==0.11.0',
|
|
'fonttools==4.42.1',
|
|
'importlib-resources==6.0.1',
|
|
'kiwisolver==1.4.5',
|
|
'matplotlib==3.7.2',
|
|
'numpy==1.25.2',
|
|
'packaging==23.1',
|
|
'pandas==2.0.0',
|
|
'pillow==10.0.0',
|
|
'pyparsing==3.0.9',
|
|
'pytest',
|
|
'python-dateutil==2.8.2',
|
|
'pytz==2023.3.post1',
|
|
'scipy==1.11.2',
|
|
'six==1.16.0',
|
|
'tzdata==2023.1',
|
|
'zipp==3.16.2',
|
|
],
|
|
'test_cmd': TEST_SEABORN,
|
|
}
|
|
for k in ['0.12', '0.13', '0.14']
|
|
}
|
|
)
|
|
|
|
SPECS_PYTEST = {
|
|
k: {
|
|
'python': '3.9',
|
|
'install': 'python -m pip install -e .',
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in [
|
|
'4.4',
|
|
'4.5',
|
|
'4.6',
|
|
'5.0',
|
|
'5.1',
|
|
'5.2',
|
|
'5.3',
|
|
'5.4',
|
|
'6.0',
|
|
'6.2',
|
|
'6.3',
|
|
'7.0',
|
|
'7.1',
|
|
'7.2',
|
|
'7.4',
|
|
'8.0',
|
|
'8.1',
|
|
'8.2',
|
|
'8.3',
|
|
'8.4',
|
|
]
|
|
}
|
|
SPECS_PYTEST['4.4']['pip_packages'] = [
|
|
'atomicwrites==1.4.1',
|
|
'attrs==23.1.0',
|
|
'more-itertools==10.1.0',
|
|
'pluggy==0.13.1',
|
|
'py==1.11.0',
|
|
'setuptools==68.0.0',
|
|
'six==1.16.0',
|
|
]
|
|
SPECS_PYTEST['4.5']['pip_packages'] = [
|
|
'atomicwrites==1.4.1',
|
|
'attrs==23.1.0',
|
|
'more-itertools==10.1.0',
|
|
'pluggy==0.11.0',
|
|
'py==1.11.0',
|
|
'setuptools==68.0.0',
|
|
'six==1.16.0',
|
|
'wcwidth==0.2.6',
|
|
]
|
|
SPECS_PYTEST['4.6']['pip_packages'] = [
|
|
'atomicwrites==1.4.1',
|
|
'attrs==23.1.0',
|
|
'more-itertools==10.1.0',
|
|
'packaging==23.1',
|
|
'pluggy==0.13.1',
|
|
'py==1.11.0',
|
|
'six==1.16.0',
|
|
'wcwidth==0.2.6',
|
|
]
|
|
for k in ['5.0', '5.1', '5.2']:
|
|
SPECS_PYTEST[k]['pip_packages'] = [
|
|
'atomicwrites==1.4.1',
|
|
'attrs==23.1.0',
|
|
'more-itertools==10.1.0',
|
|
'packaging==23.1',
|
|
'pluggy==0.13.1',
|
|
'py==1.11.0',
|
|
'wcwidth==0.2.6',
|
|
]
|
|
SPECS_PYTEST['5.3']['pip_packages'] = [
|
|
'attrs==23.1.0',
|
|
'more-itertools==10.1.0',
|
|
'packaging==23.1',
|
|
'pluggy==0.13.1',
|
|
'py==1.11.0',
|
|
'wcwidth==0.2.6',
|
|
]
|
|
SPECS_PYTEST['5.4']['pip_packages'] = [
|
|
'py==1.11.0',
|
|
'packaging==23.1',
|
|
'attrs==23.1.0',
|
|
'more-itertools==10.1.0',
|
|
'pluggy==0.13.1',
|
|
]
|
|
SPECS_PYTEST['6.0']['pip_packages'] = [
|
|
'attrs==23.1.0',
|
|
'iniconfig==2.0.0',
|
|
'more-itertools==10.1.0',
|
|
'packaging==23.1',
|
|
'pluggy==0.13.1',
|
|
'py==1.11.0',
|
|
'toml==0.10.2',
|
|
]
|
|
for k in ['6.2', '6.3']:
|
|
SPECS_PYTEST[k]['pip_packages'] = [
|
|
'attrs==23.1.0',
|
|
'iniconfig==2.0.0',
|
|
'packaging==23.1',
|
|
'pluggy==0.13.1',
|
|
'py==1.11.0',
|
|
'toml==0.10.2',
|
|
]
|
|
SPECS_PYTEST['7.0']['pip_packages'] = [
|
|
'attrs==23.1.0',
|
|
'iniconfig==2.0.0',
|
|
'packaging==23.1',
|
|
'pluggy==0.13.1',
|
|
'py==1.11.0',
|
|
]
|
|
for k in ['7.1', '7.2']:
|
|
SPECS_PYTEST[k]['pip_packages'] = [
|
|
'attrs==23.1.0',
|
|
'iniconfig==2.0.0',
|
|
'packaging==23.1',
|
|
'pluggy==0.13.1',
|
|
'py==1.11.0',
|
|
'tomli==2.0.1',
|
|
]
|
|
for k in ['7.4', '8.0', '8.1', '8.2', '8.3', '8.4']:
|
|
SPECS_PYTEST[k]['pip_packages'] = [
|
|
'iniconfig==2.0.0',
|
|
'packaging==23.1',
|
|
'pluggy==1.3.0',
|
|
'exceptiongroup==1.1.3',
|
|
'tomli==2.0.1',
|
|
]
|
|
|
|
SPECS_MATPLOTLIB = {
|
|
k: {
|
|
'python': '3.11',
|
|
'packages': 'environment.yml',
|
|
'install': 'python -m pip install -e .',
|
|
'pre_install': [
|
|
'apt-get -y update && apt-get -y upgrade && DEBIAN_FRONTEND=noninteractive apt-get install -y imagemagick ffmpeg texlive texlive-latex-extra texlive-fonts-recommended texlive-xetex texlive-luatex cm-super dvipng'
|
|
],
|
|
'pip_packages': [
|
|
'contourpy==1.1.0',
|
|
'cycler==0.11.0',
|
|
'fonttools==4.42.1',
|
|
'ghostscript',
|
|
'kiwisolver==1.4.5',
|
|
'numpy==1.25.2',
|
|
'packaging==23.1',
|
|
'pillow==10.0.0',
|
|
'pikepdf',
|
|
'pyparsing==3.0.9',
|
|
'python-dateutil==2.8.2',
|
|
'six==1.16.0',
|
|
'setuptools==68.1.2',
|
|
'setuptools-scm==7.1.0',
|
|
'typing-extensions==4.7.1',
|
|
],
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in ['3.5', '3.6', '3.7', '3.8', '3.9']
|
|
}
|
|
SPECS_MATPLOTLIB.update(
|
|
{
|
|
k: {
|
|
'python': '3.8',
|
|
'packages': 'requirements.txt',
|
|
'install': 'python -m pip install -e .',
|
|
'pre_install': [
|
|
'apt-get -y update && apt-get -y upgrade && DEBIAN_FRONTEND=noninteractive apt-get install -y imagemagick ffmpeg libfreetype6-dev pkg-config texlive texlive-latex-extra texlive-fonts-recommended texlive-xetex texlive-luatex cm-super'
|
|
],
|
|
'pip_packages': ['pytest', 'ipython'],
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in ['3.1', '3.2', '3.3', '3.4']
|
|
}
|
|
)
|
|
SPECS_MATPLOTLIB.update(
|
|
{
|
|
k: {
|
|
'python': '3.7',
|
|
'packages': 'requirements.txt',
|
|
'install': 'python -m pip install -e .',
|
|
'pre_install': [
|
|
'apt-get -y update && apt-get -y upgrade && apt-get install -y imagemagick ffmpeg libfreetype6-dev pkg-config'
|
|
],
|
|
'pip_packages': ['pytest'],
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in ['3.0']
|
|
}
|
|
)
|
|
SPECS_MATPLOTLIB.update(
|
|
{
|
|
k: {
|
|
'python': '3.5',
|
|
'install': 'python setup.py build; python setup.py install',
|
|
'pre_install': [
|
|
'apt-get -y update && apt-get -y upgrade && && apt-get install -y imagemagick ffmpeg'
|
|
],
|
|
'pip_packages': ['pytest'],
|
|
'execute_test_as_nonroot': True,
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in ['2.0', '2.1', '2.2', '1.0', '1.1', '1.2', '1.3', '1.4', '1.5']
|
|
}
|
|
)
|
|
for k in ['3.8', '3.9']:
|
|
SPECS_MATPLOTLIB[k]['install'] = (
|
|
'python -m pip install --no-build-isolation -e ".[dev]"'
|
|
)
|
|
|
|
SPECS_SPHINX = {
|
|
k: {
|
|
'python': '3.9',
|
|
'pip_packages': ['tox==4.16.0', 'tox-current-env==0.0.11'],
|
|
'install': 'python -m pip install -e .[test]',
|
|
'pre_install': ["sed -i 's/pytest/pytest -rA/' tox.ini"],
|
|
'test_cmd': TEST_SPHINX,
|
|
}
|
|
for k in ['1.5', '1.6', '1.7', '1.8', '2.0', '2.1', '2.2', '2.3', '2.4', '3.0']
|
|
+ ['3.1', '3.2', '3.3', '3.4', '3.5', '4.0', '4.1', '4.2', '4.3', '4.4']
|
|
+ ['4.5', '5.0', '5.1', '5.2', '5.3', '6.0', '6.2', '7.0', '7.1', '7.2']
|
|
+ ['7.3', '7.4', '8.0', '8.1']
|
|
}
|
|
for k in ['3.0', '3.1', '3.2', '3.3', '3.4', '3.5', '4.0', '4.1', '4.2', '4.3', '4.4']:
|
|
SPECS_SPHINX[k]['pre_install'].extend(
|
|
[
|
|
"sed -i 's/Jinja2>=2.3/Jinja2<3.0/' setup.py",
|
|
"sed -i 's/sphinxcontrib-applehelp/sphinxcontrib-applehelp<=1.0.7/' setup.py",
|
|
"sed -i 's/sphinxcontrib-devhelp/sphinxcontrib-devhelp<=1.0.5/' setup.py",
|
|
"sed -i 's/sphinxcontrib-qthelp/sphinxcontrib-qthelp<=1.0.6/' setup.py",
|
|
"sed -i 's/alabaster>=0.7,<0.8/alabaster>=0.7,<0.7.12/' setup.py",
|
|
"sed -i \"s/'packaging',/'packaging', 'markupsafe<=2.0.1',/\" setup.py",
|
|
]
|
|
)
|
|
if k in ['4.2', '4.3', '4.4']:
|
|
SPECS_SPHINX[k]['pre_install'].extend(
|
|
[
|
|
"sed -i 's/sphinxcontrib-htmlhelp>=2.0.0/sphinxcontrib-htmlhelp>=2.0.0,<=2.0.4/' setup.py",
|
|
"sed -i 's/sphinxcontrib-serializinghtml>=1.1.5/sphinxcontrib-serializinghtml>=1.1.5,<=1.1.9/' setup.py",
|
|
]
|
|
)
|
|
elif k == '4.1':
|
|
SPECS_SPHINX[k]['pre_install'].extend(
|
|
[
|
|
(
|
|
"grep -q 'sphinxcontrib-htmlhelp>=2.0.0' setup.py && "
|
|
"sed -i 's/sphinxcontrib-htmlhelp>=2.0.0/sphinxcontrib-htmlhelp>=2.0.0,<=2.0.4/' setup.py || "
|
|
"sed -i 's/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp<=2.0.4/' setup.py"
|
|
),
|
|
(
|
|
"grep -q 'sphinxcontrib-serializinghtml>=1.1.5' setup.py && "
|
|
"sed -i 's/sphinxcontrib-serializinghtml>=1.1.5/sphinxcontrib-serializinghtml>=1.1.5,<=1.1.9/' setup.py || "
|
|
"sed -i 's/sphinxcontrib-serializinghtml/sphinxcontrib-serializinghtml<=1.1.9/' setup.py"
|
|
),
|
|
]
|
|
)
|
|
else:
|
|
SPECS_SPHINX[k]['pre_install'].extend(
|
|
[
|
|
"sed -i 's/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp<=2.0.4/' setup.py",
|
|
"sed -i 's/sphinxcontrib-serializinghtml/sphinxcontrib-serializinghtml<=1.1.9/' setup.py",
|
|
]
|
|
)
|
|
for k in ['7.2', '7.3', '7.4', '8.0', '8.1']:
|
|
SPECS_SPHINX[k]['pre_install'] += ['apt-get update && apt-get install -y graphviz']
|
|
for k in ['8.0', '8.1']:
|
|
SPECS_SPHINX[k]['python'] = '3.10'
|
|
|
|
SPECS_ASTROPY = {
|
|
k: {
|
|
'python': '3.9',
|
|
'install': 'python -m pip install -e .[test] --verbose',
|
|
'pip_packages': [
|
|
'attrs==23.1.0',
|
|
'exceptiongroup==1.1.3',
|
|
'execnet==2.0.2',
|
|
'hypothesis==6.82.6',
|
|
'iniconfig==2.0.0',
|
|
'numpy==1.25.2',
|
|
'packaging==23.1',
|
|
'pluggy==1.3.0',
|
|
'psutil==5.9.5',
|
|
'pyerfa==2.0.0.3',
|
|
'pytest-arraydiff==0.5.0',
|
|
'pytest-astropy-header==0.2.2',
|
|
'pytest-astropy==0.10.0',
|
|
'pytest-cov==4.1.0',
|
|
'pytest-doctestplus==1.0.0',
|
|
'pytest-filter-subpackage==0.1.2',
|
|
'pytest-mock==3.11.1',
|
|
'pytest-openfiles==0.5.0',
|
|
'pytest-remotedata==0.4.0',
|
|
'pytest-xdist==3.3.1',
|
|
'pytest==7.4.0',
|
|
'PyYAML==6.0.1',
|
|
'setuptools==68.0.0',
|
|
'sortedcontainers==2.4.0',
|
|
'tomli==2.0.1',
|
|
],
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in ['3.0', '3.1', '3.2', '4.1', '4.2', '4.3', '5.0', '5.1', '5.2', 'v5.3']
|
|
}
|
|
SPECS_ASTROPY.update(
|
|
{
|
|
k: {
|
|
'python': '3.6',
|
|
'install': 'python -m pip install -e .[test] --verbose',
|
|
'packages': 'setuptools==38.2.4',
|
|
'pip_packages': [
|
|
'attrs==17.3.0',
|
|
'exceptiongroup==0.0.0a0',
|
|
'execnet==1.5.0',
|
|
'hypothesis==3.44.2',
|
|
'cython==0.27.3',
|
|
'jinja2==2.10',
|
|
'MarkupSafe==1.0',
|
|
'numpy==1.16.0',
|
|
'packaging==16.8',
|
|
'pluggy==0.6.0',
|
|
'psutil==5.4.2',
|
|
'pyerfa==1.7.0',
|
|
'pytest-arraydiff==0.1',
|
|
'pytest-astropy-header==0.1',
|
|
'pytest-astropy==0.2.1',
|
|
'pytest-cov==2.5.1',
|
|
'pytest-doctestplus==0.1.2',
|
|
'pytest-filter-subpackage==0.1',
|
|
'pytest-forked==0.2',
|
|
'pytest-mock==1.6.3',
|
|
'pytest-openfiles==0.2.0',
|
|
'pytest-remotedata==0.2.0',
|
|
'pytest-xdist==1.20.1',
|
|
'pytest==3.3.1',
|
|
'PyYAML==3.12',
|
|
'sortedcontainers==1.5.9',
|
|
'tomli==0.2.0',
|
|
],
|
|
'test_cmd': TEST_ASTROPY_PYTEST,
|
|
}
|
|
for k in ['0.1', '0.2', '0.3', '0.4', '1.1', '1.2', '1.3']
|
|
}
|
|
)
|
|
for k in ['4.1', '4.2', '4.3', '5.0', '5.1', '5.2', 'v5.3']:
|
|
SPECS_ASTROPY[k]['pre_install'] = [
|
|
'sed -i \'s/requires = \\["setuptools",/requires = \\["setuptools==68.0.0",/\' pyproject.toml'
|
|
]
|
|
for k in ['v5.3']:
|
|
SPECS_ASTROPY[k]['python'] = '3.10'
|
|
|
|
SPECS_SYMPY = {
|
|
k: {
|
|
'python': '3.9',
|
|
'packages': 'mpmath flake8',
|
|
'pip_packages': ['mpmath==1.3.0', 'flake8-comprehensions'],
|
|
'install': 'python -m pip install -e .',
|
|
'test_cmd': TEST_SYMPY,
|
|
}
|
|
for k in ['0.7', '1.0', '1.1', '1.10', '1.11', '1.12', '1.2', '1.4', '1.5', '1.6']
|
|
+ ['1.7', '1.8', '1.9']
|
|
+ ['1.10', '1.11', '1.12', '1.13', '1.14']
|
|
}
|
|
SPECS_SYMPY.update(
|
|
{
|
|
k: {
|
|
'python': '3.9',
|
|
'packages': 'requirements.txt',
|
|
'install': 'python -m pip install -e .',
|
|
'pip_packages': ['mpmath==1.3.0'],
|
|
'test_cmd': TEST_SYMPY,
|
|
}
|
|
for k in ['1.13', '1.14']
|
|
}
|
|
)
|
|
|
|
SPECS_PYLINT = {
|
|
k: {
|
|
'python': '3.9',
|
|
'packages': 'requirements.txt',
|
|
'install': 'python -m pip install -e .',
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in [
|
|
'2.10',
|
|
'2.11',
|
|
'2.13',
|
|
'2.14',
|
|
'2.15',
|
|
'2.16',
|
|
'2.17',
|
|
'2.8',
|
|
'2.9',
|
|
'3.0',
|
|
'3.1',
|
|
'3.2',
|
|
'3.3',
|
|
'4.0',
|
|
]
|
|
}
|
|
SPECS_PYLINT['2.8']['pip_packages'] = ['pyenchant==3.2']
|
|
SPECS_PYLINT['2.8']['pre_install'] = [
|
|
'apt-get update && apt-get install -y libenchant-2-dev hunspell-en-us'
|
|
]
|
|
SPECS_PYLINT.update(
|
|
{
|
|
k: {
|
|
**SPECS_PYLINT[k],
|
|
'pip_packages': ['astroid==3.0.0a6', 'setuptools'],
|
|
}
|
|
for k in ['3.0', '3.1', '3.2', '3.3', '4.0']
|
|
}
|
|
)
|
|
for v in ['2.14', '2.15', '2.17', '3.0', '3.1', '3.2', '3.3', '4.0']:
|
|
SPECS_PYLINT[v]['nano_cpus'] = int(2e9)
|
|
|
|
SPECS_XARRAY = {
|
|
k: {
|
|
'python': '3.10',
|
|
'packages': 'environment.yml',
|
|
'install': 'python -m pip install -e .',
|
|
'pip_packages': [
|
|
'numpy==1.23.0',
|
|
'packaging==23.1',
|
|
'pandas==1.5.3',
|
|
'pytest==7.4.0',
|
|
'python-dateutil==2.8.2',
|
|
'pytz==2023.3',
|
|
'six==1.16.0',
|
|
'scipy==1.11.1',
|
|
'setuptools==68.0.0',
|
|
'dask==2022.8.1',
|
|
],
|
|
'no_use_env': True,
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in [
|
|
'0.12',
|
|
'0.18',
|
|
'0.19',
|
|
'0.20',
|
|
'2022.03',
|
|
'2022.06',
|
|
'2022.09',
|
|
'2023.07',
|
|
'2024.05',
|
|
]
|
|
}
|
|
|
|
SPECS_SQLFLUFF = {
|
|
k: {
|
|
'python': '3.9',
|
|
'packages': 'requirements.txt',
|
|
'install': 'python -m pip install -e .',
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in [
|
|
'0.10',
|
|
'0.11',
|
|
'0.12',
|
|
'0.13',
|
|
'0.4',
|
|
'0.5',
|
|
'0.6',
|
|
'0.8',
|
|
'0.9',
|
|
'1.0',
|
|
'1.1',
|
|
'1.2',
|
|
'1.3',
|
|
'1.4',
|
|
'2.0',
|
|
'2.1',
|
|
'2.2',
|
|
]
|
|
}
|
|
|
|
SPECS_DBT_CORE = {
|
|
k: {
|
|
'python': '3.9',
|
|
'packages': 'requirements.txt',
|
|
'install': 'python -m pip install -e .',
|
|
}
|
|
for k in [
|
|
'0.13',
|
|
'0.14',
|
|
'0.15',
|
|
'0.16',
|
|
'0.17',
|
|
'0.18',
|
|
'0.19',
|
|
'0.20',
|
|
'0.21',
|
|
'1.0',
|
|
'1.1',
|
|
'1.2',
|
|
'1.3',
|
|
'1.4',
|
|
'1.5',
|
|
'1.6',
|
|
'1.7',
|
|
]
|
|
}
|
|
|
|
SPECS_PYVISTA = {
|
|
k: {
|
|
'python': '3.9',
|
|
'install': 'python -m pip install -e .',
|
|
'pip_packages': ['pytest'],
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in ['0.20', '0.21', '0.22', '0.23']
|
|
}
|
|
SPECS_PYVISTA.update(
|
|
{
|
|
k: {
|
|
'python': '3.9',
|
|
'packages': 'requirements.txt',
|
|
'install': 'python -m pip install -e .',
|
|
'pip_packages': ['pytest'],
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in [
|
|
'0.24',
|
|
'0.25',
|
|
'0.26',
|
|
'0.27',
|
|
'0.28',
|
|
'0.29',
|
|
'0.30',
|
|
'0.31',
|
|
'0.32',
|
|
'0.33',
|
|
'0.34',
|
|
'0.35',
|
|
'0.36',
|
|
'0.37',
|
|
'0.38',
|
|
'0.39',
|
|
'0.40',
|
|
'0.41',
|
|
'0.42',
|
|
'0.43',
|
|
]
|
|
}
|
|
)
|
|
|
|
SPECS_ASTROID = {
|
|
k: {
|
|
'python': '3.9',
|
|
'install': 'python -m pip install -e .',
|
|
'pip_packages': ['pytest'],
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in [
|
|
'2.10',
|
|
'2.12',
|
|
'2.13',
|
|
'2.14',
|
|
'2.15',
|
|
'2.16',
|
|
'2.5',
|
|
'2.6',
|
|
'2.7',
|
|
'2.8',
|
|
'2.9',
|
|
'3.0',
|
|
]
|
|
}
|
|
|
|
SPECS_MARSHMALLOW = {
|
|
k: {
|
|
'python': '3.9',
|
|
'install': "python -m pip install -e '.[dev]'",
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in [
|
|
'2.18',
|
|
'2.19',
|
|
'2.20',
|
|
'3.0',
|
|
'3.1',
|
|
'3.10',
|
|
'3.11',
|
|
'3.12',
|
|
'3.13',
|
|
'3.15',
|
|
'3.16',
|
|
'3.19',
|
|
'3.2',
|
|
'3.4',
|
|
'3.8',
|
|
'3.9',
|
|
]
|
|
}
|
|
|
|
SPECS_PVLIB = {
|
|
k: {
|
|
'python': '3.9',
|
|
'install': 'python -m pip install -e .[all]',
|
|
'packages': 'pandas scipy',
|
|
'pip_packages': ['jupyter', 'ipython', 'matplotlib', 'pytest', 'flake8'],
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in ['0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9']
|
|
}
|
|
|
|
SPECS_PYDICOM = {
|
|
k: {
|
|
'python': '3.6',
|
|
'install': 'python -m pip install -e .',
|
|
'packages': 'numpy',
|
|
'pip_packages': ['pytest'],
|
|
'test_cmd': TEST_PYTEST,
|
|
}
|
|
for k in [
|
|
'1.0',
|
|
'1.1',
|
|
'1.2',
|
|
'1.3',
|
|
'1.4',
|
|
'2.0',
|
|
'2.1',
|
|
'2.2',
|
|
'2.3',
|
|
'2.4',
|
|
'3.0',
|
|
]
|
|
}
|
|
SPECS_PYDICOM.update({k: {**SPECS_PYDICOM[k], 'python': '3.8'} for k in ['1.4', '2.0']})
|
|
SPECS_PYDICOM.update({k: {**SPECS_PYDICOM[k], 'python': '3.9'} for k in ['2.1', '2.2']})
|
|
SPECS_PYDICOM.update({k: {**SPECS_PYDICOM[k], 'python': '3.10'} for k in ['2.3']})
|
|
SPECS_PYDICOM.update(
|
|
{k: {**SPECS_PYDICOM[k], 'python': '3.11'} for k in ['2.4', '3.0']}
|
|
)
|
|
|
|
SPECS_HUMANEVAL = {k: {'python': '3.9', 'test_cmd': 'python'} for k in ['1.0']}
|
|
|
|
# Constants - Task Instance Installation Environment
|
|
MAP_REPO_VERSION_TO_SPECS: dict[str, dict[str, Any]] = {
|
|
'astropy/astropy': SPECS_ASTROPY,
|
|
'dbt-labs/dbt-core': SPECS_DBT_CORE,
|
|
'django/django': SPECS_DJANGO,
|
|
'matplotlib/matplotlib': SPECS_MATPLOTLIB,
|
|
'marshmallow-code/marshmallow': SPECS_MARSHMALLOW,
|
|
'mwaskom/seaborn': SPECS_SEABORN,
|
|
'pallets/flask': SPECS_FLASK,
|
|
'psf/requests': SPECS_REQUESTS,
|
|
'pvlib/pvlib-python': SPECS_PVLIB,
|
|
'pydata/xarray': SPECS_XARRAY,
|
|
'pydicom/pydicom': SPECS_PYDICOM,
|
|
'pylint-dev/astroid': SPECS_ASTROID,
|
|
'pylint-dev/pylint': SPECS_PYLINT,
|
|
'pytest-dev/pytest': SPECS_PYTEST,
|
|
'pyvista/pyvista': SPECS_PYVISTA,
|
|
'scikit-learn/scikit-learn': SPECS_SKLEARN,
|
|
'sphinx-doc/sphinx': SPECS_SPHINX,
|
|
'sqlfluff/sqlfluff': SPECS_SQLFLUFF,
|
|
'swe-bench/humaneval': SPECS_HUMANEVAL,
|
|
'sympy/sympy': SPECS_SYMPY,
|
|
}
|
|
|
|
# Constants - Repository Specific Installation Instructions
|
|
MAP_REPO_TO_INSTALL = {}
|
|
|
|
|
|
# Constants - Task Instance Requirements File Paths
|
|
MAP_REPO_TO_REQS_PATHS = {
|
|
'dbt-labs/dbt-core': ['dev-requirements.txt', 'dev_requirements.txt'],
|
|
'django/django': ['tests/requirements/py3.txt'],
|
|
'matplotlib/matplotlib': [
|
|
'requirements/dev/dev-requirements.txt',
|
|
'requirements/testing/travis_all.txt',
|
|
],
|
|
'pallets/flask': ['requirements/dev.txt'],
|
|
'pylint-dev/pylint': ['requirements_test.txt'],
|
|
'pyvista/pyvista': ['requirements_test.txt', 'requirements.txt'],
|
|
'sqlfluff/sqlfluff': ['requirements_dev.txt'],
|
|
'sympy/sympy': ['requirements-dev.txt', 'requirements-test.txt'],
|
|
}
|
|
|
|
|
|
# Constants - Task Instance environment.yml File Paths
|
|
MAP_REPO_TO_ENV_YML_PATHS = {
|
|
'matplotlib/matplotlib': ['environment.yml'],
|
|
'pydata/xarray': ['ci/requirements/environment.yml', 'environment.yml'],
|
|
}
|
|
|
|
# Constants - Evaluation Keys
|
|
KEY_INSTANCE_ID = 'instance_id'
|
|
KEY_MODEL = 'model_name_or_path'
|
|
KEY_PREDICTION = 'model_patch'
|
|
|
|
|
|
# Constants - Logging
|
|
APPLY_PATCH_FAIL = '>>>>> Patch Apply Failed'
|
|
APPLY_PATCH_PASS = '>>>>> Applied Patch'
|
|
INSTALL_FAIL = '>>>>> Init Failed'
|
|
INSTALL_PASS = '>>>>> Init Succeeded'
|
|
INSTALL_TIMEOUT = '>>>>> Init Timed Out'
|
|
RESET_FAILED = '>>>>> Reset Failed'
|
|
TESTS_ERROR = '>>>>> Tests Errored'
|
|
TESTS_FAILED = '>>>>> Some Tests Failed'
|
|
TESTS_PASSED = '>>>>> All Tests Passed'
|
|
TESTS_TIMEOUT = '>>>>> Tests Timed Out'
|
|
COVERAGE_PREFIX = '>>>>> Coverage'
|
|
TESTS_SUFFIX = '>>>>> Tests Finished'
|
|
|
|
|
|
# Constants - Patch Types
|
|
class PatchType(Enum):
|
|
PATCH_GOLD = 'gold'
|
|
PATCH_PRED = 'pred'
|
|
PATCH_PRED_TRY = 'pred_try'
|
|
PATCH_PRED_MINIMAL = 'pred_minimal'
|
|
PATCH_PRED_MINIMAL_TRY = 'pred_minimal_try'
|
|
PATCH_TEST = 'test'
|
|
|
|
def __str__(self):
|
|
return self.value
|
|
|
|
|
|
# Constants - Miscellaneous
|
|
NON_TEST_EXTS = [
|
|
'.json',
|
|
'.png',
|
|
'csv',
|
|
'.txt',
|
|
'.md',
|
|
'.jpg',
|
|
'.jpeg',
|
|
'.pkl',
|
|
'.yml',
|
|
'.yaml',
|
|
'.toml',
|
|
]
|
|
SWE_BENCH_URL_RAW = 'https://raw.githubusercontent.com/'
|
|
USE_X86 = {
|
|
'astropy__astropy-7973',
|
|
'django__django-10087',
|
|
'django__django-10097',
|
|
'django__django-10213',
|
|
'django__django-10301',
|
|
'django__django-10316',
|
|
'django__django-10426',
|
|
'django__django-11383',
|
|
'django__django-12185',
|
|
'django__django-12497',
|
|
'django__django-13121',
|
|
'django__django-13417',
|
|
'django__django-13431',
|
|
'django__django-13447',
|
|
'django__django-14155',
|
|
'django__django-14164',
|
|
'django__django-14169',
|
|
'django__django-14170',
|
|
'django__django-15180',
|
|
'django__django-15199',
|
|
'django__django-15280',
|
|
'django__django-15292',
|
|
'django__django-15474',
|
|
'django__django-15682',
|
|
'django__django-15689',
|
|
'django__django-15695',
|
|
'django__django-15698',
|
|
'django__django-15781',
|
|
'django__django-15925',
|
|
'django__django-15930',
|
|
'django__django-5158',
|
|
'django__django-5470',
|
|
'django__django-7188',
|
|
'django__django-7475',
|
|
'django__django-7530',
|
|
'django__django-8326',
|
|
'django__django-8961',
|
|
'django__django-9003',
|
|
'django__django-9703',
|
|
'django__django-9871',
|
|
'matplotlib__matplotlib-13983',
|
|
'matplotlib__matplotlib-13984',
|
|
'matplotlib__matplotlib-13989',
|
|
'matplotlib__matplotlib-14043',
|
|
'matplotlib__matplotlib-14471',
|
|
'matplotlib__matplotlib-22711',
|
|
'matplotlib__matplotlib-22719',
|
|
'matplotlib__matplotlib-22734',
|
|
'matplotlib__matplotlib-22767',
|
|
'matplotlib__matplotlib-22815',
|
|
'matplotlib__matplotlib-22835',
|
|
'matplotlib__matplotlib-22865',
|
|
'matplotlib__matplotlib-22871',
|
|
'matplotlib__matplotlib-22883',
|
|
'matplotlib__matplotlib-22926',
|
|
'matplotlib__matplotlib-22929',
|
|
'matplotlib__matplotlib-22931',
|
|
'matplotlib__matplotlib-22945',
|
|
'matplotlib__matplotlib-22991',
|
|
'matplotlib__matplotlib-23031',
|
|
'matplotlib__matplotlib-23047',
|
|
'matplotlib__matplotlib-23049',
|
|
'matplotlib__matplotlib-23057',
|
|
'matplotlib__matplotlib-23088',
|
|
'matplotlib__matplotlib-23111',
|
|
'matplotlib__matplotlib-23140',
|
|
'matplotlib__matplotlib-23174',
|
|
'matplotlib__matplotlib-23188',
|
|
'matplotlib__matplotlib-23198',
|
|
'matplotlib__matplotlib-23203',
|
|
'matplotlib__matplotlib-23266',
|
|
'matplotlib__matplotlib-23267',
|
|
'matplotlib__matplotlib-23288',
|
|
'matplotlib__matplotlib-23299',
|
|
'matplotlib__matplotlib-23314',
|
|
'matplotlib__matplotlib-23332',
|
|
'matplotlib__matplotlib-23348',
|
|
'matplotlib__matplotlib-23412',
|
|
'matplotlib__matplotlib-23476',
|
|
'matplotlib__matplotlib-23516',
|
|
'matplotlib__matplotlib-23562',
|
|
'matplotlib__matplotlib-23563',
|
|
'matplotlib__matplotlib-23573',
|
|
'matplotlib__matplotlib-23740',
|
|
'matplotlib__matplotlib-23742',
|
|
'matplotlib__matplotlib-23913',
|
|
'matplotlib__matplotlib-23964',
|
|
'matplotlib__matplotlib-23987',
|
|
'matplotlib__matplotlib-24013',
|
|
'matplotlib__matplotlib-24026',
|
|
'matplotlib__matplotlib-24088',
|
|
'matplotlib__matplotlib-24111',
|
|
'matplotlib__matplotlib-24149',
|
|
'matplotlib__matplotlib-24177',
|
|
'matplotlib__matplotlib-24189',
|
|
'matplotlib__matplotlib-24224',
|
|
'matplotlib__matplotlib-24250',
|
|
'matplotlib__matplotlib-24257',
|
|
'matplotlib__matplotlib-24265',
|
|
'matplotlib__matplotlib-24334',
|
|
'matplotlib__matplotlib-24362',
|
|
'matplotlib__matplotlib-24403',
|
|
'matplotlib__matplotlib-24431',
|
|
'matplotlib__matplotlib-24538',
|
|
'matplotlib__matplotlib-24570',
|
|
'matplotlib__matplotlib-24604',
|
|
'matplotlib__matplotlib-24619',
|
|
'matplotlib__matplotlib-24627',
|
|
'matplotlib__matplotlib-24637',
|
|
'matplotlib__matplotlib-24691',
|
|
'matplotlib__matplotlib-24749',
|
|
'matplotlib__matplotlib-24768',
|
|
'matplotlib__matplotlib-24849',
|
|
'matplotlib__matplotlib-24870',
|
|
'matplotlib__matplotlib-24912',
|
|
'matplotlib__matplotlib-24924',
|
|
'matplotlib__matplotlib-24970',
|
|
'matplotlib__matplotlib-24971',
|
|
'matplotlib__matplotlib-25027',
|
|
'matplotlib__matplotlib-25052',
|
|
'matplotlib__matplotlib-25079',
|
|
'matplotlib__matplotlib-25085',
|
|
'matplotlib__matplotlib-25122',
|
|
'matplotlib__matplotlib-25126',
|
|
'matplotlib__matplotlib-25129',
|
|
'matplotlib__matplotlib-25238',
|
|
'matplotlib__matplotlib-25281',
|
|
'matplotlib__matplotlib-25287',
|
|
'matplotlib__matplotlib-25311',
|
|
'matplotlib__matplotlib-25332',
|
|
'matplotlib__matplotlib-25334',
|
|
'matplotlib__matplotlib-25340',
|
|
'matplotlib__matplotlib-25346',
|
|
'matplotlib__matplotlib-25404',
|
|
'matplotlib__matplotlib-25405',
|
|
'matplotlib__matplotlib-25425',
|
|
'matplotlib__matplotlib-25430',
|
|
'matplotlib__matplotlib-25433',
|
|
'matplotlib__matplotlib-25442',
|
|
'matplotlib__matplotlib-25479',
|
|
'matplotlib__matplotlib-25498',
|
|
'matplotlib__matplotlib-25499',
|
|
'matplotlib__matplotlib-25515',
|
|
'matplotlib__matplotlib-25547',
|
|
'matplotlib__matplotlib-25551',
|
|
'matplotlib__matplotlib-25565',
|
|
'matplotlib__matplotlib-25624',
|
|
'matplotlib__matplotlib-25631',
|
|
'matplotlib__matplotlib-25640',
|
|
'matplotlib__matplotlib-25651',
|
|
'matplotlib__matplotlib-25667',
|
|
'matplotlib__matplotlib-25712',
|
|
'matplotlib__matplotlib-25746',
|
|
'matplotlib__matplotlib-25772',
|
|
'matplotlib__matplotlib-25775',
|
|
'matplotlib__matplotlib-25779',
|
|
'matplotlib__matplotlib-25785',
|
|
'matplotlib__matplotlib-25794',
|
|
'matplotlib__matplotlib-25859',
|
|
'matplotlib__matplotlib-25960',
|
|
'matplotlib__matplotlib-26011',
|
|
'matplotlib__matplotlib-26020',
|
|
'matplotlib__matplotlib-26024',
|
|
'matplotlib__matplotlib-26078',
|
|
'matplotlib__matplotlib-26089',
|
|
'matplotlib__matplotlib-26101',
|
|
'matplotlib__matplotlib-26113',
|
|
'matplotlib__matplotlib-26122',
|
|
'matplotlib__matplotlib-26160',
|
|
'matplotlib__matplotlib-26184',
|
|
'matplotlib__matplotlib-26208',
|
|
'matplotlib__matplotlib-26223',
|
|
'matplotlib__matplotlib-26232',
|
|
'matplotlib__matplotlib-26249',
|
|
'matplotlib__matplotlib-26278',
|
|
'matplotlib__matplotlib-26285',
|
|
'matplotlib__matplotlib-26291',
|
|
'matplotlib__matplotlib-26300',
|
|
'matplotlib__matplotlib-26311',
|
|
'matplotlib__matplotlib-26341',
|
|
'matplotlib__matplotlib-26342',
|
|
'matplotlib__matplotlib-26399',
|
|
'matplotlib__matplotlib-26466',
|
|
'matplotlib__matplotlib-26469',
|
|
'matplotlib__matplotlib-26472',
|
|
'matplotlib__matplotlib-26479',
|
|
'matplotlib__matplotlib-26532',
|
|
'pydata__xarray-2905',
|
|
'pydata__xarray-2922',
|
|
'pydata__xarray-3095',
|
|
'pydata__xarray-3114',
|
|
'pydata__xarray-3151',
|
|
'pydata__xarray-3156',
|
|
'pydata__xarray-3159',
|
|
'pydata__xarray-3239',
|
|
'pydata__xarray-3302',
|
|
'pydata__xarray-3305',
|
|
'pydata__xarray-3338',
|
|
'pydata__xarray-3364',
|
|
'pydata__xarray-3406',
|
|
'pydata__xarray-3520',
|
|
'pydata__xarray-3527',
|
|
'pydata__xarray-3631',
|
|
'pydata__xarray-3635',
|
|
'pydata__xarray-3637',
|
|
'pydata__xarray-3649',
|
|
'pydata__xarray-3677',
|
|
'pydata__xarray-3733',
|
|
'pydata__xarray-3812',
|
|
'pydata__xarray-3905',
|
|
'pydata__xarray-3976',
|
|
'pydata__xarray-3979',
|
|
'pydata__xarray-3993',
|
|
'pydata__xarray-4075',
|
|
'pydata__xarray-4094',
|
|
'pydata__xarray-4098',
|
|
'pydata__xarray-4182',
|
|
'pydata__xarray-4184',
|
|
'pydata__xarray-4248',
|
|
'pydata__xarray-4339',
|
|
'pydata__xarray-4356',
|
|
'pydata__xarray-4419',
|
|
'pydata__xarray-4423',
|
|
'pydata__xarray-4442',
|
|
'pydata__xarray-4493',
|
|
'pydata__xarray-4510',
|
|
'pydata__xarray-4629',
|
|
'pydata__xarray-4683',
|
|
'pydata__xarray-4684',
|
|
'pydata__xarray-4687',
|
|
'pydata__xarray-4695',
|
|
'pydata__xarray-4750',
|
|
'pydata__xarray-4758',
|
|
'pydata__xarray-4759',
|
|
'pydata__xarray-4767',
|
|
'pydata__xarray-4802',
|
|
'pydata__xarray-4819',
|
|
'pydata__xarray-4827',
|
|
'pydata__xarray-4879',
|
|
'pydata__xarray-4911',
|
|
'pydata__xarray-4939',
|
|
'pydata__xarray-4940',
|
|
'pydata__xarray-4966',
|
|
'pydata__xarray-4994',
|
|
'pydata__xarray-5033',
|
|
'pydata__xarray-5126',
|
|
'pydata__xarray-5131',
|
|
'pydata__xarray-5180',
|
|
'pydata__xarray-5187',
|
|
'pydata__xarray-5233',
|
|
'pydata__xarray-5362',
|
|
'pydata__xarray-5365',
|
|
'pydata__xarray-5455',
|
|
'pydata__xarray-5580',
|
|
'pydata__xarray-5662',
|
|
'pydata__xarray-5682',
|
|
'pydata__xarray-5731',
|
|
'pydata__xarray-6135',
|
|
'pydata__xarray-6386',
|
|
'pydata__xarray-6394',
|
|
'pydata__xarray-6400',
|
|
'pydata__xarray-6461',
|
|
'pydata__xarray-6548',
|
|
'pydata__xarray-6598',
|
|
'pydata__xarray-6599',
|
|
'pydata__xarray-6601',
|
|
'pydata__xarray-6721',
|
|
'pydata__xarray-6744',
|
|
'pydata__xarray-6798',
|
|
'pydata__xarray-6804',
|
|
'pydata__xarray-6823',
|
|
'pydata__xarray-6857',
|
|
'pydata__xarray-6882',
|
|
'pydata__xarray-6889',
|
|
'pydata__xarray-6938',
|
|
'pydata__xarray-6971',
|
|
'pydata__xarray-6992',
|
|
'pydata__xarray-6999',
|
|
'pydata__xarray-7003',
|
|
'pydata__xarray-7019',
|
|
'pydata__xarray-7052',
|
|
'pydata__xarray-7089',
|
|
'pydata__xarray-7101',
|
|
'pydata__xarray-7105',
|
|
'pydata__xarray-7112',
|
|
'pydata__xarray-7120',
|
|
'pydata__xarray-7147',
|
|
'pydata__xarray-7150',
|
|
'pydata__xarray-7179',
|
|
'pydata__xarray-7203',
|
|
'pydata__xarray-7229',
|
|
'pydata__xarray-7233',
|
|
'pydata__xarray-7347',
|
|
'pydata__xarray-7391',
|
|
'pydata__xarray-7393',
|
|
'pydata__xarray-7400',
|
|
'pydata__xarray-7444',
|
|
'pytest-dev__pytest-10482',
|
|
'scikit-learn__scikit-learn-10198',
|
|
'scikit-learn__scikit-learn-10297',
|
|
'scikit-learn__scikit-learn-10306',
|
|
'scikit-learn__scikit-learn-10331',
|
|
'scikit-learn__scikit-learn-10377',
|
|
'scikit-learn__scikit-learn-10382',
|
|
'scikit-learn__scikit-learn-10397',
|
|
'scikit-learn__scikit-learn-10427',
|
|
'scikit-learn__scikit-learn-10428',
|
|
'scikit-learn__scikit-learn-10443',
|
|
'scikit-learn__scikit-learn-10452',
|
|
'scikit-learn__scikit-learn-10459',
|
|
'scikit-learn__scikit-learn-10471',
|
|
'scikit-learn__scikit-learn-10483',
|
|
'scikit-learn__scikit-learn-10495',
|
|
'scikit-learn__scikit-learn-10508',
|
|
'scikit-learn__scikit-learn-10558',
|
|
'scikit-learn__scikit-learn-10577',
|
|
'scikit-learn__scikit-learn-10581',
|
|
'scikit-learn__scikit-learn-10687',
|
|
'scikit-learn__scikit-learn-10774',
|
|
'scikit-learn__scikit-learn-10777',
|
|
'scikit-learn__scikit-learn-10803',
|
|
'scikit-learn__scikit-learn-10844',
|
|
'scikit-learn__scikit-learn-10870',
|
|
'scikit-learn__scikit-learn-10881',
|
|
'scikit-learn__scikit-learn-10899',
|
|
'scikit-learn__scikit-learn-10908',
|
|
'scikit-learn__scikit-learn-10913',
|
|
'scikit-learn__scikit-learn-10949',
|
|
'scikit-learn__scikit-learn-10982',
|
|
'scikit-learn__scikit-learn-10986',
|
|
'scikit-learn__scikit-learn-11040',
|
|
'scikit-learn__scikit-learn-11042',
|
|
'scikit-learn__scikit-learn-11043',
|
|
'scikit-learn__scikit-learn-11151',
|
|
'scikit-learn__scikit-learn-11160',
|
|
'scikit-learn__scikit-learn-11206',
|
|
'scikit-learn__scikit-learn-11235',
|
|
'scikit-learn__scikit-learn-11243',
|
|
'scikit-learn__scikit-learn-11264',
|
|
'scikit-learn__scikit-learn-11281',
|
|
'scikit-learn__scikit-learn-11310',
|
|
'scikit-learn__scikit-learn-11315',
|
|
'scikit-learn__scikit-learn-11333',
|
|
'scikit-learn__scikit-learn-11346',
|
|
'scikit-learn__scikit-learn-11391',
|
|
'scikit-learn__scikit-learn-11496',
|
|
'scikit-learn__scikit-learn-11542',
|
|
'scikit-learn__scikit-learn-11574',
|
|
'scikit-learn__scikit-learn-11578',
|
|
'scikit-learn__scikit-learn-11585',
|
|
'scikit-learn__scikit-learn-11596',
|
|
'scikit-learn__scikit-learn-11635',
|
|
'scikit-learn__scikit-learn-12258',
|
|
'scikit-learn__scikit-learn-12421',
|
|
'scikit-learn__scikit-learn-12443',
|
|
'scikit-learn__scikit-learn-12462',
|
|
'scikit-learn__scikit-learn-12471',
|
|
'scikit-learn__scikit-learn-12486',
|
|
'scikit-learn__scikit-learn-12557',
|
|
'scikit-learn__scikit-learn-12583',
|
|
'scikit-learn__scikit-learn-12585',
|
|
'scikit-learn__scikit-learn-12625',
|
|
'scikit-learn__scikit-learn-12626',
|
|
'scikit-learn__scikit-learn-12656',
|
|
'scikit-learn__scikit-learn-12682',
|
|
'scikit-learn__scikit-learn-12704',
|
|
'scikit-learn__scikit-learn-12733',
|
|
'scikit-learn__scikit-learn-12758',
|
|
'scikit-learn__scikit-learn-12760',
|
|
'scikit-learn__scikit-learn-12784',
|
|
'scikit-learn__scikit-learn-12827',
|
|
'scikit-learn__scikit-learn-12834',
|
|
'scikit-learn__scikit-learn-12860',
|
|
'scikit-learn__scikit-learn-12908',
|
|
'scikit-learn__scikit-learn-12938',
|
|
'scikit-learn__scikit-learn-12961',
|
|
'scikit-learn__scikit-learn-12973',
|
|
'scikit-learn__scikit-learn-12983',
|
|
'scikit-learn__scikit-learn-12989',
|
|
'scikit-learn__scikit-learn-13010',
|
|
'scikit-learn__scikit-learn-13013',
|
|
'scikit-learn__scikit-learn-13017',
|
|
'scikit-learn__scikit-learn-13046',
|
|
'scikit-learn__scikit-learn-13087',
|
|
'scikit-learn__scikit-learn-13124',
|
|
'scikit-learn__scikit-learn-13135',
|
|
'scikit-learn__scikit-learn-13142',
|
|
'scikit-learn__scikit-learn-13143',
|
|
'scikit-learn__scikit-learn-13157',
|
|
'scikit-learn__scikit-learn-13165',
|
|
'scikit-learn__scikit-learn-13174',
|
|
'scikit-learn__scikit-learn-13221',
|
|
'scikit-learn__scikit-learn-13241',
|
|
'scikit-learn__scikit-learn-13253',
|
|
'scikit-learn__scikit-learn-13280',
|
|
'scikit-learn__scikit-learn-13283',
|
|
'scikit-learn__scikit-learn-13302',
|
|
'scikit-learn__scikit-learn-13313',
|
|
'scikit-learn__scikit-learn-13328',
|
|
'scikit-learn__scikit-learn-13333',
|
|
'scikit-learn__scikit-learn-13363',
|
|
'scikit-learn__scikit-learn-13368',
|
|
'scikit-learn__scikit-learn-13392',
|
|
'scikit-learn__scikit-learn-13436',
|
|
'scikit-learn__scikit-learn-13439',
|
|
'scikit-learn__scikit-learn-13447',
|
|
'scikit-learn__scikit-learn-13454',
|
|
'scikit-learn__scikit-learn-13467',
|
|
'scikit-learn__scikit-learn-13472',
|
|
'scikit-learn__scikit-learn-13485',
|
|
'scikit-learn__scikit-learn-13496',
|
|
'scikit-learn__scikit-learn-13497',
|
|
'scikit-learn__scikit-learn-13536',
|
|
'scikit-learn__scikit-learn-13549',
|
|
'scikit-learn__scikit-learn-13554',
|
|
'scikit-learn__scikit-learn-13584',
|
|
'scikit-learn__scikit-learn-13618',
|
|
'scikit-learn__scikit-learn-13620',
|
|
'scikit-learn__scikit-learn-13628',
|
|
'scikit-learn__scikit-learn-13641',
|
|
'scikit-learn__scikit-learn-13704',
|
|
'scikit-learn__scikit-learn-13726',
|
|
'scikit-learn__scikit-learn-13779',
|
|
'scikit-learn__scikit-learn-13780',
|
|
'scikit-learn__scikit-learn-13828',
|
|
'scikit-learn__scikit-learn-13864',
|
|
'scikit-learn__scikit-learn-13877',
|
|
'scikit-learn__scikit-learn-13910',
|
|
'scikit-learn__scikit-learn-13915',
|
|
'scikit-learn__scikit-learn-13933',
|
|
'scikit-learn__scikit-learn-13960',
|
|
'scikit-learn__scikit-learn-13974',
|
|
'scikit-learn__scikit-learn-13983',
|
|
'scikit-learn__scikit-learn-14012',
|
|
'scikit-learn__scikit-learn-14024',
|
|
'scikit-learn__scikit-learn-14053',
|
|
'scikit-learn__scikit-learn-14067',
|
|
'scikit-learn__scikit-learn-14087',
|
|
'scikit-learn__scikit-learn-14092',
|
|
'scikit-learn__scikit-learn-14114',
|
|
'scikit-learn__scikit-learn-14125',
|
|
'scikit-learn__scikit-learn-14141',
|
|
'scikit-learn__scikit-learn-14237',
|
|
'scikit-learn__scikit-learn-14309',
|
|
'scikit-learn__scikit-learn-14430',
|
|
'scikit-learn__scikit-learn-14450',
|
|
'scikit-learn__scikit-learn-14458',
|
|
'scikit-learn__scikit-learn-14464',
|
|
'scikit-learn__scikit-learn-14496',
|
|
'scikit-learn__scikit-learn-14520',
|
|
'scikit-learn__scikit-learn-14544',
|
|
'scikit-learn__scikit-learn-14591',
|
|
'scikit-learn__scikit-learn-14629',
|
|
'scikit-learn__scikit-learn-14704',
|
|
'scikit-learn__scikit-learn-14706',
|
|
'scikit-learn__scikit-learn-14710',
|
|
'scikit-learn__scikit-learn-14732',
|
|
'scikit-learn__scikit-learn-14764',
|
|
'scikit-learn__scikit-learn-14806',
|
|
'scikit-learn__scikit-learn-14869',
|
|
'scikit-learn__scikit-learn-14878',
|
|
'scikit-learn__scikit-learn-14890',
|
|
'scikit-learn__scikit-learn-14894',
|
|
'scikit-learn__scikit-learn-14898',
|
|
'scikit-learn__scikit-learn-14908',
|
|
'scikit-learn__scikit-learn-14983',
|
|
'scikit-learn__scikit-learn-14999',
|
|
'scikit-learn__scikit-learn-15028',
|
|
'scikit-learn__scikit-learn-15084',
|
|
'scikit-learn__scikit-learn-15086',
|
|
'scikit-learn__scikit-learn-15094',
|
|
'scikit-learn__scikit-learn-15096',
|
|
'scikit-learn__scikit-learn-15100',
|
|
'scikit-learn__scikit-learn-15119',
|
|
'scikit-learn__scikit-learn-15120',
|
|
'scikit-learn__scikit-learn-15138',
|
|
'scikit-learn__scikit-learn-15393',
|
|
'scikit-learn__scikit-learn-15495',
|
|
'scikit-learn__scikit-learn-15512',
|
|
'scikit-learn__scikit-learn-15524',
|
|
'scikit-learn__scikit-learn-15535',
|
|
'scikit-learn__scikit-learn-15625',
|
|
'scikit-learn__scikit-learn-3840',
|
|
'scikit-learn__scikit-learn-7760',
|
|
'scikit-learn__scikit-learn-8554',
|
|
'scikit-learn__scikit-learn-9274',
|
|
'scikit-learn__scikit-learn-9288',
|
|
'scikit-learn__scikit-learn-9304',
|
|
'scikit-learn__scikit-learn-9775',
|
|
'scikit-learn__scikit-learn-9939',
|
|
'sphinx-doc__sphinx-11311',
|
|
'sphinx-doc__sphinx-7910',
|
|
'sympy__sympy-12812',
|
|
'sympy__sympy-14248',
|
|
'sympy__sympy-15222',
|
|
'sympy__sympy-19201',
|
|
}
|
|
|
|
MUTATION_TEMPLATE = """[cosmic-ray]
|
|
module-path = "{source_fp}"
|
|
timeout = {timeout}
|
|
excluded-modules = []
|
|
test-command = "{test_cmd}"
|
|
|
|
[cosmic-ray.distributor]
|
|
name = "local"
|
|
"""
|
|
|
|
MUTATION_TIMEOUT = 3600
|
|
MUTATION_BUFFER = 500
|
|
|
|
UPDATE_TOX = r"""
|
|
add_coverage_tox() {
|
|
local config_file="$1"
|
|
|
|
# Check if the file exists
|
|
if [[ ! -f "$config_file" ]]; then
|
|
echo "Error: File $config_file does not exist."
|
|
return 1
|
|
fi
|
|
|
|
# Check if the [testenv] section exists
|
|
if ! grep -q "^\[testenv\]" "$config_file"; then
|
|
echo "Error: [testenv] section not found in $config_file."
|
|
return 1
|
|
fi
|
|
|
|
# Modify the commands in the [testenv] section
|
|
awk '
|
|
BEGIN { in_testenv = 0; commands_modified = 0 }
|
|
/^\[testenv\]/ { in_testenv = 1 }
|
|
in_testenv && /^commands\s*=/ {
|
|
# Start modifying commands
|
|
print $0
|
|
while (getline > 0) {
|
|
if ($0 ~ /^[[:space:]]*$/) break # Stop at the next empty line
|
|
if ($0 ~ /pytest/ && $0 !~ /--cov/) {
|
|
# Add --cov to pytest commands
|
|
sub(/pytest/, "pytest --cov sphinx", $0)
|
|
}
|
|
print " " $0
|
|
}
|
|
# Add coverage json command after pytest
|
|
if (commands_modified == 0) {
|
|
print " coverage json -o coverage.json"
|
|
commands_modified = 1
|
|
}
|
|
next
|
|
}
|
|
{ print }
|
|
' "$config_file" > "${config_file}.tmp" && mv "${config_file}.tmp" "$config_file"
|
|
|
|
echo ">> Coverage commands successfully added to $config_file."
|
|
}
|
|
"""
|