1+ .. py:currentmodule:: larray_editor
2+
3+ New features
4+ ^^^^^^^^^^^^
5+
6+ * allow displaying *many* more different kinds of objects, and not only arrays
7+ from larray. One specific goal when developing this new feature was speed.
8+ Most of these viewers should be fast (when at all possible), even on (very)
9+ large datasets. We only support displaying (not editing) all the new types.
10+
11+ The following types are supported so far (but adding more is relatively easy):
12+
13+ * Python builtin objects:
14+ - tuple (including named tuple), list (sequences), dict (mappings),
15+ dict views, memoryview and array
16+ - text and binary files
17+ * Python stdlib objects:
18+ - pathlib.Path
19+ * if the path points to a directory, it will display the content of the
20+ directory
21+ * if the path points to a file, it will try to display it, if we
22+ implemented support for that file type (see below for the list
23+ of supported types).
24+ - sqlite3.Connection (and their tables)
25+ - pstats.Stats (results of Python' s profiler)
26+ - zipfile.ZipFile and zipfile.Path
27+ * new objects from LArray: Axis, Excel Workbook (what you get from
28+ larray.open_excel()), Sheets and Range
29+ * IODE "collections" objects: Comments, Equations, Identities, Lists, Tables,
30+ Scalars and Variables, as well as Table objects
31+ * Pandas: DataFrame, Series and DataFrameGroupBy
32+ * Polars: DataFrame and LazyFrame
33+ * Numpy: ndarray
34+ * PyArrow: Array, Table, RecordBatchFileReader (reader object for feather
35+ files) and ParquetFile
36+ * Narwhals: DataFrame and LazyFrame
37+ * PyTables: File, Group (with special support for Pandas DataFrames written
38+ in HDF files), Array and Table
39+ * IBIS: Table
40+ * DuckDB: DuckDBPyConnection and DuckDBPyRelation (what you receive from any
41+ query)
42+
43+ File types (extensions) currently supported:
44+ - Iode files: .ac, .ae, .ai, .al, .as, .at, .av, .cmt, .eqs, .idt, .lst,
45+ .scl, .tbl, .var
46+ - Text files: .bat, .c, .cfg, .cpp, .h, .htm, .html, .ini, .log, .md,
47+ .py, .pyx, .pxd, .rep, .rst, .sh, .sql, .toml, .txt, .wsgi,
48+ .yaml, .yml
49+ - HDF5 files: .h5, .hdf
50+ - Parquet files: .parquet
51+ - Stata files: .dta
52+ - Feather files: .feather
53+ - SAS files: .sas7bdat
54+ It is limited to the first few thousand rows (the exact number depends on
55+ the number of columns), because reading later rows get increasingly slow,
56+ to the point of being unusable.
57+ - CSV files: .csv
58+ - Gzipped CSV files: .csv.gz
59+ - Excel files: .xls, .xlsx
60+ - Zip files: .zip
61+ - DuckDB files: .ddb, .duckdb
62+
63+ * the editor now features a new "File Explorer" (accessible from the "File"
64+ menu) so that one can more easily make use of all the above file viewers.
65+
66+ * added a new SQL Console (next to the iPython console) for querying Polars
67+ structures (DataFrame, LazyFrame and Series) as SQL tables. The console
68+ features auto-completion for SQL keywords, table names and column names
69+ and stores the last 1000 queries (even across sessions). Recalling a query
70+ from history is done with the up and down arrows and like in the iPython
71+ console, it searches through history with the current command as prefix.
72+ This console will only be present if the polars module is installed.
73+
74+ * allow sorting some objects by column by pressing on an horizontal label.
75+ This is currently implemented for the following objects:
76+ - python built-in sequences (e.g. tuples and lists)
77+ - python pathlib.Path objects representing directories
78+ - LArray (only for 2D arrays)
79+ - Pandas DataFrame
80+ - Polars DataFrame and LazyFrame
81+ - Narwhals LazyFrame
82+ - SQLite tables
83+ - DuckDB relations
84+
85+ * allow filtering some objects by pressing on an horizontal label.
86+ This is currently implemented for the following objects:
87+ - Pandas DataFrame
88+ - Polars DataFrame and LazyFrame
89+ - DuckDB relations
90+
91+ * allow comparing arrays/sessions with different axes in :py:obj:`compare()`.
92+ The function gained ``align`` and ``fill_value`` arguments and the interface
93+ has a new combobox to change the alignment method during the comparison:
94+ - outer: will use a label if it is in any array (ordered like the first array).
95+ This is the default as it results in no information loss.
96+ - inner: will use a label if it is in all arrays (ordered like the first array).
97+ - left: will use the first array axis labels.
98+ - right: will use the last array axis labels.
99+ - exact: raise an error when axes are not equal.
100+ Closes :editor_issue:`214` and :editor_issue:`251`.
101+
102+ * double-clicking on a name in the variable list will open it in a new window
103+ (closes :editor_issue:`143`).
104+
105+
106+ Miscellaneous improvements
107+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
108+
109+ * made the editor interruptible by an outside program (i.e. made PyCharm stop &
110+ restart buttons work directly instead of only when the editor receives the
111+ focus again). Closes :editor_issue:`257`.
112+
113+ * resize axes and vertical label columns automatically
114+
115+ * string values are left aligned instead of right aligned
116+
117+ * when comparing sessions via :py:obj:`compare()`, the color of arrays in the
118+ list is now updated depending on the tolerance. To reflect that the tolerance
119+ widget moved to the top of the interface. Closes :editor_issue:`201`.
120+
121+ * :py:obj:`compare()` max difference is colored red when the difference is not 0
122+
123+ * typing the name of a variable holding a matplotlib figure (or axes) in the
124+ console shows it (previously, only expressions were displayed and *not*
125+ simple variables). For example: ::
126+
127+ >>> arr.plot()
128+
129+ already displayed a plot, but: ::
130+
131+ >>> ax = arr.plot()
132+ >>> ax
133+
134+ did not.
135+
136+ * display matplotlib Figure objects in addition to Axes objects
137+
138+
139+ Fixes
140+ ^^^^^
141+
142+ * fixed :py:obj:`compare()` colors when the only difference is nans on either
143+ side.
144+
145+ * fixed :py:obj:`compare()` colors and max difference label when the only
146+ differences are for rows where the value is 0 in the first array.
147+
148+ * fixed single column plot in viewer when ticks are not strings
0 commit comments