Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-gst for openSUSE:Factory 
checked in at 2025-12-10 15:30:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-gst (Old)
 and      /work/SRC/openSUSE:Factory/.python-gst.new.1939 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-gst"

Wed Dec 10 15:30:54 2025 rev:72 rq:1321738 version:1.26.9

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-gst/python-gst.changes    2025-11-13 
17:27:21.687090386 +0100
+++ /work/SRC/openSUSE:Factory/.python-gst.new.1939/python-gst.changes  
2025-12-10 15:31:39.245095253 +0100
@@ -1,0 +2,7 @@
+Sun Dec  7 08:27:49 UTC 2025 - Bjørn Lie <[email protected]>
+
+- Update to version 1.26.9:
+  + gst-python: fix cross-compiling
+  + python: Add some typing annotation to overrides
+
+-------------------------------------------------------------------

Old:
----
  gst-python-1.26.8.obscpio

New:
----
  gst-python-1.26.9.obscpio

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

Other differences:
------------------
++++++ python-gst.spec ++++++
--- /var/tmp/diff_new_pack.mypgjn/_old  2025-12-10 15:31:40.045128983 +0100
+++ /var/tmp/diff_new_pack.mypgjn/_new  2025-12-10 15:31:40.045128983 +0100
@@ -21,7 +21,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-gst
-Version:        1.26.8
+Version:        1.26.9
 Release:        0
 Summary:        Python Bindings for GStreamer
 License:        LGPL-2.1-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.mypgjn/_old  2025-12-10 15:31:40.077130333 +0100
+++ /var/tmp/diff_new_pack.mypgjn/_new  2025-12-10 15:31:40.081130501 +0100
@@ -5,7 +5,7 @@
     <param 
name="url">https://gitlab.freedesktop.org/gstreamer/gstreamer.git</param>
     <param name="subdir">subprojects/gst-python</param>
     <param name="filename">gst-python</param>
-    <param name="revision">1.26.8</param>
+    <param name="revision">1.26.9</param>
     <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
     <param name="versionrewrite-pattern">v?(.*)\+0</param>
     <param name="versionrewrite-replacement">\1</param>

++++++ gst-python-1.26.8.obscpio -> gst-python-1.26.9.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-python-1.26.8/NEWS new/gst-python-1.26.9/NEWS
--- old/gst-python-1.26.8/NEWS  2025-11-10 18:22:05.000000000 +0100
+++ new/gst-python-1.26.9/NEWS  2025-12-01 18:27:07.000000000 +0100
@@ -2,11 +2,11 @@
 
 GStreamer 1.26.0 was originally released on 11 March 2025.
 
-The latest bug-fix release in the stable 1.26 series is 1.26.8 and was 
released on 10 November 2025.
+The latest bug-fix release in the stable 1.26 series is 1.26.9 and was 
released on 01 December 2025.
 
 See https://gstreamer.freedesktop.org/releases/1.26/ for the latest version of 
this document.
 
-Last updated: Monday 10 November 2025, 17:00 UTC (log)
+Last updated: Monday 01 December 2025, 17:00 UTC (log)
 
 ## Introduction
 
@@ -2940,12 +2940,192 @@
 -   List of Merge Requests applied in 1.26.8
 -   List of Issues fixed in 1.26.8
 
+1.26.9
+
+The ninth 1.26 bug-fix release (1.26.9) was released on 01 December 2025.
+
+This release only contains bugfixes and it should be safe to update from 
1.26.x.
+
+Highlighted bugfixes in 1.26.9
+
+-   playback: playbin3 and decodebin3 stability fixes
+-   Ancillary metadata handling fixes for AJA playout and Blackmagic Decklink 
capture cards
+-   HLS and DASH adaptive streaming clients stability improvements
+-   gst-play-1.0 will now print details of any missing plugins again
+-   gtk4paintablesink: Add property to fine-tune reconfiguration behaviour on 
window-resize
+-   macOS device monitoring: fix potential crash when probing for audio devices
+-   macOS video decoder stability improvements
+-   NDI source: fix audio corruption for non-interleaved audio with stride 
padding
+-   Add SMPTE ST291-1 ancillary metadata RTP payloader and depayloader
+-   Add ST-2038 metadata combiner and extractor
+-   webrtcsink: support hardware-accelerated encoders from the va VA-API plugin
+-   spotifysrc: fix the Spotify integration by using Spotify’s extended 
metadata endpoint
+-   Python bindings cross compilation fixes
+-   cerbero: add Visual Studio 2026 support, fix building on drives other than 
C:, and ship svtjpegxs plugin on Windows
+-   Various bug fixes, build fixes, memory leak fixes, and other stability and 
reliability improvements
+
+gstreamer
+
+-   info: Force comparison to same types
+-   queue: Use GST_PTR_FORMAT everywhere
+-   streamcollection: Fix race condition between disconnecting notify proxy 
and notifications
+-   value: Fix GstAllocationParams string serialisation on 32-bit architectures
+
+gst-plugins-base
+
+-   allocators: drmdumb: Keep dmabuf mapped
+-   alsadeviceprovider: Fix device name leak
+-   audiovisualizer: Use break instead of goto for escape logic
+-   decodebin3: Clear previous collection on input
+-   decodebin3: Consider certain meta caps in decodebin3 as raw format to 
avoid warnings
+-   decodebin3: Protect again NULL dereference if input slot can’t be mapped
+-   glbasesrc: Add unlock handling for non-negotiated cases
+-   glcolorconvert: Fix memory leak in _create_shader
+-   gldownload: Keep dmabuf mapped
+-   glfiltershader: Add missing unlock
+-   glstereosplit: Add missing unlock for exceptional case
+-   pbutils: Fix bit shifting when generate hevc mime codec string
+-   rtpbaseaudiopay: Consider RESYNC flag as discontinuity too
+-   rtpbasedepayload: Add missing unlock in error code path
+-   uridecodebin3: Add null check of play items in purge
+-   urisourcebin: Add missing unlock
+-   urisourcebin: Fix initial values of min_byte_level and min_time_level 
variables
+-   videoencoder: fix warning of uninitialized buffer
+
+Tools:
+
+-   gst-play-1.0: fix printing of missing plugin details
+-   gst-play-1.0: Add missing unlock for invalid track type
+
+gst-plugins-good
+
+-   adaptivedemux2: Fix a crash on rapid state changes, and startup busy 
waiting
+-   hlsdemux2: Keep streams with different names
+-   hlsdemux2: error out instead of asserting on negative stream time
+-   hlsdemux2: Not all subtitles are present in track/collection. Usage of 
FORCE EXT-X-MEDIA field
+-   osxaudio: Remove unnecessary if, add comment about GstDevice lifetime
+-   osxaudio: Various fixes, incl a potential crash when probing
+-   v4l2allocator: Add KEEP_MAPPED flag to the allocated buffers
+-   v4l2videoenc: Fix codec frame leak on error
+
+gst-plugins-bad
+
+-   Add missing G_DECLS symbols to gstvkqueue and gstvkcommandqueue
+-   ajasink, decklinkvideosrc: Fix some GstAncillaryMeta handling bugs
+-   analyticsmeta: Initialize span to avoid undefined behavior
+-   GstPlay: Fixed wrong initial position update interval configuration
+-   id3tag: Fix resource leak
+-   mpegtsmux: Avoid infinite recursion writing PCR packets
+-   mxfdemux: Fix typo on mxf_ffv1_create_caps
+-   mxfmux: Fix memset usage
+-   mpegtsmux: segfaults when bitrate is configured lower than bitrate that’s 
coming in
+-   osxaudio: Various fixes, incl a potential crash when probing
+-   scte-section: fix missing cleanup on splice component parse failure
+-   tsdemux: expose audio GstStream for DTS
+-   va, unixfdsrc: keep dmabufs mapped
+-   vkh265dec: Fix a typo
+-   vkvideo-private: Replace GstBuffer with GstMemory array for video sessions
+-   vtdec: Fix race condition in decoder draining. Fluster runs were unstable
+
+gst-plugins-ugly
+
+-   rmdemux: Remove unnecessary condition
+
+GStreamer Rust plugins
+
+-   analytics splitter/combiner: Remove the separate fields to events and 
buffer
+-   audiornnoise: copy input metadatas to ouput buffer
+-   closedcaption: cctost2038anc: Support alignment
+-   closedcaption: st2038ancdemux: Support alignment
+-   closedcaption: st2038ancmux: Support frame alignment
+-   closedcaption: st2038: Forward frame rate in caps where available
+-   closedcaption: Add ST-2038 combiner and extractor element
+-   closedcaption: st2038extractor: Some fixes
+-   closedcaption: st2038combiner: Some fixes
+-   gif: Update to gif 0.14
+-   gtk4: Add property to control reconfigure on window-resize behavior
+-   gtk4: Fix compile warning
+-   fmp4, mp4: Implement GstChildProxy for MP4Mux and FMP4Mux
+-   fmp4: Update to dash-mpd 0.19
+-   ndisrcdemux: fix audio corruption with non-interleaved stride padding
+-   net/quinn: Update web-transport-quinn and fix flaky QUIC test
+-   rtp: Add SMPTE ST291-1 (ANC) RTP payloader and depayloader
+-   spotify: bump librespot 0.8.0
+-   webrtcsink: Don’t let recalculate_latency block tokio worker thread
+-   webrtcsink: support va encoders
+-   Update dependencies
+-   meson: fix build when GTK is not present
+
+gst-libav
+
+-   No changes
+
+gst-rtsp-server
+
+-   No changes
+
+gstreamer-vaapi
+
+-   No changes
+
+gstreamer-sharp
+
+-   No changes
+
+gst-python
+
+-   gst-python: fix cross-compiling
+-   python: Add some typing annotation to overrides
+
+gst-editing-services
+
+-   No changes
+
+gst-devtools, gst-validate + gst-integration-testsuites
+
+-   debug-viewer: Make 0x prefix optional thread ID regexes
+
+gst-examples
+
+-   No changes
+
+gstreamer-docs
+
+-   No changes
+
+Development build environment
+
+-   libsoup wrap: remove fallback gio-unix on windows build
+-   webrtc-audio-processing wrap: Fix build with abseil-cpp 202508
+
+Cerbero build tool and packaging changes in 1.26.9
+
+-   Add support for Visual Studio 2026 (Insiders)
+-   Fix extraction on Windows when building on a different drive than C:, bump 
pixman and pygobject
+-   cookbook: List all the dependencies when listed in reverse
+-   gst-plugins-bad: actually build svtjpegxs plugin on 64-bit Windows
+
+Contributors to 1.26.9
+
+Artem Martus, Chengfa Wang, Dominique Leroux, Dongjoo Kim, Doug Nazar, Edward 
Hervey, Gang Zhao, Hyunjun Ko, Jaehoon Lee, Jakub
+Adam, Jan Schmidt, Jeongmin Kwak, Jerome Colle, Jihoon Lee, Jordan Yelloz, L. 
E. Segovia, Matthew Semeniuk, Max Goltzsche,
+Michael Olbrich, Monty C, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête, 
Philippe Normand, Pratik Pachange, Qian Hu (胡骞),
+Robert Mader, Ruben Gonzalez, Sanchayan Maity, Santiago Carot-Nemesio, 
Sebastian Dröge, Seungha Yang, Stéphane Cerveau,
+Tim-Philipp Müller, Xavier Claessens,
+
+… and many others who have contributed bug reports, translations, sent 
suggestions or helped testing. Thank you all!
+
+List of merge requests and issues fixed in 1.26.9
+
+-   List of Merge Requests applied in 1.26.9
+-   List of Issues fixed in 1.26.9
+
 Schedule for 1.28
 
 Our next major feature release will be 1.28, and 1.27 will be the unstable 
