'Computes square-free part of ``f``.
Examples
>>> from sympy import Poly
>>> from sympy.abc import x
>>> Poly(x**3 - 3*x - 2, x).sqf_part()
Poly(x**2 - x - 2, x, domain=\'ZZ\')'

def sqf_part(f):

    if hasattr(f.rep, 'sqf_part'):
        result = f.rep.sqf_part()
    else:
        raise OperationNotSupported(f, 'sqf_part')
    return f.per(result)
