changeset 19347:f36ddfa815b9

vfs: rename filesystem to vfs
author Dmitry Selyutin <ghostmansd@gmail.com>
date Wed, 04 Oct 2017 21:10:55 +0300
parents af8e6cc3f328
children 86598245ffdd
files pygnulib.py pygnulib/filesystem.py pygnulib/vfs.py
diffstat 3 files changed, 163 insertions(+), 162 deletions(-) [+]
line wrap: on
line diff
--- a/pygnulib.py	Tue Oct 03 20:59:41 2017 +0300
+++ b/pygnulib.py	Wed Oct 04 21:10:55 2017 +0300
@@ -23,7 +23,8 @@
 
 from pygnulib.parser import CommandLine as CommandLineParser
 
-from pygnulib.filesystem import GnulibGit as GnulibGitFS
+from pygnulib.vfs import Base as BaseVFS
+from pygnulib.vfs import GnulibGit as GnulibGitVFS
 
 
 
@@ -187,7 +188,7 @@
 
 
 def main(script, gnulib, program, arguments, environ):
-    gnulib = GnulibGitFS(gnulib)
+    gnulib = GnulibGitVFS(gnulib)
     parser = CommandLineParser(program)
     try:
         (namespace, mode, verbosity, options) = parser.parse(arguments)
