Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-gi-docgen for 
openSUSE:Factory checked in at 2021-12-21 18:40:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-gi-docgen (Old)
 and      /work/SRC/openSUSE:Factory/.python-gi-docgen.new.2520 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-gi-docgen"

Tue Dec 21 18:40:25 2021 rev:4 rq:941312 version:2021.8

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-gi-docgen/python-gi-docgen.changes        
2021-10-29 22:34:43.695693339 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-gi-docgen.new.2520/python-gi-docgen.changes  
    2021-12-21 18:40:37.881873826 +0100
@@ -1,0 +2,6 @@
+Fri Oct 29 20:53:40 UTC 2021 - Bj??rn Lie <bjorn....@gmail.com>
+
+- Add 114.patch: gir: Do not qualify type names that are already
+  qualified.
+
+-------------------------------------------------------------------
@@ -8,0 +15,19 @@
+
+-------------------------------------------------------------------
+Fri Oct 22 08:35:30 UTC 2021 - Bj??rn Lie <bjorn....@gmail.com>
+
+- Update to version 2021.8:
+  + Allow `id` fragments to link across namespace boundaries
+  + Support links to have custom text
+  + Decrease the max font size
+  + Improve output for properties and signals
+  + Save last search in the history
+  + Don't crash on unlabelled array elements
+  + Move type functions near constructors
+  + Switch to Solarized for syntax highlighting
+  + Use the C type for callback types in search results
+  + Generate proper cross-reference links
+  + Parse and use new gobject-introspection property attributes
+  + Properly identify (type, gpointer) types
+  + List the interface implementations in a namespace
+  + List the class descendants in a namespace

Old:
----
  gi-docgen-2021.7.tar.gz

New:
----
  114.patch
  gi-docgen-2021.8.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-gi-docgen.spec ++++++
--- /var/tmp/diff_new_pack.9AJBS5/_old  2021-12-21 18:40:38.977874810 +0100
+++ /var/tmp/diff_new_pack.9AJBS5/_new  2021-12-21 18:40:38.981874814 +0100
@@ -18,12 +18,15 @@
 
 %define pythons python3
 Name:           python-gi-docgen
-Version:        2021.7
+Version:        2021.8
 Release:        0
 Summary:        Documentation tool for GObject-based libraries
 License:        Apache-2.0 AND GPL-3.0-or-later AND CC0-1.0
 URL:            https://gitlab.gnome.org/ebassi/gi-docgen
 Source:         
https://files.pythonhosted.org/packages/source/g/gi-docgen/gi-docgen-%{version}.tar.gz
+# PATCH-FIX-UPSTREAM 114.patch -- gir: Do not qualify type names that are 
already qualified
+Patch:          
https://gitlab.gnome.org/GNOME/gi-docgen/-/merge_requests/114.patch
+
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module wheel}
 BuildRequires:  python-rpm-macros
@@ -52,7 +55,7 @@
 Documentation tool for GObject-based libraries
 
 %prep
-%setup -q -n gi-docgen-%{version}
+%autosetup -n gi-docgen-%{version} -p1
 
 %build
 %python_build

++++++ 114.patch ++++++
>From 72f3c5dbe27aabb5f7a376afda23f3dfc3c2e212 Mon Sep 17 00:00:00 2001
From: Emmanuele Bassi <eba...@gnome.org>
Date: Thu, 28 Oct 2021 19:17:06 +0100
Subject: [PATCH] gir: Do not qualify type names that are already qualified

Otherwise we're going to duplicate the namespace of a type, and then
splitting the namespace from the type name won't work any more.

We already do this for class ancestors, but we failed to do this for
interface requirements and class implementations.

Fixes: #111
---
 gidocgen/gdgenerate.py |  1 +
 gidocgen/gir/ast.py    | 48 +++++++++++++++++++++++++++---------------
 gidocgen/gir/parser.py |  2 +-
 3 files changed, 33 insertions(+), 18 deletions(-)

diff --git a/gidocgen/gdgenerate.py b/gidocgen/gdgenerate.py
index 6c84777..c705777 100644
--- a/gidocgen/gdgenerate.py
+++ b/gidocgen/gdgenerate.py
@@ -1153,6 +1153,7 @@ class TemplateInterface:
             self.requires_ctype = requires.ctype
 
         self.requires_fqtn = f"{self.requires_namespace}.{self.requires_name}"
