RedisJSON / redisjson-py

An extension to redis-py for using Redis' ReJSON module
https://redisjson.io
BSD 2-Clause "Simplified" License
160 stars 34 forks source link

Document differences in using Python2 and Python3 #25

Open K-Jo opened 5 years ago

K-Jo commented 5 years ago

Client(decode_responses=True)

toyg commented 4 years ago

I don't know whether to be happy that I've found this, after two hours banging my head against the screen, or to be upset that almost a year later such an essential bit is still missing from the doc.

gkorland commented 4 years ago

@toyg i'm sorry you wasted two hours. But it's documented, in fact it's right on the first example in the https://github.com/RedisJSON/redisjson-py/blob/master/README.md.

   from rejson import Client, Path

   rj = Client(host='localhost', port=6379, decode_responses=True)

   # Set the key `obj` to some object
   obj = {
       'answer': 42,
       'arr': [None, True, 3.14],
       'truth': {
           'coord': 'out there'
       }
   }

And even has its own section: https://github.com/RedisJSON/redisjson-py#encodingdecoding

Do you think we should add it somewhere else?

toyg commented 4 years ago

I think it should be mentioned that it’s a compulsory parameter when using Python3, rather than something advanced and optional that may or may not be required. I would dare say it should be True by default, now that py2 is dead, but I guess that’s an opinion and switching it now might break old code.

itamarhaber commented 4 years ago

I've submitted #37 to fix (docs only) this - please let me know if acceptable.

After spending some cycles mulling on this, I think we can relax this requirement and have the client do the decoding of rejson's replies if it wasn't initialized with decode_responses=True. That would have probably been the right course to take all that time ago but changing now will break things :/

Perhaps it is something worth considering for the next major release @gkorland