development version leading up to the stable 1.28
 release. The development of 1.27/1.28 will happen in the git main branch of 
the GStreamer mono repository.
 
-The schedule for 1.28 is yet to be decided, but we’re aiming for a release 
towards the end of 2025.
+For 1.28 we’re aiming for feature freeze in December 2025 and then the new 
stable 1.28.0 release in January 2026.
 
 1.28 will be backwards-compatible to the stable 1.26, 1.24, 1.22, 1.20, 1.18, 
1.16, 1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0
 release series.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-python-1.26.8/RELEASE 
new/gst-python-1.26.9/RELEASE
--- old/gst-python-1.26.8/RELEASE       2025-11-10 18:22:05.000000000 +0100
+++ new/gst-python-1.26.9/RELEASE       2025-12-01 18:27:07.000000000 +0100
@@ -1,4 +1,4 @@
-This is GStreamer gst-python 1.26.8.
+This is GStreamer gst-python 1.26.9.
 
 The GStreamer team is thrilled to announce a new major feature release
 of your favourite cross-platform multimedia framework!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-python-1.26.8/gi/overrides/Gst.py 
new/gst-python-1.26.9/gi/overrides/Gst.py
--- old/gst-python-1.26.8/gi/overrides/Gst.py   2025-11-10 18:22:05.000000000 
+0100
+++ new/gst-python-1.26.9/gi/overrides/Gst.py   2025-12-01 18:27:07.000000000 
+0100
@@ -22,20 +22,37 @@
 #
 # SPDX-License-Identifier: LGPL-2.0-or-later
 
-import sys
+from __future__ import annotations
+
 import inspect
 import itertools
 import weakref
-from ..overrides import override
-from ..module import get_introspection_module
+import typing
 
+from gi.overrides import override
 from gi.repository import GLib, GObject
 
