On 04-06-2023 21:27, Miro Hrončok wrote:
> I ran into a build failure for a Python package that dropped
setup.py
> in the latest update and uses pyproject.toml for metadata and setuptools.
>
> The build failed due to 'error: Installed (but unpackaged) file(s)
> found' [1]. However, all the erroneously installed modules should be
> excluded by default, if I understand the setuptools automatic
> discovery documentation [2] correctly. They are listed in
> 'FlatLayoutPackageFinder.DEFAULT_EXCLUDE'. In this case 'docs',
> 'scripts' and 'test'.
>
> Since this is still beta when using pyproject.toml, I was wondering if
> someone else has come across this misbehavior. Or, maybe, it's
> something I failed to spot in pyproject.toml, that's causing it.
>
> I can make it work by adding a 'include = ["palettable"]' in the
> tool.setuptools.packages.find table [3]. But I'd like a second opinion
> before submitting a PR upstream.
First of all, upstream wheel downloaded from
https://pypi.org/project/palettable/3.3.3/#files includes build, docs
and test as well.
I know. I tried a local 'pthon3 -m build' and the wheel was stuffed with
everything. Terrible oversight by upstream, it seems.
I think the elicit exclude configured at
https://github.com/jiffyclub/palettable/blob/v3.3.3/pyproject.toml#L35
migth override the DEFAULT_EXCLUDE value.
That sounds plausible. I also tried modifying pyproject.toml not using
include or exclude. Thus relying on the automatic find mechanism, but I
couldn't get it to work.
The exclude is kinda a no-op, since there are no files named *.test
anywhere.
Adding an explicit include is probably the easiest way out. I'll suggest
that upstream.
I don't know how tool.setuptools.packages.find.exclude behaves,
but I
have seen this behavior with pytest, where the default was to exclude a
bunch of directories including ".*", but projects that set their own
excludes (without ".*") suddenly started to collect tests from our
.pyproject-* folders.
Thanks for the feedback. I'll keep that in mind.
-- Sandro