nicfit/util.py
def copytree(src, dst, symlinks=True):
    """
    Modified from shutil.copytree docs code sample, merges files rather than
    requiring dst to not exist.
    """
    from shutil import copy2, Error, copystat

    names = os.listdir(src)

    if not Path(dst).exists():
        os.makedirs(dst)

    errors = []
    for name in names:
        srcname = os.path.join(src, name)
        dstname = os.path.join(dst, name)
        try:
            if symlinks and os.path.islink(srcname):
                linkto = os.readlink(srcname)
                os.symlink(linkto, dstname)
            elif os.path.isdir(srcname):
                copytree(srcname, dstname, symlinks)
            else:
                copy2(srcname, dstname)
            # XXX What about devices, sockets etc.?
        except OSError as why:
            errors.append((srcname, dstname, str(why)))
        # catch the Error from the recursive copytree so that we can
        # continue with other files
        except Error as err:
            errors.extend(err.args[0])
    try:
        copystat(src, dst)
    except OSError as why:
        # can't copy file access times on Windows
        if why.winerror is None:
            errors.extend((src, dst, str(why)))
    if errors:
        raise Error(errors)
def copytree(src, dst, symlinks=True):
    from shutil import copy2, Error, copystat

    names = os.listdir(src)

    if not Path(dst).exists():
        os.makedirs(dst)

    errors = []
    for name in names:
        srcname = os.path.join(src, name)
        dstname = os.path.join(dst, name)
        try:
            if symlinks and os.path.islink(srcname):
                linkto = os.readlink(srcname)
                os.symlink(linkto, dstname)
            elif os.path.isdir(srcname):
                copytree(srcname, dstname, symlinks)
            else:
                copy2(srcname, dstname)
            # XXX What about devices, sockets etc.?
        except OSError as why:
            errors.append((srcname, dstname, str(why)))
        # catch the Error from the recursive copytree so that we can
        # continue with other files
        except Error as err:
            errors.extend(err.args[0])
    try:
        copystat(src, dst)
    except OSError as why:
        # can't copy file access times on Windows
        if why.winerror is None:
            errors.extend((src, dst, str(why)))
    if errors:
        raise Error(errors)
def copytree ( src , dst , symlinks = True ) : from shutil import copy2 , Error , copystat names = os . listdir ( src ) if not Path ( dst ) . exists ( ) : os . makedirs ( dst ) errors = [ ] for name in names : srcname = os . path . join ( src , name ) dstname = os . path . join ( dst , name ) try : if symlinks and os . path . islink ( srcname ) : linkto = os . readlink ( srcname ) os . symlink ( linkto , dstname ) elif os . path . isdir ( srcname ) : copytree ( srcname , dstname , symlinks ) else : copy2 ( srcname , dstname ) # XXX What about devices, sockets etc.? except OSError as why : errors . append ( ( srcname , dstname , str ( why ) ) ) # catch the Error from the recursive copytree so that we can # continue with other files except Error as err : errors . extend ( err . args [ 0 ] ) try : copystat ( src , dst ) except OSError as why : # can't copy file access times on Windows if why . winerror is None : errors . extend ( ( src , dst , str ( why ) ) ) if errors : raise Error ( errors )
Modified from shutil.copytree docs code sample, merges files rather than
    requiring dst to not exist.
Modified from shutil . copytree docs code sample merges files rather than requiring dst to not exist .