Skip to content

pybabel extract crashes when it encounters a byte string #1190

@tomasr8

Description

@tomasr8

(Happens on current master)

Sample file:

_(b'foo')

now run pybabel extract test.py -o messages.pot and you'll get this error:

> pybabel extract test.py -o messages.pot
extracting messages from test.py
Traceback (most recent call last):
  File "/home/dev/babel/venv/bin/pybabel", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/dev/babel/babel/messages/frontend.py", line 998, in main
    return CommandLineInterface().run(sys.argv)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dev/babel/babel/messages/frontend.py", line 924, in run
    return cmdinst.run()
           ^^^^^^^^^^^^^
  File "/home/dev/babel/babel/messages/frontend.py", line 522, in run
    for filename, lineno, message, comments, context in extracted:
                                                        ^^^^^^^^^
  File "/home/dev/babel/babel/messages/extract.py", line 282, in check_and_call_extract_file
    for message_tuple in extract_from_file(
                         ^^^^^^^^^^^^^^^^^^
  File "/home/dev/babel/babel/messages/extract.py", line 324, in extract_from_file
    return list(extract(method, fileobj, keywords, comment_tags,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dev/babel/babel/messages/extract.py", line 451, in extract
    for lineno, funcname, messages, comments in results:
                                                ^^^^^^^
  File "/home/dev/babel/babel/messages/extract.py", line 562, in extract_python
    messages.append(''.join(buf))
                    ^^^^^^^^^^^^
TypeError: sequence item 0: expected str instance, bytes found

It seems like we're trying to call .join() on a byte string. I suggest just fixing the crash but keeping byte strings disallowed - they won't work with gettext anyway because gettext uses normal strings internally.

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions