From 63d72c64c141499603a8a50561ee57fcefa683e1 Mon Sep 17 00:00:00 2001 From: JinWang An Date: Thu, 2 Dec 2021 16:35:40 +0900 Subject: [PATCH] Imported Upstream version 1.33.2 --- README | 2 +- gtkdoc-depscan.in | 15 +++++++------- gtkdoc/mkhtml2.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++- tests/mkhtml2.py | 2 +- 4 files changed, 61 insertions(+), 10 deletions(-) diff --git a/README b/README index 0a0b031..6cfe4fc 100644 --- a/README +++ b/README @@ -90,7 +90,7 @@ make dist Build using meson ----------------- -Support for meson is new and still experiemntal. +Support for meson is new and still experimental. Build it from git: meson build . diff --git a/gtkdoc-depscan.in b/gtkdoc-depscan.in index 9bfaf30..c43317c 100755 --- a/gtkdoc-depscan.in +++ b/gtkdoc-depscan.in @@ -4,6 +4,7 @@ from __future__ import print_function import gzip, os.path, re +from functools import reduce from os import environ, popen, walk from optparse import OptionParser from sys import stderr @@ -35,7 +36,7 @@ class Book(object): lambda n: (os.path.getmtime(n), n), filter(os.path.isfile, catalogs)) - catalogs.sort() + catalogs = sorted(catalogs) if catalogs: self.__catalog = catalogs[-1][1] @@ -153,7 +154,7 @@ class Symbol(object): def __init__(self, text): match = re.match(r'^\w*\s*((?:\d+\.)*\d+)', text) - self.__numbers = map(int, match.group(1).split('.')) + self.__numbers = list(map(int, match.group(1).split('.'))) self.__hash = reduce(lambda x, y: x * 1000 + y, reversed(self.__numbers)) self.__text = text.strip() @@ -214,9 +215,9 @@ class Symbol(object): if since: since = Symbol.VersionInfo(since) if name.count(' '): - print >>stderr, ( + print( 'WARNING: Malformed symbol name: "%s" (type=%s) in %s.' % ( - name, type, book.name)) + name, type, book.name), file=stderr) return Symbol(book, name, type, link, deprecated, since) @@ -322,7 +323,7 @@ if '__main__' == __name__: return name, Book(name, options.dirs, version) except IOError as e: - print >>stderr, 'WARNING: %s.' % e + print('WARNING: %s.' % e, file=stderr) def scan_source_file(name): contents = None @@ -331,7 +332,7 @@ if '__main__' == __name__: contents = __comment_regex.sub('', file(name).read()) except IOError as e: - print >>stderr, e + print(e, file=stderr) if contents: trace('scanning: %s', name) @@ -368,7 +369,7 @@ if '__main__' == __name__: for book in books.values(): requirements = book.find_requirements().items() - requirements.sort() + requirements = sorted(requirements) if requirements: for symbol in requirements[-1][1]: diff --git a/gtkdoc/mkhtml2.py b/gtkdoc/mkhtml2.py index 3bec6fd..1336da9 100644 --- a/gtkdoc/mkhtml2.py +++ b/gtkdoc/mkhtml2.py @@ -101,7 +101,6 @@ import os import shutil import sys -from anytree import Node, PreOrderIter from copy import deepcopy from glob import glob from lxml import etree @@ -254,6 +253,57 @@ def get_chunk_titles(module, node, tree_node): return result +class PreOrderIter: + def __init__(self, node): + self.__node = node + + def __iter__(self): + yield self.__node + + for child in self.__node.descendants: + yield child + + +class Node: + def __init__(self, name, parent=None, **kwargs): + self.name = name + self.__root = None + self.__attrs = kwargs + self.children = [] + + assert parent is None or isinstance(parent, Node) + self.parent = parent + if parent is not None: + self.__root = parent.root + parent.children.append(self) + + @property + def root(self): + return self.__root or self + + @property + def descendants(self): + ret = [] + + for child in self.children: + ret.append(child) + + for other in child.descendants: + ret.append(other) + + return ret + + def __iter__(self): + for child in self.children: + yield child + + def __getattr__(self, name): + try: + return self.__attrs[name] + except KeyError as e: + raise AttributeError(str(e)) + + def chunk(xml_node, module, depth=0, idx=0, parent=None): """Chunk the tree. diff --git a/tests/mkhtml2.py b/tests/mkhtml2.py index c61ee27..439e7fe 100755 --- a/tests/mkhtml2.py +++ b/tests/mkhtml2.py @@ -22,11 +22,11 @@ import logging import textwrap import unittest -from anytree import PreOrderIter from lxml import etree from parameterized import parameterized from gtkdoc import mkhtml2 +from gtkdoc.mkhtml2 import PreOrderIter class TestChunking(unittest.TestCase): -- 2.34.1