Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

py.typed file is not included in v0.18.3 wheel #314

Closed
altendky opened this issue Mar 25, 2022 · 14 comments
Closed

py.typed file is not included in v0.18.3 wheel #314

altendky opened this issue Mar 25, 2022 · 14 comments

Comments

@altendky
Copy link
Member

I just started getting complaints from CI about untyped decorators with @pytest_asyncio.fixture(). The py.typed file was not included in the v0.18.3 wheel released today. It does appear to be present in the v0.18.2 wheel as well as the v0.18.3 sdist.

image

I started looking around locally to try to figure it out but adding it to MANIFEST.in, trying old setuptools and build versions, passing --sdist --wheel to build... I haven't figured anything out quite yet.

@seifertm seifertm self-assigned this Mar 25, 2022
@seifertm
Copy link
Contributor

Thanks for the report! That's weird indeed. Linking #305 as a possible future fix for the issue.

When I build v0.18.2 with my local environment, py.typed is missing in the wheel as well.

I dug up the dependencies that were installed during the Install check-wheel-content, and twine step for v0.18.2 and v.0.18.3. The diff is:

--- 0.18.2.txt	2022-03-25 21:23:36.560945161 +0100
+++ 0.18.3.txt	2022-03-25 21:23:31.478946553 +0100
@@ -9,12 +9,12 @@
 check-wheel-contents-0.3.4
 click-8.0.4
 colorama-0.4.4
-cryptography-36.0.1
+cryptography-36.0.2
 distlib-0.3.4
 docutils-0.18.1
 filelock-3.6.0
 idna-3.3
-importlib-metadata-4.11.2
+importlib-metadata-4.11.3
 jeepney-0.7.1
 keyring-23.5.0
 packaging-21.3
@@ -26,7 +26,7 @@
 pycparser-2.21
 pydantic-1.9.0
 pyparsing-3.0.7
-readme-renderer-32.0
+readme-renderer-34.0
 requests-2.27.1
 requests-toolbelt-0.9.1
 rfc3986-2.0.0
@@ -34,11 +34,11 @@
 toml-0.10.2
 tomli-2.0.1
 tox-3.24.5
-tqdm-4.63.0
+tqdm-4.63.1
 twine-3.8.0
 typing-extensions-4.1.1
-urllib3-1.26.8
-virtualenv-20.13.2
+urllib3-1.26.9
+virtualenv-20.13.4
 webencodings-0.5.1
 wheel-filename-1.4.0
 zipp-3.7.0

At the moment, I fail to see how this difference in the dependencies could cause the issue. I'll have another look at the weekend.

@seifertm seifertm removed their assignment Mar 25, 2022
@altendky
Copy link
Member Author

altendky commented Mar 25, 2022

Out of that list I would guess importlib-metadata. But, wouldn't it be the python -m build step? Though I didn't look back to see if those use the same install step.

@altendky
Copy link
Member Author

altendky commented Mar 26, 2022

I'll note that setuptools seemed to be updated in that time. Then updated again six hours ago... And hey, I just tried rebuilding my env here and creating a new wheel and it seems to have worked.

$ python3.9 -m venv venv
$ venv/bin/pip install --upgrade pip setuptools wheel build
Requirement already satisfied: pip in ./venv/lib/python3.9/site-packages (21.2.4)
Collecting pip
  Using cached pip-22.0.4-py3-none-any.whl (2.1 MB)
Requirement already satisfied: setuptools in ./venv/lib/python3.9/site-packages (58.1.0)
Collecting setuptools
  Using cached setuptools-61.1.0-py3-none-any.whl (1.1 MB)
Collecting wheel
  Using cached wheel-0.37.1-py2.py3-none-any.whl (35 kB)
Collecting build
  Using cached build-0.7.0-py3-none-any.whl (16 kB)
Collecting packaging>=19.0
  Using cached packaging-21.3-py3-none-any.whl (40 kB)
Collecting pep517>=0.9.1
  Using cached pep517-0.12.0-py2.py3-none-any.whl (19 kB)
Collecting tomli>=1.0.0
  Using cached tomli-2.0.1-py3-none-any.whl (12 kB)
Collecting pyparsing!=3.0.5,>=2.0.2
  Using cached pyparsing-3.0.7-py3-none-any.whl (98 kB)
