bug-gnubg
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Cube-info dictionary type error on linux cli using Python 3.9.2


From: Christian Anthon
Subject: Re: Cube-info dictionary type error on linux cli using Python 3.9.2
Date: Thu, 24 Feb 2022 09:08:16 +0100

It could be that all we need is to build gnubg against python3 for it to work.

C

On Thu, 24 Feb 2022 at 00.58, Philippe Michel <philippe.michel7@free.fr> wrote:
On Sun, Feb 20, 2022 at 10:38:32PM +0100, Jim Segrave wrote:
> I need to look at this in depth- on my host the default python is 2.75
> (even thouogh nowadays I almost always use python3) and it does what it
> used to.
>
> I really don't remember how the Python integration works, athough I once
> used it quite heavily to build databases of matches. I'm sure it's solvable
>
>
> On 20/02/2022 16:20, Rose Menninger wrote:
> > Hi. Thanks for your reply.
> > Unfortunately I forgot to mention that cube-info is supposed to be a dictionary and type(gnubg.cubeinfo()) also returns class ‘dict’.
> >
> > So, if I try to convert it using “bytes” function (as you mentioned), i will get an error from bytes function like this:
> > TypeError: encoding without a string argument

I don't think you want to "convert the dictionary to bytes".

cube-info is something like:

{'cube': 1, 'cubeowner': -1, 'move': 1, 'matchto': 0, 'score': (0, 0),
'crawford': 0, 'jacoby': 1, 'beavers': 0, 'gammonprice': ((0.0, 0.0),
(0.0, 0.0)), 'bgv': 0}

In python 2, the identifiers like 'cube' are ascii bytes strings and
that is what the methods taking such dictionaries as argument expect.

In python 3, the same code that creates a dictionary from a list of C
variables makes the identifiers utf-8 strings (u'cube', implicitely),
but the methods still expect ascii strings, causing the error you get:
"TypeError: expected bytes, str found", str being an utf-8 string

I'm not very familiar with python and what would be considered standard
in python 3 vs. python 2, but I would guess that what needs to be done
(when built with python 3) is for the methods to accept utf strings as
identifiers rather than create the dictionaries using byte strings.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]