Module Expr Str Import alias identifier Import alias Import alias Import alias Import alias ImportFrom alias ImportFrom alias ImportFrom alias ImportFrom alias FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str If NameLoad body Assign NameStore Call NameLoad NameLoad orelse Assign NameStore Call NameLoad NameLoad Assign NameStore Call NameLoad For NameStore NameLoad body If CompareIn AttributeLoad NameLoad attr NameLoad body Raise NameLoad Call AttributeLoad Str attr AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Dict Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Str Return SubscriptLoad Call AttributeLoad Str attr ListComp SubscriptLoad NameLoad Index NameLoad comprehension NameStore NameLoad Slice Num decorator_list FunctionDef arguments args NameParam defaults body Expr Str If CompareIs NameLoad NameLoad body Return NameLoad Return Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str If CompareIs NameLoad NameLoad body Return NameLoad Return Call AttributeLoad Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr NameLoad attr Str Str decorator_list FunctionDef arguments args NameParam defaults body Expr Str If CompareIs NameLoad NameLoad body Return NameLoad Return Call AttributeLoad Call NameLoad NameLoad attr Str Str decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign TupleStore NameStore NameStore NameStore Call NameLoad Call AttributeLoad Str attr keyword NameLoad Assign NameStore Num Assign NameStore Num TryExcept body With Call NameLoad NameLoad Str NameStore body Pass Return NameLoad handlers ExceptHandler type NameLoad name NameStore body If CompareEq AttributeLoad NameLoad attr NameLoad body Expr Call NameLoad Num TryExcept body With Call NameLoad NameLoad Str NameStore body Pass Return NameLoad handlers ExceptHandler type NameLoad name NameStore body If CompareEq AttributeLoad NameLoad attr NameLoad body Return NameLoad orelse If CompareEq AttributeLoad NameLoad attr NameLoad body Return NameLoad orelse If CompareEq AttributeLoad NameLoad attr NameLoad body Return NameLoad orelse Return NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str If BoolOpAnd UnaryOpNot Call AttributeLoad NameLoad attr NameLoad UnaryOpNot Call AttributeLoad NameLoad attr NameLoad body TryExcept body Expr Call AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad name NameStore body If CompareEq AttributeLoad NameLoad attr Num body Pass orelse Raise Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str If Call AttributeLoad NameLoad attr NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str If Call AttributeLoad NameLoad attr NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad NameLoad orelse Expr Call AttributeLoad Call NameLoad NameLoad Str attr decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Return ListComp Call AttributeLoad NameLoad attr NameLoad BinOpAdd BinOpAdd NameLoad Str Call NameLoad NameLoad comprehension NameStore Call NameLoad Num NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore ListLoad TryExcept body With Call NameLoad NameLoad Str NameStore body For NameStore NameLoad body Expr Call AttributeLoad NameLoad attr Call NameLoad Call AttributeLoad NameLoad attr handlers ExceptHandler type TupleLoad NameLoad NameLoad name NameStore body Raise Call NameLoad BinOpAdd Call AttributeLoad Str attr keyword NameLoad Call NameLoad NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str TryExcept body With Call NameLoad NameLoad Str NameStore body For NameStore NameLoad body Expr Call AttributeLoad NameLoad attr BinOpAdd Call NameLoad NameLoad Str handlers ExceptHandler type TupleLoad NameLoad NameLoad name NameStore body Raise Call NameLoad BinOpAdd Call AttributeLoad Str attr keyword NameLoad Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str If CompareIs NameLoad NameLoad body Return NameLoad If Call NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad For NameStore NameLoad body If UnaryOpNot Call NameLoad NameLoad body Raise Call NameLoad Call AttributeLoad Str attr keyword NameLoad keyword NameLoad Return NameLoad orelse Raise Call NameLoad Call AttributeLoad Str attr keyword NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad AttributeLoad NameLoad attr NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr orelse Assign NameStore Call AttributeLoad NameLoad attr NameLoad If CompareIs NameLoad NameLoad body Assign NameStore BinOpAdd Str Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args defaults body Expr Str Import alias Return SubscriptLoad Call AttributeLoad Call NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr attr Str Index Num decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return BinOpPow Num UnaryOpUSub BinOpDiv NameLoad Num decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If BoolOpOr CompareIs NameLoad NameLoad CompareEq Call NameLoad NameLoad Num body Raise Call NameLoad Str If CompareIn NameLoad NameLoad body Raise Call NameLoad Str With Call NameLoad Call NameLoad NameLoad Str NameStore body For NameStore NameLoad body With Call NameLoad Call NameLoad NameLoad Str NameStore body For NameStore NameLoad body Expr Call AttributeLoad NameLoad attr BinOpAdd Call AttributeLoad NameLoad attr Str decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Assign NameStore ListLoad For NameStore Call AttributeLoad NameLoad attr NameLoad body If CompareIs NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad orelse If Call AttributeLoad NameLoad attr NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad Return NameLoad decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults body Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr Num Assign AttributeStore NameLoad attr Num Assign AttributeStore NameLoad attr Num Assign AttributeStore NameLoad attr Num Assign AttributeStore NameLoad attr Num Assign AttributeStore NameLoad attr Num Assign AttributeStore NameLoad attr Num Assign AttributeStore NameLoad attr Num Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore NameLoad If BoolOpOr CompareEq NameLoad Str CompareEq NameLoad Str body Return While CompareGt Call NameLoad NameLoad Num body Assign NameStore Num While BoolOpAnd Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr CompareLt NameLoad Call NameLoad NameLoad body AugAssignAdd NameStore Num Assign NameStore Call NameLoad SubscriptLoad NameLoad Slice NameLoad Assign NameStore SubscriptLoad NameLoad Index NameLoad Assign NameStore SubscriptLoad NameLoad Slice BinOpAdd NameLoad Num If CompareEq NameLoad Str body AugAssignAdd AttributeStore NameLoad attr NameLoad orelse If CompareEq NameLoad Str body AugAssignAdd AttributeStore NameLoad attr NameLoad orelse If CompareEq NameLoad Str body AugAssignAdd AttributeStore NameLoad attr NameLoad orelse If CompareEq NameLoad Str body AugAssignAdd AttributeStore NameLoad attr NameLoad orelse If CompareEq NameLoad Str body AugAssignAdd AttributeStore NameLoad attr NameLoad orelse If CompareEq NameLoad Str body AugAssignAdd AttributeStore NameLoad attr NameLoad orelse If CompareEq NameLoad Str body AugAssignAdd AttributeStore NameLoad attr NameLoad orelse If CompareEq NameLoad Str body AugAssignAdd AttributeStore NameLoad attr NameLoad orelse Raise Call NameLoad BinOpAdd Str Call AttributeLoad Str attr keyword NameLoad decorator_list FunctionDef arguments args NameParam defaults body Return BinOpAdd BinOpAdd BinOpAdd BinOpAdd BinOpAdd BinOpAdd Call AttributeLoad Str attr keyword AttributeLoad NameLoad attr Call AttributeLoad Str attr keyword AttributeLoad NameLoad attr Call AttributeLoad Str attr keyword AttributeLoad NameLoad attr Call AttributeLoad Str attr keyword AttributeLoad NameLoad attr Call AttributeLoad Str attr keyword AttributeLoad NameLoad attr Call AttributeLoad Str attr keyword AttributeLoad NameLoad attr Call AttributeLoad Str attr keyword AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Return BoolOpOr CompareEq AttributeLoad NameLoad attr Str CompareEq AttributeLoad NameLoad attr Str CompareEq BinOpAdd BinOpAdd AttributeLoad NameLoad attr AttributeLoad NameLoad attr AttributeLoad NameLoad attr Call NameLoad NameLoad decorator_list decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr Str Assign TupleStore NameStore NameStore TupleLoad Call NameLoad SubscriptLoad NameLoad Index Num SubscriptLoad NameLoad Index Num If Call AttributeLoad NameLoad attr NameLoad body Return NameLoad orelse Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If UnaryOpNot Call AttributeLoad NameLoad attr NameLoad body Raise Call NameLoad Call AttributeLoad Str attr keyword NameLoad If CompareEq Call NameLoad NameLoad Call NameLoad NameLoad body Raise Call NameLoad Str With Call NameLoad NameLoad Str NameStore body With Call NameLoad NameLoad Str NameStore body For TupleStore NameStore NameStore Call NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr Call AttributeLoad Str attr keyword NameLoad If BoolOpOr Call AttributeLoad NameLoad attr Str Call AttributeLoad NameLoad attr Str Call NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad orelse Expr Call AttributeLoad NameLoad attr Call AttributeLoad Str attr keyword BinOpAdd NameLoad Num decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If CompareNotEq Call NameLoad NameLoad Call NameLoad NameLoad body If BoolOpOr Call AttributeLoad NameLoad attr NameLoad Call AttributeLoad NameLoad attr NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr Call AttributeLoad Str attr keyword NameLoad keyword NameLoad Expr Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list
N/A N/A Define util functions. N/A os.path op N/A os N/A shutil N/A logging N/A sys time sleep pbcore.util.Process backticks pbcore.io.FastaIO FastaReader pbcore.io.FastqIO FastqReader check_ids_unique N/A N/A fa_or_fq_filename is_fq N/A False N/A N/A 
    Confirm that a FASTA/FASTQ file has all unique IDs
    (used probably by collapse or fusion finding script)
     N/A is_fq N/A N/A reader N/A FastqReader fa_or_fq_filename N/A N/A reader N/A FastaReader fa_or_fq_filename N/A seen N/A set N/A r reader N/A N/A N/A N/A r id seen N/A N/A Exception N/A N/A Duplicate id {0} detected. Abort! format N/A r id N/A N/A N/A seen add N/A r id N/A revcmp N/A N/A seq N/A N/A N/A Given a sequence return its reverse complement sequence. N/A NTMAP N/A a c t g A C T G * n N t g a c T G A C * n N N/A N/A N/A N/A join N/A N/A NTMAP N/A x N/A x seq N/A -1 N/A realpath N/A N/A f N/A N/A N/A Return absolute, user expanded path. N/A N/A f None N/A N/A None N/A N/A N/A op abspath N/A N/A op expanduser f N/A real_ppath N/A N/A fn N/A N/A N/A Return real 'python-style' path of a file.
    Consider files with white spaces in their paths, such as
    'res\ with\ space/out.sam' or 'res with space/out.sam',
    'res\ with\ space/out.sam' is unix-style file path.
    'res with space/out.sam' is python style file path.

    We need to convert all '\_' in path to ' ' so that python
    can handle files with space correctly, which means that
    'res\ with\ space/out.sam' will be converted to
    'res with space/out.sam'.
     N/A N/A fn None N/A N/A None N/A N/A N/A N/A N/A op abspath N/A N/A op expanduser fn replace \  N/A real_upath N/A N/A fn N/A N/A N/A Return real 'unix-style' path of a file.
    Consider files with white spaces in their paths, such as
    'res\ with\ space/out.sam' or 'res with space/out.sam',
    'res\ with\ space/out.sam' is unix-style file path.
    'res with space/out.sam' is python style file path.

    We need to convert all ' ' to '\ ' so that unix can handle
    files with space correctly, which means that
    'res with space/out.sam' will be converted to
    'res\ with\ space/out.sam'.
     N/A N/A fn None N/A N/A None N/A N/A N/A N/A real_ppath fn replace \  N/A nfs_exists N/A N/A fn N/A N/A N/A Detect whether a NFS file or a directory exists or not.
    In rare cases, a file f, which is created by a node X,
    may not be detected by node Y immediately due to NFS latency.
    In even more rare cases, node Y's shell script may be able
    to detect f's existence while Y's python can not, because of
    a python file system cache latency. So in order to eliminate
    this problem, first call 'ls' to trigger mount, then detect
    existence of fn using python.open(fn, 'r'), and try twice
    before finally give up.

    This script should return True, if fn is either
    an existing file or an existing directory created before
    nfs_exists is called. However, this script may return an
    arbitrary value, if fn is created or deleted at the same
    time or after nfs_exists is called.
     N/A N/A _o _c _m N/A backticks N/A N/A ls {f} format f fn N/A ERROR_NO_SUCH_FILE_OR_DIRECTORY 2 N/A ERROR_IS_DIRECTORY 21 N/A N/A N/A N/A open fn r _reader N/A N/A N/A True N/A N/A N/A IOError N/A err N/A N/A N/A N/A err errno ERROR_NO_SUCH_FILE_OR_DIRECTORY N/A N/A N/A sleep 15 N/A N/A N/A N/A open fn r _reader N/A N/A N/A True N/A N/A N/A IOError N/A err2 N/A N/A N/A N/A err2 errno ERROR_NO_SUCH_FILE_OR_DIRECTORY N/A N/A False N/A N/A N/A N/A err2 errno ERROR_IS_DIRECTORY N/A N/A True N/A N/A N/A N/A err errno ERROR_IS_DIRECTORY N/A N/A True N/A N/A False N/A False N/A mkdir N/A N/A path N/A N/A N/A Create a directory if it does not pre-exist,
    otherwise, pass. N/A N/A N/A N/A N/A op exists path N/A N/A N/A op lexists path N/A N/A N/A N/A N/A N/A os makedirs path N/A N/A N/A OSError N/A e N/A N/A N/A N/A e errno 17 N/A N/A N/A N/A N/A OSError e N/A mknewdir N/A N/A path N/A N/A N/A Create a new directory if it does not pre-exist,
    otherwise, delete it and then re-create it. N/A N/A N/A op exists path N/A N/A N/A N/A shutil rmtree path N/A N/A N/A os makedirs path N/A touch N/A N/A path N/A N/A N/A touch a file. N/A N/A N/A op exists path N/A N/A N/A N/A os utime path None N/A N/A N/A N/A N/A open path a close N/A generateChunkedFN N/A N/A out_dir prefix num_chunks N/A N/A N/A Generate n chunked file names, e.g.
    outDir/$prefix.0, outDir/$prefix.1, ..., outDir/$prefix.num_chunks-1
     N/A N/A N/A N/A op join out_dir N/A N/A prefix . N/A str i N/A i N/A xrange 0 num_chunks N/A get_files_from_fofn N/A N/A fofn_filename N/A N/A N/A Return a list of file names within a fofn file. N/A fns N/A N/A N/A N/A N/A open fofn_filename r fofn N/A N/A line fofn N/A N/A N/A N/A fns append N/A realpath N/A N/A line strip N/A N/A N/A N/A IOError OSError N/A e N/A N/A N/A IOError N/A N/A N/A Failed to read from fofn file {fofn}.
 format fofn fofn_filename N/A str e N/A fns N/A write_files_to_fofn N/A N/A file_names fofn_filename N/A N/A N/A Write files in list file_names to fofn_filename. N/A N/A N/A N/A open fofn_filename w fofn N/A N/A fn file_names N/A N/A N/A N/A fofn write N/A N/A str fn N/A N/A N/A N/A IOError OSError N/A e N/A N/A N/A IOError N/A N/A N/A Failed to files to fofn file {fofn}.
 format fofn fofn_filename N/A str e N/A validate_fofn N/A N/A fofn_filename N/A N/A N/A Validate existence of FOFN and files within the FOFN.

    :param fofn: (str) Path to File of file names or None.
    :raises: IOError if any file is not found.
    :return: (str) input fofn or None
     N/A N/A fofn_filename None N/A N/A None N/A N/A nfs_exists fofn_filename N/A N/A fns N/A get_files_from_fofn fofn_filename N/A fn fns N/A N/A N/A N/A nfs_exists fn N/A N/A N/A IOError N/A N/A Unable to find {f} in FOFN {fofn}. format f fn fofn fofn_filename N/A fofn_filename N/A N/A N/A IOError N/A N/A Unable to find FOFN {fofn}. format fofn fofn_filename N/A setup_log N/A N/A alog file_name level str_formatter N/A None N/A logging DEBUG None N/A N/A 
    Copied from mkocher's pbreports/utils.py.
    Util function for setting up logging.

    Due to how smrtpipe logs, the default behavior is that the stdout
    is where the logging is redirected. If a file name is given the log
    will be written to that file.

    :param log: (log instance) Log instance that handlers and filters will
    be added.
    :param file_name: (str, None), Path to file. If None, stdout will be used.
    :param level: (int) logging level
     N/A N/A file_name None N/A N/A handler N/A N/A logging StreamHandler N/A sys stdout N/A N/A handler N/A N/A logging FileHandler file_name N/A N/A str_formatter None N/A N/A str_formatter N/A [%(levelname)s] %(asctime)-15s  [%(name)s %(funcName)s %(lineno)d] %(message)s N/A formatter N/A N/A logging Formatter str_formatter N/A N/A N/A handler setFormatter formatter N/A N/A N/A alog addHandler handler N/A N/A N/A alog setLevel level N/A now_str N/A N/A N/A N/A N/A Return string of current time. N/A datetime N/A N/A N/A N/A N/A str N/A N/A N/A datetime datetime now split . N/A 0 N/A phred_to_qv N/A N/A phred N/A N/A N/A Phred value to quality value. N/A N/A 10 N/A N/A phred 10.0 N/A cat_files N/A N/A src dst N/A N/A N/A Concatenate files in src and save to dst.
       src --- source file names in a list
       dst --- destinate file name
     N/A N/A N/A src None N/A N/A len src 0 N/A N/A N/A ValueError src should contain at least one file. N/A N/A dst src N/A N/A N/A IOError Unable to cat a file and save to itself. N/A N/A open N/A real_ppath dst w writer N/A N/A src_f src N/A N/A N/A open N/A real_ppath src_f r reader N/A N/A line reader N/A N/A N/A N/A writer write N/A N/A N/A line rstrip N/A get_all_files_in_dir N/A N/A dir_path extension N/A None N/A N/A return all files in a directory. N/A fs N/A N/A f N/A N/A os listdir dir_path N/A N/A N/A extension None N/A N/A N/A N/A fs append f N/A N/A N/A N/A f endswith extension N/A N/A N/A N/A fs append f N/A fs N/A CIGAR N/A object N/A N/A Cigar string. __init__ N/A N/A self cigar_str N/A N/A N/A N/A self cigar_str cigar_str N/A N/A self num_match 0 N/A N/A self num_mismatch 0 N/A N/A self num_insert 0 N/A N/A self num_deletion 0 N/A N/A self num_hardclip 0 N/A N/A self num_softclip 0 N/A N/A self num_padding 0 N/A N/A self num_unknown 0 N/A N/A N/A self parse N/A self cigar_str N/A parse N/A N/A self cigar_str N/A N/A N/A Parse cigar string. N/A s cigar_str N/A N/A N/A s * N/A s = N/A N/A N/A N/A N/A len s 0 N/A N/A i 0 N/A N/A N/A N/A N/A s N/A i isdigit N/A i N/A len s N/A N/A i 1 N/A num N/A int N/A s N/A i N/A action N/A s N/A i N/A s N/A s N/A N/A i 1 N/A N/A action M N/A N/A N/A self num_match num N/A N/A N/A action X N/A N/A N/A self num_mismatch num N/A N/A N/A action I N/A N/A N/A self num_insert num N/A N/A N/A action D N/A N/A N/A self num_deletion num N/A N/A N/A action H N/A N/A N/A self num_hardclip num N/A N/A N/A action S N/A N/A N/A self num_softclip num N/A N/A N/A action P N/A N/A N/A self num_padding num N/A N/A N/A action N N/A N/A N/A self num_unknown num N/A N/A N/A ValueError N/A Can not parse CIGAR string  N/A N/A {s} format s cigar_str N/A __str__ N/A N/A self N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A Match = {m},  format m N/A self num_match N/A N/A Mismatch = {m},  format m N/A self num_mismatch N/A N/A Insert = {m},  format m N/A self num_insert N/A N/A Deletion = {m},  format m N/A self num_deletion N/A N/A HardClipping = {m},  format m N/A self num_hardclip N/A N/A SoftClipping = {m},  format m N/A self num_softclip N/A N/A Padding = {m},  format m N/A self num_padding N/A match_seq N/A N/A self seq N/A N/A N/A Return if this cigar string matches the sequence. N/A N/A N/A N/A self cigar_str * N/A N/A self cigar_str = N/A N/A N/A N/A self num_match N/A self num_insert N/A self num_softclip N/A len seq N/A N/A cigar_match_seq N/A N/A sam_str N/A N/A N/A Return True if cigar length match sequence length, otherwise, False N/A fields N/A N/A sam_str split N/A N/A cigar seq N/A N/A CIGAR N/A fields N/A 5 N/A fields N/A 9 N/A N/A N/A cigar match_seq seq N/A N/A True N/A N/A False N/A filter_sam N/A N/A in_sam out_sam N/A N/A N/A Filter sam alignments with bad cigar string. N/A N/A N/A N/A op exists in_sam N/A N/A N/A IOError N/A N/A Unable to find input sam {f} format f in_sam N/A N/A N/A realpath in_sam N/A realpath out_sam N/A N/A N/A IOError in_sam and out_sam can not be identical. N/A N/A open in_sam r reader N/A N/A N/A open out_sam w writer N/A N/A N/A l in_line N/A enumerate reader N/A N/A N/A N/A logging info N/A N/A Processing {l} format l in_line N/A N/A N/A N/A in_line startswith # N/A N/A in_line startswith @ N/A cigar_match_seq in_line N/A N/A N/A N/A writer write in_line N/A N/A N/A N/A logging warn N/A N/A line {l}, cigar does not match sequence. format l N/A l 1 N/A ln N/A N/A src dst N/A N/A N/A if src and dst are identical, pass. Otherwise, create dst, a soft
    symbolic link pointing to src. N/A N/A N/A realpath src N/A realpath dst N/A N/A N/A N/A N/A op exists dst N/A N/A op lexists dst N/A N/A N/A N/A os remove dst N/A N/A N/A logging debug N/A N/A Creating a symbolic link {dst} pointing to {src} format dst dst src src N/A N/A N/A os symlink src dst N/A