Skip to content

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

New issue

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

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

Already on GitHub? # to your account

Closed
akulakov opened this issue Oct 4, 2022 · 2 comments
Labels
3.10 only security fixes 3.11 only security fixes 3.12 only security fixes stdlib Python modules in the Lib dir type-bug An unexpected behavior, bug, or error

Comments

@akulakov
Copy link
Contributor

akulakov commented Oct 4, 2022

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.

@akulakov akulakov added the type-bug An unexpected behavior, bug, or error label Oct 4, 2022
@eryksun eryksun added stdlib Python modules in the Lib dir 3.11 only security fixes 3.10 only security fixes 3.12 only security fixes labels Oct 4, 2022
brettcannon pushed a commit to brettcannon/cpython that referenced this issue Oct 5, 2022
…ut(input=None) with encoding or errors args (python#97826)

* fix AttributeError, add unit test
miss-islington pushed a commit to miss-islington/cpython that referenced this issue Oct 5, 2022
…ut(input=None) with encoding or errors args (pythonGH-97826)

* fix AttributeError, add unit test
(cherry picked from commit db64fb9)

Co-authored-by: andrei kulakov <andrei.avk@gmail.com>
miss-islington pushed a commit to miss-islington/cpython that referenced this issue Oct 5, 2022
…ut(input=None) with encoding or errors args (pythonGH-97826)

* fix AttributeError, add unit test
(cherry picked from commit db64fb9)

Co-authored-by: andrei kulakov <andrei.avk@gmail.com>
@gpshead
Copy link
Member

gpshead commented Oct 5, 2022

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

@gpshead gpshead closed this as completed Oct 5, 2022
@akulakov
Copy link
Contributor Author

akulakov commented Oct 5, 2022

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 !

miss-islington added a commit that referenced this issue Oct 5, 2022
…ut=None) with encoding or errors args (GH-97826)

* fix AttributeError, add unit test
(cherry picked from commit db64fb9)

Co-authored-by: andrei kulakov <andrei.avk@gmail.com>
miss-islington added a commit that referenced this issue Oct 5, 2022
…ut=None) with encoding or errors args (GH-97826)

* fix AttributeError, add unit test
(cherry picked from commit db64fb9)

Co-authored-by: andrei kulakov <andrei.avk@gmail.com>
carljm added a commit to carljm/cpython that referenced this issue Oct 6, 2022
* main: (66 commits)
  pythongh-65961: Raise `DeprecationWarning` when `__package__` differs from `__spec__.parent` (python#97879)
  docs(typing): add "see PEP 675" to LiteralString (python#97926)
  pythongh-97850: Remove all known instances of module_repr() (python#97876)
  I changed my surname early this year (python#96671)
  pythongh-93738: Documentation C syntax (:c:type:<C type> -> :c:expr:<C type>) (python#97768)
  pythongh-91539: improve performance of get_proxies_environment  (python#91566)
  build(deps): bump actions/stale from 5 to 6 (python#97701)
  pythonGH-95172 Make the same version `versionadded` oneline (python#95172)
  pythongh-88050: Fix asyncio subprocess to kill process cleanly when process is blocked (python#32073)
  pythongh-93738: Documentation C syntax (Function glob patterns -> literal markup) (python#97774)
  pythongh-93357: Port test cases to IsolatedAsyncioTestCase, part 2 (python#97896)
  pythongh-95196: Disable incorrect pickling of the C implemented classmethod descriptors (pythonGH-96383)
  pythongh-97758: Fix a crash in getpath_joinpath() called without arguments (pythonGH-97759)
  pythongh-74696: Pass root_dir to custom archivers which support it (pythonGH-94251)
  pythongh-97661: Improve accuracy of sqlite3.Cursor.fetchone docs (python#97662)
  pythongh-87092: bring compiler code closer to a preprocessing-opt-assembler organisation (pythonGH-97644)
  pythonGH-96704: Add {Task,Handle}.get_context(), use it in call_exception_handler() (python#96756)
  pythongh-93738: Documentation C syntax (:c:type:`PyTypeObject*` -> :c:expr:`PyTypeObject*`) (python#97778)
  pythongh-97825: fix AttributeError when calling subprocess.check_output(input=None) with encoding or errors args (python#97826)
  Add re.VERBOSE flag documentation example (python#97678)
  ...
mpage pushed a commit to mpage/cpython that referenced this issue Oct 11, 2022
…ut(input=None) with encoding or errors args (python#97826)

* fix AttributeError, add unit test
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
3.10 only security fixes 3.11 only security fixes 3.12 only security fixes stdlib Python modules in the Lib dir type-bug An unexpected behavior, bug, or error
Projects
None yet
Development

No branches or pull requests

3 participants