wolfxl 0.1.0__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 (35) hide show
  1. wolfxl-0.1.0/.github/workflows/ci.yml +51 -0
  2. wolfxl-0.1.0/.github/workflows/release.yml +102 -0
  3. wolfxl-0.1.0/.gitignore +27 -0
  4. wolfxl-0.1.0/CHANGELOG.md +14 -0
  5. wolfxl-0.1.0/Cargo.lock +710 -0
  6. wolfxl-0.1.0/Cargo.toml +25 -0
  7. wolfxl-0.1.0/LICENSE +21 -0
  8. wolfxl-0.1.0/PKG-INFO +18 -0
  9. wolfxl-0.1.0/README.md +116 -0
  10. wolfxl-0.1.0/build.rs +57 -0
  11. wolfxl-0.1.0/pyproject.toml +37 -0
  12. wolfxl-0.1.0/python/wolfxl/__init__.py +58 -0
  13. wolfxl-0.1.0/python/wolfxl/_cell.py +422 -0
  14. wolfxl-0.1.0/python/wolfxl/_styles.py +128 -0
  15. wolfxl-0.1.0/python/wolfxl/_utils.py +45 -0
  16. wolfxl-0.1.0/python/wolfxl/_workbook.py +142 -0
  17. wolfxl-0.1.0/python/wolfxl/_worksheet.py +237 -0
  18. wolfxl-0.1.0/python/wolfxl/py.typed +0 -0
  19. wolfxl-0.1.0/src/calamine_styled_backend.rs +2455 -0
  20. wolfxl-0.1.0/src/lib.rs +41 -0
  21. wolfxl-0.1.0/src/ooxml_util.rs +134 -0
  22. wolfxl-0.1.0/src/rust_xlsxwriter_backend.rs +2156 -0
  23. wolfxl-0.1.0/src/util.rs +64 -0
  24. wolfxl-0.1.0/src/wolfxl/mod.rs +493 -0
  25. wolfxl-0.1.0/src/wolfxl/shared_strings.rs +130 -0
  26. wolfxl-0.1.0/src/wolfxl/sheet_patcher.rs +658 -0
  27. wolfxl-0.1.0/src/wolfxl/styles.rs +647 -0
  28. wolfxl-0.1.0/tests/fixtures/tier1/01_cell_values.xlsx +0 -0
  29. wolfxl-0.1.0/tests/fixtures/tier1/03_text_formatting.xlsx +0 -0
  30. wolfxl-0.1.0/tests/fixtures/tier1/04_background_colors.xlsx +0 -0
  31. wolfxl-0.1.0/tests/fixtures/tier1/09_multiple_sheets.xlsx +0 -0
  32. wolfxl-0.1.0/tests/fixtures/tier2/13_hyperlinks.xlsx +0 -0
  33. wolfxl-0.1.0/tests/fixtures/tier2/14_images.xlsx +0 -0
  34. wolfxl-0.1.0/tests/test_wolfxl_compat.py +829 -0
  35. wolfxl-0.1.0/uv.lock +8 -0
