pypa / pypa/distutils

[BUG] Curly brackets in pathname on VMware virtualenv mess up build process

Open
#281 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug help wanted
Dominant language
Python
Stars
59
Forks
94
PR merge metrics
No merged PRs in 30d

Description

setuptools version

setuptools==69.0.1 (also with the newest 69.0.2)

Python version

Python 3.11

OS

Windows 11 x64 on VM

Additional environment information

No response

Description

When using python -m build on a VMware virtual machine the f-string solving is caught off guard since the path contains curly brackets: "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\[...]". I think we can agree that this is an improper and inconvenient pathname, but I wondered if it can be solved in build anyway.

Expected behavior

successfully build the package, just like it happens on a non-virtual machine.

How to Reproduce

python -m build

Output
Traceback (most recent call last):
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\_distutils\util.py", line 212, in subst_vars
    return _subst_compat(s).format_map(lookup)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: '45c63495-0000-0000-0000-100000000000'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\veenstra\Anaconda3\envs\dfm_tools_py311\Lib\site-packages\pyproject_hooks\_in_process\_in_process.py", line 353, in <module>
    main()
  File "C:\Users\veenstra\Anaconda3\envs\dfm_tools_py311\Lib\site-packages\pyproject_hooks\_in_process\_in_process.py", line 335, in main
    json_out['return_val'] = hook(**hook_input['kwargs'])
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\veenstra\Anaconda3\envs\dfm_tools_py311\Lib\site-packages\pyproject_hooks\_in_process\_in_process.py", line 251, in build_wheel
    return _build_backend().build_wheel(wheel_directory, config_settings,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\build_meta.py", line 404, in build_wheel
    return self._build_with_temp_dir(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\build_meta.py", line 389, in _build_with_temp_dir
    self.run_setup()
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\build_meta.py", line 311, in run_setup
    exec(code, locals())
  File "<string>", line 1, in <module>
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\__init__.py", line 103, in setup
    return distutils.core.setup(**attrs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\_distutils\core.py", line 185, in setup
    return run_commands(dist)
           ^^^^^^^^^^^^^^^^^^
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\_distutils\core.py", line 201, in run_commands
    dist.run_commands()
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\_distutils\dist.py", line 969, in run_commands
    self.run_command(cmd)
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\dist.py", line 963, in run_command
    super().run_command(command)
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command
    cmd_obj.run()
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\wheel\bdist_wheel.py", line 404, in run
    self.run_command("install")
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\_distutils\cmd.py", line 318, in run_command
    self.distribution.run_command(command)
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\dist.py", line 963, in run_command
    super().run_command(command)
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\_distutils\dist.py", line 987, in run_command
    cmd_obj.ensure_finalized()
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\_distutils\cmd.py", line 111, in ensure_finalized
    self.finalize_options()
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\command\install.py", line 55, in finalize_options
    orig.install.finalize_options(self)
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\_distutils\command\install.py", line 439, in finalize_options
    self.expand_basedirs()
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\_distutils\command\install.py", line 619, in expand_basedirs
    self._expand_attrs(['install_base', 'install_platbase', 'root'])
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\_distutils\command\install.py", line 613, in _expand_attrs
    val = subst_vars(val, self.config_vars)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\SnapVolumesTemp\MountPoints\{45c63495-0000-0000-0000-100000000000}\{79DE0690-9470-4166-B9EE-4548DC416BBD}\SVROOT\Users\veenstra\AppData\Local\Temp\build-env-zvi13qdy\Lib\site-packages\setuptools\_distutils\util.py", line 214, in subst_vars
    raise ValueError(f"invalid variable {var}")
ValueError: invalid variable '45c63495-0000-0000-0000-100000000000'

ERROR Backend subprocess exited when trying to invoke build_wheel

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with subst_vars in setuptools/_distutils/util.py, where the traceback shows the pathname is processed by format_map. Reproduce with python -m build using a Windows path containing curly brackets, then verify that the package builds successfully without treating the pathname contents as a variable.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
build-system
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.