Skip to content

AttributeError calling subprocess.check_output(input=None) with encoding or errors args #97825

Description

@akulakov

Bug report

subprocess.check_output(input=None) raises an AttributeError when called with encoding or errors args.

Example:

>>> check_output(['ls'], input=None, encoding='utf-8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/ak/opensource/cpython4/Lib/subprocess.py", line 466, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/ak/opensource/cpython4/Lib/subprocess.py", line 549, in run
    stdout, stderr = process.communicate(input, timeout=timeout)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/ak/opensource/cpython4/Lib/subprocess.py", line 1206, in communicate
    stdout, stderr = self._communicate(input, endtime, timeout)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/ak/opensource/cpython4/Lib/subprocess.py", line 2035, in _communicate
    self._save_input(input)
  File "/Users/ak/opensource/cpython4/Lib/subprocess.py", line 2115, in _save_input
    self._input = self._input.encode(self.stdin.encoding,
                  ^^^^^^^^^^^^^^^^^^
AttributeError: 'bytes' object has no attribute 'encode'. Did you mean: 'decode'?

Your environment

  • CPython versions tested on: 3.12 (the issue is also present in 3.10 and 3.11)
  • Operating system and architecture: MacOS M1, 11.5

I will create a PR a bit later today.

Activity

  1. added
    stdlibStandard Library Python modules in the Lib/ directory
    3.11only security fixes
    3.12only security fixes
    on Oct 4, 2022
  2. added a commit that references this issue on Oct 5, 2022
  3. added 2 commits that reference this issue on Oct 5, 2022
  4. gpshead commented on Oct 5, 2022

    @gpshead
    Member

    thanks! That this bug has probably been present for so long I guess means people don't use this combination of args very often?

  5. akulakov commented on Oct 5, 2022

    @akulakov
    ContributorAuthor

    I think input=None maybe isn't used much, and the workaround of input='' is not too hard to find.

    Thanks for reviewing @gpshead @JelleZijlstra !

  6. added 2 commits that reference this issue on Oct 5, 2022
  7. added a commit that references this issue on Oct 6, 2022
  8. added a commit that references this issue on Oct 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.10 (EOL)end of life3.11only security fixes3.12only security fixesstdlibStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions