Skip to content
Merged

maint #1161

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions doc/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
# To create the environment used to build the documentation:
# > conda create -n larray_doc2026 python=3.13
# > conda activate -n larray_doc2026
# > pip install -r .\doc\requirements.txt
# > cd <directory_of_larray_repository>
# > pip install -e .
# > cd <directory_of_larray-editor_repository>
# > pip install -e .
# dependencies to run larray tutorials (via nbsphinx)
numpy >=1.22, <2.0.0
numpy >=1.22
pandas >=0.20
matplotlib
tables # ==pytables
openpyxl
pydantic ==2.12

# dependencies to actually build the documentation
sphinx ==5.3.0
sphinx-rtd-theme ==1.1.1
sphinx ==8.2.3
sphinx-rtd-theme ==3.0.2
numpydoc
# This only installs the python bindings for pandoc. It works on read-the-docs
# because it has a system-wide pandoc installed but elsewhere, installing
Expand Down
2 changes: 1 addition & 1 deletion doc/source/changes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
Version 0.35
============

In development.
Released on 2025-12-23.

CORE
----
Expand Down
132 changes: 71 additions & 61 deletions doc/source/changes/editor/version_0_35.rst.inc
Original file line number Diff line number Diff line change
Expand Up @@ -3,100 +3,110 @@
New features
^^^^^^^^^^^^

* allow displaying *many* more different kinds of objects, and not only arrays
from larray. One specific goal when developing this new feature was speed.
* allow displaying **many** more different kinds of objects, and not only arrays
from LArray. One specific goal when developing this new feature was speed.
Most of these viewers should be fast (when at all possible), even on (very)
large datasets. We only support displaying (not editing) all the new types.

The following types are supported so far (but adding more is relatively easy):

* Python builtin objects:
- tuple (including named tuple), list (sequences), dict (mappings),
dict views, memoryview and array
* Python **builtin** objects:

- ``tuple`` (including named tuple), ``list`` (sequences), ``dict``
(mappings), dict views, ``memoryview`` and ``array``
- text and binary files
* Python stdlib objects:
- pathlib.Path

* Python **standard library** objects:

- ``pathlib.Path``

