I've done enough python 2 -> 3 porting to feel very nervous about this, my experience tells me that mixing bytes and unicode always leads to subtle and hard to track down bugs. I'd much rather enforce that we're always getting unicode or bytes, but not mixing them.
Quoting Mathieu Bridon (2018-07-05 06:17:48) > Python 2 byte strings were called "str", and its unicode strings were > called "unicode". > > In Python 3, they are called "bytes" and "str". > > This commit makes the script compatible with Python 2 and Python 3, > checking for the right types on both. > > Signed-off-by: Mathieu Bridon <boche...@daitauha.fr> > --- > src/compiler/nir/nir_algebraic.py | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/src/compiler/nir/nir_algebraic.py > b/src/compiler/nir/nir_algebraic.py > index fda72d3c69..e17e2d26b9 100644 > --- a/src/compiler/nir/nir_algebraic.py > +++ b/src/compiler/nir/nir_algebraic.py > @@ -35,6 +35,13 @@ import traceback > > from nir_opcodes import opcodes > > +try: > + string_types = (str, unicode) > + > +except NameError: > + # This is Python 3 > + string_types = (bytes, str) > + > _type_re = re.compile(r"(?P<type>int|uint|bool|float)?(?P<bits>\d+)?") > > def type_bits(type_str): > @@ -70,7 +77,7 @@ class Value(object): > return Expression(val, name_base, varset) > elif isinstance(val, Expression): > return val > - elif isinstance(val, (str, unicode)): > + elif isinstance(val, string_types): > return Variable(val, name_base, varset) > elif isinstance(val, (bool, int, long, float)): > return Constant(val, name_base) > -- > 2.17.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
signature.asc
Description: signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev