Skip to content

BytesWarnings triggerred by test suite #64562

Closed

Description

@Arfrever
mannequin
BPO 20363
Nosy @tarekziade, @merwok, @ambv, @berkerpeksag, @serhiy-storchaka
Files
  • issue20363_v3.diff
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = 'https://github.com/serhiy-storchaka'
    closed_at = <Date 2014-03-12.20:59:53.685>
    created_at = <Date 2014-01-23.09:47:31.664>
    labels = ['type-bug', 'library']
    title = 'BytesWarnings triggerred by test suite'
    updated_at = <Date 2014-03-12.20:59:53.684>
    user = 'https://bugs.python.org/Arfrever'

    bugs.python.org fields:

    activity = <Date 2014-03-12.20:59:53.684>
    actor = 'eric.araujo'
    assignee = 'serhiy.storchaka'
    closed = True
    closed_date = <Date 2014-03-12.20:59:53.685>
    closer = 'eric.araujo'
    components = ['Library (Lib)']
    creation = <Date 2014-01-23.09:47:31.664>
    creator = 'Arfrever'
    dependencies = []
    files = ['33715']
    hgrepos = []
    issue_num = 20363
    keywords = ['patch']
    message_count = 19.0
    messages = ['208903', '208990', '208993', '208995', '208997', '209009', '209011', '209043', '209263', '209266', '209269', '210415', '210416', '210418', '211178', '211185', '213292', '213293', '213296']
    nosy_count = 7.0
    nosy_names = ['tarek', 'eric.araujo', 'Arfrever', 'lukasz.langa', 'python-dev', 'berker.peksag', 'serhiy.storchaka']
    pr_nums = []
    priority = 'normal'
    resolution = 'fixed'
    stage = 'resolved'
    status = 'closed'
    superseder = None
    type = 'behavior'
    url = 'https://bugs.python.org/issue20363'
    versions = ['Python 3.3', 'Python 3.4']

    Activity

    1. Arfrever commented on Jan 23, 2014

      Arfrevermannequin
      MannequinAuthor

      [194/388] test_base64
      /tmp/cpython/Lib/base64.py:365: BytesWarning: str() on a bytes instance
      "by {} and {}".format(A85START, _A85END))
      ...
      [204/388] test_hash
      /tmp/cpython/Lib/test/test_hash.py:175: BytesWarning: str() on a bytes instance
      return 'print(hash(eval(%s.decode("utf-8"))))' % repr
      .encode("utf-8")
      ...
      [234/388] test_configparser
      /tmp/cpython/Lib/configparser.py:289: BytesWarning: str() on a bytes instance
      Error.__init__(self, 'Source contains parsing errors: %s' % source)
      /tmp/cpython/Lib/configparser.py:326: BytesWarning: str() on a bytes instance
      (filename, lineno, line))
      ...
      [332/388/1] test_distutils
      /tmp/cpython/Lib/distutils/command/register.py:303: BytesWarning: str() on a bytes instance
      self.announce('%s%s%s' % (dashes, data, dashes))

    2. added
      stdlibStandard Library Python modules in the Lib/ directory
      on Jan 23, 2014
    3. self-assigned this
      on Jan 23, 2014
    4. added
      type-bugAn unexpected behavior, bug, or error
      on Jan 23, 2014
    5. Arfrever commented on Jan 23, 2014

      Arfrevermannequin
      MannequinAuthor

      I think that repr could be used:
      str(bytes_instance) -> repr(bytes_instance)
      "%s" % bytes_instance -> "%r" % bytes_instance

      Any opinions?

    6. ambv commented on Jan 23, 2014

      @ambv
      Contributor

      repr(bytestr)[1:-1] ;-)

    7. Arfrever commented on Jan 23, 2014

      Arfrevermannequin
      MannequinAuthor

      You rather meant [2:-1] instead of [1:-1], but if initial "b'" and final "'" are not needed in result string, then maybe just call .decode() on an instance of bytes.

      >>> str(b"xxx")
      "b'xxx'"
      >>> repr(b"xxx")
      "b'xxx'"
      >>> repr(b"xxx")[1:-1]
      "'xxx"
      >>> repr(b"xxx")[2:-1]
      'xxx'
      >>> b"xxx".decode()
      'xxx'
    8. serhiy-storchaka commented on Jan 23, 2014

      @serhiy-storchaka
      Member

      I think that repr could be used:

      Agree.

      "{}".format(bytestr) -> "{!r}".format(bytestr)

    9. berkerpeksag commented on Jan 23, 2014

      @berkerpeksag
      Member

      Here's a patch to silence BytesWarnings.

    10. Arfrever commented on Jan 23, 2014

      Arfrevermannequin
      MannequinAuthor

      I think that %s is better for 'dashes' variable (which is always str) in Lib/distutils/command/register.py:
      self.announce('%s%r%s' % (dashes, data, dashes))

    11. serhiy-storchaka commented on Jan 24, 2014

      @serhiy-storchaka
      Member

      And

      'print(hash(eval(%s.decode("utf-8"))))' % repr_.encode("utf-8")
      

      can be simplified to

      'print(hash(eval(%a)))' % repr_
      
    12. 2 remaining items

    13. berkerpeksag commented on Jan 26, 2014

      @berkerpeksag
      Member

      Ah, my bad. Thanks Arfrever.

    14. serhiy-storchaka commented on Feb 6, 2014

      @serhiy-storchaka
      Member

      LGTM.

    15. python-dev commented on Feb 6, 2014

      python-devmannequin
      Mannequin

      New changeset 791674a74e47 by Serhiy Storchaka in branch '3.3':
      Issue bpo-20363. Fixed BytesWarning triggerred by test suite.
      http://hg.python.org/cpython/rev/791674a74e47

      New changeset a4431dce107a by Serhiy Storchaka in branch 'default':
      Issue bpo-20363. Fixed BytesWarning triggerred by test suite.
      http://hg.python.org/cpython/rev/a4431dce107a

    16. serhiy-storchaka commented on Feb 6, 2014

      @serhiy-storchaka
      Member

      Thank you Arfrever for your report. Thank you Berker for your patch.

    17. merwok commented on Feb 13, 2014

      @merwok
      Member

      Thanks for applying the patch. distutils tests don’t cover 100% of the codebase; did you test manually that the behavior of the changed code was still correct?

    18. serhiy-storchaka commented on Feb 13, 2014

      @serhiy-storchaka
      Member

      At least it wasn't changed.

      As I see, affected line is used to output debugging message (disabled by default). It produces different result in 2.7 and 3.x ("----------xxx----------" vs "----------b'xxx'----------") due to the difference between 2.x str and 3.x bytes.

    19. merwok commented on Mar 12, 2014

      @merwok
      Member

      I don’t understand one thing: you said the output wasn’t changed, then show an example of changed output: “"----------xxx----------" vs "----------b'xxx'----------"”.

      The “data” that is displayed is supposed to be text; showing “b'” and “'” is a regression for the 3.x line.

    20. reopened this on Mar 12, 2014
    21. Arfrever commented on Mar 12, 2014

      Arfrevermannequin
      MannequinAuthor

      Output is different between Python 2 and 3, but not different between different versions in Python 3.
      Output in Python 3 is e.g. "----------b'xxx'----------" both before and after commit 791674a74e47.
      I suggest to create a separate issue for discussion about this message in distutils.

    22. merwok commented on Mar 12, 2014

      @merwok
      Member

      Thanks for correcting me. I created bpo-20900.

    23. transferred this issue fromon Apr 10, 2022
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Metadata

    Metadata

    Labels

    stdlibStandard 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