| OLD | NEW |
| (Empty) |
| 1 import os | |
| 2 import sys | |
| 3 | |
| 4 try: | |
| 5 from functools import wraps | |
| 6 except ImportError: | |
| 7 # only needed for Python 2.4 | |
| 8 def wraps(_): | |
| 9 def _wraps(func): | |
| 10 return func | |
| 11 return _wraps | |
| 12 | |
| 13 __unittest = True | |
| 14 | |
| 15 def _relpath_nt(path, start=os.path.curdir): | |
| 16 """Return a relative version of a path""" | |
| 17 | |
| 18 if not path: | |
| 19 raise ValueError("no path specified") | |
| 20 start_list = os.path.abspath(start).split(os.path.sep) | |
| 21 path_list = os.path.abspath(path).split(os.path.sep) | |
| 22 if start_list[0].lower() != path_list[0].lower(): | |
| 23 unc_path, rest = os.path.splitunc(path) | |
| 24 unc_start, rest = os.path.splitunc(start) | |
| 25 if bool(unc_path) ^ bool(unc_start): | |
| 26 raise ValueError("Cannot mix UNC and non-UNC paths (%s and %s)" | |
| 27 % (path, start)) | |
| 28 else: | |
| 29 raise ValueError("path is on drive %s, start on drive %s" | |
| 30 % (path_list[0], start_list[0])) | |
| 31 # Work out how much of the filepath is shared by start and path. | |
| 32 for i in range(min(len(start_list), len(path_list))): | |
| 33 if start_list[i].lower() != path_list[i].lower(): | |
| 34 break | |
| 35 else: | |
| 36 i += 1 | |
| 37 | |
| 38 rel_list = [os.path.pardir] * (len(start_list)-i) + path_list[i:] | |
| 39 if not rel_list: | |
| 40 return os.path.curdir | |
| 41 return os.path.join(*rel_list) | |
| 42 | |
| 43 # default to posixpath definition | |
| 44 def _relpath_posix(path, start=os.path.curdir): | |
| 45 """Return a relative version of a path""" | |
| 46 | |
| 47 if not path: | |
| 48 raise ValueError("no path specified") | |
| 49 | |
| 50 start_list = os.path.abspath(start).split(os.path.sep) | |
| 51 path_list = os.path.abspath(path).split(os.path.sep) | |
| 52 | |
| 53 # Work out how much of the filepath is shared by start and path. | |
| 54 i = len(os.path.commonprefix([start_list, path_list])) | |
| 55 | |
| 56 rel_list = [os.path.pardir] * (len(start_list)-i) + path_list[i:] | |
| 57 if not rel_list: | |
| 58 return os.path.curdir | |
| 59 return os.path.join(*rel_list) | |
| 60 | |
| 61 if os.path is sys.modules.get('ntpath'): | |
| 62 relpath = _relpath_nt | |
| 63 else: | |
| 64 relpath = _relpath_posix | |
| OLD | NEW |