contentctl icon indicating copy to clipboard operation
contentctl copied to clipboard

Install Failing due to AttributeError from PyYAML

Open OneWithTheCore opened this issue 2 years ago • 3 comments

Trying to install contentctl causes an AttributeError to appear during build and install of PyYAML. Installing using pip install contentctl within a virtualenv to ensure clean package set.

Build details:

  • Python: 3.10.6
  • pip: 23.2
  • OS: Pop!_OS 22.04 LTS

Full trace:

(.venv) ➜ pip install contentctl
Collecting contentctl
  Obtaining dependency information for contentctl from https://files.pythonhosted.org/packages/64/47/de76e7bbfc73502c4b8f51ff382187f0cfe1fc44235c02ee2e59a1e5c180/contentctl-2.0.0-py3-none-any.whl.metadata
  Using cached contentctl-2.0.0-py3-none-any.whl.metadata (18 kB)
Collecting Jinja2<4.0.0,>=3.1.2 (from contentctl)
  Using cached Jinja2-3.1.2-py3-none-any.whl (133 kB)
Collecting PyYAML<6.0 (from contentctl)
  Using cached PyYAML-5.4.1.tar.gz (175 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  error: subprocess-exited-with-error
  
  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [62 lines of output]
      /tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/config/setupcfg.py:293: _DeprecatedConfig: Deprecated config in `setup.cfg`
      !!
      
              ********************************************************************************
              The license_file parameter is deprecated, use license_files instead.
      
              By 2023-Oct-30, you need to update your project and remove deprecated calls
              or your builds will no longer be supported.
      
              See https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for details.
              ********************************************************************************
      
      !!
        parsed = self.parsers.get(option_name, lambda x: x)(value)
      running egg_info
      writing lib3/PyYAML.egg-info/PKG-INFO
      writing dependency_links to lib3/PyYAML.egg-info/dependency_links.txt
      writing top-level names to lib3/PyYAML.egg-info/top_level.txt
      Traceback (most recent call last):
        File "/home/whiterose/contentctl/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/home/whiterose/contentctl/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/home/whiterose/contentctl/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
          return hook(config_settings)
        File "/tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 341, in get_requires_for_build_wheel
          return self._get_build_requires(config_settings, requirements=['wheel'])
        File "/tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 323, in _get_build_requires
          self.run_setup()
        File "/tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 338, in run_setup
          exec(code, locals())
        File "<string>", line 271, in <module>
        File "/tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/__init__.py", line 107, in setup
          return distutils.core.setup(**attrs)
        File "/tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 185, in setup
          return run_commands(dist)
        File "/tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
          dist.run_commands()
        File "/tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
          self.run_command(cmd)
        File "/tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 1234, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/command/egg_info.py", line 314, in run
          self.find_sources()
        File "/tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/command/egg_info.py", line 322, in find_sources
          mm.run()
        File "/tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/command/egg_info.py", line 551, in run
          self.add_defaults()
        File "/tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/command/egg_info.py", line 589, in add_defaults
          sdist.add_defaults(self)
        File "/tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/command/sdist.py", line 104, in add_defaults
          super().add_defaults()
        File "/tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/_distutils/command/sdist.py", line 251, in add_defaults
          self._add_defaults_ext()
        File "/tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/_distutils/command/sdist.py", line 336, in _add_defaults_ext
          self.filelist.extend(build_ext.get_source_files())
        File "<string>", line 201, in get_source_files
        File "/tmp/pip-build-env-pojwlaky/overlay/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 107, in __getattr__
          raise AttributeError(attr)
      AttributeError: cython_sources
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

OneWithTheCore avatar Jul 20 '23 16:07 OneWithTheCore

I'm having the same issue with poetry install on macos

linuxdaemon avatar Jul 25 '23 18:07 linuxdaemon

Hi @OneWithTheCore and @linuxdaemon . Thank you for this report. It appears this started happening last week even though we did not make any changes to the repo.
This is related to an underlying failure with PyYAML brought about by the release of Cython 3.0. It is affecting a large number of projects which use PyYAML: https://github.com/yaml/pyyaml/issues/724

I am able to reproduce this issue by simply trying to python3 -m install splunk-appinspect. splunk-appinspect is one of our dependencies for the project.

There are a small number of workarounds to this (some of them detailed on the PyYAML issue tracker) but none of them give a good, seamless experience with installation via pip or poetry. The most common suggestion of "use a version of PyYAML < 5.4.1 or >6" does not work for us as the splunk-appinspect library has a firm requirement on PyYAML 5.4.1

I am considering dropping appinspect support (and emitting a message encouraging the user to perform a manual appinspect along with instructions on how to do so) until we are able to come to a more permanent solution. Do you think that would work as a temporary solution?

Please note that I have reached out to our internal appinspect team for guidance as well. I'm happy to hear if you have any thoughts.

pyth0n1c avatar Jul 27 '23 23:07 pyth0n1c

Please note that the most current release, 2.0.1, has removed splunk-appinspect support (for now) in order to address this bug. At this stage, appinspect support in the tool is not critical since the tooling SHOULD build a valid app in the vast majority of cases. Here is a link to the (merged) PR: https://github.com/splunk/contentctl/pull/30

I will leave this open for discussion.

Thank you!

pyth0n1c avatar Jul 28 '23 00:07 pyth0n1c

Closing this out as we no longer use splunk-appinspect and this no longer appears to be an issue

pyth0n1c avatar Jul 08 '24 19:07 pyth0n1c