A fast excel file reader for Python, written in Rust.
Based on calamine and Apache Arrow.
Docs available here.
Python>=3.8 and a recent Rust toolchain must be installed on your machine. cargo must be available in your PATH.
On the very first time you setup the project, you'll need to create a virtualenv and install the necessary tools:
python -m venv .venv
source .venv/bin/activate
(.venv) make dev-setupThis will also set up pre-commit.
In order to install the project in dev mode (for local tests for example), use make dev-install.
This will compile the wheel (in debug mode) and install it. It will then be available in your venv.
This is required for profiling, as dev mode wheels are much slower. make prod-install will compile the project
in release mode and install it in your local venv, overriding previous dev installs.
The Makefile provides the lint and format extras to ease this.
make test
make benchmarks
mprof run -T 0.01 python python/tests/benchmarks/memory.py python/tests/benchmarks/fixtures/plain_data.xls
make doc
- Create a PR containing a commit that only updates the version in
Cargo.toml. - Once it is approved, squash and merge it into main.
- Tag the squashed commit, and push it.
- The
releaseGitHub action will take care of the rest.
- Use
cargo checkto verify that your rust code compiles, no need to go throughmaturinevery time cargo clippy= 💖- Careful with arrow constructors, they tend to allocate a lot
mprofandtimego a long way for perf checks, no need to go fancy right from the start