jsonrpcserver icon indicating copy to clipboard operation
jsonrpcserver copied to clipboard

Broken on Python 3.12 due to unmaintained OSlash dep

Open voice-of-texnoforge opened this issue 1 year ago • 4 comments

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 avatar Feb 29 '24 14:02 voice-of-texnoforge

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.

voice-of-texnoforge avatar Feb 29 '24 14:02 voice-of-texnoforge

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.

briceparmentier avatar Apr 24 '24 14:04 briceparmentier

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.

voice-of-texnoforge avatar Apr 24 '24 19:04 voice-of-texnoforge

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.

briceparmentier avatar Apr 25 '24 19:04 briceparmentier

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

bcb avatar Jul 30 '24 23:07 bcb