klauer / blark

Beckhoff TwinCAT ST (IEC 61131-3) code parsing in Python using Lark (Earley)
https://klauer.github.io/blark/
GNU General Public License v2.0
42 stars 5 forks source link

Python 3.8 import of blark (-> apischema) may fail #50

Closed klauer closed 1 year ago

klauer commented 1 year ago

Seeing this error on CI:

https://github.com/klauer/blark/actions/runs/4419005433/jobs/7746872821

blark/__init__.py:4: in <module>
    from .parse import get_parser, parse_project, parse_source_code
blark/parse.py:17: in <module>
    from . import summary
blark/summary.py:10: in <module>
    from . import transform as tf
blark/transform.py:22: in <module>
    import apischema
/opt/hostedtoolcache/Python/3.8.16/x64/lib/python3.8/site-packages/apischema/__init__.py:29: in <module>
    from . import (  # noqa: F401
/opt/hostedtoolcache/Python/3.8.16/x64/lib/python3.8/site-packages/apischema/json_schema/__init__.py:8: in <module>
    from .schema import definitions_schema, deserialization_schema, serialization_schema
/opt/hostedtoolcache/Python/3.8.16/x64/lib/python3.8/site-packages/apischema/json_schema/schema.py:46: in <module>
    from apischema.json_schema.types import JsonSchema, JsonType, json_schema
/opt/hostedtoolcache/Python/3.8.16/x64/lib/python3.8/site-packages/apischema/json_schema/types.py:71: in <module>
    serializer(Conversion(dict, source=JsonSchema))
/opt/hostedtoolcache/Python/3.8.16/x64/lib/python3.8/site-packages/apischema/conversions/converters.py:165: in serializer
    resolved = resolve_conversion(serializer)
/opt/hostedtoolcache/Python/3.8.16/x64/lib/python3.8/site-packages/apischema/conversions/conversions.py:73: in resolve_conversion
    source, target = converter_types(
/opt/hostedtoolcache/Python/3.8.16/x64/lib/python3.8/site-packages/apischema/conversions/utils.py:35: in converter_types
    if target is None and is_type(converter):
/opt/hostedtoolcache/Python/3.8.16/x64/lib/python3.8/site-packages/apischema/typing.py:250: in is_type
    return isinstance(tp, type) and not get_args(tp)
/opt/hostedtoolcache/Python/3.8.16/x64/lib/python3.8/site-packages/apischema/typing.py:54: in get_args
    res = tp.__args__
E   AttributeError: type object 'dict' has no attribute '__args__'

It's almost certainly apischema's fault, but perhaps our dependency pinning could be updated to fix it on our end (?)

Alternatively, we may move to Python 3.9+ anyway since the NEP29 deprecation schedule moves to Python 3.9+ on Apr 14, 2023

klauer commented 1 year ago

We're past the NEP29 deprecation schedule for 3.8, and we only test on Python 3.9+ now. Closing as "will not fix"