Made with KolourPaint and screenshots from Kate (with the GitHub theme).

you are viewing a single comment's thread
view the rest of the comments
[–] 1 point 1 year ago (2 children)

i mean, i'm all for rejiggering the internals. i've personally written at least two libraries that uses type annotations in reverse to force arguments into the correct type, and i feel like that should probably be a separate mechanism to "just call the annotation"

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 1 year ago (1 child)

    dataclasses do this for you at the class level. They enforce type annotations at instantiation.

    https://docs.python.org/3/library/dataclasses.html

  • source
  • parent
  • hideshow 1 child comment
  • [–] 1 point 1 year ago* (last edited 1 year ago)

    i think we're talking about different things. you use enforce to mean "validate", i used it to mean "coerce". one of the cases was a command line argument parser that consisted of a single decorator, so you could write

    
    @command
    def foo(bar: int, baz: float):
        print(baz * 2 + bar * 3)
    

    and call it with $ myfile.py foo --bar 3 --baz 2.2 and it would print 13.4

    another was about creating working protocol buffers from an excel sheet, nested types and enums and oneofs and everything. we used it to parameterize tests of our bluetooth protocol.

  • source
  • parent