Fix Python 3 incompatibilities with the rbt command name and pagination.
Review Request #10313 — Created Nov. 8, 2018 and submitted — Latest diff uploaded
This fixes two issues that came up involving RBTools running on newer
versions of Python 3.The first has to do with the
RB_MAIN
constant forrbt
, which an
older change from 2016 set as a byte string in order to avoid string
type issues and logging with Unicode characters. While important then,
we actually want it as a Unicode string now, as the areas that were
sensitive to this now normalize string types for the proper platform.
Keeping it as a byte string actually broke functionality, like custom
rbt-<scriptname>
commands, aliases, and bits of help output.The other issue has to do with pagination.
StopIteration
is
deprecated, and handled differently on Python 3.7. This resulted in
breakages withListResource.all_pages
, which was crashing with this
exception rather than simply stopping iteration. While in time it'd be
better to phase outStopIteration
, we for now catch it where we care
about it and handle it the way we'd expect. This fixesrbt status
, and
other commands.
Tested
rbt --help
,rbt --debug
,rbt post --description="<unicode>"
,
rbt status
, custom aliases, and customrbt-*
scripts on Python 2.7
and 3.7. All commands worked as expected, with and without Unicode
characters.