@@ -0,0 +1,51 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ${{ matrix.os }}
11
+ strategy:
12
+ fail-fast: false
13
+ matrix:
14
+ os: [ubuntu-latest, macos-latest, windows-latest]
15
+ python-version: ["3.9", "3.12"]
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - uses: actions/setup-python@v5
20
+ with:
21
+ python-version: ${{ matrix.python-version }}
22
+
23
+ - uses: dtolnay/rust-toolchain@stable
24
+
25
+ - name: Install dependencies
26
+ run: |
27
+ python -m pip install --upgrade pip
28
+ pip install maturin pytest openpyxl
29
+
30
+ - name: Build wheel and install
31
+ run: |
32
+ maturin build --release --out dist
33
+ pip install --find-links dist wolfxl
34
+
35
+ - name: Run tests
36
+ run: pytest tests/ -v
37
+
38
+ lint:
39
+ runs-on: ubuntu-latest
40
+ steps:
41
+ - uses: actions/checkout@v4
42
+
43
+ - uses: actions/setup-python@v5
44
+ with:
45
+ python-version: "3.12"
46
+
47
+ - name: Install lint tools
48
+ run: pip install ruff
49
+
50
+ - name: Ruff check
51
+ run: ruff check python/ tests/
@@ -0,0 +1,102 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ linux:
13
+ runs-on: ubuntu-latest
14
+ strategy:
15
+ fail-fast: false
16
+ matrix:
17
+ target: [x86_64, aarch64]
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+ - uses: actions/setup-python@v5
21
+ with:
22
+ python-version: "3.12"
23
+ - name: Build wheels
24
+ uses: PyO3/maturin-action@v1
25
+ with:
26
+ target: ${{ matrix.target }}
27
+ args: --release --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13
28
+ manylinux: auto
29
+ - uses: actions/upload-artifact@v4
30
+ with:
31
+ name: wheels-linux-${{ matrix.target }}
32
+ path: dist
33
+
34
+ macos:
35
+ runs-on: ${{ matrix.runner }}
36
+ strategy:
37
+ fail-fast: false
38
+ matrix:
39
+ include:
40
+ - runner: macos-14
41
+ target: x86_64
42
+ - runner: macos-14
43
+ target: aarch64
44
+ steps:
45
+ - uses: actions/checkout@v4
46
+ - uses: actions/setup-python@v5
47
+ with:
48
+ python-version: "3.12"
49
+ - name: Build wheels
50
+ uses: PyO3/maturin-action@v1
51
+ with:
52
+ target: ${{ matrix.target }}-apple-darwin
53
+ args: --release --out dist
54
+ - uses: actions/upload-artifact@v4
55
+ with:
56
+ name: wheels-macos-${{ matrix.target }}
57
+ path: dist
58
+
59
+ windows:
60
+ runs-on: windows-latest
61
+ steps:
62
+ - uses: actions/checkout@v4
63
+ - uses: actions/setup-python@v5
64
+ with:
65
+ python-version: "3.12"
66
+ - name: Build wheels
67
+ uses: PyO3/maturin-action@v1
68
+ with:
69
+ args: --release --out dist
70
+ - uses: actions/upload-artifact@v4
71
+ with:
72
+ name: wheels-windows
73
+ path: dist
74
+
75
+ sdist:
76
+ runs-on: ubuntu-latest
77
+ steps:
78
+ - uses: actions/checkout@v4
79
+ - name: Build sdist
80
+ uses: PyO3/maturin-action@v1
81
+ with:
82
+ command: sdist
83
+ args: --out dist
84
+ - uses: actions/upload-artifact@v4
85
+ with:
86
+ name: wheels-sdist
87
+ path: dist
88
+
89
+ publish:
90
+ needs: [linux, macos, windows, sdist]
91
+ runs-on: ubuntu-latest
92
+ environment: pypi
93
+ permissions:
94
+ id-token: write
95
+ steps:
96
+ - uses: actions/download-artifact@v4
97
+ with:
98
+ pattern: wheels-*
99
+ merge-multiple: true
100
+ path: dist
101
+ - name: Publish to PyPI
102
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,27 @@
1
+ # Rust
2
+ /target/
3
+ **/*.rs.bk
4
+
5
+ # Python
6
+ __pycache__/
7
+ *.py[cod]
8
+ *.so
9
+ *.pyd
10
+ *.egg-info/
11
+ dist/
12
+ build/
13
+ .eggs/
14
+ *.whl
15
+
16
+ # IDE
17
+ .idea/
18
+ .vscode/
19
+ *.swp
20
+
21
+ # Environment
22
+ .env
23
+ .venv/
24
+
25
+ # OS
26
+ .DS_Store
27
+ Thumbs.db
@@ -0,0 +1,14 @@
1
+ # Changelog
2
+
3
+ ## 0.1.0 (2026-02-15)
4
+
5
+ Initial release. Extracted from [ExcelBench](https://github.com/wolfiesch/ExcelBench).
6
+
7
+ ### Features
8
+
9
+ - **Read mode**: Full-fidelity xlsx reading via calamine-styles (Font, Fill, Border, Alignment, NumberFormat)
10
+ - **Write mode**: Full-fidelity xlsx writing via rust_xlsxwriter
11
+ - **Modify mode**: Surgical ZIP patching for fast read-modify-write workflows (10-14x vs openpyxl)
12
+ - **openpyxl-compatible API**: `load_workbook()`, `Workbook()`, Cell/Worksheet/Font/PatternFill/Border
13
+ - **Bulk operations**: `read_sheet_values()` / `write_sheet_values()` for batch cell I/O
14
+ - **Performance**: 3-5x faster than openpyxl for per-cell operations, up to 5x for bulk writes