root/galaxy-central/eggs/sqlalchemy_migrate-0.5.4-py2.6.egg/migrate/versioning/pathed.py

リビジョン 3, 2.0 KB (コミッタ: kohda, 14 年 前)

Install Unix tools  http://hannonlab.cshl.edu/galaxy_unix_tools/galaxy.html

行番号 
1"""
2   A path/directory class.
3"""
4
5import os
6import shutil
7
8from migrate.versioning import exceptions
9from migrate.versioning.base import *
10from migrate.versioning.util import KeyedInstance
11
12
13class Pathed(KeyedInstance):
14    """
15    A class associated with a path/directory tree.
16
17    Only one instance of this class may exist for a particular file;
18    __new__ will return an existing instance if possible
19    """
20    parent = None
21
22    @classmethod
23    def _key(cls, path):
24        return str(path)
25
26    def __init__(self, path):
27        self.path = path
28        if self.__class__.parent is not None:
29            self._init_parent(path)
30
31    def _init_parent(self, path):
32        """Try to initialize this object's parent, if it has one"""
33        parent_path = self.__class__._parent_path(path)
34        self.parent = self.__class__.parent(parent_path)
35        log.info("Getting parent %r:%r" % (self.__class__.parent, parent_path))
36        self.parent._init_child(path, self)
37
38    def _init_child(self, child, path):
39        """Run when a child of this object is initialized.
40
41        Parameters: the child object; the path to this object (its
42        parent)
43        """
44
45    @classmethod
46    def _parent_path(cls, path):
47        """
48        Fetch the path of this object's parent from this object's path.
49        """
50        # os.path.dirname(), but strip directories like files (like
51        # unix basename)
52        #
53        # Treat directories like files...
54        if path[-1] == '/':
55            path=path[:-1]
56        ret = os.path.dirname(path)
57        return ret
58
59    @classmethod
60    def require_notfound(cls, path):
61        """Ensures a given path does not already exist"""
62        if os.path.exists(path):
63            raise exceptions.PathFoundError(path)
64
65    @classmethod
66    def require_found(cls, path):
67        """Ensures a given path already exists"""
68        if not os.path.exists(path):
69            raise exceptions.PathNotFoundError(path)
70
71    def __str__(self):
72        return self.path
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。