+        log.debug(f"Preqrequisite for {self.fqtn}: {self.requires_fqtn}")
 
         self.symbol_prefix = 
f"{namespace.symbol_prefix[0]}_{interface.symbol_prefix}"
         self.type_cname = interface.base_ctype
diff --git a/gidocgen/gir/ast.py b/gidocgen/gir/ast.py
index 650b4cc..8a7294a 100644
--- a/gidocgen/gir/ast.py
+++ b/gidocgen/gir/ast.py
@@ -970,13 +970,14 @@ class Repository:
 
     def resolve_interface_requires(self) -> None:
         def find_prerequisite_type(includes, ns, name):
-            for repo in includes.values():
-                if repo.namespace.name != ns:
-                    continue
-                prereq = repo.namespace.find_prerequisite_type(name)
-                if prereq is not None:
-                    return Type(name=f"{repo.namespace.name}.{prereq.name}", 
ctype=prereq.ctype)
-            return None
+            repository = includes.get(ns)
+            if repository is None:
+                return None
+            prereq = repository.namespace.find_prerequisite_type(name)
+            # If the prerequisite type is unqualified, then we qualify it here
+            if '.' not in prereq.name:
+                prereq.name = f"{repository.namespace.name}.{prereq.name}"
+            return prereq
 
         ifaces = self.namespace.get_interfaces()
         for iface in ifaces:
@@ -993,12 +994,24 @@ class Repository:
                 prerequisite = 
self.namespace.find_prerequisite_type(iface.prerequisite.name)
             if prerequisite is not None:
                 if prerequisite.ctype is None:
-                    t = self._lookup_type(prerequisite.name)
-                    prerequisite.ctype = t.ctype
+                    if '.' not in prerequisite.name:
+                        name = f"{self.namespace.name}.{prerequisite.name}"
+                    else:
+                        name = prerequisite.name
+                    t = self._lookup_type(name)
+                    if t is not None:
+                        prerequisite.ctype = t.ctype
+                    else:
+                        # This is kind of a kludge, but apparently we can get 
into
+                        # class definitions missing a c:type; if that happens, 
we
+                        # take the identifier prefix of the namespace and 
append the
+                        # class name, because that's the inverse of how 
g-ir-scanner
+                        # determines the class name
+                        prerequisite.ctype = 
f"{self.namespace.identifier_prefix[0]}{prerequisite.name}"
                 iface.prerequisite = prerequisite
                 log.debug(f"Prerequisite type for interface {iface}: 
{iface.prerequisite}")
 
-    def resolve_class_type(self) -> None:
+    def resolve_class_ctype(self) -> None:
         classes = self.namespace.get_classes()
         for cls in classes:
             if cls.ctype is None:
@@ -1020,13 +1033,14 @@ class Repository:
 
     def resolve_class_implements(self) -> None:
         def find_interface_type(includes, ns, name):
-            for repo in includes.values():
-                if repo.namespace.name != ns:
-                    continue
-                iface = repo.namespace.find_interface(name)
-                if iface is not None:
-                    return Type(name=f"{repo.namespace.name}.{iface.name}", 
ctype=iface.ctype)
-            return None
+            repository = includes.get(ns)
+            if repository is None:
+                return None
+            iface = repository.namespace.find_interface(name)
+            # If the interface type is unqualified, then we qualify it here
+            if '.' not in iface.name:
+                iface.name = f"{repository.namespace.name}.{iface.name}"
+            return iface
 
         classes = self.namespace.get_classes()
         for cls in classes:
diff --git a/gidocgen/gir/parser.py b/gidocgen/gir/parser.py
index cdab096..df155cb 100644
--- a/gidocgen/gir/parser.py
+++ b/gidocgen/gir/parser.py
@@ -96,7 +96,7 @@ class GirParser:
                 repository.girfile = girfile.name
             self._repository = repository
             self._repository.resolve_empty_ctypes(self._seen_types)
-            self._repository.resolve_class_type()
+            self._repository.resolve_class_ctype()
             self._repository.resolve_class_implements()
             self._repository.resolve_class_ancestors()
             self._repository.resolve_class_descendants()
-- 
GitLab


++++++ gi-docgen-2021.7.tar.gz -> gi-docgen-2021.8.tar.gz ++++++
++++ 2368 lines of diff (skipped)

Reply via email to