Bug 253421
Summary: | REGRESSION(261097@main) [Win] test-webkitpy: Failed to install pytest-asyncio-0.20.3! | ||
---|---|---|---|
Product: | WebKit | Reporter: | Fujii Hironori <fujii.hironori> |
Component: | Tools / Tests | Assignee: | Fujii Hironori <fujii.hironori> |
Status: | RESOLVED FIXED | ||
Severity: | Normal | CC: | webkit-bug-importer |
Priority: | P2 | Keywords: | InRadar |
Version: | WebKit Nightly Build | ||
Hardware: | Unspecified | ||
OS: | Unspecified |
Fujii Hironori
REGRESSION(261097@main) [Win] test-webkitpy: Failed to install pytest-asyncio-0.20.3!
After fleshing out the container image, WinCairo tester is failing to install pytest-asyncio-0.20.3
https://build.webkit.org/#/builders/727/builds/10707
Downloading pytest-asyncio-0.20.3...
Installing pytest-asyncio-0.20.3...
Traceback (most recent call last):
File "C:\BW\WinCairo-64-bit-Debug-Tests\build\Tools\Scripts\libraries\autoinstalled\python-3-AMD64\setuptools\config.py", line 33, in __getattr__
return next(
^^^^^
StopIteration
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\BW\WinCairo-64-bit-Debug-Tests\build\Tools\Scripts\libraries\autoinstalled\python-3-AMD64\setuptools\config.py", line 387, in _parse_attr
return getattr(StaticModule(module_name), attr_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\BW\WinCairo-64-bit-Debug-Tests\build\Tools\Scripts\libraries\autoinstalled\python-3-AMD64\setuptools\config.py", line 41, in __getattr__
raise AttributeError(
AttributeError: pytest_asyncio has no attribute __version__
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\ContainerAdministrator\AppData\Local\Temp\pytest_asyncio-8808\pytest-asyncio-0.20.3\setup.py", line 3, in <module>
setup()
File "C:\BW\WinCairo-64-bit-Debug-Tests\build\Tools\Scripts\libraries\autoinstalled\python-3-AMD64\setuptools\__init__.py", line 153, in setup
return distutils.core.setup(**attrs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\BW\WinCairo-64-bit-Debug-Tests\build\Tools\Scripts\libraries\autoinstalled\python-3-AMD64\setuptools\_distutils\core.py", line 121, in setup
dist.parse_config_files()
File "C:\BW\WinCairo-64-bit-Debug-Tests\build\Tools\Scripts\libraries\autoinstalled\python-3-AMD64\setuptools\dist.py", line 715, in parse_config_files
parse_configuration(self, self.command_options,
File "C:\BW\WinCairo-64-bit-Debug-Tests\build\Tools\Scripts\libraries\autoinstalled\python-3-AMD64\setuptools\config.py", line 157, in parse_configuration
meta.parse()
File "C:\BW\WinCairo-64-bit-Debug-Tests\build\Tools\Scripts\libraries\autoinstalled\python-3-AMD64\setuptools\config.py", line 463, in parse
section_parser_method(section_options)
File "C:\BW\WinCairo-64-bit-Debug-Tests\build\Tools\Scripts\libraries\autoinstalled\python-3-AMD64\setuptools\config.py", line 436, in parse_section
self[name] = value
~~~~^^^^^^
File "C:\BW\WinCairo-64-bit-Debug-Tests\build\Tools\Scripts\libraries\autoinstalled\python-3-AMD64\setuptools\config.py", line 220, in __setitem__
value = parser(value)
^^^^^^^^^^^^^
File "C:\BW\WinCairo-64-bit-Debug-Tests\build\Tools\Scripts\libraries\autoinstalled\python-3-AMD64\setuptools\config.py", line 552, in _parse_version
version = self._parse_attr(value, self.package_dir)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\BW\WinCairo-64-bit-Debug-Tests\build\Tools\Scripts\libraries\autoinstalled\python-3-AMD64\setuptools\config.py", line 390, in _parse_attr
module = importlib.import_module(module_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\tools\python3\Lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "C:\Users\ContainerAdministrator\AppData\Local\Temp\pytest_asyncio-8808\pytest-asyncio-0.20.3\pytest_asyncio\__init__.py", line 3, in <module>
from .plugin import fixture
File "C:\Users\ContainerAdministrator\AppData\Local\Temp\pytest_asyncio-8808\pytest-asyncio-0.20.3\pytest_asyncio\plugin.py", line 27, in <module>
import pytest
ModuleNotFoundError: No module named 'pytest'
Failed to install pytest-asyncio-0.20.3!
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Fujii Hironori
There are two problems.
setup.cfg of pytest-asyncio-0.20.3 is using attr for version.
> version = attr: pytest_asyncio.__version__
https://github.com/pytest-dev/pytest-asyncio/blob/v0.20.3/setup.cfg#L3
So, setuptools tries to load pytest_asyncio.
It imports pytest. But, it fails to load pytest because pytest isn't installed yet.
> import pytest
https://github.com/pytest-dev/pytest-asyncio/blob/v0.20.3/pytest_asyncio/plugin.py#L27
On Linux, however, setuptools doen't try to load pytest_asyncio because it already knows version.
https://github.com/pypa/setuptools/blob/v56.0.0/setuptools/config.py#L213-L214
This is a test program.
> import setuptools
> print(setuptools.__version__)
> dist = setuptools.Distribution()
> print(dist.metadata.version)
Use WebKit's autoinstalled setuptools:
> export PYTHONPATH=/webkit/Tools/Scripts/libraries/autoinstalled/python-3-x86_64
Unpack pytest-asyncio-0.20.3.tar.gz, and place the test program in the top directory that has setup.cfg.
And, invoke 'python test.py'
With Windows Python, it doesn't know the dist.metadata.version.
> 56.0.0
> None
With Linux Python, it knows the dist.metadata.version.
> 56.0.0
> 0.20.3
I don't know the reason of this difference.
Fujii Hironori
Pull request: https://github.com/WebKit/WebKit/pull/11150
EWS
Committed 261341@main (8fd5bfebd3eb): <https://commits.webkit.org/261341@main>
Reviewed commits have been landed. Closing PR #11150 and removing active labels.
Radar WebKit Bug Importer
<rdar://problem/106375444>