def __new__(cls, *args):
new = super(BaseDateTuple, cls).__new__(cls)<EOL>if BaseDateTuple._is_valid_args(args):<EOL><INDENT>if isinstance(args[<NUM_LIT:0>], BaseDateTuple):<EOL><INDENT>new.date = args[<NUM_LIT:0>].date<EOL><DEDENT>else:<EOL><INDENT>new.date = (args[<NUM_LIT:0>], args[<NUM_LIT:1>], args[<NUM_LIT:2>])<EOL><DEDENT><DEDENT>else:<EOL><INDENT>msg = str(args) + "<STR_LIT>"<EOL>raise ValueError(msg)<EOL><DEDENT>return new<EOL>
:param args: should be three ints (year, month, day)