Skip to content

Support Any as an alias for object to describe a default typeclass implementation#307

@anatoly-scherbakov

Description

@anatoly-scherbakov

Context. In order to define a default implementation (the one used if no other implementation matches), we currently have to write something like this:

fromclassesimporttypeclass@typeclassdefrender(data_value) ->str: """Render a data value nicely."""@render.instance(int)def_render_int(data_value: int) ->str: returnf'This is an integer: {data_value}'@render.instance(object)def_render_int(data_value: object) ->str: returnf'No idea what this is: {data_value}'assertrender('BADOOM') =='No idea what this is: BADOOM'

(this script should be runnable as-is.)

Decision. Support Any as a special case to replace object:

@render.instance(Any)def_render_int(data_value: Any) ->str: # type: ignorereturnf'No idea what this is: {data_value}'

Consequences.

  • Pro: The code will look a little bit more straightforward;
  • Contra: mypy with common settings might be unhappy about Any being used, but that can be silenced with type: ignore I suppose.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions