Skip to content

Commit

Permalink
Merge pull request #24 from Erotemic/dev/1.0.1
Browse files Browse the repository at this point in the history
Dev/1.0.1
  • Loading branch information
Erotemic committed Oct 7, 2022
2 parents 7abfa0d + 60ec558 commit 2b219b7
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 13 deletions.
8 changes: 7 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,14 @@ We are currently working on porting this changelog to the specifications in
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).


## [Version: 1.0.0] - Unreleased
## [Version: 1.0.1] - Unreleased

### Fixed
* `ProgIter.format_message` returned to its original signature. The
`ProgIter.format_message_parts` now contains the new signature.


## [Version: 1.0.0] - Released 2022-10-01

### Changed
* `ProgIter.format_message` return value has changed.
Expand Down
2 changes: 1 addition & 1 deletion progiter/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
"""
from .progiter import (ProgIter,)

__version__ = '1.0.0'
__version__ = '1.0.1'
__all__ = [
'ProgIter',
]
18 changes: 13 additions & 5 deletions progiter/progiter.py
Original file line number Diff line number Diff line change
Expand Up @@ -730,28 +730,36 @@ def _build_message_template(self):
return parts

def format_message(self):
"""
Exists only for backwards compatibility.
See `format_message_parts` for more recent API.
"""
return ''.join(self.format_message_parts())

def format_message_parts(self):
r"""
builds a formatted progres message with the current values.
This contains the special characters needed to clear lines.
Example:
>>> self = ProgIter(clearline=False, show_times=False)
>>> print(repr(self.format_message()[1]))
>>> print(repr(self.format_message_parts()[1]))
' 0/?... '
>>> self.begin()
>>> self.step()
>>> print(repr(self.format_message()[1]))
>>> print(repr(self.format_message_parts()[1]))
' 1/?... '
Example:
>>> self = ProgIter(chunksize=10, total=100, clearline=False,
>>> show_times=False, microseconds=True)
>>> # hack, microseconds=True for coverage, needs real test
>>> print(repr(self.format_message()[1]))
>>> print(repr(self.format_message_parts()[1]))
' 0.00% of 10x100... '
>>> self.begin()
>>> self.update() # tqdm alternative to step
>>> print(repr(self.format_message()[1]))
>>> print(repr(self.format_message_parts()[1]))
' 1.00% of 10x100... '
"""
from datetime import timedelta
Expand Down Expand Up @@ -832,7 +840,7 @@ def display_message(self):
"""
Writes current progress to the output stream
"""
before, msg, after = self.format_message()
before, msg, after = self.format_message_parts()
msg_len = len(msg) # TODO account for unicode
if self.clearline:
padding = self._prev_msg_len - msg_len
Expand Down
12 changes: 6 additions & 6 deletions tests/test_progiter.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,17 +47,17 @@ def test_rate_format():
prog.begin()

prog._iters_per_second = .000001
msg = prog.format_message()[1]
msg = prog.format_message()
rate_part = msg.split('rate=')[1].split(' Hz')[0]
assert rate_part == '1e-06'

prog._iters_per_second = .1
msg = prog.format_message()[1]
msg = prog.format_message()
rate_part = msg.split('rate=')[1].split(' Hz')[0]
assert rate_part == '0.10'

prog._iters_per_second = 10000
msg = prog.format_message()[1]
msg = prog.format_message()
rate_part = msg.split('rate=')[1].split(' Hz')[0]
assert rate_part == '10000.00'

Expand Down Expand Up @@ -285,7 +285,7 @@ def test_initial():
"""
file = StringIO()
prog = ProgIter(initial=9001, file=file, show_times=False, clearline=False)
message = prog.format_message()[1]
message = prog.format_message_parts()[1]
assert strip_ansi(message) == ' 9001/?... '


Expand All @@ -298,13 +298,13 @@ def test_clearline():
file = StringIO()
# Clearline=False version should simply have a newline at the end.
prog = ProgIter(file=file, show_times=False, clearline=False)
before, message, after = prog.format_message()
before, message, after = prog.format_message_parts()
assert before == ''
assert strip_ansi(message).strip(' ') == '0/?...'
# Clearline=True version should carrage return at the begining and have no
# newline at the end.
prog = ProgIter(file=file, show_times=False, clearline=True)
before, message, after = prog.format_message()
before, message, after = prog.format_message_parts()
assert before == '\r'
assert strip_ansi(message).strip(' ') == '0/?...'

Expand Down

0 comments on commit 2b219b7

Please sign in to comment.