#!/usr/bin/env python # coding: utf-8 # Copyright (c) Simula Research Laboratory. # Distributed under the terms of the Modified BSD License. """Path manipulation utilities.""" import os SEPARATORS = os.sep if os.altsep is None else os.sep + os.altsep # FIXME: For our purposes, these should avoid splitting in the middle of [] parts def iexplode_path(path): """Iterate over all the parts of a path. Splits path recursively with os.path.split(). """ (head, tail) = os.path.split(path) if not head or (not tail and head == path): if head: yield head if tail or not head: yield tail return for p in explode_path(head): yield p yield tail def explode_path(path): """Splits path recursively into pieces with os.path.split()""" return tuple(iexplode_path(path))