def _ivo_apply_pm(args):
    if len(args) != 5:
        raise common.UfuncError(
            "ivo_apply_pm requires exactly ra, dec, pmra, pmdec, epdist.")

    ra, dec, pmra, pmdec, epdist = [nodes.flatten(a) for a in args]
    return ("spoint(RADIANS({ra}+{pmra}/cos(RADIANS({dec})*{epdist})),"
            " RADIANS({dec}+{pmdec}*{epdist}))").format(**locals())
 def _booleanizeThis(node, operator, operand):
     if len(node.args) != 2:
         raise common.UfuncError("%s takes exactly two arguments" %
                                 funcName)
     return morphhelpers.addNotToBooleanized(
         booleanExpr % {
             '1': nodes.flatten(node.args[0]),
             '2': nodes.flatten(node.args[1])
         }, operator, operand)
def _ivo_healpix_index(args):
    if len(args) == 2:
        return "healpix_nest(%s, %s)" % (nodes.flatten(
            args[0]), nodes.flatten(args[1]))
    elif len(args) == 3:
        return "healpix_nest(%s, spoint(RADIANS(%s), RADIANS(%s)))" % (
            nodes.flatten(args[0]), nodes.flatten(
                args[1]), nodes.flatten(args[2]))
    else:
        raise common.UfuncError(
            "ivo_healpix_index takes either (ra, dec, order)"
            " or (point, order) arguments")
def _match(args):
    if len(args) != 2:
        raise common.UfuncError("gavo_match takes exactly two arguments")
    return "(CASE WHEN %s ~ %s THEN 1 ELSE 0 END)" % (nodes.flatten(
        args[1]), nodes.flatten(args[0]))
 def _getFunc(self):
     try:
         return UFUNC_REGISTRY[self.funName.upper()]
     except:
         raise common.UfuncError("No such function: %s" % self.funName)
def _ivo_healpix_center(args):
    if len(args) != 2:
        raise common.UfuncError("ivo_healpix_center only takes (index, order)"
                                " arguments")
    return "center_of_healpix_nest(%s, %s)" % (nodes.flatten(
        args[0]), nodes.flatten(args[1]))
def _string_agg(args):
    if len(args) != 2:
        raise common.UfuncError("ivo_string_agg takes exactly two arguments")
    return "string_agg(%s, %s)" % (nodes.flatten(
        args[0]), nodes.flatten(args[1]))
def _to_jd(args):
    if len(args) != 1:
        raise common.UfuncError(
            "gavo_to_jd takes exactly one timestamp argument")
    return "ts_to_jd(%s)" % nodes.flatten(args[0])
def _hashlist_has(args):
    if len(args) != 2:
        raise common.UfuncError("ivo_haslist_has takes exactly two arguments")
    return None
def _nocasematch(args):
    if len(args) != 2:
        raise common.UfuncError("ivo_nocasematch takes exactly two arguments")
    return None
def _hasword(args):
    if len(args) != 2:
        raise common.UfuncError("ivo_hasword takes exactly two arguments")
    return None