old_contents: import os
  import shutil
  import re
  import logging
  
  DEFAULT_SKIP_FILES=re.compile(
      r"^(.*%(sep)s)?("
      r"(\..*)|"
      r"(#.*#)|"
      r"(.*~)|"
      r"(.*\.py[co])|"
      r"(.*\/RCS\/?.*)|"
      r"(.*\/CVS\/?.*)|"
      r"(.*\.egg-info.*)|"
      r")$" % {'sep': os.path.sep})
  
  def copytree_exists(src, dst, symlinks=False,
                      skip_files=DEFAULT_SKIP_FILES):
      if not os.path.exists(src):
          return
      names = os.listdir(src)
      if not os.path.exists(dst):
          os.mkdir(dst)
  
      errors = []
      for name in names:
          srcname = os.path.join(src, name)
          if skip_files.match(srcname):
              logging.debug('Ignoring file \'%s\': File matches ignore regex.',
                            srcname)
              continue
          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_exists(srcname, dstname, symlinks, skip_files=skip_files)
              else:
                  shutil.copy2(srcname, dstname)
          except (IOError, os.error), why:
              errors.append((srcname, dstname, why))
      if errors:
          print errors
  
  def copy_exists(srcname, dstname, symlinks=False):
      if not os.path.exists(srcname):
          return
      errors = []
      try:
          if symlinks and os.path.islink(srcname):
              linkto = os.readlink(srcname)
              os.symlink(linkto, dstname)
          else:
              shutil.copyfile(srcname, dstname)
              shutil.copystat(srcname, dstname)
      except (IOError, os.error), why:
          errors.append((srcname, dstname, why))
      if errors:
          print errors
  
  
new_contents: import os
  import shutil
  import re
  import logging
  
  DEFAULT_SKIP_FILES=re.compile(
      r"^(.*\%(sep)s)?("
      r"(\..*)|"
      r"(#.*#)|"
      r"(.*~)|"
      r"(.*\.py[co])|"
      r"(.*\/RCS\/?.*)|"
      r"(.*\/CVS\/?.*)|"
      r"(.*\.egg-info.*)|"
      r")$" % {'sep': os.path.sep})
  
  def copytree_exists(src, dst, symlinks=False,
                      skip_files=DEFAULT_SKIP_FILES):
      if not os.path.exists(src):
          return
      names = os.listdir(src)
      if not os.path.exists(dst):
          os.mkdir(dst)
  
      errors = []
      for name in names:
          srcname = os.path.join(src, name)
          if skip_files.match(srcname):
              logging.debug('Ignoring file \'%s\': File matches ignore regex.',
                            srcname)
              continue
          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_exists(srcname, dstname, symlinks, skip_files=skip_files)
              else:
                  shutil.copy2(srcname, dstname)
          except (IOError, os.error), why:
              errors.append((srcname, dstname, why))
      if errors:
          print errors
  
  def copy_exists(srcname, dstname, symlinks=False):
      if not os.path.exists(srcname):
          return
      errors = []
      try:
          if symlinks and os.path.islink(srcname):
              linkto = os.readlink(srcname)
              os.symlink(linkto, dstname)
          else:
              shutil.copyfile(srcname, dstname)
              shutil.copystat(srcname, dstname)
      except (IOError, os.error), why:
          errors.append((srcname, dstname, why))
      if errors:
          print errors
  
  
subject: Use os.path.sep in util.py for regex DEFAULT_SKIP_FILES