Mercurial > kallithea
view rhodecode/lib/dbmigrate/migrate/versioning/pathed.py @ 2912:976e2b032650 beta
patched basic auth function to overcome git issues with proxy that doesn't send both username and password. ref #586
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Tue, 09 Oct 2012 19:26:30 +0200 |
parents | 08d2dcd71666 |
children | 7e5f8c12a3fc |
line wrap: on
line source
""" A path/directory class. """ import os import shutil import logging from rhodecode.lib.dbmigrate.migrate import exceptions from rhodecode.lib.dbmigrate.migrate.versioning.config import * from rhodecode.lib.dbmigrate.migrate.versioning.util import KeyedInstance log = logging.getLogger(__name__) class Pathed(KeyedInstance): """ A class associated with a path/directory tree. Only one instance of this class may exist for a particular file; __new__ will return an existing instance if possible """ parent = None @classmethod def _key(cls, path): return str(path) def __init__(self, path): self.path = path if self.__class__.parent is not None: self._init_parent(path) def _init_parent(self, path): """Try to initialize this object's parent, if it has one""" parent_path = self.__class__._parent_path(path) self.parent = self.__class__.parent(parent_path) log.debug("Getting parent %r:%r" % (self.__class__.parent, parent_path)) self.parent._init_child(path, self) def _init_child(self, child, path): """Run when a child of this object is initialized. Parameters: the child object; the path to this object (its parent) """ @classmethod def _parent_path(cls, path): """ Fetch the path of this object's parent from this object's path. """ # os.path.dirname(), but strip directories like files (like # unix basename) # # Treat directories like files... if path[-1] == '/': path = path[:-1] ret = os.path.dirname(path) return ret @classmethod def require_notfound(cls, path): """Ensures a given path does not already exist""" if os.path.exists(path): raise exceptions.PathFoundError(path) @classmethod def require_found(cls, path): """Ensures a given path already exists""" if not os.path.exists(path): raise exceptions.PathNotFoundError(path) def __str__(self): return self.path