Impunity: A Python library to check physical units
- Easy to use
- Based on a decorator, to add on any annotated function or class 
- Support for various annotation styles
- Usable with Annotated object or string annotations 
- Integration with popular Python type checkers.
- Can be used along mypy for powerful typing systems 
- No additional runtime overhead
- Impunity works directly on the AST for a static analysis of your code 
@impunity
def speed(d: "m", t: "s") -> "m / s":
   return d / t
speed(10, 10) # returns 1
@impunity
def speed(d: "m", t: "s") -> "km / h":
   return d / t
speed(10, 10) # returns 3.6
@impunity
def speed(d: "m", t: "s") -> "feet":
   return d / t
# Warning: "Incompatible unit returned"
@impunity
def speed(d: "m", t: "s") -> "m / s":
   return d + t
# Warning: "Types are not compatible"