Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Unicode Marker in Python 2 #104

Copy link
Copy link

Description

@bpmweel
Issue body actions

Description

I'm trying to use a unicode string as a marker in both python 2 and 3. In python 3 this works fine, but in python 2 I get the following error (Full trace at the end):

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-24: ordinal not in range(128)

Using encode('utf-8') on this marker results in the error: AssertionError: Markers are required to be 1 char

The trace shows that the string, which is already unicode, is being encoded into unicode again. Perhaps this is superfluous?

Should I call bar in a different way?

Code

import progressbar
from progressbar import Bar

widgets = [Bar(marker=u'\u2588')]
progress_bar = progressbar.ProgressBar(
                max_value=10, widgets=widgets)
progress_bar.start()
progress_bar.update(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/bweel/anaconda2/envs/boatswain2/lib/python2.7/site-packages/progressbar/bar.py", line 550, in update
    StdRedirectMixin.update(self, value=value)
  File "/home/bweel/anaconda2/envs/boatswain2/lib/python2.7/site-packages/progressbar/bar.py", line 143, in update
    DefaultFdMixin.update(self, value=value)
  File "/home/bweel/anaconda2/envs/boatswain2/lib/python2.7/site-packages/progressbar/bar.py", line 48, in update
    self.fd.write('\r' + self._format_line())
  File "/home/bweel/anaconda2/envs/boatswain2/lib/python2.7/site-packages/progressbar/bar.py", line 481, in _format_line
    widgets = ''.join(self._format_widgets())
  File "/home/bweel/anaconda2/envs/boatswain2/lib/python2.7/site-packages/progressbar/bar.py", line 472, in _format_widgets
    widget_output = widget(self, data, portion)
  File "/home/bweel/anaconda2/envs/boatswain2/lib/python2.7/site-packages/progressbar/widgets.py", line 669, in __call__
    marker = converters.to_unicode(self.marker(progress, data, width))
  File "/home/bweel/anaconda2/envs/boatswain2/lib/python2.7/site-packages/python_utils/converters.py", line 178, in to_unicode
    input_ = input_.decode(encoding, errors)
  File "/home/bweel/anaconda2/envs/boatswain2/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-15: ordinal not in range(128)
import progressbar
from progressbar import Bar

widgets = [Bar(marker=u'\u2588'.encode('utf-8'))]
  File "<stdin>", line 1, in <module>
  File "/home/bweel/anaconda2/envs/boatswain2/lib/python2.7/site-packages/progressbar/widgets.py", line 655, in __init__
    self.marker = create_marker(marker)
  File "/home/bweel/anaconda2/envs/boatswain2/lib/python2.7/site-packages/progressbar/widgets.py", line 40, in create_marker
    assert len(marker) == 1, 'Markers are required to be 1 char'
AssertionError: Markers are required to be 1 char

Versions

  • Python version: 2.7.12 | packaged by conda-forge | (default, Sep 8 2016, 14:22:31) [GCC 4.8.2 20140120 (Red Hat 4.8.2-15)]
  • Python distribution/environment: Anaconda
  • Operating System: Ubuntu Linux (Mint)
  • Package version: 3.16.1
Reactions are currently unavailable

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.