astropy.units.quantity_input = <bound method QuantityInput.as_decorator of <class 'astropy.units.decorators.QuantityInput'>> [edit on github]

A decorator for validating the units of arguments to functions.

Unit specifications can be provided as keyword arguments to the decorator, or by using Python 3’s function annotation syntax. Arguments to the decorator take precedence over any function annotations present.

A UnitsError will be raised if the unit attribute of the argument is not equivalent to the unit specified to the decorator or in the annotation. If the argument has no unit attribute, i.e. it is not a Quantity object, a ValueError will be raised.

Where an equivalency is specified in the decorator, the function will be executed with that equivalency in force.


The checking of arguments inside variable arguments to a function is not supported (i.e. *arg or **kwargs).


Python 2 and 3:

import astropy.units as u
def myfunction(myangle):
    return myangle**2

Python 3 only:

import astropy.units as u
def myfunction(myangle: u.arcsec):
    return myangle**2

Using equivalencies:

import astropy.units as u
@u.quantity_input(myenergy=u.eV, equivalencies=u.mass_energy())
def myfunction(myenergy):
    return myenergy**2