xlsx-viewer-pro 1.0.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.
Files changed (39) hide show
  1. xlsx_viewer_pro-1.0.1/LICENSE +21 -0
  2. xlsx_viewer_pro-1.0.1/MANIFEST.in +6 -0
  3. xlsx_viewer_pro-1.0.1/PKG-INFO +366 -0
  4. xlsx_viewer_pro-1.0.1/README.md +326 -0
  5. xlsx_viewer_pro-1.0.1/asm/__init__.py +45 -0
  6. xlsx_viewer_pro-1.0.1/asm/asm_bridge.py +268 -0
  7. xlsx_viewer_pro-1.0.1/asm/test_asm.py +97 -0
  8. xlsx_viewer_pro-1.0.1/asm/xlsx_gui64.asm +3820 -0
  9. xlsx_viewer_pro-1.0.1/asm/xlsx_gui64.exe +0 -0
  10. xlsx_viewer_pro-1.0.1/asm/xlsx_math64.asm +509 -0
  11. xlsx_viewer_pro-1.0.1/asm/xlsx_math64.dll +0 -0
  12. xlsx_viewer_pro-1.0.1/pyproject.toml +89 -0
  13. xlsx_viewer_pro-1.0.1/setup.cfg +4 -0
  14. xlsx_viewer_pro-1.0.1/tests/test_app.py +291 -0
  15. xlsx_viewer_pro-1.0.1/tests/test_library_api.py +122 -0
  16. xlsx_viewer_pro-1.0.1/xlsx_viewer/__init__.py +78 -0
  17. xlsx_viewer_pro-1.0.1/xlsx_viewer/api.py +101 -0
  18. xlsx_viewer_pro-1.0.1/xlsx_viewer/app_icon.ico +0 -0
  19. xlsx_viewer_pro-1.0.1/xlsx_viewer/app_icon.png +0 -0
  20. xlsx_viewer_pro-1.0.1/xlsx_viewer/asm/__init__.py +45 -0
  21. xlsx_viewer_pro-1.0.1/xlsx_viewer/asm/asm_bridge.py +268 -0
  22. xlsx_viewer_pro-1.0.1/xlsx_viewer/asm/test_asm.py +97 -0
  23. xlsx_viewer_pro-1.0.1/xlsx_viewer/asm/xlsx_gui64.asm +3820 -0
  24. xlsx_viewer_pro-1.0.1/xlsx_viewer/asm/xlsx_math64.asm +509 -0
  25. xlsx_viewer_pro-1.0.1/xlsx_viewer/asm/xlsx_math64.dll +0 -0
  26. xlsx_viewer_pro-1.0.1/xlsx_viewer/cli.py +110 -0
  27. xlsx_viewer_pro-1.0.1/xlsx_viewer/config.py +118 -0
  28. xlsx_viewer_pro-1.0.1/xlsx_viewer/dialogs.py +1189 -0
  29. xlsx_viewer_pro-1.0.1/xlsx_viewer/formatting.py +252 -0
  30. xlsx_viewer_pro-1.0.1/xlsx_viewer/formulas.py +2422 -0
  31. xlsx_viewer_pro-1.0.1/xlsx_viewer/gui.py +2841 -0
  32. xlsx_viewer_pro-1.0.1/xlsx_viewer/models.py +301 -0
  33. xlsx_viewer_pro-1.0.1/xlsx_viewer/widgets.py +1273 -0
  34. xlsx_viewer_pro-1.0.1/xlsx_viewer_pro.egg-info/PKG-INFO +366 -0
  35. xlsx_viewer_pro-1.0.1/xlsx_viewer_pro.egg-info/SOURCES.txt +37 -0
  36. xlsx_viewer_pro-1.0.1/xlsx_viewer_pro.egg-info/dependency_links.txt +1 -0
  37. xlsx_viewer_pro-1.0.1/xlsx_viewer_pro.egg-info/entry_points.txt +4 -0
  38. xlsx_viewer_pro-1.0.1/xlsx_viewer_pro.egg-info/requires.txt +9 -0
  39. xlsx_viewer_pro-1.0.1/xlsx_viewer_pro.egg-info/top_level.txt +1 -0