--- a/pygnulib/filesystem.py	Tue Oct 03 20:59:41 2017 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-#!/usr/bin/python
-# encoding: UTF-8
-"""gnulib virtual filesystem API"""
-
-
-
-import os as _os_
-
-
-from .error import type_assert as _type_assert_
-from .error import UnknownModuleError as _UnknownModuleError_
-from .config import Base as _BaseConfig_
-from .module import Base as _BaseModule_
-from .module import File as _FileModule_
-
-
-
-class Directory:
-    """gnulib generic virtual file system"""
-    _TABLE_ = {
-        "lib"       : "source_base",
-        "doc"       : "doc_base",
-        "m4"        : "m4_base",
-        "tests"     : "tests_base",
-        "tests=lib" : "tests_base",
-        "po"        : "po_base",
-        "build-aux" : "aux_dir",
-    }
-
-
-    def __init__(self, name, config):
-        _type_assert_("name", name, str)
-        _type_assert_("config", config, _BaseConfig_)
-        path = _os_.path.realpath(name)
-        if not _os_.path.exists(path):
-            raise FileNotFoundError(path)
-        if not _os_.path.isdir(path):
-            raise NotADirectoryError(path)
-        self.__config = config
-        self.__name = name
-        self.__path = path
-
-
-    def __repr__(self):
-        module = self.__class__.__module__
-        name = self.__class__.__name__
-        return "{}.{}{}".format(module, name, repr(self.__name))
-
-
-    def __contains__(self, name):
-        path = _os_.path.normpath(name)
-        if _os_.path.isabs(name):
-            raise ValueError("name must be a relative path")
-        path = _os_.path.join(self.__path, name)
-        return _os_.path.exists(path)
-
-
-
-    def __getitem__(self, name):
-        """retrieve the canonical path of the specified file name"""
-        _type_assert_("name", name, str)
-        parts = []
-        replaced = False
-        path = _os_.path.normpath(name)
-        if _os_.path.isabs(path):
-            raise ValueError("name must be a relative path")
-        for part in path.split(_os_.path.sep):
-            if part == "..":
-                parts += [part]
-                continue
-            if not replaced:
-                for old, new in Directory._TABLE_.items():
-                    if part == old:
-                        part = self.__config[new]
-                        replaced = True
-            parts += [part]
-        path = _os_.path.sep.join([self.__path] + parts)
-        if not _os_.path.exists(path):
-            raise FileNotFoundError(name)
-        return path
-
-
-    @property
-    def name(self):
-        """directory name"""
-        return self.__name
-
-
-    @property
-    def path(self):
-        """root directory path"""
-        return self.__path
-
-
-
-class GnulibGit(Directory):
-    """gnulib git repository"""
-    _EXCLUDE_ = {
-        "."                 : str.startswith,
-        "~"                 : str.endswith,
-        "-tests"            : str.endswith,
-        "ChangeLog"         : str.__eq__,
-        "COPYING"           : str.__eq__,
-        "README"            : str.__eq__,
-        "TEMPLATE"          : str.__eq__,
-        "TEMPLATE-TESTS"    : str.__eq__,
-        "TEMPLATE-EXTENDED" : str.__eq__,
-    }
-
-
-    def __init__(self, name):
-        path = _os_.path.realpath(name)
-        if not _os_.path.exists(path):
-            raise FileNotFoundError(path)
-        if not _os_.path.isdir(path):
-            raise NotADirectoryError(path)
-        config = _BaseConfig_(root=path)
-        super().__init__(name, config)
-        if not _os_.path.isdir(_os_.path.join(self.path, ".git")):
-            raise TypeError("{} is not a gnulib repository".format(self.path))
-
-
-    def __enter__(self):
-        return self
-
-
-    def __exit__(self, exctype, excval, exctrace):
-        pass
-
-
-    def module(self, name, full=True):
-        """obtain gnulib module by name"""
-        _type_assert_("name", name, str)
-        _type_assert_("full", full, bool)
-        if name in GnulibGit._EXCLUDE_:
-            raise ValueError("illegal module name")
-        path = _os_.path.join(self["modules"], name)
-        try:
-            return _FileModule_(path, name=name) if full else _BaseModule_(name)
-        except FileNotFoundError:
-            raise _UnknownModuleError_(name)
-
-
-    def modules(self, full=True):
-        """iterate over all available modules"""
-        prefix = self["modules"]
-        for root, _, files in _os_.walk(prefix):
-            names = []
-            for name in files:
-                exclude = False
-                for (key, method) in GnulibGit._EXCLUDE_.items():
-                    if method(name, key):
-                        exclude = True
-                        break
-                if not exclude:
-                    names += [name]
-            for name in names:
-                path = _os_.path.join(root, name)
-                name = path[len(prefix) + 1:]
-                yield self.module(name, full)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pygnulib/vfs.py	Wed Oct 04 21:10:55 2017 +0300
@@ -0,0 +1,160 @@
+#!/usr/bin/python
+# encoding: UTF-8
+"""gnulib virtual filesystem API"""
+
+
+
+import os as _os_
+
+
+from .error import type_assert as _type_assert_
+from .error import UnknownModuleError as _UnknownModuleError_
+from .config import Base as _BaseConfig_
+from .module import Base as _BaseModule_
+from .module import File as _FileModule_
+
+
+
+class Base:
+    """gnulib generic virtual file system"""
+    _TABLE_ = {
+        "lib"       : "source_base",
+        "doc"       : "doc_base",
+        "m4"        : "m4_base",
+        "tests"     : "tests_base",
+        "tests=lib" : "tests_base",
+        "po"        : "po_base",
+        "build-aux" : "aux_dir",
+    }
+
+
+    def __init__(self, name, config):
+        _type_assert_("name", name, str)
+        _type_assert_("config", config, _BaseConfig_)
+        path = _os_.path.realpath(name)
+        if not _os_.path.exists(path):
+            raise FileNotFoundError(path)
+        if not _os_.path.isdir(path):
+            raise NotADirectoryError(path)
+        self.__config = config
+        self.__name = name
+        self.__path = path
+
+
+    def __repr__(self):
+        module = self.__class__.__module__
+        name = self.__class__.__name__
+        return "{}.{}{}".format(module, name, repr(self.__name))
+
+
+    def __contains__(self, name):
+        path = _os_.path.normpath(name)
+        if _os_.path.isabs(name):
+            raise ValueError("name must be a relative path")
+        path = _os_.path.join(self.__path, name)
+        return _os_.path.exists(path)
+
+
+
+    def __getitem__(self, name):
+        """retrieve the canonical path of the specified file name"""
+        _type_assert_("name", name, str)
+        parts = []
+        replaced = False
+        path = _os_.path.normpath(name)
+        if _os_.path.isabs(path):
+            raise ValueError("name must be a relative path")
+        for part in path.split(_os_.path.sep):
+            if part == "..":
+                parts += [part]
+                continue
+            if not replaced:
+                for old, new in Base._TABLE_.items():
+                    if part == old:
+                        part = self.__config[new]
+                        replaced = True
+            parts += [part]
+        path = _os_.path.sep.join([self.__path] + parts)
+        if not _os_.path.exists(path):
+            raise FileNotFoundError(name)
+        return path
+
+
+    @property
+    def name(self):
+        """directory name"""
+        return self.__name
+
+
+    @property
+    def path(self):
+        """root directory path"""
+        return self.__path
+
+
+
+class GnulibGit(Base):
+    """gnulib git repository"""
+    _EXCLUDE_ = {
+        "."                 : str.startswith,
+        "~"                 : str.endswith,
+        "-tests"            : str.endswith,
+        "ChangeLog"         : str.__eq__,
+        "COPYING"           : str.__eq__,
+        "README"            : str.__eq__,
+        "TEMPLATE"          : str.__eq__,
+        "TEMPLATE-TESTS"    : str.__eq__,
+        "TEMPLATE-EXTENDED" : str.__eq__,
+    }
+
+
+    def __init__(self, name):
+        path = _os_.path.realpath(name)
+        if not _os_.path.exists(path):
+            raise FileNotFoundError(path)
+        if not _os_.path.isdir(path):
+            raise NotADirectoryError(path)
+        config = _BaseConfig_(root=path)
+        super().__init__(name, config)
+        if not _os_.path.isdir(_os_.path.join(self.path, ".git")):
+            raise TypeError("{} is not a gnulib repository".format(self.path))
+
+
+    def __enter__(self):
+        return self
+
+
+    def __exit__(self, exctype, excval, exctrace):
+        pass
+
+
+    def module(self, name, full=True):
+        """obtain gnulib module by name"""
+        _type_assert_("name", name, str)
+        _type_assert_("full", full, bool)
+        if name in GnulibGit._EXCLUDE_:
+            raise ValueError("illegal module name")
+        path = _os_.path.join(self["modules"], name)
+        try:
+            return _FileModule_(path, name=name) if full else _BaseModule_(name)
+        except FileNotFoundError:
+            raise _UnknownModuleError_(name)
+
+
+    def modules(self, full=True):
+        """iterate over all available modules"""
+        prefix = self["modules"]
+        for root, _, files in _os_.walk(prefix):
+            names = []
+            for name in files:
+                exclude = False
+                for (key, method) in GnulibGit._EXCLUDE_.items():
+                    if method(name, key):
+                        exclude = True
+                        break
+                if not exclude:
+                    names += [name]
+            for name in names:
+                path = _os_.path.join(root, name)
+                name = path[len(prefix) + 1:]
+                yield self.module(name, full)