-
-Gst = get_introspection_module('Gst')
+# Typing relies on https://github.com/pygobject/pygobject-stubs.
+if typing.TYPE_CHECKING:
+    # Import stubs for type checking this file.
+    #
+    # This causes some weirdness because stubs contains overridden APIs
+    # signatures. For example when using Gst.Bin.add() here, we mean to call 
the
+    # g-i generated API which does not have the same signature as our override
+    # Bin.add(). The type checker will use signature from stubs which is our
+    # override signature.
+    #
+    # For similar reason, make sure the type of arguments and return values
+    # are e.g. `Element` and not `Gst.Element`. Once copied into stubs,
+    # `Gst.Element` would not be defined, Gst module cannot refer to itself.
+    from gi.repository import Gst
+else:
+    from gi.module import get_introspection_module
+    Gst = get_introspection_module('Gst')
 
 __all__ = []
 
+
 if Gst._version == '0.10':
     import warnings
     warn_msg = "You have imported the Gst 0.10 module.  Because Gst 0.10 \
@@ -54,13 +71,13 @@
     pass
 
 
-URIHandler = override(URIHandler)
+override(URIHandler)
 __all__.append('URIHandler')
 
 
 class Element(Gst.Element):
     @staticmethod
-    def link_many(*args):
+    def link_many(*args: Element) -> None:  # type: ignore[override]
         '''
         @raises: Gst.LinkError
         '''
@@ -70,20 +87,20 @@
                     'Failed to link {} and {}'.format(pair[0], pair[1]))
 
 
-Element = override(Element)
+override(Element)
 __all__.append('Element')
 
 
 class Bin(Gst.Bin):
-    def __init__(self, name=None):
+    def __init__(self, name: typing.Optional[str] = None):
         Gst.Bin.__init__(self, name=name)
 
-    def add(self, *args):
+    def add(self, *args: Element) -> None:  # type: ignore[override]
         for arg in args:
-            if not Gst.Bin.add(self, arg):
+            if not Gst.Bin.add(self, arg):  # type: ignore[func-returns-value]
                 raise AddError(arg)
 
-    def make_and_add(self, factoryname, name=None):
+    def make_and_add(self, factoryname: str, name: typing.Optional[str] = 
None) -> Element:
         '''
         @raises: Gst.AddError
         '''
@@ -91,11 +108,12 @@
         if not elem:
             raise AddError(
                 'No such element: {}'.format(factoryname))
+        assert isinstance(elem, Element)  # Tell mypy we actually have our 
override subclass
         self.add(elem)
         return elem
 
 
-Bin = override(Bin)
+override(Bin)
 __all__.append('Bin')
 
 
@@ -107,18 +125,18 @@
 
 
 class MiniObject:
-    def make_writable(self):
+    def make_writable(self) -> MiniObject:
         return _gi_gst.mini_object_make_writable(self)
 
-    def is_writable(self):
+    def is_writable(self) -> bool:
         return _gi_gst.mini_object_is_writable(self)
 
     @property
-    def flags(self):
+    def flags(self) -> Gst.MiniObjectFlags:
         return _gi_gst.mini_object_flags(self)
 
     @flags.setter
-    def flags(self, flags):
+    def flags(self, flags: Gst.MiniObjectFlags) -> None:
         _gi_gst.mini_object_set_flags(self, flags)
 
 
@@ -130,15 +148,15 @@
 
 
 class Query(MiniObject, Gst.Query):
-    def get_structure(self):
+    def get_structure(self) -> typing.Optional[Structure]:
         s = _gi_gst.query_get_structure(self)
         return s._set_parent(self) if s is not None else None
 
-    def writable_structure(self):
+    def writable_structure(self) -> StructureWrapper:
         return 
StructureWrapper(_gi_gst.query_writable_structure(self)._set_parent(self))
 
 
-Query = override(Query)
+override(Query)
 __all__.append('Query')
 
 
@@ -150,15 +168,15 @@
 
 
 class Event(MiniObject, Gst.Event):
-    def get_structure(self):
+    def get_structure(self) -> typing.Optional[Structure]:
         s = _gi_gst.event_get_structure(self)
         return s._set_parent(self) if s is not None else None
 
-    def writable_structure(self):
+    def writable_structure(self) -> StructureWrapper:
         return 
StructureWrapper(_gi_gst.event_writable_structure(self)._set_parent(self))
 
 
-Event = override(Event)
+override(Event)
 __all__.append('Event')
 
 
@@ -170,15 +188,15 @@
 
 
 class Context(MiniObject, Gst.Context):
-    def get_structure(self):
+    def get_structure(self) -> typing.Optional[Structure]:
         s = _gi_gst.context_get_structure(self)
         return s._set_parent(self) if s is not None else None
 
-    def writable_structure(self):
+    def writable_structure(self) -> StructureWrapper:
         return 
StructureWrapper(_gi_gst.context_writable_structure(self)._set_parent(self))
 
 
-Context = override(Context)
+override(Context)
 __all__.append('Context')
 
 
@@ -239,20 +257,20 @@
     def __len__(self):
         return self.get_size()
 
