06b21e1976
The macro checks if pyproject.toml exists and echoes the dependency early. For projects with pyproject.toml, this saves one installation round. Previously, the installation steps by %generate_buildrequires were: 1. (python3-devel +) pip + packaging 2. toml 3. parsed dependencies from pyproject.toml 4. ... Now they are: 1. (python3-devel +) pip + packaging + toml 2. parsed dependencies from pyproject.toml 3. ... For projects without pyproject.toml, the number of rounds remains the same: 1. (python3-devel +) pip + packaging 2. setuptools + wheel 3. ... This is also more consistent: The Python script now only outputs dependencies of the probed project, it no longer partially outputs dependencies for itself.
366 lines
8.1 KiB
YAML
366 lines
8.1 KiB
YAML
No pyproject.toml, nothing installed:
|
|
installed:
|
|
# empty
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
result: 0
|
|
|
|
Nothing installed yet:
|
|
installed:
|
|
# empty
|
|
pyproject.toml: |
|
|
# empty
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
result: 0
|
|
|
|
Insufficient version of setuptools:
|
|
installed:
|
|
setuptools: 5
|
|
wheel: 1
|
|
toml: 1
|
|
pyproject.toml: |
|
|
# empty
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
result: 0
|
|
|
|
No pyproject.toml, empty setup.py:
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
setup.py: |
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
python3dist(wheel)
|
|
result: 0
|
|
|
|
Default build system, empty setup.py:
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
toml: 1
|
|
pyproject.toml: |
|
|
# empty
|
|
setup.py: |
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
python3dist(wheel)
|
|
result: 0
|
|
|
|
Erroring setup.py:
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
setup.py: |
|
|
exit(77)
|
|
result: 77
|
|
|
|
Bad character in version:
|
|
installed:
|
|
toml: 1
|
|
pyproject.toml: |
|
|
[build-system]
|
|
requires = ["pkg == 0.$.^.*"]
|
|
except: ValueError
|
|
|
|
Build system dependencies in pyproject.toml with extras:
|
|
generate_extras: true
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
toml: 1
|
|
pyproject.toml: |
|
|
[build-system]
|
|
requires = [
|
|
"foo",
|
|
"bar[baz] > 5",
|
|
"ne!=1",
|
|
"ge>=1.2",
|
|
"le <= 1.2.3",
|
|
"lt < 1.2.3.4 ",
|
|
" gt > 1.2.3.4.5",
|
|
"multi[extras1,extras2] == 6.0",
|
|
"combo >2, <5, != 3.0.0",
|
|
"invalid!!ignored",
|
|
"py2 ; python_version < '2.7'",
|
|
"py3 ; python_version > '3.0'",
|
|
]
|
|
expected: |
|
|
python3dist(foo)
|
|
python3dist(bar) > 5
|
|
python3dist(bar[baz]) > 5
|
|
(python3dist(ne) < 1 or python3dist(ne) > 1)
|
|
python3dist(ge) >= 1.2
|
|
python3dist(le) <= 1.2.3
|
|
python3dist(lt) < 1.2.3.4
|
|
python3dist(gt) > 1.2.3.4.5
|
|
python3dist(multi) = 6
|
|
python3dist(multi[extras1]) = 6
|
|
python3dist(multi[extras2]) = 6
|
|
((python3dist(combo) < 3 or python3dist(combo) > 3) with python3dist(combo) < 5 with python3dist(combo) > 2)
|
|
python3dist(py3)
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
result: 0
|
|
|
|
Build system dependencies in pyproject.toml without extras:
|
|
generate_extras: false
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
toml: 1
|
|
pyproject.toml: |
|
|
[build-system]
|
|
requires = [
|
|
"bar[baz] > 5",
|
|
"multi[extras1,extras2] == 6.0",
|
|
]
|
|
expected: |
|
|
python3dist(bar) > 5
|
|
python3dist(multi) = 6
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
result: 0
|
|
|
|
Default build system, build dependencies in setup.py:
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
setup.py: |
|
|
from setuptools import setup
|
|
setup(
|
|
name='test',
|
|
version='0.1',
|
|
setup_requires=['foo', 'bar!=2', 'baz~=1.1.1'],
|
|
install_requires=['inst'],
|
|
)
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
python3dist(wheel)
|
|
python3dist(foo)
|
|
(python3dist(bar) < 2 or python3dist(bar) > 2)
|
|
(python3dist(baz) >= 1.1.1 with python3dist(baz) < 1.2)
|
|
result: 0
|
|
|
|
Default build system, run dependencies in setup.py:
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
pyyaml: 1
|
|
include_runtime: true
|
|
setup.py: |
|
|
from setuptools import setup
|
|
setup(
|
|
name='test',
|
|
version='0.1',
|
|
setup_requires=['pyyaml'], # nb. setuptools will try to install this
|
|
install_requires=['inst > 1', 'inst2 < 3'],
|
|
)
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
python3dist(wheel)
|
|
python3dist(pyyaml)
|
|
python3dist(inst) > 1
|
|
python3dist(inst2) < 3
|
|
result: 0
|
|
|
|
Run dependencies with extras (not selected):
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
pyyaml: 1
|
|
include_runtime: true
|
|
setup.py: &pytest_setup_py |
|
|
# slightly abriged copy of pytest's setup.py
|
|
from setuptools import setup
|
|
|
|
INSTALL_REQUIRES = [
|
|
"py>=1.5.0",
|
|
"six>=1.10.0",
|
|
"setuptools",
|
|
"attrs>=17.4.0",
|
|
'more-itertools>=4.0.0,<6.0.0;python_version<="2.7"',
|
|
'more-itertools>=4.0.0;python_version>"2.7"',
|
|
"atomicwrites>=1.0",
|
|
'funcsigs>=1.0;python_version<"3.0"',
|
|
'pathlib2>=2.2.0;python_version<"3.6"',
|
|
'colorama;sys_platform=="win32"',
|
|
"pluggy>=0.11",
|
|
]
|
|
|
|
def main():
|
|
setup(
|
|
setup_requires=["setuptools>=40.0"],
|
|
# fmt: off
|
|
extras_require={
|
|
"testing": [
|
|
"argcomplete",
|
|
"hypothesis>=3.56",
|
|
"nose",
|
|
"requests",
|
|
"mock;python_version=='2.7'",
|
|
],
|
|
},
|
|
# fmt: on
|
|
install_requires=INSTALL_REQUIRES,
|
|
)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
python3dist(wheel)
|
|
python3dist(setuptools) >= 40
|
|
python3dist(py) >= 1.5
|
|
python3dist(six) >= 1.10
|
|
python3dist(setuptools)
|
|
python3dist(attrs) >= 17.4
|
|
python3dist(atomicwrites) >= 1
|
|
python3dist(pluggy) >= 0.11
|
|
python3dist(more-itertools) >= 4
|
|
result: 0
|
|
|
|
Run dependencies with extras (selected):
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
pyyaml: 1
|
|
include_runtime: true
|
|
extras:
|
|
- testing
|
|
setup.py: *pytest_setup_py
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
python3dist(wheel)
|
|
python3dist(setuptools) >= 40
|
|
python3dist(py) >= 1.5
|
|
python3dist(six) >= 1.10
|
|
python3dist(setuptools)
|
|
python3dist(attrs) >= 17.4
|
|
python3dist(atomicwrites) >= 1
|
|
python3dist(pluggy) >= 0.11
|
|
python3dist(more-itertools) >= 4
|
|
python3dist(argcomplete)
|
|
python3dist(hypothesis) >= 3.56
|
|
python3dist(nose)
|
|
python3dist(requests)
|
|
result: 0
|
|
|
|
Run dependencies with multiple extras:
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
pyyaml: 1
|
|
include_runtime: true
|
|
extras:
|
|
- testing,more-testing
|
|
- even-more-testing , cool-feature
|
|
setup.py: |
|
|
from setuptools import setup
|
|
setup(
|
|
extras_require={
|
|
'testing': ['dep1'],
|
|
'more-testing': ['dep2'],
|
|
'even-more-testing': ['dep3'],
|
|
'cool-feature': ['dep4'],
|
|
},
|
|
)
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
python3dist(wheel)
|
|
python3dist(dep4)
|
|
python3dist(dep3)
|
|
python3dist(dep2)
|
|
python3dist(dep1)
|
|
result: 0
|
|
|
|
Tox dependencies:
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
tox: 3.5.3
|
|
tox-current-env: 0.0.3
|
|
toxenv:
|
|
- py3
|
|
setup.py: |
|
|
from setuptools import setup
|
|
setup(
|
|
name='test',
|
|
version='0.1',
|
|
install_requires=['inst'],
|
|
)
|
|
tox.ini: |
|
|
[tox]
|
|
envlist = py36,py37,py38
|
|
[testenv]
|
|
deps =
|
|
toxdep1
|
|
toxdep2
|
|
commands =
|
|
true
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
python3dist(wheel)
|
|
python3dist(tox-current-env) >= 0.0.3
|
|
python3dist(toxdep1)
|
|
python3dist(toxdep2)
|
|
python3dist(inst)
|
|
result: 0
|
|
|
|
Tox extras:
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
tox: 3.5.3
|
|
tox-current-env: 0.0.3
|
|
toxenv:
|
|
- py3
|
|
setup.py: |
|
|
from setuptools import setup
|
|
setup(
|
|
name='test',
|
|
version='0.1',
|
|
install_requires=['inst'],
|
|
extras_require={
|
|
'extra1': ['dep11 > 11', 'dep12'],
|
|
'extra2': ['dep21', 'dep22', 'dep23'],
|
|
'nope': ['nopedep'],
|
|
}
|
|
)
|
|
tox.ini: |
|
|
[tox]
|
|
envlist = py36,py37,py38
|
|
[testenv]
|
|
deps =
|
|
toxdep
|
|
extras =
|
|
extra2
|
|
extra1
|
|
commands =
|
|
true
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
python3dist(wheel)
|
|
python3dist(tox-current-env) >= 0.0.3
|
|
python3dist(toxdep)
|
|
python3dist(inst)
|
|
python3dist(dep11) > 11
|
|
python3dist(dep12)
|
|
python3dist(dep21)
|
|
python3dist(dep22)
|
|
python3dist(dep23)
|
|
result: 0
|