Tryton client crashes for local login

I’m trying to run a Tryton 7.0.32 client against a Tryton 7.0.30 server with a SQLite database for testing purposes, both installed in a virtualenv, and using a memory database. However, I can’t log in.

To start the server, I have a script that basically does:

$ trytond-admin -c test.conf -d db --all --email toni@localhost --activate-dependencies
$ trytond-admin -c test.conf -d db -p --reset-password
$ trytond -c test.conf -v --dev

If I use a client - I also tried other versions - to connect to this server, I get a crash:

$ tryton -v  
INFO:tryton.rpc:common.authentication.services()
INFO:tryton.rpc:common.server.version(None, None)
INFO:tryton.common.common:Überprüfung der URL: https://downloads.tryton.org/7.0/tryton-7.0.33.tar.gz
ERROR:tryton.common.common:Es war nicht möglich nach einer neuen Version zu suchen.
Traceback (most recent call last):
  File "/path/to/working/dir/.venv/lib/python3.13/site-packages/tryton/common/common.py", line 935, in check_version
    urllib.request.urlopen(
    ~~~~~~~~~~~~~~~~~~~~~~^
        HeadRequest(url), timeout=5, cafile=rpc._CA_CERTS)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: urlopen() got an unexpected keyword argument 'cafile'
INFO:tryton.rpc:common.db.login(admin, xxxxxxxxxx, de)
ERROR:tryton.common.common:Traceback (most recent call last):
  File "/path/to/working/dir/.venv/lib/python3.13/site-packages/tryton/gui/main.py", line 256, in do_activate
    common.get_credentials()
    ~~~~~~~~~~~~~~~~~~~~~~^^
  File "/path/to/working/dir/.venv/lib/python3.13/site-packages/tryton/common/common.py", line 1043, in get_credentials
    Login()
    ~~~~~^^
  File "/path/to/working/dir/.venv/lib/python3.13/site-packages/tryton/common/common.py", line 1100, in __init__
    func(parameters)
    ~~~~^^^^^^^^^^^^
  File "/path/to/working/dir/.venv/lib/python3.13/site-packages/tryton/rpc.py", line 122, in login
    result = connection.common.db.login(username, parameters, language)
  File "/path/to/home/.local/share/uv/python/cpython-3.13.5-linux-x86_64-gnu/lib/python3.13/xmlrpc/client.py", line 1096, in __call__
    return self.__send(self.__name, args)
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
  File "/path/to/working/dir/.venv/lib/python3.13/site-packages/tryton/jsonrpc.py", line 308, in __request
    raise Fault(*response['error'])
tryton.jsonrpc.Fault: name 'self' is not defined

Fault: name 'self' is not defined

If I choose a different server, eg. one I have running inside a VM and talking to a Pg database (also 7.0), then I get the expected password prompt and can then proceed to the normal Tryton client UI.

If I am accessing the Tryton server with my web browser, in the VM case, I get a web UI, and in the localhost test case, I get a 405. However, running a Proteus script against the local server seems to work just fine, judging from looking at the database (new tables & updated records).

What gives?

You must use a supported Python version with the chosen Tryton series.

I have now reproduced the problem with Python 3.11 on both client and server.

It cannot be the same traceback