Exemplo n.º 1
0
 def test_idempotent(self):
     mod = Module(None, 'codemodule', zope.app.apidoc.codemodule)
     before = len(mod)
     self.assertGreater(before, 0)
     self.assertTrue(mod._package)
     mod._Module__needsSetup = True
     mod._Module__setup()
     self.assertEqual(len(mod), before)
Exemplo n.º 2
0
    def test_module_with_file_of_none(self):
        # Sometimes namespace packages have this,
        # especially on Python 3.7.
        class Mod(object):
            __file__ = None
            __name__ = 'name'

        mod = Mod()
        mod.__doc__ = 'A module'

        inst = Module(None, 'name', mod)
        self.assertEqual(mod.__doc__, inst.getDocString())
Exemplo n.º 3
0
 def __init__(self, dotted_path):
     self.path = dotted_path
     self.klass = resolve(self.path)
     self.module_path, self.name = dotted_path.rsplit('.', 1)
     self.module = resolve(self.module_path)
     mod_apidoc = Module(None, None, self.module, False)
     self.apidoc = Class(mod_apidoc, self.name, self.klass)
Exemplo n.º 4
0
 def __init__(self, dotted_path):
     self.path = dotted_path
     self._module = resolve(self.path)
     # In apidoc packages are handled like modules...
     self.apidoc = Module(None, None, self._module, True)
Exemplo n.º 5
0
class DocGrokPackage(DocGrok):
    """This doctor cares for python packages.
    """
    path = None
    apidoc = None
    _traversal_root = None

    def __init__(self, dotted_path):
        self.path = dotted_path
        self._module = resolve(self.path)
        # In apidoc packages are handled like modules...
        self.apidoc = Module(None, None, self._module, True)

    def getDocString(self):
        return self.apidoc.getDocString()

    def getFilePath(self):
        ob = resolve(self.path)
        return os.path.dirname(ob.__file__) + '/'

    def _getModuleInfos(self, filter_func=lambda x: x):
        """Get modules and packages of a package.

        The filter function will be applied to a list of modules and
        packages of type grok.scan.ModuleInfo.
        """
        ob = resolve(self.path)
        filename = ob.__file__
        module_info = ModuleInfo(filename, self.path)
        infos = module_info.getSubModuleInfos()
        if filter_func is not None:
            infos = filter(filter_func, infos)
        result = []
        for info in infos:
            subresult = {}
            # Build a url string from dotted path...
            mod_path = "docgrok"
            for path_part in info.dotted_name.split('.'):
                mod_path = os.path.join(mod_path, path_part)
            subresult = {
                'url': mod_path,
                'name': info.name,
                'dotted_name': info.dotted_name
            }
            result.append(subresult)
        return result

    def getModuleInfos(self):
        """Get the modules inside a package.
        """
        filter_func = lambda x: not x.isPackage()
        return self._getModuleInfos(filter_func)

    def getSubPackageInfos(self):
        """Get the subpackages inside a package.
        """
        filter_func = lambda x: x.isPackage()
        return self._getModuleInfos(filter_func)

    def getTextFiles(self):
        """Get the text files inside a package.
        """
        filter_func = lambda x: x.isinstance(TextFile)
        return self._getModuleInfos(filter_func)

    def getChildren(self):
        result = self.apidoc.items()
        result.sort(lambda x, y: cmp(x[0], y[0]))
        return result