xlsxturbo 0.10.1__tar.gz → 0.10.2__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 (26) hide show
  1. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/.github/workflows/ci.yml +29 -0
  2. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/.github/workflows/release.yml +1 -1
  3. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/CHANGELOG.md +25 -1
  4. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/Cargo.lock +44 -86
  5. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/Cargo.toml +3 -3
  6. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/PKG-INFO +1 -4
  7. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/README.md +0 -3
  8. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/pyproject.toml +1 -1
  9. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/python/xlsxturbo/__init__.pyi +1 -1
  10. xlsxturbo-0.10.2/python/xlsxturbo/py.typed +0 -0
  11. xlsxturbo-0.10.2/src/convert.rs +763 -0
  12. xlsxturbo-0.10.2/src/features.rs +1164 -0
  13. xlsxturbo-0.10.2/src/lib.rs +938 -0
  14. xlsxturbo-0.10.2/src/parse.rs +449 -0
  15. xlsxturbo-0.10.2/src/types.rs +143 -0
  16. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/tests/test_features.py +789 -0
  17. xlsxturbo-0.10.1/src/lib.rs +0 -3566
  18. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/.github/dependabot.yml +0 -0
  19. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/.gitignore +0 -0
  20. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/BUILD.md +0 -0
  21. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/LICENSE +0 -0
  22. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/ROADMAP.md +0 -0
  23. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/benchmarks/benchmark.py +0 -0
  24. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/benchmarks/benchmark_parallel.py +0 -0
  25. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/python/xlsxturbo/__init__.py +0 -0
  26. {xlsxturbo-0.10.1 → xlsxturbo-0.10.2}/src/main.rs +0 -0
@@ -24,6 +24,35 @@ jobs:
24
24
  - name: Build
25
25
  run: cargo build --release
26
26
 
27
+ python-test:
28
+ runs-on: ubuntu-latest
29
+ steps:
30
+ - uses: actions/checkout@v6
31
+
32
+ - name: Set up Rust
33
+ uses: dtolnay/rust-toolchain@stable
34
+
35
+ - name: Set up Python
36
+ uses: actions/setup-python@v5
37
+ with:
38
+ python-version: '3.12'
39
+
40
+ - name: Install dependencies
41
+ run: |
42
+ python -m venv .venv
43
+ source .venv/bin/activate
44
+ pip install maturin pandas polars openpyxl
45
+
46
+ - name: Build and install xlsxturbo
47
+ run: |
48
+ source .venv/bin/activate
49
+ maturin develop --release
50
+
51
+ - name: Run Python integration tests
52
+ run: |
53
+ source .venv/bin/activate
54
+ python tests/test_features.py
55
+
27
56
  lint:
28
57
  runs-on: ubuntu-latest
29
58
  steps:
@@ -115,7 +115,7 @@ jobs:
115
115
  if: startsWith(github.ref, 'refs/tags/')
116
116
  environment:
117
117
  name: pypi
118
- url: https://pypi.org/p/fast_xlsx
118
+ url: https://pypi.org/p/xlsxturbo
119
119
  permissions:
120
120
  id-token: write # Required for trusted publishing
121
121
  steps:
@@ -5,6 +5,29 @@ 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.10.2] - 2026-02-06
9
+
10
+ ### Fixed
11
+ - **Wildcard pattern panic** - `matches_pattern("*")` no longer panics on lone `*` pattern
12
+ - **Silent datetime defaults** - Datetime/date attribute extraction now propagates errors instead of silently defaulting to 1900
13
+ - **Index overflow safety** - Row count and column count use checked casts (`u32::try_from`, `u16::try_from`) instead of `as` casts
14
+ - **PyPI URL in release workflow** - Fixed leftover `fast_xlsx` reference to `xlsxturbo`
15
+ - **Validation type aliases** - Added `whole`, `integer`, `number`, `textlength`, `length` aliases to type stubs
16
+ - **CHANGELOG accuracy** - `constant_memory` entry now lists all 12 disabled features
17
+
18
+ ### Changed
19
+ - **Module split** - Split monolithic `lib.rs` into `convert.rs`, `parse.rs`, `features.rs`, `types.rs`
20
+ - **Deduplicated option extraction** - New `ExtractedOptions` struct reduces `convert_dataframe_to_xlsx` from 22 to 12 parameters
21
+ - **Merged format parsers** - `parse_header_format` and `parse_column_format` share a single `parse_format_dict` implementation
22
+ - **Dependencies** - Updated `pyo3` 0.27 -> 0.28, `rust_xlsxwriter` 0.92 -> 0.93
23
+ - **CI** - Added Python integration test job (83 tests with pandas, polars, openpyxl)
24
+ - **PEP 561** - Added `py.typed` marker file for type checker support
25
+
26
+ ### Tests
27
+ - Added `TestConditionalFormatting` (5 tests), `TestConstantMemoryMode` (3 tests), `TestRowHeights` (3 tests)
28
+ - Upgraded ~10 shallow tests with openpyxl content verification (column widths, table names, header formats, validations, comments)
29
+ - Total: 83 Python integration tests, 12 Rust unit tests
30
+
8
31
  ## [0.10.1] - 2026-01-16
9
32
 
10
33
  ### Changed
@@ -152,7 +175,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
152
175
  - `constant_memory` parameter - minimize RAM usage for very large files
153
176
  - Uses rust_xlsxwriter's streaming mode to flush rows to disk
154
177
  - Ideal for files with millions of rows
155
- - Note: Disables `table_style`, `freeze_panes`, `row_heights`, and `autofit`
178
+ - Note: Disables `table_style`, `freeze_panes`, `row_heights`, `autofit`, `conditional_formats`, `formula_columns`, `merged_ranges`, `hyperlinks`, `comments`, `validations`, `rich_text`, and `images`
156
179
  - Column widths still work in constant memory mode
157
180
  - Example: `xlsxturbo.df_to_xlsx(df, "big.xlsx", constant_memory=True)`
158
181
  - `column_widths` parameter - set custom column widths by index
@@ -213,6 +236,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
213
236
  - Support for custom sheet names
214
237
  - Verbose mode for progress reporting
215
238
 
239
+ [0.10.2]: https://github.com/tstone-1/xlsxturbo/releases/tag/v0.10.2
216
240
  [0.10.1]: https://github.com/tstone-1/xlsxturbo/releases/tag/v0.10.1
217
241
  [0.10.0]: https://github.com/tstone-1/xlsxturbo/releases/tag/v0.10.0
218
242
  [0.9.0]: https://github.com/tstone-1/xlsxturbo/releases/tag/v0.9.0
@@ -67,15 +67,6 @@ dependencies = [
67
67
  "windows-sys",
68
68
  ]
69
69
 
70
- [[package]]
71
- name = "arbitrary"
72
- version = "1.4.2"
73
- source = "registry+https://github.com/rust-lang/crates.io-index"
74
- checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
75
- dependencies = [
76
- "derive_arbitrary",
77
- ]
78
-
79
70
  [[package]]
80
71
  name = "autocfg"
81
72
  version = "1.5.0"
@@ -96,9 +87,9 @@ checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510"
96
87
 
97
88
  [[package]]
98
89
  name = "cc"
99
- version = "1.2.52"
90
+ version = "1.2.55"
100
91
  source = "registry+https://github.com/rust-lang/crates.io-index"
101
- checksum = "cd4932aefd12402b36c60956a4fe0035421f544799057659ff86f923657aada3"
92
+ checksum = "47b26a0954ae34af09b50f0de26458fa95369a0d478d8236d3f93082b219bd29"
102
93
  dependencies = [
103
94
  "find-msvc-tools",
104
95
  "shlex",
@@ -125,9 +116,9 @@ dependencies = [
125
116
 
126
117
  [[package]]
127
118
  name = "clap"
128
- version = "4.5.54"
119
+ version = "4.5.57"
129
120
  source = "registry+https://github.com/rust-lang/crates.io-index"
130
- checksum = "c6e6ff9dcd79cff5cd969a17a545d79e84ab086e444102a591e288a8aa3ce394"
121
+ checksum = "6899ea499e3fb9305a65d5ebf6e3d2248c5fab291f300ad0a704fbe142eae31a"
131
122
  dependencies = [
132
123
  "clap_builder",
133
124
  "clap_derive",
@@ -135,9 +126,9 @@ dependencies = [
135
126
 
136
127
  [[package]]
137
128
  name = "clap_builder"
138
- version = "4.5.54"
129
+ version = "4.5.57"
139
130
  source = "registry+https://github.com/rust-lang/crates.io-index"
140
- checksum = "fa42cf4d2b7a41bc8f663a7cab4031ebafa1bf3875705bfaf8466dc60ab52c00"
131
+ checksum = "7b12c8b680195a62a8364d16b8447b01b6c2c8f9aaf68bee653be34d4245e238"
141
132
  dependencies = [
142
133
  "anstream",
143
134
  "anstyle",
@@ -147,9 +138,9 @@ dependencies = [
147
138
 
148
139
  [[package]]
149
140
  name = "clap_derive"
150
- version = "4.5.49"
141
+ version = "4.5.55"
151
142
  source = "registry+https://github.com/rust-lang/crates.io-index"
152
- checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671"
143
+ checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5"
153
144
  dependencies = [
154
145
  "heck",
155
146
  "proc-macro2",
@@ -230,17 +221,6 @@ dependencies = [
230
221
  "memchr",
231
222
  ]
232
223
 
233
- [[package]]
234
- name = "derive_arbitrary"
235
- version = "1.4.2"
236
- source = "registry+https://github.com/rust-lang/crates.io-index"
237
- checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a"
238
- dependencies = [
239
- "proc-macro2",
240
- "quote",
241
- "syn",
242
- ]
243
-
244
224
  [[package]]
245
225
  name = "either"
246
226
  version = "1.15.0"
@@ -271,17 +251,16 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
271
251
 
272
252
  [[package]]
273
253
  name = "find-msvc-tools"
274
- version = "0.1.7"
254
+ version = "0.1.9"
275
255
  source = "registry+https://github.com/rust-lang/crates.io-index"
276
- checksum = "f449e6c6c08c865631d4890cfacf252b3d396c9bcc83adb6623cdb02a8336c41"
256
+ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
277
257
 
278
258
  [[package]]
279
259
  name = "flate2"
280
- version = "1.1.8"
260
+ version = "1.1.9"
281
261
  source = "registry+https://github.com/rust-lang/crates.io-index"
282
- checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369"
262
+ checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
283
263
  dependencies = [
284
- "crc32fast",
285
264
  "miniz_oxide",
286
265
  "zlib-rs",
287
266
  ]
@@ -312,9 +291,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
312
291
 
313
292
  [[package]]
314
293
  name = "iana-time-zone"
315
- version = "0.1.64"
294
+ version = "0.1.65"
316
295
  source = "registry+https://github.com/rust-lang/crates.io-index"
317
- checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb"
296
+ checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470"
318
297
  dependencies = [
319
298
  "android_system_properties",
320
299
  "core-foundation-sys",
@@ -344,15 +323,6 @@ dependencies = [
344
323
  "hashbrown",
345
324
  ]
346
325
 
347
- [[package]]
348
- name = "indoc"
349
- version = "2.0.7"
350
- source = "registry+https://github.com/rust-lang/crates.io-index"
351
- checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
352
- dependencies = [
353
- "rustversion",
354
- ]
355
-
356
326
  [[package]]
357
327
  name = "is_terminal_polyfill"
358
328
  version = "1.70.2"
@@ -399,15 +369,6 @@ version = "2.7.6"
399
369
  source = "registry+https://github.com/rust-lang/crates.io-index"
400
370
  checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
401
371
 
402
- [[package]]
403
- name = "memoffset"
404
- version = "0.9.1"
405
- source = "registry+https://github.com/rust-lang/crates.io-index"
406
- checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
407
- dependencies = [
408
- "autocfg",
409
- ]
410
-
411
372
  [[package]]
412
373
  name = "miniz_oxide"
413
374
  version = "0.8.9"
@@ -441,50 +402,47 @@ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
441
402
 
442
403
  [[package]]
443
404
  name = "portable-atomic"
444
- version = "1.13.0"
405
+ version = "1.13.1"
445
406
  source = "registry+https://github.com/rust-lang/crates.io-index"
446
- checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950"
407
+ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
447
408
 
448
409
  [[package]]
449
410
  name = "proc-macro2"
450
- version = "1.0.105"
411
+ version = "1.0.106"
451
412
  source = "registry+https://github.com/rust-lang/crates.io-index"
452
- checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7"
413
+ checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
453
414
  dependencies = [
454
415
  "unicode-ident",
455
416
  ]
456
417
 
457
418
  [[package]]
458
419
  name = "pyo3"
459
- version = "0.27.2"
420
+ version = "0.28.0"
460
421
  source = "registry+https://github.com/rust-lang/crates.io-index"
461
- checksum = "ab53c047fcd1a1d2a8820fe84f05d6be69e9526be40cb03b73f86b6b03e6d87d"
422
+ checksum = "fcf3ccafdf54c050be48a3a086d372f77ba6615f5057211607cd30e5ac5cec6d"
462
423
  dependencies = [
463
- "indoc",
464
424
  "libc",
465
- "memoffset",
466
425
  "once_cell",
467
426
  "portable-atomic",
468
427
  "pyo3-build-config",
469
428
  "pyo3-ffi",
470
429
  "pyo3-macros",
471
- "unindent",
472
430
  ]
473
431
 
474
432
  [[package]]
475
433
  name = "pyo3-build-config"
476
- version = "0.27.2"
434
+ version = "0.28.0"
477
435
  source = "registry+https://github.com/rust-lang/crates.io-index"
478
- checksum = "b455933107de8642b4487ed26d912c2d899dec6114884214a0b3bb3be9261ea6"
436
+ checksum = "972720a441c91fd9c49f212a1d2d74c6e3803b231ebc8d66c51efbd7ccab11c8"
479
437
  dependencies = [
480
438
  "target-lexicon",
481
439
  ]
482
440
 
483
441
  [[package]]
484
442
  name = "pyo3-ffi"
485
- version = "0.27.2"
443
+ version = "0.28.0"
486
444
  source = "registry+https://github.com/rust-lang/crates.io-index"
487
- checksum = "1c85c9cbfaddf651b1221594209aed57e9e5cff63c4d11d1feead529b872a089"
445
+ checksum = "5994456d9dab8934d600d3867571b6410f24fbd6002570ad56356733eb54859b"
488
446
  dependencies = [
489
447
  "libc",
490
448
  "pyo3-build-config",
@@ -492,9 +450,9 @@ dependencies = [
492
450
 
493
451
  [[package]]
494
452
  name = "pyo3-macros"
495
- version = "0.27.2"
453
+ version = "0.28.0"
496
454
  source = "registry+https://github.com/rust-lang/crates.io-index"
497
- checksum = "0a5b10c9bf9888125d917fb4d2ca2d25c8df94c7ab5a52e13313a07e050a3b02"
455
+ checksum = "11ce9cc8d81b3c4969748807604d92b4eef363c5bb82b1a1bdb34ec6f1093a18"
498
456
  dependencies = [
499
457
  "proc-macro2",
500
458
  "pyo3-macros-backend",
@@ -504,9 +462,9 @@ dependencies = [
504
462
 
505
463
  [[package]]
506
464
  name = "pyo3-macros-backend"
507
- version = "0.27.2"
465
+ version = "0.28.0"
508
466
  source = "registry+https://github.com/rust-lang/crates.io-index"
509
- checksum = "03b51720d314836e53327f5871d4c0cfb4fb37cc2c4a11cc71907a86342c40f9"
467
+ checksum = "eaf4b60036a154d23282679b658e3cc7d88d3b8c9a40b43824785f232d2e1b98"
510
468
  dependencies = [
511
469
  "heck",
512
470
  "proc-macro2",
@@ -517,9 +475,9 @@ dependencies = [
517
475
 
518
476
  [[package]]
519
477
  name = "quote"
520
- version = "1.0.43"
478
+ version = "1.0.44"
521
479
  source = "registry+https://github.com/rust-lang/crates.io-index"
522
- checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a"
480
+ checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
523
481
  dependencies = [
524
482
  "proc-macro2",
525
483
  ]
@@ -552,9 +510,9 @@ dependencies = [
552
510
 
553
511
  [[package]]
554
512
  name = "rust_xlsxwriter"
555
- version = "0.92.3"
513
+ version = "0.93.0"
556
514
  source = "registry+https://github.com/rust-lang/crates.io-index"
557
- checksum = "0733a44f344e900c4221f33a16aa92a59e3e7c7ad37d39a1c753afecb1f2bd02"
515
+ checksum = "84205e093885c6b4e2d93e225a148df2e7fe67a668c27e3322e56e0d93721848"
558
516
  dependencies = [
559
517
  "tempfile",
560
518
  "zip",
@@ -654,16 +612,16 @@ dependencies = [
654
612
  ]
655
613
 
656
614
  [[package]]
657
- name = "unicode-ident"
658
- version = "1.0.22"
615
+ name = "typed-path"
616
+ version = "0.12.2"
659
617
  source = "registry+https://github.com/rust-lang/crates.io-index"
660
- checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
618
+ checksum = "3015e6ce46d5ad8751e4a772543a30c7511468070e98e64e20165f8f81155b64"
661
619
 
662
620
  [[package]]
663
- name = "unindent"
664
- version = "0.2.4"
621
+ name = "unicode-ident"
622
+ version = "1.0.22"
665
623
  source = "registry+https://github.com/rust-lang/crates.io-index"
666
- checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
624
+ checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
667
625
 
668
626
  [[package]]
669
627
  name = "utf8parse"
@@ -801,7 +759,7 @@ checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
801
759
 
802
760
  [[package]]
803
761
  name = "xlsxturbo"
804
- version = "0.10.1"
762
+ version = "0.10.2"
805
763
  dependencies = [
806
764
  "chrono",
807
765
  "clap",
@@ -814,23 +772,23 @@ dependencies = [
814
772
 
815
773
  [[package]]
816
774
  name = "zip"
817
- version = "6.0.0"
775
+ version = "7.4.0"
818
776
  source = "registry+https://github.com/rust-lang/crates.io-index"
819
- checksum = "eb2a05c7c36fde6c09b08576c9f7fb4cda705990f73b58fe011abf7dfb24168b"
777
+ checksum = "cc12baa6db2b15a140161ce53d72209dacea594230798c24774139b54ecaa980"
820
778
  dependencies = [
821
- "arbitrary",
822
779
  "crc32fast",
823
780
  "flate2",
824
781
  "indexmap",
825
782
  "memchr",
783
+ "typed-path",
826
784
  "zopfli",
827
785
  ]
828
786
 
829
787
  [[package]]
830
788
  name = "zlib-rs"
831
- version = "0.5.5"
789
+ version = "0.6.0"
832
790
  source = "registry+https://github.com/rust-lang/crates.io-index"
833
- checksum = "40990edd51aae2c2b6907af74ffb635029d5788228222c4bb811e9351c0caad3"
791
+ checksum = "a7948af682ccbc3342b6e9420e8c51c1fe5d7bf7756002b4a3c6cabfe96a7e3c"
834
792
 
835
793
  [[package]]
836
794
  name = "zopfli"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "xlsxturbo"
3
- version = "0.10.1"
3
+ version = "0.10.2"
4
4
  edition = "2021"
5
5
  description = "High-performance Excel writer with automatic type detection (pandas, polars, CSV)"
6
6
  license = "MIT"
@@ -18,10 +18,10 @@ name = "xlsxturbo"
18
18
  path = "src/main.rs"
19
19
 
20
20
  [dependencies]
21
- rust_xlsxwriter = { version = "0.92", features = ["constant_memory"] }
21
+ rust_xlsxwriter = { version = "0.93", features = ["constant_memory"] }
22
22
  csv = "1.3"
23
23
  clap = { version = "4.5", features = ["derive"] }
24
- pyo3 = { version = "0.27", features = ["extension-module", "abi3-py38"] }
24
+ pyo3 = { version = "0.28", features = ["extension-module", "abi3-py38"] }
25
25
  chrono = "0.4"
26
26
  rayon = "1.10"
27
27
  indexmap = "2.7"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xlsxturbo
3
- Version: 0.10.1
3
+ Version: 0.10.2
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: Intended Audience :: Science/Research
@@ -745,10 +745,7 @@ xlsxturbo.dfs_to_xlsx([
745
745
  - `rich_text`
746
746
  - `images`
747
747
  - `autofit`
748
- - `conditional_formats`
749
748
  - `formula_columns`
750
- - `merged_ranges`
751
- - `hyperlinks`
752
749
 
753
750
  Column widths still work in constant memory mode.
754
751
 
@@ -712,10 +712,7 @@ xlsxturbo.dfs_to_xlsx([
712
712
  - `rich_text`
713
713
  - `images`
714
714
  - `autofit`
715
- - `conditional_formats`
716
715
  - `formula_columns`
717
- - `merged_ranges`
718
- - `hyperlinks`
719
716
 
720
717
  Column widths still work in constant memory mode.
721
718
 
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "xlsxturbo"
7
- version = "0.10.1"
7
+ version = "0.10.2"
8
8
  description = "High-performance Excel writer with automatic type detection (pandas, polars, CSV)"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -3,7 +3,7 @@
3
3
  from typing import Literal, TypedDict
4
4
 
5
5
  DateOrder = Literal["auto", "mdy", "us", "dmy", "eu", "european"]
6
- ValidationType = Literal["list", "whole_number", "decimal", "text_length"]
6
+ ValidationType = Literal["list", "whole_number", "whole", "integer", "decimal", "number", "text_length", "textlength", "length"]
7
7
 
8
8
  class HeaderFormat(TypedDict, total=False):
9
9
  """Header cell formatting options. All fields are optional."""
File without changes