Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/boltons/pathutils.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author | shellac |
---|---|
date | Mon, 01 Jun 2020 08:59:25 -0400 |
parents | 79f47841a781 |
children |
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/boltons/pathutils.py Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,154 +0,0 @@ -""" -Functions for working with filesystem paths. - -The :func:`expandpath` function expands the tilde to $HOME and environment -variables to their values. - -The :func:`augpath` function creates variants of an existing path without -having to spend multiple lines of code splitting it up and stitching it back -together. - -The :func:`shrinkuser` function replaces your home directory with a tilde. -""" -from __future__ import print_function - -from os.path import (expanduser, expandvars, join, normpath, split, splitext) -import os - - -__all__ = [ - 'augpath', 'shrinkuser', 'expandpath', -] - - -def augpath(path, suffix='', prefix='', ext=None, base=None, dpath=None, - multidot=False): - """ - Augment a path by modifying its components. - - Creates a new path with a different extension, basename, directory, prefix, - and/or suffix. - - A prefix is inserted before the basename. A suffix is inserted - between the basename and the extension. The basename and extension can be - replaced with a new one. Essentially a path is broken down into components - (dpath, base, ext), and then recombined as (dpath, prefix, base, suffix, - ext) after replacing any specified component. - - Args: - path (str | PathLike): a path to augment - suffix (str, default=''): placed between the basename and extension - prefix (str, default=''): placed in front of the basename - ext (str, default=None): if specified, replaces the extension - base (str, default=None): if specified, replaces the basename without - extension - dpath (str | PathLike, default=None): if specified, replaces the - directory - multidot (bool, default=False): Allows extensions to contain multiple - dots. Specifically, if False, everything after the last dot in the - basename is the extension. If True, everything after the first dot - in the basename is the extension. - - Returns: - str: augmented path - - Example: - >>> path = 'foo.bar' - >>> suffix = '_suff' - >>> prefix = 'pref_' - >>> ext = '.baz' - >>> newpath = augpath(path, suffix, prefix, ext=ext, base='bar') - >>> print('newpath = %s' % (newpath,)) - newpath = pref_bar_suff.baz - - Example: - >>> augpath('foo.bar') - 'foo.bar' - >>> augpath('foo.bar', ext='.BAZ') - 'foo.BAZ' - >>> augpath('foo.bar', suffix='_') - 'foo_.bar' - >>> augpath('foo.bar', prefix='_') - '_foo.bar' - >>> augpath('foo.bar', base='baz') - 'baz.bar' - >>> augpath('foo.tar.gz', ext='.zip', multidot=True) - 'foo.zip' - >>> augpath('foo.tar.gz', ext='.zip', multidot=False) - 'foo.tar.zip' - >>> augpath('foo.tar.gz', suffix='_new', multidot=True) - 'foo_new.tar.gz' - """ - # Breakup path - orig_dpath, fname = split(path) - if multidot: - # The first dot defines the extension - parts = fname.split('.', 1) - orig_base = parts[0] - orig_ext = '' if len(parts) == 1 else '.' + parts[1] - else: - # The last dot defines the extension - orig_base, orig_ext = splitext(fname) - # Replace parts with specified augmentations - if dpath is None: - dpath = orig_dpath - if ext is None: - ext = orig_ext - if base is None: - base = orig_base - # Recombine into new path - new_fname = ''.join((prefix, base, suffix, ext)) - newpath = join(dpath, new_fname) - return newpath - - -def shrinkuser(path, home='~'): - """ - Inverse of :func:`os.path.expanduser`. - - Args: - path (str | PathLike): path in system file structure - home (str, default='~'): symbol used to replace the home path. - Defaults to '~', but you might want to use '$HOME' or - '%USERPROFILE%' instead. - - Returns: - str: path: shortened path replacing the home directory with a tilde - - Example: - >>> path = expanduser('~') - >>> assert path != '~' - >>> assert shrinkuser(path) == '~' - >>> assert shrinkuser(path + '1') == path + '1' - >>> assert shrinkuser(path + '/1') == join('~', '1') - >>> assert shrinkuser(path + '/1', '$HOME') == join('$HOME', '1') - """ - path = normpath(path) - userhome_dpath = expanduser('~') - if path.startswith(userhome_dpath): - if len(path) == len(userhome_dpath): - path = home - elif path[len(userhome_dpath)] == os.path.sep: - path = home + path[len(userhome_dpath):] - return path - - -def expandpath(path): - """ - Shell-like expansion of environment variables and tilde home directory. - - Args: - path (str | PathLike): the path to expand - - Returns: - str : expanded path - - Example: - >>> import os - >>> os.environ['SPAM'] = 'eggs' - >>> assert expandpath('~/$SPAM') == expanduser('~/eggs') - >>> assert expandpath('foo') == 'foo' - """ - path = expanduser(path) - path = expandvars(path) - return path