"""Tools for helping with Subversion.""" import glob import os import sys def _sitepackages(): """Return absolute site-packages/site-python.""" if sys.platform == 'darwin' and 'Python.framework' in sys.prefix: # for framework builds *only* we add the standard Apple # locations. Currently only per-user, but /Library and # /Network/Library could be added too home = os.environ.get('HOME') if home: return os.path.join(home, 'Library', 'Python', sys.version[:3], 'site-packages') if sys.platform in ('os2emx', 'riscos'): return os.path.join(sys.prefix, "Lib", "site-packages") elif os.sep == '/': return os.path.join(sys.prefix, "lib", "python" + sys.version[:3], "site-packages") else: return os.path.join(sys.prefix, "lib", "site-packages") return None def native_eol(path, linesep=None, pattern="*.py"): """Assert native EOL in the given file (or all matches in the given package). Uses os.linesep for the new output. """ if not os.path.isabs(path): path = os.path.join(_sitepackages(), path) if os.path.isdir(path): paths = [] pat = os.path.join(path, pattern) paths.extend(glob.glob(pat)) for root, dirs, files in os.walk(path): for d in dirs: pat = os.path.join(root, d, pattern) paths.extend(glob.glob(pat)) else: paths = [path] for path in paths: print path data = open(path, 'rb').read() if linesep is None: linesep = os.linesep if linesep == '\r': data = data.replace('\r\n', '\r').replace('\n', '\r') elif linesep == '\n': data = data.replace('\r\n', '\n').replace('\r', '\n') elif linesep == '\r\n': data = data.replace('\r\n', '\n').replace('\r', '\n').replace('\n', '\r\n') else: raise ValueError("Unknown linesep %r" % linesep) open(path, 'wb').write(data)