home *** CD-ROM | disk | FTP | other *** search
/ Freelog 116 / FreelogNo116-JuilletSeptembre2013.iso / GestionFichiers / metamorphose / metamorphose2_0.8.2_setup.exe / metamorphose2.exe / posixpath.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2011-01-12  |  8KB  |  347 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. import os
  5. import stat
  6. import genericpath
  7. import warnings
  8. from genericpath import *
  9. __all__ = [
  10.     'normcase',
  11.     'isabs',
  12.     'join',
  13.     'splitdrive',
  14.     'split',
  15.     'splitext',
  16.     'basename',
  17.     'dirname',
  18.     'commonprefix',
  19.     'getsize',
  20.     'getmtime',
  21.     'getatime',
  22.     'getctime',
  23.     'islink',
  24.     'exists',
  25.     'lexists',
  26.     'isdir',
  27.     'isfile',
  28.     'ismount',
  29.     'walk',
  30.     'expanduser',
  31.     'expandvars',
  32.     'normpath',
  33.     'abspath',
  34.     'samefile',
  35.     'sameopenfile',
  36.     'samestat',
  37.     'curdir',
  38.     'pardir',
  39.     'sep',
  40.     'pathsep',
  41.     'defpath',
  42.     'altsep',
  43.     'extsep',
  44.     'devnull',
  45.     'realpath',
  46.     'supports_unicode_filenames',
  47.     'relpath']
  48. curdir = '.'
  49. pardir = '..'
  50. extsep = '.'
  51. sep = '/'
  52. pathsep = ':'
  53. defpath = ':/bin:/usr/bin'
  54. altsep = None
  55. devnull = '/dev/null'
  56.  
  57. def normcase(s):
  58.     return s
  59.  
  60.  
  61. def isabs(s):
  62.     return s.startswith('/')
  63.  
  64.  
  65. def join(a, *p):
  66.     path = a
  67.     for b in p:
  68.         if b.startswith('/'):
  69.             path = b
  70.             continue
  71.         if path == '' or path.endswith('/'):
  72.             path += b
  73.             continue
  74.         path += '/' + b
  75.     
  76.     return path
  77.  
  78.  
  79. def split(p):
  80.     i = p.rfind('/') + 1
  81.     head = p[:i]
  82.     tail = p[i:]
  83.     if head and head != '/' * len(head):
  84.         head = head.rstrip('/')
  85.     
  86.     return (head, tail)
  87.  
  88.  
  89. def splitext(p):
  90.     return genericpath._splitext(p, sep, altsep, extsep)
  91.  
  92. splitext.__doc__ = genericpath._splitext.__doc__
  93.  
  94. def splitdrive(p):
  95.     return ('', p)
  96.  
  97.  
  98. def basename(p):
  99.     i = p.rfind('/') + 1
  100.     return p[i:]
  101.  
  102.  
  103. def dirname(p):
  104.     i = p.rfind('/') + 1
  105.     head = p[:i]
  106.     if head and head != '/' * len(head):
  107.         head = head.rstrip('/')
  108.     
  109.     return head
  110.  
  111.  
  112. def islink(path):
  113.     
  114.     try:
  115.         st = os.lstat(path)
  116.     except (os.error, AttributeError):
  117.         return False
  118.  
  119.     return stat.S_ISLNK(st.st_mode)
  120.  
  121.  
  122. def lexists(path):
  123.     
  124.     try:
  125.         st = os.lstat(path)
  126.     except os.error:
  127.         return False
  128.  
  129.     return True
  130.  
  131.  
  132. def samefile(f1, f2):
  133.     s1 = os.stat(f1)
  134.     s2 = os.stat(f2)
  135.     return samestat(s1, s2)
  136.  
  137.  
  138. def sameopenfile(fp1, fp2):
  139.     s1 = os.fstat(fp1)
  140.     s2 = os.fstat(fp2)
  141.     return samestat(s1, s2)
  142.  
  143.  
  144. def samestat(s1, s2):
  145.     if s1.st_ino == s2.st_ino:
  146.         pass
  147.     return s1.st_dev == s2.st_dev
  148.  
  149.  
  150. def ismount(path):
  151.     
  152.     try:
  153.         s1 = os.lstat(path)
  154.         s2 = os.lstat(join(path, '..'))
  155.     except os.error:
  156.         return False
  157.  
  158.     dev1 = s1.st_dev
  159.     dev2 = s2.st_dev
  160.     if dev1 != dev2:
  161.         return True
  162.     ino1 = s1.st_ino
  163.     ino2 = s2.st_ino
  164.     if ino1 == ino2:
  165.         return True
  166.     return False
  167.  
  168.  
  169. def walk(top, func, arg):
  170.     warnings.warnpy3k('In 3.x, os.path.walk is removed in favor of os.walk.', stacklevel = 2)
  171.     
  172.     try:
  173.         names = os.listdir(top)
  174.     except os.error:
  175.         return None
  176.  
  177.     func(arg, top, names)
  178.     for name in names:
  179.         name = join(top, name)
  180.         
  181.         try:
  182.             st = os.lstat(name)
  183.         except os.error:
  184.             continue
  185.  
  186.         if stat.S_ISDIR(st.st_mode):
  187.             walk(name, func, arg)
  188.             continue
  189.     
  190.  
  191.  
  192. def expanduser(path):
  193.     if not path.startswith('~'):
  194.         return path
  195.     i = path.find('/', 1)
  196.     if i < 0:
  197.         i = len(path)
  198.     
  199.     if i == 1:
  200.         if 'HOME' not in os.environ:
  201.             import pwd as pwd
  202.             userhome = pwd.getpwuid(os.getuid()).pw_dir
  203.         else:
  204.             userhome = os.environ['HOME']
  205.     else:
  206.         import pwd as pwd
  207.         
  208.         try:
  209.             pwent = pwd.getpwnam(path[1:i])
  210.         except KeyError:
  211.             return path
  212.  
  213.         userhome = pwent.pw_dir
  214.     if not userhome.rstrip('/'):
  215.         pass
  216.     userhome = userhome
  217.     return userhome + path[i:]
  218.  
  219. _varprog = None
  220.  
  221. def expandvars(path):
  222.     global _varprog
  223.     if '$' not in path:
  224.         return path
  225.     if not _varprog:
  226.         import re as re
  227.         _varprog = re.compile('\\$(\\w+|\\{[^}]*\\})')
  228.     
  229.     i = 0
  230.     while True:
  231.         m = _varprog.search(path, i)
  232.         if not m:
  233.             break
  234.         
  235.         (i, j) = m.span(0)
  236.         name = m.group(1)
  237.         if name.startswith('{') and name.endswith('}'):
  238.             name = name[1:-1]
  239.         
  240.         if name in os.environ:
  241.             tail = path[j:]
  242.             path = path[:i] + os.environ[name]
  243.             i = len(path)
  244.             path += tail
  245.             continue
  246.         i = j
  247.     return path
  248.  
  249.  
  250. def normpath(path):
  251.     (slash, dot) = None if isinstance(path, unicode) else ('/', '.')
  252.     if path == '':
  253.         return dot
  254.     initial_slashes = path.startswith('/')
  255.     if initial_slashes and path.startswith('//') and not path.startswith('///'):
  256.         initial_slashes = 2
  257.     
  258.     comps = path.split('/')
  259.     new_comps = []
  260.     for comp in comps:
  261.         if comp in ('', '.'):
  262.             continue
  263.         
  264.         if not comp != '..':
  265.             if (not initial_slashes or not new_comps or new_comps) and new_comps[-1] == '..':
  266.                 new_comps.append(comp)
  267.                 continue
  268.         if new_comps:
  269.             new_comps.pop()
  270.             continue
  271.     
  272.     comps = new_comps
  273.     path = slash.join(comps)
  274.     if initial_slashes:
  275.         path = slash * initial_slashes + path
  276.     
  277.     if not path:
  278.         pass
  279.     return dot
  280.  
  281.  
  282. def abspath(path):
  283.     if not isabs(path):
  284.         if isinstance(path, unicode):
  285.             cwd = os.getcwdu()
  286.         else:
  287.             cwd = os.getcwd()
  288.         path = join(cwd, path)
  289.     
  290.     return normpath(path)
  291.  
  292.  
  293. def realpath(filename):
  294.     if isabs(filename):
  295.         bits = [
  296.             '/'] + filename.split('/')[1:]
  297.     else:
  298.         bits = [
  299.             ''] + filename.split('/')
  300.     for i in range(2, len(bits) + 1):
  301.         component = join(*bits[0:i])
  302.         if islink(component):
  303.             resolved = _resolve_link(component)
  304.             if resolved is None:
  305.                 return abspath(join(*[
  306.                     component] + bits[i:]))
  307.             newpath = join(*[
  308.                 resolved] + bits[i:])
  309.             return realpath(newpath)
  310.         islink(component)
  311.     
  312.     return abspath(filename)
  313.  
  314.  
  315. def _resolve_link(path):
  316.     paths_seen = []
  317.     while islink(path):
  318.         if path in paths_seen:
  319.             return None
  320.         paths_seen.append(path)
  321.         resolved = os.readlink(path)
  322.         if not isabs(resolved):
  323.             dir = dirname(path)
  324.             path = normpath(join(dir, resolved))
  325.             continue
  326.         path in paths_seen
  327.         path = normpath(resolved)
  328.     return path
  329.  
  330. supports_unicode_filenames = False
  331.  
  332. def relpath(path, start = curdir):
  333.     if not path:
  334.         raise ValueError('no path specified')
  335.     path
  336.     start_list = abspath(start).split(sep)
  337.     path_list = abspath(path).split(sep)
  338.     i = len(commonprefix([
  339.         start_list,
  340.         path_list]))
  341.     rel_list = [
  342.         pardir] * (len(start_list) - i) + path_list[i:]
  343.     if not rel_list:
  344.         return curdir
  345.     return join(*rel_list)
  346.  
  347.