Skip to content

How far are we from @dataclass #356

@junrushao

Description

@junrushao
  • Init: generates __init__ (we implemented some of the logics in @c_class)

    • flag init=True in @dataclass
    • flag init=True in dataclasses.field
    • run __post_init__ if presents
    • default=MISSING, default_factory=MISSING in dataclasses.field
    • InitVar
    • ClassVar
    • kw_only=False in @dataclass
    • kw_only=MISSING in dataclasses.field
    • dataclasses.KW_ONLY
  • Repr: generates __repr__

    • flag repr=True in @dataclass
    • flag repr=True in dataclasses.field
  • Copy: Generate copy interface

    • def __copy__(self)
    • def __deepcopy__(self, memo)
    • def __replace__(self, **changes) and dataclasses.replace
  • Comparison

    • eq=True in @dataclass: generates __eq__ and __ne__
    • order=False in @dataclass: generates __lt__, __le__, __gt__, and __ge__,
    • compare=True in dataclasses.field
  • Mutability and extra slots:

  • Hashing

    • unsafe_hash=False
    • hash=None

Misc

  • match_args=True in @dataclass
  • metadata=None in dataclasses.field
  • doc=None in dataclasses.field
  • dataclasses.fields
  • dataclasses.asdict
  • dataclasses.astuple
  • dataclasses.make_dataclass
  • dataclasses.is_dataclass

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions