Subject: [bug#73711] Questions about updating the Python build tools for a patch

From: "King, Spencer" <[email-masked]>
Date: Tue, 8 Oct 2024 20:53:22 +0000

Hello,

I am working on a patch for an update to python-humanize, but I believe this is going to necessitate updating some packages in python-build. I would appreciate it if someone could give me some advice and let me know if this is even the right thing to be doing. 

When trying to build [email-masked] I received the following error:

starting phase `build'
Using 'hatchling.build' to build wheels, auto-detected 'hatchling.build', override '#f'.
Traceback (most recent call last):
  File "<string>", line 4, in <module>
  File "/gnu/store/iafxd40mzizd2kndvla2inmkmjhnygrr-python-hatchling-1.14.0/lib/python3.10/site-packages/hatchling/build.py", line 56, in build_wheel
    return os.path.basename(next(builder.build(wheel_directory, ['standard'])))
  File "/gnu/store/iafxd40mzizd2kndvla2inmkmjhnygrr-python-hatchling-1.14.0/lib/python3.10/site-packages/hatchling/builders/plugin/interface.py", line 93, in build
    self.metadata.validate_fields()
  File "/gnu/store/iafxd40mzizd2kndvla2inmkmjhnygrr-python-hatchling-1.14.0/lib/python3.10/site-packages/hatchling/metadata/core.py", line 244, in validate_fields
    self.core.validate_fields()
  File "/gnu/store/iafxd40mzizd2kndvla2inmkmjhnygrr-python-hatchling-1.14.0/lib/python3.10/site-packages/hatchling/metadata/core.py", line 1325, in validate_fields
    getattr(self, attribute)
  File "/gnu/store/iafxd40mzizd2kndvla2inmkmjhnygrr-python-hatchling-1.14.0/lib/python3.10/site-packages/hatchling/metadata/core.py", line 978, in classifiers
    raise ValueError(message)
ValueError: Unknown classifier in field `project.classifiers`: Programming Language :: Python :: 3.13

I believe this is due to python-hatchling being a little out of date. I updated python-hatchling, however this requires a more recent version of python-packaging. I see that the current package uses python-packaging-bootstrap, which cannot be updated without creating a circular dependency, shown below:

gnu/packages/python.scm:1171:4: error: [email-masked]: dependency cycle detected:
  [email-masked] -> [email-masked] -> [email-masked] -> [email-masked] -> [email-masked]

To resolve this, my plan was to change that dependency to python-packaging and update that package's version. However, when I try to add  "#:use-module (gnu packages python-xyz)" like so:

(define-module (gnu packages python-build)
  #:use-module (gnu packages)
  #:use-module (gnu packages python-xyz)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix build-system python)
  #:use-module (guix build-system pyproject)
  #:use-module (guix gexp)
  #:use-module (guix download)
  #:use-module (guix git-download)
  #:use-module (guix packages))

I receive the following error:

ice-9/eval.scm:293:34: error: python-setuptools: unbound variable
hint: Did you forget a `use-modules' form?

Does anyone have any insight on what is happening here and if I am even on the right track to begin with?

Best,
Spencer