<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def pint2cfunits(value):
 """Return a CF-Convention unit string from a `pint` unit. Parameters value : pint.Unit Input unit. Returns ------- out : str Units following CF-Convention. """

    # Print units using abbreviations (millimeter -> mm)
    s = "{:~}".format(value)

    # Search and replace patterns
    pat = r'(?P<inverse>/ )?(?P<unit>\w+)(?: \*\* (?P<pow>\d))?'

    def repl(m):
        i, u, p = m.groups()
        p = p or (1 if i else '')
        neg = '-' if i else ('^' if p else '')

        return "{}{}{}".format(u, neg, p)

    out, n = re.subn(pat, repl, s)
    return out