duke-sheets 0.1.10__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.
- duke_sheets-0.1.10/Cargo.toml +105 -0
- duke_sheets-0.1.10/PKG-INFO +82 -0
- duke_sheets-0.1.10/README.md +57 -0
- duke_sheets-0.1.10/bindings/python/Cargo.lock +1384 -0
- duke_sheets-0.1.10/bindings/python/Cargo.toml +23 -0
- duke_sheets-0.1.10/bindings/python/README.md +57 -0
- duke_sheets-0.1.10/bindings/python/src/lib.rs +902 -0
- duke_sheets-0.1.10/bindings/python/src/types.rs +3210 -0
- duke_sheets-0.1.10/bindings/python/src/workbook_read.rs +130 -0
- duke_sheets-0.1.10/bindings/python/src/worksheet_read.rs +997 -0
- duke_sheets-0.1.10/bindings/python/tests/conftest.py +41 -0
- duke_sheets-0.1.10/bindings/python/tests/test_calculation.py +319 -0
- duke_sheets-0.1.10/bindings/python/tests/test_cells.py +232 -0
- duke_sheets-0.1.10/bindings/python/tests/test_formulas.py +192 -0
- duke_sheets-0.1.10/bindings/python/tests/test_workbook.py +199 -0
- duke_sheets-0.1.10/bindings/python/tests/test_worksheet.py +310 -0
- duke_sheets-0.1.10/bindings/python/uv.lock +228 -0
- duke_sheets-0.1.10/crates/duke-sheets/Cargo.toml +68 -0
- duke_sheets-0.1.10/crates/duke-sheets/benches/calculation.rs +145 -0
- duke_sheets-0.1.10/crates/duke-sheets/benches/csv_roundtrip.rs +50 -0
- duke_sheets-0.1.10/crates/duke-sheets/benches/formula_parser.rs +73 -0
- duke_sheets-0.1.10/crates/duke-sheets/benches/helpers.rs +171 -0
- duke_sheets-0.1.10/crates/duke-sheets/benches/xlsx_read.rs +58 -0
- duke_sheets-0.1.10/crates/duke-sheets/benches/xlsx_write.rs +141 -0
- duke_sheets-0.1.10/crates/duke-sheets/examples/create_xlsx.rs +55 -0
- duke_sheets-0.1.10/crates/duke-sheets/examples/mem_profile.rs +120 -0
- duke_sheets-0.1.10/crates/duke-sheets/examples/profile_calc.rs +592 -0
- duke_sheets-0.1.10/crates/duke-sheets/perf_fixtures.rs +74 -0
- duke_sheets-0.1.10/crates/duke-sheets/src/calculation.rs +4167 -0
- duke_sheets-0.1.10/crates/duke-sheets/src/lib.rs +267 -0
- duke_sheets-0.1.10/crates/duke-sheets/src/prelude.rs +75 -0
- duke_sheets-0.1.10/crates/duke-sheets/tests/chart_corpus.rs +737 -0
- duke_sheets-0.1.10/crates/duke-sheets/tests/chart_parity.rs +417 -0
- duke_sheets-0.1.10/crates/duke-sheets/tests/formula_evaluation.rs +316 -0
- duke_sheets-0.1.10/crates/duke-sheets/tests/formula_parity.rs +279 -0
- duke_sheets-0.1.10/crates/duke-sheets/tests/xlsx_formatting_roundtrip.rs +811 -0
- duke_sheets-0.1.10/crates/duke-sheets/tests/xlsx_roundtrip.rs +5605 -0
- duke_sheets-0.1.10/crates/duke-sheets/tests/xlsx_style_roundtrip.rs +610 -0
- duke_sheets-0.1.10/crates/duke-sheets-chart/Cargo.toml +19 -0
- duke_sheets-0.1.10/crates/duke-sheets-chart/src/axis.rs +136 -0
- duke_sheets-0.1.10/crates/duke-sheets-chart/src/chart.rs +415 -0
- duke_sheets-0.1.10/crates/duke-sheets-chart/src/chart_ex.rs +653 -0
- duke_sheets-0.1.10/crates/duke-sheets-chart/src/config.rs +44 -0
- duke_sheets-0.1.10/crates/duke-sheets-chart/src/data_labels.rs +67 -0
- duke_sheets-0.1.10/crates/duke-sheets-chart/src/error_bars.rs +41 -0
- duke_sheets-0.1.10/crates/duke-sheets-chart/src/formatting.rs +51 -0
- duke_sheets-0.1.10/crates/duke-sheets-chart/src/legend.rs +47 -0
- duke_sheets-0.1.10/crates/duke-sheets-chart/src/lib.rs +42 -0
- duke_sheets-0.1.10/crates/duke-sheets-chart/src/marker.rs +26 -0
- duke_sheets-0.1.10/crates/duke-sheets-chart/src/series.rs +95 -0
- duke_sheets-0.1.10/crates/duke-sheets-chart/src/text_properties.rs +35 -0
- duke_sheets-0.1.10/crates/duke-sheets-chart/src/trendline.rs +44 -0
- duke_sheets-0.1.10/crates/duke-sheets-chart/src/types/mod.rs +3 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/Cargo.toml +23 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/auto_filter.rs +359 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/cell/address.rs +527 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/cell/mod.rs +18 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/cell/storage.rs +829 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/cell/value.rs +505 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/cell/view.rs +727 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/column.rs +108 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/comment.rs +123 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/conditional_format.rs +897 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/error.rs +80 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/hyperlink.rs +12 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/lib.rs +85 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/locale.rs +261 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/named_range.rs +278 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/range.rs +209 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/rich_text.rs +146 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/row.rs +77 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/style/alignment.rs +113 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/style/border.rs +157 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/style/color.rs +345 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/style/fill.rs +163 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/style/font.rs +161 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/style/mod.rs +172 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/style/number_format.rs +268 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/style/pool.rs +224 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/table.rs +271 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/validation.rs +538 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/workbook.rs +730 -0
- duke_sheets-0.1.10/crates/duke-sheets-core/src/worksheet.rs +2192 -0
- duke_sheets-0.1.10/crates/duke-sheets-csv/Cargo.toml +18 -0
- duke_sheets-0.1.10/crates/duke-sheets-csv/src/error.rs +30 -0
- duke_sheets-0.1.10/crates/duke-sheets-csv/src/lib.rs +13 -0
- duke_sheets-0.1.10/crates/duke-sheets-csv/src/options.rs +60 -0
- duke_sheets-0.1.10/crates/duke-sheets-csv/src/reader.rs +87 -0
- duke_sheets-0.1.10/crates/duke-sheets-csv/src/writer.rs +59 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/Cargo.toml +24 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/ast.rs +138 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/dependency.rs +454 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/error.rs +42 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/eval_cache.rs +279 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/evaluator.rs +4044 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/asdf.json +0 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/compatibility.rs +2623 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/criteria.rs +319 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/database.rs +952 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/date.rs +2653 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/engineering.rs +3179 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/financial.rs +2344 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/financial_extra.rs +3407 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/info.rs +270 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/info_extra.rs +1238 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/logical.rs +821 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/logical_extra.rs +477 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/lookup.rs +1802 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/lookup_extra.rs +3093 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/math.rs +2044 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/math_extra.rs +3636 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/mod.rs +4001 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/statistical.rs +7115 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/statistical_extra.rs +1511 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/text.rs +1399 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/functions/text_extra.rs +1518 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/lib.rs +35 -0
- duke_sheets-0.1.10/crates/duke-sheets-formula/src/parser.rs +1723 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/Cargo.toml +22 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/FORMULA_TOKENS.md +534 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/src/biff/formula/decompiler.rs +1506 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/src/biff/formula/function_table.rs +643 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/src/biff/formula/mod.rs +150 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/src/biff/formula/ptg.rs +147 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/src/biff/formula/token_parser.rs +1159 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/src/biff/mod.rs +94 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/src/biff/parser.rs +183 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/src/biff/records.rs +96 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/src/biff/strings.rs +889 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/src/cfb.rs +630 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/src/error.rs +30 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/src/lib.rs +26 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/src/reader.rs +4062 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/src/styles.rs +934 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/src/writer.rs +3 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/tests/e2e/common.rs +68 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/tests/e2e/main.rs +8 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/tests/e2e/reading/comments.rs +94 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/tests/e2e/reading/conditional_format.rs +124 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/tests/e2e/reading/data_types.rs +249 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/tests/e2e/reading/data_validation.rs +129 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/tests/e2e/reading/dimensions.rs +115 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/tests/e2e/reading/formulas.rs +557 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/tests/e2e/reading/merged_cells.rs +123 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/tests/e2e/reading/mod.rs +9 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/tests/e2e/reading/sheet_properties.rs +121 -0
- duke_sheets-0.1.10/crates/duke-sheets-xls/tests/e2e/reading/styles.rs +1009 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/Cargo.toml +25 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/error.rs +38 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/lib.rs +13 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/reader/chart.rs +3781 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/reader/chart_ex.rs +1745 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/reader/chartsheet.rs +51 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/reader/comments.rs +443 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/reader/conditional_format.rs +269 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/reader/data_validation.rs +133 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/reader/drawing.rs +810 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/reader/formulas.rs +723 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/reader/mod.rs +3307 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/reader/shared_strings.rs +482 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/reader/table.rs +345 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/reader/theme.rs +286 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/reader/workbook.rs +341 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/styles.rs +2445 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/writer/chart.rs +1914 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/writer/chart_ex.rs +1088 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/writer/comments.rs +166 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/writer/conditional_format.rs +330 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/writer/data_validation.rs +137 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/writer/drawing.rs +341 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/writer/mod.rs +3760 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/src/writer/tables.rs +133 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/tests/e2e/common.rs +110 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/tests/e2e/main.rs +24 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/tests/e2e/reading/alignment.rs +208 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/tests/e2e/reading/border_styles.rs +193 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/tests/e2e/reading/comments.rs +159 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/tests/e2e/reading/conditional_format.rs +269 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/tests/e2e/reading/data_types.rs +258 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/tests/e2e/reading/data_validation.rs +160 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/tests/e2e/reading/dimensions.rs +115 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/tests/e2e/reading/fill_styles.rs +132 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/tests/e2e/reading/font_styles.rs +277 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/tests/e2e/reading/formula_metadata.rs +244 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/tests/e2e/reading/merged_cells.rs +93 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/tests/e2e/reading/mod.rs +16 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/tests/e2e/reading/named_cell_styles_roundtrip.rs +197 -0
- duke_sheets-0.1.10/crates/duke-sheets-xlsx/tests/e2e/reading/number_formats.rs +131 -0
- duke_sheets-0.1.10/crates/ssfmt/.gitignore +15 -0
- duke_sheets-0.1.10/crates/ssfmt/Cargo.toml +26 -0
- duke_sheets-0.1.10/crates/ssfmt/README.md +44 -0
- duke_sheets-0.1.10/crates/ssfmt/docs/ARCHITECTURE.md +326 -0
- duke_sheets-0.1.10/crates/ssfmt/docs/COMPARISON.md +214 -0
- duke_sheets-0.1.10/crates/ssfmt/docs/TESTING.md +237 -0
- duke_sheets-0.1.10/crates/ssfmt/docs/plans/2026-01-09-ssfmt-design.md +271 -0
- duke_sheets-0.1.10/crates/ssfmt/docs/plans/2026-01-09-ssfmt-implementation.md +3356 -0
- duke_sheets-0.1.10/crates/ssfmt/src/ast.rs +441 -0
- duke_sheets-0.1.10/crates/ssfmt/src/builtin_formats.rs +162 -0
- duke_sheets-0.1.10/crates/ssfmt/src/cache.rs +29 -0
- duke_sheets-0.1.10/crates/ssfmt/src/date_serial.rs +375 -0
- duke_sheets-0.1.10/crates/ssfmt/src/error.rs +44 -0
- duke_sheets-0.1.10/crates/ssfmt/src/formatter/bigint.rs +238 -0
- duke_sheets-0.1.10/crates/ssfmt/src/formatter/date.rs +523 -0
- duke_sheets-0.1.10/crates/ssfmt/src/formatter/fraction.rs +272 -0
- duke_sheets-0.1.10/crates/ssfmt/src/formatter/mod.rs +511 -0
- duke_sheets-0.1.10/crates/ssfmt/src/formatter/number.rs +946 -0
- duke_sheets-0.1.10/crates/ssfmt/src/formatter/text.rs +1 -0
- duke_sheets-0.1.10/crates/ssfmt/src/hijri.rs +155 -0
- duke_sheets-0.1.10/crates/ssfmt/src/lib.rs +183 -0
- duke_sheets-0.1.10/crates/ssfmt/src/locale/builtin.rs +61 -0
- duke_sheets-0.1.10/crates/ssfmt/src/locale/mod.rs +5 -0
- duke_sheets-0.1.10/crates/ssfmt/src/options.rs +32 -0
- duke_sheets-0.1.10/crates/ssfmt/src/parser/lexer.rs +452 -0
- duke_sheets-0.1.10/crates/ssfmt/src/parser/mod.rs +1260 -0
- duke_sheets-0.1.10/crates/ssfmt/src/parser/tokens.rs +65 -0
- duke_sheets-0.1.10/crates/ssfmt/src/value.rs +193 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/ast_tests.rs +65 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/builtin_format_id_tests.rs +156 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/convenience_tests.rs +22 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/date_serial_tests.rs +47 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/error_tests.rs +19 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/fixtures/comma.tsv.gz +0 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/fixtures/dates.tsv.gz +0 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/fixtures/exp.tsv.gz +0 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/fixtures/ssf_date.json +22 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/fixtures/ssf_fraction.json +121 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/fixtures/ssf_general.json +516 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/fixtures/ssf_implied.json +756 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/fixtures/ssf_is_date.json +447 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/fixtures/ssf_oddities.json +180 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/fixtures/times.tsv.gz +0 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/fixtures/valid.tsv.gz +0 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/format_dates.rs +63 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/format_numbers.rs +96 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/general_format_tests.rs +80 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/integration.rs +281 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/lexer_tests.rs +291 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/options_tests.rs +13 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/parser_tests.rs +68 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/ssf_comma_tests.rs +119 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/ssf_dates_tests.rs +128 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/ssf_exp_tests.rs +119 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/ssf_fraction_tests.rs +93 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/ssf_general_tests.rs +105 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/ssf_implied_tests.rs +116 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/ssf_oddities_tests.rs +136 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/ssf_times_tests.rs +129 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/ssf_valid_tests.rs +72 -0
- duke_sheets-0.1.10/crates/ssfmt/tests/value_tests.rs +25 -0
- duke_sheets-0.1.10/pyproject.toml +49 -0
- duke_sheets-0.1.10/python/duke_sheets/__init__.py +40 -0
- duke_sheets-0.1.10/python/duke_sheets/py.typed +1 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
[workspace]
|
|
2
|
+
resolver = "2"
|
|
3
|
+
members = [
|
|
4
|
+
"crates/duke-sheets-core",
|
|
5
|
+
"crates/duke-sheets-formula",
|
|
6
|
+
"crates/duke-sheets-xlsx",
|
|
7
|
+
"crates/duke-sheets-xls",
|
|
8
|
+
"crates/duke-sheets-csv",
|
|
9
|
+
"crates/duke-sheets-chart",
|
|
10
|
+
"crates/duke-sheets",
|
|
11
|
+
"crates/duke-sheets-ffi",
|
|
12
|
+
"crates/duke-sheets-cli",
|
|
13
|
+
"crates/excel-com-protocol",
|
|
14
|
+
"crates/duke-sheets-excel-com",
|
|
15
|
+
"crates/libreoffice-urp",
|
|
16
|
+
"crates/duke-sheets-libreoffice",
|
|
17
|
+
"crates/duke-sheets-html",
|
|
18
|
+
"crates/ssfmt",
|
|
19
|
+
]
|
|
20
|
+
# Bindings are excluded from the default workspace build
|
|
21
|
+
exclude = [
|
|
22
|
+
"bindings/python",
|
|
23
|
+
"bindings/wasm",
|
|
24
|
+
"bindings/nodejs",
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
[workspace.package]
|
|
28
|
+
version = "0.1.0"
|
|
29
|
+
edition = "2021"
|
|
30
|
+
license = "MIT OR Apache-2.0"
|
|
31
|
+
repository = "https://github.com/yourorg/duke-sheets"
|
|
32
|
+
rust-version = "1.82"
|
|
33
|
+
|
|
34
|
+
[workspace.dependencies]
|
|
35
|
+
# Internal crates
|
|
36
|
+
duke-sheets-core = { path = "crates/duke-sheets-core" }
|
|
37
|
+
duke-sheets-formula = { path = "crates/duke-sheets-formula" }
|
|
38
|
+
duke-sheets-xlsx = { path = "crates/duke-sheets-xlsx" }
|
|
39
|
+
duke-sheets-xls = { path = "crates/duke-sheets-xls" }
|
|
40
|
+
duke-sheets-csv = { path = "crates/duke-sheets-csv" }
|
|
41
|
+
duke-sheets-chart = { path = "crates/duke-sheets-chart" }
|
|
42
|
+
duke-sheets-html = { path = "crates/duke-sheets-html" }
|
|
43
|
+
|
|
44
|
+
# Error handling
|
|
45
|
+
thiserror = "1.0"
|
|
46
|
+
anyhow = "1.0"
|
|
47
|
+
|
|
48
|
+
# Logging
|
|
49
|
+
log = "0.4"
|
|
50
|
+
tracing = "0.1"
|
|
51
|
+
|
|
52
|
+
# XML parsing (for XLSX)
|
|
53
|
+
quick-xml = "0.37"
|
|
54
|
+
|
|
55
|
+
# ZIP handling (for XLSX) - only deflate needed; bzip2/lzma/zstd use C deps that break WASM
|
|
56
|
+
# `time` feature removed: it calls SystemTime::now() via DateTime::default_for_write(),
|
|
57
|
+
# which panics on wasm32-unknown-unknown. Without it, zip uses a fixed date (1980-01-01).
|
|
58
|
+
zip = { version = "2.1", default-features = false, features = ["deflate"] }
|
|
59
|
+
|
|
60
|
+
# CSV handling
|
|
61
|
+
csv = "1.3"
|
|
62
|
+
|
|
63
|
+
# Date/time
|
|
64
|
+
chrono = { version = "0.4", default-features = false, features = ["std", "clock"] }
|
|
65
|
+
|
|
66
|
+
# Decimal precision for financial calculations
|
|
67
|
+
rust_decimal = "1.35"
|
|
68
|
+
|
|
69
|
+
# Number format rendering (Excel-compatible ECMA-376 format codes)
|
|
70
|
+
ssfmt = { path = "crates/ssfmt" }
|
|
71
|
+
|
|
72
|
+
# Regex (for formulas, number formats)
|
|
73
|
+
regex = "1.10"
|
|
74
|
+
lazy-regex = "3.1"
|
|
75
|
+
|
|
76
|
+
# Lazy static (for FFI global context)
|
|
77
|
+
lazy_static = "1.4"
|
|
78
|
+
once_cell = "1.19"
|
|
79
|
+
|
|
80
|
+
# Hash functions (for style deduplication)
|
|
81
|
+
ahash = "0.8"
|
|
82
|
+
dashmap = "6.1"
|
|
83
|
+
|
|
84
|
+
# Parallel calculation (optional)
|
|
85
|
+
rayon = "1.11"
|
|
86
|
+
|
|
87
|
+
# Serialization (optional, for debugging)
|
|
88
|
+
serde = { version = "1.0", features = ["derive"] }
|
|
89
|
+
serde_json = "1.0"
|
|
90
|
+
|
|
91
|
+
# CLI
|
|
92
|
+
clap = { version = "4", features = ["derive"] }
|
|
93
|
+
|
|
94
|
+
# Dev dependencies (in workspace.dependencies so crates can inherit)
|
|
95
|
+
tempfile = "3"
|
|
96
|
+
criterion = { version = "0.5", features = ["html_reports"] }
|
|
97
|
+
proptest = "1.4"
|
|
98
|
+
pretty_assertions = "1.4"
|
|
99
|
+
|
|
100
|
+
[profile.release]
|
|
101
|
+
lto = true
|
|
102
|
+
codegen-units = 1
|
|
103
|
+
|
|
104
|
+
[profile.bench]
|
|
105
|
+
lto = true
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: duke-sheets
|
|
3
|
+
Version: 0.1.10
|
|
4
|
+
Classifier: Development Status :: 3 - Alpha
|
|
5
|
+
Classifier: Intended Audience :: Developers
|
|
6
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
7
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Classifier: Programming Language :: Rust
|
|
15
|
+
Classifier: Topic :: Office/Business :: Financial :: Spreadsheet
|
|
16
|
+
Summary: High-performance Excel file library for Python
|
|
17
|
+
Keywords: excel,xlsx,spreadsheet,csv
|
|
18
|
+
Author: Duke Sheets Authors
|
|
19
|
+
License: MIT OR Apache-2.0
|
|
20
|
+
Requires-Python: >=3.9
|
|
21
|
+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
22
|
+
Project-URL: Homepage, https://github.com/guseggert/duke-sheets
|
|
23
|
+
Project-URL: Repository, https://github.com/guseggert/duke-sheets
|
|
24
|
+
|
|
25
|
+
# duke-sheets
|
|
26
|
+
|
|
27
|
+
High-performance Excel file library for Python, powered by Rust.
|
|
28
|
+
|
|
29
|
+
## Installation
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pip install duke-sheets
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Quick Start
|
|
36
|
+
|
|
37
|
+
```python
|
|
38
|
+
import duke_sheets
|
|
39
|
+
|
|
40
|
+
# Create a new workbook
|
|
41
|
+
wb = duke_sheets.Workbook()
|
|
42
|
+
sheet = wb.get_sheet(0)
|
|
43
|
+
|
|
44
|
+
# Set cell values
|
|
45
|
+
sheet.set_cell("A1", 10)
|
|
46
|
+
sheet.set_cell("A2", 20)
|
|
47
|
+
sheet.set_formula("A3", "=A1+A2")
|
|
48
|
+
|
|
49
|
+
# Calculate formulas
|
|
50
|
+
wb.calculate()
|
|
51
|
+
|
|
52
|
+
# Get the result
|
|
53
|
+
result = sheet.get_calculated_value("A3")
|
|
54
|
+
print(result.as_number()) # 30.0
|
|
55
|
+
|
|
56
|
+
# Save to file
|
|
57
|
+
wb.save("output.xlsx")
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Opening Existing Files
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
# Open an Excel file
|
|
64
|
+
wb = duke_sheets.Workbook.open("input.xlsx")
|
|
65
|
+
|
|
66
|
+
# Or a CSV file
|
|
67
|
+
wb = duke_sheets.Workbook.open("data.csv")
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Features
|
|
71
|
+
|
|
72
|
+
- Read and write Excel files (.xlsx)
|
|
73
|
+
- Read and write CSV files
|
|
74
|
+
- Full formula calculation engine
|
|
75
|
+
- Support for named ranges
|
|
76
|
+
- Cell merging
|
|
77
|
+
- Row heights and column widths
|
|
78
|
+
|
|
79
|
+
## License
|
|
80
|
+
|
|
81
|
+
MIT OR Apache-2.0
|
|
82
|
+
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# duke-sheets
|
|
2
|
+
|
|
3
|
+
High-performance Excel file library for Python, powered by Rust.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install duke-sheets
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```python
|
|
14
|
+
import duke_sheets
|
|
15
|
+
|
|
16
|
+
# Create a new workbook
|
|
17
|
+
wb = duke_sheets.Workbook()
|
|
18
|
+
sheet = wb.get_sheet(0)
|
|
19
|
+
|
|
20
|
+
# Set cell values
|
|
21
|
+
sheet.set_cell("A1", 10)
|
|
22
|
+
sheet.set_cell("A2", 20)
|
|
23
|
+
sheet.set_formula("A3", "=A1+A2")
|
|
24
|
+
|
|
25
|
+
# Calculate formulas
|
|
26
|
+
wb.calculate()
|
|
27
|
+
|
|
28
|
+
# Get the result
|
|
29
|
+
result = sheet.get_calculated_value("A3")
|
|
30
|
+
print(result.as_number()) # 30.0
|
|
31
|
+
|
|
32
|
+
# Save to file
|
|
33
|
+
wb.save("output.xlsx")
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Opening Existing Files
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
# Open an Excel file
|
|
40
|
+
wb = duke_sheets.Workbook.open("input.xlsx")
|
|
41
|
+
|
|
42
|
+
# Or a CSV file
|
|
43
|
+
wb = duke_sheets.Workbook.open("data.csv")
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Features
|
|
47
|
+
|
|
48
|
+
- Read and write Excel files (.xlsx)
|
|
49
|
+
- Read and write CSV files
|
|
50
|
+
- Full formula calculation engine
|
|
51
|
+
- Support for named ranges
|
|
52
|
+
- Cell merging
|
|
53
|
+
- Row heights and column widths
|
|
54
|
+
|
|
55
|
+
## License
|
|
56
|
+
|
|
57
|
+
MIT OR Apache-2.0
|