(expr, gens, args, method)
Helper function for :func:`sqf_list` and :func:`factor_list`.
Helper function for :func:`sqf_list` and :func:`factor_list`.
Helper function for : func : sqf_list and : func : factor_list .
def _generic_factor_list(expr, gens, args, method):
    """Helper function for :func:`sqf_list` and :func:`factor_list`. """
    options.allowed_flags(args, ['frac', 'polys'])
    opt = options.build_options(gens, args)

    expr = sympify(expr)

    if isinstance(expr, Expr) and not expr.is_Relational:
        numer, denom = together(expr).as_numer_denom()

        cp, fp = _symbolic_factor_list(numer, opt, method)
        cq, fq = _symbolic_factor_list(denom, opt, method)

        if fq and not opt.frac:
            raise PolynomialError("a polynomial expected, got %s" % expr)

        _opt = opt.clone(dict(expand=True))

        for factors in (fp, fq):
            for i, (f, k) in enumerate(factors):
                if not f.is_Poly:
                    f, _ = _poly_from_expr(f, _opt)
                    factors[i] = (f, k)

        fp = _sorted_factors(fp, method)
        fq = _sorted_factors(fq, method)

        if not opt.polys:
            fp = [(f.as_expr(), k) for f, k in fp]
            fq = [(f.as_expr(), k) for f, k in fq]

        coeff = cp/cq

        if not opt.frac:
            return coeff, fp
        else:
            return coeff, fp, fq
    else:
        raise PolynomialError("a polynomial expected, got %s" % expr)
def _generic_factor_list ( expr , gens , args , method ) : options . allowed_flags ( args , [ 'frac' , 'polys' ] ) opt = options . build_options ( gens , args ) expr = sympify ( expr ) if isinstance ( expr , Expr ) and not expr . is_Relational : numer , denom = together ( expr ) . as_numer_denom ( ) cp , fp = _symbolic_factor_list ( numer , opt , method ) cq , fq = _symbolic_factor_list ( denom , opt , method ) if fq and not opt . frac : raise PolynomialError ( "a polynomial expected, got %s" % expr ) _opt = opt . clone ( dict ( expand = True ) ) for factors in ( fp , fq ) : for i , ( f , k ) in enumerate ( factors ) : if not f . is_Poly : f , _ = _poly_from_expr ( f , _opt ) factors [ i ] = ( f , k ) fp = _sorted_factors ( fp , method ) fq = _sorted_factors ( fq , method ) if not opt . polys : fp = [ ( f . as_expr ( ) , k ) for f , k in fp ] fq = [ ( f . as_expr ( ) , k ) for f , k in fq ] coeff = cp / cq if not opt . frac : return coeff , fp else : return coeff , fp , fq else : raise PolynomialError ( "a polynomial expected, got %s" % expr )