explodinglabs / jsonrpcserver

Process incoming JSON-RPC requests in Python
MIT License
186 stars 40 forks source link

Broken on Python 3.12 due to unmaintained OSlash dep #273

Closed voice-of-texnoforge closed 2 months ago

voice-of-texnoforge commented 7 months ago

Hello, I'm getting problems on jsonrpcserver imports on Python 3.12:

    from jsonrpcserver import dispatch
/opt/hostedtoolcache/Python/3.12.2/x64/lib/python3.12/site-packages/jsonrpcserver/__init__.py:19: in <module>
    from .async_main import (
/opt/hostedtoolcache/Python/3.12.2/x64/lib/python3.12/site-packages/jsonrpcserver/async_main.py:5: in <module>
    from .async_dispatcher import dispatch_to_response_pure
/opt/hostedtoolcache/Python/3.12.2/x64/lib/python3.12/site-packages/jsonrpcserver/async_dispatcher.py:9: in <module>
    from oslash.either import Left  # type: ignore
/opt/hostedtoolcache/Python/3.12.2/x64/lib/python3.12/site-packages/oslash/__init__.py:11: in <module>
    from .state import State
/opt/hostedtoolcache/Python/3.12.2/x64/lib/python3.12/site-packages/oslash/state.py:78: in <module>
    assert issubclass(State, Functor)
/opt/hostedtoolcache/Python/3.12.2/x64/lib/python3.12/typing.py:1841: in __subclasscheck__
    cls.__non_callable_proto_members__
E   AttributeError: type object 'Functor' has no attribute '__non_callable_proto_members__'

Is there any hope for a fix and new release?

voice-of-texnoforge commented 7 months ago

It seems to be a problem in OSlash which had last release in 2020 so it's safe to assume it's dead.

However, jsonrpcserver seems to only use Either, Left, Right:

from oslash.either import Either, Left, Right

This should be reasonably easy to fix by switching to PyMonad or even providing custom implementation.

briceparmentier commented 5 months ago

Hello !

It seems to be a problem in OSlash which had last release in 2020 so it's safe to assume it's dead.

However, jsonrpcserver seems to only use Either, Left, Right:

from oslash.either import Either, Left, Right

This should be reasonably easy to fix by switching to PyMonad or even providing custom implementation.

Is it possible to get some help on the proposed solution? I'm not comfortable enough to get this done.

I create a sample project on PyCharm importing only jsonrpcserver package, no version specified (grabbing 5.0.9), ran the main proposed on the jsonrpcserver documentation, and got the same error mentioned at the beginning.

voice-of-texnoforge commented 5 months ago

So the author said he's hoping to release 6.0 version "soon" in https://github.com/explodinglabs/jsonrpcserver/discussions/275#discussioncomment-8948003

Looking at 6.0.0 PR https://github.com/explodinglabs/jsonrpcserver/pull/255 , you can see https://github.com/explodinglabs/jsonrpcserver/commit/0f1fd290c7f8d6427e419511e1cfb54a89e99b05 Replace Oslash with Returns

If you don't want to wait for the release, you can try the release/6.0.0 branch I guess.

briceparmentier commented 5 months ago

Thanks ! I hope then that the next release will come soon. Meanwhile I've managed to make it work by creating a virtual environment for this project using version 3.11.x of Python.

bcb commented 2 months ago

As @voice-of-texnoforge said, this is fixed in version 6.