xlsxturbo 0.7.0__tar.gz → 0.8.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.
@@ -0,0 +1,15 @@
1
+ version: 2
2
+ updates:
3
+ # Rust dependencies (Cargo.toml)
4
+ - package-ecosystem: "cargo"
5
+ directory: "/"
6
+ schedule:
7
+ interval: "weekly"
8
+ open-pull-requests-limit: 5
9
+
10
+ # GitHub Actions
11
+ - package-ecosystem: "github-actions"
12
+ directory: "/"
13
+ schedule:
14
+ interval: "weekly"
15
+ open-pull-requests-limit: 3
@@ -13,7 +13,7 @@ jobs:
13
13
  test:
14
14
  runs-on: ubuntu-latest
15
15
  steps:
16
- - uses: actions/checkout@v4
16
+ - uses: actions/checkout@v6
17
17
 
18
18
  - name: Set up Rust
19
19
  uses: dtolnay/rust-toolchain@stable
@@ -27,7 +27,7 @@ jobs:
27
27
  lint:
28
28
  runs-on: ubuntu-latest
29
29
  steps:
30
- - uses: actions/checkout@v4
30
+ - uses: actions/checkout@v6
31
31
 
32
32
  - name: Set up Rust
33
33
  uses: dtolnay/rust-toolchain@stable
@@ -17,9 +17,9 @@ jobs:
17
17
  matrix:
18
18
  target: [x86_64, aarch64]
19
19
  steps:
20
- - uses: actions/checkout@v4
20
+ - uses: actions/checkout@v6
21
21
 
22
- - uses: actions/setup-python@v5
22
+ - uses: actions/setup-python@v6
23
23
  with:
24
24
  python-version: '3.11'
25
25
 
@@ -44,9 +44,9 @@ jobs:
44
44
  matrix:
45
45
  target: [x64]
46
46
  steps:
47
- - uses: actions/checkout@v4
47
+ - uses: actions/checkout@v6
48
48
 
49
- - uses: actions/setup-python@v5
49
+ - uses: actions/setup-python@v6
50
50
  with:
51
51
  python-version: '3.11'
52
52
  architecture: ${{ matrix.target }}
@@ -70,9 +70,9 @@ jobs:
70
70
  matrix:
71
71
  target: [x86_64, aarch64]
72
72
  steps:
73
- - uses: actions/checkout@v4
73
+ - uses: actions/checkout@v6
74
74
 
75
- - uses: actions/setup-python@v5
75
+ - uses: actions/setup-python@v6
76
76
  with:
77
77
  python-version: '3.11'
78
78
 
@@ -93,7 +93,7 @@ jobs:
93
93
  sdist:
94
94
  runs-on: ubuntu-latest
95
95
  steps:
96
- - uses: actions/checkout@v4
96
+ - uses: actions/checkout@v6
97
97
 
98
98
  - name: Build sdist
99
99
  uses: PyO3/maturin-action@v1
@@ -120,7 +120,7 @@ jobs:
120
120
  id-token: write # Required for trusted publishing
121
121
  steps:
122
122
  - name: Download all wheels
123
- uses: actions/download-artifact@v4
123
+ uses: actions/download-artifact@v7
124
124
  with:
125
125
  pattern: wheels-*
126
126
  path: dist
