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-setup
This 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
release
GitHub action will take care of the rest.
- Use
cargo check
to verify that your rust code compiles, no need to go throughmaturin
every time cargo clippy
= 💖- Careful with arrow constructors, they tend to allocate a lot
mprof
andtime
go a long way for perf checks, no need to go fancy right from the start