TypeError: non-default argument 'value' follows default argument
George-Ogden opened this issue · 1 comments
George-Ogden commented
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
.
George-Ogden commented
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?