@@ -0,0 +1,191 @@
1
+ # Build & Release Guide
2
+
3
+ ## Prerequisites
4
+
5
+ - Rust toolchain (stable): https://rustup.rs/
6
+ - Python 3.8+
7
+ - maturin: `pip install maturin`
8
+
9
+ ## Local Development
10
+
11
+ ### Setup
12
+
13
+ ```bash
14
+ # Clone and enter directory
15
+ git clone https://github.com/tstone-1/xlsxturbo.git
16
+ cd xlsxturbo
17
+
18
+ # Install in development mode
19
+ pip install -e ".[dev]"
20
+ # Or with maturin:
21
+ maturin develop --release
22
+ ```
23
+
24
+ ### Running Tests
25
+
26
+ ```bash
27
+ # Rust unit tests
28
+ cargo test
29
+
30
+ # Python integration tests
31
+ python tests/test_features.py
32
+
33
+ # Or with pytest
34
+ pytest tests/
35
+ ```
36
+
37
+ ### Code Quality Checks
38
+
39
+ ```bash
40
+ # Format check (must pass before commit)
41
+ cargo fmt --check
42
+
43
+ # Linter (must pass with no warnings)
44
+ cargo clippy -- -D warnings
45
+
46
+ # Format code (if check fails)
47
+ cargo fmt
48
+ ```
49
+
50
+ ## Pre-Push Checklist
51
+
52
+ Before pushing to main or creating a PR, verify all checks pass locally:
53
+
54
+ ```bash
55
+ # 1. Format check
56
+ cargo fmt --check
57
+
58
+ # 2. Linter (no warnings)
59
+ cargo clippy -- -D warnings
60
+
61
+ # 3. Rust tests
62
+ cargo test
63
+
64
+ # 4. Build release
65
+ maturin develop --release
66
+
67
+ # 5. Python tests
68
+ python tests/test_features.py
69
+ ```
70
+
71
+ All 5 steps must succeed before pushing.
72
+
73
+ ## Release Process
74
+
75
+ ### 1. Update Version
76
+
77
+ Update version in both files (must match):
78
+
79
+ - `Cargo.toml`: `version = "X.Y.Z"`
80
+ - `pyproject.toml`: `version = "X.Y.Z"`
81
+
82
+ Follow SemVer:
83
+ - MAJOR: Breaking API changes
84
+ - MINOR: New features (backward compatible)
85
+ - PATCH: Bug fixes (backward compatible)
86
+
87
+ ### 2. Update CHANGELOG.md
88
+
89
+ Add entry for new version with:
90
+ - Date
91
+ - Summary of changes
92
+ - Breaking changes (if any)
93
+
94
+ ### 3. Commit Version Bump
95
+
96
+ ```bash
97
+ git add Cargo.toml pyproject.toml CHANGELOG.md
98
+ git commit -m "chore: bump version to X.Y.Z"
99
+ git push origin main
100
+ ```
101
+
102
+ ### 4. Check Dependabot PRs
103
+
104
+ Before releasing, review open Dependabot PRs:
105
+
106
+ 1. Go to: https://github.com/tstone-1/xlsxturbo/pulls
107
+ 2. Check for open Dependabot PRs (dependency updates)
108
+ 3. For each PR, decide:
109
+ - **Merge** if CI passes and update is safe
110
+ - **Close** if update causes issues or is not needed yet
111
+ - **Defer** to next release (document why)
112
+
113
+ Don't release with unreviewed dependency PRs piling up.
114
+
115
+ ### 5. Verify CI Passes
116
+
117
+ **IMPORTANT:** Before creating a release tag, verify GitHub Actions succeed.
118
+
119
+ 1. Go to: https://github.com/tstone-1/xlsxturbo/actions
120
+ 2. Check the latest push to `main`
121
+ 3. Verify both workflows show green checkmarks:
122
+ - **CI / test (push)** - Rust tests pass
123
+ - **CI / lint (push)** - Format and clippy pass
124
+
125
+ Do NOT proceed if CI is failing.
126
+
127
+ ### 6. Create Release Tag
128
+
129
+ ```bash
130
+ git tag vX.Y.Z
131
+ git push origin vX.Y.Z
132
+ ```
133
+
134
+ ### 7. Verify Release Workflow
135
+
136
+ After pushing the tag:
137
+
138
+ 1. Go to: https://github.com/tstone-1/xlsxturbo/actions
139
+ 2. Watch the **Release** workflow
140
+ 3. Verify all jobs succeed:
141
+ - **linux** (x86_64, aarch64)
142
+ - **windows** (x64)
143
+ - **macos** (x86_64, aarch64)
144
+ - **sdist**
145
+ - **Publish to PyPI**
146
+
147
+ ### 8. Verify PyPI Publication
148
+
149
+ 1. Go to: https://pypi.org/project/xlsxturbo/
150
+ 2. Verify new version appears
151
+ 3. Test installation: `pip install xlsxturbo==X.Y.Z`
152
+
153
+ ## Troubleshooting
154
+
155
+ ### CI Lint Fails
156
+
157
+ ```bash
158
+ # Check what needs formatting
159
+ cargo fmt --check
160
+
161
+ # Auto-fix formatting
162
+ cargo fmt
163
+
164
+ # Check clippy warnings
165
+ cargo clippy -- -D warnings
166
+ ```
167
+
168
+ ### Release Workflow Fails
169
+
170
+ 1. Check which job failed in GitHub Actions
171
+ 2. Common issues:
172
+ - **Build fails**: Check Cargo.toml dependencies
173
+ - **PyPI publish fails**: Check PyPI trusted publisher settings
174
+ - **Wheel build fails**: Check maturin configuration
175
+
176
+ ### Maturin Develop Doesn't Update
177
+
178
+ If changes aren't reflected after `maturin develop`:
179
+
180
+ ```bash
181
+ # Uninstall and reinstall
182
+ pip uninstall xlsxturbo -y
183
+ pip install .
184
+ ```
185
+
186
+ ## GitHub Actions Summary
187
+
188
+ | Workflow | Trigger | Jobs |
189
+ |----------|---------|------|
190
+ | CI | Push/PR to main | `test` (cargo test), `lint` (fmt + clippy) |
191
+ | Release | Push tag `v*` | Build wheels (linux/win/mac) + PyPI publish |
@@ -5,13 +5,35 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.8.0] - 2026-01-15
9
+
10
+ ### Added
11
+ - **Date order parameter** - `date_order` for `csv_to_xlsx()` to handle ambiguous dates
12
+ - `"auto"` (default): ISO first, then European (DMY), then US (MDY)
13
+ - `"mdy"` or `"us"`: US format where 01-02-2024 = January 2nd
14
+ - `"dmy"` or `"eu"`: European format where 01-02-2024 = February 1st
15
+ - Also available in CLI: `--date-order us`
16
+ - **BUILD.md** - Developer guide for building, testing, and releasing
17
+
18
+ ### Fixed
19
+ - **Pattern matching order** - `column_formats` patterns now match in definition order (first match wins). Previously, HashMap iteration order was non-deterministic.
20
+ - **Empty DataFrame with table_style** - No longer crashes; tables are skipped when DataFrame has no data rows
21
+ - **Hex color validation** - Colors like `#FF` now raise descriptive error instead of silently misparsing
22
+ - **Invalid table_style validation** - Unknown styles now raise error instead of silently defaulting to Medium9
23
+ - **CLI division by zero** - Instant conversions now show "instant rows/sec" instead of "inf"
24
+
25
+ ### Changed
26
+ - Uses `indexmap` crate to preserve pattern insertion order
27
+ - Updated `pyo3` 0.23 → 0.27, `rust_xlsxwriter` 0.79 → 0.92
28
+ - Added Dependabot for automated dependency updates
29
+
8
30
  ## [0.7.0] - 2025-12-28
9
31
 
10
32
  ### Added
11
33
  - **Column formatting with wildcards** - `column_formats` parameter for styling columns by pattern
12
34
  - Wildcard patterns: `prefix*`, `*suffix`, `*contains*`, or exact match
13
35
  - Format options: `bg_color`, `font_color`, `num_format`, `bold`, `italic`, `underline`, `border`
14
- - Example: `column_formats={'mcpt_*': {'bg_color': '#D6EAF8', 'num_format': '0.00000', 'border': True}}`
36
+ - Example: `column_formats={'price_*': {'bg_color': '#D6EAF8', 'num_format': '$#,##0.00', 'border': True}}`
15
37
  - Available in both `df_to_xlsx()` and `dfs_to_xlsx()`
16
38
  - Per-sheet column formats via options dict in `dfs_to_xlsx()`
17
39
 
@@ -121,6 +143,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
121
143
  - Support for custom sheet names
122
144
  - Verbose mode for progress reporting
123
145
 
146
+ [0.8.0]: https://github.com/tstone-1/xlsxturbo/releases/tag/v0.8.0
124
147
  [0.7.0]: https://github.com/tstone-1/xlsxturbo/releases/tag/v0.7.0
125
148
  [0.6.0]: https://github.com/tstone-1/xlsxturbo/releases/tag/v0.6.0
126
149
  [0.5.0]: https://github.com/tstone-1/xlsxturbo/releases/tag/v0.5.0
@@ -96,9 +96,9 @@ checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510"
96
96
 
97
97
  [[package]]
98
98
  name = "cc"
99
- version = "1.2.51"
99
+ version = "1.2.52"
100
100
  source = "registry+https://github.com/rust-lang/crates.io-index"
101
- checksum = "7a0aeaff4ff1a90589618835a598e545176939b97874f7abc7851caa0618f203"
101
+ checksum = "cd4932aefd12402b36c60956a4fe0035421f544799057659ff86f923657aada3"
102
102
  dependencies = [
103
103
  "find-msvc-tools",
104
104
  "shlex",
@@ -112,9 +112,9 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
112
112
 
113
113
  [[package]]
114
114
  name = "chrono"
115
- version = "0.4.42"
115
+ version = "0.4.43"
116
116
  source = "registry+https://github.com/rust-lang/crates.io-index"
117
- checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
117
+ checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118"
118
118
  dependencies = [
119
119
  "iana-time-zone",
120
120
  "js-sys",
@@ -125,9 +125,9 @@ dependencies = [
125
125
 
126
126
  [[package]]
127
127
  name = "clap"
128
- version = "4.5.53"
128
+ version = "4.5.54"
129
129
  source = "registry+https://github.com/rust-lang/crates.io-index"
130
- checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8"
130
+ checksum = "c6e6ff9dcd79cff5cd969a17a545d79e84ab086e444102a591e288a8aa3ce394"
131
131
  dependencies = [
132
132
  "clap_builder",
133
133
  "clap_derive",
@@ -135,9 +135,9 @@ dependencies = [
135
135
 
136
136
  [[package]]
137
137
  name = "clap_builder"
138
- version = "4.5.53"
138
+ version = "4.5.54"
139
139
  source = "registry+https://github.com/rust-lang/crates.io-index"
140
- checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00"
140
+ checksum = "fa42cf4d2b7a41bc8f663a7cab4031ebafa1bf3875705bfaf8466dc60ab52c00"
141
141
  dependencies = [
142
142
  "anstream",
143
143
  "anstyle",
@@ -159,9 +159,9 @@ dependencies = [
159
159
 
160
160
  [[package]]
161
161
  name = "clap_lex"
162
- version = "0.7.6"
162
+ version = "0.7.7"
163
163
  source = "registry+https://github.com/rust-lang/crates.io-index"
164
- checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d"
164
+ checksum = "c3e64b0cc0439b12df2fa678eae89a1c56a529fd067a9115f7827f1fffd22b32"
165
165
 
166
166
  [[package]]
167
167
  name = "colorchoice"
@@ -241,17 +241,6 @@ dependencies = [
241
241
  "syn",
242
242
  ]
243
243
 
244
- [[package]]
245
- name = "displaydoc"
246
- version = "0.2.5"
247
- source = "registry+https://github.com/rust-lang/crates.io-index"
248
- checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
249
- dependencies = [
250
- "proc-macro2",
251
- "quote",
252
- "syn",
253
- ]
254
-
255
244
  [[package]]
256
245
  name = "either"
257
246
  version = "1.15.0"
@@ -282,18 +271,19 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
282
271
 
283
272
  [[package]]
284
273
  name = "find-msvc-tools"
285
- version = "0.1.6"
274
+ version = "0.1.7"
286
275
  source = "registry+https://github.com/rust-lang/crates.io-index"
287
- checksum = "645cbb3a84e60b7531617d5ae4e57f7e27308f6445f5abf653209ea76dec8dff"
276
+ checksum = "f449e6c6c08c865631d4890cfacf252b3d396c9bcc83adb6623cdb02a8336c41"
288
277
 
289
278
  [[package]]
290
279
  name = "flate2"
291
- version = "1.1.5"
280
+ version = "1.1.8"
292
281
  source = "registry+https://github.com/rust-lang/crates.io-index"
293
- checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb"
282
+ checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369"
294
283
  dependencies = [
295
284
  "crc32fast",
296
285
  "miniz_oxide",
286
+ "zlib-rs",
297
287
  ]
298
288
 
299
289
  [[package]]
@@ -346,9 +336,9 @@ dependencies = [
346
336
 
347
337
  [[package]]
348
338
  name = "indexmap"
349
- version = "2.12.1"
339
+ version = "2.13.0"
350
340
  source = "registry+https://github.com/rust-lang/crates.io-index"
351
- checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2"
341
+ checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017"
352
342
  dependencies = [
353
343
  "equivalent",
354
344
  "hashbrown",
@@ -377,9 +367,9 @@ checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
377
367
 
378
368
  [[package]]
379
369
  name = "js-sys"
380
- version = "0.3.83"
370
+ version = "0.3.85"
381
371
  source = "registry+https://github.com/rust-lang/crates.io-index"
382
- checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8"
372
+ checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3"
383
373
  dependencies = [
384
374
  "once_cell",
385
375
  "wasm-bindgen",
@@ -387,9 +377,9 @@ dependencies = [
387
377
 
388
378
  [[package]]
389
379
  name = "libc"
390
- version = "0.2.178"
380
+ version = "0.2.180"
391
381
  source = "registry+https://github.com/rust-lang/crates.io-index"
392
- checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091"
382
+ checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc"
393
383
 
394
384
  [[package]]
395
385
  name = "linux-raw-sys"
@@ -457,20 +447,19 @@ checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950"
457
447
 
458
448
  [[package]]
459
449
  name = "proc-macro2"
460
- version = "1.0.104"
450
+ version = "1.0.105"
461
451
  source = "registry+https://github.com/rust-lang/crates.io-index"
462
- checksum = "9695f8df41bb4f3d222c95a67532365f569318332d03d5f3f67f37b20e6ebdf0"
452
+ checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7"
463
453
  dependencies = [
464
454
  "unicode-ident",
465
455
  ]
466
456
 
467
457
  [[package]]
468
458
  name = "pyo3"
469
- version = "0.23.5"
459
+ version = "0.27.2"
470
460
  source = "registry+https://github.com/rust-lang/crates.io-index"
471
- checksum = "7778bffd85cf38175ac1f545509665d0b9b92a198ca7941f131f85f7a4f9a872"
461
+ checksum = "ab53c047fcd1a1d2a8820fe84f05d6be69e9526be40cb03b73f86b6b03e6d87d"
472
462
  dependencies = [
473
- "cfg-if",
474
463
  "indoc",
475
464
  "libc",
476
465
  "memoffset",
@@ -484,19 +473,18 @@ dependencies = [
484
473
 
485
474
  [[package]]
486
475
  name = "pyo3-build-config"
487
- version = "0.23.5"
476
+ version = "0.27.2"
488
477
  source = "registry+https://github.com/rust-lang/crates.io-index"
489
- checksum = "94f6cbe86ef3bf18998d9df6e0f3fc1050a8c5efa409bf712e661a4366e010fb"
478
+ checksum = "b455933107de8642b4487ed26d912c2d899dec6114884214a0b3bb3be9261ea6"
490
479
  dependencies = [
491
- "once_cell",
492
480
  "target-lexicon",
493
481
  ]
494
482
 
495
483
  [[package]]
496
484
  name = "pyo3-ffi"
497
- version = "0.23.5"
485
+ version = "0.27.2"
498
486
  source = "registry+https://github.com/rust-lang/crates.io-index"
499
- checksum = "e9f1b4c431c0bb1c8fb0a338709859eed0d030ff6daa34368d3b152a63dfdd8d"
487
+ checksum = "1c85c9cbfaddf651b1221594209aed57e9e5cff63c4d11d1feead529b872a089"
500
488
  dependencies = [
501
489
  "libc",
502
490
  "pyo3-build-config",
@@ -504,9 +492,9 @@ dependencies = [
504
492
 
505
493
  [[package]]
506
494
  name = "pyo3-macros"
507
- version = "0.23.5"
495
+ version = "0.27.2"
508
496
  source = "registry+https://github.com/rust-lang/crates.io-index"
509
- checksum = "fbc2201328f63c4710f68abdf653c89d8dbc2858b88c5d88b0ff38a75288a9da"
497
+ checksum = "0a5b10c9bf9888125d917fb4d2ca2d25c8df94c7ab5a52e13313a07e050a3b02"
510
498
  dependencies = [
511
499
  "proc-macro2",
512
500
  "pyo3-macros-backend",
@@ -516,9 +504,9 @@ dependencies = [
516
504
 
517
505
  [[package]]
518
506
  name = "pyo3-macros-backend"
519
- version = "0.23.5"
507
+ version = "0.27.2"
520
508
  source = "registry+https://github.com/rust-lang/crates.io-index"
521
- checksum = "fca6726ad0f3da9c9de093d6f116a93c1a38e417ed73bf138472cf4064f72028"
509
+ checksum = "03b51720d314836e53327f5871d4c0cfb4fb37cc2c4a11cc71907a86342c40f9"
522
510
  dependencies = [
523
511
  "heck",
524
512
  "proc-macro2",
@@ -529,9 +517,9 @@ dependencies = [
529
517
 
530
518
  [[package]]
531
519
  name = "quote"
532
- version = "1.0.42"
520
+ version = "1.0.43"
533
521
  source = "registry+https://github.com/rust-lang/crates.io-index"
534
- checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
522
+ checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a"
535
523
  dependencies = [
536
524
  "proc-macro2",
537
525
  ]
@@ -564,9 +552,9 @@ dependencies = [
564
552
 
565
553
  [[package]]
566
554
  name = "rust_xlsxwriter"
567
- version = "0.79.4"
555
+ version = "0.92.3"
568
556
  source = "registry+https://github.com/rust-lang/crates.io-index"
569
- checksum = "c743cb9f2a4524676020e26ee5f298445a82d882b09956811b1e78ca7e42b440"
557
+ checksum = "0733a44f344e900c4221f33a16aa92a59e3e7c7ad37d39a1c753afecb1f2bd02"
570
558
  dependencies = [
571
559
  "tempfile",
572
560
  "zip",
@@ -637,9 +625,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
637
625
 
638
626
  [[package]]
639
627
  name = "syn"
640
- version = "2.0.111"
628
+ version = "2.0.114"
641
629
  source = "registry+https://github.com/rust-lang/crates.io-index"
642
- checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
630
+ checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a"
643
631
  dependencies = [
644
632
  "proc-macro2",
645
633
  "quote",
@@ -648,9 +636,9 @@ dependencies = [
648
636
 
649
637
  [[package]]
650
638
  name = "target-lexicon"
651
- version = "0.12.16"
639
+ version = "0.13.4"
652
640
  source = "registry+https://github.com/rust-lang/crates.io-index"
653
- checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
641
+ checksum = "b1dd07eb858a2067e2f3c7155d54e929265c264e6f37efe3ee7a8d1b5a1dd0ba"
654
642
 
655
643
  [[package]]
656
644
  name = "tempfile"
@@ -665,26 +653,6 @@ dependencies = [
665
653
  "windows-sys",
666
654
  ]
667
655
 
668
- [[package]]
669
- name = "thiserror"
670
- version = "2.0.17"
671
- source = "registry+https://github.com/rust-lang/crates.io-index"
672
- checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
673
- dependencies = [
674
- "thiserror-impl",
675
- ]
676
-
677
- [[package]]
678
- name = "thiserror-impl"
679
- version = "2.0.17"
680
- source = "registry+https://github.com/rust-lang/crates.io-index"
681
- checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
682
- dependencies = [
683
- "proc-macro2",
684
- "quote",
685
- "syn",
686
- ]
687
-
688
656
  [[package]]
689
657
  name = "unicode-ident"
690
658
  version = "1.0.22"
@@ -714,9 +682,9 @@ dependencies = [
714
682
 
715
683
  [[package]]
716
684
  name = "wasm-bindgen"
717
- version = "0.2.106"
685
+ version = "0.2.108"
718
686
  source = "registry+https://github.com/rust-lang/crates.io-index"
719
- checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd"
687
+ checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566"
720
688
  dependencies = [
721
689
  "cfg-if",
722
690
  "once_cell",
@@ -727,9 +695,9 @@ dependencies = [
727
695
 
728
696
  [[package]]
729
697
  name = "wasm-bindgen-macro"
730
- version = "0.2.106"
698
+ version = "0.2.108"
731
699
  source = "registry+https://github.com/rust-lang/crates.io-index"
732
- checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3"
700
+ checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608"
733
701
  dependencies = [
734
702
  "quote",
735
703
  "wasm-bindgen-macro-support",
@@ -737,9 +705,9 @@ dependencies = [
737
705
 
738
706
  [[package]]
739
707
  name = "wasm-bindgen-macro-support"
740
- version = "0.2.106"
708
+ version = "0.2.108"
741
709
  source = "registry+https://github.com/rust-lang/crates.io-index"
742
- checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40"
710
+ checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55"
743
711
  dependencies = [
744
712
  "bumpalo",
745
713
  "proc-macro2",
@@ -750,9 +718,9 @@ dependencies = [
750
718
 
751
719
  [[package]]
752
720
  name = "wasm-bindgen-shared"
753
- version = "0.2.106"
721
+ version = "0.2.108"
754
722
  source = "registry+https://github.com/rust-lang/crates.io-index"
755
- checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4"
723
+ checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12"
756
724
  dependencies = [
757
725
  "unicode-ident",
758
726
  ]
@@ -833,11 +801,12 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
833
801
 
834
802
  [[package]]
835
803
  name = "xlsxturbo"
836
- version = "0.7.0"
804
+ version = "0.8.0"
837
805
  dependencies = [
838
806
  "chrono",
839
807
  "clap",
840
808
  "csv",
809
+ "indexmap",
841
810
  "pyo3",
842
811
  "rayon",
843
812
  "rust_xlsxwriter",
@@ -845,21 +814,24 @@ dependencies = [
845
814
 
846
815
  [[package]]
847
816
  name = "zip"
848
- version = "2.4.2"
817
+ version = "6.0.0"
849
818
  source = "registry+https://github.com/rust-lang/crates.io-index"
850
- checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50"
819
+ checksum = "eb2a05c7c36fde6c09b08576c9f7fb4cda705990f73b58fe011abf7dfb24168b"
851
820
  dependencies = [
852
821
  "arbitrary",
853
822
  "crc32fast",
854
- "crossbeam-utils",
855
- "displaydoc",
856
823
  "flate2",
857
824
  "indexmap",
858
825
  "memchr",
859
- "thiserror",
860
826
  "zopfli",
861
827
  ]
862
828
 
829
+ [[package]]
830
+ name = "zlib-rs"
831
+ version = "0.5.5"
832
+ source = "registry+https://github.com/rust-lang/crates.io-index"
833
+ checksum = "40990edd51aae2c2b6907af74ffb635029d5788228222c4bb811e9351c0caad3"
834
+
863
835
  [[package]]
864
836
  name = "zopfli"
865
837
  version = "0.8.3"