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

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

Closed
akulakov opened this issue Oct 4, 2022 · 2 comments
Labels
3.10 only security fixes 3.11 only security fixes 3.12 bugs and 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 bugs and 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 <[email protected]>
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 <[email protected]>
@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 <[email protected]>
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 <[email protected]>
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
3.10 only security fixes 3.11 only security fixes 3.12 bugs and 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