def designPrimers(p3_args, input_log=None, output_log=None, err_log=None):
sp = subprocess.Popen([pjoin(PRIMER3_HOME, '<STR_LIT>')],<EOL>stdout=subprocess.PIPE, stdin=subprocess.PIPE,<EOL>stderr=subprocess.STDOUT)<EOL>p3_args.setdefault('<STR_LIT>',<EOL>pjoin(PRIMER3_HOME, '<STR_LIT>'))<EOL>in_str = _formatBoulderIO(p3_args)<EOL>if input_log:<EOL><INDENT>input_log.write(in_str)<EOL>input_log.flush()<EOL><DEDENT>out_str, err_str = sp.communicate(input=in_str)<EOL>if output_log:<EOL><INDENT>output_log.write(out_str)<EOL>output_log.flush()<EOL><DEDENT>if err_log and err_str is not None:<EOL><INDENT>err_log.write(err_str)<EOL>err_log.flush()<EOL><DEDENT>return _parseBoulderIO(out_str)<EOL>
Return the raw primer3_core output for the provided primer3 args.

    Returns an ordered dict of the boulderIO-format primer3 output file