nidx 0.2.6

Validate and decode national ID numbers — extract structured data from government-issued personal IDs
Documentation
# Contributing to nidx

Thank you for your interest in contributing! This document explains how to get started.

## Prerequisites

- [Rust]https://rustup.rs/ 1.85 or later
- [Python]https://www.python.org/ 3.9+ (for Python bindings)
- [Node.js]https://nodejs.org/ 22+ (for WASM bindings)
- [wasm-bindgen-cli]https://rustwasm.github.io/wasm-bindgen/ (for WASM bindings)
- [maturin]https://github.com/PyO3/maturin (for Python bindings)

## Building

### Core library

```sh
cargo build
cargo test
```

### Python bindings

```sh
cd bindings/python
pip install maturin pytest
maturin develop
pytest tests/
```

### WASM bindings

```sh
cargo build --lib --target wasm32-unknown-unknown -p nidx-wasm
cargo test --target wasm32-unknown-unknown -p nidx-wasm
```

## Adding a new country

1. Create `src/country/<country>.rs` with its own `NidInfo`, `NidError`, `decode()`, and `is_valid()`.
2. Add `pub mod <country>;` to `src/country/mod.rs`.
3. Add `pub use country::<country>;` to `src/lib.rs`.
4. Add binding wrappers in `bindings/python/src/lib.rs` and `bindings/wasm/src/lib.rs`.
5. Add tests for the new country in the module, integration tests, and binding tests.

## Code style

- Run `cargo fmt --all` before committing.
- Run `cargo clippy --all-targets --all-features -- -D warnings` and fix any warnings.

## Pull requests

1. Fork the repository and create a feature branch.
2. Make your changes, add tests if applicable.
3. Ensure all checks pass: `cargo fmt --all -- --check && cargo clippy --all-targets --all-features -- -D warnings && cargo test --all`.
4. Open a pull request against `main`.

## Releases

Releases are automated via GitHub Actions. Pushing a tag like `v0.2.0` triggers publication to crates.io, PyPI, and npm.