-    def get_structure(self, index):
+    def get_structure(self, index: int) -> typing.Optional[Structure]:
         s = _gi_gst.caps_get_structure(self, index)
         return s._set_parent(self) if s is not None else None
 
-    def writable_structure(self, index):
+    def writable_structure(self, index: int) -> StructureWrapper:
         return StructureWrapper(_gi_gst.caps_writable_structure(self, 
index)._set_parent(self))
 
 
-Caps = override(Caps)
+override(Caps)
 __all__.append('Caps')
 
 
 class PadFunc:
-    def __init__(self, func):
+    def __init__(self, func: typing.Callable[..., Gst.FlowReturn]):
         self.func = func
 
     def __call__(self, pad, parent, obj):
@@ -277,19 +295,19 @@
     def __init__(self, *args, **kwargs):
         super(Gst.Pad, self).__init__(*args, **kwargs)
 
-    def set_chain_function(self, func):
+    def set_chain_function(self, func: typing.Callable[..., Gst.FlowReturn]) 
-> None:
         self.set_chain_function_full(PadFunc(func), None)
 
-    def set_event_function(self, func):
+    def set_event_function(self, func: typing.Callable[..., Gst.FlowReturn]) 
-> None:
         self.set_event_function_full(PadFunc(func), None)
 
-    def set_query_function(self, func):
+    def set_query_function(self, func: typing.Callable[..., Gst.FlowReturn]) 
-> None:
         self.set_query_function_full(PadFunc(func), None)
 
     def query_caps(self, filter=None):
         return Gst.Pad.query_caps(self, filter)
 
-    def set_caps(self, caps):
+    def set_caps(self, caps: Gst.Caps) -> bool:
         if not isinstance(caps, Gst.Caps):
             raise TypeError("%s is not a Gst.Caps." % (type(caps)))
 
@@ -305,19 +323,19 @@
 
         return res
 
-    def link(self, pad):
+    def link(self, pad: Gst.Pad) -> Gst.PadLinkReturn:
         ret = Gst.Pad.link(self, pad)
         if ret != Gst.PadLinkReturn.OK:
             raise LinkError(ret)
         return ret
 
 
-Pad = override(Pad)
+override(Pad)
 __all__.append('Pad')
 
 
 class GhostPad(Gst.GhostPad):
-    def __init__(self, name, target=None, direction=None):
+    def __init__(self, name: str, target: typing.Optional[Gst.Pad] = None, 
direction: typing.Optional[Gst.PadDirection] = None):
         if direction is None:
             if target is None:
                 raise TypeError('you must pass at least one of target '
@@ -329,11 +347,11 @@
         if target is not None:
             self.set_target(target)
 
-    def query_caps(self, filter=None):
+    def query_caps(self, filter: typing.Optional[Gst.Caps] = None) -> Gst.Caps:
         return Gst.GhostPad.query_caps(self, filter)
 
 
-GhostPad = override(GhostPad)
+override(GhostPad)
 __all__.append('GhostPad')
 
 
@@ -378,33 +396,35 @@
             yield value
 
 
-Iterator = override(Iterator)
+override(Iterator)
 __all__.append('Iterator')
 
 
 class ElementFactory(Gst.ElementFactory):
 
     # ElementFactory
-    def get_longname(self):
+    def get_longname(self) -> typing.Optional[str]:
         return self.get_metadata("long-name")
 
-    def get_description(self):
+    def get_description(self) -> typing.Optional[str]:
         return self.get_metadata("description")
 
-    def get_klass(self):
+    def get_klass(self) -> typing.Optional[str]:
         return self.get_metadata("klass")
 
-    @classmethod
-    def make(cls, factoryname, name=None):
-        return Gst.ElementFactory.make(factoryname, name)
+    @staticmethod
+    def make(factoryname: str, name: typing.Optional[str] = None) -> 
typing.Optional[Element]:  # type: ignore[override]
+        elem = Gst.ElementFactory.make(factoryname, name)
+        assert elem is None or isinstance(elem, Element)  # Tell mypy we 
actually have our override subclass
+        return elem
 
 
 class Pipeline(Gst.Pipeline):
-    def __init__(self, name=None):
+    def __init__(self, name: typing.Optional[str] = None):
         Gst.Pipeline.__init__(self, name=name)
 
 
-Pipeline = override(Pipeline)
+override(Pipeline)
 __all__.append('Pipeline')
 
 
@@ -442,7 +462,7 @@
     def __getitem__(self, key):
         return self.get_value(key)
 
-    def keys(self):
+    def keys(self) -> set[str]:
         keys = set()
 
         def foreach(fid, value, unused1, udata):
@@ -455,7 +475,7 @@
     def __setitem__(self, key, value):
         return self.set_value(key, value)
 
-    def set_value(self, key, value):
+    def set_value(self, key: str, value: typing.Any) -> bool:
         if not _gi_gst.structure_is_writable(self):
             raise NotWritableStructure("Trying to write to a not writable 
structure."
                                        " Make sure to use the right APIs to 
have access to structure"
@@ -463,7 +483,7 @@
 
         return Gst.Structure.set_value(self, key, value)
 
-    def __str__(self):
+    def __str__(self) -> str:
         return self.to_string()
 
     def _set_parent(self, parent):
@@ -477,15 +497,15 @@
         self._set_parent(None)
 
 
-Structure = override(Structure)
+override(Structure)
 __all__.append('Structure')
 
-ElementFactory = override(ElementFactory)
+override(ElementFactory)
 __all__.append('ElementFactory')
 
 
 class Fraction(Gst.Fraction):
-    def __init__(self, num, denom=1):
+    def __init__(self, num: int, denom: int = 1):
         def __gcd(a, b):
             while b != 0:
                 tmp = a
@@ -566,7 +586,7 @@
         return '%d/%d' % (self.num, self.denom)
 
 
-Fraction = override(Fraction)
+override(Fraction)
 __all__.append('Fraction')
 
 
@@ -605,9 +625,8 @@
         return False
 
 
-if sys.version_info >= (3, 0):
-    IntRange = override(IntRange)
-    __all__.append('IntRange')
+override(IntRange)
+__all__.append('IntRange')
 
 
 class Int64Range(Gst.Int64Range):
@@ -646,7 +665,7 @@
 
 
 class Bitmask(Gst.Bitmask):
-    def __init__(self, v):
+    def __init__(self, v: int) -> None:
         if not isinstance(v, int):
             raise TypeError("%s is not an int." % (type(v)))
 
@@ -659,17 +678,16 @@
         return self.v == other
 
 
-Bitmask = override(Bitmask)
+override(Bitmask)
 __all__.append('Bitmask')
 
 
-if sys.version_info >= (3, 0):
-    Int64Range = override(Int64Range)
-    __all__.append('Int64Range')
+override(Int64Range)
+__all__.append('Int64Range')
 
 
 class DoubleRange(Gst.DoubleRange):
-    def __init__(self, start, stop):
+    def __init__(self, start: int | float, stop: int | float):
         self.start = float(start)
         self.stop = float(stop)
 
@@ -683,16 +701,16 @@
         return '(double)[%s,%s]' % (str(self.range.start), 
str(self.range.stop))
 
 
-DoubleRange = override(DoubleRange)
+override(DoubleRange)
 __all__.append('DoubleRange')
 
 
 class FractionRange(Gst.FractionRange):
-    def __init__(self, start, stop):
-        if not isinstance(start, Gst.Fraction):
+    def __init__(self, start: Fraction, stop: Fraction):
+        if not isinstance(start, Fraction):
             raise TypeError("%s is not a Gst.Fraction." % (type(start)))
 
-        if not isinstance(stop, Gst.Fraction):
+        if not isinstance(stop, Fraction):
             raise TypeError("%s is not a Gst.Fraction." % (type(stop)))
 
         if (float(start) >= float(stop)):
@@ -709,7 +727,7 @@
         return '(fraction)[%s,%s]' % (str(self.start), str(self.stop))
 
 
-FractionRange = override(FractionRange)
+override(FractionRange)
 __all__.append('FractionRange')
 
 
@@ -733,7 +751,7 @@
         return '<Gst.ValueArray %s>' % (str(self))
 
 
-ValueArray = override(ValueArray)
+override(ValueArray)
 __all__.append('ValueArray')
 
 
@@ -757,7 +775,7 @@
         return '<Gst.ValueList %s>' % (str(self))
 
 
-ValueList = override(ValueList)
+override(ValueList)
 __all__.append('ValueList')
 
 
@@ -801,13 +819,13 @@
         return '<Gst.TagList %s>' % (str(self))
 
 
-TagList = override(TagList)
+override(TagList)
 __all__.append('TagList')
 
 # From https://docs.python.org/3/library/itertools.html
 
 
-def pairwise(iterable):
+def pairwise(iterable: typing.Iterable[Element]) -> 
typing.Iterator[tuple[Element, Element]]:
     a, b = itertools.tee(iterable)
     next(b, None)
     return zip(a, b)
@@ -816,10 +834,10 @@
 class StructureWrapper:
     """A Gst.Structure wrapper to force usage of a context manager.
     """
-    def __init__(self, structure):
+    def __init__(self, structure: Structure):
         self.__structure = structure
 
-    def __enter__(self):
+    def __enter__(self) -> Structure:
         return self.__structure
 
     def __exit__(self, _type, _value, _tb):
@@ -857,96 +875,96 @@
 
 
 class Buffer(MiniObject, Gst.Buffer):
-    @property
-    def flags(self):
+    @property  # type: ignore[override]
+    def flags(self) -> Gst.BufferFlags:
         return _gi_gst.mini_object_flags(self)
 
     @flags.setter
-    def flags(self, flags):
+    def flags(self, flags: Gst.BufferFlags) -> None:
         _gi_gst.mini_object_set_flags(self, flags)
 
     @property
-    def dts(self):
+    def dts(self) -> int:
         return _gi_gst.buffer_get_dts(self)
 
     @dts.setter
-    def dts(self, dts):
+    def dts(self, dts: int) -> None:
         _gi_gst.buffer_set_dts(self, dts)
 
     @property
-    def pts(self):
+    def pts(self) -> int:
         return _gi_gst.buffer_get_pts(self)
 
     @pts.setter
-    def pts(self, pts):
+    def pts(self, pts: int) -> None:
         _gi_gst.buffer_set_pts(self, pts)
 
     @property
-    def duration(self):
+    def duration(self) -> int:
         return _gi_gst.buffer_get_duration(self)
 
     @duration.setter
-    def duration(self, duration):
+    def duration(self, duration: int) -> None:
         _gi_gst.buffer_set_duration(self, duration)
 
     @property
-    def offset(self):
+    def offset(self) -> int:
         return _gi_gst.buffer_get_offset(self)
 
     @offset.setter
-    def offset(self, offset):
+    def offset(self, offset: int) -> None:
         _gi_gst.buffer_set_offset(self, offset)
 
     @property
-    def offset_end(self):
+    def offset_end(self) -> int:
         return _gi_gst.buffer_get_offset_end(self)
 
     @offset_end.setter
-    def offset_end(self, offset_end):
+    def offset_end(self, offset_end: int) -> None:
         _gi_gst.buffer_set_offset_end(self, offset_end)
 
-    def map_range(self, idx, length, flags):
+    def map_range(self, idx: int, length: int, flags: Gst.MapFlags) -> 
MapInfo:  # type: ignore[override]
         mapinfo = MapInfo()
         if (_gi_gst.buffer_override_map_range(self, mapinfo, idx, length, 
int(flags))):
             mapinfo.__parent__ = self
 
         return mapinfo
 
-    def map(self, flags):
+    def map(self, flags: Gst.MapFlags) -> MapInfo:  # type: ignore[override]
         mapinfo = MapInfo()
         if _gi_gst.buffer_override_map(self, mapinfo, int(flags)):
             mapinfo.__parent__ = self
 
         return mapinfo
 
-    def unmap(self, mapinfo):
+    def unmap(self, mapinfo: MapInfo) -> bool:  # type: ignore[override]
         mapinfo.__parent__ = None
         return _gi_gst.buffer_override_unmap(self, mapinfo)
 
 
-Buffer = override(Buffer)
+override(Buffer)
 __all__.append('Buffer')
 
 
 class Memory(Gst.Memory):
 
-    def map(self, flags):
+    def map(self, flags: Gst.MapFlags) -> MapInfo:  # type: ignore[override]
         mapinfo = MapInfo()
         if (_gi_gst.memory_override_map(self, mapinfo, int(flags))):
             mapinfo.__parent__ = self
 
         return mapinfo
 
-    def unmap(self, mapinfo):
+    def unmap(self, mapinfo: MapInfo) -> bool:  # type: ignore[override]
         mapinfo.__parent__ = None
         return _gi_gst.memory_override_unmap(self, mapinfo)
 
 
-Memory = override(Memory)
+override(Memory)
 __all__.append('Memory')
 
 
-def TIME_ARGS(time):
+def TIME_ARGS(time: int) -> str:
     if time == Gst.CLOCK_TIME_NONE:
         return "CLOCK_TIME_NONE"
 
@@ -958,7 +976,7 @@
 
 __all__.append('TIME_ARGS')
 
-from gi.overrides import _gi_gst
+from gi.overrides import _gi_gst  # type: ignore[attr-defined]
 _gi_gst
 
 # maybe more python and less C some day if core turns a bit more introspection
@@ -1035,11 +1053,11 @@
 real_init = Gst.init
 
 
-def init(argv=None):
+def init(argv: typing.Optional[list[str]] = None) -> None:
     init_pygst()
 
     if Gst.is_initialized():
-        return True
+        return
 
     return real_init(argv)
 
@@ -1049,10 +1067,10 @@
 real_init_check = Gst.init_check
 
 
-def init_check(argv):
+def init_check(argv: typing.Optional[list[str]] = None) -> typing.Tuple[bool, 
typing.Optional[list[str]]]:
     init_pygst()
     if Gst.is_initialized():
-        return True
+        return True, argv
 
     return real_init_check(argv)
 
@@ -1062,9 +1080,9 @@
 real_deinit = Gst.deinit
 
 
-def deinit():
+def deinit() -> None:
     deinit_pygst()
-    return real_deinit()
+    real_deinit()
 
 
 def init_python():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-python-1.26.8/gi/overrides/GstApp.py 
new/gst-python-1.26.9/gi/overrides/GstApp.py
--- old/gst-python-1.26.8/gi/overrides/GstApp.py        2025-11-10 
18:22:05.000000000 +0100
+++ new/gst-python-1.26.9/gi/overrides/GstApp.py        2025-12-01 
18:27:07.000000000 +0100
@@ -17,24 +17,32 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
 
+import typing
 from gi.overrides import _gi_gst
-from ..overrides import override
-from ..module import get_introspection_module
+from gi.overrides import override
+from gi.repository import Gst
+
+
+if typing.TYPE_CHECKING:
+    # Import from pygobject-stubs
+    from gi.repository import GstApp
+else:
+    from gi.module import get_introspection_module
+    GstApp = get_introspection_module('GstApp')
 
 
-GstApp = get_introspection_module('GstApp')
 __all__ = []
 
 
 class AppSink(GstApp.AppSink):
-    def pull_object(self):
+    def pull_object(self) -> Gst.MiniObject:
         obj = super().pull_object()
-        return _gi_gst.mini_object_to_subclass(obj) if obj else None
+        return _gi_gst.mini_object_to_subclass(obj)
 
-    def try_pull_object(self, timeout):
+    def try_pull_object(self, timeout: int) -> typing.Optional[Gst.MiniObject]:
         obj = super().try_pull_object(timeout)
         return _gi_gst.mini_object_to_subclass(obj) if obj else None
 
 
-AppSink = override(AppSink)
+override(AppSink)
 __all__.append('AppSink')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-python-1.26.8/gst-python.doap 
new/gst-python-1.26.9/gst-python.doap
--- old/gst-python-1.26.8/gst-python.doap       2025-11-10 18:22:05.000000000 
+0100
+++ new/gst-python-1.26.9/gst-python.doap       2025-12-01 18:27:07.000000000 
+0100
@@ -32,6 +32,16 @@
 
  <release>
   <Version>
+   <revision>1.26.9</revision>
+   <branch>1.26</branch>
+   <name></name>
+   <created>2025-12-01</created>
+   <file-release 
rdf:resource="https://gstreamer.freedesktop.org/src/gst-python/gst-python-1.26.9.tar.xz";
 />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.26.8</revision>
    <branch>1.26</branch>
    <name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-python-1.26.8/meson.build 
new/gst-python-1.26.9/meson.build
--- old/gst-python-1.26.8/meson.build   2025-11-10 18:22:05.000000000 +0100
+++ new/gst-python-1.26.9/meson.build   2025-12-01 18:27:07.000000000 +0100
@@ -1,5 +1,5 @@
 project('gst-python', 'c',
-  version : '1.26.8',
+  version : '1.26.9',
   meson_version : '>= 1.4',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
@@ -88,17 +88,21 @@
   endif
 endif
 pylib_fname = ''
-foreach loc: pylib_locs
-  foreach fname: pylib_fnames
-    fpath = loc / fname
-    debug(f'Looking for Python library at: @fpath@')
-    if fsmod.exists(fpath)
-      pylib_fname = fname
-      message(f'PY_LIB_FNAME = @fname@ (@loc@)')
-      break
-    endif
+if meson.is_cross_build()
+  pylib_fname = pylib_locs[0] / pylib_fnames[0]
+else
+  foreach loc: pylib_locs
+    foreach fname: pylib_fnames
+      fpath = loc / fname
+      debug(f'Looking for Python library at: @fpath@')
+      if fsmod.exists(fpath)
+        pylib_fname = fname
+        message(f'PY_LIB_FNAME = @fname@ (@loc@)')
+        break
+      endif
+    endforeach
   endforeach
-endforeach
+endif
 if pylib_fname == ''
   message('Could not find python library to load, will try loading at runtime')
 endif

++++++ gst-python.obsinfo ++++++
--- /var/tmp/diff_new_pack.mypgjn/_old  2025-12-10 15:31:40.373142813 +0100
+++ /var/tmp/diff_new_pack.mypgjn/_new  2025-12-10 15:31:40.381143150 +0100
@@ -1,5 +1,5 @@
 name: gst-python
-version: 1.26.8
-mtime: 1762795325
-commit: 16d77e12ad213ef24e76a8cc34d347b8221c9975
+version: 1.26.9
+mtime: 1764610027
+commit: f313fae193089408e278c0dd3450145e5a12307b
 

Reply via email to