home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 October / maximum-cd-2011-10.iso / DiscContents / digsby_setup.exe / lib / distutils / dir_util.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2011-06-22  |  4.3 KB  |  154 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. __revision__ = '$Id: dir_util.py 60923 2008-02-21 18:18:37Z guido.van.rossum $'
  5. import os
  6. import sys
  7. from types import *
  8. from distutils.errors import DistutilsFileError, DistutilsInternalError
  9. from distutils import log
  10. _path_created = { }
  11.  
  12. def mkpath(name, mode = 511, verbose = 0, dry_run = 0):
  13.     if not isinstance(name, StringTypes):
  14.         raise DistutilsInternalError, "mkpath: 'name' must be a string (got %r)" % (name,)
  15.     isinstance(name, StringTypes)
  16.     name = os.path.normpath(name)
  17.     created_dirs = []
  18.     if os.path.isdir(name) or name == '':
  19.         return created_dirs
  20.     if _path_created.get(os.path.abspath(name)):
  21.         return created_dirs
  22.     (head, tail) = os.path.split(name)
  23.     tails = [
  24.         tail]
  25.     while head and tail and not os.path.isdir(head):
  26.         (head, tail) = os.path.split(head)
  27.         tails.insert(0, tail)
  28.         continue
  29.         _path_created.get(os.path.abspath(name))
  30.     for d in tails:
  31.         head = os.path.join(head, d)
  32.         abs_head = os.path.abspath(head)
  33.         if _path_created.get(abs_head):
  34.             continue
  35.         
  36.         log.info('creating %s', head)
  37.         if not dry_run:
  38.             
  39.             try:
  40.                 os.mkdir(head)
  41.                 created_dirs.append(head)
  42.             except OSError:
  43.                 exc = None
  44.                 raise DistutilsFileError, "could not create '%s': %s" % (head, exc[-1])
  45.             except:
  46.                 None<EXCEPTION MATCH>OSError
  47.             
  48.  
  49.         None<EXCEPTION MATCH>OSError
  50.         _path_created[abs_head] = 1
  51.     
  52.     return created_dirs
  53.  
  54.  
  55. def create_tree(base_dir, files, mode = 511, verbose = 0, dry_run = 0):
  56.     need_dir = { }
  57.     for file in files:
  58.         need_dir[os.path.join(base_dir, os.path.dirname(file))] = 1
  59.     
  60.     need_dirs = need_dir.keys()
  61.     need_dirs.sort()
  62.     for dir in need_dirs:
  63.         mkpath(dir, mode, dry_run = dry_run)
  64.     
  65.  
  66.  
  67. def copy_tree(src, dst, preserve_mode = 1, preserve_times = 1, preserve_symlinks = 0, update = 0, verbose = 0, dry_run = 0):
  68.     copy_file = copy_file
  69.     import distutils.file_util
  70.     if not dry_run and not os.path.isdir(src):
  71.         raise DistutilsFileError, "cannot copy tree '%s': not a directory" % src
  72.     not os.path.isdir(src)
  73.     
  74.     try:
  75.         names = os.listdir(src)
  76.     except os.error:
  77.         (errno, errstr) = None
  78.         if dry_run:
  79.             names = []
  80.         else:
  81.             raise DistutilsFileError, "error listing files in '%s': %s" % (src, errstr)
  82.         dry_run
  83.  
  84.     if not dry_run:
  85.         mkpath(dst)
  86.     
  87.     outputs = []
  88.     for n in names:
  89.         src_name = os.path.join(src, n)
  90.         dst_name = os.path.join(dst, n)
  91.         if preserve_symlinks and os.path.islink(src_name):
  92.             link_dest = os.readlink(src_name)
  93.             log.info('linking %s -> %s', dst_name, link_dest)
  94.             if not dry_run:
  95.                 os.symlink(link_dest, dst_name)
  96.             
  97.             outputs.append(dst_name)
  98.             continue
  99.         if os.path.isdir(src_name):
  100.             outputs.extend(copy_tree(src_name, dst_name, preserve_mode, preserve_times, preserve_symlinks, update, dry_run = dry_run))
  101.             continue
  102.         copy_file(src_name, dst_name, preserve_mode, preserve_times, update, dry_run = dry_run)
  103.         outputs.append(dst_name)
  104.     
  105.     return outputs
  106.  
  107.  
  108. def _build_cmdtuple(path, cmdtuples):
  109.     for f in os.listdir(path):
  110.         real_f = os.path.join(path, f)
  111.         if os.path.isdir(real_f) and not os.path.islink(real_f):
  112.             _build_cmdtuple(real_f, cmdtuples)
  113.             continue
  114.         cmdtuples.append((os.remove, real_f))
  115.     
  116.     cmdtuples.append((os.rmdir, path))
  117.  
  118.  
  119. def remove_tree(directory, verbose = 0, dry_run = 0):
  120.     grok_environment_error = grok_environment_error
  121.     import distutils.util
  122.     log.info("removing '%s' (and everything under it)", directory)
  123.     if dry_run:
  124.         return None
  125.     cmdtuples = []
  126.     _build_cmdtuple(directory, cmdtuples)
  127.     for cmd in cmdtuples:
  128.         
  129.         try:
  130.             apply(cmd[0], (cmd[1],))
  131.             abspath = os.path.abspath(cmd[1])
  132.             if abspath in _path_created:
  133.                 del _path_created[abspath]
  134.         continue
  135.         except (IOError, OSError):
  136.             dry_run
  137.             exc = dry_run
  138.             log.warn(grok_environment_error(exc, 'error removing %s: ' % directory))
  139.             continue
  140.         
  141.  
  142.     
  143.  
  144.  
  145. def ensure_relative(path):
  146.     (drive, path) = os.path.splitdrive(path)
  147.     if sys.platform == 'mac':
  148.         return os.sep + path
  149.     if path[0:1] == os.sep:
  150.         path = drive + path[1:]
  151.     
  152.     return path
  153.  
  154.