from __future__ import absolute_import
import os

# get is_CASA6 and is_python3
from casatasks.private.casa_transition import *
if is_CASA6:
    from casatools import ms as mstool
    from casatools import calibrater
    from casatasks import casalog
    from .mstools import write_history
    from .parallel.parallel_task_helper import ParallelTaskHelper
    from .parallel.parallel_data_helper import ParallelDataHelper

    _ms = mstool( )
    _cb = calibrater( )
else:
    from taskinit import casalog, cbtool, mstool
    from mstools import write_history
    from parallel.parallel_task_helper import ParallelTaskHelper
    from parallel.parallel_data_helper import ParallelDataHelper

    _ms = mstool( )
    _cb = cbtool( )

def delmod(vis=None,otf=None,field=None,scr=None):

    casalog.origin('delmod')

    # Do the trivial parallelization
    if ParallelDataHelper.isMMSAndNotServer(vis):
        helper = ParallelTaskHelper('delmod', locals())
        helper.go()
        return


    #Python script

    # only if vis exists...
    if ((type(vis)==str) & (os.path.exists(vis))):
        # ... and we are asked to do something...
        # open without adding anything!
        _cb.open(vis,addcorr=False,addmodel=False)
        _cb.delmod(otf=otf,field=field,scr=scr)
        _cb.close()
    else:
        raise ValueError('Visibility data set not found - please verify the name')

    # Write history to MS
    try:
        param_names = delmod.__code__.co_varnames[:delmod.__code__.co_argcount]
        if is_python3:
            vars = locals( )
            param_vals = [vars[p] for p in param_names]
        else:
            param_vals = [eval(p) for p in param_names]
        write_history(mstool(), vis, 'delmod', param_names,
                      param_vals, casalog)
    except Exception as instance:
        casalog.post("*** Error \'%s\' updating HISTORY" % (instance),
                     'WARN')