setuptools icon indicating copy to clipboard operation
setuptools copied to clipboard

[BUG] dynamic attr fails if attribute name turns out to be empty string

Open RonnyPfannschmidt opened this issue 2 years ago • 2 comments

setuptools version

current

Python version

3.11

OS

linux

Additional environment information

No response

Description

migrating setuptools_scm to a better config setup, i misstyed the attr


[build-system]
build-backend = "_own_version_helper"
backend-path = ["."]
requires = [
  "setuptools",
]

[tool.setuptools.dynamic]
version = { attr = "_own_version_helper."} 

resulted in

         ...
        File "/home/ronny/Projects/pypa/setuptools_scm/_own_version_helper.py", line 63, in __getattr__
          raise AttributeError(name)
      AttributeError

Expected behavior

raising a error about the empty attribute name teling where its from

How to Reproduce

gh repo clone RonnyPfannschmidt/reproduce-setuptools-dynamic-attrgh repo clone RonnyPfannschmidt/reproduce-setuptools-dynamic-attr 
cd reproduce-setuptools-dynamic-attr
virtualenv venv
. venv/bin/activate
pip install build
python -m build 

### Output

```console
 $  python -m build
* Creating venv isolated environment...
* Installing packages in isolated environment... (setuptools)
* Getting build dependencies for sdist...
/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/config/pyprojecttoml.py:66: _BetaConfiguration: Support for `[tool.setuptools]` in `pyproject.toml` is still *beta*.
  config = read_configuration(filepath, True, ignore_option_errors, dist)
No `packages` or `py_modules` configuration, performing automatic discovery.
`flat-layout` detected -- analysing .
discovered packages -- []
discovered py_modules -- []
Traceback (most recent call last):
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/config/expand.py", line 81, in __getattr__
    return next(
StopIteration

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/config/expand.py", line 191, in read_attr
    return getattr(StaticModule(module_name, spec), attr_name)
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/config/expand.py", line 87, in __getattr__
    raise AttributeError(f"{self.name} has no attribute {attr}") from e
AttributeError: _own_version_helper has no attribute 

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ronny/Projects/pypa/reproduce-setuptools-dynamic-attr/venv/lib/python3.8/site-packages/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
    main()
  File "/home/ronny/Projects/pypa/reproduce-setuptools-dynamic-attr/venv/lib/python3.8/site-packages/pyproject_hooks/_in_process/_in_process.py", line 335, in main
    json_out['return_val'] = hook(**hook_input['kwargs'])
  File "/home/ronny/Projects/pypa/reproduce-setuptools-dynamic-attr/venv/lib/python3.8/site-packages/pyproject_hooks/_in_process/_in_process.py", line 287, in get_requires_for_build_sdist
    return hook(config_settings)
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/build_meta.py", line 344, in get_requires_for_build_sdist
    return self._get_build_requires(config_settings, requirements=[])
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/build_meta.py", line 323, in _get_build_requires
    self.run_setup()
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/build_meta.py", line 338, in run_setup
    exec(code, locals())
  File "<string>", line 1, in <module>
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/__init__.py", line 107, in setup
    return distutils.core.setup(**attrs)
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/_distutils/core.py", line 159, in setup
    dist.parse_config_files()
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/dist.py", line 908, in parse_config_files
    pyprojecttoml.apply_configuration(self, filename, ignore_option_errors)
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/config/pyprojecttoml.py", line 66, in apply_configuration
    config = read_configuration(filepath, True, ignore_option_errors, dist)
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/config/pyprojecttoml.py", line 143, in read_configuration
    return expand_configuration(asdict, root_dir, ignore_option_errors, dist)
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/config/pyprojecttoml.py", line 198, in expand_configuration
    return _ConfigExpander(config, root_dir, ignore_option_errors, dist).expand()
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/config/pyprojecttoml.py", line 246, in expand
    self._expand_all_dynamic(dist, package_dir)
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/config/pyprojecttoml.py", line 291, in _expand_all_dynamic
    version=self._obtain_version(dist, package_dir),
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/config/pyprojecttoml.py", line 340, in _obtain_version
    return _expand.version(self._obtain(dist, "version", package_dir))
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/config/pyprojecttoml.py", line 329, in _obtain
    return self._expand_directive(
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/config/pyprojecttoml.py", line 323, in _expand_directive
    return _expand.read_attr(directive["attr"], package_dir, root_dir)
  File "/tmp/build-env-cdmwgvcc/lib64/python3.8/site-packages/setuptools/config/expand.py", line 195, in read_attr
    return getattr(module, attr_name)
  File "/home/ronny/Projects/pypa/reproduce-setuptools-dynamic-attr/_own_version_helper.py", line 14, in __getattr__
    raise AttributeError(name)
AttributeError

RonnyPfannschmidt avatar May 18 '23 05:05 RonnyPfannschmidt

@abravalheri can i assume this is fixed by the upstream bugfix?

RonnyPfannschmidt avatar Jan 08 '24 11:01 RonnyPfannschmidt

I have to check if I already recompiled the files.

abravalheri avatar Jan 08 '24 11:01 abravalheri