Metadata-Version: 2.4
Name: ginext-core
Version: 0.8.1
Summary: Fast, lazy, JIT-compiled GObject-introspection bindings for free-threaded Python
Keywords: gobject,introspection,gtk,glib,gnome,free-threading
Author-Email: Johan Dahlin <jdahlin@gmail.com>
License-Expression: LGPL-2.1-or-later
License-File: LICENSE
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Free Threading :: 2 - Beta
Classifier: Programming Language :: C
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Operating System :: POSIX :: Linux
Project-URL: Homepage, https://github.com/jdahlin/ginext
Project-URL: Repository, https://github.com/jdahlin/ginext
Project-URL: Documentation, https://jdahlin.github.io/ginext/
Project-URL: Issues, https://github.com/jdahlin/ginext/issues
Requires-Python: >=3.14
Provides-Extra: gio
Requires-Dist: ginext-gio>=0.8.1; extra == "gio"
Provides-Extra: gtk
Requires-Dist: ginext-gtk>=0.8.1; extra == "gtk"
Provides-Extra: gst
Requires-Dist: ginext-gst>=0.8.1; extra == "gst"
Provides-Extra: libsoup
Requires-Dist: ginext-libsoup>=0.8.1; extra == "libsoup"
Provides-Extra: compat
Requires-Dist: ginext-gi-compat>=0.8.1; extra == "compat"
Provides-Extra: stubs
Requires-Dist: ginext-stubs>=0.8.1; extra == "stubs"
Provides-Extra: all
Requires-Dist: ginext-gio>=0.8.1; extra == "all"
Requires-Dist: ginext-gtk>=0.8.1; extra == "all"
Requires-Dist: ginext-gst>=0.8.1; extra == "all"
Requires-Dist: ginext-libsoup>=0.8.1; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest>=8; extra == "dev"
Requires-Dist: pytest-xdist>=3; extra == "dev"
Provides-Extra: apps
Requires-Dist: numpy>=2; extra == "apps"
Requires-Dist: pycairo>=1.27; extra == "apps"
Provides-Extra: bench
Requires-Dist: PyGObject>=3.50; extra == "bench"
Provides-Extra: docs
Requires-Dist: mkdocs>=1.6; extra == "docs"
Requires-Dist: mkdocs-material>=9.5; extra == "docs"
Requires-Dist: pymdown-extensions>=10; extra == "docs"
Description-Content-Type: text/markdown

# ginext

Fast, lazy, JIT-compiled [GObject-introspection](https://gi.readthedocs.io/)
bindings for free-threaded Python.

ginext lets you call GObject-based libraries — GLib, GIO, GTK, GStreamer,
libsoup and more — directly from Python, reading their introspection typelibs at
runtime and JIT-compiling the call paths. It is built for the free-threaded
(no-GIL) CPython 3.14+ runtime.

```python
from ginext import Gtk

app = Gtk.Application(application_id="org.example.Hello")
```

## Install

```sh
pip install gi          # core (imports as `ginext`)
pip install gi[gtk]     # + GTK/Gdk/Pango/Gsk overlay
pip install gi[gio]     # + GIO overlay
pip install gi[gst]     # + GStreamer overlay
pip install gi[all]     # all overlays
```

`gi` is a small meta-package (it pulls in `ginext-core` and, via extras, the
overlays); the code imports as **`ginext`** (`from ginext import Gtk`). You can
also install the real distributions directly — `pip install ginext-core`,
`ginext-gtk`, etc. The `gi` distribution ships no `gi` module, so it does not
conflict with PyGObject.

The core links against GLib / GObject / girepository-2.0 (≥ 2.80). On Linux these
come from your distribution; the overlay packages add Pythonic namespace overlays
and ship as pure-Python wheels. Cross-platform wheels that bundle the GTK /
GStreamer runtime are on the roadmap.

## Packages

| Package            | Contents                                   |
| ------------------ | ------------------------------------------ |
| `ginext-core`      | Native core + GLib/GObject/GIRepository    |
| `ginext-gio`       | GIO / GioUnix overlay                       |
| `ginext-gtk`       | GTK / Gdk / Pango / Gsk overlay            |
| `ginext-gst`       | GStreamer overlay                          |
| `ginext-libsoup`   | libsoup overlay                            |
| `ginext-gi-compat` | PyGObject `gi.repository` compatibility    |

## License

LGPL-2.1-or-later. See [LICENSE](LICENSE).