@@ -0,0 +1,21 @@
1
+ ๏ปฟMIT License
2
+
3
+ Copyright (c) 2026 eminsk
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,6 @@
1
+ include LICENSE
2
+ include README.md
3
+ include pyproject.toml
4
+ recursive-include xlsx_viewer *.py *.dll *.asm *.ico *.png
5
+ recursive-include tests *.py
6
+ recursive-include asm *.py *.asm *.dll *.exe
@@ -0,0 +1,366 @@
1
+ Metadata-Version: 2.4
2
+ Name: xlsx-viewer-pro
3
+ Version: 1.0.1
4
+ Summary: Modern Excel spreadsheet engine, 129 formula functions, SIMD SSE2 math, and desktop GUI viewer.
5
+ Author-email: eminsk <M_N_Nik@yahoo.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/eminsk/xlsx_vievers
8
+ Project-URL: Repository, https://github.com/eminsk/xlsx_vievers
9
+ Project-URL: Issues, https://github.com/eminsk/xlsx_vievers/issues
10
+ Project-URL: Changelog, https://github.com/eminsk/xlsx_vievers/releases
11
+ Keywords: excel,xlsx,spreadsheet,formula-engine,simd,sse2,openpyxl,vlookup,xlookup,viewer,desktop-app,calculator
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: End Users/Desktop
15
+ Classifier: Intended Audience :: Financial and Insurance Industry
16
+ Classifier: Intended Audience :: Science/Research
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
24
+ Classifier: Programming Language :: Python :: 3.15
25
+ Classifier: Programming Language :: Assembly
26
+ Classifier: Topic :: Office/Business :: Financial :: Spreadsheet
27
+ Classifier: Topic :: Scientific/Engineering :: Mathematics
28
+ Requires-Python: >=3.10
29
+ Description-Content-Type: text/markdown
30
+ License-File: LICENSE
31
+ Requires-Dist: openpyxl>=3.1.0
32
+ Requires-Dist: matplotlib>=3.7.0
33
+ Requires-Dist: ttkbootstrap>=1.10.0
34
+ Provides-Extra: dev
35
+ Requires-Dist: pytest>=8.0.0; extra == "dev"
36
+ Requires-Dist: ruff>=0.3.0; extra == "dev"
37
+ Requires-Dist: build>=1.0.0; extra == "dev"
38
+ Requires-Dist: twine>=5.0.0; extra == "dev"
39
+ Dynamic: license-file
40
+
41
+ # xlsx-viewer-pro (Excel Viewer Pro)
42
+
43
+ [![PyPI version](https://img.shields.io/pypi/v/xlsx-viewer-pro.svg)](https://pypi.org/project/xlsx-viewer-pro/)
44
+ [![Python Versions](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14%20%7C%203.15-blue.svg)](https://pypi.org/project/xlsx-viewer-pro/)
45
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
46
+ [![CI](https://github.com/eminsk/xlsx_vievers/actions/workflows/ci.yml/badge.svg)](https://github.com/eminsk/xlsx_vievers/actions)
47
+ [![Downloads](https://static.pepy.tech/badge/xlsx-viewer-pro)](https://pepy.tech/project/xlsx-viewer-pro)
48
+
49
+ A high-performance Python spreadsheet library, headless formula engine (129+ functions), native x64 SIMD SSE2 math engine, and modern Office Ribbon desktop application for `.xlsx`, `.xlsm`, `.csv`, and `.tsv` files. Compatible with **Python 3.10, 3.11, 3.12, 3.13, 3.14, and Python 3.15 (RC & Preview)**.
50
+
51
+ ---
52
+
53
+ ## โšก Key Highlights
54
+
55
+ - ๐Ÿงฎ **Headless Excel Formula Engine**: Evaluate Excel formulas in pure Python without launching any UI. Supports **129 functions** across Math, Trigonometry, Statistics, Finance (`PMT`, `PV`, `FV`, `NPV`, `IRR`), Lookups (`VLOOKUP`, `XLOOKUP`, `INDEX`, `MATCH`), Text, Logic, and Date/Time.
56
+ - ๐Ÿš€ **Hardware SIMD SSE2 Acceleration**: Built-in 64-bit native assembly engine (`xlsx_math64.dll`) delivering up to **7.4+ million double-precision operations per second** with automatic pure-Python fallback on non-Windows/ARM platforms.
57
+ - ๐Ÿ› ๏ธ **Dual-Use Architecture**: Use it as a lightweight Python library, a command-line tool (`xlsx-viewer-pro` / `xlsx-viewer` / `xv`), or a full-featured desktop spreadsheet application.
58
+ - ๐ŸŽจ **Modern Desktop GUI**: Office Ribbon UI with dynamic real-time status bar statistics (`SUM`, `AVERAGE`, `COUNT`, `MIN`, `MAX`), 10+ chart types, conditional formatting, auto-filter, and goal seek.
59
+ - ๐Ÿงฉ **Zero Heavy Spreadsheet Engine Dependencies**: No LibreOffice, COM, or Excel installation required.
60
+
61
+ ---
62
+
63
+ ## ๐Ÿ“ฆ Installation
64
+
65
+ Add to your project with `uv` (recommended):
66
+
67
+ ```bash
68
+ uv add xlsx-viewer-pro
69
+ ```
70
+
71
+ Or install via standard `pip`:
72
+
73
+ ```bash
74
+ pip install xlsx-viewer-pro
75
+ ```
76
+
77
+ You can also run the CLI instantly without installing using `uvx`:
78
+
79
+ ```bash
80
+ uvx xlsx-viewer-pro --calc "=SUM(10, 20, 30) * 2"
81
+ ```
82
+
83
+ #### โšก Python 3.15 Ready (Early Adopters)
84
+ `xlsx-viewer-pro` is **100% verified (29/29 tests passing)** on upcoming **Python 3.15** (`cpython-3.15.0rc2`), including native SIMD SSE2 assembly acceleration.
85
+
86
+ Pre-compiled native Windows x64 binary wheels for `matplotlib` (cp315) are attached to our [Release Assets](https://github.com/eminsk/xlsx_vievers/releases/tag/v1.0.0). To install on a Python 3.15 project:
87
+ ```bash
88
+ uv add xlsx-viewer-pro --find-links https://github.com/eminsk/xlsx_vievers/releases/expanded_assets/v1.0.0
89
+ ```
90
+
91
+ ---
92
+
93
+ ## ๐Ÿ Python Library Quickstart
94
+
95
+ ### 1. Headless Formula Evaluation
96
+
97
+ Evaluate any Excel formula directly from Python:
98
+
99
+ ```python
100
+ from xlsx_viewer import evaluate_formula
101
+
102
+ # Basic arithmetic & math
103
+ result = evaluate_formula("=SUM(10, 20, 30) * 2")
104
+ print(result) # 120.0
105
+
106
+ # Financial formulas
107
+ monthly_payment = evaluate_formula("=PMT(0.05 / 12, 360, -250000)")
108
+ print(f"Monthly Mortgage: ${monthly_payment:.2f}") # $1342.05
109
+
110
+ # Statistical & Logic
111
+ val = evaluate_formula("=IF(AVERAGE(85, 90, 92) >= 90, 'Honors', 'Standard')")
112
+ print(val) # 'Honors'
113
+ ```
114
+
115
+ ### 2. Evaluating Formulas with Cell Context
116
+
117
+ Pass cell coordinate mappings directly using standard Excel notation:
118
+
119
+ ```python
120
+ from xlsx_viewer import evaluate_formula
121
+
122
+ context = {
123
+ "A1": 15000,
124
+ "A2": 3200,
125
+ "B1": 0.15,
126
+ "B2": "Tier-1",
127
+ }
128
+
129
+ # Reference cells directly
130
+ net_profit = evaluate_formula("=(A1 - A2) * (1 - B1)", context=context)
131
+ print(f"Net Profit: ${net_profit:.2f}") # $10030.00
132
+
133
+ # Text and conditional logic with context
134
+ status = evaluate_formula(
135
+ '=IF(A1 > 10000, CONCAT(B2, " - High Volume"), "Normal")',
136
+ context=context,
137
+ )
138
+ print(status) # 'Tier-1 - High Volume'
139
+ ```
140
+
141
+ ### 3. Using the `FormulaEngine` Class
142
+
143
+ For dynamic resolution or integrating with custom data sources:
144
+
145
+ ```python
146
+ from xlsx_viewer import FormulaEngine
147
+
148
+ # Custom resolver: fn(row: int, col: int, sheet: str | None) -> value
149
+ matrix = [
150
+ [10, 20, 30],
151
+ [40, 50, 60],
152
+ ]
153
+
154
+
155
+ def custom_resolver(row: int, col: int, sheet: str | None = None):
156
+ try:
157
+ return matrix[row][col]
158
+ except IndexError:
159
+ return 0
160
+
161
+
162
+ engine = FormulaEngine(resolver=custom_resolver)
163
+ result = engine.evaluate("=SUM(A1:C2) + MAX(A1:C2)")
164
+ print(result) # 210 + 60 = 270.0
165
+ ```
166
+
167
+ ### 4. SIMD Hardware-Accelerated Vector Math
168
+
169
+ Leverage native 64-bit SSE2 assembly routines for high-throughput calculations:
170
+
171
+ ```python
172
+ from xlsx_viewer.asm import (
173
+ is_asm_available,
174
+ simd_avg,
175
+ simd_max,
176
+ simd_min,
177
+ simd_sum,
178
+ simd_sumproduct,
179
+ )
180
+
181
+ print("SIMD SSE2 Active:", is_asm_available())
182
+
183
+ data_a = [10.5, 20.25, 30.75, 40.0, 50.5, 60.0]
184
+ data_b = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
185
+
186
+ print("Sum:", simd_sum(data_a))
187
+ print("Average:", simd_avg(data_a))
188
+ print("Min / Max:", simd_min(data_a), simd_max(data_a))
189
+ print("Sumproduct:", simd_sumproduct(data_a, data_b))
190
+ ```
191
+
192
+ ### 5. In-Memory Workbook Data Models
193
+
194
+ Load, inspect, and manipulate Excel workbooks programmatically:
195
+
196
+ ```python
197
+ from xlsx_viewer import WorkbookData, load_workbook
198
+
199
+ # Load an existing workbook
200
+ wb = load_workbook("report.xlsx")
201
+ print(f"Sheets: {wb.sheet_names}")
202
+
203
+ sheet = wb.get_sheet("Sheet1")
204
+ print(f"Dimensions: {sheet.max_row} rows x {sheet.max_col} cols")
205
+
206
+ # Read cell values and formulas
207
+ cell = sheet.get_cell(row=0, col=0) # A1
208
+ if cell:
209
+ print(f"A1 Value: {cell.value}, Formula: {cell.formula}")
210
+
211
+ # Modify cells in-memory
212
+ sheet.set_cell(row=0, col=1, value=1250.50)
213
+ ```
214
+
215
+ ---
216
+
217
+ ## ๐Ÿ’ป Command Line Interface (CLI)
218
+
219
+ `xlsx-viewer` comes with a CLI tool accessible as both `xlsx-viewer` and `xv`:
220
+
221
+ ```bash
222
+ # Evaluate an Excel formula from the terminal
223
+ xv --calc "=SUM(10, 20, 30) * 2"
224
+ # 120.0
225
+
226
+ # Calculate financial loan payment
227
+ xv -c "=PMT(0.065 / 12, 360, -350000)"
228
+ # 2212.24
229
+
230
+ # List all 129 supported Excel formula functions
231
+ xv --list-formulas
232
+
233
+ # Inspect environment and hardware SIMD acceleration status
234
+ xv --info
235
+
236
+ # Open a workbook in the desktop GUI
237
+ xv sample_report.xlsx
238
+ ```
239
+
240
+ ---
241
+
242
+ ## ๐Ÿ–ฅ๏ธ Desktop Application Features
243
+
244
+ Launch the desktop spreadsheet GUI with:
245
+
246
+ ```bash
247
+ xlsx-viewer
248
+ # or
249
+ python -m xlsx_viewer
250
+ ```
251
+
252
+ ### ๐Ÿ“Š Office Ribbon Navigation
253
+ - **Home Tab**: Undo/Redo, Clipboard (Cut, Copy, Paste, Paste Special), Font styling, Cell fill & text colors, Cell borders, Alignment & Wrap Text, Number formats (`$`, `โ‚ฌ`, `โ‚ฝ`, `%`, decimals), Conditional Formatting.
254
+ - **Insert Tab**: Chart Wizard (10+ chart types), Shapes, and Comments.
255
+ - **Data Tab**: Multi-level Sorting, AutoFilter with column search checkboxes, Remove Duplicates, Text-to-Columns, and Goal Seek.
256
+ - **Formulas Tab**: Function Wizard (`fx`), Precedence auditing, and calculation options (`F9`).
257
+ - **View Tab**: Gridline toggling, Zoom levels (50% โ€“ 200%), and Theme switcher.
258
+
259
+ ### ๐Ÿ“ˆ Chart Wizard (10+ Types)
260
+ Interactive charts powered by Matplotlib:
261
+ - Column & Bar Charts
262
+ - Line & Area Charts
263
+ - Pie & Donut Charts
264
+ - XY Scatter Plots & Histograms
265
+ - Professional color palettes: *Excel Classic, Modern Teal, Vibrant, Pastel, Monochrome*.
266
+
267
+ ### โŒจ๏ธ Keyboard Shortcuts
268
+
269
+ | Shortcut | Action |
270
+ |----------|--------|
271
+ | `Ctrl + N` | New Workbook |
272
+ | `Ctrl + O` | Open File |
273
+ | `Ctrl + S` | Save File |
274
+ | `Ctrl + Shift + S` | Save As... |
275
+ | `Ctrl + Z` / `Ctrl + Y` | Undo / Redo |
276
+ | `Ctrl + C` / `Ctrl + X` / `Ctrl + V` | Copy / Cut / Paste |
277
+ | `Ctrl + A` | Select Entire Sheet |
278
+ | `Ctrl + F` / `Ctrl + H` | Find / Replace |
279
+ | `Ctrl + G` | Go to Cell |
280
+ | `F2` / Double Click | In-place Cell Editor |
281
+ | `F9` | Recalculate All Formulas |
282
+ | `Shift + Arrow Keys` | Expand Cell Selection |
283
+ | `Tab` / `Enter` | Move Right / Down |
284
+
285
+ ---
286
+
287
+ ## ๐Ÿงฎ Supported Formula Functions (129 Total)
288
+
289
+ <details>
290
+ <summary><strong>Click to expand full function list by category</strong></summary>
291
+
292
+ ### ๐Ÿ“ Math & Trigonometry (33)
293
+ `SUM`, `SUMIF`, `SUMIFS`, `PRODUCT`, `ROUND`, `ROUNDUP`, `ROUNDDOWN`, `INT`, `TRUNC`, `ABS`, `MOD`, `POWER`, `SQRT`, `PI`, `RAND`, `RANDBETWEEN`, `CEILING`, `FLOOR`, `SIGN`, `SIN`, `COS`, `TAN`, `ASIN`, `ACOS`, `ATAN`, `DEGREES`, `RADIANS`, `EXP`, `LN`, `LOG`, `LOG10`, `FACT`, `SUMPRODUCT`
294
+
295
+ ### ๐Ÿ“Š Statistical (20)
296
+ `AVERAGE`, `AVERAGEA`, `AVERAGEIF`, `AVERAGEIFS`, `COUNT`, `COUNTA`, `COUNTBLANK`, `COUNTIF`, `COUNTIFS`, `MIN`, `MINIFS`, `MAX`, `MAXIFS`, `MEDIAN`, `MODE`, `STDEV`, `STDEVP`, `VAR`, `VARP`, `LARGE`, `SMALL`, `RANK`
297
+
298
+ ### ๐Ÿ’ฐ Financial (9)
299
+ `PMT`, `PV`, `FV`, `RATE`, `NPER`, `NPV`, `IRR`, `SLN`, `SYD`
300
+
301
+ ### ๐Ÿ” Lookup & Reference (11)
302
+ `VLOOKUP`, `HLOOKUP`, `XLOOKUP`, `INDEX`, `MATCH`, `LOOKUP`, `CHOOSE`, `ROW`, `COLUMN`, `ROWS`, `COLUMNS`
303
+
304
+ ### ๐Ÿ”ค Text (23)
305
+ `CONCAT`, `CONCATENATE`, `TEXTJOIN`, `LEFT`, `RIGHT`, `MID`, `LEN`, `TRIM`, `UPPER`, `LOWER`, `PROPER`, `EXACT`, `FIND`, `SEARCH`, `REPLACE`, `SUBSTITUTE`, `REPT`, `TEXT`, `VALUE`, `CHAR`, `CODE`, `CLEAN`, `T`
306
+
307
+ ### โš–๏ธ Logical (11)
308
+ `IF`, `IFS`, `SWITCH`, `AND`, `OR`, `NOT`, `XOR`, `IFERROR`, `IFNA`, `TRUE`, `FALSE`
309
+
310
+ ### ๐Ÿ“… Date & Time (11)
311
+ `TODAY`, `NOW`, `DATE`, `TIME`, `YEAR`, `MONTH`, `DAY`, `DAYS`, `EDATE`, `EOMONTH`, `WEEKDAY`
312
+
313
+ ### โ„น๏ธ Information (10)
314
+ `ISBLANK`, `ISNUMBER`, `ISTEXT`, `ISNONTEXT`, `ISLOGICAL`, `ISERROR`, `ISERR`, `ISNA`, `TYPE`, `N`
315
+
316
+ </details>
317
+
318
+ ---
319
+
320
+ ## ๐Ÿ›๏ธ Architecture
321
+
322
+ ```
323
+ xlsx-viewer/
324
+ โ”œโ”€โ”€ xlsx_viewer/ # Core Library Package
325
+ โ”‚ โ”œโ”€โ”€ __init__.py # Public API exports
326
+ โ”‚ โ”œโ”€โ”€ api.py # evaluate_formula, load_workbook, launch_gui
327
+ โ”‚ โ”œโ”€โ”€ cli.py # CLI entrypoint (xlsx-viewer / xv)
328
+ โ”‚ โ”œโ”€โ”€ formulas.py # Headless formula evaluation engine (129 functions)
329
+ โ”‚ โ”œโ”€โ”€ models.py # In-memory workbook, sheet, cell, and formatting models
330
+ โ”‚ โ”œโ”€โ”€ formatting.py # Number, date, currency, and conditional formatting
331
+ โ”‚ โ”œโ”€โ”€ widgets.py # Tkinter / ttkbootstrap UI widgets (Ribbon, Sheet, Grid)
332
+ โ”‚ โ”œโ”€โ”€ dialogs.py # Wizards (Chart, Function, Filter, Goal Seek)
333
+ โ”‚ โ”œโ”€โ”€ config.py # Styling, themes, and configuration
334
+ โ”‚ โ””โ”€โ”€ asm/ # Hardware acceleration
335
+ โ”‚ โ”œโ”€โ”€ xlsx_math64.dll # Native x64 SSE2 assembly DLL
336
+ โ”‚ โ””โ”€โ”€ asm_bridge.py # ctypes bridge with fallback
337
+ โ”œโ”€โ”€ tests/ # Integration and Unit Test Suite (29 tests)
338
+ โ”‚ โ”œโ”€โ”€ test_app.py
339
+ โ”‚ โ””โ”€โ”€ test_library_api.py
340
+ โ”œโ”€โ”€ pyproject.toml # PEP 517 / 621 Build Specification
341
+ โ””โ”€โ”€ README.md
342
+ ```
343
+
344
+ ---
345
+
346
+ ## ๐Ÿงช Running Tests
347
+
348
+ Run the test suite with pytest:
349
+
350
+ ```bash
351
+ uv run pytest -v
352
+ ```
353
+
354
+ All 29 tests pass with 100% success rate on Python 3.10 through 3.14.
355
+
356
+ ---
357
+
358
+ ## ๐Ÿ“„ License
359
+
360
+ This project is licensed under the [MIT License](LICENSE).
361
+
362
+ ---
363
+
364
+ ## ๐Ÿ‘ค Author
365
+
366
+ Developed by **eminsk** ([GitHub](https://github.com/eminsk)) โ€ข [M_N_Nik@yahoo.com](mailto:M_N_Nik@yahoo.com)