google-deepmind/chex

TypeError: non-default argument 'value' follows default argument

George-Ogden opened this issue · 1 comments

I'm trying to inherit from a dataclass with an optional id in the parent, however, I am seeing TypeError: non-default argument 'value' follows default argument. This is the minimal code to reproduce.

from typing import Optional
import chex

@chex.dataclass
class Base:
    idx: Optional[int] = None

@chex.dataclass
class Derived(Base):
    value: int

This is an issue with the dataclasses library rather than chex.dataclasses, however, according to https://stackoverflow.com/questions/51575931/class-inheritance-in-python-3-7-dataclasses#answer-69822584, it is possible to fix by setting kw_only=True.

Sorry, I see this has been fixed in a later version when the following modification is made to the code:

from typing import Optional
import chex

@chex.dataclass(kw_only=True)
class Base:
    idx: Optional[int] = None

@chex.dataclass
class Derived(Base):
    value: int

However, would it be worth making this the default behaviour as chex.dataclass objects are all kw_only by default?