Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] 'MinimalDistribution' object has no attribute 'set_defaults' #3743

Closed
mweinelt opened this issue Jan 2, 2023 · 3 comments
Closed

[BUG] 'MinimalDistribution' object has no attribute 'set_defaults' #3743

mweinelt opened this issue Jan 2, 2023 · 3 comments
Labels

Comments

@mweinelt
Copy link

mweinelt commented Jan 2, 2023

setuptools version

setuptools>=65.6.0

Python version

3.10.9

OS

NixOS Unstable (Linux 6.1.2)

Additional environment information

build==0.9.0
packaging==22.0
pep517==0.13.0
tomli==2.0.1

Description

Trying to build clevercsv I run into the following exception.

Traceback (most recent call last):
  File "/build/source/nix_run_setup", line 8, in <module>
    exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\\r\\n', '\\n'), __file__, 'exec'))
  File "setup.py", line 99, in <module>
    setup(
  File "/nix/store/rchyyrj7fj8rrjmj11pd3d9p7cb9ss1h-python3.10-setuptools-65.6.3/lib/python3.10/site-packages/setuptools/__init__.py", line 86, in setup
    _install_setup_requires(attrs)
  File "/nix/store/rchyyrj7fj8rrjmj11pd3d9p7cb9ss1h-python3.10-setuptools-65.6.3/lib/python3.10/site-packages/setuptools/__init__.py", line 75, in _install_setup_requires
    dist = MinimalDistribution(attrs)
  File "/nix/store/rchyyrj7fj8rrjmj11pd3d9p7cb9ss1h-python3.10-setuptools-65.6.3/lib/python3.10/site-packages/setuptools/__init__.py", line 59, in __init__
    self.set_defaults._disable()
AttributeError: 'MinimalDistribution' object has no attribute 'set_defaults'

I bisected this problem to a merge of distutils that first appeared in 65.6.0:

9b8a6ef60b2b490bcf60b9dd7f0d43d46f49e489 is the first bad commit
commit 9b8a6ef60b2b490bcf60b9dd7f0d43d46f49e489
Merge: a0e8e53c e0787fad
Author: Jason R. Coombs <jaraco@jaraco.com>
Date:   Sun Nov 13 14:37:35 2022 -0500

    Merge https://github.com/pypa/distutils into distutils-e0787fa

 setuptools/_distutils/README                       |  11 --
 setuptools/_distutils/__init__.py                  |  12 +-
 setuptools/_distutils/_collections.py              | 138 +++++++++++++++++++++
 setuptools/_distutils/_log.py                      |   4 +
 setuptools/_distutils/_msvccompiler.py             |   8 +-
 setuptools/_distutils/archive_util.py              |   8 +-
 setuptools/_distutils/bcppcompiler.py              |  12 +-
 setuptools/_distutils/ccompiler.py                 |  14 +--
 setuptools/_distutils/cmd.py                       |  19 ++-
 setuptools/_distutils/command/bdist.py             |   8 +-
 setuptools/_distutils/command/bdist_dumb.py        |  12 +-
 setuptools/_distutils/command/bdist_rpm.py         |  12 +-
 setuptools/_distutils/command/build.py             |   8 +-
 setuptools/_distutils/command/build_clib.py        |  12 +-
 setuptools/_distutils/command/build_ext.py         |  34 ++---
 setuptools/_distutils/command/build_py.py          |  12 +-
 setuptools/_distutils/command/build_scripts.py     |   8 +-
 setuptools/_distutils/command/check.py             |   4 +-
 setuptools/_distutils/command/clean.py             |   8 +-
 setuptools/_distutils/command/config.py            |  18 +--
 setuptools/_distutils/command/install.py           |  20 +--
 setuptools/_distutils/command/install_data.py      |   4 +-
 setuptools/_distutils/command/install_egg_info.py  |   5 +-
 setuptools/_distutils/command/install_headers.py   |   2 +-
 setuptools/_distutils/command/install_lib.py       |   6 +-
 setuptools/_distutils/command/install_scripts.py   |   4 +-
 setuptools/_distutils/command/register.py          |  18 +--
 setuptools/_distutils/command/sdist.py             |  20 +--
 setuptools/_distutils/command/upload.py            |  20 +--
 setuptools/_distutils/config.py                    |   2 +-
 setuptools/_distutils/core.py                      |  12 +-
 setuptools/_distutils/cygwinccompiler.py           |  82 ++++++------
 setuptools/_distutils/dep_util.py                  |   2 +-
 setuptools/_distutils/dir_util.py                  |   6 +-
 setuptools/_distutils/dist.py                      |  17 +--
 setuptools/_distutils/fancy_getopt.py              |   2 +-
 setuptools/_distutils/file_util.py                 |   4 +-
 setuptools/_distutils/filelist.py                  |  22 ++--
 setuptools/_distutils/log.py                       |  78 +++---------
 setuptools/_distutils/msvc9compiler.py             |   8 +-
 setuptools/_distutils/msvccompiler.py              |   6 +-
 setuptools/_distutils/spawn.py                     |   6 +-
 setuptools/_distutils/sysconfig.py                 |   8 +-
 setuptools/_distutils/tests/support.py             |  28 +----
 setuptools/_distutils/tests/test_archive_util.py   |   2 +-
 setuptools/_distutils/tests/test_bdist_dumb.py     |   1 -
 setuptools/_distutils/tests/test_bdist_rpm.py      |   1 -
 setuptools/_distutils/tests/test_build.py          |   2 +-
 setuptools/_distutils/tests/test_build_clib.py     |   2 +-
 setuptools/_distutils/tests/test_build_ext.py      |   3 +-
 setuptools/_distutils/tests/test_build_py.py       |  22 ++--
 setuptools/_distutils/tests/test_build_scripts.py  |   2 +-
 setuptools/_distutils/tests/test_check.py          |   2 +-
 setuptools/_distutils/tests/test_clean.py          |   2 +-
 setuptools/_distutils/tests/test_cmd.py            |  21 +---
 setuptools/_distutils/tests/test_config.py         |   6 +-
 setuptools/_distutils/tests/test_config_cmd.py     |   4 +-
 setuptools/_distutils/tests/test_core.py           |  21 +---
 setuptools/_distutils/tests/test_dir_util.py       |  33 ++---
 setuptools/_distutils/tests/test_dist.py           |  45 +++----
 setuptools/_distutils/tests/test_file_util.py      |  20 +--
 setuptools/_distutils/tests/test_filelist.py       |  75 ++++++-----
 setuptools/_distutils/tests/test_install.py        |  18 +--
 setuptools/_distutils/tests/test_install_data.py   |   1 -
 .../_distutils/tests/test_install_headers.py       |   1 -
 setuptools/_distutils/tests/test_install_lib.py    |   5 +-
 .../_distutils/tests/test_install_scripts.py       |   2 +-
 setuptools/_distutils/tests/test_log.py            |  53 ++------
 setuptools/_distutils/tests/test_register.py       |  11 +-
 setuptools/_distutils/tests/test_sdist.py          |  44 +++----
 setuptools/_distutils/tests/test_spawn.py          |   2 +-
 setuptools/_distutils/tests/test_upload.py         |  15 ++-
 setuptools/_distutils/unixccompiler.py             |  10 +-
 setuptools/_distutils/util.py                      |   8 +-
 setuptools/_distutils/versionpredicate.py          |  10 +-
 75 files changed, 557 insertions(+), 631 deletions(-)
 delete mode 100644 setuptools/_distutils/README
 create mode 100644 setuptools/_distutils/_log.py

Also reported at clevercsv in alan-turing-institute/CleverCSV#77.

Expected behavior

The build should not fail with an exception.

How to Reproduce

git clone https://github.com/alan-turing-institute/CleverCSV clevercsv
cd clevercsv
python -m venv venv
source venv/bin/activate
pip install build wheel "setuptools>=65.6.0" # breaks!
python -m build --no-isolation
pip install "setuptools<65.6.0" # works!
python -m build --no-isolation

Output

Cloning into 'clevercsv'...
remote: Enumerating objects: 3696, done.
remote: Counting objects: 100% (682/682), done.
remote: Compressing objects: 100% (297/297), done.
remote: Total 3696 (delta 400), reused 579 (delta 370), pack-reused 3014
Receiving objects: 100% (3696/3696), 2.38 MiB | 9.95 MiB/s, done.
Resolving deltas: 100% (2413/2413), done.
Collecting build
  Using cached build-0.9.0-py3-none-any.whl (17 kB)
Collecting wheel
  Using cached wheel-0.38.4-py3-none-any.whl (36 kB)
Collecting setuptools>=65.6.0
  Using cached setuptools-65.6.3-py3-none-any.whl (1.2 MB)
Collecting packaging>=19.0
  Using cached packaging-22.0-py3-none-any.whl (42 kB)
Collecting tomli>=1.0.0
  Using cached tomli-2.0.1-py3-none-any.whl (12 kB)
Collecting pep517>=0.9.1
  Using cached pep517-0.13.0-py3-none-any.whl (18 kB)
Installing collected packages: wheel, tomli, setuptools, packaging, pep517, build
  Attempting uninstall: setuptools
    Found existing installation: setuptools 65.5.0
    Uninstalling setuptools-65.5.0:
      Successfully uninstalled setuptools-65.5.0
Successfully installed build-0.9.0 packaging-22.0 pep517-0.13.0 setuptools-65.6.3 tomli-2.0.1 wheel-0.38.4
* Getting build dependencies for sdist...
Traceback (most recent call last):
  File "/tmp/clevercsv/venv/lib/python3.10/site-packages/pep517/in_process/_in_process.py", line 351, in <module>
    main()
  File "/tmp/clevercsv/venv/lib/python3.10/site-packages/pep517/in_process/_in_process.py", line 333, in main
    json_out['return_val'] = hook(**hook_input['kwargs'])
  File "/tmp/clevercsv/venv/lib/python3.10/site-packages/pep517/in_process/_in_process.py", line 285, in get_requires_for_build_sdist
    return hook(config_settings)
  File "/tmp/clevercsv/venv/lib/python3.10/site-packages/setuptools/build_meta.py", line 341, in get_requires_for_build_sdist
    return self._get_build_requires(config_settings, requirements=[])
  File "/tmp/clevercsv/venv/lib/python3.10/site-packages/setuptools/build_meta.py", line 320, in _get_build_requires
    self.run_setup()
  File "/tmp/clevercsv/venv/lib/python3.10/site-packages/setuptools/build_meta.py", line 484, in run_setup
    super(_BuildMetaLegacyBackend,
  File "/tmp/clevercsv/venv/lib/python3.10/site-packages/setuptools/build_meta.py", line 335, in run_setup
    exec(code, locals())
  File "<string>", line 99, in <module>
  File "/tmp/clevercsv/venv/lib/python3.10/site-packages/setuptools/__init__.py", line 86, in setup
    _install_setup_requires(attrs)
  File "/tmp/clevercsv/venv/lib/python3.10/site-packages/setuptools/__init__.py", line 75, in _install_setup_requires
    dist = MinimalDistribution(attrs)
  File "/tmp/clevercsv/venv/lib/python3.10/site-packages/setuptools/__init__.py", line 59, in __init__
    self.set_defaults._disable()
AttributeError: 'MinimalDistribution' object has no attribute 'set_defaults'

ERROR Backend subprocess exited when trying to invoke get_requires_for_build_sdist
Collecting setuptools<65.6.0
  Using cached setuptools-65.5.1-py3-none-any.whl (1.2 MB)
Installing collected packages: setuptools
  Attempting uninstall: setuptools
    Found existing installation: setuptools 65.6.3
    Uninstalling setuptools-65.6.3:
      Successfully uninstalled setuptools-65.6.3
Successfully installed setuptools-65.5.1
* Getting build dependencies for sdist...
running egg_info
creating clevercsv.egg-info
writing clevercsv.egg-info/PKG-INFO
writing dependency_links to clevercsv.egg-info/dependency_links.txt
writing entry points to clevercsv.egg-info/entry_points.txt
writing requirements to clevercsv.egg-info/requires.txt
writing top-level names to clevercsv.egg-info/top_level.txt
writing manifest file 'clevercsv.egg-info/SOURCES.txt'
reading manifest file 'clevercsv.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'requirements.txt'
warning: no files found matching '*' under directory 'bin'
no previously-included directories found matching 'tests/test_integration'
warning: no previously-included files found matching 'Makefile'
warning: no previously-included files found matching '.gitignore'
warning: no previously-included files found matching '.travis.yml'
warning: no previously-included files found matching '.readthedocs.yml'
warning: no previously-included files found matching 'make_release.py'
warning: no previously-included files found matching 'cgrep'
warning: no previously-included files found matching 'vgrep'
no previously-included directories found matching 'notes'
no previously-included directories found matching 'auxiliary'
adding license file 'LICENSE'
writing manifest file 'clevercsv.egg-info/SOURCES.txt'
* Building sdist...
running sdist
running egg_info
writing clevercsv.egg-info/PKG-INFO
writing dependency_links to clevercsv.egg-info/dependency_links.txt
writing entry points to clevercsv.egg-info/entry_points.txt
writing requirements to clevercsv.egg-info/requires.txt
writing top-level names to clevercsv.egg-info/top_level.txt
reading manifest file 'clevercsv.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'requirements.txt'
warning: no files found matching '*' under directory 'bin'
no previously-included directories found matching 'tests/test_integration'
warning: no previously-included files found matching 'Makefile'
warning: no previously-included files found matching '.gitignore'
warning: no previously-included files found matching '.travis.yml'
warning: no previously-included files found matching '.readthedocs.yml'
warning: no previously-included files found matching 'make_release.py'
warning: no previously-included files found matching 'cgrep'
warning: no previously-included files found matching 'vgrep'
no previously-included directories found matching 'notes'
no previously-included directories found matching 'auxiliary'
adding license file 'LICENSE'
writing manifest file 'clevercsv.egg-info/SOURCES.txt'
running check
creating clevercsv-0.7.4
creating clevercsv-0.7.4/clevercsv
creating clevercsv-0.7.4/clevercsv.egg-info
creating clevercsv-0.7.4/clevercsv/console
creating clevercsv-0.7.4/clevercsv/console/commands
creating clevercsv-0.7.4/man
creating clevercsv-0.7.4/src
creating clevercsv-0.7.4/tests
creating clevercsv-0.7.4/tests/test_unit
copying files to clevercsv-0.7.4...
copying CHANGELOG.md -> clevercsv-0.7.4
copying LICENSE -> clevercsv-0.7.4
copying MANIFEST.in -> clevercsv-0.7.4
copying README.md -> clevercsv-0.7.4
copying pyproject.toml -> clevercsv-0.7.4
copying setup.py -> clevercsv-0.7.4
copying clevercsv/__init__.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/__main__.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/__version__.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/_optional.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/break_ties.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/consistency.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/cparser_util.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/detect.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/detect_pattern.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/detect_type.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/dialect.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/dict_read_write.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/encoding.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/escape.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/exceptions.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/normal_form.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/potential_dialects.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/read.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/utils.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/wrappers.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/write.py -> clevercsv-0.7.4/clevercsv
copying clevercsv.egg-info/PKG-INFO -> clevercsv-0.7.4/clevercsv.egg-info
copying clevercsv.egg-info/SOURCES.txt -> clevercsv-0.7.4/clevercsv.egg-info
copying clevercsv.egg-info/dependency_links.txt -> clevercsv-0.7.4/clevercsv.egg-info
copying clevercsv.egg-info/entry_points.txt -> clevercsv-0.7.4/clevercsv.egg-info
copying clevercsv.egg-info/requires.txt -> clevercsv-0.7.4/clevercsv.egg-info
copying clevercsv.egg-info/top_level.txt -> clevercsv-0.7.4/clevercsv.egg-info
copying clevercsv/console/__init__.py -> clevercsv-0.7.4/clevercsv/console
copying clevercsv/console/application.py -> clevercsv-0.7.4/clevercsv/console
copying clevercsv/console/commands/__init__.py -> clevercsv-0.7.4/clevercsv/console/commands
copying clevercsv/console/commands/_docs.py -> clevercsv-0.7.4/clevercsv/console/commands
copying clevercsv/console/commands/_utils.py -> clevercsv-0.7.4/clevercsv/console/commands
copying clevercsv/console/commands/code.py -> clevercsv-0.7.4/clevercsv/console/commands
copying clevercsv/console/commands/detect.py -> clevercsv-0.7.4/clevercsv/console/commands
copying clevercsv/console/commands/explore.py -> clevercsv-0.7.4/clevercsv/console/commands
copying clevercsv/console/commands/standardize.py -> clevercsv-0.7.4/clevercsv/console/commands
copying clevercsv/console/commands/view.py -> clevercsv-0.7.4/clevercsv/console/commands
copying man/clevercsv-code.1 -> clevercsv-0.7.4/man
copying man/clevercsv-detect.1 -> clevercsv-0.7.4/man
copying man/clevercsv-explore.1 -> clevercsv-0.7.4/man
copying man/clevercsv-help.1 -> clevercsv-0.7.4/man
copying man/clevercsv-standardize.1 -> clevercsv-0.7.4/man
copying man/clevercsv-view.1 -> clevercsv-0.7.4/man
copying man/clevercsv.1 -> clevercsv-0.7.4/man
copying src/abstraction.c -> clevercsv-0.7.4/src
copying src/cparser.c -> clevercsv-0.7.4/src
copying tests/test_unit/test_consistency.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_console.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_cparser.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_detect.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_detect_pattern.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_detect_type.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_dict.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_encoding.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_fuzzing.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_normal_forms.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_potential_dialects.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_reader.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_wrappers.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_write.py -> clevercsv-0.7.4/tests/test_unit
Writing clevercsv-0.7.4/setup.cfg
Creating tar archive
removing 'clevercsv-0.7.4' (and everything under it)
* Building wheel from sdist
* Getting build dependencies for wheel...
running egg_info
writing clevercsv.egg-info/PKG-INFO
writing dependency_links to clevercsv.egg-info/dependency_links.txt
writing entry points to clevercsv.egg-info/entry_points.txt
writing requirements to clevercsv.egg-info/requires.txt
writing top-level names to clevercsv.egg-info/top_level.txt
reading manifest file 'clevercsv.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'requirements.txt'
warning: no files found matching '*' under directory 'bin'
no previously-included directories found matching 'tests/test_integration'
warning: no previously-included files found matching 'Makefile'
warning: no previously-included files found matching '.gitignore'
warning: no previously-included files found matching '.travis.yml'
warning: no previously-included files found matching '.readthedocs.yml'
warning: no previously-included files found matching 'make_release.py'
warning: no previously-included files found matching 'cgrep'
warning: no previously-included files found matching 'vgrep'
no previously-included directories found matching 'notes'
no previously-included directories found matching 'auxiliary'
adding license file 'LICENSE'
writing manifest file 'clevercsv.egg-info/SOURCES.txt'
* Building wheel...
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-cpython-310
creating build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/write.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/wrappers.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/utils.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/read.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/potential_dialects.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/normal_form.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/exceptions.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/escape.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/encoding.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/dict_read_write.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/dialect.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/detect_type.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/detect_pattern.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/detect.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/cparser_util.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/consistency.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/break_ties.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/_optional.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/__version__.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/__main__.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/__init__.py -> build/lib.linux-x86_64-cpython-310/clevercsv
creating build/lib.linux-x86_64-cpython-310/clevercsv/console
copying clevercsv/console/application.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console
copying clevercsv/console/__init__.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console
creating build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
copying clevercsv/console/commands/view.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
copying clevercsv/console/commands/standardize.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
copying clevercsv/console/commands/explore.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
copying clevercsv/console/commands/detect.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
copying clevercsv/console/commands/code.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
copying clevercsv/console/commands/_utils.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
copying clevercsv/console/commands/_docs.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
copying clevercsv/console/commands/__init__.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
running egg_info
writing clevercsv.egg-info/PKG-INFO
writing dependency_links to clevercsv.egg-info/dependency_links.txt
writing entry points to clevercsv.egg-info/entry_points.txt
writing requirements to clevercsv.egg-info/requires.txt
writing top-level names to clevercsv.egg-info/top_level.txt
reading manifest file 'clevercsv.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'requirements.txt'
warning: no files found matching '*' under directory 'bin'
no previously-included directories found matching 'tests/test_integration'
warning: no previously-included files found matching 'Makefile'
warning: no previously-included files found matching '.gitignore'
warning: no previously-included files found matching '.travis.yml'
warning: no previously-included files found matching '.readthedocs.yml'
warning: no previously-included files found matching 'make_release.py'
warning: no previously-included files found matching 'cgrep'
warning: no previously-included files found matching 'vgrep'
no previously-included directories found matching 'notes'
no previously-included directories found matching 'auxiliary'
adding license file 'LICENSE'
writing manifest file 'clevercsv.egg-info/SOURCES.txt'
running build_ext
building 'clevercsv.cparser' extension
creating build/temp.linux-x86_64-cpython-310
creating build/temp.linux-x86_64-cpython-310/src
gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -I/nix/store/vamwsqfpvgfwnc7ksa8k4aa52my5r1bq-libxcrypt-4.4.33/include -fPIC -I/tmp/clevercsv/venv/include -I/nix/store/al6g1zbk8li6p8mcyp0h60d08jaahf8c-python3-3.10.9/include/python3.10 -c src/cparser.c -o build/temp.linux-x86_64-cpython-310/src/cparser.o
gcc -shared -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-zlib-1.2.13/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-bzip2-1.0.8/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-expat-2.5.0/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-xz-5.2.9/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-libffi-3.4.4/lib -L/nix/store/vamwsqfpvgfwnc7ksa8k4aa52my5r1bq-libxcrypt-4.4.33/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-gdbm-1.23/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-sqlite-3.40.0/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-readline-8.1p2/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-ncurses-6.3-p20220507/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-openssl-3.0.7/lib -L/nix/store/11mrj0y0k09j7pzcr78iy5fxgcmzjxq6-tzdata-2022g/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-zlib-1.2.13/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-bzip2-1.0.8/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-expat-2.5.0/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-xz-5.2.9/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-libffi-3.4.4/lib -L/nix/store/vamwsqfpvgfwnc7ksa8k4aa52my5r1bq-libxcrypt-4.4.33/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-gdbm-1.23/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-sqlite-3.40.0/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-readline-8.1p2/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-ncurses-6.3-p20220507/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-openssl-3.0.7/lib -L/nix/store/11mrj0y0k09j7pzcr78iy5fxgcmzjxq6-tzdata-2022g/lib build/temp.linux-x86_64-cpython-310/src/cparser.o -L/nix/store/al6g1zbk8li6p8mcyp0h60d08jaahf8c-python3-3.10.9/lib -o build/lib.linux-x86_64-cpython-310/clevercsv/cparser.cpython-310-x86_64-linux-gnu.so
building 'clevercsv.cabstraction' extension
gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -I/nix/store/vamwsqfpvgfwnc7ksa8k4aa52my5r1bq-libxcrypt-4.4.33/include -fPIC -I/tmp/clevercsv/venv/include -I/nix/store/al6g1zbk8li6p8mcyp0h60d08jaahf8c-python3-3.10.9/include/python3.10 -c src/abstraction.c -o build/temp.linux-x86_64-cpython-310/src/abstraction.o
gcc -shared -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-zlib-1.2.13/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-bzip2-1.0.8/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-expat-2.5.0/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-xz-5.2.9/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-libffi-3.4.4/lib -L/nix/store/vamwsqfpvgfwnc7ksa8k4aa52my5r1bq-libxcrypt-4.4.33/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-gdbm-1.23/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-sqlite-3.40.0/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-readline-8.1p2/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-ncurses-6.3-p20220507/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-openssl-3.0.7/lib -L/nix/store/11mrj0y0k09j7pzcr78iy5fxgcmzjxq6-tzdata-2022g/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-zlib-1.2.13/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-bzip2-1.0.8/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-expat-2.5.0/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-xz-5.2.9/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-libffi-3.4.4/lib -L/nix/store/vamwsqfpvgfwnc7ksa8k4aa52my5r1bq-libxcrypt-4.4.33/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-gdbm-1.23/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-sqlite-3.40.0/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-readline-8.1p2/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-ncurses-6.3-p20220507/lib -L/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-openssl-3.0.7/lib -L/nix/store/11mrj0y0k09j7pzcr78iy5fxgcmzjxq6-tzdata-2022g/lib build/temp.linux-x86_64-cpython-310/src/abstraction.o -L/nix/store/al6g1zbk8li6p8mcyp0h60d08jaahf8c-python3-3.10.9/lib -o build/lib.linux-x86_64-cpython-310/clevercsv/cabstraction.cpython-310-x86_64-linux-gnu.so
installing to build/bdist.linux-x86_64/wheel
running install
running install_lib
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/wheel
creating build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/cabstraction.cpython-310-x86_64-linux-gnu.so -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/cparser.cpython-310-x86_64-linux-gnu.so -> build/bdist.linux-x86_64/wheel/clevercsv
creating build/bdist.linux-x86_64/wheel/clevercsv/console
creating build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/commands/__init__.py -> build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/commands/_docs.py -> build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/commands/_utils.py -> build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/commands/code.py -> build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/commands/detect.py -> build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/commands/explore.py -> build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/commands/standardize.py -> build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/commands/view.py -> build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/__init__.py -> build/bdist.linux-x86_64/wheel/clevercsv/console
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/application.py -> build/bdist.linux-x86_64/wheel/clevercsv/console
copying build/lib.linux-x86_64-cpython-310/clevercsv/__init__.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/__main__.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/__version__.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/_optional.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/break_ties.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/consistency.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/cparser_util.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/detect.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/detect_pattern.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/detect_type.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/dialect.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/dict_read_write.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/encoding.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/escape.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/exceptions.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/normal_form.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/potential_dialects.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/read.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/utils.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/wrappers.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/write.py -> build/bdist.linux-x86_64/wheel/clevercsv
running install_data
creating build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data
creating build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data
creating build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man
creating build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man/man1
copying man/clevercsv.1 -> build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man/man1
copying man/clevercsv-view.1 -> build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man/man1
copying man/clevercsv-standardize.1 -> build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man/man1
copying man/clevercsv-help.1 -> build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man/man1
copying man/clevercsv-explore.1 -> build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man/man1
copying man/clevercsv-detect.1 -> build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man/man1
copying man/clevercsv-code.1 -> build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man/man1
running install_egg_info
Copying clevercsv.egg-info to build/bdist.linux-x86_64/wheel/clevercsv-0.7.4-py3.10.egg-info
running install_scripts
creating build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.dist-info/WHEEL
creating '/tmp/clevercsv/dist/tmpa29i1ebc/clevercsv-0.7.4-cp310-cp310-linux_x86_64.whl' and adding 'build/bdist.linux-x86_64/wheel' to it
adding 'clevercsv/__init__.py'
adding 'clevercsv/__main__.py'
adding 'clevercsv/__version__.py'
adding 'clevercsv/_optional.py'
adding 'clevercsv/break_ties.py'
adding 'clevercsv/cabstraction.cpython-310-x86_64-linux-gnu.so'
adding 'clevercsv/consistency.py'
adding 'clevercsv/cparser.cpython-310-x86_64-linux-gnu.so'
adding 'clevercsv/cparser_util.py'
adding 'clevercsv/detect.py'
adding 'clevercsv/detect_pattern.py'
adding 'clevercsv/detect_type.py'
adding 'clevercsv/dialect.py'
adding 'clevercsv/dict_read_write.py'
adding 'clevercsv/encoding.py'
adding 'clevercsv/escape.py'
adding 'clevercsv/exceptions.py'
adding 'clevercsv/normal_form.py'
adding 'clevercsv/potential_dialects.py'
adding 'clevercsv/read.py'
adding 'clevercsv/utils.py'
adding 'clevercsv/wrappers.py'
adding 'clevercsv/write.py'
adding 'clevercsv/console/__init__.py'
adding 'clevercsv/console/application.py'
adding 'clevercsv/console/commands/__init__.py'
adding 'clevercsv/console/commands/_docs.py'
adding 'clevercsv/console/commands/_utils.py'
adding 'clevercsv/console/commands/code.py'
adding 'clevercsv/console/commands/detect.py'
adding 'clevercsv/console/commands/explore.py'
adding 'clevercsv/console/commands/standardize.py'
adding 'clevercsv/console/commands/view.py'
adding 'clevercsv-0.7.4.data/data/man/man1/clevercsv-code.1'
adding 'clevercsv-0.7.4.data/data/man/man1/clevercsv-detect.1'
adding 'clevercsv-0.7.4.data/data/man/man1/clevercsv-explore.1'
adding 'clevercsv-0.7.4.data/data/man/man1/clevercsv-help.1'
adding 'clevercsv-0.7.4.data/data/man/man1/clevercsv-standardize.1'
adding 'clevercsv-0.7.4.data/data/man/man1/clevercsv-view.1'
adding 'clevercsv-0.7.4.data/data/man/man1/clevercsv.1'
adding 'clevercsv-0.7.4.dist-info/LICENSE'
adding 'clevercsv-0.7.4.dist-info/METADATA'
adding 'clevercsv-0.7.4.dist-info/WHEEL'
adding 'clevercsv-0.7.4.dist-info/entry_points.txt'
adding 'clevercsv-0.7.4.dist-info/top_level.txt'
adding 'clevercsv-0.7.4.dist-info/RECORD'
removing build/bdist.linux-x86_64/wheel
Successfully built clevercsv-0.7.4.tar.gz and clevercsv-0.7.4-cp310-cp310-linux_x86_64.whl
@mweinelt mweinelt added bug Needs Triage Issues that need to be evaluated for severity and status. labels Jan 2, 2023
@mweinelt mweinelt changed the title [BUG] MinimalDistribution' object has no attribute 'set_defaults' [BUG] 'MinimalDistribution' object has no attribute 'set_defaults' Jan 2, 2023
@abravalheri
Copy link
Contributor

abravalheri commented Jan 4, 2023

Initial technical investigation:

According to

# Note: do not use `setuptools.Distribution` directly, as
# our PEP 517 backend patch `distutils.core.Distribution`.
by the time setup() runs, distutils.core.Distribution should be patched to be setuptools.Distribution.

The fact that MinimalDistribution does not have the attribute seems to indicate that there is something wrong with the patching done in

for module in distutils.dist, distutils.core, distutils.cmd:
module.Distribution = setuptools.dist.Distribution

Apparently the patch successfully runs in

monkey.patch_all()
, but when setup is called, it is already undone... Still trying to understand what is happening here and why https://github.com/pypa/setuptools/pull/3674/files could be causing this behavior...

@abravalheri
Copy link
Contributor

abravalheri commented Jan 6, 2023

I noticed another detail while investigating. If the following change is applied to setup.py the build proceeds successfully:

--- a/setup.py
+++ b/setup.py
@@ -8,7 +8,7 @@ import os
 from setuptools import Extension
 from setuptools import find_packages
 from setuptools import setup
-from setuptools._distutils.core import Command
+from setuptools import Command

 # Package meta-data.
 AUTHOR = "Gertjan van den Burg"
evidence
> docker run --rm -it python:3.10 /bin/bash


git clone https://github.com/alan-turing-institute/CleverCSV /tmp/clevercsv
cd /tmp/clevercsv
python3 -m venv .venv
.venv/bin/pip install 'build==0.9.0' 'wheel==0.38.4' 'setuptools==65.6.3'
sed -i 's/from setuptools._distutils.core/from setuptools/g' setup.py
.venv/bin/python -m build --no-isolation
* Getting build dependencies for sdist...
running egg_info
creating clevercsv.egg-info
writing clevercsv.egg-info/PKG-INFO
writing dependency_links to clevercsv.egg-info/dependency_links.txt
writing entry points to clevercsv.egg-info/entry_points.txt
writing requirements to clevercsv.egg-info/requires.txt
writing top-level names to clevercsv.egg-info/top_level.txt
writing manifest file 'clevercsv.egg-info/SOURCES.txt'
reading manifest file 'clevercsv.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'requirements.txt'
warning: no files found matching '*' under directory 'bin'
no previously-included directories found matching 'tests/test_integration'
warning: no previously-included files found matching 'Makefile'
warning: no previously-included files found matching '.gitignore'
warning: no previously-included files found matching '.travis.yml'
warning: no previously-included files found matching '.readthedocs.yml'
warning: no previously-included files found matching 'make_release.py'
warning: no previously-included files found matching 'cgrep'
warning: no previously-included files found matching 'vgrep'
no previously-included directories found matching 'notes'
no previously-included directories found matching 'auxiliary'
adding license file 'LICENSE'
writing manifest file 'clevercsv.egg-info/SOURCES.txt'
* Building sdist...
running sdist
running egg_info
writing clevercsv.egg-info/PKG-INFO
writing dependency_links to clevercsv.egg-info/dependency_links.txt
writing entry points to clevercsv.egg-info/entry_points.txt
writing requirements to clevercsv.egg-info/requires.txt
writing top-level names to clevercsv.egg-info/top_level.txt
reading manifest file 'clevercsv.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'requirements.txt'
warning: no files found matching '*' under directory 'bin'
no previously-included directories found matching 'tests/test_integration'
warning: no previously-included files found matching 'Makefile'
warning: no previously-included files found matching '.gitignore'
warning: no previously-included files found matching '.travis.yml'
warning: no previously-included files found matching '.readthedocs.yml'
warning: no previously-included files found matching 'make_release.py'
warning: no previously-included files found matching 'cgrep'
warning: no previously-included files found matching 'vgrep'
no previously-included directories found matching 'notes'
no previously-included directories found matching 'auxiliary'
adding license file 'LICENSE'
writing manifest file 'clevercsv.egg-info/SOURCES.txt'
running check
creating clevercsv-0.7.4
creating clevercsv-0.7.4/clevercsv
creating clevercsv-0.7.4/clevercsv.egg-info
creating clevercsv-0.7.4/clevercsv/console
creating clevercsv-0.7.4/clevercsv/console/commands
creating clevercsv-0.7.4/man
creating clevercsv-0.7.4/src
creating clevercsv-0.7.4/tests
creating clevercsv-0.7.4/tests/test_unit
copying files to clevercsv-0.7.4...
copying CHANGELOG.md -> clevercsv-0.7.4
copying LICENSE -> clevercsv-0.7.4
copying MANIFEST.in -> clevercsv-0.7.4
copying README.md -> clevercsv-0.7.4
copying pyproject.toml -> clevercsv-0.7.4
copying setup.py -> clevercsv-0.7.4
copying clevercsv/__init__.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/__main__.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/__version__.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/_optional.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/break_ties.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/consistency.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/cparser_util.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/detect.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/detect_pattern.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/detect_type.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/dialect.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/dict_read_write.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/encoding.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/escape.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/exceptions.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/normal_form.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/potential_dialects.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/read.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/utils.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/wrappers.py -> clevercsv-0.7.4/clevercsv
copying clevercsv/write.py -> clevercsv-0.7.4/clevercsv
copying clevercsv.egg-info/PKG-INFO -> clevercsv-0.7.4/clevercsv.egg-info
copying clevercsv.egg-info/SOURCES.txt -> clevercsv-0.7.4/clevercsv.egg-info
copying clevercsv.egg-info/dependency_links.txt -> clevercsv-0.7.4/clevercsv.egg-info
copying clevercsv.egg-info/entry_points.txt -> clevercsv-0.7.4/clevercsv.egg-info
copying clevercsv.egg-info/requires.txt -> clevercsv-0.7.4/clevercsv.egg-info
copying clevercsv.egg-info/top_level.txt -> clevercsv-0.7.4/clevercsv.egg-info
copying clevercsv/console/__init__.py -> clevercsv-0.7.4/clevercsv/console
copying clevercsv/console/application.py -> clevercsv-0.7.4/clevercsv/console
copying clevercsv/console/commands/__init__.py -> clevercsv-0.7.4/clevercsv/console/commands
copying clevercsv/console/commands/_docs.py -> clevercsv-0.7.4/clevercsv/console/commands
copying clevercsv/console/commands/_utils.py -> clevercsv-0.7.4/clevercsv/console/commands
copying clevercsv/console/commands/code.py -> clevercsv-0.7.4/clevercsv/console/commands
copying clevercsv/console/commands/detect.py -> clevercsv-0.7.4/clevercsv/console/commands
copying clevercsv/console/commands/explore.py -> clevercsv-0.7.4/clevercsv/console/commands
copying clevercsv/console/commands/standardize.py -> clevercsv-0.7.4/clevercsv/console/commands
copying clevercsv/console/commands/view.py -> clevercsv-0.7.4/clevercsv/console/commands
copying man/clevercsv-code.1 -> clevercsv-0.7.4/man
copying man/clevercsv-detect.1 -> clevercsv-0.7.4/man
copying man/clevercsv-explore.1 -> clevercsv-0.7.4/man
copying man/clevercsv-help.1 -> clevercsv-0.7.4/man
copying man/clevercsv-standardize.1 -> clevercsv-0.7.4/man
copying man/clevercsv-view.1 -> clevercsv-0.7.4/man
copying man/clevercsv.1 -> clevercsv-0.7.4/man
copying src/abstraction.c -> clevercsv-0.7.4/src
copying src/cparser.c -> clevercsv-0.7.4/src
copying tests/test_unit/test_consistency.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_console.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_cparser.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_detect.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_detect_pattern.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_detect_type.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_dict.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_encoding.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_fuzzing.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_normal_forms.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_potential_dialects.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_reader.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_wrappers.py -> clevercsv-0.7.4/tests/test_unit
copying tests/test_unit/test_write.py -> clevercsv-0.7.4/tests/test_unit
Writing clevercsv-0.7.4/setup.cfg
Creating tar archive
removing 'clevercsv-0.7.4' (and everything under it)
* Building wheel from sdist
* Getting build dependencies for wheel...
running egg_info
writing clevercsv.egg-info/PKG-INFO
writing dependency_links to clevercsv.egg-info/dependency_links.txt
writing entry points to clevercsv.egg-info/entry_points.txt
writing requirements to clevercsv.egg-info/requires.txt
writing top-level names to clevercsv.egg-info/top_level.txt
reading manifest file 'clevercsv.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'requirements.txt'
warning: no files found matching '*' under directory 'bin'
no previously-included directories found matching 'tests/test_integration'
warning: no previously-included files found matching 'Makefile'
warning: no previously-included files found matching '.gitignore'
warning: no previously-included files found matching '.travis.yml'
warning: no previously-included files found matching '.readthedocs.yml'
warning: no previously-included files found matching 'make_release.py'
warning: no previously-included files found matching 'cgrep'
warning: no previously-included files found matching 'vgrep'
no previously-included directories found matching 'notes'
no previously-included directories found matching 'auxiliary'
adding license file 'LICENSE'
writing manifest file 'clevercsv.egg-info/SOURCES.txt'
* Building wheel...
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-cpython-310
creating build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/__main__.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/utils.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/exceptions.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/normal_form.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/_optional.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/potential_dialects.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/dialect.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/write.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/escape.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/dict_read_write.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/__version__.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/detect_pattern.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/break_ties.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/wrappers.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/detect_type.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/consistency.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/detect.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/read.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/cparser_util.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/__init__.py -> build/lib.linux-x86_64-cpython-310/clevercsv
copying clevercsv/encoding.py -> build/lib.linux-x86_64-cpython-310/clevercsv
creating build/lib.linux-x86_64-cpython-310/clevercsv/console
copying clevercsv/console/application.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console
copying clevercsv/console/__init__.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console
creating build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
copying clevercsv/console/commands/explore.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
copying clevercsv/console/commands/code.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
copying clevercsv/console/commands/_utils.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
copying clevercsv/console/commands/standardize.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
copying clevercsv/console/commands/detect.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
copying clevercsv/console/commands/_docs.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
copying clevercsv/console/commands/view.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
copying clevercsv/console/commands/__init__.py -> build/lib.linux-x86_64-cpython-310/clevercsv/console/commands
running egg_info
writing clevercsv.egg-info/PKG-INFO
writing dependency_links to clevercsv.egg-info/dependency_links.txt
writing entry points to clevercsv.egg-info/entry_points.txt
writing requirements to clevercsv.egg-info/requires.txt
writing top-level names to clevercsv.egg-info/top_level.txt
reading manifest file 'clevercsv.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'requirements.txt'
warning: no files found matching '*' under directory 'bin'
no previously-included directories found matching 'tests/test_integration'
warning: no previously-included files found matching 'Makefile'
warning: no previously-included files found matching '.gitignore'
warning: no previously-included files found matching '.travis.yml'
warning: no previously-included files found matching '.readthedocs.yml'
warning: no previously-included files found matching 'make_release.py'
warning: no previously-included files found matching 'cgrep'
warning: no previously-included files found matching 'vgrep'
no previously-included directories found matching 'notes'
no previously-included directories found matching 'auxiliary'
adding license file 'LICENSE'
writing manifest file 'clevercsv.egg-info/SOURCES.txt'
running build_ext
building 'clevercsv.cparser' extension
creating build/temp.linux-x86_64-cpython-310
creating build/temp.linux-x86_64-cpython-310/src
gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/tmp/clevercsv/.venv/include -I/usr/local/include/python3.10 -c src/cparser.c -o build/temp.linux-x86_64-cpython-310/src/cparser.o
gcc -pthread -shared build/temp.linux-x86_64-cpython-310/src/cparser.o -L/usr/local/lib -o build/lib.linux-x86_64-cpython-310/clevercsv/cparser.cpython-310-x86_64-linux-gnu.so
building 'clevercsv.cabstraction' extension
gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/tmp/clevercsv/.venv/include -I/usr/local/include/python3.10 -c src/abstraction.c -o build/temp.linux-x86_64-cpython-310/src/abstraction.o
gcc -pthread -shared build/temp.linux-x86_64-cpython-310/src/abstraction.o -L/usr/local/lib -o build/lib.linux-x86_64-cpython-310/clevercsv/cabstraction.cpython-310-x86_64-linux-gnu.so
installing to build/bdist.linux-x86_64/wheel
running install
running install_lib
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/wheel
creating build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/__main__.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/utils.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/cabstraction.cpython-310-x86_64-linux-gnu.so -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/exceptions.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/normal_form.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/_optional.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/potential_dialects.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/dialect.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/write.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/escape.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/dict_read_write.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/__version__.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/cparser.cpython-310-x86_64-linux-gnu.so -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/detect_pattern.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/break_ties.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/wrappers.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/detect_type.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/consistency.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/detect.py -> build/bdist.linux-x86_64/wheel/clevercsv
creating build/bdist.linux-x86_64/wheel/clevercsv/console
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/application.py -> build/bdist.linux-x86_64/wheel/clevercsv/console
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/__init__.py -> build/bdist.linux-x86_64/wheel/clevercsv/console
creating build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/commands/explore.py -> build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/commands/code.py -> build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/commands/_utils.py -> build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/commands/standardize.py -> build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/commands/detect.py -> build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/commands/_docs.py -> build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/commands/view.py -> build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/console/commands/__init__.py -> build/bdist.linux-x86_64/wheel/clevercsv/console/commands
copying build/lib.linux-x86_64-cpython-310/clevercsv/read.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/cparser_util.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/__init__.py -> build/bdist.linux-x86_64/wheel/clevercsv
copying build/lib.linux-x86_64-cpython-310/clevercsv/encoding.py -> build/bdist.linux-x86_64/wheel/clevercsv
running install_data
creating build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data
creating build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data
creating build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man
creating build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man/man1
copying man/clevercsv-explore.1 -> build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man/man1
copying man/clevercsv-code.1 -> build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man/man1
copying man/clevercsv-view.1 -> build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man/man1
copying man/clevercsv.1 -> build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man/man1
copying man/clevercsv-standardize.1 -> build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man/man1
copying man/clevercsv-detect.1 -> build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man/man1
copying man/clevercsv-help.1 -> build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.data/data/man/man1
running install_egg_info
Copying clevercsv.egg-info to build/bdist.linux-x86_64/wheel/clevercsv-0.7.4-py3.10.egg-info
running install_scripts
creating build/bdist.linux-x86_64/wheel/clevercsv-0.7.4.dist-info/WHEEL
creating '/tmp/clevercsv/dist/.tmp-je0rfu23/clevercsv-0.7.4-cp310-cp310-linux_x86_64.whl' and adding 'build/bdist.linux-x86_64/wheel' to it
adding 'clevercsv/__init__.py'
adding 'clevercsv/__main__.py'
adding 'clevercsv/__version__.py'
adding 'clevercsv/_optional.py'
adding 'clevercsv/break_ties.py'
adding 'clevercsv/cabstraction.cpython-310-x86_64-linux-gnu.so'
adding 'clevercsv/consistency.py'
adding 'clevercsv/cparser.cpython-310-x86_64-linux-gnu.so'
adding 'clevercsv/cparser_util.py'
adding 'clevercsv/detect.py'
adding 'clevercsv/detect_pattern.py'
adding 'clevercsv/detect_type.py'
adding 'clevercsv/dialect.py'
adding 'clevercsv/dict_read_write.py'
adding 'clevercsv/encoding.py'
adding 'clevercsv/escape.py'
adding 'clevercsv/exceptions.py'
adding 'clevercsv/normal_form.py'
adding 'clevercsv/potential_dialects.py'
adding 'clevercsv/read.py'
adding 'clevercsv/utils.py'
adding 'clevercsv/wrappers.py'
adding 'clevercsv/write.py'
adding 'clevercsv/console/__init__.py'
adding 'clevercsv/console/application.py'
adding 'clevercsv/console/commands/__init__.py'
adding 'clevercsv/console/commands/_docs.py'
adding 'clevercsv/console/commands/_utils.py'
adding 'clevercsv/console/commands/code.py'
adding 'clevercsv/console/commands/detect.py'
adding 'clevercsv/console/commands/explore.py'
adding 'clevercsv/console/commands/standardize.py'
adding 'clevercsv/console/commands/view.py'
adding 'clevercsv-0.7.4.data/data/man/man1/clevercsv-code.1'
adding 'clevercsv-0.7.4.data/data/man/man1/clevercsv-detect.1'
adding 'clevercsv-0.7.4.data/data/man/man1/clevercsv-explore.1'
adding 'clevercsv-0.7.4.data/data/man/man1/clevercsv-help.1'
adding 'clevercsv-0.7.4.data/data/man/man1/clevercsv-standardize.1'
adding 'clevercsv-0.7.4.data/data/man/man1/clevercsv-view.1'
adding 'clevercsv-0.7.4.data/data/man/man1/clevercsv.1'
adding 'clevercsv-0.7.4.dist-info/LICENSE'
adding 'clevercsv-0.7.4.dist-info/METADATA'
adding 'clevercsv-0.7.4.dist-info/WHEEL'
adding 'clevercsv-0.7.4.dist-info/entry_points.txt'
adding 'clevercsv-0.7.4.dist-info/top_level.txt'
adding 'clevercsv-0.7.4.dist-info/RECORD'
removing build/bdist.linux-x86_64/wheel
Successfully built clevercsv-0.7.4.tar.gz and clevercsv-0.7.4-cp310-cp310-linux_x86_64.whl

The build is also successful with

--- a/setup.py
+++ b/setup.py
@@ -8,7 +8,7 @@ import os
 from setuptools import Extension
 from setuptools import find_packages
 from setuptools import setup
-from setuptools._distutils.core import Command
+from distutils.core import Command

 # Package meta-data.
 AUTHOR = "Gertjan van den Burg"

I am not sure why this happens only after pypa/distutils@e0787fa.

My guess is that prior to #3674:

  1. imports in setuptools/_distutils' codebase were absolute, e.g. from distutils.dist import Distribution
  2. When evaluated, setuptools/_distutils' submodules would import directly from distutils and therefore get patched versions of different classes/functions (thanks to setuptools.monkey.patch_all()).

After #3674:

  1. imports in setuptools/_distutils' codebase were changed to relative, e.g. from .dist import Distribution
  2. When evaluated, setuptools/_distutils' submodules would import from setuptools._distutils and therefore get unpatched versions of different classes/functions (setuptools.monkey.patch_all() does not modify setuptools/_distutils).

With that in mind I think we can close this issue as it does not seem to be a bug (the example repository imports directly from a module that not exposed in a public way and therefore subverts the internal functioning of setuptools).

@mweinelt, I will leave the issue opened for one or two days to collect feedback, but since I am satisfied by the conclusions of the investigation I am tempted to close the ticket as invalid. Of course we can re-discuss that if other evidence is brought up.

@abravalheri abravalheri added invalid and removed bug Needs Triage Issues that need to be evaluated for severity and status. labels Jan 6, 2023
@mweinelt
Copy link
Author

mweinelt commented Jan 6, 2023

Thanks for investigating this issue.

ccing @GjjvdBurg, the CleverCSV maintainer for reference.

mweinelt added a commit to mweinelt/CleverCSV that referenced this issue Jan 6, 2023
In setuptools 65.6.0 the vendored distutils package changed to relative
imports. Importing `setuptools._distutils` would import an unpatched
version of distutils, while importing `distutils` directly imports a
monkeypatched version that works.

Reported upstream at pypa/setuptools#3743 and
the problem was investigated by Anderson Bravalheri.

Closes: alan-turing-institute#77
mweinelt added a commit to mweinelt/CleverCSV that referenced this issue Jan 6, 2023
In setuptools 65.6.0 the vendored distutils package changed to relative
imports. Importing `setuptools._distutils` would import an unpatched
version of distutils, while importing `distutils` directly imports a
monkeypatched version that works.

Reported upstream at pypa/setuptools#3743 and
the problem was investigated by Anderson Bravalheri.

Closes: alan-turing-institute#77
mweinelt added a commit to mweinelt/CleverCSV that referenced this issue Jan 6, 2023
In setuptools 65.6.0 the vendored distutils package changed to relative
imports. Importing `setuptools._distutils` previously worked but now
will import an unpatched version of distutils which breaks the build.

Importing `Command` from `distutils` or `setuputils` will receive a
monkey patched version that works.

Reported upstream at pypa/setuptools#3743 and
the problem was investigated by Anderson Bravalheri.

Closes: alan-turing-institute#77
mweinelt added a commit to mweinelt/CleverCSV that referenced this issue Jan 6, 2023
In setuptools 65.6.0 the vendored distutils package changed to relative
imports. Importing `Command` from `setuptools._distutils` previously
worked but now fails because it imports an unpatched version of
distutils, which breaks the build.

Importing `Command` directly from `distutils` or `setuputils` will
receive a monkey patched version that works.

Reported upstream at pypa/setuptools#3743 and
the problem was investigated by Anderson Bravalheri.

Closes: alan-turing-institute#77
@abravalheri abravalheri closed this as not planned Won't fix, can't repro, duplicate, stale Jan 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants