Repository: falconry/falcon

Issue:
3.1.0: pep517 build `SetuptoolsDeprecationWarning` warnings
Looks like pep517 based build shows some warnings
```consile
* Getting dependencies for wheel...
/usr/lib/python3.8/site-packages/setuptools/config/setupcfg.py:463: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.
  warnings.warn(msg, warning_class)
running egg_info
creating falcon.egg-info
writing falcon.egg-info/PKG-INFO
writing dependency_links to falcon.egg-info/dependency_links.txt
writing entry points to falcon.egg-info/entry_points.txt
writing top-level names to falcon.egg-info/top_level.txt
writing manifest file 'falcon.egg-info/SOURCES.txt'
reading manifest file 'falcon.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE'
writing manifest file 'falcon.egg-info/SOURCES.txt'
* Building wheel...
/usr/lib/python3.8/site-packages/setuptools/config/setupcfg.py:463: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.
  warnings.warn(msg, warning_class)
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-cpython-38
creating build/lib.linux-x86_64-cpython-38/falcon
copying falcon/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/api_helpers.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/app.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/app_helpers.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/asgi_spec.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/constants.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/errors.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/forwarded.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/hooks.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/http_error.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/http_status.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/inspect.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/middleware.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/redirects.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/request.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/request_helpers.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/responders.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/response.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/response_helpers.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/status_codes.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/stream.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/uri.py -> build/lib.linux-x86_64-cpython-38/falcon
copying falcon/version.py -> build/lib.linux-x86_64-cpython-38/falcon
creating build/lib.linux-x86_64-cpython-38/falcon/asgi
copying falcon/asgi/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/asgi
copying falcon/asgi/_asgi_helpers.py -> build/lib.linux-x86_64-cpython-38/falcon/asgi
copying falcon/asgi/_request_helpers.py -> build/lib.linux-x86_64-cpython-38/falcon/asgi
copying falcon/asgi/app.py -> build/lib.linux-x86_64-cpython-38/falcon/asgi
copying falcon/asgi/multipart.py -> build/lib.linux-x86_64-cpython-38/falcon/asgi
copying falcon/asgi/reader.py -> build/lib.linux-x86_64-cpython-38/falcon/asgi
copying falcon/asgi/request.py -> build/lib.linux-x86_64-cpython-38/falcon/asgi
copying falcon/asgi/response.py -> build/lib.linux-x86_64-cpython-38/falcon/asgi
copying falcon/asgi/stream.py -> build/lib.linux-x86_64-cpython-38/falcon/asgi
copying falcon/asgi/structures.py -> build/lib.linux-x86_64-cpython-38/falcon/asgi
copying falcon/asgi/ws.py -> build/lib.linux-x86_64-cpython-38/falcon/asgi
creating build/lib.linux-x86_64-cpython-38/falcon/bench
copying falcon/bench/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/bench
copying falcon/bench/bench.py -> build/lib.linux-x86_64-cpython-38/falcon/bench
copying falcon/bench/create.py -> build/lib.linux-x86_64-cpython-38/falcon/bench
creating build/lib.linux-x86_64-cpython-38/falcon/cmd
copying falcon/cmd/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/cmd
copying falcon/cmd/bench.py -> build/lib.linux-x86_64-cpython-38/falcon/cmd
copying falcon/cmd/inspect_app.py -> build/lib.linux-x86_64-cpython-38/falcon/cmd
creating build/lib.linux-x86_64-cpython-38/falcon/media
copying falcon/media/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/media
copying falcon/media/base.py -> build/lib.linux-x86_64-cpython-38/falcon/media
copying falcon/media/handlers.py -> build/lib.linux-x86_64-cpython-38/falcon/media
copying falcon/media/json.py -> build/lib.linux-x86_64-cpython-38/falcon/media
copying falcon/media/msgpack.py -> build/lib.linux-x86_64-cpython-38/falcon/media
copying falcon/media/multipart.py -> build/lib.linux-x86_64-cpython-38/falcon/media
copying falcon/media/urlencoded.py -> build/lib.linux-x86_64-cpython-38/falcon/media
creating build/lib.linux-x86_64-cpython-38/falcon/routing
copying falcon/routing/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/routing
copying falcon/routing/compiled.py -> build/lib.linux-x86_64-cpython-38/falcon/routing
copying falcon/routing/converters.py -> build/lib.linux-x86_64-cpython-38/falcon/routing
copying falcon/routing/static.py -> build/lib.linux-x86_64-cpython-38/falcon/routing
copying falcon/routing/util.py -> build/lib.linux-x86_64-cpython-38/falcon/routing
creating build/lib.linux-x86_64-cpython-38/falcon/testing
copying falcon/testing/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/testing
copying falcon/testing/client.py -> build/lib.linux-x86_64-cpython-38/falcon/testing
copying falcon/testing/helpers.py -> build/lib.linux-x86_64-cpython-38/falcon/testing
copying falcon/testing/resource.py -> build/lib.linux-x86_64-cpython-38/falcon/testing
copying falcon/testing/srmock.py -> build/lib.linux-x86_64-cpython-38/falcon/testing
copying falcon/testing/test_case.py -> build/lib.linux-x86_64-cpython-38/falcon/testing
creating build/lib.linux-x86_64-cpython-38/falcon/util
copying falcon/util/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/util
copying falcon/util/deprecation.py -> build/lib.linux-x86_64-cpython-38/falcon/util
copying falcon/util/misc.py -> build/lib.linux-x86_64-cpython-38/falcon/util
copying falcon/util/reader.py -> build/lib.linux-x86_64-cpython-38/falcon/util
copying falcon/util/structures.py -> build/lib.linux-x86_64-cpython-38/falcon/util
copying falcon/util/sync.py -> build/lib.linux-x86_64-cpython-38/falcon/util
copying falcon/util/time.py -> build/lib.linux-x86_64-cpython-38/falcon/util
copying falcon/util/uri.py -> build/lib.linux-x86_64-cpython-38/falcon/util
creating build/lib.linux-x86_64-cpython-38/falcon/vendor
copying falcon/vendor/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/vendor
creating build/lib.linux-x86_64-cpython-38/falcon/bench/dj
copying falcon/bench/dj/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/dj
copying falcon/bench/dj/manage.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/dj
creating build/lib.linux-x86_64-cpython-38/falcon/bench/nuts
copying falcon/bench/nuts/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/nuts
copying falcon/bench/nuts/config.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/nuts
copying falcon/bench/nuts/setup.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/nuts
creating build/lib.linux-x86_64-cpython-38/falcon/bench/queues
copying falcon/bench/queues/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/queues
copying falcon/bench/queues/api.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/queues
copying falcon/bench/queues/claims.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/queues
copying falcon/bench/queues/messages.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/queues
copying falcon/bench/queues/queues.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/queues
copying falcon/bench/queues/stats.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/queues
creating build/lib.linux-x86_64-cpython-38/falcon/bench/dj/dj
copying falcon/bench/dj/dj/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/dj/dj
copying falcon/bench/dj/dj/settings.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/dj/dj
copying falcon/bench/dj/dj/urls.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/dj/dj
copying falcon/bench/dj/dj/wsgi.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/dj/dj
creating build/lib.linux-x86_64-cpython-38/falcon/bench/dj/hello
copying falcon/bench/dj/hello/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/dj/hello
copying falcon/bench/dj/hello/admin.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/dj/hello
copying falcon/bench/dj/hello/apps.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/dj/hello
copying falcon/bench/dj/hello/models.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/dj/hello
copying falcon/bench/dj/hello/tests.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/dj/hello
copying falcon/bench/dj/hello/views.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/dj/hello
creating build/lib.linux-x86_64-cpython-38/falcon/bench/dj/hello/migrations
copying falcon/bench/dj/hello/migrations/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/dj/hello/migrations
creating build/lib.linux-x86_64-cpython-38/falcon/bench/nuts/nuts
copying falcon/bench/nuts/nuts/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/nuts/nuts
copying falcon/bench/nuts/nuts/app.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/nuts/nuts
creating build/lib.linux-x86_64-cpython-38/falcon/bench/nuts/nuts/controllers
copying falcon/bench/nuts/nuts/controllers/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/nuts/nuts/controllers
copying falcon/bench/nuts/nuts/controllers/root.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/nuts/nuts/controllers
creating build/lib.linux-x86_64-cpython-38/falcon/bench/nuts/nuts/model
copying falcon/bench/nuts/nuts/model/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/nuts/nuts/model
creating build/lib.linux-x86_64-cpython-38/falcon/bench/nuts/nuts/tests
copying falcon/bench/nuts/nuts/tests/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/nuts/nuts/tests
copying falcon/bench/nuts/nuts/tests/config.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/nuts/nuts/tests
copying falcon/bench/nuts/nuts/tests/test_functional.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/nuts/nuts/tests
copying falcon/bench/nuts/nuts/tests/test_units.py -> build/lib.linux-x86_64-cpython-38/falcon/bench/nuts/nuts/tests
creating build/lib.linux-x86_64-cpython-38/falcon/media/validators
copying falcon/media/validators/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/media/validators
copying falcon/media/validators/jsonschema.py -> build/lib.linux-x86_64-cpython-38/falcon/media/validators
creating build/lib.linux-x86_64-cpython-38/falcon/vendor/mimeparse
copying falcon/vendor/mimeparse/__init__.py -> build/lib.linux-x86_64-cpython-38/falcon/vendor/mimeparse
copying falcon/vendor/mimeparse/mimeparse.py -> build/lib.linux-x86_64-cpython-38/falcon/vendor/mimeparse
running egg_info
writing falcon.egg-info/PKG-INFO
writing dependency_links to falcon.egg-info/dependency_links.txt
writing entry points to falcon.egg-info/entry_points.txt
writing top-level names to falcon.egg-info/top_level.txt
reading manifest file 'falcon.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE'
writing manifest file 'falcon.egg-info/SOURCES.txt'
/usr/lib/python3.8/site-packages/setuptools/command/build_py.py:153: SetuptoolsDeprecationWarning:     Installing 'falcon.cyutil' as data is deprecated, please list it in `packages`.
    !!


    ############################
    # Package would be ignored #
    ############################
    Python recognizes 'falcon.cyutil' as an importable package,
    but it is not listed in the `packages` configuration of setuptools.

    'falcon.cyutil' has been automatically added to the distribution only
    because it may contain data files, but this behavior is likely to change
    in future versions of setuptools (and therefore is considered deprecated).

    Please make sure that 'falcon.cyutil' is included as a package by using
    the `packages` configuration field or the proper discovery methods
    (for example by using `find_namespace_packages(...)`/`find_namespace:`
    instead of `find_packages(...)`/`find:`).

    You can read more about "package discovery" and "data files" on setuptools
    documentation page.


!!

  check.warn(importable)
creating build/lib.linux-x86_64-cpython-38/falcon/cyutil
copying falcon/cyutil/misc.pyx -> build/lib.linux-x86_64-cpython-38/falcon/cyutil
copying falcon/cyutil/reader.pyx -> build/lib.linux-x86_64-cpython-38/falcon/cyutil
copying falcon/cyutil/uri.pyx -> build/lib.linux-x86_64-cpython-38/falcon/cyutil
running build_ext
cythoning falcon/api_helpers.py to falcon/api_helpers.c
cythoning falcon/app.py to falcon/app.c
cythoning falcon/app_helpers.py to falcon/app_helpers.c
cythoning falcon/asgi_spec.py to falcon/asgi_spec.c
cythoning falcon/constants.py to falcon/constants.c
cythoning falcon/errors.py to falcon/errors.c
cythoning falcon/forwarded.py to falcon/forwarded.c
cythoning falcon/http_error.py to falcon/http_error.c
cythoning falcon/http_status.py to falcon/http_status.c
cythoning falcon/inspect.py to falcon/inspect.c
cythoning falcon/middleware.py to falcon/middleware.c
cythoning falcon/redirects.py to falcon/redirects.c
cythoning falcon/request.py to falcon/request.c
cythoning falcon/request_helpers.py to falcon/request_helpers.c
cythoning falcon/response.py to falcon/response.c
cythoning falcon/response_helpers.py to falcon/response_helpers.c
cythoning falcon/status_codes.py to falcon/status_codes.c
cythoning falcon/stream.py to falcon/stream.c
cythoning falcon/uri.py to falcon/uri.c
cythoning falcon/version.py to falcon/version.c
cythoning falcon/cyutil/misc.pyx to falcon/cyutil/misc.c
cythoning falcon/cyutil/reader.pyx to falcon/cyutil/reader.c
cythoning falcon/cyutil/uri.pyx to falcon/cyutil/uri.c
cythoning falcon/media/base.py to falcon/media/base.c
cythoning falcon/media/handlers.py to falcon/media/handlers.c
cythoning falcon/media/json.py to falcon/media/json.c
cythoning falcon/media/msgpack.py to falcon/media/msgpack.c
cythoning falcon/media/multipart.py to falcon/media/multipart.c
cythoning falcon/media/urlencoded.py to falcon/media/urlencoded.c
cythoning falcon/routing/compiled.py to falcon/routing/compiled.c
cythoning falcon/routing/converters.py to falcon/routing/converters.c
cythoning falcon/routing/static.py to falcon/routing/static.c
cythoning falcon/routing/util.py to falcon/routing/util.c
cythoning falcon/util/deprecation.py to falcon/util/deprecation.c
cythoning falcon/util/misc.py to falcon/util/misc.c
cythoning falcon/util/structures.py to falcon/util/structures.c
cythoning falcon/util/time.py to falcon/util/time.c
cythoning falcon/util/uri.py to falcon/util/uri.c
cythoning falcon/vendor/mimeparse/mimeparse.py to falcon/vendor/mimeparse/mimeparse.c
building 'falcon.api_helpers' extension
creating build/temp.linux-x86_64-cpython-38
creating build/temp.linux-x86_64-cpython-38/falcon

[..]
```


Discussion:
Thanks, the `license_files` part should be trivial to address.

`falcon.cyutil` -- I'm not sure why `setuptools` is complaining here, this might need more digging.
I guess the issue is that cyutil does not have an `__init__.py` so `options.packages.find` skips it.


Right... maybe it's easiest to add `__init__.py`? Or should we add it to the result returned by `find()`?
I can't think of any particular issue in having an empty `__init__` there

Resolving patch:
diff --git a/falcon/cyutil/__init__.py b/falcon/cyutil/__init__.py
new file mode 100644


Test patch: