sparql-client icon indicating copy to clipboard operation
sparql-client copied to clipboard

Python 3.9+ is not supported

Open ynerant opened this issue 3 years ago • 3 comments

The function base64.encodestring is deprecated since Python 3.1 and was removed in Python 3.9. It is used here: https://github.com/eea/sparql-client/blob/master/sparql.py#L50

You may use use base64.encodebytes() instead.

ynerant avatar Jan 13 '22 16:01 ynerant

Temporarily, I edited sparql.py under the path given by pip show sparql-client. Replacing encodestring to encodebytes solved the error on Python 3.9. Just for your information. (However, that is used in BASIC authentication https://github.com/eea/sparql-client/blob/master/sparql.py#L421 and I've not tried the code with restricted websites.)

cm3 avatar Jun 08 '22 02:06 cm3

Tried @cm3 suggestion but get:

class NameDict(collections.MutableMapping):
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: module 'collections' has no attribute 'MutableMapping'

Python 3.11 sparql-client 3.8

rjalexa avatar Jan 16 '23 07:01 rjalexa

@rjalexa I didn't checked but I found a solution: after import collections, put

if sys.version_info.major == 3 and sys.version_info.minor >= 10:
    from collections.abc import MutableMapping
else:
    from collections import MutableMapping

Reference: https://stackoverflow.com/questions/70943244/attributeerror-module-collections-has-no-attribute-mutablemapping

cm3 avatar Jan 25 '23 21:01 cm3