ginext-core 0.8.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1142) hide show
  1. ginext_core-0.8.1/.clang-format +70 -0
  2. ginext_core-0.8.1/.github/workflows/ci-windows.yml +192 -0
  3. ginext_core-0.8.1/.github/workflows/ci.yml +220 -0
  4. ginext_core-0.8.1/.github/workflows/commit-policy.yml +33 -0
  5. ginext_core-0.8.1/.github/workflows/docs.yml +96 -0
  6. ginext_core-0.8.1/.github/workflows/make-test.yml +145 -0
  7. ginext_core-0.8.1/.github/workflows/release.yml +121 -0
  8. ginext_core-0.8.1/.gitignore +57 -0
  9. ginext_core-0.8.1/.pre-commit-config.yaml +64 -0
  10. ginext_core-0.8.1/.python-version +1 -0
  11. ginext_core-0.8.1/AGENTS.md +47 -0
  12. ginext_core-0.8.1/CLAUDE.md +3 -0
  13. ginext_core-0.8.1/LICENSE +504 -0
  14. ginext_core-0.8.1/Makefile +569 -0
  15. ginext_core-0.8.1/PKG-INFO +102 -0
  16. ginext_core-0.8.1/README.md +51 -0
  17. ginext_core-0.8.1/ci/Dockerfile +45 -0
  18. ginext_core-0.8.1/ci/run-mypy.sh +33 -0
  19. ginext_core-0.8.1/conftest.py +241 -0
  20. ginext_core-0.8.1/conftest_shared.py +325 -0
  21. ginext_core-0.8.1/dbus_fixtures.py +76 -0
  22. ginext_core-0.8.1/docs/README.md +7 -0
  23. ginext_core-0.8.1/docs/advanced-guide/index.md +24 -0
  24. ginext_core-0.8.1/docs/advanced-guide/overlays/index.md +112 -0
  25. ginext_core-0.8.1/docs/assets/ginext-orbit.svg +31 -0
  26. ginext_core-0.8.1/docs/assets/styles.css +286 -0
  27. ginext_core-0.8.1/docs/book/beyond-gnome/cross-platform.md +28 -0
  28. ginext_core-0.8.1/docs/book/beyond-gnome/elementary.md +23 -0
  29. ginext_core-0.8.1/docs/book/beyond-gnome/index.md +13 -0
  30. ginext_core-0.8.1/docs/book/beyond-gnome/kde.md +24 -0
  31. ginext_core-0.8.1/docs/book/beyond-gnome/macos.md +31 -0
  32. ginext_core-0.8.1/docs/book/beyond-gnome/phosh.md +29 -0
  33. ginext_core-0.8.1/docs/book/beyond-gnome/sway.md +27 -0
  34. ginext_core-0.8.1/docs/book/beyond-gnome/windows.md +28 -0
  35. ginext_core-0.8.1/docs/book/building/actions-and-menus.md +29 -0
  36. ginext_core-0.8.1/docs/book/building/application.md +28 -0
  37. ginext_core-0.8.1/docs/book/building/clipboard.md +22 -0
  38. ginext_core-0.8.1/docs/book/building/context-menus.md +22 -0
  39. ginext_core-0.8.1/docs/book/building/css.md +30 -0
  40. ginext_core-0.8.1/docs/book/building/declarative-ui.md +30 -0
  41. ginext_core-0.8.1/docs/book/building/dialogs.md +26 -0
  42. ginext_core-0.8.1/docs/book/building/drag-and-drop.md +28 -0
  43. ginext_core-0.8.1/docs/book/building/events-and-input.md +32 -0
  44. ginext_core-0.8.1/docs/book/building/gio-and-async.md +31 -0
  45. ginext_core-0.8.1/docs/book/building/index.md +22 -0
  46. ginext_core-0.8.1/docs/book/building/libsoup.md +161 -0
  47. ginext_core-0.8.1/docs/book/building/lists.md +38 -0
  48. ginext_core-0.8.1/docs/book/building/shortcuts.md +25 -0
  49. ginext_core-0.8.1/docs/book/building/text-view.md +31 -0
  50. ginext_core-0.8.1/docs/book/building/widgets-and-layout.md +32 -0
  51. ginext_core-0.8.1/docs/book/deeper/cairo.md +28 -0
  52. ginext_core-0.8.1/docs/book/deeper/custom-widgets.md +30 -0
  53. ginext_core-0.8.1/docs/book/deeper/debugging.md +40 -0
  54. ginext_core-0.8.1/docs/book/deeper/gsk.md +28 -0
  55. ginext_core-0.8.1/docs/book/deeper/index.md +12 -0
  56. ginext_core-0.8.1/docs/book/deeper/pango.md +26 -0
  57. ginext_core-0.8.1/docs/book/deeper/performance.md +37 -0
  58. ginext_core-0.8.1/docs/book/extending/annotations.md +36 -0
  59. ginext_core-0.8.1/docs/book/extending/c-async.md +31 -0
  60. ginext_core-0.8.1/docs/book/extending/c-gobject-library.md +39 -0
  61. ginext_core-0.8.1/docs/book/extending/index.md +13 -0
  62. ginext_core-0.8.1/docs/book/extending/overlays.md +31 -0
  63. ginext_core-0.8.1/docs/book/extending/pitfalls.md +31 -0
  64. ginext_core-0.8.1/docs/book/extending/rust.md +24 -0
  65. ginext_core-0.8.1/docs/book/extending/when.md +30 -0
  66. ginext_core-0.8.1/docs/book/foundations/getting-started.md +22 -0
  67. ginext_core-0.8.1/docs/book/foundations/gobject-for-python-devs.md +29 -0
  68. ginext_core-0.8.1/docs/book/foundations/hello-world.md +25 -0
  69. ginext_core-0.8.1/docs/book/foundations/index.md +18 -0
  70. ginext_core-0.8.1/docs/book/foundations/installation.md +31 -0
  71. ginext_core-0.8.1/docs/book/foundations/migration-from-pygobject.md +34 -0
  72. ginext_core-0.8.1/docs/book/foundations/migration-from-qt.md +44 -0
  73. ginext_core-0.8.1/docs/book/foundations/migration-from-react.md +52 -0
  74. ginext_core-0.8.1/docs/book/foundations/migration-from-swiftui.md +48 -0
  75. ginext_core-0.8.1/docs/book/foundations/migration-index.md +20 -0
  76. ginext_core-0.8.1/docs/book/gnome/accessibility.md +38 -0
  77. ginext_core-0.8.1/docs/book/gnome/adw-adaptive.md +27 -0
  78. ginext_core-0.8.1/docs/book/gnome/adw-application.md +23 -0
  79. ginext_core-0.8.1/docs/book/gnome/adw-dialogs.md +25 -0
  80. ginext_core-0.8.1/docs/book/gnome/adw-navigation.md +23 -0
  81. ginext_core-0.8.1/docs/book/gnome/adw-preferences.md +33 -0
  82. ginext_core-0.8.1/docs/book/gnome/adw-styling.md +30 -0
  83. ginext_core-0.8.1/docs/book/gnome/app-icons.md +25 -0
  84. ginext_core-0.8.1/docs/book/gnome/app-id.md +31 -0
  85. ginext_core-0.8.1/docs/book/gnome/appstream.md +35 -0
  86. ginext_core-0.8.1/docs/book/gnome/background.md +24 -0
  87. ginext_core-0.8.1/docs/book/gnome/blueprint.md +31 -0
  88. ginext_core-0.8.1/docs/book/gnome/builder.md +29 -0
  89. ginext_core-0.8.1/docs/book/gnome/cambalache.md +24 -0
  90. ginext_core-0.8.1/docs/book/gnome/circle.md +34 -0
  91. ginext_core-0.8.1/docs/book/gnome/color-and-display.md +26 -0
  92. ginext_core-0.8.1/docs/book/gnome/css.md +29 -0
  93. ginext_core-0.8.1/docs/book/gnome/flathub.md +35 -0
  94. ginext_core-0.8.1/docs/book/gnome/goa.md +24 -0
  95. ginext_core-0.8.1/docs/book/gnome/gsettings.md +24 -0
  96. ginext_core-0.8.1/docs/book/gnome/index.md +56 -0
  97. ginext_core-0.8.1/docs/book/gnome/localization.md +32 -0
  98. ginext_core-0.8.1/docs/book/gnome/meson-layout.md +34 -0
  99. ginext_core-0.8.1/docs/book/gnome/notifications.md +29 -0
  100. ginext_core-0.8.1/docs/book/gnome/platform.md +26 -0
  101. ginext_core-0.8.1/docs/book/gnome/search-providers.md +30 -0
  102. ginext_core-0.8.1/docs/book/gnome/shell-integration.md +23 -0
  103. ginext_core-0.8.1/docs/book/gnome/symbolic-icons.md +24 -0
  104. ginext_core-0.8.1/docs/book/gnome/tracker.md +26 -0
  105. ginext_core-0.8.1/docs/book/gnome/user-docs.md +25 -0
  106. ginext_core-0.8.1/docs/book/gnome/what-makes-a-gnome-app.md +27 -0
  107. ginext_core-0.8.1/docs/book/index.md +38 -0
  108. ginext_core-0.8.1/docs/book/reference/api.md +31 -0
  109. ginext_core-0.8.1/docs/book/reference/freetype.md +25 -0
  110. ginext_core-0.8.1/docs/book/reference/gdk.md +28 -0
  111. ginext_core-0.8.1/docs/book/reference/glossary.md +30 -0
  112. ginext_core-0.8.1/docs/book/reference/harfbuzz.md +27 -0
  113. ginext_core-0.8.1/docs/book/reference/index.md +13 -0
  114. ginext_core-0.8.1/docs/book/reference/pango.md +31 -0
  115. ginext_core-0.8.1/docs/book/reference/pitfalls.md +43 -0
  116. ginext_core-0.8.1/docs/book/shipping/appimage.md +32 -0
  117. ginext_core-0.8.1/docs/book/shipping/ci-cd.md +44 -0
  118. ginext_core-0.8.1/docs/book/shipping/distro.md +30 -0
  119. ginext_core-0.8.1/docs/book/shipping/flatpak.md +37 -0
  120. ginext_core-0.8.1/docs/book/shipping/foundations.md +33 -0
  121. ginext_core-0.8.1/docs/book/shipping/i18n.md +33 -0
  122. ginext_core-0.8.1/docs/book/shipping/index.md +18 -0
  123. ginext_core-0.8.1/docs/book/shipping/macos.md +40 -0
  124. ginext_core-0.8.1/docs/book/shipping/pypi.md +29 -0
  125. ginext_core-0.8.1/docs/book/shipping/snap.md +32 -0
  126. ginext_core-0.8.1/docs/book/shipping/windows.md +38 -0
  127. ginext_core-0.8.1/docs/book/system/accounts-service.md +21 -0
  128. ginext_core-0.8.1/docs/book/system/dbus-server.md +29 -0
  129. ginext_core-0.8.1/docs/book/system/dbus.md +27 -0
  130. ginext_core-0.8.1/docs/book/system/geoclue.md +22 -0
  131. ginext_core-0.8.1/docs/book/system/gsettings.md +33 -0
  132. ginext_core-0.8.1/docs/book/system/gvfs.md +25 -0
  133. ginext_core-0.8.1/docs/book/system/index.md +21 -0
  134. ginext_core-0.8.1/docs/book/system/libsecret.md +24 -0
  135. ginext_core-0.8.1/docs/book/system/logind.md +23 -0
  136. ginext_core-0.8.1/docs/book/system/mpris.md +30 -0
  137. ginext_core-0.8.1/docs/book/system/networkmanager.md +25 -0
  138. ginext_core-0.8.1/docs/book/system/notifications.md +26 -0
  139. ginext_core-0.8.1/docs/book/system/portals.md +38 -0
  140. ginext_core-0.8.1/docs/book/system/services-overview.md +25 -0
  141. ginext_core-0.8.1/docs/book/system/tracker.md +24 -0
  142. ginext_core-0.8.1/docs/book/system/upower.md +25 -0
  143. ginext_core-0.8.1/docs/gallery/images/adw-action-row.png +0 -0
  144. ginext_core-0.8.1/docs/gallery/images/adw-status-page.png +0 -0
  145. ginext_core-0.8.1/docs/gallery/images/gtk-button.png +0 -0
  146. ginext_core-0.8.1/docs/gallery/index.md +37 -0
  147. ginext_core-0.8.1/docs/getting-started/gallery.md +26 -0
  148. ginext_core-0.8.1/docs/getting-started/index.md +19 -0
  149. ginext_core-0.8.1/docs/getting-started/installation.md +79 -0
  150. ginext_core-0.8.1/docs/getting-started/playground.md +62 -0
  151. ginext_core-0.8.1/docs/guides/application-structure.md +21 -0
  152. ginext_core-0.8.1/docs/guides/async-errors-and-event-loops.md +53 -0
  153. ginext_core-0.8.1/docs/guides/concurrency.md +21 -0
  154. ginext_core-0.8.1/docs/guides/constructors-and-namespaces.md +34 -0
  155. ginext_core-0.8.1/docs/guides/gdk.md +35 -0
  156. ginext_core-0.8.1/docs/guides/gio.md +92 -0
  157. ginext_core-0.8.1/docs/guides/gtk.md +55 -0
  158. ginext_core-0.8.1/docs/guides/index.md +41 -0
  159. ginext_core-0.8.1/docs/guides/migration-from-pygobject.md +24 -0
  160. ginext_core-0.8.1/docs/guides/pango.md +29 -0
  161. ginext_core-0.8.1/docs/guides/properties.md +128 -0
  162. ginext_core-0.8.1/docs/guides/signals.md +74 -0
  163. ginext_core-0.8.1/docs/guides/subclassing.md +125 -0
  164. ginext_core-0.8.1/docs/guides/type-checking.md +139 -0
  165. ginext_core-0.8.1/docs/index.md +41 -0
  166. ginext_core-0.8.1/docs/internals/MEMORY.md +3 -0
  167. ginext_core-0.8.1/docs/internals/README.md +58 -0
  168. ginext_core-0.8.1/docs/internals/TODO.md +46 -0
  169. ginext_core-0.8.1/docs/internals/abi-modes.md +584 -0
  170. ginext_core-0.8.1/docs/internals/abi2/abi2.md +70 -0
  171. ginext_core-0.8.1/docs/internals/abi2/async.md +381 -0
  172. ginext_core-0.8.1/docs/internals/abi2/binding.md +202 -0
  173. ginext_core-0.8.1/docs/internals/abi2/closures/POST implementation-notes.md +97 -0
  174. ginext_core-0.8.1/docs/internals/abi2/closures/closure-cell-weakening.md +81 -0
  175. ginext_core-0.8.1/docs/internals/abi2/closures/disconnect-identity.md +78 -0
  176. ginext_core-0.8.1/docs/internals/abi2/closures/native-connection-records.md +90 -0
  177. ginext_core-0.8.1/docs/internals/abi2/closures/owner-inference.md +80 -0
  178. ginext_core-0.8.1/docs/internals/abi2/closures/scope-and-destroy-ownership.md +96 -0
  179. ginext_core-0.8.1/docs/internals/abi2/closures/source-vs-owner-lifetime.md +83 -0
  180. ginext_core-0.8.1/docs/internals/abi2/closures/strong-callback-retention.md +82 -0
  181. ginext_core-0.8.1/docs/internals/abi2/closures/threading-and-reentrancy.md +76 -0
  182. ginext_core-0.8.1/docs/internals/abi2/closures/unified-closure-state-machine.md +165 -0
  183. ginext_core-0.8.1/docs/internals/abi2/conflicts.md +3351 -0
  184. ginext_core-0.8.1/docs/internals/abi2/copy-recursive-design.md +140 -0
  185. ginext_core-0.8.1/docs/internals/abi2/errors.md +268 -0
  186. ginext_core-0.8.1/docs/internals/abi2/gio-file.md +264 -0
  187. ginext_core-0.8.1/docs/internals/abi2/methods.md +185 -0
  188. ginext_core-0.8.1/docs/internals/abi2/property.md +438 -0
  189. ginext_core-0.8.1/docs/internals/abi2/prototype.md +288 -0
  190. ginext_core-0.8.1/docs/internals/abi2/shared-namespace.md +228 -0
  191. ginext_core-0.8.1/docs/internals/abi2/signals.md +338 -0
  192. ginext_core-0.8.1/docs/internals/abi2/unresolved.md +163 -0
  193. ginext_core-0.8.1/docs/internals/async-cancellation.md +174 -0
  194. ginext_core-0.8.1/docs/internals/async-runtime.md +255 -0
  195. ginext_core-0.8.1/docs/internals/async-test-targets.md +101 -0
  196. ginext_core-0.8.1/docs/internals/binary-distribution-ideas.md +373 -0
  197. ginext_core-0.8.1/docs/internals/book-structure-research.md +204 -0
  198. ginext_core-0.8.1/docs/internals/closure-jit-plan.md +206 -0
  199. ginext_core-0.8.1/docs/internals/code-duplication.md +61 -0
  200. ginext_core-0.8.1/docs/internals/doc-ideas.md +89 -0
  201. ginext_core-0.8.1/docs/internals/errors.md +54 -0
  202. ginext_core-0.8.1/docs/internals/feature-slice-layout-plan.md +415 -0
  203. ginext_core-0.8.1/docs/internals/full-jit-plan.md +1079 -0
  204. ginext_core-0.8.1/docs/internals/future-features.md +119 -0
  205. ginext_core-0.8.1/docs/internals/ginext-extend.md +160 -0
  206. ginext_core-0.8.1/docs/internals/ginext-namespace+class+method+invoke-plan.md +671 -0
  207. ginext_core-0.8.1/docs/internals/gitlab-agent-setup.md +372 -0
  208. ginext_core-0.8.1/docs/internals/gobject-c-core-reduction.md +388 -0
  209. ginext_core-0.8.1/docs/internals/gobject-property-optimizations.md +158 -0
  210. ginext_core-0.8.1/docs/internals/goi-docs-plan.md +197 -0
  211. ginext_core-0.8.1/docs/internals/gtk-expression.md +367 -0
  212. ginext_core-0.8.1/docs/internals/gtkcolumnview.md +411 -0
  213. ginext_core-0.8.1/docs/internals/hot-reload.md +363 -0
  214. ginext_core-0.8.1/docs/internals/invoke-marshaller-analysis.md +803 -0
  215. ginext_core-0.8.1/docs/internals/invoke-plan.md +534 -0
  216. ginext_core-0.8.1/docs/internals/invoke-vectorcall-revival.md +279 -0
  217. ginext_core-0.8.1/docs/internals/marshaller-coercions.md +190 -0
  218. ginext_core-0.8.1/docs/internals/native-compat-surface-plan.md +327 -0
  219. ginext_core-0.8.1/docs/internals/overlays.md +366 -0
  220. ginext_core-0.8.1/docs/internals/project_runtime_restructure.md +53 -0
  221. ginext_core-0.8.1/docs/internals/pygobject-architectural-issues.md +265 -0
  222. ginext_core-0.8.1/docs/internals/pygobject-lifetime-gc-notes.md +295 -0
  223. ginext_core-0.8.1/docs/internals/ref-counting.md +1251 -0
  224. ginext_core-0.8.1/docs/internals/story/1 why ginext.md +56 -0
  225. ginext_core-0.8.1/docs/internals/story/10 typing by default.md +143 -0
  226. ginext_core-0.8.1/docs/internals/story/11 mapping rules.md +174 -0
  227. ginext_core-0.8.1/docs/internals/story/12 binding member kinds.md +178 -0
  228. ginext_core-0.8.1/docs/internals/story/13 primitive and scalar values.md +118 -0
  229. ginext_core-0.8.1/docs/internals/story/14 non scalar values.md +206 -0
  230. ginext_core-0.8.1/docs/internals/story/15 goi cli.md +136 -0
  231. ginext_core-0.8.1/docs/internals/story/2 importing namespaces.md +65 -0
  232. ginext_core-0.8.1/docs/internals/story/3 generated bindings.md +89 -0
  233. ginext_core-0.8.1/docs/internals/story/4 objects methods and properties.md +94 -0
  234. ginext_core-0.8.1/docs/internals/story/5 signals and ownership.md +91 -0
  235. ginext_core-0.8.1/docs/internals/story/6 files async and errors.md +97 -0
  236. ginext_core-0.8.1/docs/internals/story/7 property bindings.md +83 -0
  237. ginext_core-0.8.1/docs/internals/story/8 subclassing later.md +63 -0
  238. ginext_core-0.8.1/docs/internals/story/9 tests and doctests.md +81 -0
  239. ginext_core-0.8.1/docs/internals/story/README.md +41 -0
  240. ginext_core-0.8.1/docs/internals/template-api-design.md +317 -0
  241. ginext_core-0.8.1/docs/internals/testing-compat.md +180 -0
  242. ginext_core-0.8.1/docs/internals/todo-2026-05-10-jit-specialize.md +169 -0
  243. ginext_core-0.8.1/docs/internals/todo-2026-05-10.md +139 -0
  244. ginext_core-0.8.1/docs/internals/typelib-versioning.md +328 -0
  245. ginext_core-0.8.1/docs/internals/typing-debt.md +161 -0
  246. ginext_core-0.8.1/docs/introduction.md +34 -0
  247. ginext_core-0.8.1/docs/performance.md +21 -0
  248. ginext_core-0.8.1/docs/stubgen.md +277 -0
  249. ginext_core-0.8.1/docs/upgrading.md +15 -0
  250. ginext_core-0.8.1/docs/why-a-new-api.md +59 -0
  251. ginext_core-0.8.1/examples/async/application.py +44 -0
  252. ginext_core-0.8.1/examples/async/cancel.py +55 -0
  253. ginext_core-0.8.1/examples/async/errors.py +66 -0
  254. ginext_core-0.8.1/examples/async/sockets.py +55 -0
  255. ginext_core-0.8.1/examples/async/walk.py +43 -0
  256. ginext_core-0.8.1/examples/async/with_asyncio.py +60 -0
  257. ginext_core-0.8.1/examples/commander/pyproject.toml +46 -0
  258. ginext_core-0.8.1/examples/commander/src/commander/__init__.py +1 -0
  259. ginext_core-0.8.1/examples/commander/src/commander/__main__.py +14 -0
  260. ginext_core-0.8.1/examples/commander/src/commander/app.py +61 -0
  261. ginext_core-0.8.1/examples/commander/src/commander/components/__init__.py +1 -0
  262. ginext_core-0.8.1/examples/commander/src/commander/components/archive/__init__.py +15 -0
  263. ginext_core-0.8.1/examples/commander/src/commander/components/archive/archiveentry.py +151 -0
  264. ginext_core-0.8.1/examples/commander/src/commander/components/lister/__init__.py +3 -0
  265. ginext_core-0.8.1/examples/commander/src/commander/components/lister/listerview.css +54 -0
  266. ginext_core-0.8.1/examples/commander/src/commander/components/lister/listerview.py +662 -0
  267. ginext_core-0.8.1/examples/commander/src/commander/components/location/__init__.py +19 -0
  268. ginext_core-0.8.1/examples/commander/src/commander/components/location/locationstore.py +94 -0
  269. ginext_core-0.8.1/examples/commander/src/commander/components/location/pathdisplay.py +30 -0
  270. ginext_core-0.8.1/examples/commander/src/commander/components/operations/__init__.py +11 -0
  271. ginext_core-0.8.1/examples/commander/src/commander/components/operations/base.py +91 -0
  272. ginext_core-0.8.1/examples/commander/src/commander/components/operations/copy.py +38 -0
  273. ginext_core-0.8.1/examples/commander/src/commander/components/operations/create_folder.py +36 -0
  274. ginext_core-0.8.1/examples/commander/src/commander/components/operations/move.py +38 -0
  275. ginext_core-0.8.1/examples/commander/src/commander/components/operations/rename.py +31 -0
  276. ginext_core-0.8.1/examples/commander/src/commander/components/pane/__init__.py +3 -0
  277. ginext_core-0.8.1/examples/commander/src/commander/components/pane/paneview.css +211 -0
  278. ginext_core-0.8.1/examples/commander/src/commander/components/pane/paneview.py +989 -0
  279. ginext_core-0.8.1/examples/commander/src/commander/components/pangoutils.py +106 -0
  280. ginext_core-0.8.1/examples/commander/src/commander/components/quickview/__init__.py +3 -0
  281. ginext_core-0.8.1/examples/commander/src/commander/components/quickview/zoomview.py +94 -0
  282. ginext_core-0.8.1/examples/commander/src/commander/components/settings/__init__.py +3 -0
  283. ginext_core-0.8.1/examples/commander/src/commander/components/settings/settingsstore.py +98 -0
  284. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/__init__.py +3 -0
  285. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/back.svg +4 -0
  286. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/compare.svg +5 -0
  287. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/edit.svg +6 -0
  288. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/folder.svg +5 -0
  289. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/forward.svg +4 -0
  290. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/ftp.svg +6 -0
  291. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/image.svg +6 -0
  292. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/new-folder.svg +6 -0
  293. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/pack.svg +6 -0
  294. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/panes.svg +6 -0
  295. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/refresh.svg +4 -0
  296. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/search.svg +5 -0
  297. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/select.svg +5 -0
  298. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/sort.svg +4 -0
  299. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/sync.svg +5 -0
  300. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/tree.svg +7 -0
  301. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/unpack.svg +6 -0
  302. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/url.svg +6 -0
  303. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/toolbarview.css +38 -0
  304. ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/toolbarview.py +61 -0
  305. ginext_core-0.8.1/examples/commander/src/commander/components/window/__init__.py +3 -0
  306. ginext_core-0.8.1/examples/commander/src/commander/components/window/menus.ui +27 -0
  307. ginext_core-0.8.1/examples/commander/src/commander/components/window/preferences.py +67 -0
  308. ginext_core-0.8.1/examples/commander/src/commander/components/window/preferences.ui +55 -0
  309. ginext_core-0.8.1/examples/commander/src/commander/components/window/shortcuts.ui +127 -0
  310. ginext_core-0.8.1/examples/commander/src/commander/components/window/window.ui +57 -0
  311. ginext_core-0.8.1/examples/commander/src/commander/components/window/windowview.css +233 -0
  312. ginext_core-0.8.1/examples/commander/src/commander/components/window/windowview.py +703 -0
  313. ginext_core-0.8.1/examples/commander/src/commander/fs/__init__.py +3 -0
  314. ginext_core-0.8.1/examples/commander/src/commander/fs/file.py +150 -0
  315. ginext_core-0.8.1/examples/commander/src/commander/providers/__init__.py +13 -0
  316. ginext_core-0.8.1/examples/commander/src/commander/providers/base.py +41 -0
  317. ginext_core-0.8.1/examples/commander/src/commander/providers/builtin.py +114 -0
  318. ginext_core-0.8.1/examples/commander/src/commander/providers/image.py +83 -0
  319. ginext_core-0.8.1/examples/commander/src/commander/providers/pdf.py +123 -0
  320. ginext_core-0.8.1/examples/commander/src/commander/providers/registry.py +128 -0
  321. ginext_core-0.8.1/examples/commander/src/commander/providers/text.py +109 -0
  322. ginext_core-0.8.1/examples/commander/src/commander/providers/video.py +33 -0
  323. ginext_core-0.8.1/examples/commander/src/commander/ui/__init__.py +1 -0
  324. ginext_core-0.8.1/examples/commander/src/commander/ui/gtkbuilder/__init__.py +20 -0
  325. ginext_core-0.8.1/examples/commander/src/commander/ui/gtkbuilder/operations.ui +23 -0
  326. ginext_core-0.8.1/examples/commander/uv.lock +246 -0
  327. ginext_core-0.8.1/examples/docviewer/docviewer.py +371 -0
  328. ginext_core-0.8.1/examples/docviewer/example.md +69 -0
  329. ginext_core-0.8.1/examples/draw-bench/_bench_common.py +161 -0
  330. ginext_core-0.8.1/examples/draw-bench/app.py +171 -0
  331. ginext_core-0.8.1/examples/draw-bench/closure_bench.py +56 -0
  332. ginext_core-0.8.1/examples/draw-bench/gjs_microbench.js +142 -0
  333. ginext_core-0.8.1/examples/draw-bench/membench.py +235 -0
  334. ginext_core-0.8.1/examples/draw-bench/microbench.py +288 -0
  335. ginext_core-0.8.1/examples/draw-bench/run-gjs-microbench.sh +36 -0
  336. ginext_core-0.8.1/examples/gio/drive.py +36 -0
  337. ginext_core-0.8.1/examples/gio/enumerator.py +44 -0
  338. ginext_core-0.8.1/examples/gio/file.py +54 -0
  339. ginext_core-0.8.1/examples/gio/settings.py +49 -0
  340. ginext_core-0.8.1/examples/gio/volume.py +35 -0
  341. ginext_core-0.8.1/examples/hello_gtk3.py +45 -0
  342. ginext_core-0.8.1/examples/hello_template.py +59 -0
  343. ginext_core-0.8.1/examples/mandelbrot/app.py +491 -0
  344. ginext_core-0.8.1/examples/numba-cuda/README.md +58 -0
  345. ginext_core-0.8.1/examples/numba-cuda/app.py +281 -0
  346. ginext_core-0.8.1/examples/playground/README.md +455 -0
  347. ginext_core-0.8.1/examples/playground/dbus_dashboard.py +1607 -0
  348. ginext_core-0.8.1/examples/playground/numba_cuda_gst_demo.py +256 -0
  349. ginext_core-0.8.1/examples/playground/numba_gst_demo.py +410 -0
  350. ginext_core-0.8.1/examples/playground/numba_gst_spike.py +200 -0
  351. ginext_core-0.8.1/examples/playground/playground/__init__.py +1 -0
  352. ginext_core-0.8.1/examples/playground/playground/__main__.py +4 -0
  353. ginext_core-0.8.1/examples/playground/playground/app.py +29 -0
  354. ginext_core-0.8.1/examples/playground/playground/catalog.py +65 -0
  355. ginext_core-0.8.1/examples/playground/playground/ui/template-row.blp +32 -0
  356. ginext_core-0.8.1/examples/playground/playground/ui/template-row.ui +50 -0
  357. ginext_core-0.8.1/examples/playground/playground/ui/window.blp +130 -0
  358. ginext_core-0.8.1/examples/playground/playground/ui/window.ui +172 -0
  359. ginext_core-0.8.1/examples/playground/playground/window.py +112 -0
  360. ginext_core-0.8.1/examples/pyedit/__init__.py +11 -0
  361. ginext_core-0.8.1/examples/pyedit/__main__.py +7 -0
  362. ginext_core-0.8.1/examples/pyedit/app.py +168 -0
  363. ginext_core-0.8.1/examples/pyedit/document.py +160 -0
  364. ginext_core-0.8.1/examples/pyedit/page.py +125 -0
  365. ginext_core-0.8.1/examples/pyedit/preferences.py +140 -0
  366. ginext_core-0.8.1/examples/pyedit/resources/menus.ui +132 -0
  367. ginext_core-0.8.1/examples/pyedit/resources/page.ui +42 -0
  368. ginext_core-0.8.1/examples/pyedit/resources/preferences.ui +155 -0
  369. ginext_core-0.8.1/examples/pyedit/resources/search-bar.ui +116 -0
  370. ginext_core-0.8.1/examples/pyedit/resources/shortcuts.ui +181 -0
  371. ginext_core-0.8.1/examples/pyedit/resources/window.ui +169 -0
  372. ginext_core-0.8.1/examples/pyedit/search_bar.py +229 -0
  373. ginext_core-0.8.1/examples/pyedit/state.py +196 -0
  374. ginext_core-0.8.1/examples/pyedit/window.py +595 -0
  375. ginext_core-0.8.1/examples/templated/templated.gresource +0 -0
  376. ginext_core-0.8.1/examples/templated/templated.gresource.xml +6 -0
  377. ginext_core-0.8.1/examples/templated/window.ui +25 -0
  378. ginext_core-0.8.1/examples/terminal/__init__.py +9 -0
  379. ginext_core-0.8.1/examples/terminal/__main__.py +7 -0
  380. ginext_core-0.8.1/examples/terminal/app.py +136 -0
  381. ginext_core-0.8.1/examples/terminal/palettes.py +159 -0
  382. ginext_core-0.8.1/examples/terminal/preferences.py +164 -0
  383. ginext_core-0.8.1/examples/terminal/resources/menus.ui +78 -0
  384. ginext_core-0.8.1/examples/terminal/resources/preferences.ui +155 -0
  385. ginext_core-0.8.1/examples/terminal/resources/window.ui +60 -0
  386. ginext_core-0.8.1/examples/terminal/state.py +131 -0
  387. ginext_core-0.8.1/examples/terminal/window.py +296 -0
  388. ginext_core-0.8.1/examples/web_browser/__init__.py +8 -0
  389. ginext_core-0.8.1/examples/web_browser/__main__.py +7 -0
  390. ginext_core-0.8.1/examples/web_browser/app.py +481 -0
  391. ginext_core-0.8.1/examples/web_browser/extensions/simple-blocker/content-filters/privacy.json +27 -0
  392. ginext_core-0.8.1/examples/web_browser/extensions/simple-blocker/manifest.json +14 -0
  393. ginext_core-0.8.1/examples/web_browser/extensions.py +225 -0
  394. ginext_core-0.8.1/examples/web_browser/resources/menus.ui +148 -0
  395. ginext_core-0.8.1/examples/web_browser/resources/settings.ui +130 -0
  396. ginext_core-0.8.1/examples/web_browser/resources/window.ui +157 -0
  397. ginext_core-0.8.1/examples/web_browser/settings.py +59 -0
  398. ginext_core-0.8.1/examples/web_browser/state.py +94 -0
  399. ginext_core-0.8.1/examples/web_browser/store.py +95 -0
  400. ginext_core-0.8.1/examples/web_browser/window.py +908 -0
  401. ginext_core-0.8.1/examples/webcam-effects/README.md +52 -0
  402. ginext_core-0.8.1/examples/webcam-effects/app.py +961 -0
  403. ginext_core-0.8.1/i686-linux.ini +14 -0
  404. ginext_core-0.8.1/meson.build +83 -0
  405. ginext_core-0.8.1/meson.options +13 -0
  406. ginext_core-0.8.1/mkdocs.yml +99 -0
  407. ginext_core-0.8.1/native-win-arm64.ini +14 -0
  408. ginext_core-0.8.1/packages/gi/README.md +14 -0
  409. ginext_core-0.8.1/packages/gi/pyproject.toml +50 -0
  410. ginext_core-0.8.1/packages/ginext-gi-compat/conftest.py +26 -0
  411. ginext_core-0.8.1/packages/ginext-gi-compat/pyproject.toml +57 -0
  412. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/__init__.py +95 -0
  413. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/_gi.py +178 -0
  414. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/_gobject_props.py +70 -0
  415. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/_gobject_signals.py +166 -0
  416. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/_gtktemplate.py +271 -0
  417. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/_ossighelper.py +285 -0
  418. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/_propertyhelper.py +244 -0
  419. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/_signalhelper.py +255 -0
  420. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/docstring.py +205 -0
  421. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/events.py +1061 -0
  422. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/importer.py +65 -0
  423. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/module.py +85 -0
  424. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/overrides/Gio.py +16 -0
  425. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/overrides/Gtk.py +57 -0
  426. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/overrides/__init__.py +117 -0
  427. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/repository.py +1121 -0
  428. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/.ruff.toml +2 -0
  429. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/README.md +10 -0
  430. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/__init__.py +1 -0
  431. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/conftest.py +487 -0
  432. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/helper.py +125 -0
  433. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/org.gnome.test.gschema.xml +38 -0
  434. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_async.py +298 -0
  435. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_atoms.py +102 -0
  436. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_cairo.py +329 -0
  437. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_callback.py +116 -0
  438. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_docstring.py +175 -0
  439. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_enum.py +176 -0
  440. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_error.py +169 -0
  441. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_events.py +660 -0
  442. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_everything.py +1574 -0
  443. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_fields.py +225 -0
  444. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_fundamental.py +254 -0
  445. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_gdbus.py +482 -0
  446. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_gi.py +3915 -0
  447. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_gio.py +650 -0
  448. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_glib.py +523 -0
  449. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_gobject.py +1054 -0
  450. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_gtk_template.py +830 -0
  451. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_gtype.py +114 -0
  452. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_import_machinery.py +166 -0
  453. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_interface.py +63 -0
  454. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_internal_api.py +127 -0
  455. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_iochannel.py +493 -0
  456. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_mainloop.py +79 -0
  457. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_object_lifecycle.py +453 -0
  458. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_object_marshaling.py +698 -0
  459. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_ossig.py +198 -0
  460. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_overrides_gdk.py +374 -0
  461. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_overrides_gdkpixbuf.py +54 -0
  462. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_overrides_gio.py +460 -0
  463. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_overrides_glib.py +778 -0
  464. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_overrides_gobject.py +417 -0
  465. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_overrides_gtk.py +3306 -0
  466. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_overrides_pango.py +66 -0
  467. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_properties.py +1598 -0
  468. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_pycapi.py +46 -0
  469. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_repository.py +445 -0
  470. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_resulttuple.py +87 -0
  471. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_signal.py +1697 -0
  472. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_signature.py +305 -0
  473. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_source.py +493 -0
  474. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_subprocess.py +239 -0
  475. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_thread.py +39 -0
  476. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_typeclass.py +76 -0
  477. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_unknown.py +35 -0
  478. ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/types.py +23 -0
  479. ginext_core-0.8.1/packages/ginext-gi-compat/tests/conftest.py +63 -0
  480. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/.ruff.toml +2 -0
  481. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/README.md +10 -0
  482. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/__init__.py +1 -0
  483. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/conftest.py +411 -0
  484. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/helper.py +125 -0
  485. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/org.gnome.test.gschema.xml +38 -0
  486. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_async.py +295 -0
  487. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_atoms.py +100 -0
  488. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_cairo.py +327 -0
  489. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_callback.py +116 -0
  490. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_connect_object_gc.py +49 -0
  491. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_connect_object_signal.py +120 -0
  492. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_docstring.py +173 -0
  493. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_enum.py +171 -0
  494. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_error.py +169 -0
  495. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_events.py +657 -0
  496. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_everything.py +1563 -0
  497. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_fields.py +221 -0
  498. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_fundamental.py +253 -0
  499. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_gdbus.py +481 -0
  500. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_gi.py +3916 -0
  501. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_gio.py +641 -0
  502. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_glib.py +521 -0
  503. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_gobject.py +1051 -0
  504. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_gtk_template.py +830 -0
  505. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_gtype.py +114 -0
  506. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_import_machinery.py +164 -0
  507. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_interface.py +62 -0
  508. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_internal_api.py +127 -0
  509. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_iochannel.py +492 -0
  510. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_mainloop.py +79 -0
  511. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_object_lifecycle.py +453 -0
  512. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_object_marshaling.py +697 -0
  513. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_ossig.py +206 -0
  514. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_overrides_gdk.py +373 -0
  515. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_overrides_gdkpixbuf.py +54 -0
  516. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_overrides_gio.py +459 -0
  517. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_overrides_glib.py +778 -0
  518. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_overrides_gobject.py +415 -0
  519. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_overrides_gtk.py +3274 -0
  520. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_overrides_pango.py +65 -0
  521. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_properties.py +1598 -0
  522. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_props_proxy.py +155 -0
  523. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_pycapi.py +46 -0
  524. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_repository.py +433 -0
  525. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_resulttuple.py +87 -0
  526. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_signal.py +1694 -0
  527. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_signature.py +305 -0
  528. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_source.py +491 -0
  529. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_subprocess.py +232 -0
  530. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_thread.py +39 -0
  531. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_typeclass.py +73 -0
  532. ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_unknown.py +35 -0
  533. ginext_core-0.8.1/packages/ginext-gio/pyproject.toml +55 -0
  534. ginext_core-0.8.1/packages/ginext-gio/src/ginext_gio/__init__.py +0 -0
  535. ginext_core-0.8.1/packages/ginext-gio/src/ginext_gio/_overlays/Gio.py +805 -0
  536. ginext_core-0.8.1/packages/ginext-gio/src/ginext_gio/_overlays/GioUnix.py +27 -0
  537. ginext_core-0.8.1/packages/ginext-gio/tests/conftest.py +82 -0
  538. ginext_core-0.8.1/packages/ginext-gio/tests/gio/__init__.py +16 -0
  539. ginext_core-0.8.1/packages/ginext-gio/tests/gio/fixtures/gsettings/gschemas.compiled +0 -0
  540. ginext_core-0.8.1/packages/ginext-gio/tests/gio/fixtures/gsettings/org.ginext.test.gschema.xml +69 -0
  541. ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_aio_eventloop.py +308 -0
  542. ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_app_info.py +59 -0
  543. ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_application.py +471 -0
  544. ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_async.py +279 -0
  545. ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_async_callback_userdata.py +105 -0
  546. ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_cancellable.py +336 -0
  547. ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_dbus.py +558 -0
  548. ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_errors.py +367 -0
  549. ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_file.py +486 -0
  550. ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_file_interface_compat.py +113 -0
  551. ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_input_stream.py +30 -0
  552. ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_list_store.py +217 -0
  553. ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_menu.py +88 -0
  554. ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_settings.py +875 -0
  555. ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_simple_action.py +107 -0
  556. ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_task.py +48 -0
  557. ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_volume_monitor.py +28 -0
  558. ginext_core-0.8.1/packages/ginext-gst/pyproject.toml +51 -0
  559. ginext_core-0.8.1/packages/ginext-gst/src/ginext_gst/__init__.py +59 -0
  560. ginext_core-0.8.1/packages/ginext-gst/src/ginext_gst/_overlays/Gst.py +1304 -0
  561. ginext_core-0.8.1/packages/ginext-gst/src/ginext_gst/plugin.py +115 -0
  562. ginext_core-0.8.1/packages/ginext-gst/tests/__init__.py +1 -0
  563. ginext_core-0.8.1/packages/ginext-gst/tests/conftest.py +7 -0
  564. ginext_core-0.8.1/packages/ginext-gst/tests/gst/__init__.py +0 -0
  565. ginext_core-0.8.1/packages/ginext-gst/tests/gst/conftest.py +82 -0
  566. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_additional_namespaces.py +264 -0
  567. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_app.py +190 -0
  568. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_bin.py +54 -0
  569. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_bitmask.py +37 -0
  570. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_buffer.py +143 -0
  571. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_buffer_list.py +106 -0
  572. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_bus.py +121 -0
  573. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_caps.py +75 -0
  574. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_caps_features.py +71 -0
  575. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_double_range.py +27 -0
  576. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_element.py +187 -0
  577. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_element_factory.py +40 -0
  578. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_event.py +97 -0
  579. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_fraction.py +85 -0
  580. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_fraction_range.py +30 -0
  581. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_ghost_pad.py +27 -0
  582. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_init.py +25 -0
  583. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_int64_range.py +51 -0
  584. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_int_range.py +51 -0
  585. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_iterator.py +22 -0
  586. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_mini_object.py +95 -0
  587. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_pipeline.py +24 -0
  588. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_plugin.py +132 -0
  589. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_python_element_registration.py +103 -0
  590. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_query.py +87 -0
  591. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_request_pad.py +63 -0
  592. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_sample.py +84 -0
  593. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_structure.py +87 -0
  594. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_subprocess_marker.py +12 -0
  595. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_tag_list.py +62 -0
  596. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_time_args.py +34 -0
  597. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_value_array.py +79 -0
  598. ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_value_list.py +79 -0
  599. ginext_core-0.8.1/packages/ginext-gst/tests/plugin_support.py +259 -0
  600. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/__init__.py +1 -0
  601. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/conftest.py +46 -0
  602. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/subprocess_runner.py +27 -0
  603. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/support.py +984 -0
  604. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_aggregator.py +525 -0
  605. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_audio_aggregator.py +174 -0
  606. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_audio_decoder.py +74 -0
  607. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_audio_encoder.py +76 -0
  608. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_audio_filter.py +193 -0
  609. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_audio_sink.py +166 -0
  610. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_audio_src.py +158 -0
  611. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_base_parse.py +83 -0
  612. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_base_sink.py +151 -0
  613. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_base_src.py +150 -0
  614. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_base_transform.py +305 -0
  615. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_collect_pads.py +103 -0
  616. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_plain_element.py +211 -0
  617. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_plugin_registration.py +196 -0
  618. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_properties_signals.py +93 -0
  619. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_push_src.py +313 -0
  620. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_request_pad.py +79 -0
  621. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_video_aggregator.py +130 -0
  622. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_video_decoder.py +83 -0
  623. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_video_encoder.py +79 -0
  624. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_video_filter.py +196 -0
  625. ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_video_sink.py +154 -0
  626. ginext_core-0.8.1/packages/ginext-gtk/pyproject.toml +64 -0
  627. ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/__init__.py +0 -0
  628. ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_defaults.py +40 -0
  629. ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_gtktemplate.py +565 -0
  630. ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/Gdk.py +217 -0
  631. ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/Gsk.py +38 -0
  632. ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/Gtk.py +50 -0
  633. ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/Pango.py +216 -0
  634. ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/css.py +100 -0
  635. ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/expression.py +400 -0
  636. ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/gtk3_actions.py +166 -0
  637. ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/gtk3_builder.py +77 -0
  638. ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/gtk3_dialogs.py +153 -0
  639. ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/gtk3_legacy.py +246 -0
  640. ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/text.py +226 -0
  641. ginext_core-0.8.1/packages/ginext-gtk/tests/conftest.py +129 -0
  642. ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/__init__.py +1 -0
  643. ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/support.py +39 -0
  644. ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_cicp_params.py +18 -0
  645. ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_color_state.py +16 -0
  646. ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_content_formats.py +44 -0
  647. ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_content_formats_builder.py +17 -0
  648. ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_memory_texture.py +25 -0
  649. ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_popup_layout.py +29 -0
  650. ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_rectangle.py +21 -0
  651. ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_rgba.py +19 -0
  652. ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_texture_downloader.py +47 -0
  653. ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/__init__.py +1 -0
  654. ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/support.py +43 -0
  655. ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/test_parse_location.py +20 -0
  656. ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/test_path.py +31 -0
  657. ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/test_path_builder.py +22 -0
  658. ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/test_path_measure.py +16 -0
  659. ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/test_rounded_rect.py +20 -0
  660. ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/test_shadow.py +20 -0
  661. ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/test_stroke.py +22 -0
  662. ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/test_transform.py +34 -0
  663. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/__init__.py +16 -0
  664. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/conftest.py +36 -0
  665. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_Gtk_Template.py +324 -0
  666. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_Gtk_TextBuffer.py +91 -0
  667. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_application.py +53 -0
  668. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_application_vfunc_rebind.py +51 -0
  669. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_atoms.py +73 -0
  670. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_button.py +86 -0
  671. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_cssprovider_backlog.py +88 -0
  672. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_gdk_boxed.py +73 -0
  673. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_gdk_event_union_backlog.py +128 -0
  674. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_listbox_backlog.py +170 -0
  675. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_template.py +134 -0
  676. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_textview_backlog.py +338 -0
  677. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_tree_path.py +82 -0
  678. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_unsupported_argument_args.py +65 -0
  679. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_widget_compat_backlog.py +140 -0
  680. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/__init__.py +16 -0
  681. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/conftest.py +47 -0
  682. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_adjustment.py +69 -0
  683. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_application.py +68 -0
  684. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_box.py +53 -0
  685. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_builder.py +39 -0
  686. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_button.py +56 -0
  687. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_content_provider.py +37 -0
  688. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_custom_sorter_compat.py +117 -0
  689. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_entry_completion.py +24 -0
  690. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_enum_as_string.py +32 -0
  691. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_expression.py +200 -0
  692. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_expression_sorters.py +249 -0
  693. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_implied_defaults.py +112 -0
  694. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_native_widget_props.py +64 -0
  695. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_scale.py +24 -0
  696. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_template.py +239 -0
  697. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_text_iter.py +77 -0
  698. ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_textbuffer_backlog.py +343 -0
  699. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/__init__.py +1 -0
  700. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/support.py +43 -0
  701. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_attr_list.py +58 -0
  702. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_color.py +20 -0
  703. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_context.py +50 -0
  704. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_coverage.py +15 -0
  705. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_font.py +23 -0
  706. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_font_description.py +38 -0
  707. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_font_face.py +16 -0
  708. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_font_family.py +15 -0
  709. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_font_map.py +16 -0
  710. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_font_metrics.py +24 -0
  711. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_fontset.py +22 -0
  712. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_glyph_item.py +13 -0
  713. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_item.py +12 -0
  714. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_language.py +27 -0
  715. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_layout.py +58 -0
  716. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_layout_iter.py +21 -0
  717. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_layout_line.py +21 -0
  718. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_matrix.py +26 -0
  719. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_script_iter.py +15 -0
  720. ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_tab_array.py +39 -0
  721. ginext_core-0.8.1/packages/ginext-gtk/tests/subprocess_runner.py +27 -0
  722. ginext_core-0.8.1/packages/ginext-gtk/tests/subprocess_support.py +37 -0
  723. ginext_core-0.8.1/packages/ginext-gtk/tests/test_gtk3_subprocess.py +97 -0
  724. ginext_core-0.8.1/packages/ginext-libsoup/pyproject.toml +52 -0
  725. ginext_core-0.8.1/packages/ginext-libsoup/src/ginext_libsoup/__init__.py +2 -0
  726. ginext_core-0.8.1/packages/ginext-libsoup/src/ginext_libsoup/_overlays/Soup.py +718 -0
  727. ginext_core-0.8.1/packages/ginext-libsoup/src/ginext_libsoup/_overlays/__init__.py +1 -0
  728. ginext_core-0.8.1/packages/ginext-libsoup/tests/conftest.py +33 -0
  729. ginext_core-0.8.1/packages/ginext-libsoup/tests/soup/test_async_client.py +205 -0
  730. ginext_core-0.8.1/packages/ginext-stubgen/pyproject.toml +30 -0
  731. ginext_core-0.8.1/packages/ginext-stubgen/src/ginext_stubgen/__init__.py +2731 -0
  732. ginext_core-0.8.1/packages/ginext-stubgen/src/ginext_stubgen/__main__.py +277 -0
  733. ginext_core-0.8.1/packages/ginext-stubgen/src/ginext_stubgen/docgen.py +733 -0
  734. ginext_core-0.8.1/packages/ginext-stubgen/src/ginext_stubgen/native_mode_overlays.toml +52 -0
  735. ginext_core-0.8.1/packages/ginext-stubgen/src/ginext_stubgen/native_overlays.toml +328 -0
  736. ginext_core-0.8.1/packages/ginext-stubgen/src/ginext_stubgen/overlay_harvest.py +380 -0
  737. ginext_core-0.8.1/packages/ginext-stubgen/tests/test_stubgen.py +470 -0
  738. ginext_core-0.8.1/packages/ginext-stubs/backend.py +66 -0
  739. ginext_core-0.8.1/packages/ginext-stubs/ginext-stubs/py.typed +0 -0
  740. ginext_core-0.8.1/packages/ginext-stubs/pyproject.toml +43 -0
  741. ginext_core-0.8.1/packages/ginext-stubs/uv.lock +8 -0
  742. ginext_core-0.8.1/packages/typelib/README.md +44 -0
  743. ginext_core-0.8.1/packages/typelib/annotation.c +874 -0
  744. ginext_core-0.8.1/packages/typelib/annotation.h +320 -0
  745. ginext_core-0.8.1/packages/typelib/bench.c +338 -0
  746. ginext_core-0.8.1/packages/typelib/bench.h +386 -0
  747. ginext_core-0.8.1/packages/typelib/drawable.c +67 -0
  748. ginext_core-0.8.1/packages/typelib/drawable.h +48 -0
  749. ginext_core-0.8.1/packages/typelib/foo.c +944 -0
  750. ginext_core-0.8.1/packages/typelib/foo.h +572 -0
  751. ginext_core-0.8.1/packages/typelib/generate_stubs.py +64 -0
  752. ginext_core-0.8.1/packages/typelib/gimarshallingtests.c +10336 -0
  753. ginext_core-0.8.1/packages/typelib/gimarshallingtests.h +2875 -0
  754. ginext_core-0.8.1/packages/typelib/gimarshallingtestsextra.c +194 -0
  755. ginext_core-0.8.1/packages/typelib/gimarshallingtestsextra.h +70 -0
  756. ginext_core-0.8.1/packages/typelib/gitestmacros.h +10 -0
  757. ginext_core-0.8.1/packages/typelib/meson.build +180 -0
  758. ginext_core-0.8.1/packages/typelib/regress-unix.c +40 -0
  759. ginext_core-0.8.1/packages/typelib/regress-unix.h +32 -0
  760. ginext_core-0.8.1/packages/typelib/regress.c +5301 -0
  761. ginext_core-0.8.1/packages/typelib/regress.h +1789 -0
  762. ginext_core-0.8.1/packages/typelib/regressextra.c +602 -0
  763. ginext_core-0.8.1/packages/typelib/regressextra.h +128 -0
  764. ginext_core-0.8.1/packages/typelib/utility.c +68 -0
  765. ginext_core-0.8.1/packages/typelib/utility.h +109 -0
  766. ginext_core-0.8.1/pyproject.toml +481 -0
  767. ginext_core-0.8.1/ruff-license.toml +29 -0
  768. ginext_core-0.8.1/scripts/bump_version.py +97 -0
  769. ginext_core-0.8.1/scripts/check_gir_test_coverage.py +85 -0
  770. ginext_core-0.8.1/scripts/check_noqa.py +24 -0
  771. ginext_core-0.8.1/scripts/generate_compiled_overlays.py +833 -0
  772. ginext_core-0.8.1/scripts/inventory_probe.py +175 -0
  773. ginext_core-0.8.1/scripts/inventory_signatures.py +449 -0
  774. ginext_core-0.8.1/scripts/inventory_snapshot_arg_args.py +115 -0
  775. ginext_core-0.8.1/scripts/inventory_sweep.py +429 -0
  776. ginext_core-0.8.1/scripts/make_override.py +19 -0
  777. ginext_core-0.8.1/src/ginext/GIRepository.pyi +46 -0
  778. ginext_core-0.8.1/src/ginext/GObject.py +38 -0
  779. ginext_core-0.8.1/src/ginext/GObject.pyi +109 -0
  780. ginext_core-0.8.1/src/ginext/__init__.py +152 -0
  781. ginext_core-0.8.1/src/ginext/__init__.pyi +47 -0
  782. ginext_core-0.8.1/src/ginext/_aioloop.py +304 -0
  783. ginext_core-0.8.1/src/ginext/_overlays/GIRepository.py +58 -0
  784. ginext_core-0.8.1/src/ginext/_overlays/GLib.py +969 -0
  785. ginext_core-0.8.1/src/ginext/_overlays/GObject.py +506 -0
  786. ginext_core-0.8.1/src/ginext/_overlays/__init__.py +20 -0
  787. ginext_core-0.8.1/src/ginext/abi.py +73 -0
  788. ginext_core-0.8.1/src/ginext/aio.py +354 -0
  789. ginext_core-0.8.1/src/ginext/cairo.py +31 -0
  790. ginext_core-0.8.1/src/ginext/classbuild.py +626 -0
  791. ginext_core-0.8.1/src/ginext/defaults.py +327 -0
  792. ginext_core-0.8.1/src/ginext/enum.py +212 -0
  793. ginext_core-0.8.1/src/ginext/errors.py +202 -0
  794. ginext_core-0.8.1/src/ginext/features.py +171 -0
  795. ginext_core-0.8.1/src/ginext/fundamental.py +73 -0
  796. ginext_core-0.8.1/src/ginext/gobject/__init__.py +21 -0
  797. ginext_core-0.8.1/src/ginext/gobject/gobjectclass.py +666 -0
  798. ginext_core-0.8.1/src/ginext/gobject/gtype.py +271 -0
  799. ginext_core-0.8.1/src/ginext/gobject/metaclass.py +109 -0
  800. ginext_core-0.8.1/src/ginext/gobject/properties.py +357 -0
  801. ginext_core-0.8.1/src/ginext/gobject/resolve.py +54 -0
  802. ginext_core-0.8.1/src/ginext/gobject/subclass.py +222 -0
  803. ginext_core-0.8.1/src/ginext/method.py +249 -0
  804. ginext_core-0.8.1/src/ginext/mypy_plugin.py +52 -0
  805. ginext_core-0.8.1/src/ginext/namespace.py +189 -0
  806. ginext_core-0.8.1/src/ginext/overlay/__init__.py +83 -0
  807. ginext_core-0.8.1/src/ginext/overlay/bootstrap.py +199 -0
  808. ginext_core-0.8.1/src/ginext/overlay/callbacks.py +149 -0
  809. ginext_core-0.8.1/src/ginext/overlay/install.py +335 -0
  810. ginext_core-0.8.1/src/ginext/overlay/registrar.py +465 -0
  811. ginext_core-0.8.1/src/ginext/overlay/state.py +71 -0
  812. ginext_core-0.8.1/src/ginext/overlay/types.py +97 -0
  813. ginext_core-0.8.1/src/ginext/private/GIRepository/ArgInfo.c +60 -0
  814. ginext_core-0.8.1/src/ginext/private/GIRepository/BaseInfo.c +104 -0
  815. ginext_core-0.8.1/src/ginext/private/GIRepository/BaseInfo.h +41 -0
  816. ginext_core-0.8.1/src/ginext/private/GIRepository/CallableInfo.c +74 -0
  817. ginext_core-0.8.1/src/ginext/private/GIRepository/CallableInfo.h +28 -0
  818. ginext_core-0.8.1/src/ginext/private/GIRepository/CallbackInfo.c +23 -0
  819. ginext_core-0.8.1/src/ginext/private/GIRepository/ConstantInfo.c +71 -0
  820. ginext_core-0.8.1/src/ginext/private/GIRepository/ConstantInfo.h +28 -0
  821. ginext_core-0.8.1/src/ginext/private/GIRepository/EnumInfo.c +61 -0
  822. ginext_core-0.8.1/src/ginext/private/GIRepository/EnumInfo.h +25 -0
  823. ginext_core-0.8.1/src/ginext/private/GIRepository/FieldInfo.c +19 -0
  824. ginext_core-0.8.1/src/ginext/private/GIRepository/FlagsInfo.c +19 -0
  825. ginext_core-0.8.1/src/ginext/private/GIRepository/FunctionInfo.c +23 -0
  826. ginext_core-0.8.1/src/ginext/private/GIRepository/Info.c +189 -0
  827. ginext_core-0.8.1/src/ginext/private/GIRepository/Info.h +206 -0
  828. ginext_core-0.8.1/src/ginext/private/GIRepository/InterfaceInfo.c +36 -0
  829. ginext_core-0.8.1/src/ginext/private/GIRepository/ObjectInfo.c +38 -0
  830. ginext_core-0.8.1/src/ginext/private/GIRepository/ObjectInfo.h +27 -0
  831. ginext_core-0.8.1/src/ginext/private/GIRepository/PropertyInfo.c +19 -0
  832. ginext_core-0.8.1/src/ginext/private/GIRepository/RegisteredTypeInfo.c +27 -0
  833. ginext_core-0.8.1/src/ginext/private/GIRepository/SignalInfo.c +19 -0
  834. ginext_core-0.8.1/src/ginext/private/GIRepository/StructInfo.c +36 -0
  835. ginext_core-0.8.1/src/ginext/private/GIRepository/StructInfo.h +32 -0
  836. ginext_core-0.8.1/src/ginext/private/GIRepository/TypeInfo.c +62 -0
  837. ginext_core-0.8.1/src/ginext/private/GIRepository/UnionInfo.c +32 -0
  838. ginext_core-0.8.1/src/ginext/private/GIRepository/UnresolvedInfo.c +23 -0
  839. ginext_core-0.8.1/src/ginext/private/GIRepository/VFuncInfo.c +19 -0
  840. ginext_core-0.8.1/src/ginext/private/GIRepository/ValueInfo.c +21 -0
  841. ginext_core-0.8.1/src/ginext/private/GLib/Array.c +432 -0
  842. ginext_core-0.8.1/src/ginext/private/GLib/Array.h +33 -0
  843. ginext_core-0.8.1/src/ginext/private/GLib/DateTime.c +187 -0
  844. ginext_core-0.8.1/src/ginext/private/GLib/DateTime.h +38 -0
  845. ginext_core-0.8.1/src/ginext/private/GLib/Error.h +63 -0
  846. ginext_core-0.8.1/src/ginext/private/GLib/HashTable.c +526 -0
  847. ginext_core-0.8.1/src/ginext/private/GLib/HashTable.h +33 -0
  848. ginext_core-0.8.1/src/ginext/private/GLib/List.c +247 -0
  849. ginext_core-0.8.1/src/ginext/private/GLib/List.h +37 -0
  850. ginext_core-0.8.1/src/ginext/private/GLib/Regex.c +172 -0
  851. ginext_core-0.8.1/src/ginext/private/GLib/Regex.h +31 -0
  852. ginext_core-0.8.1/src/ginext/private/GLib/Variant.c +116 -0
  853. ginext_core-0.8.1/src/ginext/private/GLib/Variant.h +34 -0
  854. ginext_core-0.8.1/src/ginext/private/GObject/Boxed.h +62 -0
  855. ginext_core-0.8.1/src/ginext/private/GObject/Closure-record.c +602 -0
  856. ginext_core-0.8.1/src/ginext/private/GObject/Closure-record.h +94 -0
  857. ginext_core-0.8.1/src/ginext/private/GObject/Closure-signal.c +425 -0
  858. ginext_core-0.8.1/src/ginext/private/GObject/Closure.h +86 -0
  859. ginext_core-0.8.1/src/ginext/private/GObject/DeclaredProperty.c +283 -0
  860. ginext_core-0.8.1/src/ginext/private/GObject/DeclaredProperty.h +15 -0
  861. ginext_core-0.8.1/src/ginext/private/GObject/Fundamental.c +294 -0
  862. ginext_core-0.8.1/src/ginext/private/GObject/Fundamental.h +40 -0
  863. ginext_core-0.8.1/src/ginext/private/GObject/GIMeta.c +648 -0
  864. ginext_core-0.8.1/src/ginext/private/GObject/GIMeta.h +63 -0
  865. ginext_core-0.8.1/src/ginext/private/GObject/Object-class.c +279 -0
  866. ginext_core-0.8.1/src/ginext/private/GObject/Object-class.h +24 -0
  867. ginext_core-0.8.1/src/ginext/private/GObject/Object-construct.c +184 -0
  868. ginext_core-0.8.1/src/ginext/private/GObject/Object-info.c +1464 -0
  869. ginext_core-0.8.1/src/ginext/private/GObject/Object-info.h +99 -0
  870. ginext_core-0.8.1/src/ginext/private/GObject/Object-register.c +229 -0
  871. ginext_core-0.8.1/src/ginext/private/GObject/Object-register.h +27 -0
  872. ginext_core-0.8.1/src/ginext/private/GObject/Object-unref.c +96 -0
  873. ginext_core-0.8.1/src/ginext/private/GObject/Object-vfunc-wrapper.c +303 -0
  874. ginext_core-0.8.1/src/ginext/private/GObject/Object-vfunc-wrapper.h +20 -0
  875. ginext_core-0.8.1/src/ginext/private/GObject/Object-vfunc.c +601 -0
  876. ginext_core-0.8.1/src/ginext/private/GObject/Object-vfunc.h +18 -0
  877. ginext_core-0.8.1/src/ginext/private/GObject/Object-wrapper.c +191 -0
  878. ginext_core-0.8.1/src/ginext/private/GObject/Object.h +45 -0
  879. ginext_core-0.8.1/src/ginext/private/GObject/ParamSpec-make.c +526 -0
  880. ginext_core-0.8.1/src/ginext/private/GObject/ParamSpec-make.h +30 -0
  881. ginext_core-0.8.1/src/ginext/private/GObject/ParamSpec.h +27 -0
  882. ginext_core-0.8.1/src/ginext/private/GObject/Type-name.c +45 -0
  883. ginext_core-0.8.1/src/ginext/private/GObject/Type-name.h +31 -0
  884. ginext_core-0.8.1/src/ginext/private/GObject/Type.c +34 -0
  885. ginext_core-0.8.1/src/ginext/private/GObject/Value.c +319 -0
  886. ginext_core-0.8.1/src/ginext/private/GObject/Value.h +22 -0
  887. ginext_core-0.8.1/src/ginext/private/__init__.py +207 -0
  888. ginext_core-0.8.1/src/ginext/private/__init__.pyi +259 -0
  889. ginext_core-0.8.1/src/ginext/private/_gobject.pyi +115 -0
  890. ginext_core-0.8.1/src/ginext/private/cairo/foreign-internal.h +310 -0
  891. ginext_core-0.8.1/src/ginext/private/cairo/foreign.c +255 -0
  892. ginext_core-0.8.1/src/ginext/private/cairo/foreign.h +30 -0
  893. ginext_core-0.8.1/src/ginext/private/callable_descriptor.c +2786 -0
  894. ginext_core-0.8.1/src/ginext/private/common.h +87 -0
  895. ginext_core-0.8.1/src/ginext/private/gimeta-helpers.h +8 -0
  896. ginext_core-0.8.1/src/ginext/private/ginextmodule.c +477 -0
  897. ginext_core-0.8.1/src/ginext/private/invoke/arg-cleanup.c +113 -0
  898. ginext_core-0.8.1/src/ginext/private/invoke/arg-cleanup.h +58 -0
  899. ginext_core-0.8.1/src/ginext/private/invoke/bind.c +1092 -0
  900. ginext_core-0.8.1/src/ginext/private/invoke/bind.h +39 -0
  901. ginext_core-0.8.1/src/ginext/private/invoke/ffi/invoke.c +455 -0
  902. ginext_core-0.8.1/src/ginext/private/invoke/ffi/invoke.h +27 -0
  903. ginext_core-0.8.1/src/ginext/private/invoke/frame.c +53 -0
  904. ginext_core-0.8.1/src/ginext/private/invoke/frame.h +77 -0
  905. ginext_core-0.8.1/src/ginext/private/invoke/jit/invoke.c +278 -0
  906. ginext_core-0.8.1/src/ginext/private/invoke/jit/invoke.h +54 -0
  907. ginext_core-0.8.1/src/ginext/private/invoke/jit/plan.c +854 -0
  908. ginext_core-0.8.1/src/ginext/private/invoke/jit/plan.h +148 -0
  909. ginext_core-0.8.1/src/ginext/private/invoke/plan.c +624 -0
  910. ginext_core-0.8.1/src/ginext/private/invoke/plan.h +198 -0
  911. ginext_core-0.8.1/src/ginext/private/invoke/return.c +618 -0
  912. ginext_core-0.8.1/src/ginext/private/invoke/return.h +45 -0
  913. ginext_core-0.8.1/src/ginext/private/jit/jit.h +51 -0
  914. ginext_core-0.8.1/src/ginext/private/marshal/c-array.c +975 -0
  915. ginext_core-0.8.1/src/ginext/private/marshal/c-array.h +58 -0
  916. ginext_core-0.8.1/src/ginext/private/marshal/container-element.c +396 -0
  917. ginext_core-0.8.1/src/ginext/private/marshal/container-element.h +73 -0
  918. ginext_core-0.8.1/src/ginext/private/marshal/conversion.c +130 -0
  919. ginext_core-0.8.1/src/ginext/private/marshal/conversion.h +146 -0
  920. ginext_core-0.8.1/src/ginext/private/marshal/enum.c +179 -0
  921. ginext_core-0.8.1/src/ginext/private/marshal/enum.h +44 -0
  922. ginext_core-0.8.1/src/ginext/private/marshal/gvalue.c +1279 -0
  923. ginext_core-0.8.1/src/ginext/private/marshal/gvalue.h +21 -0
  924. ginext_core-0.8.1/src/ginext/private/marshal/marshal.c +1667 -0
  925. ginext_core-0.8.1/src/ginext/private/marshal/marshal.h +140 -0
  926. ginext_core-0.8.1/src/ginext/private/marshal/pygi-value.c +724 -0
  927. ginext_core-0.8.1/src/ginext/private/marshal/pygi-value.h +8 -0
  928. ginext_core-0.8.1/src/ginext/private/marshal/scalar-tags.h +123 -0
  929. ginext_core-0.8.1/src/ginext/private/marshal/scalar.c +482 -0
  930. ginext_core-0.8.1/src/ginext/private/marshal/scalar.h +330 -0
  931. ginext_core-0.8.1/src/ginext/private/marshal/string.c +219 -0
  932. ginext_core-0.8.1/src/ginext/private/marshal/string.h +36 -0
  933. ginext_core-0.8.1/src/ginext/private/namespace.c +1100 -0
  934. ginext_core-0.8.1/src/ginext/private/runtime/callable.c +42 -0
  935. ginext_core-0.8.1/src/ginext/private/runtime/callable.h +74 -0
  936. ginext_core-0.8.1/src/ginext/private/runtime/class-registry.h +27 -0
  937. ginext_core-0.8.1/src/ginext/private/runtime/module_funcs.h +36 -0
  938. ginext_core-0.8.1/src/ginext/private/runtime/shims.c +4640 -0
  939. ginext_core-0.8.1/src/ginext/private/runtime/signal-api.c +858 -0
  940. ginext_core-0.8.1/src/ginext/private/runtime/type-info.h +242 -0
  941. ginext_core-0.8.1/src/ginext/private/win32/dlfcn.c +71 -0
  942. ginext_core-0.8.1/src/ginext/private/win32/dlfcn.h +34 -0
  943. ginext_core-0.8.1/src/ginext/private/win32/win32-compat.h +6 -0
  944. ginext_core-0.8.1/src/ginext/record.py +382 -0
  945. ginext_core-0.8.1/src/ginext/runtime.py +70 -0
  946. ginext_core-0.8.1/src/ginext/signal/__init__.py +24 -0
  947. ginext_core-0.8.1/src/ginext/signal/adapt.py +265 -0
  948. ginext_core-0.8.1/src/ginext/signal/bound.py +273 -0
  949. ginext_core-0.8.1/src/ginext/signal/connection.py +185 -0
  950. ginext_core-0.8.1/src/ginext/signal/descriptor.py +160 -0
  951. ginext_core-0.8.1/src/ginext/signal/gtype.py +58 -0
  952. ginext_core-0.8.1/src/ginext/signal/scoped.py +227 -0
  953. ginext_core-0.8.1/src/ginext/signature.py +269 -0
  954. ginext_core-0.8.1/src/ginext/tests/README.md +96 -0
  955. ginext_core-0.8.1/src/ginext/tests/TODO.md +214 -0
  956. ginext_core-0.8.1/src/ginext/tests/__init__.py +16 -0
  957. ginext_core-0.8.1/src/ginext/tests/boxed/__init__.py +16 -0
  958. ginext_core-0.8.1/src/ginext/tests/boxed/fixtures/hello.txt +1 -0
  959. ginext_core-0.8.1/src/ginext/tests/boxed/fixtures/test.gresource +0 -0
  960. ginext_core-0.8.1/src/ginext/tests/boxed/fixtures/test.gresource.xml +6 -0
  961. ginext_core-0.8.1/src/ginext/tests/boxed/test_boxed.py +302 -0
  962. ginext_core-0.8.1/src/ginext/tests/boxed/test_boxed_field_array.py +134 -0
  963. ginext_core-0.8.1/src/ginext/tests/boxed/test_boxed_resource.py +111 -0
  964. ginext_core-0.8.1/src/ginext/tests/cairo/__init__.py +16 -0
  965. ginext_core-0.8.1/src/ginext/tests/cairo/test_foreign_backlog.py +90 -0
  966. ginext_core-0.8.1/src/ginext/tests/classbuild/__init__.py +16 -0
  967. ginext_core-0.8.1/src/ginext/tests/classbuild/test_base_via_namespace.py +76 -0
  968. ginext_core-0.8.1/src/ginext/tests/classbuild/test_class_caching.py +55 -0
  969. ginext_core-0.8.1/src/ginext/tests/classbuild/test_class_creation.py +115 -0
  970. ginext_core-0.8.1/src/ginext/tests/classbuild/test_managed_dict_store_attr.py +92 -0
  971. ginext_core-0.8.1/src/ginext/tests/classbuild/test_parent_inheritance.py +94 -0
  972. ginext_core-0.8.1/src/ginext/tests/classbuild/test_subclass_gtype_compat.py +93 -0
  973. ginext_core-0.8.1/src/ginext/tests/classbuild/test_subclass_with_gobject_class_attr.py +77 -0
  974. ginext_core-0.8.1/src/ginext/tests/closure/__init__.py +17 -0
  975. ginext_core-0.8.1/src/ginext/tests/closure/test_gclosure_argument.py +83 -0
  976. ginext_core-0.8.1/src/ginext/tests/closure/test_ownership_invariants.py +491 -0
  977. ginext_core-0.8.1/src/ginext/tests/closure/test_smoke.py +153 -0
  978. ginext_core-0.8.1/src/ginext/tests/conftest.py +626 -0
  979. ginext_core-0.8.1/src/ginext/tests/constructor/__init__.py +16 -0
  980. ginext_core-0.8.1/src/ginext/tests/constructor/test_abstract_type_rejection.py +46 -0
  981. ginext_core-0.8.1/src/ginext/tests/constructor/test_kwargs_construction.py +62 -0
  982. ginext_core-0.8.1/src/ginext/tests/defaults/__init__.py +16 -0
  983. ginext_core-0.8.1/src/ginext/tests/defaults/test_app_selection.py +125 -0
  984. ginext_core-0.8.1/src/ginext/tests/defaults/test_env_versions_override.py +125 -0
  985. ginext_core-0.8.1/src/ginext/tests/defaults/test_gidefaults_discovery.py +106 -0
  986. ginext_core-0.8.1/src/ginext/tests/defaults/test_highest_installed_fallback.py +76 -0
  987. ginext_core-0.8.1/src/ginext/tests/defaults/test_resolution_order.py +141 -0
  988. ginext_core-0.8.1/src/ginext/tests/defaults/test_suffixed_imports.py +75 -0
  989. ginext_core-0.8.1/src/ginext/tests/enum/__init__.py +17 -0
  990. ginext_core-0.8.1/src/ginext/tests/enum/test_enum_methods.py +74 -0
  991. ginext_core-0.8.1/src/ginext/tests/enum/test_python_defined_enum_flags.py +127 -0
  992. ginext_core-0.8.1/src/ginext/tests/features/__init__.py +18 -0
  993. ginext_core-0.8.1/src/ginext/tests/features/test_feature_flags.py +253 -0
  994. ginext_core-0.8.1/src/ginext/tests/free_threading/__init__.py +16 -0
  995. ginext_core-0.8.1/src/ginext/tests/free_threading/support.py +52 -0
  996. ginext_core-0.8.1/src/ginext/tests/free_threading/test_c_caches.py +69 -0
  997. ginext_core-0.8.1/src/ginext/tests/free_threading/test_import_state.py +39 -0
  998. ginext_core-0.8.1/src/ginext/tests/free_threading/test_python_caches.py +257 -0
  999. ginext_core-0.8.1/src/ginext/tests/free_threading/test_signal_lifecycle.py +51 -0
  1000. ginext_core-0.8.1/src/ginext/tests/free_threading/test_wrapper_identity.py +50 -0
  1001. ginext_core-0.8.1/src/ginext/tests/gi_test_utils.py +77 -0
  1002. ginext_core-0.8.1/src/ginext/tests/glib/__init__.py +18 -0
  1003. ginext_core-0.8.1/src/ginext/tests/glib/test_bytes.py +76 -0
  1004. ginext_core-0.8.1/src/ginext/tests/glib/test_constants.py +79 -0
  1005. ginext_core-0.8.1/src/ginext/tests/glib/test_core.py +155 -0
  1006. ginext_core-0.8.1/src/ginext/tests/glib/test_datetime.py +161 -0
  1007. ginext_core-0.8.1/src/ginext/tests/glib/test_error.py +131 -0
  1008. ginext_core-0.8.1/src/ginext/tests/glib/test_log_set_writer_func.py +105 -0
  1009. ginext_core-0.8.1/src/ginext/tests/glib/test_regex.py +114 -0
  1010. ginext_core-0.8.1/src/ginext/tests/glib/test_unichar.py +64 -0
  1011. ginext_core-0.8.1/src/ginext/tests/glib/test_variant_compat.py +82 -0
  1012. ginext_core-0.8.1/src/ginext/tests/gobject/__init__.py +16 -0
  1013. ginext_core-0.8.1/src/ginext/tests/gobject/test_GObject_Object.py +210 -0
  1014. ginext_core-0.8.1/src/ginext/tests/gobject/test_GObject_Object_vfunc.py +343 -0
  1015. ginext_core-0.8.1/src/ginext/tests/gobject/test_GObject_Type.py +162 -0
  1016. ginext_core-0.8.1/src/ginext/tests/gobject/test_gtype_constants.py +51 -0
  1017. ginext_core-0.8.1/src/ginext/tests/gobject/test_gtype_marshal.py +105 -0
  1018. ginext_core-0.8.1/src/ginext/tests/gobject/test_inheritance.py +254 -0
  1019. ginext_core-0.8.1/src/ginext/tests/gobject/test_object_api.py +115 -0
  1020. ginext_core-0.8.1/src/ginext/tests/gobject/test_object_lifecycle.py +611 -0
  1021. ginext_core-0.8.1/src/ginext/tests/gobject/test_paramspec_introspection_backlog.py +449 -0
  1022. ginext_core-0.8.1/src/ginext/tests/gobject/test_registration.py +109 -0
  1023. ginext_core-0.8.1/src/ginext/tests/gobject/test_type_functions.py +150 -0
  1024. ginext_core-0.8.1/src/ginext/tests/integration/__init__.py +16 -0
  1025. ginext_core-0.8.1/src/ginext/tests/integration/test_caches_layer_wide.py +71 -0
  1026. ginext_core-0.8.1/src/ginext/tests/integration/test_first_vertical_slice.py +84 -0
  1027. ginext_core-0.8.1/src/ginext/tests/integration/test_girepository_overlay.py +125 -0
  1028. ginext_core-0.8.1/src/ginext/tests/integration/test_runtime_smoke.py +65 -0
  1029. ginext_core-0.8.1/src/ginext/tests/integration/test_web_browser_extensions.py +42 -0
  1030. ginext_core-0.8.1/src/ginext/tests/inventory/__init__.py +18 -0
  1031. ginext_core-0.8.1/src/ginext/tests/inventory/_unsupported_argument_args.json +58 -0
  1032. ginext_core-0.8.1/src/ginext/tests/inventory/test_core_namespace_inventory.py +134 -0
  1033. ginext_core-0.8.1/src/ginext/tests/inventory/test_unsupported_argument_args.py +193 -0
  1034. ginext_core-0.8.1/src/ginext/tests/invoke/__init__.py +16 -0
  1035. ginext_core-0.8.1/src/ginext/tests/invoke/test_argchecks_gimarshalling.py +238 -0
  1036. ginext_core-0.8.1/src/ginext/tests/invoke/test_descriptor_build_rejection.py +44 -0
  1037. ginext_core-0.8.1/src/ginext/tests/invoke/test_enum_flags.py +44 -0
  1038. ginext_core-0.8.1/src/ginext/tests/invoke/test_filename_string.py +57 -0
  1039. ginext_core-0.8.1/src/ginext/tests/invoke/test_float.py +52 -0
  1040. ginext_core-0.8.1/src/ginext/tests/invoke/test_gee_callback_triples.py +63 -0
  1041. ginext_core-0.8.1/src/ginext/tests/invoke/test_int.py +74 -0
  1042. ginext_core-0.8.1/src/ginext/tests/invoke/test_keyword_args.py +87 -0
  1043. ginext_core-0.8.1/src/ginext/tests/invoke/test_nullable_args.py +41 -0
  1044. ginext_core-0.8.1/src/ginext/tests/invoke/test_pyargs_oracle.py +63 -0
  1045. ginext_core-0.8.1/src/ginext/tests/invoke/test_return_type_shapes.py +90 -0
  1046. ginext_core-0.8.1/src/ginext/tests/invoke/test_strv_array.py +37 -0
  1047. ginext_core-0.8.1/src/ginext/tests/invoke/test_utf8_string.py +78 -0
  1048. ginext_core-0.8.1/src/ginext/tests/method/__init__.py +16 -0
  1049. ginext_core-0.8.1/src/ginext/tests/method/test_static_method.py +119 -0
  1050. ginext_core-0.8.1/src/ginext/tests/namespace/__init__.py +16 -0
  1051. ginext_core-0.8.1/src/ginext/tests/namespace/test_attribute_gateway.py +61 -0
  1052. ginext_core-0.8.1/src/ginext/tests/namespace/test_cairo_alias.py +38 -0
  1053. ginext_core-0.8.1/src/ginext/tests/namespace/test_first_access.py +183 -0
  1054. ginext_core-0.8.1/src/ginext/tests/namespace/test_lazy_namespace_jit.py +130 -0
  1055. ginext_core-0.8.1/src/ginext/tests/namespace/test_namespace_attrs.py +67 -0
  1056. ginext_core-0.8.1/src/ginext/tests/namespace/test_namespace_caching.py +62 -0
  1057. ginext_core-0.8.1/src/ginext/tests/namespace/test_overlay_bootstrap.py +70 -0
  1058. ginext_core-0.8.1/src/ginext/tests/namespace/test_public_surface.py +117 -0
  1059. ginext_core-0.8.1/src/ginext/tests/namespace/test_unknown_member.py +56 -0
  1060. ginext_core-0.8.1/src/ginext/tests/overlay/__init__.py +17 -0
  1061. ginext_core-0.8.1/src/ginext/tests/overlay/test_overlay_api.py +233 -0
  1062. ginext_core-0.8.1/src/ginext/tests/plan_invariant/__init__.py +16 -0
  1063. ginext_core-0.8.1/src/ginext/tests/plan_invariant/test_no_gi_on_hot_path.py +94 -0
  1064. ginext_core-0.8.1/src/ginext/tests/plan_invariant/test_plan_caching.py +64 -0
  1065. ginext_core-0.8.1/src/ginext/tests/plan_invariant/test_stats_api.py +70 -0
  1066. ginext_core-0.8.1/src/ginext/tests/property/__init__.py +16 -0
  1067. ginext_core-0.8.1/src/ginext/tests/property/test_decorator_forms_backlog.py +335 -0
  1068. ginext_core-0.8.1/src/ginext/tests/property/test_errors.py +41 -0
  1069. ginext_core-0.8.1/src/ginext/tests/property/test_flags.py +90 -0
  1070. ginext_core-0.8.1/src/ginext/tests/property/test_instance_io.py +336 -0
  1071. ginext_core-0.8.1/src/ginext/tests/property/test_lifetime.py +82 -0
  1072. ginext_core-0.8.1/src/ginext/tests/property/test_metadata.py +219 -0
  1073. ginext_core-0.8.1/src/ginext/tests/property/test_native_property_access.py +143 -0
  1074. ginext_core-0.8.1/src/ginext/tests/property/test_override.py +133 -0
  1075. ginext_core-0.8.1/src/ginext/tests/property/test_pspec_bounds.py +81 -0
  1076. ginext_core-0.8.1/src/ginext/tests/property/test_pspec_defaults.py +264 -0
  1077. ginext_core-0.8.1/src/ginext/tests/property/test_signals.py +98 -0
  1078. ginext_core-0.8.1/src/ginext/tests/property/test_value_types.py +151 -0
  1079. ginext_core-0.8.1/src/ginext/tests/signal/__init__.py +17 -0
  1080. ginext_core-0.8.1/src/ginext/tests/signal/test_GObject_Object_gsignals.py +80 -0
  1081. ginext_core-0.8.1/src/ginext/tests/signal/test_GObject_Object_signal.py +156 -0
  1082. ginext_core-0.8.1/src/ginext/tests/signal/test_arg_adapter.py +245 -0
  1083. ginext_core-0.8.1/src/ginext/tests/signal/test_attribute_form.py +144 -0
  1084. ginext_core-0.8.1/src/ginext/tests/signal/test_bound_method_weakening.py +353 -0
  1085. ginext_core-0.8.1/src/ginext/tests/signal/test_constructor_kwargs.py +155 -0
  1086. ginext_core-0.8.1/src/ginext/tests/signal/test_emit.py +61 -0
  1087. ginext_core-0.8.1/src/ginext/tests/signal/test_notify.py +154 -0
  1088. ginext_core-0.8.1/src/ginext/tests/signal/test_once.py +84 -0
  1089. ginext_core-0.8.1/src/ginext/tests/signal/test_owner_policy.py +219 -0
  1090. ginext_core-0.8.1/src/ginext/tests/signal/test_python_defined_signals.py +217 -0
  1091. ginext_core-0.8.1/src/ginext/tests/signal/test_signal_connection.py +104 -0
  1092. ginext_core-0.8.1/src/ginext/tests/struct/__init__.py +16 -0
  1093. ginext_core-0.8.1/src/ginext/tests/struct/test_structs.py +174 -0
  1094. ginext_core-0.8.1/src/ginext/tests/test_signature.py +356 -0
  1095. ginext_core-0.8.1/src/ginext/tests/typelib/__init__.py +16 -0
  1096. ginext_core-0.8.1/src/ginext/tests/typelib/conftest.py +77 -0
  1097. ginext_core-0.8.1/src/ginext/tests/typelib/support.py +69 -0
  1098. ginext_core-0.8.1/src/ginext/tests/typelib/test_fundamental.py +272 -0
  1099. ginext_core-0.8.1/src/ginext/tests/typelib/test_gi_marshalling_tests.py +2400 -0
  1100. ginext_core-0.8.1/src/ginext/tests/typelib/test_keyword_args.py +83 -0
  1101. ginext_core-0.8.1/src/ginext/tests/typelib/test_object_inout.py +78 -0
  1102. ginext_core-0.8.1/src/ginext/tests/typelib/test_regress.py +1210 -0
  1103. ginext_core-0.8.1/src/ginext/tests/typelib/test_regress_unix.py +58 -0
  1104. ginext_core-0.8.1/src/ginext/tests/typelib/test_utility.py +90 -0
  1105. ginext_core-0.8.1/src/ginext/tests/union/__init__.py +16 -0
  1106. ginext_core-0.8.1/src/ginext/tests/union/test_unions.py +148 -0
  1107. ginext_core-0.8.1/src/ginext/tests/wayland_fixture.py +221 -0
  1108. ginext_core-0.8.1/src/meson.build +215 -0
  1109. ginext_core-0.8.1/src/testhelper.py +70 -0
  1110. ginext_core-0.8.1/tools/gdb/pytest-xdist.gdb +63 -0
  1111. ginext_core-0.8.1/tools/meson/copy_into.py +23 -0
  1112. ginext_core-0.8.1/tools/win/BOOTSTRAP.md +104 -0
  1113. ginext_core-0.8.1/tools/win/build-env.ps1 +78 -0
  1114. ginext_core-0.8.1/tools/win/build.ps1 +124 -0
  1115. ginext_core-0.8.1/tools/win/run_tests.py +99 -0
  1116. ginext_core-0.8.1/tools/win/setup.ps1 +60 -0
  1117. ginext_core-0.8.1/tools/win/vcpkg-overlays/README.md +23 -0
  1118. ginext_core-0.8.1/tools/win/vcpkg-overlays/glib-gir/libintl.patch +16 -0
  1119. ginext_core-0.8.1/tools/win/vcpkg-overlays/glib-gir/portfile.cmake +140 -0
  1120. ginext_core-0.8.1/tools/win/vcpkg-overlays/glib-gir/use-libiconv-on-windows.patch +28 -0
  1121. ginext_core-0.8.1/tools/win/vcpkg-overlays/glib-gir/vcpkg.json +28 -0
  1122. ginext_core-0.8.1/tools/win/vcpkg-overlays/gobject-introspection/0001-g-ir-tool-template.in.patch +60 -0
  1123. ginext_core-0.8.1/tools/win/vcpkg-overlays/gobject-introspection/gir-scanner-runtime.diff +12 -0
  1124. ginext_core-0.8.1/tools/win/vcpkg-overlays/gobject-introspection/portfile.cmake +129 -0
  1125. ginext_core-0.8.1/tools/win/vcpkg-overlays/gobject-introspection/setuptools-compat.patch +14 -0
  1126. ginext_core-0.8.1/tools/win/vcpkg-overlays/gobject-introspection/vcpkg-port-config.cmake +69 -0
  1127. ginext_core-0.8.1/tools/win/vcpkg-overlays/gobject-introspection/vcpkg.json +37 -0
  1128. ginext_core-0.8.1/tools/win/vcpkg-overlays/gstreamer/duplicate-unused.diff +12 -0
  1129. ginext_core-0.8.1/tools/win/vcpkg-overlays/gstreamer/fix-bz2-windows-debug-dependency.patch +26 -0
  1130. ginext_core-0.8.1/tools/win/vcpkg-overlays/gstreamer/fix-clang-cl.patch +166 -0
  1131. ginext_core-0.8.1/tools/win/vcpkg-overlays/gstreamer/fix-multiple-def.patch +48 -0
  1132. ginext_core-0.8.1/tools/win/vcpkg-overlays/gstreamer/portfile.cmake +478 -0
  1133. ginext_core-0.8.1/tools/win/vcpkg-overlays/gstreamer/vcpkg.json +901 -0
  1134. ginext_core-0.8.1/tools/win/vcpkg-overlays/gstreamer/x264-api-imports.diff +12 -0
  1135. ginext_core-0.8.1/tools/win/vcpkg-overlays/gtk/0001-build.patch +13 -0
  1136. ginext_core-0.8.1/tools/win/vcpkg-overlays/gtk/portfile.cmake +106 -0
  1137. ginext_core-0.8.1/tools/win/vcpkg-overlays/gtk/vcpkg.json +91 -0
  1138. ginext_core-0.8.1/tools/win/vcpkg-triplets/arm64-windows.cmake +14 -0
  1139. ginext_core-0.8.1/tools/win/vcpkg-triplets/x64-windows.cmake +14 -0
  1140. ginext_core-0.8.1/uv.lock +1230 -0
  1141. ginext_core-0.8.1/vcpkg-configuration.json +14 -0
  1142. ginext_core-0.8.1/vcpkg.json +42 -0
@@ -0,0 +1,70 @@
1
+ # clang-format does not have a native version-pinning mechanism.
2
+ # This config was written for clang-format 21. Run `clang-format --version`
3
+ # and verify it reports 21.x before reformatting; older versions may produce
4
+ # different output for some options used here.
5
+ ---
6
+ Language: Cpp
7
+ BasedOnStyle: GNU
8
+
9
+ # Indentation: 2 spaces, no tabs (GLib/GTK standard)
10
+ IndentWidth: 2
11
+ TabWidth: 2
12
+ UseTab: Never
13
+ IndentCaseLabels: false
14
+ ContinuationIndentWidth: 4
15
+
16
+ # Line length
17
+ ColumnLimit: 100
18
+
19
+ # Braces: GNU style — function body brace on new line (no indent),
20
+ # control-flow braces on their own line indented to body level.
21
+ BreakBeforeBraces: GNU
22
+
23
+ # Return type on its own line for all function definitions:
24
+ # static void
25
+ # my_func (void)
26
+ # {
27
+ BreakAfterReturnType: All
28
+
29
+ # Pointers stay with the variable name: `type *var`
30
+ PointerAlignment: Right
31
+
32
+ # Space before ALL opening parens — the most distinctive GLib/GTK trait:
33
+ # g_free (ptr); if (x) sizeof (int)
34
+ SpaceBeforeParens: Always
35
+
36
+ # Don't bin-pack: keep all parameters on one line or each on its own
37
+ BinPackParameters: false
38
+ BinPackArguments: false
39
+
40
+ # Align continuation parameters to the opening paren:
41
+ # foo (long_arg1,
42
+ # long_arg2);
43
+ AlignAfterOpenBracket: Align
44
+ AllowAllArgumentsOnNextLine: false
45
+ AllowAllParametersOfDeclarationOnNextLine: false
46
+
47
+ # Don't merge short constructs onto one line
48
+ AllowShortFunctionsOnASingleLine: None
49
+ AllowShortIfStatementsOnASingleLine: Never
50
+ AllowShortLoopsOnASingleLine: false
51
+ AllowShortCaseLabelsOnASingleLine: false
52
+
53
+ # Keep #include order as written
54
+ SortIncludes: Never
55
+
56
+ # Don't reflow existing comments
57
+ ReflowComments: false
58
+
59
+ # Trailing comments: don't force-align across lines
60
+ AlignTrailingComments:
61
+ Kind: Never
62
+
63
+ # Miscellaneous GLib/GTK conventions
64
+ AlignOperands: true
65
+ BreakBeforeTernaryOperators: true
66
+ SpaceAfterCStyleCast: false
67
+ SpacesInParentheses: false
68
+ SpacesInSquareBrackets: false
69
+ MaxEmptyLinesToKeep: 2
70
+ KeepEmptyLinesAtTheStartOfBlocks: false
@@ -0,0 +1,192 @@
1
+ name: CI (Windows)
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ concurrency:
9
+ group: ci-windows-${{ github.ref }}
10
+ cancel-in-progress: true
11
+
12
+ permissions:
13
+ contents: read
14
+ packages: write
15
+
16
+ env:
17
+ # Pin vcpkg (the tool + its registry) so builds are reproducible across runs
18
+ # and runner-image updates. Matches the default-registry baseline in
19
+ # vcpkg-configuration.json.
20
+ VCPKG_COMMIT: "059d760472984042e1b4db0d40efd935a1adcbc9"
21
+ # Pin LLVM to the version validated locally. clang-cl < 21 doesn't accept the
22
+ # GCC-style `-include Python.h` flag meson emits (warns + treats Python.h as a
23
+ # missing input); 22.1.7's clang-cl accepts it.
24
+ LLVM_VERSION: "22.1.7"
25
+
26
+ jobs:
27
+ build:
28
+ name: ${{ matrix.name }}
29
+ strategy:
30
+ fail-fast: false
31
+ matrix:
32
+ include:
33
+ - name: x64
34
+ runner: windows-latest
35
+ triplet: x64-windows
36
+ llvm_asset: win64
37
+ py_asset: amd64
38
+ - name: arm64
39
+ runner: windows-11-arm
40
+ triplet: arm64-windows
41
+ llvm_asset: woa64
42
+ py_asset: arm64
43
+ runs-on: ${{ matrix.runner }}
44
+ env:
45
+ GINEXT_TRIPLET: ${{ matrix.triplet }}
46
+ GINEXT_LLVM: C:\LLVM
47
+ GINEXT_VS: C:\Program Files\Microsoft Visual Studio\2022\Enterprise
48
+ VCPKG_DEFAULT_TRIPLET: ${{ matrix.triplet }}
49
+ # Pin the manifest install tree to a known path so build-env.ps1 finds it
50
+ # (run-vcpkg otherwise installs to a per-run GUID dir).
51
+ VCPKG_INSTALLED_DIR: ${{ github.workspace }}/vcpkg_installed
52
+ # Binary cache: a durable GitHub Packages NuGet feed (check before build,
53
+ # upload after each package) plus x-gha as a secondary. Set in the nuget
54
+ # step once vcpkg is bootstrapped.
55
+ NUGET_FEED: https://nuget.pkg.github.com/jdahlin/index.json
56
+ steps:
57
+ - uses: actions/checkout@v4
58
+
59
+ # Expose the GitHub Actions cache backend to vcpkg's x-gha binary source
60
+ # (run-vcpkg caches the vcpkg tool itself; x-gha caches the built packages).
61
+ - name: Export GitHub Actions cache env for vcpkg
62
+ uses: actions/github-script@v7
63
+ with:
64
+ script: |
65
+ core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
66
+ core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
67
+
68
+ # Native CPython 3.14 from python.org (NOT actions/setup-python): the
69
+ # setup-python build makes meson emit a GCC-style `-include Python.h` for
70
+ # the extension, which clang-cl rejects. The python.org installer matches
71
+ # the locally validated toolchain and produces a clean build.
72
+ - name: Install CPython 3.14.5 (python.org)
73
+ shell: pwsh
74
+ run: |
75
+ $url = "https://www.python.org/ftp/python/3.14.5/python-3.14.5-${{ matrix.py_asset }}.exe"
76
+ $dst = "$env:RUNNER_TEMP\py314"
77
+ Invoke-WebRequest $url -OutFile "$env:RUNNER_TEMP\py.exe"
78
+ Start-Process "$env:RUNNER_TEMP\py.exe" -Wait -ArgumentList `
79
+ '/quiet','InstallAllUsers=0','PrependPath=0','Include_pip=1','Include_dev=1',"TargetDir=$dst"
80
+ "$dst" | Out-File -FilePath $env:GITHUB_PATH -Append
81
+ "$dst\Scripts" | Out-File -FilePath $env:GITHUB_PATH -Append
82
+ "GINEXT_BASE_PYTHON=$dst\python.exe" | Out-File -FilePath $env:GITHUB_ENV -Append
83
+ & "$dst\python.exe" --version
84
+ # Python 3.14 ships a PEP 739 build-details.json; meson 1.11 reads it,
85
+ # takes c_api.pkgconfig_path, and runs pkg-config python-3.14 whose
86
+ # GCC-style `-include Python.h -Wno-missing-field-initializers` Cflags
87
+ # break clang-cl. Remove build-details.json (and any python*.pc) so
88
+ # meson falls back to sysconfig (include dirs only) -- the clean path.
89
+ $found = $false
90
+ foreach ($pat in 'build-details.json','python-3.14.pc','python-3.14-embed.pc','python3.pc','python3-embed.pc') {
91
+ Get-ChildItem -Path $dst -Recurse -Filter $pat -EA SilentlyContinue | ForEach-Object {
92
+ $found = $true; Write-Host "removing $($_.FullName)"; Remove-Item $_.FullName -Force
93
+ }
94
+ }
95
+ if (-not $found) { Write-Host "WARNING: no build-details.json / python*.pc found under $dst" }
96
+
97
+ - uses: astral-sh/setup-uv@v5
98
+
99
+ # Pinned LLVM (clang-cl + lld-link). The NSIS installer supports /S silent
100
+ # install; woa64 asset is the native Windows-on-ARM build.
101
+ - name: Install LLVM ${{ env.LLVM_VERSION }} (${{ matrix.llvm_asset }})
102
+ shell: pwsh
103
+ run: |
104
+ $url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-$env:LLVM_VERSION/LLVM-$env:LLVM_VERSION-${{ matrix.llvm_asset }}.exe"
105
+ Write-Host "Downloading $url"
106
+ Invoke-WebRequest -Uri $url -OutFile "$env:RUNNER_TEMP\llvm.exe"
107
+ Start-Process -FilePath "$env:RUNNER_TEMP\llvm.exe" -ArgumentList "/S","/D=C:\LLVM" -Wait
108
+ & "C:\LLVM\bin\clang-cl.exe" --version
109
+
110
+ # Locate the VS install on the runner (Enterprise on hosted images).
111
+ - name: Resolve Visual Studio install
112
+ shell: pwsh
113
+ run: |
114
+ $vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
115
+ $vs = & $vswhere -latest -products * -property installationPath
116
+ if (-not $vs) { throw "no Visual Studio install found" }
117
+ "GINEXT_VS=$vs" | Out-File -FilePath $env:GITHUB_ENV -Append
118
+ Write-Host "VS: $vs"
119
+
120
+ # Provision a pinned vcpkg (tool cached via the GH cache) WITHOUT installing
121
+ # yet, so we can configure the NuGet binary cache first. Sets VCPKG_ROOT.
122
+ - name: Setup vcpkg
123
+ uses: lukka/run-vcpkg@v11
124
+ with:
125
+ vcpkgGitCommitId: ${{ env.VCPKG_COMMIT }}
126
+ vcpkgJsonGlob: "vcpkg.json"
127
+ runVcpkgInstall: false
128
+
129
+ # Point vcpkg at the GitHub Packages NuGet feed (readwrite): each package is
130
+ # looked up before building and uploaded right after it builds, so the feed
131
+ # self-seeds and timed-out runs still persist completed packages. x-gha kept
132
+ # as a secondary read/write source.
133
+ - name: Configure vcpkg binary caches
134
+ shell: pwsh
135
+ env:
136
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
137
+ run: |
138
+ $nuget = & "$env:VCPKG_ROOT\vcpkg.exe" fetch nuget | Select-Object -Last 1
139
+ & $nuget sources add -Source "$env:NUGET_FEED" -Name github `
140
+ -UserName "${{ github.repository_owner }}" -Password $env:GH_TOKEN `
141
+ -StorePasswordInClearText -NonInteractive
142
+ & $nuget setapikey $env:GH_TOKEN -Source "$env:NUGET_FEED" -NonInteractive
143
+ "VCPKG_BINARY_SOURCES=clear;nuget,$env:NUGET_FEED,readwrite;x-gha,readwrite" `
144
+ | Out-File -FilePath $env:GITHUB_ENV -Append
145
+
146
+ - name: vcpkg install (manifest)
147
+ shell: pwsh
148
+ timeout-minutes: 180
149
+ run: |
150
+ & "$env:VCPKG_ROOT\vcpkg.exe" install --triplet $env:GINEXT_TRIPLET `
151
+ --x-feature=gtk --x-feature=gstreamer `
152
+ --x-install-root "$env:VCPKG_INSTALLED_DIR"
153
+
154
+ - name: Setup build venv
155
+ shell: pwsh
156
+ # GINEXT_BASE_PYTHON is set by the python.org install step.
157
+ run: '& tools\win\setup.ps1'
158
+
159
+ - name: Build ginext (+ gi test typelibs)
160
+ shell: pwsh
161
+ # Call directly (not `powershell -File`), so the [switch] binds the
162
+ # boolean $true instead of the literal string. -WithGiTests builds the
163
+ # GIMarshallingTests/Regress/Utility/GoiBench typelibs (via a cp312
164
+ # scanner venv) so the full core suite can run.
165
+ run: '& tools\win\build.ps1 -WithGiTests:$true'
166
+
167
+ - name: Upload meson logs on failure
168
+ if: failure()
169
+ uses: actions/upload-artifact@v4
170
+ with:
171
+ name: meson-logs-${{ matrix.name }}
172
+ path: |
173
+ build/**/meson-logs/meson-log.txt
174
+ build/**/build.ninja
175
+ build/**/compile_commands.json
176
+ if-no-files-found: warn
177
+
178
+ # Core suite + the package suites (gio/gtk/gst). The glib-gir overlay
179
+ # supplies GIRepository-3.0 + the Win32 platform typelibs, the build step
180
+ # generated the gi test typelibs, the gtk/gstreamer introspection overlays
181
+ # supply the Gtk/Gdk/Gsk/Gst typelibs, and run_tests sets
182
+ # GINEXT_OVERLAY_PATH so the sub-package overlays apply. gtk runs in fixed
183
+ # order (-p no:randomly) per the known cross-platform random-order crash.
184
+ - name: Run core + gio + gtk + gst suites
185
+ shell: pwsh
186
+ run: |
187
+ . tools\win\build-env.ps1
188
+ $arch = $env:GINEXT_TRIPLET -replace '-windows$',''
189
+ & ".venv-win-$arch\Scripts\python.exe" tools\win\run_tests.py `
190
+ src/ginext/tests/ packages/ginext-gio/tests/gio `
191
+ packages/ginext-gtk/tests/gtk4 packages/ginext-gst/tests/gst `
192
+ -q -p no:randomly --continue-on-collection-errors
@@ -0,0 +1,220 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ # Mirror GitLab's `interruptible: true` — cancel superseded runs on the same ref.
9
+ concurrency:
10
+ group: ci-${{ github.ref }}
11
+ cancel-in-progress: true
12
+
13
+ # Default token perms for all jobs: read code + pull the CI image from GHCR.
14
+ # The image job alone elevates to packages: write to push.
15
+ permissions:
16
+ contents: read
17
+ packages: read
18
+
19
+ # Run the JS-based actions (checkout/cache/upload-artifact/login) on Node 24; Node 20
20
+ # is deprecated and removed from runners in Sep 2026.
21
+ env:
22
+ IMAGE: ghcr.io/jdahlin/ginext-ci
23
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
24
+
25
+ jobs:
26
+ # Build the CI image from ci/Dockerfile and push it to GHCR — but ONLY when the
27
+ # Dockerfile actually changes. The image is tagged by a hash of ci/Dockerfile,
28
+ # so an unchanged Dockerfile resolves to an existing tag and the build is
29
+ # skipped; the test/typecheck jobs just pull it (mirrors GitLab's prebuilt
30
+ # CI_IMAGE). Requires the repo's Actions token to have packages: write
31
+ # (Settings → Actions → General → Workflow permissions → Read and write).
32
+ image:
33
+ runs-on: ubuntu-latest
34
+ permissions:
35
+ contents: read
36
+ packages: write
37
+ outputs:
38
+ ref: ${{ steps.tag.outputs.ref }}
39
+ steps:
40
+ - uses: actions/checkout@v4
41
+ - id: tag
42
+ run: echo "ref=${IMAGE}:$(sha256sum ci/Dockerfile | cut -c1-16)" >> "$GITHUB_OUTPUT"
43
+ - uses: docker/login-action@v3
44
+ with:
45
+ registry: ghcr.io
46
+ username: ${{ github.actor }}
47
+ password: ${{ secrets.GITHUB_TOKEN }}
48
+ - name: Build & push image only if this Dockerfile hash isn't already published
49
+ run: |
50
+ if docker manifest inspect "${{ steps.tag.outputs.ref }}" >/dev/null 2>&1; then
51
+ echo "Image ${{ steps.tag.outputs.ref }} already exists — reusing, no rebuild."
52
+ else
53
+ echo "ci/Dockerfile changed — building ${{ steps.tag.outputs.ref }}"
54
+ docker build -t "${{ steps.tag.outputs.ref }}" -f ci/Dockerfile ci
55
+ docker push "${{ steps.tag.outputs.ref }}"
56
+ fi
57
+
58
+ # GitLab stages `test` + `extended`: the pytest jobs. Each writes JUnit XML.
59
+ test:
60
+ needs: image
61
+ runs-on: ubuntu-latest
62
+ container:
63
+ image: ${{ needs.image.outputs.ref }}
64
+ credentials:
65
+ username: ${{ github.actor }}
66
+ password: ${{ secrets.GITHUB_TOKEN }}
67
+ strategy:
68
+ fail-fast: false
69
+ matrix:
70
+ target: [test, test-debug, test-asan, test-ubsan]
71
+ name: ${{ matrix.target }}
72
+ env:
73
+ UV_CACHE_DIR: ${{ github.workspace }}/.cache/uv
74
+ steps:
75
+ - uses: actions/checkout@v4
76
+ - uses: actions/cache@v4
77
+ with:
78
+ path: .cache/uv
79
+ # Per-job key so the parallel jobs don't race to save the same cache
80
+ # ("another job may be creating this cache"); restore-keys still lets a
81
+ # cold job seed from any sibling's cache.
82
+ key: uv-${{ matrix.target }}-${{ hashFiles('uv.lock') }}
83
+ restore-keys: |
84
+ uv-${{ matrix.target }}-
85
+ uv-
86
+ - name: Configure pytest workers
87
+ # GitLab pinned PYTEST_WORKERS=8 (its runner misreported CPUs); GitHub
88
+ # runners report correctly, so derive it from the host.
89
+ run: echo "PYTEST_WORKERS=$(nproc)" >> "$GITHUB_ENV"
90
+ - name: make ${{ matrix.target }}
91
+ run: make ${{ matrix.target }} PYTEST_JUNIT_DIR="reports/junit/${{ matrix.target }}"
92
+ # Render a pass/fail table on the run summary page from the JUnit XML.
93
+ - name: Test summary
94
+ if: always()
95
+ continue-on-error: true
96
+ shell: bash
97
+ env:
98
+ LABEL: ${{ matrix.target }}
99
+ run: |
100
+ python3 - "$LABEL" <<'PY' >> "$GITHUB_STEP_SUMMARY"
101
+ import sys, glob, xml.etree.ElementTree as ET
102
+ label = sys.argv[1]
103
+ t = f = e = s = 0
104
+ files = glob.glob("reports/junit/**/*.xml", recursive=True)
105
+ for p in files:
106
+ try:
107
+ root = ET.parse(p).getroot()
108
+ except ET.ParseError:
109
+ continue
110
+ for ts in root.iter("testsuite"):
111
+ t += int(ts.get("tests") or 0)
112
+ f += int(ts.get("failures") or 0)
113
+ e += int(ts.get("errors") or 0)
114
+ s += int(ts.get("skipped") or 0)
115
+ passed = t - f - e - s
116
+ mark = "✅" if (files and f == 0 and e == 0) else "❌"
117
+ if not files:
118
+ print(f"### {mark} {label}\n\n_no test report — failed before tests ran_\n")
119
+ else:
120
+ print(f"### {mark} {label}\n")
121
+ print("| passed | failed | errors | skipped | total |")
122
+ print("|---:|---:|---:|---:|---:|")
123
+ print(f"| **{passed}** | {f} | {e} | {s} | {t} |\n")
124
+ PY
125
+ - name: Upload JUnit reports
126
+ if: always()
127
+ uses: actions/upload-artifact@v4
128
+ with:
129
+ name: junit-${{ matrix.target }}
130
+ path: reports/junit/
131
+ if-no-files-found: ignore
132
+
133
+ # GitLab `typecheck` job: separate caches (mypy + generated stubs), no JUnit.
134
+ typecheck:
135
+ needs: image
136
+ runs-on: ubuntu-latest
137
+ container:
138
+ image: ${{ needs.image.outputs.ref }}
139
+ credentials:
140
+ username: ${{ github.actor }}
141
+ password: ${{ secrets.GITHUB_TOKEN }}
142
+ env:
143
+ UV_CACHE_DIR: ${{ github.workspace }}/.cache/uv
144
+ steps:
145
+ - uses: actions/checkout@v4
146
+ - uses: actions/cache@v4
147
+ with:
148
+ path: .cache/uv
149
+ key: uv-typecheck-${{ hashFiles('uv.lock') }}
150
+ restore-keys: |
151
+ uv-typecheck-
152
+ uv-
153
+ # mypy incremental cache (validated by content hash; run-mypy.sh wipes a
154
+ # poisoned cache and retries, so cross-commit reuse is safe).
155
+ - uses: actions/cache@v4
156
+ with:
157
+ path: |
158
+ .mypy_cache
159
+ examples/commander/.mypy_cache
160
+ key: mypy-${{ github.ref_name }}
161
+ restore-keys: mypy-
162
+ # Generated .pyi stubs + content stamp; a valid stamp lets `make stubs`
163
+ # skip GIR-parsing regeneration.
164
+ - uses: actions/cache@v4
165
+ with:
166
+ path: |
167
+ packages/ginext-stubs/ginext-stubs
168
+ packages/ginext-stubs/.stub-generated.stamp
169
+ key: stubs-${{ github.ref_name }}
170
+ restore-keys: stubs-
171
+ - run: make typecheck
172
+
173
+ # Aggregate the JUnit artifacts into a "Tests" check run so the pass/fail
174
+ # counts show in the PR's checks list (no third-party action).
175
+ test-results:
176
+ needs: test
177
+ if: ${{ always() }}
178
+ runs-on: ubuntu-latest
179
+ permissions:
180
+ checks: write
181
+ steps:
182
+ - uses: actions/download-artifact@v4
183
+ with:
184
+ pattern: junit-*
185
+ path: junit
186
+ - name: Publish Tests check run
187
+ env:
188
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
189
+ REPO: ${{ github.repository }}
190
+ SHA: ${{ github.event.pull_request.head.sha || github.sha }}
191
+ run: |
192
+ python3 - "$SHA" > body.json <<'PY'
193
+ import sys, glob, os, json, xml.etree.ElementTree as ET
194
+ sha = sys.argv[1]
195
+ rows = []; TP = TF = TS = TT = 0
196
+ for d in sorted(glob.glob("junit/junit-*")):
197
+ name = os.path.basename(d).replace("junit-", "")
198
+ t = f = e = s = 0
199
+ for p in glob.glob(d + "/**/*.xml", recursive=True):
200
+ try:
201
+ root = ET.parse(p).getroot()
202
+ except ET.ParseError:
203
+ continue
204
+ for ts in root.iter("testsuite"):
205
+ t += int(ts.get("tests") or 0); f += int(ts.get("failures") or 0)
206
+ e += int(ts.get("errors") or 0); s += int(ts.get("skipped") or 0)
207
+ passed = t - f - e - s
208
+ mark = "✅" if (t and f == 0 and e == 0) else "❌"
209
+ rows.append(f"| {mark} {name} | {passed} | {f + e} | {s} | {t} |")
210
+ TP += passed; TF += f + e; TS += s; TT += t
211
+ title = f"{TP} passed, {TF} failed, {TS} skipped"
212
+ summary = ("| job | passed | failed | skipped | total |\n"
213
+ "|---|---:|---:|---:|---:|\n" + "\n".join(rows))
214
+ conclusion = "success" if (TT and TF == 0) else ("failure" if TT else "neutral")
215
+ json.dump({"name": "Tests", "head_sha": sha, "status": "completed",
216
+ "conclusion": conclusion,
217
+ "output": {"title": title, "summary": summary}}, sys.stdout)
218
+ PY
219
+ gh api -X POST "repos/$REPO/check-runs" --input body.json >/dev/null
220
+ echo "Published Tests check for $SHA"
@@ -0,0 +1,33 @@
1
+ name: Commit policy
2
+
3
+ # Pre-merge gate: reject any PR whose commits carry an AI attribution trailer.
4
+ # The repo also has a local pre-commit commit-msg hook for this, but local hooks
5
+ # don't run on squash-merge or in CI, so this is the enforced check.
6
+
7
+ on:
8
+ pull_request:
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ env:
14
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
15
+
16
+ jobs:
17
+ no-ai-coauthor:
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ with:
22
+ fetch-depth: 0
23
+ - name: Forbid AI Co-Authored-By trailer
24
+ env:
25
+ BASE: ${{ github.event.pull_request.base.sha }}
26
+ HEAD: ${{ github.event.pull_request.head.sha }}
27
+ run: |
28
+ if git log --format='%B' "$BASE..$HEAD" \
29
+ | grep -inE '^[[:space:]]*Co-Authored-By:.*(claude|anthropic|gpt|copilot|openai)'; then
30
+ echo "::error::A commit in this PR has a forbidden AI Co-Authored-By trailer. Remove it (e.g. git rebase) before merging."
31
+ exit 1
32
+ fi
33
+ echo "OK: no AI Co-Authored-By trailers in this PR's commits."
@@ -0,0 +1,96 @@
1
+ name: Docs
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ workflow_dispatch:
7
+
8
+ # Only one Pages deployment at a time; let an in-progress run finish.
9
+ concurrency:
10
+ group: pages
11
+ cancel-in-progress: false
12
+
13
+ permissions:
14
+ contents: read
15
+ packages: read
16
+
17
+ # Run the JS-based actions (checkout/cache/upload-pages-artifact) on Node 24; Node 20
18
+ # is deprecated and removed from runners in Sep 2026.
19
+ env:
20
+ IMAGE: ghcr.io/jdahlin/ginext-ci
21
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
22
+
23
+ jobs:
24
+ # Resolve (and build-if-missing) the CI image, which ships the GIR dev
25
+ # packages + uv the generator needs. Mirrors ci.yml's image job — tagged by a
26
+ # hash of ci/Dockerfile, so an unchanged Dockerfile just reuses the image.
27
+ image:
28
+ runs-on: ubuntu-latest
29
+ permissions:
30
+ contents: read
31
+ packages: write
32
+ outputs:
33
+ ref: ${{ steps.tag.outputs.ref }}
34
+ steps:
35
+ - uses: actions/checkout@v4
36
+ - id: tag
37
+ run: echo "ref=${IMAGE}:$(sha256sum ci/Dockerfile | cut -c1-16)" >> "$GITHUB_OUTPUT"
38
+ - uses: docker/login-action@v3
39
+ with:
40
+ registry: ghcr.io
41
+ username: ${{ github.actor }}
42
+ password: ${{ secrets.GITHUB_TOKEN }}
43
+ - name: Build & push image only if this Dockerfile hash isn't already published
44
+ run: |
45
+ if docker manifest inspect "${{ steps.tag.outputs.ref }}" >/dev/null 2>&1; then
46
+ echo "Image ${{ steps.tag.outputs.ref }} already exists — reusing."
47
+ else
48
+ echo "ci/Dockerfile changed — building ${{ steps.tag.outputs.ref }}"
49
+ docker build -t "${{ steps.tag.outputs.ref }}" -f ci/Dockerfile ci
50
+ docker push "${{ steps.tag.outputs.ref }}"
51
+ fi
52
+
53
+ # Generate the API reference from the system GIRs, then build the mkdocs site.
54
+ build:
55
+ needs: image
56
+ runs-on: ubuntu-latest
57
+ container:
58
+ image: ${{ needs.image.outputs.ref }}
59
+ credentials:
60
+ username: ${{ github.actor }}
61
+ password: ${{ secrets.GITHUB_TOKEN }}
62
+ env:
63
+ UV_CACHE_DIR: ${{ github.workspace }}/.cache/uv
64
+ steps:
65
+ - uses: actions/checkout@v4
66
+ - uses: actions/cache@v4
67
+ with:
68
+ path: .cache/uv
69
+ key: uv-docs-${{ hashFiles('uv.lock', 'packages/ginext-stubgen/pyproject.toml') }}
70
+ restore-keys: |
71
+ uv-docs-
72
+ uv-
73
+ - name: Generate API reference (GLib, GObject, Gio, Gdk, Gtk, Pango)
74
+ run: make api-docs
75
+ - name: Build mkdocs site
76
+ run: |
77
+ uv run --no-project \
78
+ --with mkdocs-material \
79
+ --with mkdocs-literate-nav \
80
+ mkdocs build --strict --site-dir site
81
+ - uses: actions/upload-pages-artifact@v3
82
+ with:
83
+ path: site
84
+
85
+ deploy:
86
+ needs: build
87
+ runs-on: ubuntu-latest
88
+ permissions:
89
+ pages: write
90
+ id-token: write
91
+ environment:
92
+ name: github-pages
93
+ url: ${{ steps.deployment.outputs.page_url }}
94
+ steps:
95
+ - id: deployment
96
+ uses: actions/deploy-pages@v4