Metadata-Version: 2.4
Name: strsimpy-rust
Version: 0.2.1
Classifier: Programming Language :: Rust
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Text Processing
License-File: LICENSE
License-File: NOTICE
Summary: Pure-Rust string similarity library (rustsmith Stage-1 mirror of luozhouyang/python-string-similarity)
Keywords: string-similarity,levenshtein,rust
Home-Page: https://github.com/luozhouyang/python-string-similarity
Author-email: ZhouYang Luo <zhouyang.luo@gmail.com>
Maintainer: strsimpy-rust publishers
License-Expression: MIT
Requires-Python: >=3.11, <4.0
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Homepage, https://github.com/John-Cusack/strsimpy-rust
Project-URL: Upstream, https://github.com/luozhouyang/python-string-similarity

# strsimpy-rust (Rust mirror of luozhouyang/python-string-similarity)

Stage-1 Rust mirror of
[`luozhouyang/python-string-similarity`](https://github.com/luozhouyang/python-string-similarity)
(MIT, original by ZhouYang Luo). Behavior-identical port of the `strsimpy`
package exposed as the `strsimpy._strsimpy` extension module via PyO3, with
a thin `strsimpy/__init__.py` re-export shim preserving the original public
API (`Levenshtein`, `Damerau`, `JaroWinkler`, `Cosine`, `SIFT4`, ...).

## Layout (publishable)

One implementation, two distributions:

- `strsimpy-core/` — reusable pure-Rust core crate `strsimpy-rust-core`
  (crates.io). No Python dependency: `rlib`, `cargo test` clean,
  miri-clean. Rust consumers depend on this crate directly.
- `src/lib.rs` — thin PyO3 binding crate `strsimpy-rust` calling that same
  core. Ships on PyPI as distribution **`strsimpy-rust`**; the import name
  is unchanged (`import strsimpy`), so users swap the install with zero
  code changes: `pip install strsimpy-rust` instead of `pip install
  strsimpy`.
- `strsimpy/` — Python shim (`__init__.py`).
- `release.toml` — release configuration (names, version, platforms, Python
  versions, publishing repo + workflow identity, license, upstream
  attribution). Read by `rustsmith release-prep`; see `docs/RELEASE.md`.

No redesign: every algorithm replicates the original op-for-op over chars
(never bytes) with identical accumulation order, so float outputs are
bit-exact.

## Install

```sh
pip install strsimpy-rust        # Python (import strsimpy)
cargo add strsimpy-rust-core     # Rust
```

## Release

Publishing is a manual step after review; `rustsmith` never pushes.
Prepare and verify everything locally, then follow the generated setup
instructions:

```sh
rustsmith release-prep --project mirror/strsimpy --fork <fork> --opt <opt> \
  --recon-out <recon> --out <dist>
```

See `docs/RELEASE.md` (releasing converted projects) and the generated
`TRUSTED_PUBLISHING_SETUP.md` in the output directory.

<!-- RUSTSMITH-PERF:BEGIN (generated by `rustsmith release-prep`; do not hand-edit) -->
## Measured performance
No accepted optimizations yet (mirror baseline); re-run `release-prep` after `run --stage optimize` merges winners.
Artifact hashes are intentionally absent here; see `release-manifest.json`.
<!-- RUSTSMITH-PERF:END -->