Installing collected packages: tomli, pyparsing, pep517, packaging, wheel, setuptools, pip, build
  Attempting uninstall: setuptools
    Found existing installation: setuptools 58.1.0
    Uninstalling setuptools-58.1.0:
      Successfully uninstalled setuptools-58.1.0
  Attempting uninstall: pip
    Found existing installation: pip 21.2.4
    Uninstalling pip-21.2.4:
      Successfully uninstalled pip-21.2.4
Successfully installed build-0.7.0 packaging-21.3 pep517-0.12.0 pip-22.0.4 pyparsing-3.0.7 setuptools-61.1.0 tomli-2.0.1 wheel-0.37.1
$ rm -rf dist/
$ venv/bin/python -m build --sdist --wheel
* Creating venv isolated environment...
* Installing packages in isolated environment... (setuptools>=51.0, setuptools_scm[toml]>=6.2, wheel>=0.36)
* Getting dependencies for sdist...
running egg_info
writing pytest_asyncio.egg-info/PKG-INFO
writing dependency_links to pytest_asyncio.egg-info/dependency_links.txt
writing entry points to pytest_asyncio.egg-info/entry_points.txt
writing requirements to pytest_asyncio.egg-info/requires.txt
writing top-level names to pytest_asyncio.egg-info/top_level.txt
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE'
writing manifest file 'pytest_asyncio.egg-info/SOURCES.txt'
* Building sdist...
running sdist
running egg_info
writing pytest_asyncio.egg-info/PKG-INFO
writing dependency_links to pytest_asyncio.egg-info/dependency_links.txt
writing entry points to pytest_asyncio.egg-info/entry_points.txt
writing requirements to pytest_asyncio.egg-info/requires.txt
writing top-level names to pytest_asyncio.egg-info/top_level.txt
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE'
writing manifest file 'pytest_asyncio.egg-info/SOURCES.txt'
running check
creating pytest-asyncio-0.18.3
creating pytest-asyncio-0.18.3/pytest_asyncio
creating pytest-asyncio-0.18.3/pytest_asyncio.egg-info
creating pytest-asyncio-0.18.3/tests
creating pytest-asyncio-0.18.3/tests/async_fixtures
creating pytest-asyncio-0.18.3/tests/hypothesis
creating pytest-asyncio-0.18.3/tests/loop_fixture_scope
creating pytest-asyncio-0.18.3/tests/markers
creating pytest-asyncio-0.18.3/tests/modes
creating pytest-asyncio-0.18.3/tests/multiloop
creating pytest-asyncio-0.18.3/tests/respect_event_loop_policy
creating pytest-asyncio-0.18.3/tests/trio
creating pytest-asyncio-0.18.3/tools
copying files to pytest-asyncio-0.18.3...
copying CHANGELOG.rst -> pytest-asyncio-0.18.3
copying LICENSE -> pytest-asyncio-0.18.3
copying MANIFEST.in -> pytest-asyncio-0.18.3
copying Makefile -> pytest-asyncio-0.18.3
copying README.rst -> pytest-asyncio-0.18.3
copying pyproject.toml -> pytest-asyncio-0.18.3
copying setup.cfg -> pytest-asyncio-0.18.3
copying setup.py -> pytest-asyncio-0.18.3
copying tox.ini -> pytest-asyncio-0.18.3
copying pytest_asyncio/__init__.py -> pytest-asyncio-0.18.3/pytest_asyncio
copying pytest_asyncio/_version.py -> pytest-asyncio-0.18.3/pytest_asyncio
copying pytest_asyncio/plugin.py -> pytest-asyncio-0.18.3/pytest_asyncio
copying pytest_asyncio/py.typed -> pytest-asyncio-0.18.3/pytest_asyncio
copying pytest_asyncio.egg-info/PKG-INFO -> pytest-asyncio-0.18.3/pytest_asyncio.egg-info
copying pytest_asyncio.egg-info/SOURCES.txt -> pytest-asyncio-0.18.3/pytest_asyncio.egg-info
copying pytest_asyncio.egg-info/dependency_links.txt -> pytest-asyncio-0.18.3/pytest_asyncio.egg-info
copying pytest_asyncio.egg-info/entry_points.txt -> pytest-asyncio-0.18.3/pytest_asyncio.egg-info
copying pytest_asyncio.egg-info/requires.txt -> pytest-asyncio-0.18.3/pytest_asyncio.egg-info
copying pytest_asyncio.egg-info/top_level.txt -> pytest-asyncio-0.18.3/pytest_asyncio.egg-info
copying tests/conftest.py -> pytest-asyncio-0.18.3/tests
copying tests/test_asyncio_fixture.py -> pytest-asyncio-0.18.3/tests
copying tests/test_dependent_fixtures.py -> pytest-asyncio-0.18.3/tests
copying tests/test_event_loop_scope.py -> pytest-asyncio-0.18.3/tests
copying tests/test_flaky_integration.py -> pytest-asyncio-0.18.3/tests
copying tests/test_simple.py -> pytest-asyncio-0.18.3/tests
copying tests/test_subprocess.py -> pytest-asyncio-0.18.3/tests
copying tests/async_fixtures/__init__.py -> pytest-asyncio-0.18.3/tests/async_fixtures
copying tests/async_fixtures/test_async_fixtures.py -> pytest-asyncio-0.18.3/tests/async_fixtures
copying tests/async_fixtures/test_async_fixtures_scope.py -> pytest-asyncio-0.18.3/tests/async_fixtures
copying tests/async_fixtures/test_async_fixtures_with_finalizer.py -> pytest-asyncio-0.18.3/tests/async_fixtures
copying tests/async_fixtures/test_async_gen_fixtures.py -> pytest-asyncio-0.18.3/tests/async_fixtures
copying tests/async_fixtures/test_nested.py -> pytest-asyncio-0.18.3/tests/async_fixtures
copying tests/async_fixtures/test_parametrized_loop.py -> pytest-asyncio-0.18.3/tests/async_fixtures
copying tests/hypothesis/test_base.py -> pytest-asyncio-0.18.3/tests/hypothesis
copying tests/hypothesis/test_inherited_test.py -> pytest-asyncio-0.18.3/tests/hypothesis
copying tests/loop_fixture_scope/conftest.py -> pytest-asyncio-0.18.3/tests/loop_fixture_scope
copying tests/loop_fixture_scope/test_loop_fixture_scope.py -> pytest-asyncio-0.18.3/tests/loop_fixture_scope
copying tests/markers/test_class_marker.py -> pytest-asyncio-0.18.3/tests/markers
copying tests/markers/test_module_marker.py -> pytest-asyncio-0.18.3/tests/markers
copying tests/modes/test_auto_mode.py -> pytest-asyncio-0.18.3/tests/modes
copying tests/modes/test_legacy_mode.py -> pytest-asyncio-0.18.3/tests/modes
copying tests/modes/test_strict_mode.py -> pytest-asyncio-0.18.3/tests/modes
copying tests/multiloop/conftest.py -> pytest-asyncio-0.18.3/tests/multiloop
copying tests/multiloop/test_alternative_loops.py -> pytest-asyncio-0.18.3/tests/multiloop
copying tests/respect_event_loop_policy/conftest.py -> pytest-asyncio-0.18.3/tests/respect_event_loop_policy
copying tests/respect_event_loop_policy/test_respects_event_loop_policy.py -> pytest-asyncio-0.18.3/tests/respect_event_loop_policy
copying tests/trio/test_fixtures.py -> pytest-asyncio-0.18.3/tests/trio
copying tools/get-version.py -> pytest-asyncio-0.18.3/tools
Writing pytest-asyncio-0.18.3/setup.cfg
Creating tar archive
removing 'pytest-asyncio-0.18.3' (and everything under it)
* Creating venv isolated environment...
* Installing packages in isolated environment... (setuptools>=51.0, setuptools_scm[toml]>=6.2, wheel>=0.36)
* Getting dependencies for wheel...
running egg_info
writing pytest_asyncio.egg-info/PKG-INFO
writing dependency_links to pytest_asyncio.egg-info/dependency_links.txt
writing entry points to pytest_asyncio.egg-info/entry_points.txt
writing requirements to pytest_asyncio.egg-info/requires.txt
writing top-level names to pytest_asyncio.egg-info/top_level.txt
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE'
writing manifest file 'pytest_asyncio.egg-info/SOURCES.txt'
* Installing packages in isolated environment... (wheel)
* Building wheel...
running bdist_wheel
running build
running build_py
copying pytest_asyncio/_version.py -> build/lib/pytest_asyncio
running egg_info
writing pytest_asyncio.egg-info/PKG-INFO
writing dependency_links to pytest_asyncio.egg-info/dependency_links.txt
writing entry points to pytest_asyncio.egg-info/entry_points.txt
writing requirements to pytest_asyncio.egg-info/requires.txt
writing top-level names to pytest_asyncio.egg-info/top_level.txt
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE'
writing manifest file 'pytest_asyncio.egg-info/SOURCES.txt'
warning: build_py: byte-compiling is disabled, skipping.

