jupyterhub / ltiauthenticator

A JupyterHub authenticator for LTI

Home Page:https://ltiauthenticator.readthedocs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build fails with error metadata-generation-failed

martinclaus opened this issue · comments

Bug description

Building the wheel with pip fails due to a misconfiguration in pyproject.toml. The heuristics to identify the files to be included in the wheel fails since the package name jupyterhub/ltiauthenticator differs from the source directory name ltiauthenticator.

How to reproduce

  1. Clone repo's main branch
  2. Switch to Repo Root dir
  3. run pip wheel .
  4. See error

Expected behaviour

Wheel should be build without error.

Actual behaviour

Error is raised:

% pip wheel .
Processing /Users/mclaus/Documents/jupyterhub/ltiauthenticator
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Preparing metadata (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [41 lines of output]
      Traceback (most recent call last):
        File "/Users/mclaus/mambaforge/envs/test-install/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/Users/mclaus/mambaforge/envs/test-install/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/mclaus/mambaforge/envs/test-install/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 152, in prepare_metadata_for_build_wheel
          whl_basename = backend.build_wheel(metadata_directory, config_settings)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/65/wr102h8j6wz_gdytvslzntvwrql040/T/pip-build-env-nwo3q3ke/overlay/lib/python3.11/site-packages/hatchling/build.py", line 58, in build_wheel
          return os.path.basename(next(builder.build(directory=wheel_directory, versions=['standard'])))
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/65/wr102h8j6wz_gdytvslzntvwrql040/T/pip-build-env-nwo3q3ke/overlay/lib/python3.11/site-packages/hatchling/builders/plugin/interface.py", line 155, in build
          artifact = version_api[version](directory, **build_data)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/65/wr102h8j6wz_gdytvslzntvwrql040/T/pip-build-env-nwo3q3ke/overlay/lib/python3.11/site-packages/hatchling/builders/wheel.py", line 412, in build_standard
          for included_file in self.recurse_included_files():
        File "/private/var/folders/65/wr102h8j6wz_gdytvslzntvwrql040/T/pip-build-env-nwo3q3ke/overlay/lib/python3.11/site-packages/hatchling/builders/plugin/interface.py", line 176, in recurse_included_files
          yield from self.recurse_selected_project_files()
        File "/private/var/folders/65/wr102h8j6wz_gdytvslzntvwrql040/T/pip-build-env-nwo3q3ke/overlay/lib/python3.11/site-packages/hatchling/builders/plugin/interface.py", line 180, in recurse_selected_project_files
          if self.config.only_include:
             ^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/65/wr102h8j6wz_gdytvslzntvwrql040/T/pip-build-env-nwo3q3ke/overlay/lib/python3.11/site-packages/hatchling/builders/config.py", line 781, in only_include
          only_include = only_include_config.get('only-include', self.default_only_include()) or self.packages
                                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/65/wr102h8j6wz_gdytvslzntvwrql040/T/pip-build-env-nwo3q3ke/overlay/lib/python3.11/site-packages/hatchling/builders/wheel.py", line 231, in default_only_include
          return self.default_file_selection_options.only_include
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/Users/mclaus/mambaforge/envs/test-install/lib/python3.11/functools.py", line 1001, in __get__
          val = self.func(instance)
                ^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/65/wr102h8j6wz_gdytvslzntvwrql040/T/pip-build-env-nwo3q3ke/overlay/lib/python3.11/site-packages/hatchling/builders/wheel.py", line 219, in default_file_selection_options
          raise ValueError(message)
      ValueError: Unable to determine which files to ship inside the wheel using the following heuristics: https://hatch.pypa.io/latest/plugins/builder/wheel/#default-file-selection
      
      At least one file selection option must be defined in the `tool.hatch.build.targets.wheel` table, see: https://hatch.pypa.io/latest/config/build/
      
      As an example, if you intend to ship a directory named `foo` that resides within a `src` directory located at the root of your project, you can define the following:
      
      [tool.hatch.build.targets.wheel]
      packages = ["src/foo"]
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.