(я потратил так много времени, пытаясь понять эту глупую проблему, что отвечаю на свой вопрос, надеясь, что это может сэкономить время другим, сталкивающимся с той же проблемой)
Я наконец нашел виновника : это скрытое взаимодействие между setuptools_scm
и флагом include_package_data=True
.
Само по себе include_package_data=True
не делает каталог tests
включенным в колесо. Однако если setuptools_scm
установлен и папка находится под контролем версий (а каталог tests
находится в списке git -управляемых файлов), то директива exclude
, похоже, больше не учитывается.
Таким образом, решение было просто удалить include_package_data=True
, который на самом деле не нужен, когда присутствует package_data
:
from setuptools import setup, find_packages
setup(
name='dfl_client',
packages=find_packages(exclude=['*tests*']),
package_data={"": ['py.typed', '*.pyi']},
)
См. setuptools делает c в том числе файлы (что на самом деле очень просто для include_package_data
) и эта связанная проблема и обходной путь (обходной путь, похоже, работает и для колеса, а не только для sdist).