installing to build/bdist.linux-x86_64/wheel
running install
running install_lib
creating build/bdist.linux-x86_64/wheel
creating build/bdist.linux-x86_64/wheel/pytest_asyncio
copying build/lib/pytest_asyncio/__init__.py -> build/bdist.linux-x86_64/wheel/pytest_asyncio
copying build/lib/pytest_asyncio/_version.py -> build/bdist.linux-x86_64/wheel/pytest_asyncio
copying build/lib/pytest_asyncio/plugin.py -> build/bdist.linux-x86_64/wheel/pytest_asyncio
copying build/lib/pytest_asyncio/py.typed -> build/bdist.linux-x86_64/wheel/pytest_asyncio
warning: install_lib: byte-compiling is disabled, skipping.

running install_egg_info
Copying pytest_asyncio.egg-info to build/bdist.linux-x86_64/wheel/pytest_asyncio-0.18.3-py3.9.egg-info
running install_scripts
creating build/bdist.linux-x86_64/wheel/pytest_asyncio-0.18.3.dist-info/WHEEL
creating '/home/altendky/repos/pytest-asyncio/dist/tmpc_w4w54o/pytest_asyncio-0.18.3-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it
adding 'pytest_asyncio/__init__.py'
adding 'pytest_asyncio/_version.py'
adding 'pytest_asyncio/plugin.py'
adding 'pytest_asyncio/py.typed'
adding 'pytest_asyncio-0.18.3.dist-info/LICENSE'
adding 'pytest_asyncio-0.18.3.dist-info/METADATA'
adding 'pytest_asyncio-0.18.3.dist-info/WHEEL'
adding 'pytest_asyncio-0.18.3.dist-info/entry_points.txt'
adding 'pytest_asyncio-0.18.3.dist-info/top_level.txt'
adding 'pytest_asyncio-0.18.3.dist-info/RECORD'
removing build/bdist.linux-x86_64/wheel
Successfully built pytest-asyncio-0.18.3.tar.gz and pytest_asyncio-0.18.3-py3-none-any.whl
$ unzip -l dist/*.whl
Archive:  dist/pytest_asyncio-0.18.3-py3-none-any.whl
  Length      Date    Time    Name
---------  ---------- -----   ----
      162  2022-03-25 19:04   pytest_asyncio/__init__.py
      144  2022-03-26 01:43   pytest_asyncio/_version.py
    17022  2022-03-25 19:04   pytest_asyncio/plugin.py
        0  2022-03-25 19:04   pytest_asyncio/py.typed
    11324  2022-03-26 01:43   pytest_asyncio-0.18.3.dist-info/LICENSE
    10343  2022-03-26 01:43   pytest_asyncio-0.18.3.dist-info/METADATA
       92  2022-03-26 01:43   pytest_asyncio-0.18.3.dist-info/WHEEL
       43  2022-03-26 01:43   pytest_asyncio-0.18.3.dist-info/entry_points.txt
       15  2022-03-26 01:43   pytest_asyncio-0.18.3.dist-info/top_level.txt
      854  2022-03-26 01:43   pytest_asyncio-0.18.3.dist-info/RECORD
---------                     -------
    39999                     10 files
$ tar -tvf dist/*.tar.gz
drwxrwxr-x altendky/altendky 0 2022-03-25 21:43 pytest-asyncio-0.18.3/
-rw-rw-r-- altendky/altendky 8033 2022-03-25 15:04 pytest-asyncio-0.18.3/CHANGELOG.rst
-rw-rw-r-- altendky/altendky 11324 2022-03-25 15:04 pytest-asyncio-0.18.3/LICENSE
-rw-rw-r-- altendky/altendky   102 2022-03-25 16:15 pytest-asyncio-0.18.3/MANIFEST.in
-rw-rw-r-- altendky/altendky   965 2022-03-25 15:04 pytest-asyncio-0.18.3/Makefile
-rw-rw-r-- altendky/altendky  9972 2022-03-25 21:43 pytest-asyncio-0.18.3/PKG-INFO
-rw-rw-r-- altendky/altendky  9030 2022-03-25 15:04 pytest-asyncio-0.18.3/README.rst
-rw-rw-r-- altendky/altendky   202 2022-03-25 15:04 pytest-asyncio-0.18.3/pyproject.toml
drwxrwxr-x altendky/altendky     0 2022-03-25 21:43 pytest-asyncio-0.18.3/pytest_asyncio/
-rw-rw-r-- altendky/altendky   162 2022-03-25 15:04 pytest-asyncio-0.18.3/pytest_asyncio/__init__.py
-rw-rw-r-- altendky/altendky   144 2022-03-25 21:43 pytest-asyncio-0.18.3/pytest_asyncio/_version.py
-rw-rw-r-- altendky/altendky 17022 2022-03-25 15:04 pytest-asyncio-0.18.3/pytest_asyncio/plugin.py
-rw-rw-r-- altendky/altendky     0 2022-03-25 15:04 pytest-asyncio-0.18.3/pytest_asyncio/py.typed
drwxrwxr-x altendky/altendky     0 2022-03-25 21:43 pytest-asyncio-0.18.3/pytest_asyncio.egg-info/
-rw-rw-r-- altendky/altendky  9972 2022-03-25 21:43 pytest-asyncio-0.18.3/pytest_asyncio.egg-info/PKG-INFO
-rw-rw-r-- altendky/altendky  1489 2022-03-25 21:43 pytest-asyncio-0.18.3/pytest_asyncio.egg-info/SOURCES.txt
-rw-rw-r-- altendky/altendky     1 2022-03-25 21:43 pytest-asyncio-0.18.3/pytest_asyncio.egg-info/dependency_links.txt
-rw-rw-r-- altendky/altendky    43 2022-03-25 21:43 pytest-asyncio-0.18.3/pytest_asyncio.egg-info/entry_points.txt
-rw-rw-r-- altendky/altendky   153 2022-03-25 21:43 pytest-asyncio-0.18.3/pytest_asyncio.egg-info/requires.txt
-rw-rw-r-- altendky/altendky    15 2022-03-25 21:43 pytest-asyncio-0.18.3/pytest_asyncio.egg-info/top_level.txt
-rw-rw-r-- altendky/altendky  1497 2022-03-25 21:43 pytest-asyncio-0.18.3/setup.cfg
-rw-rw-r-- altendky/altendky    69 2022-03-25 15:04 pytest-asyncio-0.18.3/setup.py
drwxrwxr-x altendky/altendky     0 2022-03-25 21:43 pytest-asyncio-0.18.3/tests/
drwxrwxr-x altendky/altendky     0 2022-03-25 21:43 pytest-asyncio-0.18.3/tests/async_fixtures/
-rw-rw-r-- altendky/altendky     0 2022-03-25 15:00 pytest-asyncio-0.18.3/tests/async_fixtures/__init__.py
-rw-rw-r-- altendky/altendky   493 2022-03-25 15:00 pytest-asyncio-0.18.3/tests/async_fixtures/test_async_fixtures.py
-rw-rw-r-- altendky/altendky   490 2022-03-25 15:00 pytest-asyncio-0.18.3/tests/async_fixtures/test_async_fixtures_scope.py
-rw-rw-r-- altendky/altendky  1990 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/async_fixtures/test_async_fixtures_with_finalizer.py
-rw-rw-r-- altendky/altendky   765 2022-03-25 15:00 pytest-asyncio-0.18.3/tests/async_fixtures/test_async_gen_fixtures.py
-rw-rw-r-- altendky/altendky   539 2022-03-25 15:00 pytest-asyncio-0.18.3/tests/async_fixtures/test_nested.py
-rw-rw-r-- altendky/altendky   573 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/async_fixtures/test_parametrized_loop.py
-rw-rw-r-- altendky/altendky   737 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/conftest.py
drwxrwxr-x altendky/altendky     0 2022-03-25 21:43 pytest-asyncio-0.18.3/tests/hypothesis/
-rw-rw-r-- altendky/altendky  2162 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/hypothesis/test_base.py
-rw-rw-r-- altendky/altendky   477 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/hypothesis/test_inherited_test.py
drwxrwxr-x altendky/altendky     0 2022-03-25 21:43 pytest-asyncio-0.18.3/tests/loop_fixture_scope/
-rw-rw-r-- altendky/altendky   341 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/loop_fixture_scope/conftest.py
-rw-rw-r-- altendky/altendky   432 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/loop_fixture_scope/test_loop_fixture_scope.py
drwxrwxr-x altendky/altendky     0 2022-03-25 21:43 pytest-asyncio-0.18.3/tests/markers/
-rw-rw-r-- altendky/altendky   516 2022-03-25 15:00 pytest-asyncio-0.18.3/tests/markers/test_class_marker.py
-rw-rw-r-- altendky/altendky   786 2022-03-25 15:00 pytest-asyncio-0.18.3/tests/markers/test_module_marker.py
drwxrwxr-x altendky/altendky     0 2022-03-25 21:43 pytest-asyncio-0.18.3/tests/modes/
-rw-rw-r-- altendky/altendky  2973 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/modes/test_auto_mode.py
-rw-rw-r-- altendky/altendky  2997 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/modes/test_legacy_mode.py
-rw-rw-r-- altendky/altendky  1536 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/modes/test_strict_mode.py
drwxrwxr-x altendky/altendky     0 2022-03-25 21:43 pytest-asyncio-0.18.3/tests/multiloop/
-rw-rw-r-- altendky/altendky   327 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/multiloop/conftest.py
-rw-rw-r-- altendky/altendky   407 2022-03-25 15:00 pytest-asyncio-0.18.3/tests/multiloop/test_alternative_loops.py
drwxrwxr-x altendky/altendky     0 2022-03-25 21:43 pytest-asyncio-0.18.3/tests/respect_event_loop_policy/
-rw-rw-r-- altendky/altendky   420 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/respect_event_loop_policy/conftest.py
-rw-rw-r-- altendky/altendky   582 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/respect_event_loop_policy/test_respects_event_loop_policy.py
-rw-rw-r-- altendky/altendky  1442 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/test_asyncio_fixture.py
-rw-rw-r-- altendky/altendky   301 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/test_dependent_fixtures.py
-rw-rw-r-- altendky/altendky   987 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/test_event_loop_scope.py
-rw-rw-r-- altendky/altendky  1396 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/test_flaky_integration.py
-rw-rw-r-- altendky/altendky  7364 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/test_simple.py
-rw-rw-r-- altendky/altendky  1227 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/test_subprocess.py
drwxrwxr-x altendky/altendky     0 2022-03-25 21:43 pytest-asyncio-0.18.3/tests/trio/
-rw-rw-r-- altendky/altendky   582 2022-03-25 15:04 pytest-asyncio-0.18.3/tests/trio/test_fixtures.py
drwxrwxr-x altendky/altendky     0 2022-03-25 21:43 pytest-asyncio-0.18.3/tools/
-rw-rw-r-- altendky/altendky   431 2022-03-25 15:04 pytest-asyncio-0.18.3/tools/get-version.py
-rw-rw-r-- altendky/altendky   874 2022-03-25 15:04 pytest-asyncio-0.18.3/tox.ini

@altendky
Copy link
Member Author

Definitely some relevant commits in there... pypa/setuptools@v61.0.0...v61.1.0

Strikes me as more of a fix than a change but, oh well. It's working again. https://github.com/pypa/setuptools/blob/6310e32e6a5456a75f982ca67ddf49f559f9cd69/CHANGES.rst#changes

@altendky
Copy link
Member Author

Assuming that my observations above are correct, do you think we could get a release soon? If not then I'll have to add !=0.18.3 in a few places to fix our type checks.

@seifertm seifertm self-assigned this Mar 28, 2022
@seifertm
Copy link
Contributor

Thanks for all the debugging @altendky!

My understanding is that v0.18.3 is not completely broken, only the wheel was built incorrectly. That's why I believe the nicest way to rectify the issue is to upload a wheel with an updated build number to the v0.18.3 release on PyPI (e.g. pytest_asyncio-0.18.3-1-py3-none-any.whl). Pip would find both both wheels in the v0.18.3 release and choose the one with the highest build number.

In case of an installation from source (e.g. downstream packagers), everything should be fine already.

@Tinche @asvetlov I don't have access to the PyPI project. Do either of you have time to upload an updated wheel?

@seifertm seifertm removed their assignment Mar 28, 2022
@Tinche
Copy link
Member

Tinche commented Mar 28, 2022

@seifertm I can give you access if you send me your PyPI username ;)

@seifertm
Copy link
Contributor

@Tinche Thanks, that would help :)
My user is m.seifert

@altendky
Copy link
Member Author

Yes, that's my understanding as well. It might be worth also yanking (a technical term...) the existing release. That would mean that users would not get it unless they explicitly requested that exact version. I think you will need to do an actual release version bump. This is more than a documentation fix so I think .post isn't exactly proper. It might be easiest to just do 0.18.4 instead of working through the technicalities and anyone else dealing with related confusion.

@seifertm
Copy link
Contributor

I agree that a .post release is not enough.

I'd like to try and upload an additional wheel with a higher build number as described here (see section A wheel file wasn't compiled properly). I believe this will solve your issue.

If that doesn't work (or if I don't get PyPI access in the next ~5 hours and nobody else jumps in), I'll tag v0.18.4.

@altendky
Copy link
Member Author

Mmm, I kind of forgot about that. I don't super care since mostly I just need fresh venvs to be good but I wonder if that triggers an upgrade or not. Anyways, I appreciate the help addressing this.

@seifertm
Copy link
Contributor

I uploaded pytest_asyncio-0.18.3-1-py3-none-any.whl to PyPI which contains py.typed. Here is the diff between the two unpacked wheels:

Only in pytest_asyncio-0.18.3-1-py3-none-any/pytest_asyncio: py.typed
diff -ru pytest_asyncio-0.18.3-py3-none-any/pytest_asyncio-0.18.3.dist-info/RECORD pytest_asyncio-0.18.3-1-py3-none-any/pytest_asyncio-0.18.3.dist-info/RECORD
--- pytest_asyncio-0.18.3-py3-none-any/pytest_asyncio-0.18.3.dist-info/RECORD   2022-03-25 08:25:44.000000000 +0100
+++ pytest_asyncio-0.18.3-1-py3-none-any/pytest_asyncio-0.18.3.dist-info/RECORD 2022-03-28 13:23:26.000000000 +0200
@@ -1,6 +1,7 @@
 pytest_asyncio/__init__.py,sha256=2J7tryFeuZBUKF_miJXNNZvNm2MCcGaj1_zq8baQm9w,162
 pytest_asyncio/_version.py,sha256=d5YRRiBJswgnE8lhVAYLGohx9i1QS24SbuNiM_GCpiw,144
 pytest_asyncio/plugin.py,sha256=l2rseqhlgKta5MyzdWTyG6Vmo5OCFoILXle5CZ1ugf0,17022
+pytest_asyncio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
 pytest_asyncio-0.18.3.dist-info/LICENSE,sha256=qK0xscP0DcpahBGTUbj6jdyGjt13-tio6_bY8tFvpK4,11324
 pytest_asyncio-0.18.3.dist-info/METADATA,sha256=8LtsOyRW8ezRJxk-jocZi4y66fB2xl3dG9U0PBHfns4,10343
 pytest_asyncio-0.18.3.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92

Fresh installations with pip install pytest-asyncio will use the new wheel. Existing installations will not be updated when running pip install --upgrade without --force-reinstall.

@altendky Could you test if this works for you and report back?

@altendky
Copy link
Member Author

I found a job that had failed before and reran it. It got the -1 build and also passed. I also downloaded the wheel manually from PyPI and confirmed the presence of the py.typed file.
Looks fixed. Thanks!

@seifertm
Copy link
Contributor

Sounds good, thanks for the feedback!

Also thank you @Tinche for the quick reaction about the PyPI access.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants