xlsxturbo 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.
- xlsxturbo-0.1.0/.github/workflows/ci.yml +41 -0
- xlsxturbo-0.1.0/.github/workflows/release.yml +135 -0
- xlsxturbo-0.1.0/.gitignore +31 -0
- xlsxturbo-0.1.0/CHANGELOG.md +25 -0
- xlsxturbo-0.1.0/Cargo.lock +739 -0
- xlsxturbo-0.1.0/Cargo.toml +31 -0
- xlsxturbo-0.1.0/LICENSE +21 -0
- xlsxturbo-0.1.0/PKG-INFO +155 -0
- xlsxturbo-0.1.0/README.md +122 -0
- xlsxturbo-0.1.0/benchmark.py +237 -0
- xlsxturbo-0.1.0/pyproject.toml +42 -0
- xlsxturbo-0.1.0/python/xlsxturbo/__init__.py +4 -0
- xlsxturbo-0.1.0/python/xlsxturbo/__init__.pyi +33 -0
- xlsxturbo-0.1.0/src/lib.rs +331 -0
- xlsxturbo-0.1.0/src/main.rs +65 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
env:
|
|
10
|
+
CARGO_TERM_COLOR: always
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
test:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Set up Rust
|
|
19
|
+
uses: dtolnay/rust-toolchain@stable
|
|
20
|
+
|
|
21
|
+
- name: Run Rust tests
|
|
22
|
+
run: cargo test --release
|
|
23
|
+
|
|
24
|
+
- name: Build
|
|
25
|
+
run: cargo build --release
|
|
26
|
+
|
|
27
|
+
lint:
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@v4
|
|
31
|
+
|
|
32
|
+
- name: Set up Rust
|
|
33
|
+
uses: dtolnay/rust-toolchain@stable
|
|
34
|
+
with:
|
|
35
|
+
components: rustfmt, clippy
|
|
36
|
+
|
|
37
|
+
- name: Check formatting
|
|
38
|
+
run: cargo fmt --check
|
|
39
|
+
|
|
40
|
+
- name: Run clippy
|
|
41
|
+
run: cargo clippy -- -D warnings
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*'
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
# Build wheels for Linux
|
|
14
|
+
linux:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
strategy:
|
|
17
|
+
matrix:
|
|
18
|
+
target: [x86_64, aarch64]
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- uses: actions/setup-python@v5
|
|
23
|
+
with:
|
|
24
|
+
python-version: '3.11'
|
|
25
|
+
|
|
26
|
+
- name: Build wheels
|
|
27
|
+
uses: PyO3/maturin-action@v1
|
|
28
|
+
with:
|
|
29
|
+
target: ${{ matrix.target }}
|
|
30
|
+
args: --release --out dist
|
|
31
|
+
sccache: 'true'
|
|
32
|
+
manylinux: auto
|
|
33
|
+
|
|
34
|
+
- name: Upload wheels
|
|
35
|
+
uses: actions/upload-artifact@v4
|
|
36
|
+
with:
|
|
37
|
+
name: wheels-linux-${{ matrix.target }}
|
|
38
|
+
path: dist
|
|
39
|
+
|
|
40
|
+
# Build wheels for Windows
|
|
41
|
+
windows:
|
|
42
|
+
runs-on: windows-latest
|
|
43
|
+
strategy:
|
|
44
|
+
matrix:
|
|
45
|
+
target: [x64]
|
|
46
|
+
steps:
|
|
47
|
+
- uses: actions/checkout@v4
|
|
48
|
+
|
|
49
|
+
- uses: actions/setup-python@v5
|
|
50
|
+
with:
|
|
51
|
+
python-version: '3.11'
|
|
52
|
+
architecture: ${{ matrix.target }}
|
|
53
|
+
|
|
54
|
+
- name: Build wheels
|
|
55
|
+
uses: PyO3/maturin-action@v1
|
|
56
|
+
with:
|
|
57
|
+
args: --release --out dist
|
|
58
|
+
sccache: 'true'
|
|
59
|
+
|
|
60
|
+
- name: Upload wheels
|
|
61
|
+
uses: actions/upload-artifact@v4
|
|
62
|
+
with:
|
|
63
|
+
name: wheels-windows-${{ matrix.target }}
|
|
64
|
+
path: dist
|
|
65
|
+
|
|
66
|
+
# Build wheels for macOS
|
|
67
|
+
macos:
|
|
68
|
+
runs-on: macos-latest
|
|
69
|
+
strategy:
|
|
70
|
+
matrix:
|
|
71
|
+
target: [x86_64, aarch64]
|
|
72
|
+
steps:
|
|
73
|
+
- uses: actions/checkout@v4
|
|
74
|
+
|
|
75
|
+
- uses: actions/setup-python@v5
|
|
76
|
+
with:
|
|
77
|
+
python-version: '3.11'
|
|
78
|
+
|
|
79
|
+
- name: Build wheels
|
|
80
|
+
uses: PyO3/maturin-action@v1
|
|
81
|
+
with:
|
|
82
|
+
target: ${{ matrix.target }}
|
|
83
|
+
args: --release --out dist
|
|
84
|
+
sccache: 'true'
|
|
85
|
+
|
|
86
|
+
- name: Upload wheels
|
|
87
|
+
uses: actions/upload-artifact@v4
|
|
88
|
+
with:
|
|
89
|
+
name: wheels-macos-${{ matrix.target }}
|
|
90
|
+
path: dist
|
|
91
|
+
|
|
92
|
+
# Build source distribution
|
|
93
|
+
sdist:
|
|
94
|
+
runs-on: ubuntu-latest
|
|
95
|
+
steps:
|
|
96
|
+
- uses: actions/checkout@v4
|
|
97
|
+
|
|
98
|
+
- name: Build sdist
|
|
99
|
+
uses: PyO3/maturin-action@v1
|
|
100
|
+
with:
|
|
101
|
+
command: sdist
|
|
102
|
+
args: --out dist
|
|
103
|
+
|
|
104
|
+
- name: Upload sdist
|
|
105
|
+
uses: actions/upload-artifact@v4
|
|
106
|
+
with:
|
|
107
|
+
name: wheels-sdist
|
|
108
|
+
path: dist
|
|
109
|
+
|
|
110
|
+
# Publish to PyPI
|
|
111
|
+
release:
|
|
112
|
+
name: Publish to PyPI
|
|
113
|
+
runs-on: ubuntu-latest
|
|
114
|
+
needs: [linux, windows, macos, sdist]
|
|
115
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
116
|
+
environment:
|
|
117
|
+
name: pypi
|
|
118
|
+
url: https://pypi.org/p/fast_xlsx
|
|
119
|
+
permissions:
|
|
120
|
+
id-token: write # Required for trusted publishing
|
|
121
|
+
steps:
|
|
122
|
+
- name: Download all wheels
|
|
123
|
+
uses: actions/download-artifact@v4
|
|
124
|
+
with:
|
|
125
|
+
pattern: wheels-*
|
|
126
|
+
path: dist
|
|
127
|
+
merge-multiple: true
|
|
128
|
+
|
|
129
|
+
- name: List wheels
|
|
130
|
+
run: ls -la dist/
|
|
131
|
+
|
|
132
|
+
- name: Publish to PyPI
|
|
133
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
134
|
+
with:
|
|
135
|
+
packages-dir: dist/
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Rust
|
|
2
|
+
/target
|
|
3
|
+
Cargo.lock
|
|
4
|
+
|
|
5
|
+
# Python
|
|
6
|
+
__pycache__/
|
|
7
|
+
*.py[cod]
|
|
8
|
+
*$py.class
|
|
9
|
+
*.so
|
|
10
|
+
*.pyd
|
|
11
|
+
.Python
|
|
12
|
+
dist/
|
|
13
|
+
build/
|
|
14
|
+
*.egg-info/
|
|
15
|
+
.eggs/
|
|
16
|
+
*.egg
|
|
17
|
+
|
|
18
|
+
# IDE
|
|
19
|
+
.idea/
|
|
20
|
+
.vscode/
|
|
21
|
+
*.swp
|
|
22
|
+
*.swo
|
|
23
|
+
|
|
24
|
+
# OS
|
|
25
|
+
.DS_Store
|
|
26
|
+
Thumbs.db
|
|
27
|
+
|
|
28
|
+
# Test files
|
|
29
|
+
*.xlsx
|
|
30
|
+
!tests/*.xlsx
|
|
31
|
+
.claude/
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.1.0] - 2024-12-04
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Initial release
|
|
12
|
+
- Python bindings via PyO3
|
|
13
|
+
- `csv_to_xlsx()` function for converting CSV files to Excel format
|
|
14
|
+
- Automatic type detection from CSV strings:
|
|
15
|
+
- Integers and floats → Excel numbers
|
|
16
|
+
- Booleans (`true`/`false`, case-insensitive) → Excel booleans
|
|
17
|
+
- Dates (YYYY-MM-DD, DD/MM/YYYY, etc.) → Excel dates with formatting
|
|
18
|
+
- Datetimes (ISO 8601) → Excel datetimes with formatting
|
|
19
|
+
- NaN/Inf → Empty cells
|
|
20
|
+
- Empty strings → Empty cells
|
|
21
|
+
- CLI tool for command-line usage
|
|
22
|
+
- Support for custom sheet names
|
|
23
|
+
- Verbose mode for progress reporting
|
|
24
|
+
|
|
25
|
+
[0.1.0]: https://github.com/tstone-1/xlsxturbo/releases/tag/v0.1.0
|