* if the path points to a directory, it will display the content of the
directory
* if the path points to a file, it will try to display it, if we
implemented support for that file type (see below for the list
of supported types).
- sqlite3.Connection (and their tables)
- pstats.Stats (results of Python's profiler)
- zipfile.ZipFile and zipfile.Path
* new objects from LArray: Axis, Excel Workbook (what you get from
larray.open_excel()), Sheets and Range
* IODE "collections" objects: Comments, Equations, Identities, Lists, Tables,
Scalars and Variables, as well as Table objects
* Pandas: DataFrame, Series and DataFrameGroupBy
* Polars: DataFrame and LazyFrame
* Numpy: ndarray
* PyArrow: Array, Table, RecordBatchFileReader (reader object for feather
files) and ParquetFile
* Narwhals: DataFrame and LazyFrame
* PyTables: File, Group (with special support for Pandas DataFrames written
in HDF files), Array and Table
* IBIS: Table
* DuckDB: DuckDBPyConnection and DuckDBPyRelation (what you receive from any
query)

File types (extensions) currently supported:
- Iode files: .ac, .ae, .ai, .al, .as, .at, .av, .cmt, .eqs, .idt, .lst,
.scl, .tbl, .var
- Text files: .bat, .c, .cfg, .cpp, .h, .htm, .html, .ini, .log, .md,
.py, .pyx, .pxd, .rep, .rst, .sh, .sql, .toml, .txt, .wsgi,
.yaml, .yml
- HDF5 files: .h5, .hdf
- Parquet files: .parquet
- Stata files: .dta
- Feather files: .feather
- SAS files: .sas7bdat
It is limited to the first few thousand rows (the exact number depends on
the number of columns), because reading later rows get increasingly slow,
to the point of being unusable.
- CSV files: .csv
- Gzipped CSV files: .csv.gz
- Excel files: .xls, .xlsx
- Zip files: .zip
- DuckDB files: .ddb, .duckdb

* the editor now features a new "File Explorer" (accessible from the "File"
- ``sqlite3.Connection`` (and their tables)
- ``pstats.Stats`` (results of Python's profiler)
- ``zipfile.ZipFile`` and ``zipfile.Path``

* new objects from **LArray**: ``Axis``, Excel ``Workbook`` (what you get from
larray.open_excel()), ``Sheet`` and ``Range``
* **IODE** "collections" objects: ``Comments``, ``Equations``, ``Identities``,
``Lists``, ``Tables``, ``Scalars`` and ``Variables``, as well as ``Table``
objects
* **Pandas** objects: ``DataFrame``, ``Series`` and ``DataFrameGroupBy``
* **Polars** objects: ``DataFrame`` and ``LazyFrame``
* **Numpy** objects: ``ndarray``
* **PyArrow** objects: ``Array``, ``Table``, ``RecordBatchFileReader``
(reader object for feather files) and ``ParquetFile``
* **Narwhals** objects: ``DataFrame`` and ``LazyFrame``
* **PyTables** objects: ``File``, ``Group`` (with special support for Pandas
DataFrames written in HDF files), ``Array`` and ``Table``
* **IBIS** objects: ``Table``
* **DuckDB** objects: ``DuckDBPyConnection`` and ``DuckDBPyRelation`` (what
you receive from any query)

File types (extensions) currently supported:

- **IODE** files: .ac, .ae, .ai, .al, .as, .at, .av, .cmt, .eqs, .idt, .lst,
.scl, .tbl, .var
- **Text** files: .bat, .c, .cfg, .cpp, .h, .htm, .html, .ini, .log, .md,
.py, .pyx, .pxd, .rep, .rst, .sh, .sql, .toml, .txt, .wsgi, .yaml, .yml
- **HDF5** files: .h5, .hdf
- **Parquet** files: .parquet
- **Stata** files: .dta
- **Feather** files: .feather
- **SAS** files: .sas7bdat
It is limited to the first few thousand rows (the exact number depends on
the number of columns), because reading later rows get increasingly slow,
to the point of being unusable.
- **CSV** files: .csv
- Gzipped CSV files: .csv.gz
- **Excel** files: .xls, .xlsx
- **Zip** files: .zip
- **DuckDB** files: .ddb, .duckdb

* the editor now features a new "**File Explorer**" (accessible from the "File"
menu) so that one can more easily make use of all the above file viewers.

* added a new SQL Console (next to the iPython console) for querying Polars
* added a new **SQL Console** (next to the iPython console) for querying Polars
structures (DataFrame, LazyFrame and Series) as SQL tables. The console
features auto-completion for SQL keywords, table names and column names
and stores the last 1000 queries (even across sessions). Recalling a query
from history is done with the up and down arrows and like in the iPython
console, it searches through history with the current command as prefix.
This console will only be present if the polars module is installed.

* allow sorting some objects by column by pressing on an horizontal label.
* allow **sorting** some objects by column by pressing on an horizontal label.
This is currently implemented for the following objects:

- python built-in sequences (e.g. tuples and lists)
- python pathlib.Path objects representing directories
- LArray (only for 2D arrays)
- Pandas DataFrame
- Polars DataFrame and LazyFrame
- Narwhals LazyFrame
- Pandas ``DataFrame``
- Polars ``DataFrame and ``LazyFrame``
- Narwhals ``LazyFrame``
- SQLite tables
- DuckDB relations

* allow filtering some objects by pressing on an horizontal label.
* allow **filtering** some objects by pressing on an horizontal label.
This is currently implemented for the following objects:
- Pandas DataFrame
- Polars DataFrame and LazyFrame

- Pandas ``DataFrame``
- Polars ``DataFrame`` and ``LazyFrame``
- DuckDB relations

* allow comparing arrays/sessions with different axes in :py:obj:`compare()`.
The function gained ``align`` and ``fill_value`` arguments and the interface
has a new combobox to change the alignment method during the comparison:
- outer: will use a label if it is in any array (ordered like the first array).
This is the default as it results in no information loss.
- inner: will use a label if it is in all arrays (ordered like the first array).
- left: will use the first array axis labels.
- right: will use the last array axis labels.
- exact: raise an error when axes are not equal.

- *outer*: will use a label if it is in any array (ordered like the first array).
This is the default as it results in no information loss.
- *inner*: will use a label if it is in all arrays (ordered like the first array).
- *left*: will use the first array axis labels.
- *right*: will use the last array axis labels.
- *exact*: raise an error when axes are not equal.

Closes :editor_issue:`214` and :editor_issue:`251`.

* double-clicking on a name in the variable list will open it in a new window
Expand Down
15 changes: 8 additions & 7 deletions doc/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,14 @@
'sphinx.ext.autodoc',
'sphinx.ext.autosummary',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.viewcode',
'sphinx.ext.extlinks',
'numpydoc',
'nbsphinx',
'sphinx.ext.intersphinx',
'sphinx.ext.mathjax',
'sphinx.ext.viewcode',
'IPython.sphinxext.ipython_directive',
'IPython.sphinxext.ipython_console_highlighting',
'numpydoc',
'nbsphinx',
'sphinx_rtd_theme',
]

Expand Down Expand Up @@ -91,7 +91,7 @@
templates_path = ['_templates']

# The suffix of source filenames.
source_suffix = '.rst'
source_suffix = {'.rst': 'restructuredtext'}

# The encoding of source files.
#source_encoding = 'utf-8-sig'
Expand All @@ -101,7 +101,7 @@

# General information about the project.
project = 'LArray'
copyright = '2014-2023, Gaëtan de Menten, Geert Bryon, Johan Duyck, Alix Damman'
copyright = '2014-2026, Gaëtan de Menten, Geert Bryon, Johan Duyck, Alix Damman'

# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
Expand Down Expand Up @@ -319,6 +319,7 @@
# If true, do not generate a @detailmenu in the "Top" node's menu.
#texinfo_no_detailmenu = False

# -- Options for intersphinx extension ---------------------------------------

# Example configuration for intersphinx: refer to the Python standard library.
intersphinx_mapping = {'https://docs.python.org/3': None}
intersphinx_mapping = {'python': ('https://docs.python.org/3', None)}
Loading