Metadata-Version: 2.5
Name: enaml-extensions
Version: 0.5.0
Summary: Extra widgets and extensions for building UIs with Enaml
Project-URL: Homepage, https://github.com/gabrielcnr/enaml-extensions
Project-URL: Source, https://github.com/gabrielcnr/enaml-extensions
Project-URL: Issues, https://github.com/gabrielcnr/enaml-extensions/issues
Project-URL: Changelog, https://github.com/gabrielcnr/enaml-extensions/releases
Author-email: Gabriel Reis <gabrielcnr@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: enaml,extensions,extras,gui,qt,qt-table,table,ui,widgets
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: User Interfaces
Classifier: Topic :: Software Development :: Widget Sets
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: atom>=0.12
Requires-Dist: enaml>=0.19
Requires-Dist: numpy>=1.26
Requires-Dist: qtpy>=2.4
Provides-Extra: dataframe
Requires-Dist: pandas>=2.1; extra == 'dataframe'
Provides-Extra: ipython
Requires-Dist: qtconsole>=5.5; extra == 'ipython'
Provides-Extra: pyqt5
Requires-Dist: pyqt5>=5.15; extra == 'pyqt5'
Provides-Extra: pyqt6
Requires-Dist: pyqt6>=6.5; extra == 'pyqt6'
Provides-Extra: pyside6
Requires-Dist: pyside6>=6.5; extra == 'pyside6'
Provides-Extra: scintilla-pyqt5
Requires-Dist: pyqt5>=5.15; extra == 'scintilla-pyqt5'
Requires-Dist: qscintilla>=2.14; extra == 'scintilla-pyqt5'
Provides-Extra: scintilla-pyqt6
Requires-Dist: pyqt6-qscintilla>=2.14; extra == 'scintilla-pyqt6'
Requires-Dist: pyqt6>=6.5; extra == 'scintilla-pyqt6'
Description-Content-Type: text/markdown

# enaml-extensions

[![CI](https://github.com/gabrielcnr/enaml-extensions/actions/workflows/main.yml/badge.svg)](https://github.com/gabrielcnr/enaml-extensions/actions/workflows/main.yml)
[![PyPI](https://img.shields.io/pypi/v/enaml-extensions)](https://pypi.org/project/enaml-extensions/)
[![Python versions](https://img.shields.io/pypi/pyversions/enaml-extensions)](https://pypi.org/project/enaml-extensions/)
[![License](https://img.shields.io/pypi/l/enaml-extensions)](https://github.com/gabrielcnr/enaml-extensions/blob/main/LICENSE)

Extra widgets for Enaml

The flagship widget here is the `Table` widget which aims for providing
an easy way to display tabular data in a grid in the UI. It was designed
to support working with list of dicts, list of namedtuples, list of tuples,
or even pandas DataFrame.

## Installation

enaml-extensions supports Python 3.11 to 3.14 and works with PyQt6, PySide6 or
PyQt5 (through [QtPy](https://github.com/spyder-ide/qtpy)). Install it together
with the Qt binding of your choice:

```bash
pip install "enaml-extensions[pyqt6]"    # or [pyside6], or [pyqt5]
```

Optional extras:

| Extra | Enables |
|-------|---------|
| `dataframe` | the `DataFrame` widget (pandas) |
| `scintilla-pyqt6` / `scintilla-pyqt5` | the JSON/SQL editors (QScintilla; not available for PySide6) |
| `ipython` | the `IPythonConsole` widget (qtconsole) |

Python 3.15 is not supported yet: enaml does not have a release that builds on it.

## Example

```python
from enaml.widgets.api import *
from enamlext.widgets import Table, Column

enamldef Main(Window):
    Container:
        Table:
            items = [{'name': 'Joe', 'age': 30},
                     {'name': 'Jane', 'age': 31}]
            columns = [
                Column('name', use_getitem=True),
                Column('age', use_getitem=True),
            ]
```

Use `use_getitem=True` for items accessed by key (dicts); leave it off for
objects accessed by attribute (dataclasses, namedtuples).

## Contributing

See [CONTRIBUTING.md](CONTRIBUTING.md).
