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

Switch from 'include_package_data' to 'package_data' #1039

Merged
merged 3 commits into from
May 25, 2024

Conversation

cottsay
Copy link
Member

@cottsay cottsay commented Apr 5, 2024

The former results in quite a few warning messages during the package build with modern setuptools, such as:

********************************************************************************
############################
# Package would be ignored #
############################
Python recognizes 'ros_buildfarm.templates.status.js' as an importable package[^1],
but it is absent from setuptools' `packages` configuration.

This leads to an ambiguous overall configuration. If you want to distribute this
package, please make sure that 'ros_buildfarm.templates.status.js' is explicitly added
to the `packages` configuration field.

Alternatively, you can also rely on setuptools' discovery methods
(for example by using `find_namespace_packages(...)`/`find_namespace:`
instead of `find_packages(...)`/`find:`).

You can read more about "package discovery" on setuptools documentation page:

- https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

If you don't want 'ros_buildfarm.templates.status.js' to be distributed and are
already explicitly excluding 'ros_buildfarm.templates.status.js' via
`find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
you can try to use `exclude_package_data`, or `include-package-data=False` in
combination with a more fine grained `package-data` configuration.

You can read more about "package data files" on setuptools documentation page:

- https://setuptools.pypa.io/en/latest/userguide/datafiles.html


[^1]: For Python, any directory (with suitable naming) can be imported,
      even if it does not contain any `.py` files.
      On the other hand, currently there is no concept of package data
      directory, all directories are treated like packages.
********************************************************************************

The former results in quite a few warning messages during the package
build with modern setuptools.
@cottsay cottsay self-assigned this Apr 5, 2024
@cottsay
Copy link
Member Author

cottsay commented Apr 5, 2024

Hmm, looks like this broke Python 3.6 somehow. Reverting to draft.

@cottsay cottsay marked this pull request as draft April 5, 2024 00:43
@cottsay
Copy link
Member Author

cottsay commented May 22, 2024

For the curious: it looks like recursive glob support was added to setuptools in v62.3.0, and for whatever reason, pip is installing v59 for Python 3.6 and older.

I switched to non-recursive globs and it appears to have resolved the problem.

@cottsay cottsay marked this pull request as ready for review May 22, 2024 01:23
Copy link
Contributor

@j-rivero j-rivero left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can not find any problem with the transition of the configuration. Left a minor comment on the glob expressions. Approved anyway.

setup.py Show resolved Hide resolved
@cottsay cottsay merged commit 1f289d7 into master May 25, 2024
24 checks passed
@cottsay cottsay deleted the cottsay/package-data branch May 25, 2024 00:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants