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.
- ginext_core-0.8.1/.clang-format +70 -0
- ginext_core-0.8.1/.github/workflows/ci-windows.yml +192 -0
- ginext_core-0.8.1/.github/workflows/ci.yml +220 -0
- ginext_core-0.8.1/.github/workflows/commit-policy.yml +33 -0
- ginext_core-0.8.1/.github/workflows/docs.yml +96 -0
- ginext_core-0.8.1/.github/workflows/make-test.yml +145 -0
- ginext_core-0.8.1/.github/workflows/release.yml +121 -0
- ginext_core-0.8.1/.gitignore +57 -0
- ginext_core-0.8.1/.pre-commit-config.yaml +64 -0
- ginext_core-0.8.1/.python-version +1 -0
- ginext_core-0.8.1/AGENTS.md +47 -0
- ginext_core-0.8.1/CLAUDE.md +3 -0
- ginext_core-0.8.1/LICENSE +504 -0
- ginext_core-0.8.1/Makefile +569 -0
- ginext_core-0.8.1/PKG-INFO +102 -0
- ginext_core-0.8.1/README.md +51 -0
- ginext_core-0.8.1/ci/Dockerfile +45 -0
- ginext_core-0.8.1/ci/run-mypy.sh +33 -0
- ginext_core-0.8.1/conftest.py +241 -0
- ginext_core-0.8.1/conftest_shared.py +325 -0
- ginext_core-0.8.1/dbus_fixtures.py +76 -0
- ginext_core-0.8.1/docs/README.md +7 -0
- ginext_core-0.8.1/docs/advanced-guide/index.md +24 -0
- ginext_core-0.8.1/docs/advanced-guide/overlays/index.md +112 -0
- ginext_core-0.8.1/docs/assets/ginext-orbit.svg +31 -0
- ginext_core-0.8.1/docs/assets/styles.css +286 -0
- ginext_core-0.8.1/docs/book/beyond-gnome/cross-platform.md +28 -0
- ginext_core-0.8.1/docs/book/beyond-gnome/elementary.md +23 -0
- ginext_core-0.8.1/docs/book/beyond-gnome/index.md +13 -0
- ginext_core-0.8.1/docs/book/beyond-gnome/kde.md +24 -0
- ginext_core-0.8.1/docs/book/beyond-gnome/macos.md +31 -0
- ginext_core-0.8.1/docs/book/beyond-gnome/phosh.md +29 -0
- ginext_core-0.8.1/docs/book/beyond-gnome/sway.md +27 -0
- ginext_core-0.8.1/docs/book/beyond-gnome/windows.md +28 -0
- ginext_core-0.8.1/docs/book/building/actions-and-menus.md +29 -0
- ginext_core-0.8.1/docs/book/building/application.md +28 -0
- ginext_core-0.8.1/docs/book/building/clipboard.md +22 -0
- ginext_core-0.8.1/docs/book/building/context-menus.md +22 -0
- ginext_core-0.8.1/docs/book/building/css.md +30 -0
- ginext_core-0.8.1/docs/book/building/declarative-ui.md +30 -0
- ginext_core-0.8.1/docs/book/building/dialogs.md +26 -0
- ginext_core-0.8.1/docs/book/building/drag-and-drop.md +28 -0
- ginext_core-0.8.1/docs/book/building/events-and-input.md +32 -0
- ginext_core-0.8.1/docs/book/building/gio-and-async.md +31 -0
- ginext_core-0.8.1/docs/book/building/index.md +22 -0
- ginext_core-0.8.1/docs/book/building/libsoup.md +161 -0
- ginext_core-0.8.1/docs/book/building/lists.md +38 -0
- ginext_core-0.8.1/docs/book/building/shortcuts.md +25 -0
- ginext_core-0.8.1/docs/book/building/text-view.md +31 -0
- ginext_core-0.8.1/docs/book/building/widgets-and-layout.md +32 -0
- ginext_core-0.8.1/docs/book/deeper/cairo.md +28 -0
- ginext_core-0.8.1/docs/book/deeper/custom-widgets.md +30 -0
- ginext_core-0.8.1/docs/book/deeper/debugging.md +40 -0
- ginext_core-0.8.1/docs/book/deeper/gsk.md +28 -0
- ginext_core-0.8.1/docs/book/deeper/index.md +12 -0
- ginext_core-0.8.1/docs/book/deeper/pango.md +26 -0
- ginext_core-0.8.1/docs/book/deeper/performance.md +37 -0
- ginext_core-0.8.1/docs/book/extending/annotations.md +36 -0
- ginext_core-0.8.1/docs/book/extending/c-async.md +31 -0
- ginext_core-0.8.1/docs/book/extending/c-gobject-library.md +39 -0
- ginext_core-0.8.1/docs/book/extending/index.md +13 -0
- ginext_core-0.8.1/docs/book/extending/overlays.md +31 -0
- ginext_core-0.8.1/docs/book/extending/pitfalls.md +31 -0
- ginext_core-0.8.1/docs/book/extending/rust.md +24 -0
- ginext_core-0.8.1/docs/book/extending/when.md +30 -0
- ginext_core-0.8.1/docs/book/foundations/getting-started.md +22 -0
- ginext_core-0.8.1/docs/book/foundations/gobject-for-python-devs.md +29 -0
- ginext_core-0.8.1/docs/book/foundations/hello-world.md +25 -0
- ginext_core-0.8.1/docs/book/foundations/index.md +18 -0
- ginext_core-0.8.1/docs/book/foundations/installation.md +31 -0
- ginext_core-0.8.1/docs/book/foundations/migration-from-pygobject.md +34 -0
- ginext_core-0.8.1/docs/book/foundations/migration-from-qt.md +44 -0
- ginext_core-0.8.1/docs/book/foundations/migration-from-react.md +52 -0
- ginext_core-0.8.1/docs/book/foundations/migration-from-swiftui.md +48 -0
- ginext_core-0.8.1/docs/book/foundations/migration-index.md +20 -0
- ginext_core-0.8.1/docs/book/gnome/accessibility.md +38 -0
- ginext_core-0.8.1/docs/book/gnome/adw-adaptive.md +27 -0
- ginext_core-0.8.1/docs/book/gnome/adw-application.md +23 -0
- ginext_core-0.8.1/docs/book/gnome/adw-dialogs.md +25 -0
- ginext_core-0.8.1/docs/book/gnome/adw-navigation.md +23 -0
- ginext_core-0.8.1/docs/book/gnome/adw-preferences.md +33 -0
- ginext_core-0.8.1/docs/book/gnome/adw-styling.md +30 -0
- ginext_core-0.8.1/docs/book/gnome/app-icons.md +25 -0
- ginext_core-0.8.1/docs/book/gnome/app-id.md +31 -0
- ginext_core-0.8.1/docs/book/gnome/appstream.md +35 -0
- ginext_core-0.8.1/docs/book/gnome/background.md +24 -0
- ginext_core-0.8.1/docs/book/gnome/blueprint.md +31 -0
- ginext_core-0.8.1/docs/book/gnome/builder.md +29 -0
- ginext_core-0.8.1/docs/book/gnome/cambalache.md +24 -0
- ginext_core-0.8.1/docs/book/gnome/circle.md +34 -0
- ginext_core-0.8.1/docs/book/gnome/color-and-display.md +26 -0
- ginext_core-0.8.1/docs/book/gnome/css.md +29 -0
- ginext_core-0.8.1/docs/book/gnome/flathub.md +35 -0
- ginext_core-0.8.1/docs/book/gnome/goa.md +24 -0
- ginext_core-0.8.1/docs/book/gnome/gsettings.md +24 -0
- ginext_core-0.8.1/docs/book/gnome/index.md +56 -0
- ginext_core-0.8.1/docs/book/gnome/localization.md +32 -0
- ginext_core-0.8.1/docs/book/gnome/meson-layout.md +34 -0
- ginext_core-0.8.1/docs/book/gnome/notifications.md +29 -0
- ginext_core-0.8.1/docs/book/gnome/platform.md +26 -0
- ginext_core-0.8.1/docs/book/gnome/search-providers.md +30 -0
- ginext_core-0.8.1/docs/book/gnome/shell-integration.md +23 -0
- ginext_core-0.8.1/docs/book/gnome/symbolic-icons.md +24 -0
- ginext_core-0.8.1/docs/book/gnome/tracker.md +26 -0
- ginext_core-0.8.1/docs/book/gnome/user-docs.md +25 -0
- ginext_core-0.8.1/docs/book/gnome/what-makes-a-gnome-app.md +27 -0
- ginext_core-0.8.1/docs/book/index.md +38 -0
- ginext_core-0.8.1/docs/book/reference/api.md +31 -0
- ginext_core-0.8.1/docs/book/reference/freetype.md +25 -0
- ginext_core-0.8.1/docs/book/reference/gdk.md +28 -0
- ginext_core-0.8.1/docs/book/reference/glossary.md +30 -0
- ginext_core-0.8.1/docs/book/reference/harfbuzz.md +27 -0
- ginext_core-0.8.1/docs/book/reference/index.md +13 -0
- ginext_core-0.8.1/docs/book/reference/pango.md +31 -0
- ginext_core-0.8.1/docs/book/reference/pitfalls.md +43 -0
- ginext_core-0.8.1/docs/book/shipping/appimage.md +32 -0
- ginext_core-0.8.1/docs/book/shipping/ci-cd.md +44 -0
- ginext_core-0.8.1/docs/book/shipping/distro.md +30 -0
- ginext_core-0.8.1/docs/book/shipping/flatpak.md +37 -0
- ginext_core-0.8.1/docs/book/shipping/foundations.md +33 -0
- ginext_core-0.8.1/docs/book/shipping/i18n.md +33 -0
- ginext_core-0.8.1/docs/book/shipping/index.md +18 -0
- ginext_core-0.8.1/docs/book/shipping/macos.md +40 -0
- ginext_core-0.8.1/docs/book/shipping/pypi.md +29 -0
- ginext_core-0.8.1/docs/book/shipping/snap.md +32 -0
- ginext_core-0.8.1/docs/book/shipping/windows.md +38 -0
- ginext_core-0.8.1/docs/book/system/accounts-service.md +21 -0
- ginext_core-0.8.1/docs/book/system/dbus-server.md +29 -0
- ginext_core-0.8.1/docs/book/system/dbus.md +27 -0
- ginext_core-0.8.1/docs/book/system/geoclue.md +22 -0
- ginext_core-0.8.1/docs/book/system/gsettings.md +33 -0
- ginext_core-0.8.1/docs/book/system/gvfs.md +25 -0
- ginext_core-0.8.1/docs/book/system/index.md +21 -0
- ginext_core-0.8.1/docs/book/system/libsecret.md +24 -0
- ginext_core-0.8.1/docs/book/system/logind.md +23 -0
- ginext_core-0.8.1/docs/book/system/mpris.md +30 -0
- ginext_core-0.8.1/docs/book/system/networkmanager.md +25 -0
- ginext_core-0.8.1/docs/book/system/notifications.md +26 -0
- ginext_core-0.8.1/docs/book/system/portals.md +38 -0
- ginext_core-0.8.1/docs/book/system/services-overview.md +25 -0
- ginext_core-0.8.1/docs/book/system/tracker.md +24 -0
- ginext_core-0.8.1/docs/book/system/upower.md +25 -0
- ginext_core-0.8.1/docs/gallery/images/adw-action-row.png +0 -0
- ginext_core-0.8.1/docs/gallery/images/adw-status-page.png +0 -0
- ginext_core-0.8.1/docs/gallery/images/gtk-button.png +0 -0
- ginext_core-0.8.1/docs/gallery/index.md +37 -0
- ginext_core-0.8.1/docs/getting-started/gallery.md +26 -0
- ginext_core-0.8.1/docs/getting-started/index.md +19 -0
- ginext_core-0.8.1/docs/getting-started/installation.md +79 -0
- ginext_core-0.8.1/docs/getting-started/playground.md +62 -0
- ginext_core-0.8.1/docs/guides/application-structure.md +21 -0
- ginext_core-0.8.1/docs/guides/async-errors-and-event-loops.md +53 -0
- ginext_core-0.8.1/docs/guides/concurrency.md +21 -0
- ginext_core-0.8.1/docs/guides/constructors-and-namespaces.md +34 -0
- ginext_core-0.8.1/docs/guides/gdk.md +35 -0
- ginext_core-0.8.1/docs/guides/gio.md +92 -0
- ginext_core-0.8.1/docs/guides/gtk.md +55 -0
- ginext_core-0.8.1/docs/guides/index.md +41 -0
- ginext_core-0.8.1/docs/guides/migration-from-pygobject.md +24 -0
- ginext_core-0.8.1/docs/guides/pango.md +29 -0
- ginext_core-0.8.1/docs/guides/properties.md +128 -0
- ginext_core-0.8.1/docs/guides/signals.md +74 -0
- ginext_core-0.8.1/docs/guides/subclassing.md +125 -0
- ginext_core-0.8.1/docs/guides/type-checking.md +139 -0
- ginext_core-0.8.1/docs/index.md +41 -0
- ginext_core-0.8.1/docs/internals/MEMORY.md +3 -0
- ginext_core-0.8.1/docs/internals/README.md +58 -0
- ginext_core-0.8.1/docs/internals/TODO.md +46 -0
- ginext_core-0.8.1/docs/internals/abi-modes.md +584 -0
- ginext_core-0.8.1/docs/internals/abi2/abi2.md +70 -0
- ginext_core-0.8.1/docs/internals/abi2/async.md +381 -0
- ginext_core-0.8.1/docs/internals/abi2/binding.md +202 -0
- ginext_core-0.8.1/docs/internals/abi2/closures/POST implementation-notes.md +97 -0
- ginext_core-0.8.1/docs/internals/abi2/closures/closure-cell-weakening.md +81 -0
- ginext_core-0.8.1/docs/internals/abi2/closures/disconnect-identity.md +78 -0
- ginext_core-0.8.1/docs/internals/abi2/closures/native-connection-records.md +90 -0
- ginext_core-0.8.1/docs/internals/abi2/closures/owner-inference.md +80 -0
- ginext_core-0.8.1/docs/internals/abi2/closures/scope-and-destroy-ownership.md +96 -0
- ginext_core-0.8.1/docs/internals/abi2/closures/source-vs-owner-lifetime.md +83 -0
- ginext_core-0.8.1/docs/internals/abi2/closures/strong-callback-retention.md +82 -0
- ginext_core-0.8.1/docs/internals/abi2/closures/threading-and-reentrancy.md +76 -0
- ginext_core-0.8.1/docs/internals/abi2/closures/unified-closure-state-machine.md +165 -0
- ginext_core-0.8.1/docs/internals/abi2/conflicts.md +3351 -0
- ginext_core-0.8.1/docs/internals/abi2/copy-recursive-design.md +140 -0
- ginext_core-0.8.1/docs/internals/abi2/errors.md +268 -0
- ginext_core-0.8.1/docs/internals/abi2/gio-file.md +264 -0
- ginext_core-0.8.1/docs/internals/abi2/methods.md +185 -0
- ginext_core-0.8.1/docs/internals/abi2/property.md +438 -0
- ginext_core-0.8.1/docs/internals/abi2/prototype.md +288 -0
- ginext_core-0.8.1/docs/internals/abi2/shared-namespace.md +228 -0
- ginext_core-0.8.1/docs/internals/abi2/signals.md +338 -0
- ginext_core-0.8.1/docs/internals/abi2/unresolved.md +163 -0
- ginext_core-0.8.1/docs/internals/async-cancellation.md +174 -0
- ginext_core-0.8.1/docs/internals/async-runtime.md +255 -0
- ginext_core-0.8.1/docs/internals/async-test-targets.md +101 -0
- ginext_core-0.8.1/docs/internals/binary-distribution-ideas.md +373 -0
- ginext_core-0.8.1/docs/internals/book-structure-research.md +204 -0
- ginext_core-0.8.1/docs/internals/closure-jit-plan.md +206 -0
- ginext_core-0.8.1/docs/internals/code-duplication.md +61 -0
- ginext_core-0.8.1/docs/internals/doc-ideas.md +89 -0
- ginext_core-0.8.1/docs/internals/errors.md +54 -0
- ginext_core-0.8.1/docs/internals/feature-slice-layout-plan.md +415 -0
- ginext_core-0.8.1/docs/internals/full-jit-plan.md +1079 -0
- ginext_core-0.8.1/docs/internals/future-features.md +119 -0
- ginext_core-0.8.1/docs/internals/ginext-extend.md +160 -0
- ginext_core-0.8.1/docs/internals/ginext-namespace+class+method+invoke-plan.md +671 -0
- ginext_core-0.8.1/docs/internals/gitlab-agent-setup.md +372 -0
- ginext_core-0.8.1/docs/internals/gobject-c-core-reduction.md +388 -0
- ginext_core-0.8.1/docs/internals/gobject-property-optimizations.md +158 -0
- ginext_core-0.8.1/docs/internals/goi-docs-plan.md +197 -0
- ginext_core-0.8.1/docs/internals/gtk-expression.md +367 -0
- ginext_core-0.8.1/docs/internals/gtkcolumnview.md +411 -0
- ginext_core-0.8.1/docs/internals/hot-reload.md +363 -0
- ginext_core-0.8.1/docs/internals/invoke-marshaller-analysis.md +803 -0
- ginext_core-0.8.1/docs/internals/invoke-plan.md +534 -0
- ginext_core-0.8.1/docs/internals/invoke-vectorcall-revival.md +279 -0
- ginext_core-0.8.1/docs/internals/marshaller-coercions.md +190 -0
- ginext_core-0.8.1/docs/internals/native-compat-surface-plan.md +327 -0
- ginext_core-0.8.1/docs/internals/overlays.md +366 -0
- ginext_core-0.8.1/docs/internals/project_runtime_restructure.md +53 -0
- ginext_core-0.8.1/docs/internals/pygobject-architectural-issues.md +265 -0
- ginext_core-0.8.1/docs/internals/pygobject-lifetime-gc-notes.md +295 -0
- ginext_core-0.8.1/docs/internals/ref-counting.md +1251 -0
- ginext_core-0.8.1/docs/internals/story/1 why ginext.md +56 -0
- ginext_core-0.8.1/docs/internals/story/10 typing by default.md +143 -0
- ginext_core-0.8.1/docs/internals/story/11 mapping rules.md +174 -0
- ginext_core-0.8.1/docs/internals/story/12 binding member kinds.md +178 -0
- ginext_core-0.8.1/docs/internals/story/13 primitive and scalar values.md +118 -0
- ginext_core-0.8.1/docs/internals/story/14 non scalar values.md +206 -0
- ginext_core-0.8.1/docs/internals/story/15 goi cli.md +136 -0
- ginext_core-0.8.1/docs/internals/story/2 importing namespaces.md +65 -0
- ginext_core-0.8.1/docs/internals/story/3 generated bindings.md +89 -0
- ginext_core-0.8.1/docs/internals/story/4 objects methods and properties.md +94 -0
- ginext_core-0.8.1/docs/internals/story/5 signals and ownership.md +91 -0
- ginext_core-0.8.1/docs/internals/story/6 files async and errors.md +97 -0
- ginext_core-0.8.1/docs/internals/story/7 property bindings.md +83 -0
- ginext_core-0.8.1/docs/internals/story/8 subclassing later.md +63 -0
- ginext_core-0.8.1/docs/internals/story/9 tests and doctests.md +81 -0
- ginext_core-0.8.1/docs/internals/story/README.md +41 -0
- ginext_core-0.8.1/docs/internals/template-api-design.md +317 -0
- ginext_core-0.8.1/docs/internals/testing-compat.md +180 -0
- ginext_core-0.8.1/docs/internals/todo-2026-05-10-jit-specialize.md +169 -0
- ginext_core-0.8.1/docs/internals/todo-2026-05-10.md +139 -0
- ginext_core-0.8.1/docs/internals/typelib-versioning.md +328 -0
- ginext_core-0.8.1/docs/internals/typing-debt.md +161 -0
- ginext_core-0.8.1/docs/introduction.md +34 -0
- ginext_core-0.8.1/docs/performance.md +21 -0
- ginext_core-0.8.1/docs/stubgen.md +277 -0
- ginext_core-0.8.1/docs/upgrading.md +15 -0
- ginext_core-0.8.1/docs/why-a-new-api.md +59 -0
- ginext_core-0.8.1/examples/async/application.py +44 -0
- ginext_core-0.8.1/examples/async/cancel.py +55 -0
- ginext_core-0.8.1/examples/async/errors.py +66 -0
- ginext_core-0.8.1/examples/async/sockets.py +55 -0
- ginext_core-0.8.1/examples/async/walk.py +43 -0
- ginext_core-0.8.1/examples/async/with_asyncio.py +60 -0
- ginext_core-0.8.1/examples/commander/pyproject.toml +46 -0
- ginext_core-0.8.1/examples/commander/src/commander/__init__.py +1 -0
- ginext_core-0.8.1/examples/commander/src/commander/__main__.py +14 -0
- ginext_core-0.8.1/examples/commander/src/commander/app.py +61 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/__init__.py +1 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/archive/__init__.py +15 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/archive/archiveentry.py +151 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/lister/__init__.py +3 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/lister/listerview.css +54 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/lister/listerview.py +662 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/location/__init__.py +19 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/location/locationstore.py +94 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/location/pathdisplay.py +30 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/operations/__init__.py +11 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/operations/base.py +91 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/operations/copy.py +38 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/operations/create_folder.py +36 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/operations/move.py +38 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/operations/rename.py +31 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/pane/__init__.py +3 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/pane/paneview.css +211 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/pane/paneview.py +989 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/pangoutils.py +106 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/quickview/__init__.py +3 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/quickview/zoomview.py +94 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/settings/__init__.py +3 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/settings/settingsstore.py +98 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/__init__.py +3 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/back.svg +4 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/compare.svg +5 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/edit.svg +6 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/folder.svg +5 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/forward.svg +4 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/ftp.svg +6 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/image.svg +6 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/new-folder.svg +6 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/pack.svg +6 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/panes.svg +6 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/refresh.svg +4 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/search.svg +5 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/select.svg +5 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/sort.svg +4 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/sync.svg +5 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/tree.svg +7 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/unpack.svg +6 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/icons/url.svg +6 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/toolbarview.css +38 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/toolbar/toolbarview.py +61 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/window/__init__.py +3 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/window/menus.ui +27 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/window/preferences.py +67 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/window/preferences.ui +55 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/window/shortcuts.ui +127 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/window/window.ui +57 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/window/windowview.css +233 -0
- ginext_core-0.8.1/examples/commander/src/commander/components/window/windowview.py +703 -0
- ginext_core-0.8.1/examples/commander/src/commander/fs/__init__.py +3 -0
- ginext_core-0.8.1/examples/commander/src/commander/fs/file.py +150 -0
- ginext_core-0.8.1/examples/commander/src/commander/providers/__init__.py +13 -0
- ginext_core-0.8.1/examples/commander/src/commander/providers/base.py +41 -0
- ginext_core-0.8.1/examples/commander/src/commander/providers/builtin.py +114 -0
- ginext_core-0.8.1/examples/commander/src/commander/providers/image.py +83 -0
- ginext_core-0.8.1/examples/commander/src/commander/providers/pdf.py +123 -0
- ginext_core-0.8.1/examples/commander/src/commander/providers/registry.py +128 -0
- ginext_core-0.8.1/examples/commander/src/commander/providers/text.py +109 -0
- ginext_core-0.8.1/examples/commander/src/commander/providers/video.py +33 -0
- ginext_core-0.8.1/examples/commander/src/commander/ui/__init__.py +1 -0
- ginext_core-0.8.1/examples/commander/src/commander/ui/gtkbuilder/__init__.py +20 -0
- ginext_core-0.8.1/examples/commander/src/commander/ui/gtkbuilder/operations.ui +23 -0
- ginext_core-0.8.1/examples/commander/uv.lock +246 -0
- ginext_core-0.8.1/examples/docviewer/docviewer.py +371 -0
- ginext_core-0.8.1/examples/docviewer/example.md +69 -0
- ginext_core-0.8.1/examples/draw-bench/_bench_common.py +161 -0
- ginext_core-0.8.1/examples/draw-bench/app.py +171 -0
- ginext_core-0.8.1/examples/draw-bench/closure_bench.py +56 -0
- ginext_core-0.8.1/examples/draw-bench/gjs_microbench.js +142 -0
- ginext_core-0.8.1/examples/draw-bench/membench.py +235 -0
- ginext_core-0.8.1/examples/draw-bench/microbench.py +288 -0
- ginext_core-0.8.1/examples/draw-bench/run-gjs-microbench.sh +36 -0
- ginext_core-0.8.1/examples/gio/drive.py +36 -0
- ginext_core-0.8.1/examples/gio/enumerator.py +44 -0
- ginext_core-0.8.1/examples/gio/file.py +54 -0
- ginext_core-0.8.1/examples/gio/settings.py +49 -0
- ginext_core-0.8.1/examples/gio/volume.py +35 -0
- ginext_core-0.8.1/examples/hello_gtk3.py +45 -0
- ginext_core-0.8.1/examples/hello_template.py +59 -0
- ginext_core-0.8.1/examples/mandelbrot/app.py +491 -0
- ginext_core-0.8.1/examples/numba-cuda/README.md +58 -0
- ginext_core-0.8.1/examples/numba-cuda/app.py +281 -0
- ginext_core-0.8.1/examples/playground/README.md +455 -0
- ginext_core-0.8.1/examples/playground/dbus_dashboard.py +1607 -0
- ginext_core-0.8.1/examples/playground/numba_cuda_gst_demo.py +256 -0
- ginext_core-0.8.1/examples/playground/numba_gst_demo.py +410 -0
- ginext_core-0.8.1/examples/playground/numba_gst_spike.py +200 -0
- ginext_core-0.8.1/examples/playground/playground/__init__.py +1 -0
- ginext_core-0.8.1/examples/playground/playground/__main__.py +4 -0
- ginext_core-0.8.1/examples/playground/playground/app.py +29 -0
- ginext_core-0.8.1/examples/playground/playground/catalog.py +65 -0
- ginext_core-0.8.1/examples/playground/playground/ui/template-row.blp +32 -0
- ginext_core-0.8.1/examples/playground/playground/ui/template-row.ui +50 -0
- ginext_core-0.8.1/examples/playground/playground/ui/window.blp +130 -0
- ginext_core-0.8.1/examples/playground/playground/ui/window.ui +172 -0
- ginext_core-0.8.1/examples/playground/playground/window.py +112 -0
- ginext_core-0.8.1/examples/pyedit/__init__.py +11 -0
- ginext_core-0.8.1/examples/pyedit/__main__.py +7 -0
- ginext_core-0.8.1/examples/pyedit/app.py +168 -0
- ginext_core-0.8.1/examples/pyedit/document.py +160 -0
- ginext_core-0.8.1/examples/pyedit/page.py +125 -0
- ginext_core-0.8.1/examples/pyedit/preferences.py +140 -0
- ginext_core-0.8.1/examples/pyedit/resources/menus.ui +132 -0
- ginext_core-0.8.1/examples/pyedit/resources/page.ui +42 -0
- ginext_core-0.8.1/examples/pyedit/resources/preferences.ui +155 -0
- ginext_core-0.8.1/examples/pyedit/resources/search-bar.ui +116 -0
- ginext_core-0.8.1/examples/pyedit/resources/shortcuts.ui +181 -0
- ginext_core-0.8.1/examples/pyedit/resources/window.ui +169 -0
- ginext_core-0.8.1/examples/pyedit/search_bar.py +229 -0
- ginext_core-0.8.1/examples/pyedit/state.py +196 -0
- ginext_core-0.8.1/examples/pyedit/window.py +595 -0
- ginext_core-0.8.1/examples/templated/templated.gresource +0 -0
- ginext_core-0.8.1/examples/templated/templated.gresource.xml +6 -0
- ginext_core-0.8.1/examples/templated/window.ui +25 -0
- ginext_core-0.8.1/examples/terminal/__init__.py +9 -0
- ginext_core-0.8.1/examples/terminal/__main__.py +7 -0
- ginext_core-0.8.1/examples/terminal/app.py +136 -0
- ginext_core-0.8.1/examples/terminal/palettes.py +159 -0
- ginext_core-0.8.1/examples/terminal/preferences.py +164 -0
- ginext_core-0.8.1/examples/terminal/resources/menus.ui +78 -0
- ginext_core-0.8.1/examples/terminal/resources/preferences.ui +155 -0
- ginext_core-0.8.1/examples/terminal/resources/window.ui +60 -0
- ginext_core-0.8.1/examples/terminal/state.py +131 -0
- ginext_core-0.8.1/examples/terminal/window.py +296 -0
- ginext_core-0.8.1/examples/web_browser/__init__.py +8 -0
- ginext_core-0.8.1/examples/web_browser/__main__.py +7 -0
- ginext_core-0.8.1/examples/web_browser/app.py +481 -0
- ginext_core-0.8.1/examples/web_browser/extensions/simple-blocker/content-filters/privacy.json +27 -0
- ginext_core-0.8.1/examples/web_browser/extensions/simple-blocker/manifest.json +14 -0
- ginext_core-0.8.1/examples/web_browser/extensions.py +225 -0
- ginext_core-0.8.1/examples/web_browser/resources/menus.ui +148 -0
- ginext_core-0.8.1/examples/web_browser/resources/settings.ui +130 -0
- ginext_core-0.8.1/examples/web_browser/resources/window.ui +157 -0
- ginext_core-0.8.1/examples/web_browser/settings.py +59 -0
- ginext_core-0.8.1/examples/web_browser/state.py +94 -0
- ginext_core-0.8.1/examples/web_browser/store.py +95 -0
- ginext_core-0.8.1/examples/web_browser/window.py +908 -0
- ginext_core-0.8.1/examples/webcam-effects/README.md +52 -0
- ginext_core-0.8.1/examples/webcam-effects/app.py +961 -0
- ginext_core-0.8.1/i686-linux.ini +14 -0
- ginext_core-0.8.1/meson.build +83 -0
- ginext_core-0.8.1/meson.options +13 -0
- ginext_core-0.8.1/mkdocs.yml +99 -0
- ginext_core-0.8.1/native-win-arm64.ini +14 -0
- ginext_core-0.8.1/packages/gi/README.md +14 -0
- ginext_core-0.8.1/packages/gi/pyproject.toml +50 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/conftest.py +26 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/pyproject.toml +57 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/__init__.py +95 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/_gi.py +178 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/_gobject_props.py +70 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/_gobject_signals.py +166 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/_gtktemplate.py +271 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/_ossighelper.py +285 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/_propertyhelper.py +244 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/_signalhelper.py +255 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/docstring.py +205 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/events.py +1061 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/importer.py +65 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/module.py +85 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/overrides/Gio.py +16 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/overrides/Gtk.py +57 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/overrides/__init__.py +117 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/repository.py +1121 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/.ruff.toml +2 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/README.md +10 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/__init__.py +1 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/conftest.py +487 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/helper.py +125 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/org.gnome.test.gschema.xml +38 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_async.py +298 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_atoms.py +102 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_cairo.py +329 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_callback.py +116 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_docstring.py +175 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_enum.py +176 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_error.py +169 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_events.py +660 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_everything.py +1574 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_fields.py +225 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_fundamental.py +254 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_gdbus.py +482 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_gi.py +3915 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_gio.py +650 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_glib.py +523 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_gobject.py +1054 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_gtk_template.py +830 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_gtype.py +114 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_import_machinery.py +166 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_interface.py +63 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_internal_api.py +127 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_iochannel.py +493 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_mainloop.py +79 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_object_lifecycle.py +453 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_object_marshaling.py +698 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_ossig.py +198 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_overrides_gdk.py +374 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_overrides_gdkpixbuf.py +54 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_overrides_gio.py +460 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_overrides_glib.py +778 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_overrides_gobject.py +417 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_overrides_gtk.py +3306 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_overrides_pango.py +66 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_properties.py +1598 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_pycapi.py +46 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_repository.py +445 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_resulttuple.py +87 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_signal.py +1697 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_signature.py +305 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_source.py +493 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_subprocess.py +239 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_thread.py +39 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_typeclass.py +76 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/tests/test_unknown.py +35 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/src/gi/types.py +23 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/conftest.py +63 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/.ruff.toml +2 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/README.md +10 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/__init__.py +1 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/conftest.py +411 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/helper.py +125 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/org.gnome.test.gschema.xml +38 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_async.py +295 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_atoms.py +100 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_cairo.py +327 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_callback.py +116 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_connect_object_gc.py +49 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_connect_object_signal.py +120 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_docstring.py +173 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_enum.py +171 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_error.py +169 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_events.py +657 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_everything.py +1563 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_fields.py +221 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_fundamental.py +253 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_gdbus.py +481 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_gi.py +3916 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_gio.py +641 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_glib.py +521 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_gobject.py +1051 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_gtk_template.py +830 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_gtype.py +114 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_import_machinery.py +164 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_interface.py +62 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_internal_api.py +127 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_iochannel.py +492 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_mainloop.py +79 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_object_lifecycle.py +453 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_object_marshaling.py +697 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_ossig.py +206 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_overrides_gdk.py +373 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_overrides_gdkpixbuf.py +54 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_overrides_gio.py +459 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_overrides_glib.py +778 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_overrides_gobject.py +415 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_overrides_gtk.py +3274 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_overrides_pango.py +65 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_properties.py +1598 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_props_proxy.py +155 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_pycapi.py +46 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_repository.py +433 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_resulttuple.py +87 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_signal.py +1694 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_signature.py +305 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_source.py +491 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_subprocess.py +232 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_thread.py +39 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_typeclass.py +73 -0
- ginext_core-0.8.1/packages/ginext-gi-compat/tests/pygobject/test_unknown.py +35 -0
- ginext_core-0.8.1/packages/ginext-gio/pyproject.toml +55 -0
- ginext_core-0.8.1/packages/ginext-gio/src/ginext_gio/__init__.py +0 -0
- ginext_core-0.8.1/packages/ginext-gio/src/ginext_gio/_overlays/Gio.py +805 -0
- ginext_core-0.8.1/packages/ginext-gio/src/ginext_gio/_overlays/GioUnix.py +27 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/conftest.py +82 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/__init__.py +16 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/fixtures/gsettings/gschemas.compiled +0 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/fixtures/gsettings/org.ginext.test.gschema.xml +69 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_aio_eventloop.py +308 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_app_info.py +59 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_application.py +471 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_async.py +279 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_async_callback_userdata.py +105 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_cancellable.py +336 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_dbus.py +558 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_errors.py +367 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_file.py +486 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_file_interface_compat.py +113 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_input_stream.py +30 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_list_store.py +217 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_menu.py +88 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_settings.py +875 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_simple_action.py +107 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_task.py +48 -0
- ginext_core-0.8.1/packages/ginext-gio/tests/gio/test_volume_monitor.py +28 -0
- ginext_core-0.8.1/packages/ginext-gst/pyproject.toml +51 -0
- ginext_core-0.8.1/packages/ginext-gst/src/ginext_gst/__init__.py +59 -0
- ginext_core-0.8.1/packages/ginext-gst/src/ginext_gst/_overlays/Gst.py +1304 -0
- ginext_core-0.8.1/packages/ginext-gst/src/ginext_gst/plugin.py +115 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/__init__.py +1 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/conftest.py +7 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/__init__.py +0 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/conftest.py +82 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_additional_namespaces.py +264 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_app.py +190 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_bin.py +54 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_bitmask.py +37 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_buffer.py +143 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_buffer_list.py +106 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_bus.py +121 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_caps.py +75 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_caps_features.py +71 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_double_range.py +27 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_element.py +187 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_element_factory.py +40 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_event.py +97 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_fraction.py +85 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_fraction_range.py +30 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_ghost_pad.py +27 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_init.py +25 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_int64_range.py +51 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_int_range.py +51 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_iterator.py +22 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_mini_object.py +95 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_pipeline.py +24 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_plugin.py +132 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_python_element_registration.py +103 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_query.py +87 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_request_pad.py +63 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_sample.py +84 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_structure.py +87 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_subprocess_marker.py +12 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_tag_list.py +62 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_time_args.py +34 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_value_array.py +79 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/gst/test_value_list.py +79 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugin_support.py +259 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/__init__.py +1 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/conftest.py +46 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/subprocess_runner.py +27 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/support.py +984 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_aggregator.py +525 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_audio_aggregator.py +174 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_audio_decoder.py +74 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_audio_encoder.py +76 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_audio_filter.py +193 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_audio_sink.py +166 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_audio_src.py +158 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_base_parse.py +83 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_base_sink.py +151 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_base_src.py +150 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_base_transform.py +305 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_collect_pads.py +103 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_plain_element.py +211 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_plugin_registration.py +196 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_properties_signals.py +93 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_push_src.py +313 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_request_pad.py +79 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_video_aggregator.py +130 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_video_decoder.py +83 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_video_encoder.py +79 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_video_filter.py +196 -0
- ginext_core-0.8.1/packages/ginext-gst/tests/plugins/test_video_sink.py +154 -0
- ginext_core-0.8.1/packages/ginext-gtk/pyproject.toml +64 -0
- ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/__init__.py +0 -0
- ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_defaults.py +40 -0
- ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_gtktemplate.py +565 -0
- ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/Gdk.py +217 -0
- ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/Gsk.py +38 -0
- ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/Gtk.py +50 -0
- ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/Pango.py +216 -0
- ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/css.py +100 -0
- ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/expression.py +400 -0
- ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/gtk3_actions.py +166 -0
- ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/gtk3_builder.py +77 -0
- ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/gtk3_dialogs.py +153 -0
- ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/gtk3_legacy.py +246 -0
- ginext_core-0.8.1/packages/ginext-gtk/src/ginext_gtk/_overlays/text.py +226 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/conftest.py +129 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/__init__.py +1 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/support.py +39 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_cicp_params.py +18 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_color_state.py +16 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_content_formats.py +44 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_content_formats_builder.py +17 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_memory_texture.py +25 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_popup_layout.py +29 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_rectangle.py +21 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_rgba.py +19 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gdk/test_texture_downloader.py +47 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/__init__.py +1 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/support.py +43 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/test_parse_location.py +20 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/test_path.py +31 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/test_path_builder.py +22 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/test_path_measure.py +16 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/test_rounded_rect.py +20 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/test_shadow.py +20 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/test_stroke.py +22 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gsk/test_transform.py +34 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/__init__.py +16 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/conftest.py +36 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_Gtk_Template.py +324 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_Gtk_TextBuffer.py +91 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_application.py +53 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_application_vfunc_rebind.py +51 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_atoms.py +73 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_button.py +86 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_cssprovider_backlog.py +88 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_gdk_boxed.py +73 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_gdk_event_union_backlog.py +128 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_listbox_backlog.py +170 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_template.py +134 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_textview_backlog.py +338 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_tree_path.py +82 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_unsupported_argument_args.py +65 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk3/test_widget_compat_backlog.py +140 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/__init__.py +16 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/conftest.py +47 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_adjustment.py +69 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_application.py +68 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_box.py +53 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_builder.py +39 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_button.py +56 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_content_provider.py +37 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_custom_sorter_compat.py +117 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_entry_completion.py +24 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_enum_as_string.py +32 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_expression.py +200 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_expression_sorters.py +249 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_implied_defaults.py +112 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_native_widget_props.py +64 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_scale.py +24 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_template.py +239 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_text_iter.py +77 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/gtk4/test_textbuffer_backlog.py +343 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/__init__.py +1 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/support.py +43 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_attr_list.py +58 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_color.py +20 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_context.py +50 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_coverage.py +15 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_font.py +23 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_font_description.py +38 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_font_face.py +16 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_font_family.py +15 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_font_map.py +16 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_font_metrics.py +24 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_fontset.py +22 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_glyph_item.py +13 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_item.py +12 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_language.py +27 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_layout.py +58 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_layout_iter.py +21 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_layout_line.py +21 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_matrix.py +26 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_script_iter.py +15 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/pango/test_tab_array.py +39 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/subprocess_runner.py +27 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/subprocess_support.py +37 -0
- ginext_core-0.8.1/packages/ginext-gtk/tests/test_gtk3_subprocess.py +97 -0
- ginext_core-0.8.1/packages/ginext-libsoup/pyproject.toml +52 -0
- ginext_core-0.8.1/packages/ginext-libsoup/src/ginext_libsoup/__init__.py +2 -0
- ginext_core-0.8.1/packages/ginext-libsoup/src/ginext_libsoup/_overlays/Soup.py +718 -0
- ginext_core-0.8.1/packages/ginext-libsoup/src/ginext_libsoup/_overlays/__init__.py +1 -0
- ginext_core-0.8.1/packages/ginext-libsoup/tests/conftest.py +33 -0
- ginext_core-0.8.1/packages/ginext-libsoup/tests/soup/test_async_client.py +205 -0
- ginext_core-0.8.1/packages/ginext-stubgen/pyproject.toml +30 -0
- ginext_core-0.8.1/packages/ginext-stubgen/src/ginext_stubgen/__init__.py +2731 -0
- ginext_core-0.8.1/packages/ginext-stubgen/src/ginext_stubgen/__main__.py +277 -0
- ginext_core-0.8.1/packages/ginext-stubgen/src/ginext_stubgen/docgen.py +733 -0
- ginext_core-0.8.1/packages/ginext-stubgen/src/ginext_stubgen/native_mode_overlays.toml +52 -0
- ginext_core-0.8.1/packages/ginext-stubgen/src/ginext_stubgen/native_overlays.toml +328 -0
- ginext_core-0.8.1/packages/ginext-stubgen/src/ginext_stubgen/overlay_harvest.py +380 -0
- ginext_core-0.8.1/packages/ginext-stubgen/tests/test_stubgen.py +470 -0
- ginext_core-0.8.1/packages/ginext-stubs/backend.py +66 -0
- ginext_core-0.8.1/packages/ginext-stubs/ginext-stubs/py.typed +0 -0
- ginext_core-0.8.1/packages/ginext-stubs/pyproject.toml +43 -0
- ginext_core-0.8.1/packages/ginext-stubs/uv.lock +8 -0
- ginext_core-0.8.1/packages/typelib/README.md +44 -0
- ginext_core-0.8.1/packages/typelib/annotation.c +874 -0
- ginext_core-0.8.1/packages/typelib/annotation.h +320 -0
- ginext_core-0.8.1/packages/typelib/bench.c +338 -0
- ginext_core-0.8.1/packages/typelib/bench.h +386 -0
- ginext_core-0.8.1/packages/typelib/drawable.c +67 -0
- ginext_core-0.8.1/packages/typelib/drawable.h +48 -0
- ginext_core-0.8.1/packages/typelib/foo.c +944 -0
- ginext_core-0.8.1/packages/typelib/foo.h +572 -0
- ginext_core-0.8.1/packages/typelib/generate_stubs.py +64 -0
- ginext_core-0.8.1/packages/typelib/gimarshallingtests.c +10336 -0
- ginext_core-0.8.1/packages/typelib/gimarshallingtests.h +2875 -0
- ginext_core-0.8.1/packages/typelib/gimarshallingtestsextra.c +194 -0
- ginext_core-0.8.1/packages/typelib/gimarshallingtestsextra.h +70 -0
- ginext_core-0.8.1/packages/typelib/gitestmacros.h +10 -0
- ginext_core-0.8.1/packages/typelib/meson.build +180 -0
- ginext_core-0.8.1/packages/typelib/regress-unix.c +40 -0
- ginext_core-0.8.1/packages/typelib/regress-unix.h +32 -0
- ginext_core-0.8.1/packages/typelib/regress.c +5301 -0
- ginext_core-0.8.1/packages/typelib/regress.h +1789 -0
- ginext_core-0.8.1/packages/typelib/regressextra.c +602 -0
- ginext_core-0.8.1/packages/typelib/regressextra.h +128 -0
- ginext_core-0.8.1/packages/typelib/utility.c +68 -0
- ginext_core-0.8.1/packages/typelib/utility.h +109 -0
- ginext_core-0.8.1/pyproject.toml +481 -0
- ginext_core-0.8.1/ruff-license.toml +29 -0
- ginext_core-0.8.1/scripts/bump_version.py +97 -0
- ginext_core-0.8.1/scripts/check_gir_test_coverage.py +85 -0
- ginext_core-0.8.1/scripts/check_noqa.py +24 -0
- ginext_core-0.8.1/scripts/generate_compiled_overlays.py +833 -0
- ginext_core-0.8.1/scripts/inventory_probe.py +175 -0
- ginext_core-0.8.1/scripts/inventory_signatures.py +449 -0
- ginext_core-0.8.1/scripts/inventory_snapshot_arg_args.py +115 -0
- ginext_core-0.8.1/scripts/inventory_sweep.py +429 -0
- ginext_core-0.8.1/scripts/make_override.py +19 -0
- ginext_core-0.8.1/src/ginext/GIRepository.pyi +46 -0
- ginext_core-0.8.1/src/ginext/GObject.py +38 -0
- ginext_core-0.8.1/src/ginext/GObject.pyi +109 -0
- ginext_core-0.8.1/src/ginext/__init__.py +152 -0
- ginext_core-0.8.1/src/ginext/__init__.pyi +47 -0
- ginext_core-0.8.1/src/ginext/_aioloop.py +304 -0
- ginext_core-0.8.1/src/ginext/_overlays/GIRepository.py +58 -0
- ginext_core-0.8.1/src/ginext/_overlays/GLib.py +969 -0
- ginext_core-0.8.1/src/ginext/_overlays/GObject.py +506 -0
- ginext_core-0.8.1/src/ginext/_overlays/__init__.py +20 -0
- ginext_core-0.8.1/src/ginext/abi.py +73 -0
- ginext_core-0.8.1/src/ginext/aio.py +354 -0
- ginext_core-0.8.1/src/ginext/cairo.py +31 -0
- ginext_core-0.8.1/src/ginext/classbuild.py +626 -0
- ginext_core-0.8.1/src/ginext/defaults.py +327 -0
- ginext_core-0.8.1/src/ginext/enum.py +212 -0
- ginext_core-0.8.1/src/ginext/errors.py +202 -0
- ginext_core-0.8.1/src/ginext/features.py +171 -0
- ginext_core-0.8.1/src/ginext/fundamental.py +73 -0
- ginext_core-0.8.1/src/ginext/gobject/__init__.py +21 -0
- ginext_core-0.8.1/src/ginext/gobject/gobjectclass.py +666 -0
- ginext_core-0.8.1/src/ginext/gobject/gtype.py +271 -0
- ginext_core-0.8.1/src/ginext/gobject/metaclass.py +109 -0
- ginext_core-0.8.1/src/ginext/gobject/properties.py +357 -0
- ginext_core-0.8.1/src/ginext/gobject/resolve.py +54 -0
- ginext_core-0.8.1/src/ginext/gobject/subclass.py +222 -0
- ginext_core-0.8.1/src/ginext/method.py +249 -0
- ginext_core-0.8.1/src/ginext/mypy_plugin.py +52 -0
- ginext_core-0.8.1/src/ginext/namespace.py +189 -0
- ginext_core-0.8.1/src/ginext/overlay/__init__.py +83 -0
- ginext_core-0.8.1/src/ginext/overlay/bootstrap.py +199 -0
- ginext_core-0.8.1/src/ginext/overlay/callbacks.py +149 -0
- ginext_core-0.8.1/src/ginext/overlay/install.py +335 -0
- ginext_core-0.8.1/src/ginext/overlay/registrar.py +465 -0
- ginext_core-0.8.1/src/ginext/overlay/state.py +71 -0
- ginext_core-0.8.1/src/ginext/overlay/types.py +97 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/ArgInfo.c +60 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/BaseInfo.c +104 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/BaseInfo.h +41 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/CallableInfo.c +74 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/CallableInfo.h +28 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/CallbackInfo.c +23 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/ConstantInfo.c +71 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/ConstantInfo.h +28 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/EnumInfo.c +61 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/EnumInfo.h +25 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/FieldInfo.c +19 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/FlagsInfo.c +19 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/FunctionInfo.c +23 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/Info.c +189 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/Info.h +206 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/InterfaceInfo.c +36 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/ObjectInfo.c +38 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/ObjectInfo.h +27 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/PropertyInfo.c +19 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/RegisteredTypeInfo.c +27 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/SignalInfo.c +19 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/StructInfo.c +36 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/StructInfo.h +32 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/TypeInfo.c +62 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/UnionInfo.c +32 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/UnresolvedInfo.c +23 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/VFuncInfo.c +19 -0
- ginext_core-0.8.1/src/ginext/private/GIRepository/ValueInfo.c +21 -0
- ginext_core-0.8.1/src/ginext/private/GLib/Array.c +432 -0
- ginext_core-0.8.1/src/ginext/private/GLib/Array.h +33 -0
- ginext_core-0.8.1/src/ginext/private/GLib/DateTime.c +187 -0
- ginext_core-0.8.1/src/ginext/private/GLib/DateTime.h +38 -0
- ginext_core-0.8.1/src/ginext/private/GLib/Error.h +63 -0
- ginext_core-0.8.1/src/ginext/private/GLib/HashTable.c +526 -0
- ginext_core-0.8.1/src/ginext/private/GLib/HashTable.h +33 -0
- ginext_core-0.8.1/src/ginext/private/GLib/List.c +247 -0
- ginext_core-0.8.1/src/ginext/private/GLib/List.h +37 -0
- ginext_core-0.8.1/src/ginext/private/GLib/Regex.c +172 -0
- ginext_core-0.8.1/src/ginext/private/GLib/Regex.h +31 -0
- ginext_core-0.8.1/src/ginext/private/GLib/Variant.c +116 -0
- ginext_core-0.8.1/src/ginext/private/GLib/Variant.h +34 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Boxed.h +62 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Closure-record.c +602 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Closure-record.h +94 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Closure-signal.c +425 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Closure.h +86 -0
- ginext_core-0.8.1/src/ginext/private/GObject/DeclaredProperty.c +283 -0
- ginext_core-0.8.1/src/ginext/private/GObject/DeclaredProperty.h +15 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Fundamental.c +294 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Fundamental.h +40 -0
- ginext_core-0.8.1/src/ginext/private/GObject/GIMeta.c +648 -0
- ginext_core-0.8.1/src/ginext/private/GObject/GIMeta.h +63 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Object-class.c +279 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Object-class.h +24 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Object-construct.c +184 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Object-info.c +1464 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Object-info.h +99 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Object-register.c +229 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Object-register.h +27 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Object-unref.c +96 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Object-vfunc-wrapper.c +303 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Object-vfunc-wrapper.h +20 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Object-vfunc.c +601 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Object-vfunc.h +18 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Object-wrapper.c +191 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Object.h +45 -0
- ginext_core-0.8.1/src/ginext/private/GObject/ParamSpec-make.c +526 -0
- ginext_core-0.8.1/src/ginext/private/GObject/ParamSpec-make.h +30 -0
- ginext_core-0.8.1/src/ginext/private/GObject/ParamSpec.h +27 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Type-name.c +45 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Type-name.h +31 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Type.c +34 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Value.c +319 -0
- ginext_core-0.8.1/src/ginext/private/GObject/Value.h +22 -0
- ginext_core-0.8.1/src/ginext/private/__init__.py +207 -0
- ginext_core-0.8.1/src/ginext/private/__init__.pyi +259 -0
- ginext_core-0.8.1/src/ginext/private/_gobject.pyi +115 -0
- ginext_core-0.8.1/src/ginext/private/cairo/foreign-internal.h +310 -0
- ginext_core-0.8.1/src/ginext/private/cairo/foreign.c +255 -0
- ginext_core-0.8.1/src/ginext/private/cairo/foreign.h +30 -0
- ginext_core-0.8.1/src/ginext/private/callable_descriptor.c +2786 -0
- ginext_core-0.8.1/src/ginext/private/common.h +87 -0
- ginext_core-0.8.1/src/ginext/private/gimeta-helpers.h +8 -0
- ginext_core-0.8.1/src/ginext/private/ginextmodule.c +477 -0
- ginext_core-0.8.1/src/ginext/private/invoke/arg-cleanup.c +113 -0
- ginext_core-0.8.1/src/ginext/private/invoke/arg-cleanup.h +58 -0
- ginext_core-0.8.1/src/ginext/private/invoke/bind.c +1092 -0
- ginext_core-0.8.1/src/ginext/private/invoke/bind.h +39 -0
- ginext_core-0.8.1/src/ginext/private/invoke/ffi/invoke.c +455 -0
- ginext_core-0.8.1/src/ginext/private/invoke/ffi/invoke.h +27 -0
- ginext_core-0.8.1/src/ginext/private/invoke/frame.c +53 -0
- ginext_core-0.8.1/src/ginext/private/invoke/frame.h +77 -0
- ginext_core-0.8.1/src/ginext/private/invoke/jit/invoke.c +278 -0
- ginext_core-0.8.1/src/ginext/private/invoke/jit/invoke.h +54 -0
- ginext_core-0.8.1/src/ginext/private/invoke/jit/plan.c +854 -0
- ginext_core-0.8.1/src/ginext/private/invoke/jit/plan.h +148 -0
- ginext_core-0.8.1/src/ginext/private/invoke/plan.c +624 -0
- ginext_core-0.8.1/src/ginext/private/invoke/plan.h +198 -0
- ginext_core-0.8.1/src/ginext/private/invoke/return.c +618 -0
- ginext_core-0.8.1/src/ginext/private/invoke/return.h +45 -0
- ginext_core-0.8.1/src/ginext/private/jit/jit.h +51 -0
- ginext_core-0.8.1/src/ginext/private/marshal/c-array.c +975 -0
- ginext_core-0.8.1/src/ginext/private/marshal/c-array.h +58 -0
- ginext_core-0.8.1/src/ginext/private/marshal/container-element.c +396 -0
- ginext_core-0.8.1/src/ginext/private/marshal/container-element.h +73 -0
- ginext_core-0.8.1/src/ginext/private/marshal/conversion.c +130 -0
- ginext_core-0.8.1/src/ginext/private/marshal/conversion.h +146 -0
- ginext_core-0.8.1/src/ginext/private/marshal/enum.c +179 -0
- ginext_core-0.8.1/src/ginext/private/marshal/enum.h +44 -0
- ginext_core-0.8.1/src/ginext/private/marshal/gvalue.c +1279 -0
- ginext_core-0.8.1/src/ginext/private/marshal/gvalue.h +21 -0
- ginext_core-0.8.1/src/ginext/private/marshal/marshal.c +1667 -0
- ginext_core-0.8.1/src/ginext/private/marshal/marshal.h +140 -0
- ginext_core-0.8.1/src/ginext/private/marshal/pygi-value.c +724 -0
- ginext_core-0.8.1/src/ginext/private/marshal/pygi-value.h +8 -0
- ginext_core-0.8.1/src/ginext/private/marshal/scalar-tags.h +123 -0
- ginext_core-0.8.1/src/ginext/private/marshal/scalar.c +482 -0
- ginext_core-0.8.1/src/ginext/private/marshal/scalar.h +330 -0
- ginext_core-0.8.1/src/ginext/private/marshal/string.c +219 -0
- ginext_core-0.8.1/src/ginext/private/marshal/string.h +36 -0
- ginext_core-0.8.1/src/ginext/private/namespace.c +1100 -0
- ginext_core-0.8.1/src/ginext/private/runtime/callable.c +42 -0
- ginext_core-0.8.1/src/ginext/private/runtime/callable.h +74 -0
- ginext_core-0.8.1/src/ginext/private/runtime/class-registry.h +27 -0
- ginext_core-0.8.1/src/ginext/private/runtime/module_funcs.h +36 -0
- ginext_core-0.8.1/src/ginext/private/runtime/shims.c +4640 -0
- ginext_core-0.8.1/src/ginext/private/runtime/signal-api.c +858 -0
- ginext_core-0.8.1/src/ginext/private/runtime/type-info.h +242 -0
- ginext_core-0.8.1/src/ginext/private/win32/dlfcn.c +71 -0
- ginext_core-0.8.1/src/ginext/private/win32/dlfcn.h +34 -0
- ginext_core-0.8.1/src/ginext/private/win32/win32-compat.h +6 -0
- ginext_core-0.8.1/src/ginext/record.py +382 -0
- ginext_core-0.8.1/src/ginext/runtime.py +70 -0
- ginext_core-0.8.1/src/ginext/signal/__init__.py +24 -0
- ginext_core-0.8.1/src/ginext/signal/adapt.py +265 -0
- ginext_core-0.8.1/src/ginext/signal/bound.py +273 -0
- ginext_core-0.8.1/src/ginext/signal/connection.py +185 -0
- ginext_core-0.8.1/src/ginext/signal/descriptor.py +160 -0
- ginext_core-0.8.1/src/ginext/signal/gtype.py +58 -0
- ginext_core-0.8.1/src/ginext/signal/scoped.py +227 -0
- ginext_core-0.8.1/src/ginext/signature.py +269 -0
- ginext_core-0.8.1/src/ginext/tests/README.md +96 -0
- ginext_core-0.8.1/src/ginext/tests/TODO.md +214 -0
- ginext_core-0.8.1/src/ginext/tests/__init__.py +16 -0
- ginext_core-0.8.1/src/ginext/tests/boxed/__init__.py +16 -0
- ginext_core-0.8.1/src/ginext/tests/boxed/fixtures/hello.txt +1 -0
- ginext_core-0.8.1/src/ginext/tests/boxed/fixtures/test.gresource +0 -0
- ginext_core-0.8.1/src/ginext/tests/boxed/fixtures/test.gresource.xml +6 -0
- ginext_core-0.8.1/src/ginext/tests/boxed/test_boxed.py +302 -0
- ginext_core-0.8.1/src/ginext/tests/boxed/test_boxed_field_array.py +134 -0
- ginext_core-0.8.1/src/ginext/tests/boxed/test_boxed_resource.py +111 -0
- ginext_core-0.8.1/src/ginext/tests/cairo/__init__.py +16 -0
- ginext_core-0.8.1/src/ginext/tests/cairo/test_foreign_backlog.py +90 -0
- ginext_core-0.8.1/src/ginext/tests/classbuild/__init__.py +16 -0
- ginext_core-0.8.1/src/ginext/tests/classbuild/test_base_via_namespace.py +76 -0
- ginext_core-0.8.1/src/ginext/tests/classbuild/test_class_caching.py +55 -0
- ginext_core-0.8.1/src/ginext/tests/classbuild/test_class_creation.py +115 -0
- ginext_core-0.8.1/src/ginext/tests/classbuild/test_managed_dict_store_attr.py +92 -0
- ginext_core-0.8.1/src/ginext/tests/classbuild/test_parent_inheritance.py +94 -0
- ginext_core-0.8.1/src/ginext/tests/classbuild/test_subclass_gtype_compat.py +93 -0
- ginext_core-0.8.1/src/ginext/tests/classbuild/test_subclass_with_gobject_class_attr.py +77 -0
- ginext_core-0.8.1/src/ginext/tests/closure/__init__.py +17 -0
- ginext_core-0.8.1/src/ginext/tests/closure/test_gclosure_argument.py +83 -0
- ginext_core-0.8.1/src/ginext/tests/closure/test_ownership_invariants.py +491 -0
- ginext_core-0.8.1/src/ginext/tests/closure/test_smoke.py +153 -0
- ginext_core-0.8.1/src/ginext/tests/conftest.py +626 -0
- ginext_core-0.8.1/src/ginext/tests/constructor/__init__.py +16 -0
- ginext_core-0.8.1/src/ginext/tests/constructor/test_abstract_type_rejection.py +46 -0
- ginext_core-0.8.1/src/ginext/tests/constructor/test_kwargs_construction.py +62 -0
- ginext_core-0.8.1/src/ginext/tests/defaults/__init__.py +16 -0
- ginext_core-0.8.1/src/ginext/tests/defaults/test_app_selection.py +125 -0
- ginext_core-0.8.1/src/ginext/tests/defaults/test_env_versions_override.py +125 -0
- ginext_core-0.8.1/src/ginext/tests/defaults/test_gidefaults_discovery.py +106 -0
- ginext_core-0.8.1/src/ginext/tests/defaults/test_highest_installed_fallback.py +76 -0
- ginext_core-0.8.1/src/ginext/tests/defaults/test_resolution_order.py +141 -0
- ginext_core-0.8.1/src/ginext/tests/defaults/test_suffixed_imports.py +75 -0
- ginext_core-0.8.1/src/ginext/tests/enum/__init__.py +17 -0
- ginext_core-0.8.1/src/ginext/tests/enum/test_enum_methods.py +74 -0
- ginext_core-0.8.1/src/ginext/tests/enum/test_python_defined_enum_flags.py +127 -0
- ginext_core-0.8.1/src/ginext/tests/features/__init__.py +18 -0
- ginext_core-0.8.1/src/ginext/tests/features/test_feature_flags.py +253 -0
- ginext_core-0.8.1/src/ginext/tests/free_threading/__init__.py +16 -0
- ginext_core-0.8.1/src/ginext/tests/free_threading/support.py +52 -0
- ginext_core-0.8.1/src/ginext/tests/free_threading/test_c_caches.py +69 -0
- ginext_core-0.8.1/src/ginext/tests/free_threading/test_import_state.py +39 -0
- ginext_core-0.8.1/src/ginext/tests/free_threading/test_python_caches.py +257 -0
- ginext_core-0.8.1/src/ginext/tests/free_threading/test_signal_lifecycle.py +51 -0
- ginext_core-0.8.1/src/ginext/tests/free_threading/test_wrapper_identity.py +50 -0
- ginext_core-0.8.1/src/ginext/tests/gi_test_utils.py +77 -0
- ginext_core-0.8.1/src/ginext/tests/glib/__init__.py +18 -0
- ginext_core-0.8.1/src/ginext/tests/glib/test_bytes.py +76 -0
- ginext_core-0.8.1/src/ginext/tests/glib/test_constants.py +79 -0
- ginext_core-0.8.1/src/ginext/tests/glib/test_core.py +155 -0
- ginext_core-0.8.1/src/ginext/tests/glib/test_datetime.py +161 -0
- ginext_core-0.8.1/src/ginext/tests/glib/test_error.py +131 -0
- ginext_core-0.8.1/src/ginext/tests/glib/test_log_set_writer_func.py +105 -0
- ginext_core-0.8.1/src/ginext/tests/glib/test_regex.py +114 -0
- ginext_core-0.8.1/src/ginext/tests/glib/test_unichar.py +64 -0
- ginext_core-0.8.1/src/ginext/tests/glib/test_variant_compat.py +82 -0
- ginext_core-0.8.1/src/ginext/tests/gobject/__init__.py +16 -0
- ginext_core-0.8.1/src/ginext/tests/gobject/test_GObject_Object.py +210 -0
- ginext_core-0.8.1/src/ginext/tests/gobject/test_GObject_Object_vfunc.py +343 -0
- ginext_core-0.8.1/src/ginext/tests/gobject/test_GObject_Type.py +162 -0
- ginext_core-0.8.1/src/ginext/tests/gobject/test_gtype_constants.py +51 -0
- ginext_core-0.8.1/src/ginext/tests/gobject/test_gtype_marshal.py +105 -0
- ginext_core-0.8.1/src/ginext/tests/gobject/test_inheritance.py +254 -0
- ginext_core-0.8.1/src/ginext/tests/gobject/test_object_api.py +115 -0
- ginext_core-0.8.1/src/ginext/tests/gobject/test_object_lifecycle.py +611 -0
- ginext_core-0.8.1/src/ginext/tests/gobject/test_paramspec_introspection_backlog.py +449 -0
- ginext_core-0.8.1/src/ginext/tests/gobject/test_registration.py +109 -0
- ginext_core-0.8.1/src/ginext/tests/gobject/test_type_functions.py +150 -0
- ginext_core-0.8.1/src/ginext/tests/integration/__init__.py +16 -0
- ginext_core-0.8.1/src/ginext/tests/integration/test_caches_layer_wide.py +71 -0
- ginext_core-0.8.1/src/ginext/tests/integration/test_first_vertical_slice.py +84 -0
- ginext_core-0.8.1/src/ginext/tests/integration/test_girepository_overlay.py +125 -0
- ginext_core-0.8.1/src/ginext/tests/integration/test_runtime_smoke.py +65 -0
- ginext_core-0.8.1/src/ginext/tests/integration/test_web_browser_extensions.py +42 -0
- ginext_core-0.8.1/src/ginext/tests/inventory/__init__.py +18 -0
- ginext_core-0.8.1/src/ginext/tests/inventory/_unsupported_argument_args.json +58 -0
- ginext_core-0.8.1/src/ginext/tests/inventory/test_core_namespace_inventory.py +134 -0
- ginext_core-0.8.1/src/ginext/tests/inventory/test_unsupported_argument_args.py +193 -0
- ginext_core-0.8.1/src/ginext/tests/invoke/__init__.py +16 -0
- ginext_core-0.8.1/src/ginext/tests/invoke/test_argchecks_gimarshalling.py +238 -0
- ginext_core-0.8.1/src/ginext/tests/invoke/test_descriptor_build_rejection.py +44 -0
- ginext_core-0.8.1/src/ginext/tests/invoke/test_enum_flags.py +44 -0
- ginext_core-0.8.1/src/ginext/tests/invoke/test_filename_string.py +57 -0
- ginext_core-0.8.1/src/ginext/tests/invoke/test_float.py +52 -0
- ginext_core-0.8.1/src/ginext/tests/invoke/test_gee_callback_triples.py +63 -0
- ginext_core-0.8.1/src/ginext/tests/invoke/test_int.py +74 -0
- ginext_core-0.8.1/src/ginext/tests/invoke/test_keyword_args.py +87 -0
- ginext_core-0.8.1/src/ginext/tests/invoke/test_nullable_args.py +41 -0
- ginext_core-0.8.1/src/ginext/tests/invoke/test_pyargs_oracle.py +63 -0
- ginext_core-0.8.1/src/ginext/tests/invoke/test_return_type_shapes.py +90 -0
- ginext_core-0.8.1/src/ginext/tests/invoke/test_strv_array.py +37 -0
- ginext_core-0.8.1/src/ginext/tests/invoke/test_utf8_string.py +78 -0
- ginext_core-0.8.1/src/ginext/tests/method/__init__.py +16 -0
- ginext_core-0.8.1/src/ginext/tests/method/test_static_method.py +119 -0
- ginext_core-0.8.1/src/ginext/tests/namespace/__init__.py +16 -0
- ginext_core-0.8.1/src/ginext/tests/namespace/test_attribute_gateway.py +61 -0
- ginext_core-0.8.1/src/ginext/tests/namespace/test_cairo_alias.py +38 -0
- ginext_core-0.8.1/src/ginext/tests/namespace/test_first_access.py +183 -0
- ginext_core-0.8.1/src/ginext/tests/namespace/test_lazy_namespace_jit.py +130 -0
- ginext_core-0.8.1/src/ginext/tests/namespace/test_namespace_attrs.py +67 -0
- ginext_core-0.8.1/src/ginext/tests/namespace/test_namespace_caching.py +62 -0
- ginext_core-0.8.1/src/ginext/tests/namespace/test_overlay_bootstrap.py +70 -0
- ginext_core-0.8.1/src/ginext/tests/namespace/test_public_surface.py +117 -0
- ginext_core-0.8.1/src/ginext/tests/namespace/test_unknown_member.py +56 -0
- ginext_core-0.8.1/src/ginext/tests/overlay/__init__.py +17 -0
- ginext_core-0.8.1/src/ginext/tests/overlay/test_overlay_api.py +233 -0
- ginext_core-0.8.1/src/ginext/tests/plan_invariant/__init__.py +16 -0
- ginext_core-0.8.1/src/ginext/tests/plan_invariant/test_no_gi_on_hot_path.py +94 -0
- ginext_core-0.8.1/src/ginext/tests/plan_invariant/test_plan_caching.py +64 -0
- ginext_core-0.8.1/src/ginext/tests/plan_invariant/test_stats_api.py +70 -0
- ginext_core-0.8.1/src/ginext/tests/property/__init__.py +16 -0
- ginext_core-0.8.1/src/ginext/tests/property/test_decorator_forms_backlog.py +335 -0
- ginext_core-0.8.1/src/ginext/tests/property/test_errors.py +41 -0
- ginext_core-0.8.1/src/ginext/tests/property/test_flags.py +90 -0
- ginext_core-0.8.1/src/ginext/tests/property/test_instance_io.py +336 -0
- ginext_core-0.8.1/src/ginext/tests/property/test_lifetime.py +82 -0
- ginext_core-0.8.1/src/ginext/tests/property/test_metadata.py +219 -0
- ginext_core-0.8.1/src/ginext/tests/property/test_native_property_access.py +143 -0
- ginext_core-0.8.1/src/ginext/tests/property/test_override.py +133 -0
- ginext_core-0.8.1/src/ginext/tests/property/test_pspec_bounds.py +81 -0
- ginext_core-0.8.1/src/ginext/tests/property/test_pspec_defaults.py +264 -0
- ginext_core-0.8.1/src/ginext/tests/property/test_signals.py +98 -0
- ginext_core-0.8.1/src/ginext/tests/property/test_value_types.py +151 -0
- ginext_core-0.8.1/src/ginext/tests/signal/__init__.py +17 -0
- ginext_core-0.8.1/src/ginext/tests/signal/test_GObject_Object_gsignals.py +80 -0
- ginext_core-0.8.1/src/ginext/tests/signal/test_GObject_Object_signal.py +156 -0
- ginext_core-0.8.1/src/ginext/tests/signal/test_arg_adapter.py +245 -0
- ginext_core-0.8.1/src/ginext/tests/signal/test_attribute_form.py +144 -0
- ginext_core-0.8.1/src/ginext/tests/signal/test_bound_method_weakening.py +353 -0
- ginext_core-0.8.1/src/ginext/tests/signal/test_constructor_kwargs.py +155 -0
- ginext_core-0.8.1/src/ginext/tests/signal/test_emit.py +61 -0
- ginext_core-0.8.1/src/ginext/tests/signal/test_notify.py +154 -0
- ginext_core-0.8.1/src/ginext/tests/signal/test_once.py +84 -0
- ginext_core-0.8.1/src/ginext/tests/signal/test_owner_policy.py +219 -0
- ginext_core-0.8.1/src/ginext/tests/signal/test_python_defined_signals.py +217 -0
- ginext_core-0.8.1/src/ginext/tests/signal/test_signal_connection.py +104 -0
- ginext_core-0.8.1/src/ginext/tests/struct/__init__.py +16 -0
- ginext_core-0.8.1/src/ginext/tests/struct/test_structs.py +174 -0
- ginext_core-0.8.1/src/ginext/tests/test_signature.py +356 -0
- ginext_core-0.8.1/src/ginext/tests/typelib/__init__.py +16 -0
- ginext_core-0.8.1/src/ginext/tests/typelib/conftest.py +77 -0
- ginext_core-0.8.1/src/ginext/tests/typelib/support.py +69 -0
- ginext_core-0.8.1/src/ginext/tests/typelib/test_fundamental.py +272 -0
- ginext_core-0.8.1/src/ginext/tests/typelib/test_gi_marshalling_tests.py +2400 -0
- ginext_core-0.8.1/src/ginext/tests/typelib/test_keyword_args.py +83 -0
- ginext_core-0.8.1/src/ginext/tests/typelib/test_object_inout.py +78 -0
- ginext_core-0.8.1/src/ginext/tests/typelib/test_regress.py +1210 -0
- ginext_core-0.8.1/src/ginext/tests/typelib/test_regress_unix.py +58 -0
- ginext_core-0.8.1/src/ginext/tests/typelib/test_utility.py +90 -0
- ginext_core-0.8.1/src/ginext/tests/union/__init__.py +16 -0
- ginext_core-0.8.1/src/ginext/tests/union/test_unions.py +148 -0
- ginext_core-0.8.1/src/ginext/tests/wayland_fixture.py +221 -0
- ginext_core-0.8.1/src/meson.build +215 -0
- ginext_core-0.8.1/src/testhelper.py +70 -0
- ginext_core-0.8.1/tools/gdb/pytest-xdist.gdb +63 -0
- ginext_core-0.8.1/tools/meson/copy_into.py +23 -0
- ginext_core-0.8.1/tools/win/BOOTSTRAP.md +104 -0
- ginext_core-0.8.1/tools/win/build-env.ps1 +78 -0
- ginext_core-0.8.1/tools/win/build.ps1 +124 -0
- ginext_core-0.8.1/tools/win/run_tests.py +99 -0
- ginext_core-0.8.1/tools/win/setup.ps1 +60 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/README.md +23 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/glib-gir/libintl.patch +16 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/glib-gir/portfile.cmake +140 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/glib-gir/use-libiconv-on-windows.patch +28 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/glib-gir/vcpkg.json +28 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/gobject-introspection/0001-g-ir-tool-template.in.patch +60 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/gobject-introspection/gir-scanner-runtime.diff +12 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/gobject-introspection/portfile.cmake +129 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/gobject-introspection/setuptools-compat.patch +14 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/gobject-introspection/vcpkg-port-config.cmake +69 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/gobject-introspection/vcpkg.json +37 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/gstreamer/duplicate-unused.diff +12 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/gstreamer/fix-bz2-windows-debug-dependency.patch +26 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/gstreamer/fix-clang-cl.patch +166 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/gstreamer/fix-multiple-def.patch +48 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/gstreamer/portfile.cmake +478 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/gstreamer/vcpkg.json +901 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/gstreamer/x264-api-imports.diff +12 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/gtk/0001-build.patch +13 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/gtk/portfile.cmake +106 -0
- ginext_core-0.8.1/tools/win/vcpkg-overlays/gtk/vcpkg.json +91 -0
- ginext_core-0.8.1/tools/win/vcpkg-triplets/arm64-windows.cmake +14 -0
- ginext_core-0.8.1/tools/win/vcpkg-triplets/x64-windows.cmake +14 -0
- ginext_core-0.8.1/uv.lock +1230 -0
- ginext_core-0.8.1/vcpkg-configuration.json +14 -0
- 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
|