From 7d20c02de9086e2fdbf03a45e5068c6bf885aa8a Mon Sep 17 00:00:00 2001 From: AnshMNSoni Date: Fri, 12 Jun 2026 13:44:49 +0530 Subject: [PATCH 1/2] [ADD] rust backend --- .gitignore | 4 + Cargo.lock | 245 +++++++++ Cargo.toml | 12 + README.md | 46 +- benchmarks/benchmark_algorithms.py | 140 +++++ benchmarks/benchmark_all_structures.py | 221 ++++++++ benchmarks/benchmark_binary_search.py | 147 +++++ benchmarks/benchmark_native.cpp | 121 ++++ benchmarks/benchmark_rust_vs_py.py | 193 +++++++ pyproject.toml | 8 +- pythonstl/__init__.py | 21 +- pythonstl/_rust.pdb | Bin 0 -> 1413120 bytes pythonstl/facade/algorithms.py | 331 +++++++++++ pythonstl/facade/map.py | 56 +- pythonstl/facade/priority_queue.py | 44 +- pythonstl/facade/queue.py | 49 +- pythonstl/facade/set.py | 56 +- pythonstl/facade/stack.py | 47 +- pythonstl/facade/vector.py | 91 ++- src/lib.rs | 733 +++++++++++++++++++++++++ tests/test_algorithms.py | 77 +++ tests/test_binary_search.py | 104 ++++ 22 files changed, 2646 insertions(+), 100 deletions(-) create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 benchmarks/benchmark_algorithms.py create mode 100644 benchmarks/benchmark_all_structures.py create mode 100644 benchmarks/benchmark_binary_search.py create mode 100644 benchmarks/benchmark_native.cpp create mode 100644 benchmarks/benchmark_rust_vs_py.py create mode 100644 pythonstl/_rust.pdb create mode 100644 pythonstl/facade/algorithms.py create mode 100644 src/lib.rs create mode 100644 tests/test_algorithms.py create mode 100644 tests/test_binary_search.py diff --git a/.gitignore b/.gitignore index c2fb624..ceb2221 100644 --- a/.gitignore +++ b/.gitignore @@ -145,3 +145,7 @@ cython_debug/ # OS .DS_Store Thumbs.db + +# Project-specific private documentation +PUBLISHING.md +publishing.md diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..1592c40 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,245 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "autocfg" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "bitflags" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "indoc" +version = "2.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706" +dependencies = [ + "rustversion", +] + +[[package]] +name = "libc" +version = "0.2.186" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "portable-atomic" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "pyo3" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e00b96a521718e08e03b1a622f01c8a8deb50719335de3f60b3b3950f069d8" +dependencies = [ + "cfg-if", + "indoc", + "libc", + "memoffset", + "parking_lot", + "portable-atomic", + "pyo3-build-config", + "pyo3-ffi", + "pyo3-macros", + "unindent", +] + +[[package]] +name = "pyo3-build-config" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7883df5835fafdad87c0d888b266c8ec0f4c9ca48a5bed6bbb592e8dedee1b50" +dependencies = [ + "once_cell", + "target-lexicon", +] + +[[package]] +name = "pyo3-ffi" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01be5843dc60b916ab4dad1dca6d20b9b4e6ddc8e15f50c47fe6d85f1fb97403" +dependencies = [ + "libc", + "pyo3-build-config", +] + +[[package]] +name = "pyo3-macros" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77b34069fc0682e11b31dbd10321cbf94808394c56fd996796ce45217dfac53c" +dependencies = [ + "proc-macro2", + "pyo3-macros-backend", + "quote", + "syn", +] + +[[package]] +name = "pyo3-macros-backend" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08260721f32db5e1a5beae69a55553f56b99bd0e1c3e6e0a5e8851a9d0f5a85c" +dependencies = [ + "heck", + "proc-macro2", + "pyo3-build-config", + "quote", + "syn", +] + +[[package]] +name = "pythonstl" +version = "0.1.4" +dependencies = [ + "pyo3", +] + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "smallvec" +version = "1.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unindent" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..8febee6 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "pythonstl" +version = "0.1.4" +edition = "2021" +description = "Rust backend extension for pythonstl data structures" + +[lib] +name = "_rust" +crate-type = ["cdylib"] + +[dependencies] +pyo3 = { version = "0.21.0", features = ["extension-module"] } diff --git a/README.md b/README.md index 8095e4c..216821e 100644 --- a/README.md +++ b/README.md @@ -320,25 +320,43 @@ Full Python integration while maintaining STL compatibility: - Copy protocol support - Maintains backward compatibility -## Benchmarks +## 📊 Performance Benchmarks -PythonSTL provides benchmarks comparing performance against Python built-ins: +PythonSTL includes a compiled Rust backend (built with PyO3 and Maturin) for high-performance operations, alongside pure-Python fallbacks. Below are the actual performance comparison results against pure-Python and native C++ (compiled with `g++ -O3`). -```bash -python benchmarks/benchmark_stack.py -python benchmarks/benchmark_vector.py -python benchmarks/benchmark_map.py -``` +### 1. Containers Performance (50,000 Operations) + +| Container Class | Pure Python | Python + Rust | Speedup Status | Design / Algorithmic Trade-off | +| :--- | :--- | :--- | :--- | :--- | +| **Stack** | 0.2470s | 0.1604s | **1.54x faster** | Linear stack operations. Limited by FFI call overhead. | +| **Queue** | 0.2547s | 0.1946s | **1.31x faster** | FIFO operations. Limited by FFI call overhead. | +| **Vector** | 0.0050s | 0.0045s | **1.10x faster** | Push_back & random access indices. Limited by FFI. | +| **Set** | 0.0337s | 0.1844s | *0.18x faster* | **Sorted Set vs Unordered Hash Set** (replicates C++ B-Tree structure) | +| **Map** | 0.0421s | 0.2104s | *0.20x faster* | **Sorted Map vs Unordered Hash Map** (replicates C++ B-Tree structure) | +| **Priority Queue**| 0.0584s | 0.0900s | *0.65x faster* | Custom binary heap vs. C-optimized `heapq` module. | + +* **Sorted Trees vs. Hash Tables**: Python's native `set` and `dict` are highly optimized $O(1)$ hash tables written in C. PythonSTL sets/maps replicate C++'s `std::set`/`std::map` using sorted trees (`BTreeSet`/`BTreeMap`), which run in $O(\log N)$ and sort keys. +* **FFI overhead**: Storing arbitrary Python objects in Rust requires acquiring the GIL and calling back into the Python VM for comparisons, creating high FFI boundaries. + +### 2. Algorithms Suite + +| Algorithm Name | Pure Python (Middle Pivot) | Python + Rust | Pure C++ (O3) | Rust Speedup | Design & FFI Insights | +| :--- | :--- | :--- | :--- | :--- | :--- | +| **next_permutation** | 0.3158s | 0.2530s | 0.0020s | **1.2x** | Lexicographical rearrangement. Limited by FFI conversions. | +| **nth_element** | 0.0068s | 0.0047s | 0.0000s | **1.5x** | Quickselect median find. (Previously **70.85s** before optimization). | +| **partition** | 0.0193s | 0.0197s | 0.0000s | **1.0x** | Lambda-predicate partitioning. Dominated by FFI callback overhead. | + +* **Algorithmic Pivot Vulnerabilities**: A naive Lomuto partition (`pivot = arr[right]`) causes $O(N^2)$ worst-case time on already-sorted or reversed lists (taking **70.85s**). By switching PythonSTL to a middle-pivot (`arr[mid]`), we restore $O(N)$ average time (**0.0068s**). + +### 3. Binary Search (5,000 Queries on 1,000,000 elements) -**Expected Overhead:** 1.1x - 1.5x compared to native Python structures +| Search Mode / Comparator | Pure Python | Python + Rust | Pure C++ (O3) | Rust Speedup | Systems & Design Insights | +| :--- | :--- | :--- | :--- | :--- | :--- | +| **Standard (`<` comparison)** | 0.0214s | 0.0028s | 0.0000s | **7.5x** | Preserves $O(\log N)$ via direct list indexing. | +| **Custom Comparator (lambda)**| 0.0251s | 0.0074s | N/A | **3.4x** | Overcomes Python loop overhead despite FFI callbacks. | -The facade pattern adds minimal overhead while providing: -- STL-style API -- Better error messages -- Bounds checking -- Type safety +* **Direct Indexing**: Instead of extracting/copying the entire list (an $O(N)$ operation), the Rust backend uses direct GIL-bound indexing (`arr.get_item(mid)`), maintaining the strict $O(\log N)$ search complexity. -See `benchmarks/README.md` for detailed analysis. ## Testing diff --git a/benchmarks/benchmark_algorithms.py b/benchmarks/benchmark_algorithms.py new file mode 100644 index 0000000..802e926 --- /dev/null +++ b/benchmarks/benchmark_algorithms.py @@ -0,0 +1,140 @@ +import time +import subprocess +import os +import sys +import gc +from pathlib import Path + +# Add project root to path to run directly from development folder +sys.path.insert(0, str(Path(__file__).resolve().parents[1])) + +from pythonstl import next_permutation, nth_element, partition, stl_set +from pythonstl.facade.algorithms import RUST_AVAILABLE + +def run_py_permutation(): + arr = [1, 2, 3, 4, 5, 6, 7, 8, 9] + while next_permutation(arr, use_rust=False): + pass + +def run_rust_permutation(): + arr = [1, 2, 3, 4, 5, 6, 7, 8, 9] + while next_permutation(arr, use_rust=True): + pass + +def run_py_nth_element(): + arr = list(range(50000, 0, -1)) + nth_element(arr, 25000, use_rust=False) + +def run_rust_nth_element(): + arr = list(range(50000, 0, -1)) + nth_element(arr, 25000, use_rust=True) + +def run_py_partition(): + arr = list(range(100000)) + partition(arr, lambda x: x % 2 == 0, use_rust=False) + +def run_rust_partition(): + arr = list(range(100000)) + partition(arr, lambda x: x % 2 == 0, use_rust=True) + +# ----------------- FFI/Execution Framework ----------------- + +def compile_cpp(): + bench_dir = Path(__file__).parent + cpp_source = bench_dir / "benchmark_native.cpp" + cpp_exe = bench_dir / ("benchmark_native.exe" if os.name == 'nt' else "benchmark_native") + + try: + subprocess.run( + ["g++", "-O3", str(cpp_source), "-o", str(cpp_exe)], + check=True, + capture_output=True + ) + return cpp_exe + except Exception: + return None + +def run_cpp_benchmark(cpp_exe, arg): + try: + result = subprocess.run([str(cpp_exe), arg], check=True, capture_output=True, text=True) + return float(result.stdout.strip()) + except Exception: + return None + +def run_test(name, py_func, rust_func): + print(f"Benchmarking {name}...") + + gc.collect() + start = time.perf_counter() + py_func() + py_t = time.perf_counter() - start + + rust_t = None + if RUST_AVAILABLE: + gc.collect() + start = time.perf_counter() + rust_func() + rust_t = time.perf_counter() - start + + return py_t, rust_t + +def main(): + print("=============================================================") + print(" PythonSTL Performance Benchmark: Algorithms ") + print("=============================================================\n") + + cpp_exe = compile_cpp() + + # Run tests + py_perm, rust_perm = run_test("next_permutation (9 elements, 362,880 cycles)", run_py_permutation, run_rust_permutation) + cpp_perm = run_cpp_benchmark(cpp_exe, "next_permutation") if cpp_exe else None + + py_nth, rust_nth = run_test("nth_element (50,000 reversed items, find median)", run_py_nth_element, run_rust_nth_element) + cpp_nth = run_cpp_benchmark(cpp_exe, "nth_element") if cpp_exe else None + + py_part, rust_part = run_test("partition (100,000 items, evens/odds)", run_py_partition, run_rust_partition) + cpp_part = run_cpp_benchmark(cpp_exe, "partition") if cpp_exe else None + + # Cleanup compiled binary + if cpp_exe and cpp_exe.exists(): + try: + cpp_exe.unlink() + except Exception: + pass + + print("\n" + "=" * 70) + print(" ALGORITHMS PERFORMANCE TABLE ") + print("=" * 70) + print(f"{'Algorithm Name':<22} | {'Pure Python':<12} | {'Python + Rust':<15} | {'Pure C++ (O3)':<15}") + print("-" * 70) + + def format_row(name, py_t, rust_t, cpp_t): + py_str = f"{py_t:.4f}s" + + if rust_t is not None: + if rust_t > 0: + rust_speedup = py_t / rust_t + rust_str = f"{rust_t:.4f}s ({rust_speedup:.1f}x)" + else: + rust_str = f"{rust_t:.4f}s (>1000x)" + else: + rust_str = "N/A" + + if cpp_t is not None: + if cpp_t > 0: + cpp_speedup = py_t / cpp_t + cpp_str = f"{cpp_t:.4f}s ({cpp_speedup:.1f}x)" + else: + cpp_str = f"{cpp_t:.4f}s (>1000x)" + else: + cpp_str = "N/A" + + print(f"{name:<22} | {py_str:<12} | {rust_str:<15} | {cpp_str:<15}") + + format_row("next_permutation", py_perm, rust_perm, cpp_perm) + format_row("nth_element", py_nth, rust_nth, cpp_nth) + format_row("partition", py_part, rust_part, cpp_part) + print("=============================================================") + +if __name__ == "__main__": + main() diff --git a/benchmarks/benchmark_all_structures.py b/benchmarks/benchmark_all_structures.py new file mode 100644 index 0000000..ab4df55 --- /dev/null +++ b/benchmarks/benchmark_all_structures.py @@ -0,0 +1,221 @@ +import time +import sys +import gc +from pathlib import Path + +# Add project root to path to run directly from development folder +sys.path.insert(0, str(Path(__file__).resolve().parents[1])) + +from pythonstl import stack, queue, vector, stl_set, stl_map, priority_queue +from pythonstl.facade.stack import RUST_AVAILABLE as STACK_RUST_AVAILABLE +from pythonstl.facade.queue import RUST_AVAILABLE as QUEUE_RUST_AVAILABLE +from pythonstl.facade.vector import RUST_AVAILABLE as VECTOR_RUST_AVAILABLE +from pythonstl.facade.set import RUST_AVAILABLE as SET_RUST_AVAILABLE +from pythonstl.facade.map import RUST_AVAILABLE as MAP_RUST_AVAILABLE +from pythonstl.facade.priority_queue import RUST_AVAILABLE as PQ_RUST_AVAILABLE + +def run_benchmark(name, py_func, rust_func, has_rust): + print(f"Benchmarking {name}...") + + # Run Python benchmark + gc.collect() + start = time.perf_counter() + py_func() + py_time = time.perf_counter() - start + + rust_time = None + if has_rust: + gc.collect() + start = time.perf_counter() + rust_func() + rust_time = time.perf_counter() - start + + return py_time, rust_time + +# ----------------- Benchmark Workloads ----------------- + +def bench_stack_py(): + s = stack(use_rust=False) + for i in range(500000): + s.push(i) + for _ in range(500000): + s.pop() + +def bench_stack_rust(): + s = stack(use_rust=True) + for i in range(500000): + s.push(i) + for _ in range(500000): + s.pop() + +def bench_queue_py(): + q = queue(use_rust=False) + for i in range(500000): + q.push(i) + for _ in range(500000): + q.pop() + +def bench_queue_rust(): + q = queue(use_rust=True) + for i in range(500000): + q.push(i) + for _ in range(500000): + q.pop() + +def bench_vector_py(): + v = vector(use_rust=False) + # 1. Push back 10,000 items + for i in range(10000): + v.push_back(i) + # 2. Access via at() + for i in range(10000): + _ = v.at(i) + # 3. In-place insertions + for i in range(100): + v.insert(5000, i) + +def bench_vector_rust(): + v = vector(use_rust=True) + # 1. Push back 10,000 items + for i in range(10000): + v.push_back(i) + # 2. Access via at() + for i in range(10000): + _ = v.at(i) + # 3. In-place insertions + for i in range(100): + v.insert(5000, i) + +def bench_set_py(): + s = stl_set(use_rust=False) + # 1. Insertions (50,000) + for i in range(50000): + s.insert(i) + # 2. Lookup/Find (50,000) + for i in range(50000): + _ = s.find(i) + # 3. Erasures (50,000) + for i in range(50000): + s.erase(i) + +def bench_set_rust(): + s = stl_set(use_rust=True) + # 1. Insertions (50,000) + for i in range(50000): + s.insert(i) + # 2. Lookup/Find (50,000) + for i in range(50000): + _ = s.find(i) + # 3. Erasures (50,000) + for i in range(50000): + s.erase(i) + +def bench_map_py(): + m = stl_map(use_rust=False) + # 1. Insertions (50,000) + for i in range(50000): + m.insert(i, i * 2) + # 2. Lookup/Find (50,000) + for i in range(50000): + _ = m.find(i) + # 3. Access via at() + for i in range(50000): + _ = m.at(i) + # 4. Erasures (50,000) + for i in range(50000): + m.erase(i) + +def bench_map_rust(): + m = stl_map(use_rust=True) + # 1. Insertions (50,000) + for i in range(50000): + m.insert(i, i * 2) + # 2. Lookup/Find (50,000) + for i in range(50000): + _ = m.find(i) + # 3. Access via at() + for i in range(50000): + _ = m.at(i) + # 4. Erasures (50,000) + for i in range(50000): + m.erase(i) + +def bench_priority_queue_py(): + pq = priority_queue(use_rust=False) + # 1. Pushes (50,000) + for i in range(50000): + pq.push(i) + # 2. Pops (50,000) + for _ in range(50000): + _ = pq.top() + pq.pop() + +def bench_priority_queue_rust(): + pq = priority_queue(use_rust=True) + # 1. Pushes (50,000) + for i in range(50000): + pq.push(i) + # 2. Pops (50,000) + for _ in range(50000): + _ = pq.top() + pq.pop() + + +# ----------------- Main Execution ----------------- + +def main(): + print("=============================================================") + print(" PythonSTL Comprehensive Container Benchmark Suite ") + print("=============================================================\n") + + results = {} + + # 1. Stack + py_t, rust_t = run_benchmark("Stack (500,000 cycles)", bench_stack_py, bench_stack_rust, STACK_RUST_AVAILABLE) + results["Stack"] = (py_t, rust_t, STACK_RUST_AVAILABLE) + + # 2. Queue + py_t, rust_t = run_benchmark("Queue (500,000 cycles)", bench_queue_py, bench_queue_rust, QUEUE_RUST_AVAILABLE) + results["Queue"] = (py_t, rust_t, QUEUE_RUST_AVAILABLE) + + # 3. Vector + py_t, rust_t = run_benchmark("Vector (10,000 push/access + 100 inserts)", bench_vector_py, bench_vector_rust, VECTOR_RUST_AVAILABLE) + results["Vector"] = (py_t, rust_t, VECTOR_RUST_AVAILABLE) + + # 4. Set + py_t, rust_t = run_benchmark("Set (50,000 inserts/finds/erases)", bench_set_py, bench_set_rust, SET_RUST_AVAILABLE) + results["Set"] = (py_t, rust_t, SET_RUST_AVAILABLE) + + # 5. Map + py_t, rust_t = run_benchmark("Map (50,000 inserts/finds/ats/erases)", bench_map_py, bench_map_rust, MAP_RUST_AVAILABLE) + results["Map"] = (py_t, rust_t, MAP_RUST_AVAILABLE) + + # 6. Priority Queue + py_t, rust_t = run_benchmark("Priority Queue (50,000 push/pops)", bench_priority_queue_py, bench_priority_queue_rust, PQ_RUST_AVAILABLE) + results["Priority Queue"] = (py_t, rust_t, PQ_RUST_AVAILABLE) + + print("\n" + "=" * 70) + print(" PERFORMANCE SUMMARY TABLE ") + print("=" * 70) + print(f"{'Container Class':<18} | {'Pure Python':<12} | {'Python + Rust':<15} | {'Speedup Status':<18}") + print("-" * 70) + + for container, (py_time, rust_time, is_rust) in results.items(): + py_str = f"{py_time:.4f}s" + if is_rust and rust_time is not None: + rust_str = f"{rust_time:.4f}s" + speedup = py_time / rust_time + status = f"{speedup:.2f}x faster" + else: + rust_str = "N/A" + status = "Pure Py Fallback" + + print(f"{container:<18} | {py_str:<12} | {rust_str:<15} | {status:<18}") + + print("=============================================================") + print("Note: Containers marked 'Pure Py Fallback' will run using the") + print("original python backends until their Rust cores are built.") + print("=============================================================") + +if __name__ == "__main__": + main() diff --git a/benchmarks/benchmark_binary_search.py b/benchmarks/benchmark_binary_search.py new file mode 100644 index 0000000..3794766 --- /dev/null +++ b/benchmarks/benchmark_binary_search.py @@ -0,0 +1,147 @@ +import time +import subprocess +import os +import sys +import gc +from pathlib import Path + +# Add project root to path to run directly from development folder +sys.path.insert(0, str(Path(__file__).resolve().parents[1])) + +from pythonstl import lower_bound +from pythonstl.facade.algorithms import RUST_AVAILABLE + +def run_py_binary_search(arr, targets): + sum_indices = 0 + for target in targets: + sum_indices += lower_bound(arr, target, use_rust=False) + return sum_indices + +def run_rust_binary_search(arr, targets): + sum_indices = 0 + for target in targets: + sum_indices += lower_bound(arr, target, use_rust=True) + return sum_indices + +def run_py_comp_binary_search(arr, targets, comp): + sum_indices = 0 + for target in targets: + sum_indices += lower_bound(arr, target, comp=comp, use_rust=False) + return sum_indices + +def run_rust_comp_binary_search(arr, targets, comp): + sum_indices = 0 + for target in targets: + sum_indices += lower_bound(arr, target, comp=comp, use_rust=True) + return sum_indices + +# ----------------- FFI/Execution Framework ----------------- + +def compile_cpp(): + bench_dir = Path(__file__).parent + cpp_source = bench_dir / "benchmark_native.cpp" + cpp_exe = bench_dir / ("benchmark_native.exe" if os.name == 'nt' else "benchmark_native") + + try: + subprocess.run( + ["g++", "-O3", str(cpp_source), "-o", str(cpp_exe)], + check=True, + capture_output=True + ) + return cpp_exe + except Exception: + return None + +def run_cpp_benchmark(cpp_exe, arg): + try: + result = subprocess.run([str(cpp_exe), arg], check=True, capture_output=True, text=True) + return float(result.stdout.strip()) + except Exception: + return None + +def main(): + print("=============================================================") + print(" PythonSTL Performance Benchmark: Binary Search ") + print("=============================================================\n") + + # 1. Setup sorted array of 1,000,000 elements + print("Generating 1,000,000 elements sorted array...") + arr = [i * 2 for i in range(1000000)] + targets = [q * 3 for q in range(5000)] + + cpp_exe = compile_cpp() + + # Standard comparisons (Pure Py vs Rust vs C++) + print("Running standard binary search (5,000 queries)...") + gc.collect() + start = time.perf_counter() + run_py_binary_search(arr, targets) + py_t = time.perf_counter() - start + + rust_t = None + if RUST_AVAILABLE: + gc.collect() + start = time.perf_counter() + run_rust_binary_search(arr, targets) + rust_t = time.perf_counter() - start + + cpp_t = run_cpp_benchmark(cpp_exe, "binary_search") if cpp_exe else None + + # Custom comparator comparisons (how slow is FFI callback?) + print("Running custom comparator binary search (5,000 queries)...") + comp = lambda a, b: a < b + + gc.collect() + start = time.perf_counter() + run_py_comp_binary_search(arr, targets, comp) + py_comp_t = time.perf_counter() - start + + rust_comp_t = None + if RUST_AVAILABLE: + gc.collect() + start = time.perf_counter() + run_rust_comp_binary_search(arr, targets, comp) + rust_comp_t = time.perf_counter() - start + + # Cleanup compiled binary + if cpp_exe and cpp_exe.exists(): + try: + cpp_exe.unlink() + except Exception: + pass + + print("\n" + "=" * 70) + print(" BINARY SEARCH PERFORMANCE TABLE ") + print("=" * 70) + print(f"{'Search Mode / Comparator':<26} | {'Pure Python':<12} | {'Python + Rust':<15} | {'Pure C++ (O3)':<15}") + print("-" * 70) + + def format_row(name, py_t, rust_t, cpp_t): + py_str = f"{py_t:.4f}s" + + if rust_t is not None: + if rust_t > 0: + rust_speedup = py_t / rust_t + rust_str = f"{rust_t:.4f}s ({rust_speedup:.1f}x)" + else: + rust_str = f"{rust_t:.4f}s (>1000x)" + else: + rust_str = "N/A" + + if cpp_t is not None: + if cpp_t > 0: + cpp_speedup = py_t / cpp_t + cpp_str = f"{cpp_t:.4f}s ({cpp_speedup:.1f}x)" + else: + cpp_str = f"{cpp_t:.4f}s (>1000x)" + else: + cpp_str = "N/A" + + print(f"{name:<26} | {py_str:<12} | {rust_str:<15} | {cpp_str:<15}") + + format_row("Standard (< comparison)", py_t, rust_t, cpp_t) + format_row("Custom Comparator (lambda)", py_comp_t, rust_comp_t, None) + print("=============================================================") + +if __name__ == "__main__": + main() diff --git a/benchmarks/benchmark_native.cpp b/benchmarks/benchmark_native.cpp new file mode 100644 index 0000000..ddf018a --- /dev/null +++ b/benchmarks/benchmark_native.cpp @@ -0,0 +1,121 @@ +#include +#include +#include +#include +#include +#include + +void run_stack() { + auto start = std::chrono::high_resolution_clock::now(); + std::stack s; + for (int i = 0; i < 1000000; ++i) { + s.push(i); + } + for (int i = 0; i < 1000000; ++i) { + s.pop(); + } + auto end = std::chrono::high_resolution_clock::now(); + std::chrono::duration diff = end - start; + std::cout << diff.count() << std::endl; +} + +void run_sort() { + std::vector arr(10000); + for (int i = 0; i < 10000; ++i) { + arr[i] = 10000 - i; + } + + auto start = std::chrono::high_resolution_clock::now(); + int n = arr.size(); + for (int i = 0; i < n; ++i) { + for (int j = 0; j < n - 1 - i; ++j) { + if (arr[j] > arr[j + 1]) { + std::swap(arr[j], arr[j + 1]); + } + } + } + auto end = std::chrono::high_resolution_clock::now(); + std::chrono::duration diff = end - start; + std::cout << diff.count() << std::endl; +} + +void run_next_permutation() { + auto start = std::chrono::high_resolution_clock::now(); + std::vector arr = {1, 2, 3, 4, 5, 6, 7, 8, 9}; + while (std::next_permutation(arr.begin(), arr.end())) { + // do nothing + } + auto end = std::chrono::high_resolution_clock::now(); + std::chrono::duration diff = end - start; + std::cout << diff.count() << std::endl; + // Prevent compiler optimization by printing array element to stderr + std::cerr << "next_permutation check: " << arr[0] << std::endl; +} + +void run_nth_element() { + std::vector arr(50000); + for (int i = 0; i < 50000; ++i) { + arr[i] = 50000 - i; + } + auto start = std::chrono::high_resolution_clock::now(); + std::nth_element(arr.begin(), arr.begin() + 25000, arr.end()); + auto end = std::chrono::high_resolution_clock::now(); + std::chrono::duration diff = end - start; + std::cout << diff.count() << std::endl; + // Prevent compiler optimization by printing array element to stderr + std::cerr << "nth_element check: " << arr[25000] << std::endl; +} + +void run_partition() { + std::vector arr(100000); + for (int i = 0; i < 100000; ++i) { + arr[i] = i; + } + auto start = std::chrono::high_resolution_clock::now(); + std::partition(arr.begin(), arr.end(), [](int x) { return x % 2 == 0; }); + auto end = std::chrono::high_resolution_clock::now(); + std::chrono::duration diff = end - start; + std::cout << diff.count() << std::endl; + // Prevent compiler optimization by printing array element to stderr + std::cerr << "partition check: " << arr[0] << std::endl; +} + +void run_binary_search() { + std::vector arr(1000000); + for (int i = 0; i < 1000000; ++i) { + arr[i] = i * 2; + } + auto start = std::chrono::high_resolution_clock::now(); + long long sum_indices = 0; + for (int q = 0; q < 5000; ++q) { + int target = q * 3; + auto it = std::lower_bound(arr.begin(), arr.end(), target); + sum_indices += std::distance(arr.begin(), it); + } + auto end = std::chrono::high_resolution_clock::now(); + std::chrono::duration diff = end - start; + std::cout << diff.count() << std::endl; + // Prevent compiler optimization by printing sum of indices to stderr + std::cerr << "binary_search check: " << sum_indices << std::endl; +} + +int main(int argc, char* argv[]) { + std::string mode = "stack"; + if (argc > 1) { + mode = argv[1]; + } + if (mode == "sort") { + run_sort(); + } else if (mode == "next_permutation") { + run_next_permutation(); + } else if (mode == "nth_element") { + run_nth_element(); + } else if (mode == "partition") { + run_partition(); + } else if (mode == "binary_search") { + run_binary_search(); + } else { + run_stack(); + } + return 0; +} diff --git a/benchmarks/benchmark_rust_vs_py.py b/benchmarks/benchmark_rust_vs_py.py new file mode 100644 index 0000000..7a99969 --- /dev/null +++ b/benchmarks/benchmark_rust_vs_py.py @@ -0,0 +1,193 @@ +import time +import subprocess +import os +import sys +from pathlib import Path + +# Add project root to path to run directly from development folder +sys.path.insert(0, str(Path(__file__).resolve().parents[1])) + +from pythonstl.facade.stack import stack, RUST_AVAILABLE + +# Try importing the bubble_sort function from the compiled Rust library +try: + from pythonstl._rust import bubble_sort as rust_bubble_sort + HAS_RUST_SORT = True +except ImportError: + HAS_RUST_SORT = False + +def run_python_stack_benchmark(): + print("Running Pure Python Stack benchmark...") + s = stack(use_rust=False) + + start = time.perf_counter() + for i in range(1000000): + s.push(i) + for _ in range(1000000): + s.pop() + end = time.perf_counter() + + return end - start + +def run_rust_stack_benchmark(): + if not RUST_AVAILABLE: + print("Python + Rust Stack is not available (Rust binary not compiled). Skipping...") + return None + + print("Running Python + Rust Stack benchmark...") + s = stack(use_rust=True) + + start = time.perf_counter() + for i in range(1000000): + s.push(i) + for _ in range(1000000): + s.pop() + end = time.perf_counter() + + return end - start + +# ----------------- Sorting Benchmarks ----------------- + +def python_bubble_sort(arr): + arr = list(arr) + n = len(arr) + for i in range(n): + for j in range(0, n-i-1): + if arr[j] > arr[j+1]: + arr[j], arr[j+1] = arr[j+1], arr[j] + return arr + +def run_python_sort_benchmark(arr): + print("Running Pure Python Bubble Sort (10,000 items)...") + start = time.perf_counter() + python_bubble_sort(arr) + end = time.perf_counter() + return end - start + +def run_rust_sort_benchmark(arr): + if not HAS_RUST_SORT: + print("Rust bubble_sort is not compiled. Skipping...") + return None + print("Running Python + Rust Bubble Sort (10,000 items)...") + start = time.perf_counter() + rust_bubble_sort(list(arr)) + end = time.perf_counter() + return end - start + +# ----------------- Native C++ Executions ----------------- + +def compile_cpp(): + bench_dir = Path(__file__).parent + cpp_source = bench_dir / "benchmark_native.cpp" + cpp_exe = bench_dir / ("benchmark_native.exe" if os.name == 'nt' else "benchmark_native") + + print("Checking C++ compiler...") + try: + # Compile the C++ program with optimizations enabled (-O3) + print("Compiling native C++ benchmark (g++ -O3)...") + subprocess.run( + ["g++", "-O3", str(cpp_source), "-o", str(cpp_exe)], + check=True, + capture_output=True + ) + return cpp_exe + except (subprocess.CalledProcessError, FileNotFoundError) as e: + print(f"Failed to compile C++ benchmark: {e}. Skipping C++ baseline.") + return None + +def run_cpp_benchmark(cpp_exe, arg): + print(f"Running compiled C++ benchmark ({arg})...") + try: + result = subprocess.run([str(cpp_exe), arg], check=True, capture_output=True, text=True) + cpp_time = float(result.stdout.strip()) + return cpp_time + except Exception as e: + print(f"Failed to run C++ benchmark ({arg}): {e}") + return None + +def main(): + print("============================================================") + print(" PythonSTL Performance Benchmark Suit ") + print("============================================================") + + # Compilation + cpp_exe = compile_cpp() + print() + + # --- BENCHMARK 1: Stack --- + print("------------------------------------------------------------") + print(" BENCHMARK 1: Stack (1,000,000 push/pop cycles)") + print(" Note: High number of Python-Rust boundary crossings") + print("------------------------------------------------------------") + + py_stack = run_python_stack_benchmark() + print(f"Pure Python Stack: {py_stack:.4f} seconds") + + rust_stack = run_rust_stack_benchmark() + if rust_stack is not None: + print(f"Python + Rust Stack: {rust_stack:.4f} seconds") + + cpp_stack = None + if cpp_exe is not None: + cpp_stack = run_cpp_benchmark(cpp_exe, "stack") + if cpp_stack is not None: + print(f"Pure C++ Stack: {cpp_stack:.4f} seconds") + print() + + # --- BENCHMARK 2: Bubble Sort --- + print("------------------------------------------------------------") + print(" BENCHMARK 2: Bubble Sort (10,000 reversed items)") + print(" Note: Single boundary crossing, heavy computational load") + print("------------------------------------------------------------") + + sort_data = list(range(10000, 0, -1)) + + py_sort = run_python_sort_benchmark(sort_data) + print(f"Pure Python Sort: {py_sort:.4f} seconds") + + rust_sort_time = run_rust_sort_benchmark(sort_data) + if rust_sort_time is not None: + print(f"Python + Rust Sort: {rust_sort_time:.4f} seconds") + + cpp_sort = None + if cpp_exe is not None: + cpp_sort = run_cpp_benchmark(cpp_exe, "sort") + if cpp_sort is not None: + print(f"Pure C++ Sort: {cpp_sort:.4f} seconds") + + # Cleanup compiled C++ binary + if cpp_exe is not None and cpp_exe.exists(): + try: + cpp_exe.unlink() + except Exception: + pass + + print("\n" + "=" * 60) + print(" SUMMARY TABLES & METRICS ") + print("=" * 60) + + print("\nTABLE 1: STACK OPERATIONS (1,000,000 Cycles)") + print(f"{'Implementation':<20} | {'Time (Seconds)':<15} | {'Speedup vs. Python':<20}") + print("-" * 62) + print(f"{'Pure Python':<20} | {py_stack:.4f}s{''*8} | {'1.0x (Baseline)':<20}") + if rust_stack is not None: + rust_speedup = py_stack / rust_stack + print(f"{'Python + Rust':<20} | {rust_stack:.4f}s{''*8} | {f'{rust_speedup:.2f}x faster':<20}") + if cpp_stack is not None: + cpp_speedup = py_stack / cpp_stack + print(f"{'Pure C++ (O3)':<20} | {cpp_stack:.4f}s{''*8} | {f'{cpp_speedup:.2f}x faster':<20}") + + print("\nTABLE 2: BUBBLE SORT ALGORITHM (10,000 Elements)") + print(f"{'Implementation':<20} | {'Time (Seconds)':<15} | {'Speedup vs. Python':<20}") + print("-" * 62) + print(f"{'Pure Python':<20} | {py_sort:.4f}s{''*8} | {'1.0x (Baseline)':<20}") + if rust_sort_time is not None: + rust_speedup = py_sort / rust_sort_time + print(f"{'Python + Rust':<20} | {rust_sort_time:.4f}s{''*8} | {f'{rust_speedup:.2f}x faster (Maturin)':<20}") + if cpp_sort is not None: + cpp_speedup = py_sort / cpp_sort + print(f"{'Pure C++ (O3)':<20} | {cpp_sort:.4f}s{''*8} | {f'{cpp_speedup:.2f}x faster':<20}") + print("=" * 60) + +if __name__ == "__main__": + main() diff --git a/pyproject.toml b/pyproject.toml index 027d424..df33774 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,10 @@ [build-system] -requires = ["setuptools>=61.0", "wheel"] -build-backend = "setuptools.build_meta" +requires = ["maturin>=1.5,<2.0"] +build-backend = "maturin" + +[tool.maturin] +python-source = "." +module-name = "pythonstl._rust" [project] name = "pythonstl" diff --git a/pythonstl/__init__.py b/pythonstl/__init__.py index 77d4b2f..ebb4c50 100644 --- a/pythonstl/__init__.py +++ b/pythonstl/__init__.py @@ -8,7 +8,7 @@ data structures while hiding implementation details from users. """ -__version__ = "0.1.1" +__version__ = "0.1.4" __author__ = "PySTL Contributors" from pythonstl.facade.stack import stack @@ -17,6 +17,16 @@ from pythonstl.facade.set import stl_set from pythonstl.facade.map import stl_map from pythonstl.facade.priority_queue import priority_queue +from pythonstl.facade.algorithms import ( + next_permutation, + prev_permutation, + nth_element, + partition, + lower_bound, + upper_bound, + binary_search, + equal_range +) # Also export exceptions for user error handling from pythonstl.core.exceptions import ( @@ -34,6 +44,15 @@ 'stl_set', 'stl_map', 'priority_queue', + # Algorithms + 'next_permutation', + 'prev_permutation', + 'nth_element', + 'partition', + 'lower_bound', + 'upper_bound', + 'binary_search', + 'equal_range', # Exceptions 'PySTLException', 'EmptyContainerError', diff --git a/pythonstl/_rust.pdb b/pythonstl/_rust.pdb new file mode 100644 index 0000000000000000000000000000000000000000..d38dfddc4bf371bf3a3221755b384df86334b118 GIT binary patch literal 1413120 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 z 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℞g3)~rkK5_N65V=`oeROp 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

ey3- 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

VM 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 +with dynamic Rust backend loading and in-place list mutation. +""" + +from typing import Callable, Any + +try: + from pythonstl._rust import next_permutation as _rust_next_permutation + from pythonstl._rust import prev_permutation as _rust_prev_permutation + from pythonstl._rust import nth_element as _rust_nth_element + from pythonstl._rust import partition as _rust_partition + from pythonstl._rust import lower_bound as _rust_lower_bound + from pythonstl._rust import upper_bound as _rust_upper_bound + from pythonstl._rust import binary_search as _rust_binary_search + from pythonstl._rust import equal_range as _rust_equal_range + RUST_AVAILABLE = True +except ImportError: + RUST_AVAILABLE = False + + +# ----------------- Pure-Python Fallbacks ----------------- + +def _py_next_permutation(arr: list) -> bool: + n = len(arr) + if n <= 1: + return False + + i = n - 2 + while i >= 0 and arr[i] >= arr[i + 1]: + i -= 1 + + if i < 0: + arr.reverse() + return False + + j = n - 1 + while arr[j] <= arr[i]: + j -= 1 + + arr[i], arr[j] = arr[j], arr[i] + arr[i + 1:] = reversed(arr[i + 1:]) + return True + + +def _py_prev_permutation(arr: list) -> bool: + n = len(arr) + if n <= 1: + return False + + i = n - 2 + while i >= 0 and arr[i] <= arr[i + 1]: + i -= 1 + + if i < 0: + arr.reverse() + return False + + j = n - 1 + while arr[j] >= arr[i]: + j -= 1 + + arr[i], arr[j] = arr[j], arr[i] + arr[i + 1:] = reversed(arr[i + 1:]) + return True + + +def _py_nth_element(arr: list, nth: int) -> None: + n = len(arr) + if nth < 0 or nth >= n: + return + + left = 0 + right = n - 1 + while left < right: + mid = left + (right - left) // 2 + arr[mid], arr[right] = arr[right], arr[mid] + pivot = arr[right] + i = left + for j in range(left, right): + if arr[j] < pivot: + arr[i], arr[j] = arr[j], arr[i] + i += 1 + arr[i], arr[right] = arr[right], arr[i] + + pivot_idx = i + if pivot_idx == nth: + return + elif pivot_idx > nth: + right = pivot_idx - 1 + else: + left = pivot_idx + 1 + + + +def _py_partition(arr: list, predicate: Callable[[Any], bool]) -> int: + i = 0 + for j in range(len(arr)): + if predicate(arr[j]): + arr[i], arr[j] = arr[j], arr[i] + i += 1 + return i + + +def _py_lower_bound(arr: list, val: Any, comp: Callable[[Any, Any], bool] = None) -> int: + left = 0 + right = len(arr) + while left < right: + mid = left + (right - left) // 2 + mid_val = arr[mid] + is_less = comp(mid_val, val) if comp else (mid_val < val) + if is_less: + left = mid + 1 + else: + right = mid + return left + + +def _py_upper_bound(arr: list, val: Any, comp: Callable[[Any, Any], bool] = None) -> int: + left = 0 + right = len(arr) + while left < right: + mid = left + (right - left) // 2 + mid_val = arr[mid] + is_less = comp(val, mid_val) if comp else (val < mid_val) + if is_less: + right = mid + else: + left = mid + 1 + return left + + +def _py_binary_search(arr: list, val: Any, comp: Callable[[Any, Any], bool] = None) -> bool: + if not arr: + return False + idx = _py_lower_bound(arr, val, comp) + if idx < len(arr): + elem = arr[idx] + if comp: + return not comp(elem, val) and not comp(val, elem) + return elem == val + return False + + +def _py_equal_range(arr: list, val: Any, comp: Callable[[Any, Any], bool] = None) -> tuple[int, int]: + return _py_lower_bound(arr, val, comp), _py_upper_bound(arr, val, comp) + + +# ----------------- Public API Interfaces ----------------- + +def next_permutation(arr: list, use_rust: bool = True) -> bool: + """ + Rearranges elements in-place to the next lexicographically greater permutation. + + If the next permutation exists, rearranges elements and returns True. + Otherwise, reverses the array to the smallest ascending order and returns False. + + Args: + arr: The list to modify in-place. + use_rust: Whether to use the compiled Rust backend (default: True). + + Returns: + True if next permutation exists, False otherwise. + + Time Complexity: + O(n) where n is len(arr) + """ + if use_rust and RUST_AVAILABLE: + return _rust_next_permutation(arr) + return _py_next_permutation(arr) + + +def prev_permutation(arr: list, use_rust: bool = True) -> bool: + """ + Rearranges elements in-place to the next lexicographically smaller permutation. + + If the previous permutation exists, rearranges elements and returns True. + Otherwise, reverses the array to the largest descending order and returns False. + + Args: + arr: The list to modify in-place. + use_rust: Whether to use the compiled Rust backend (default: True). + + Returns: + True if prev permutation exists, False otherwise. + + Time Complexity: + O(n) where n is len(arr) + """ + if use_rust and RUST_AVAILABLE: + return _rust_prev_permutation(arr) + return _py_prev_permutation(arr) + + +def nth_element(arr: list, nth: int, use_rust: bool = True) -> None: + """ + Partitions the list in-place so that the element at index `nth` is the one + that would be there if the list were completely sorted. + + All elements preceding `nth` are partitioned to be less than or equal to `nth`. + All elements succeeding `nth` are partitioned to be greater than or equal to `nth`. + Does not guarantee sorted order of the surrounding elements. + + Args: + arr: The list to modify in-place. + nth: The index that should contain the sorted element. + use_rust: Whether to use the compiled Rust backend (default: True). + + Time Complexity: + O(n) average case + """ + if use_rust and RUST_AVAILABLE: + _rust_nth_element(arr, nth) + else: + _py_nth_element(arr, nth) + + +def partition(arr: list, predicate: Callable[[Any], bool], use_rust: bool = True) -> int: + """ + Reorders the elements in the list in-place such that all elements for which + `predicate` returns True precede all elements for which it returns False. + + Does not guarantee stable relative ordering. + + Args: + arr: The list to modify in-place. + predicate: A callable returning True or False for each element. + use_rust: Whether to use the compiled Rust backend (default: True). + + Returns: + The boundary index pointing to the first element that returned False. + + Time Complexity: + O(n) where n is len(arr) + """ + if use_rust and RUST_AVAILABLE: + return _rust_partition(arr, predicate) + return _py_partition(arr, predicate) + + +def lower_bound(arr: list, val: Any, comp: Callable[[Any, Any], bool] = None, use_rust: bool = True) -> int: + """ + Returns the index of the first element in the range that does not compare less than `val`. + + Args: + arr: The sorted list to search. + val: The value to search for. + comp: Optional custom binary comparator Callable(a, b) defining custom less-than. + use_rust: Whether to use the compiled Rust backend (default: True). + + Returns: + The index of the first element that is >= val, or len(arr) if not found. + + Time Complexity: + O(log n) + """ + if use_rust and RUST_AVAILABLE: + return _rust_lower_bound(arr, val, comp) + return _py_lower_bound(arr, val, comp) + + +def upper_bound(arr: list, val: Any, comp: Callable[[Any, Any], bool] = None, use_rust: bool = True) -> int: + """ + Returns the index of the first element in the range that compares greater than `val`. + + Args: + arr: The sorted list to search. + val: The value to search for. + comp: Optional custom binary comparator Callable(a, b) defining custom less-than. + use_rust: Whether to use the compiled Rust backend (default: True). + + Returns: + The index of the first element that is > val, or len(arr) if not found. + + Time Complexity: + O(log n) + """ + if use_rust and RUST_AVAILABLE: + return _rust_upper_bound(arr, val, comp) + return _py_upper_bound(arr, val, comp) + + +def binary_search(arr: list, val: Any, comp: Callable[[Any, Any], bool] = None, use_rust: bool = True) -> bool: + """ + Checks if a value is present in the sorted range. + + Args: + arr: The sorted list to search. + val: The value to search for. + comp: Optional custom binary comparator Callable(a, b) defining custom less-than. + use_rust: Whether to use the compiled Rust backend (default: True). + + Returns: + True if the element equivalent to val is found, False otherwise. + + Time Complexity: + O(log n) + """ + if use_rust and RUST_AVAILABLE: + return _rust_binary_search(arr, val, comp) + return _py_binary_search(arr, val, comp) + + +def equal_range(arr: list, val: Any, comp: Callable[[Any, Any], bool] = None, use_rust: bool = True) -> tuple[int, int]: + """ + Returns the range of elements equivalent to a given value. + + Args: + arr: The sorted list to search. + val: The value to search for. + comp: Optional custom binary comparator Callable(a, b) defining custom less-than. + use_rust: Whether to use the compiled Rust backend (default: True). + + Returns: + A tuple (lower_bound_index, upper_bound_index) defining the range of equivalent elements. + + Time Complexity: + O(log n) + """ + if use_rust and RUST_AVAILABLE: + return _rust_equal_range(arr, val, comp) + return _py_equal_range(arr, val, comp) + + +__all__ = [ + 'next_permutation', 'prev_permutation', 'nth_element', 'partition', + 'lower_bound', 'upper_bound', 'binary_search', 'equal_range', + 'RUST_AVAILABLE' +] diff --git a/pythonstl/facade/map.py b/pythonstl/facade/map.py index 5a9de18..a4b5a59 100644 --- a/pythonstl/facade/map.py +++ b/pythonstl/facade/map.py @@ -6,9 +6,16 @@ from typing import TypeVar, Iterator as TypingIterator, Tuple from copy import deepcopy +from pythonstl.core.exceptions import KeyNotFoundError from pythonstl.implementations.associative._map_impl import _MapImpl from pythonstl.core.iterator import MapIterator +try: + from pythonstl._rust import RustMap + RUST_AVAILABLE = True +except ImportError: + RUST_AVAILABLE = False + K = TypeVar('K') V = TypeVar('V') @@ -33,14 +40,19 @@ class stl_map: 2 """ - def __init__(self) -> None: + def __init__(self, use_rust: bool = True) -> None: """ Initialize an empty map. Time Complexity: O(1) """ - self._impl = _MapImpl() + if use_rust and RUST_AVAILABLE: + self._impl = RustMap() + self._is_rust = True + else: + self._impl = _MapImpl() + self._is_rust = False def insert(self, key: K, value: V) -> None: """ @@ -104,6 +116,10 @@ def at(self, key: K) -> V: Time Complexity: O(1) average case """ + if not self.find(key): + raise KeyNotFoundError(key) + if self._is_rust: + return self._impl.at(key) return self._impl.at(key) def empty(self) -> bool: @@ -140,6 +156,8 @@ def begin(self) -> MapIterator: Time Complexity: O(1) """ + if self._is_rust: + return MapIterator(dict(self._impl.get_data())) return self._impl.begin() def end(self) -> MapIterator: @@ -152,6 +170,8 @@ def end(self) -> MapIterator: Time Complexity: O(1) """ + if self._is_rust: + return MapIterator({}) return self._impl.end() def copy(self) -> 'stl_map': @@ -164,9 +184,11 @@ def copy(self) -> 'stl_map': Time Complexity: O(n) where n is the number of key-value pairs """ - new_map = stl_map() - for key, value in self: - new_map.insert(key, value) + new_map = stl_map(use_rust=self._is_rust) + if self._is_rust: + new_map._impl.set_data(self._impl.get_data()) + else: + new_map._impl._data = self._impl._data.copy() return new_map # Python magic methods @@ -226,12 +248,10 @@ def __eq__(self, other: object) -> bool: """ if not isinstance(other, stl_map): return False - if self.size() != other.size(): - return False - for key, value in self: - if not other.find(key) or other.at(key) != value: - return False - return True + + self_data = dict(self._impl.get_data()) if self._is_rust else self._impl._data + other_data = dict(other._impl.get_data()) if other._is_rust else other._impl._data + return self_data == other_data def __iter__(self) -> TypingIterator[Tuple[K, V]]: """ @@ -240,6 +260,8 @@ def __iter__(self) -> TypingIterator[Tuple[K, V]]: Returns: Iterator over key-value pairs as tuples. """ + if self._is_rust: + return iter(self._impl.get_data()) return iter(self._impl.get_data().items()) def __copy__(self) -> 'stl_map': @@ -261,10 +283,16 @@ def __deepcopy__(self, memo) -> 'stl_map': Returns: A deep copy of the map. """ - new_map = stl_map() - for key, value in self: - new_map.insert(deepcopy(key, memo), deepcopy(value, memo)) + new_map = stl_map(use_rust=self._is_rust) + if self._is_rust: + new_pairs = [] + for k, v in self._impl.get_data(): + new_pairs.append((deepcopy(k, memo), deepcopy(v, memo))) + new_map._impl.set_data(new_pairs) + else: + new_map._impl._data = deepcopy(self._impl._data, memo) return new_map + __all__ = ['stl_map'] diff --git a/pythonstl/facade/priority_queue.py b/pythonstl/facade/priority_queue.py index 3e77cea..0aa29d4 100644 --- a/pythonstl/facade/priority_queue.py +++ b/pythonstl/facade/priority_queue.py @@ -6,8 +6,15 @@ from typing import TypeVar from copy import deepcopy +from pythonstl.core.exceptions import EmptyContainerError from pythonstl.implementations.heaps._priority_queue_impl import _PriorityQueueImpl +try: + from pythonstl._rust import RustPriorityQueue + RUST_AVAILABLE = True +except ImportError: + RUST_AVAILABLE = False + T = TypeVar('T') @@ -38,7 +45,7 @@ class priority_queue: 10 """ - def __init__(self, comparator: str = "max") -> None: + def __init__(self, comparator: str = "max", use_rust: bool = True) -> None: """ Initialize an empty priority queue. @@ -49,7 +56,12 @@ def __init__(self, comparator: str = "max") -> None: Time Complexity: O(1) """ - self._impl = _PriorityQueueImpl(comparator) + if use_rust and RUST_AVAILABLE: + self._impl = RustPriorityQueue(comparator) + self._is_rust = True + else: + self._impl = _PriorityQueueImpl(comparator) + self._is_rust = False self._comparator = comparator def push(self, value: T) -> None: @@ -74,6 +86,8 @@ def pop(self) -> None: Time Complexity: O(log n) where n is the number of elements """ + if self.empty(): + raise EmptyContainerError("priority_queue") self._impl.pop() def top(self) -> T: @@ -89,6 +103,8 @@ def top(self) -> T: Time Complexity: O(1) """ + if self.empty(): + raise EmptyContainerError("priority_queue") return self._impl.top() def empty(self) -> bool: @@ -125,8 +141,11 @@ def copy(self) -> 'priority_queue': Time Complexity: O(n) where n is the number of elements """ - new_pq = priority_queue(self._comparator) - new_pq._impl._data = self._impl._data.copy() + new_pq = priority_queue(self._comparator, use_rust=self._is_rust) + if self._is_rust: + new_pq._impl.set_data(self._impl.get_data()) + else: + new_pq._impl._data = self._impl._data.copy() return new_pq # Python magic methods @@ -170,8 +189,12 @@ def __eq__(self, other: object) -> bool: """ if not isinstance(other, priority_queue): return False - return (self._comparator == other._comparator - and self._impl._data == other._impl._data) + if self._comparator != other._comparator: + return False + + self_data = self._impl.get_data() if self._is_rust else self._impl._data + other_data = other._impl.get_data() if other._is_rust else other._impl._data + return self_data == other_data def __copy__(self) -> 'priority_queue': """ @@ -192,9 +215,14 @@ def __deepcopy__(self, memo) -> 'priority_queue': Returns: A deep copy of the priority queue. """ - new_pq = priority_queue(self._comparator) - new_pq._impl._data = deepcopy(self._impl._data, memo) + new_pq = priority_queue(self._comparator, use_rust=self._is_rust) + if self._is_rust: + new_data = deepcopy(self._impl.get_data(), memo) + new_pq._impl.set_data(new_data) + else: + new_pq._impl._data = deepcopy(self._impl._data, memo) return new_pq + __all__ = ['priority_queue'] diff --git a/pythonstl/facade/queue.py b/pythonstl/facade/queue.py index 4a08a6d..a7302e1 100644 --- a/pythonstl/facade/queue.py +++ b/pythonstl/facade/queue.py @@ -6,8 +6,15 @@ from typing import TypeVar from copy import deepcopy +from pythonstl.core.exceptions import EmptyContainerError from pythonstl.implementations.linear._queue_impl import _QueueImpl +try: + from pythonstl._rust import RustQueue + RUST_AVAILABLE = True +except ImportError: + RUST_AVAILABLE = False + T = TypeVar('T') @@ -30,14 +37,19 @@ class queue: True """ - def __init__(self) -> None: + def __init__(self, use_rust: bool = True) -> None: """ Initialize an empty queue. Time Complexity: O(1) """ - self._impl = _QueueImpl() + if use_rust and RUST_AVAILABLE: + self._impl = RustQueue() + self._is_rust = True + else: + self._impl = _QueueImpl() + self._is_rust = False def push(self, value: T) -> None: """ @@ -61,6 +73,8 @@ def pop(self) -> None: Time Complexity: O(1) """ + if self.empty(): + raise EmptyContainerError("queue") self._impl.pop() def front(self) -> T: @@ -76,6 +90,8 @@ def front(self) -> T: Time Complexity: O(1) """ + if self.empty(): + raise EmptyContainerError("queue") return self._impl.front() def back(self) -> T: @@ -91,6 +107,8 @@ def back(self) -> T: Time Complexity: O(1) """ + if self.empty(): + raise EmptyContainerError("queue") return self._impl.back() def empty(self) -> bool: @@ -127,9 +145,11 @@ def copy(self) -> 'queue': Time Complexity: O(n) where n is the number of elements """ - new_queue = queue() - # Copy internal deque - new_queue._impl._data = self._impl._data.copy() + new_queue = queue(use_rust=self._is_rust) + if self._is_rust: + new_queue._impl.set_data(self._impl.get_data()) + else: + new_queue._impl._data = self._impl._data.copy() return new_queue # Python magic methods @@ -159,7 +179,10 @@ def __repr__(self) -> str: Returns: String representation showing queue contents. """ - elements = [str(elem) for elem in self._impl._data] + if self._is_rust: + elements = [str(elem) for elem in self._impl.get_data()] + else: + elements = [str(elem) for elem in self._impl._data] return f"queue([{', '.join(elements)}])" def __eq__(self, other: object) -> bool: @@ -174,7 +197,10 @@ def __eq__(self, other: object) -> bool: """ if not isinstance(other, queue): return False - return self._impl._data == other._impl._data + + self_data = self._impl.get_data() if self._is_rust else self._impl._data + other_data = other._impl.get_data() if other._is_rust else other._impl._data + return self_data == other_data def __copy__(self) -> 'queue': """ @@ -195,9 +221,14 @@ def __deepcopy__(self, memo) -> 'queue': Returns: A deep copy of the queue. """ - new_queue = queue() - new_queue._impl._data = deepcopy(self._impl._data, memo) + new_queue = queue(use_rust=self._is_rust) + if self._is_rust: + new_data = deepcopy(self._impl.get_data(), memo) + new_queue._impl.set_data(new_data) + else: + new_queue._impl._data = deepcopy(self._impl._data, memo) return new_queue + __all__ = ['queue'] diff --git a/pythonstl/facade/set.py b/pythonstl/facade/set.py index a6f8d7c..7c1ebc4 100644 --- a/pythonstl/facade/set.py +++ b/pythonstl/facade/set.py @@ -9,6 +9,12 @@ from pythonstl.implementations.associative._set_impl import _SetImpl from pythonstl.core.iterator import SetIterator +try: + from pythonstl._rust import RustSet + RUST_AVAILABLE = True +except ImportError: + RUST_AVAILABLE = False + T = TypeVar('T') @@ -32,14 +38,19 @@ class stl_set: 2 """ - def __init__(self) -> None: + def __init__(self, use_rust: bool = True) -> None: """ Initialize an empty set. Time Complexity: O(1) """ - self._impl = _SetImpl() + if use_rust and RUST_AVAILABLE: + self._impl = RustSet() + self._is_rust = True + else: + self._impl = _SetImpl() + self._is_rust = False def insert(self, value: T) -> None: """ @@ -117,7 +128,8 @@ def begin(self) -> SetIterator: Time Complexity: O(1) """ - return self._impl.begin() + data = self._impl.get_data() if self._is_rust else self._impl._data + return SetIterator(data) def end(self) -> SetIterator: """ @@ -129,7 +141,8 @@ def end(self) -> SetIterator: Time Complexity: O(1) """ - return self._impl.end() + # Return an exhausted iterator + return SetIterator(set()) def copy(self) -> 'stl_set': """ @@ -141,9 +154,11 @@ def copy(self) -> 'stl_set': Time Complexity: O(n) where n is the number of elements """ - new_set = stl_set() - for elem in self: - new_set.insert(elem) + new_set = stl_set(use_rust=self._is_rust) + if self._is_rust: + new_set._impl.set_data(self._impl.get_data()) + else: + new_set._impl._data = self._impl._data.copy() return new_set # Python magic methods @@ -203,12 +218,15 @@ def __eq__(self, other: object) -> bool: """ if not isinstance(other, stl_set): return False - if self.size() != other.size(): - return False - for elem in self: - if not other.find(elem): - return False - return True + + self_data = self._impl.get_data() if self._is_rust else self._impl._data + other_data = other._impl.get_data() if other._is_rust else other._impl._data + + # BTreeSet elements are sorted, so direct list equality works for sorted comparison + if self._is_rust and other._is_rust: + return self_data == other_data + + return set(self_data) == set(other_data) def __iter__(self) -> TypingIterator[T]: """ @@ -217,6 +235,8 @@ def __iter__(self) -> TypingIterator[T]: Returns: Iterator over set elements. """ + if self._is_rust: + return iter(self._impl.get_data()) return iter(self._impl.get_data()) def __copy__(self) -> 'stl_set': @@ -238,10 +258,14 @@ def __deepcopy__(self, memo) -> 'stl_set': Returns: A deep copy of the set. """ - new_set = stl_set() - for elem in self: - new_set.insert(deepcopy(elem, memo)) + new_set = stl_set(use_rust=self._is_rust) + if self._is_rust: + new_data = deepcopy(self._impl.get_data(), memo) + new_set._impl.set_data(new_data) + else: + new_set._impl._data = deepcopy(self._impl._data, memo) return new_set + __all__ = ['stl_set'] diff --git a/pythonstl/facade/stack.py b/pythonstl/facade/stack.py index 6bd37fc..92e3e90 100644 --- a/pythonstl/facade/stack.py +++ b/pythonstl/facade/stack.py @@ -6,8 +6,15 @@ from typing import TypeVar from copy import deepcopy +from pythonstl.core.exceptions import EmptyContainerError from pythonstl.implementations.linear._stack_impl import _StackImpl +try: + from pythonstl._rust import RustStack + RUST_AVAILABLE = True +except ImportError: + RUST_AVAILABLE = False + T = TypeVar('T') @@ -30,14 +37,19 @@ class stack: True """ - def __init__(self) -> None: + def __init__(self, use_rust: bool = True) -> None: """ Initialize an empty stack. Time Complexity: O(1) """ - self._impl = _StackImpl() + if use_rust and RUST_AVAILABLE: + self._impl = RustStack() + self._is_rust = True + else: + self._impl = _StackImpl() + self._is_rust = False def push(self, value: T) -> None: """ @@ -61,6 +73,8 @@ def pop(self) -> None: Time Complexity: O(1) """ + if self.empty(): + raise EmptyContainerError("stack") self._impl.pop() def top(self) -> T: @@ -76,6 +90,8 @@ def top(self) -> T: Time Complexity: O(1) """ + if self.empty(): + raise EmptyContainerError("stack") return self._impl.top() def empty(self) -> bool: @@ -112,9 +128,11 @@ def copy(self) -> 'stack': Time Complexity: O(n) where n is the number of elements """ - new_stack = stack() - # Copy internal data - new_stack._impl._data = self._impl._data.copy() + new_stack = stack(use_rust=self._is_rust) + if self._is_rust: + new_stack._impl.set_data(self._impl.get_data()) + else: + new_stack._impl._data = self._impl._data.copy() return new_stack # Python magic methods @@ -144,7 +162,10 @@ def __repr__(self) -> str: Returns: String representation showing stack contents. """ - elements = [str(elem) for elem in self._impl._data] + if self._is_rust: + elements = [str(elem) for elem in self._impl.get_data()] + else: + elements = [str(elem) for elem in self._impl._data] return f"stack([{', '.join(elements)}])" def __eq__(self, other: object) -> bool: @@ -159,7 +180,10 @@ def __eq__(self, other: object) -> bool: """ if not isinstance(other, stack): return False - return self._impl._data == other._impl._data + + self_data = self._impl.get_data() if self._is_rust else self._impl._data + other_data = other._impl.get_data() if other._is_rust else other._impl._data + return self_data == other_data def __copy__(self) -> 'stack': """ @@ -180,9 +204,14 @@ def __deepcopy__(self, memo) -> 'stack': Returns: A deep copy of the stack. """ - new_stack = stack() - new_stack._impl._data = deepcopy(self._impl._data, memo) + new_stack = stack(use_rust=self._is_rust) + if self._is_rust: + new_data = deepcopy(self._impl.get_data(), memo) + new_stack._impl.set_data(new_data) + else: + new_stack._impl._data = deepcopy(self._impl._data, memo) return new_stack + __all__ = ['stack'] diff --git a/pythonstl/facade/vector.py b/pythonstl/facade/vector.py index 90d32d6..52d98d6 100644 --- a/pythonstl/facade/vector.py +++ b/pythonstl/facade/vector.py @@ -6,9 +6,16 @@ from typing import TypeVar, Iterator as TypingIterator from copy import deepcopy +from pythonstl.core.exceptions import EmptyContainerError, OutOfRangeError from pythonstl.implementations.linear._vector_impl import _VectorImpl from pythonstl.core.iterator import VectorIterator, VectorReverseIterator +try: + from pythonstl._rust import RustVector + RUST_AVAILABLE = True +except ImportError: + RUST_AVAILABLE = False + T = TypeVar('T') @@ -31,14 +38,19 @@ class vector: True """ - def __init__(self) -> None: + def __init__(self, use_rust: bool = True) -> None: """ Initialize an empty vector. Time Complexity: O(1) """ - self._impl = _VectorImpl() + if use_rust and RUST_AVAILABLE: + self._impl = RustVector() + self._is_rust = True + else: + self._impl = _VectorImpl() + self._is_rust = False def push_back(self, value: T) -> None: """ @@ -62,6 +74,8 @@ def pop_back(self) -> None: Time Complexity: O(1) """ + if self.empty(): + raise EmptyContainerError("vector") self._impl.pop_back() def at(self, index: int) -> T: @@ -80,6 +94,8 @@ def at(self, index: int) -> T: Time Complexity: O(1) """ + if index < 0 or index >= self.size(): + raise OutOfRangeError(index, self.size()) return self._impl.at(index) def insert(self, position: int, value: T) -> None: @@ -96,6 +112,8 @@ def insert(self, position: int, value: T) -> None: Time Complexity: O(n) where n is the number of elements after position """ + if position < 0 or position > self.size(): + raise OutOfRangeError(position, self.size()) self._impl.insert(position, value) def erase(self, position: int) -> None: @@ -111,6 +129,8 @@ def erase(self, position: int) -> None: Time Complexity: O(n) where n is the number of elements after position """ + if position < 0 or position >= self.size(): + raise OutOfRangeError(position, self.size()) self._impl.erase(position) def clear(self) -> None: @@ -158,7 +178,8 @@ def begin(self) -> VectorIterator: Time Complexity: O(1) """ - return self._impl.begin() + data = self._impl.get_data() if self._is_rust else self._impl._data + return VectorIterator(data, 0) def end(self) -> VectorIterator: """ @@ -170,7 +191,8 @@ def end(self) -> VectorIterator: Time Complexity: O(1) """ - return self._impl.end() + data = self._impl.get_data() if self._is_rust else self._impl._data + return VectorIterator(data, len(data)) def rbegin(self) -> VectorReverseIterator: """ @@ -182,7 +204,8 @@ def rbegin(self) -> VectorReverseIterator: Time Complexity: O(1) """ - return self._impl.rbegin() + data = self._impl.get_data() if self._is_rust else self._impl._data + return VectorReverseIterator(data) def rend(self) -> VectorReverseIterator: """ @@ -194,7 +217,8 @@ def rend(self) -> VectorReverseIterator: Time Complexity: O(1) """ - return self._impl.rend() + data = self._impl.get_data() if self._is_rust else self._impl._data + return VectorReverseIterator(data, -1) def size(self) -> int: """ @@ -242,9 +266,12 @@ def copy(self) -> 'vector': Time Complexity: O(n) where n is the number of elements """ - new_vector = vector() - for i in range(self.size()): - new_vector.push_back(self.at(i)) + new_vector = vector(use_rust=self._is_rust) + if self._is_rust: + new_vector._impl.set_data(self._impl.get_data()) + else: + new_vector._impl._data = self._impl._data.copy() + new_vector._impl._capacity = self._impl._capacity return new_vector # Python magic methods @@ -280,10 +307,9 @@ def __contains__(self, value: T) -> bool: Time Complexity: O(n) where n is the number of elements """ - for i in range(self.size()): - if self.at(i) == value: - return True - return False + if self._is_rust: + return value in self._impl.get_data() + return value in self._impl._data def __repr__(self) -> str: """ @@ -292,7 +318,10 @@ def __repr__(self) -> str: Returns: String representation showing all elements. """ - elements = [str(self.at(i)) for i in range(self.size())] + if self._is_rust: + elements = [str(elem) for elem in self._impl.get_data()] + else: + elements = [str(elem) for elem in self._impl._data] return f"vector([{', '.join(elements)}])" def __eq__(self, other: object) -> bool: @@ -307,12 +336,10 @@ def __eq__(self, other: object) -> bool: """ if not isinstance(other, vector): return False - if self.size() != other.size(): - return False - for i in range(self.size()): - if self.at(i) != other.at(i): - return False - return True + + self_data = self._impl.get_data() if self._is_rust else self._impl._data + other_data = other._impl.get_data() if other._is_rust else other._impl._data + return self_data == other_data def __lt__(self, other: 'vector') -> bool: """ @@ -324,13 +351,16 @@ def __lt__(self, other: 'vector') -> bool: Returns: True if this vector is lexicographically less than other. """ - min_size = min(self.size(), other.size()) + self_data = self._impl.get_data() if self._is_rust else self._impl._data + other_data = other._impl.get_data() if other._is_rust else other._impl._data + + min_size = min(len(self_data), len(other_data)) for i in range(min_size): - if self.at(i) < other.at(i): + if self_data[i] < other_data[i]: return True - elif self.at(i) > other.at(i): + elif self_data[i] > other_data[i]: return False - return self.size() < other.size() + return len(self_data) < len(other_data) def __iter__(self) -> TypingIterator[T]: """ @@ -339,6 +369,8 @@ def __iter__(self) -> TypingIterator[T]: Returns: Iterator over vector elements. """ + if self._is_rust: + return iter(self._impl.get_data()) return iter(self._impl.get_data()) def __copy__(self) -> 'vector': @@ -360,10 +392,15 @@ def __deepcopy__(self, memo) -> 'vector': Returns: A deep copy of the vector. """ - new_vector = vector() - for i in range(self.size()): - new_vector.push_back(deepcopy(self.at(i), memo)) + new_vector = vector(use_rust=self._is_rust) + if self._is_rust: + new_data = deepcopy(self._impl.get_data(), memo) + new_vector._impl.set_data(new_data) + else: + new_vector._impl._data = deepcopy(self._impl._data, memo) + new_vector._impl._capacity = self._impl._capacity return new_vector + __all__ = ['vector'] diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..a2c0dde --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,733 @@ +use pyo3::prelude::*; +use pyo3::types::PyList; +use std::collections::{VecDeque, BTreeSet, BTreeMap}; +use std::cmp::Ordering; + +// ----------------- PyObjectOrd Bridge ----------------- + +/// A wrapper for PyObject to enable sorted indexing inside Rust's BTreeSet/BTreeMap. +/// It delegates Eq, Ord, PartialEq, and PartialOrd to Python rich comparisons. +#[derive(Clone)] +struct PyObjectOrd(PyObject); + +impl PartialEq for PyObjectOrd { + fn eq(&self, other: &Self) -> bool { + Python::with_gil(|py| { + self.0.bind(py).eq(other.0.bind(py)).unwrap_or(false) + }) + } +} + +impl Eq for PyObjectOrd {} + +impl PartialOrd for PyObjectOrd { + fn partial_cmp(&self, other: &Self) -> Option { + Some(self.cmp(other)) + } +} + +impl Ord for PyObjectOrd { + fn cmp(&self, other: &Self) -> Ordering { + Python::with_gil(|py| { + let self_ref = self.0.bind(py); + let other_ref = other.0.bind(py); + if self_ref.eq(other_ref).unwrap_or(false) { + Ordering::Equal + } else if self_ref.lt(other_ref).unwrap_or(false) { + Ordering::Less + } else { + Ordering::Greater + } + }) + } +} + +// ----------------- RustStack ----------------- + +#[pyclass] +struct RustStack { + data: Vec, +} + +#[pymethods] +impl RustStack { + #[new] + fn new() -> Self { + RustStack { data: Vec::new() } + } + + fn push(&mut self, value: PyObject) { + self.data.push(value); + } + + fn pop(&mut self) -> PyResult<()> { + if !self.data.is_empty() { + self.data.pop(); + } + Ok(()) + } + + fn top(&self, py: Python) -> PyResult> { + if self.data.is_empty() { + Ok(None) + } else { + Ok(Some(self.data.last().unwrap().clone_ref(py))) + } + } + + fn empty(&self) -> bool { + self.data.is_empty() + } + + fn size(&self) -> usize { + self.data.len() + } + + fn get_data(&self, py: Python) -> PyResult> { + Ok(self.data.iter().map(|x| x.clone_ref(py)).collect()) + } + + fn set_data(&mut self, new_data: Vec) { + self.data = new_data; + } +} + +// ----------------- RustQueue ----------------- + +#[pyclass] +struct RustQueue { + data: VecDeque, +} + +#[pymethods] +impl RustQueue { + #[new] + fn new() -> Self { + RustQueue { data: VecDeque::new() } + } + + fn push(&mut self, value: PyObject) { + self.data.push_back(value); + } + + fn pop(&mut self) -> PyResult<()> { + if !self.data.is_empty() { + self.data.pop_front(); + } + Ok(()) + } + + fn front(&self, py: Python) -> PyResult> { + if self.data.is_empty() { + Ok(None) + } else { + Ok(Some(self.data.front().unwrap().clone_ref(py))) + } + } + + fn back(&self, py: Python) -> PyResult> { + if self.data.is_empty() { + Ok(None) + } else { + Ok(Some(self.data.back().unwrap().clone_ref(py))) + } + } + + fn empty(&self) -> bool { + self.data.is_empty() + } + + fn size(&self) -> usize { + self.data.len() + } + + fn get_data(&self, py: Python) -> PyResult> { + Ok(self.data.iter().map(|x| x.clone_ref(py)).collect()) + } + + fn set_data(&mut self, new_data: Vec) { + self.data = new_data.into(); + } +} + +// ----------------- RustVector ----------------- + +#[pyclass] +struct RustVector { + data: Vec, +} + +#[pymethods] +impl RustVector { + #[new] + fn new() -> Self { + RustVector { data: Vec::new() } + } + + fn push_back(&mut self, value: PyObject) { + self.data.push(value); + } + + fn pop_back(&mut self) -> PyResult<()> { + if !self.data.is_empty() { + self.data.pop(); + } + Ok(()) + } + + fn at(&self, index: usize, py: Python) -> PyResult> { + if index >= self.data.len() { + Ok(None) + } else { + Ok(Some(self.data[index].clone_ref(py))) + } + } + + fn insert(&mut self, index: usize, value: PyObject) -> PyResult<()> { + if index <= self.data.len() { + self.data.insert(index, value); + } + Ok(()) + } + + fn erase(&mut self, index: usize) -> PyResult<()> { + if index < self.data.len() { + self.data.remove(index); + } + Ok(()) + } + + fn clear(&mut self) { + self.data.clear(); + } + + fn reserve(&mut self, capacity: usize) { + self.data.reserve(capacity); + } + + fn shrink_to_fit(&mut self) { + self.data.shrink_to_fit(); + } + + fn size(&self) -> usize { + self.data.len() + } + + fn capacity(&self) -> usize { + self.data.capacity() + } + + fn empty(&self) -> bool { + self.data.is_empty() + } + + fn get_data(&self, py: Python) -> PyResult> { + Ok(self.data.iter().map(|x| x.clone_ref(py)).collect()) + } + + fn set_data(&mut self, new_data: Vec) { + self.data = new_data; + } +} + +// ----------------- RustSet ----------------- + +#[pyclass] +struct RustSet { + data: BTreeSet, +} + +#[pymethods] +impl RustSet { + #[new] + fn new() -> Self { + RustSet { data: BTreeSet::new() } + } + + fn insert(&mut self, value: PyObject) -> bool { + self.data.insert(PyObjectOrd(value)) + } + + fn erase(&mut self, value: PyObject) -> bool { + self.data.remove(&PyObjectOrd(value)) + } + + fn find(&self, value: PyObject) -> bool { + self.data.contains(&PyObjectOrd(value)) + } + + fn empty(&self) -> bool { + self.data.is_empty() + } + + fn size(&self) -> usize { + self.data.len() + } + + fn get_data(&self, py: Python) -> PyResult> { + Ok(self.data.iter().map(|x| x.0.clone_ref(py)).collect()) + } + + fn set_data(&mut self, new_data: Vec) { + self.data = new_data.into_iter().map(PyObjectOrd).collect(); + } +} + +// ----------------- RustMap ----------------- + +#[pyclass] +struct RustMap { + data: BTreeMap, +} + +#[pymethods] +impl RustMap { + #[new] + fn new() -> Self { + RustMap { data: BTreeMap::new() } + } + + fn insert(&mut self, key: PyObject, value: PyObject) { + self.data.insert(PyObjectOrd(key), value); + } + + fn erase(&mut self, key: PyObject) -> bool { + self.data.remove(&PyObjectOrd(key)).is_some() + } + + fn find(&self, key: PyObject) -> bool { + self.data.contains_key(&PyObjectOrd(key)) + } + + fn at(&self, key: PyObject, py: Python) -> PyResult> { + if let Some(val) = self.data.get(&PyObjectOrd(key)) { + Ok(Some(val.clone_ref(py))) + } else { + Ok(None) + } + } + + fn empty(&self) -> bool { + self.data.is_empty() + } + + fn size(&self) -> usize { + self.data.len() + } + + fn get_data(&self, py: Python) -> PyResult> { + Ok(self.data.iter().map(|(k, v)| (k.0.clone_ref(py), v.clone_ref(py))).collect()) + } + + fn set_data(&mut self, new_data: Vec<(PyObject, PyObject)>) { + self.data = new_data.into_iter().map(|(k, v)| (PyObjectOrd(k), v)).collect(); + } +} + +// ----------------- RustPriorityQueue ----------------- + +#[pyclass] +struct RustPriorityQueue { + data: Vec, + comparator: String, +} + +#[pymethods] +impl RustPriorityQueue { + #[new] + fn new(comparator: Option) -> Self { + RustPriorityQueue { + data: Vec::new(), + comparator: comparator.unwrap_or_else(|| "max".to_string()), + } + } + + fn push(&mut self, value: PyObject) { + self.data.push(PyObjectOrd(value)); + self.sift_up(self.data.len() - 1); + } + + fn pop(&mut self) -> PyResult<()> { + if !self.data.is_empty() { + let last_idx = self.data.len() - 1; + self.data.swap(0, last_idx); + self.data.pop(); + if !self.data.is_empty() { + self.sift_down(0); + } + } + Ok(()) + } + + fn top(&self, py: Python) -> PyResult> { + if self.data.is_empty() { + Ok(None) + } else { + Ok(Some(self.data[0].0.clone_ref(py))) + } + } + + fn empty(&self) -> bool { + self.data.is_empty() + } + + fn size(&self) -> usize { + self.data.len() + } + + fn get_data(&self, py: Python) -> PyResult> { + Ok(self.data.iter().map(|x| x.0.clone_ref(py)).collect()) + } + + fn set_data(&mut self, new_data: Vec) { + self.data = new_data.into_iter().map(PyObjectOrd).collect(); + } +} + +impl RustPriorityQueue { + fn sift_up(&mut self, mut idx: usize) { + while idx > 0 { + let parent = (idx - 1) / 2; + if self.is_higher_priority(&self.data[idx], &self.data[parent]) { + self.data.swap(idx, parent); + idx = parent; + } else { + break; + } + } + } + + fn sift_down(&mut self, mut idx: usize) { + let len = self.data.len(); + loop { + let left = 2 * idx + 1; + let right = 2 * idx + 2; + let mut highest = idx; + + if left < len && self.is_higher_priority(&self.data[left], &self.data[highest]) { + highest = left; + } + if right < len && self.is_higher_priority(&self.data[right], &self.data[highest]) { + highest = right; + } + + if highest != idx { + self.data.swap(idx, highest); + idx = highest; + } else { + break; + } + } + } + + fn is_higher_priority(&self, a: &PyObjectOrd, b: &PyObjectOrd) -> bool { + if self.comparator == "min" { + a < b + } else { + a > b + } + } +} + +// ----------------- Bubble Sort Benchmark ----------------- + +#[pyfunction] +fn bubble_sort(mut arr: Vec) -> PyResult> { + let len = arr.len(); + if len > 0 { + for i in 0..len { + for j in 0..len - 1 - i { + if arr[j] > arr[j + 1] { + arr.swap(j, j + 1); + } + } + } + } + Ok(arr) +} + +// ----------------- C++ STL Algorithms ----------------- + +#[pyfunction] +fn next_permutation(py: Python, arr: &Bound<'_, PyList>) -> PyResult { + let mut vec: Vec = arr.extract()?; + if vec.len() <= 1 { + return Ok(false); + } + + let mut i = vec.len() - 2; + let mut found = false; + loop { + let current = vec[i].bind(py); + let next = vec[i + 1].bind(py); + if current.lt(next).unwrap_or(false) { + found = true; + break; + } + if i == 0 { + break; + } + i -= 1; + } + + if !found { + vec.reverse(); + for (idx, val) in vec.iter().enumerate() { + arr.set_item(idx, val)?; + } + return Ok(false); + } + + let mut j = vec.len() - 1; + while j > i { + if vec[j].bind(py).gt(vec[i].bind(py)).unwrap_or(false) { + break; + } + j -= 1; + } + + vec.swap(i, j); + vec[i + 1..].reverse(); + + for (idx, val) in vec.iter().enumerate() { + arr.set_item(idx, val)?; + } + + Ok(true) +} + +#[pyfunction] +fn prev_permutation(py: Python, arr: &Bound<'_, PyList>) -> PyResult { + let mut vec: Vec = arr.extract()?; + if vec.len() <= 1 { + return Ok(false); + } + + let mut i = vec.len() - 2; + let mut found = false; + loop { + let current = vec[i].bind(py); + let next = vec[i + 1].bind(py); + if current.gt(next).unwrap_or(false) { + found = true; + break; + } + if i == 0 { + break; + } + i -= 1; + } + + if !found { + vec.reverse(); + for (idx, val) in vec.iter().enumerate() { + arr.set_item(idx, val)?; + } + return Ok(false); + } + + let mut j = vec.len() - 1; + while j > i { + if vec[j].bind(py).lt(vec[i].bind(py)).unwrap_or(false) { + break; + } + j -= 1; + } + + vec.swap(i, j); + vec[i + 1..].reverse(); + + for (idx, val) in vec.iter().enumerate() { + arr.set_item(idx, val)?; + } + + Ok(true) +} + +#[pyfunction] +fn nth_element(_py: Python, arr: &Bound<'_, PyList>, nth: usize) -> PyResult<()> { + let mut vec: Vec = arr.extract()?; + let len = vec.len(); + if nth < len { + quickselect(&mut vec, 0, len - 1, nth); + for (i, val) in vec.iter().enumerate() { + arr.set_item(i, val)?; + } + } + Ok(()) +} + +fn quickselect(arr: &mut Vec, left: usize, right: usize, nth: usize) { + if left >= right { + return; + } + let pivot_idx = partition_q(arr, left, right); + if pivot_idx == nth { + return; + } else if pivot_idx > nth { + if pivot_idx > 0 { + quickselect(arr, left, pivot_idx - 1, nth); + } + } else { + quickselect(arr, pivot_idx + 1, right, nth); + } +} + +fn partition_q(arr: &mut Vec, left: usize, right: usize) -> usize { + let pivot_idx = left + (right - left) / 2; + arr.swap(pivot_idx, right); + let mut i = left; + Python::with_gil(|py| { + let pivot_val = arr[right].clone_ref(py); + let pivot_bound = pivot_val.bind(py); + for j in left..right { + if arr[j].bind(py).lt(pivot_bound).unwrap_or(false) { + arr.swap(i, j); + i += 1; + } + } + }); + arr.swap(i, right); + i +} + +#[pyfunction] +fn partition(py: Python, arr: &Bound<'_, PyList>, predicate: PyObject) -> PyResult { + let mut vec: Vec = arr.extract()?; + let mut i = 0; + for j in 0..vec.len() { + let val = vec[j].clone_ref(py); + let is_true: bool = predicate.call1(py, (val,))?.extract(py)?; + if is_true { + vec.swap(i, j); + i += 1; + } + } + for (idx, val) in vec.iter().enumerate() { + arr.set_item(idx, val)?; + } + Ok(i) +} + +fn lower_bound_impl(py: Python, arr: &Bound<'_, PyList>, val: &PyObject, comp: &Option) -> PyResult { + let len = arr.len(); + let mut left = 0; + let mut right = len; + + while left < right { + let mid = left + (right - left) / 2; + let mid_val = arr.get_item(mid)?; + + let is_less = match comp { + Some(c) => { + let mid_obj = mid_val.to_object(py); + let res: bool = c.call1(py, (mid_obj, val.clone_ref(py)))?.extract(py)?; + res + } + None => { + mid_val.lt(val)? + } + }; + + if is_less { + left = mid + 1; + } else { + right = mid; + } + } + Ok(left) +} + +fn upper_bound_impl(py: Python, arr: &Bound<'_, PyList>, val: &PyObject, comp: &Option) -> PyResult { + let len = arr.len(); + let mut left = 0; + let mut right = len; + + while left < right { + let mid = left + (right - left) / 2; + let mid_val = arr.get_item(mid)?; + + let is_less = match comp { + Some(c) => { + let mid_obj = mid_val.to_object(py); + let res: bool = c.call1(py, (val.clone_ref(py), mid_obj))?.extract(py)?; + res + } + None => { + val.bind(py).lt(&mid_val)? + } + }; + + if is_less { + right = mid; + } else { + left = mid + 1; + } + } + Ok(left) +} + +#[pyfunction] +fn lower_bound(py: Python, arr: &Bound<'_, PyList>, val: PyObject, comp: Option) -> PyResult { + lower_bound_impl(py, arr, &val, &comp) +} + +#[pyfunction] +fn upper_bound(py: Python, arr: &Bound<'_, PyList>, val: PyObject, comp: Option) -> PyResult { + upper_bound_impl(py, arr, &val, &comp) +} + +#[pyfunction] +fn binary_search(py: Python, arr: &Bound<'_, PyList>, val: PyObject, comp: Option) -> PyResult { + let len = arr.len(); + if len == 0 { + return Ok(false); + } + let idx = lower_bound_impl(py, arr, &val, &comp)?; + if idx < len { + let elem = arr.get_item(idx)?; + let eq = match &comp { + Some(c) => { + let elem_obj = elem.to_object(py); + let less1: bool = c.call1(py, (elem_obj.clone(), val.clone_ref(py)))?.extract(py)?; + let less2: bool = c.call1(py, (val.clone_ref(py), elem_obj))?.extract(py)?; + !less1 && !less2 + } + None => { + elem.eq(&val)? + } + }; + Ok(eq) + } else { + Ok(false) + } +} + +#[pyfunction] +fn equal_range(py: Python, arr: &Bound<'_, PyList>, val: PyObject, comp: Option) -> PyResult<(usize, usize)> { + let lb = lower_bound_impl(py, arr, &val, &comp)?; + let ub = upper_bound_impl(py, arr, &val, &comp)?; + Ok((lb, ub)) +} + +// ----------------- Module Registration ----------------- + +#[pymodule] +fn _rust(_py: Python, m: &PyModule) -> PyResult<()> { + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + m.add_function(wrap_pyfunction!(bubble_sort, m)?)?; + m.add_function(wrap_pyfunction!(next_permutation, m)?)?; + m.add_function(wrap_pyfunction!(prev_permutation, m)?)?; + m.add_function(wrap_pyfunction!(nth_element, m)?)?; + m.add_function(wrap_pyfunction!(partition, m)?)?; + m.add_function(wrap_pyfunction!(lower_bound, m)?)?; + m.add_function(wrap_pyfunction!(upper_bound, m)?)?; + m.add_function(wrap_pyfunction!(binary_search, m)?)?; + m.add_function(wrap_pyfunction!(equal_range, m)?)?; + Ok(()) +} diff --git a/tests/test_algorithms.py b/tests/test_algorithms.py new file mode 100644 index 0000000..fc5f9ec --- /dev/null +++ b/tests/test_algorithms.py @@ -0,0 +1,77 @@ +import pytest +from pythonstl import next_permutation, prev_permutation, nth_element, partition +from pythonstl.facade.algorithms import RUST_AVAILABLE + +# Run tests on both implementations (Rust and pure-Python) +PARAMS = [False] +if RUST_AVAILABLE: + PARAMS.append(True) + +@pytest.mark.parametrize("use_rust", PARAMS) +def test_next_permutation(use_rust): + # Basic sorted case + arr = [1, 2, 3] + has_next = next_permutation(arr, use_rust=use_rust) + assert has_next is True + assert arr == [1, 3, 2] + + # Boundary/Last permutation case + arr = [3, 2, 1] + has_next = next_permutation(arr, use_rust=use_rust) + assert has_next is False + assert arr == [1, 2, 3] + + # Duplicates case + arr = [1, 1, 5] + assert next_permutation(arr, use_rust=use_rust) is True + assert arr == [1, 5, 1] + assert next_permutation(arr, use_rust=use_rust) is True + assert arr == [5, 1, 1] + assert next_permutation(arr, use_rust=use_rust) is False + assert arr == [1, 1, 5] + +@pytest.mark.parametrize("use_rust", PARAMS) +def test_prev_permutation(use_rust): + # Basic descending case + arr = [3, 2, 1] + has_prev = prev_permutation(arr, use_rust=use_rust) + assert has_prev is True + assert arr == [3, 1, 2] + + # Boundary/First permutation case + arr = [1, 2, 3] + has_prev = prev_permutation(arr, use_rust=use_rust) + assert has_prev is False + assert arr == [3, 2, 1] + +@pytest.mark.parametrize("use_rust", PARAMS) +def test_nth_element(use_rust): + # Find median (nth = 4 on 9 elements) + arr = [9, 7, 5, 1, 2, 3, 6, 4, 8] + nth = 4 + nth_element(arr, nth, use_rust=use_rust) + + val = arr[nth] + assert val == 5 + for i in range(nth): + assert arr[i] <= val + for i in range(nth + 1, len(arr)): + assert arr[i] >= val + + # Single element and simple boundaries + arr = [2, 1] + nth_element(arr, 0, use_rust=use_rust) + assert arr[0] == 1 + assert arr[1] == 2 + +@pytest.mark.parametrize("use_rust", PARAMS) +def test_partition(use_rust): + # Partition even numbers to the front + arr = [1, 2, 3, 4, 5, 6, 7, 8] + boundary = partition(arr, lambda x: x % 2 == 0, use_rust=use_rust) + + assert boundary == 4 + for i in range(boundary): + assert arr[i] % 2 == 0 + for i in range(boundary, len(arr)): + assert arr[i] % 2 != 0 diff --git a/tests/test_binary_search.py b/tests/test_binary_search.py new file mode 100644 index 0000000..132b86f --- /dev/null +++ b/tests/test_binary_search.py @@ -0,0 +1,104 @@ +import pytest +from pythonstl import lower_bound, upper_bound, binary_search, equal_range + +# Create a custom class to test custom comparator +class Item: + def __init__(self, val): + self.val = val + def __repr__(self): + return f"Item({self.val})" + + +def test_lower_bound_std(): + for use_rust in [True, False]: + arr = [1, 2, 2, 2, 3, 5, 8] + # Element present + assert lower_bound(arr, 2, use_rust=use_rust) == 1 + assert lower_bound(arr, 3, use_rust=use_rust) == 4 + # Element not present, fits in middle + assert lower_bound(arr, 4, use_rust=use_rust) == 5 + # Element smaller than all + assert lower_bound(arr, 0, use_rust=use_rust) == 0 + # Element larger than all + assert lower_bound(arr, 10, use_rust=use_rust) == len(arr) + + +def test_upper_bound_std(): + for use_rust in [True, False]: + arr = [1, 2, 2, 2, 3, 5, 8] + # Element present + assert upper_bound(arr, 2, use_rust=use_rust) == 4 + assert upper_bound(arr, 3, use_rust=use_rust) == 5 + # Element not present, fits in middle + assert upper_bound(arr, 4, use_rust=use_rust) == 5 + # Element smaller than all + assert upper_bound(arr, 0, use_rust=use_rust) == 0 + # Element larger than all + assert upper_bound(arr, 10, use_rust=use_rust) == len(arr) + + +def test_binary_search_std(): + for use_rust in [True, False]: + arr = [1, 2, 2, 2, 3, 5, 8] + # Element present + assert binary_search(arr, 2, use_rust=use_rust) is True + assert binary_search(arr, 3, use_rust=use_rust) is True + assert binary_search(arr, 5, use_rust=use_rust) is True + # Element not present + assert binary_search(arr, 4, use_rust=use_rust) is False + assert binary_search(arr, 0, use_rust=use_rust) is False + assert binary_search(arr, 10, use_rust=use_rust) is False + + +def test_equal_range_std(): + for use_rust in [True, False]: + arr = [1, 2, 2, 2, 3, 5, 8] + assert equal_range(arr, 2, use_rust=use_rust) == (1, 4) + assert equal_range(arr, 3, use_rust=use_rust) == (4, 5) + assert equal_range(arr, 4, use_rust=use_rust) == (5, 5) + assert equal_range(arr, 0, use_rust=use_rust) == (0, 0) + assert equal_range(arr, 10, use_rust=use_rust) == (len(arr), len(arr)) + + +def test_empty_and_single(): + for use_rust in [True, False]: + # Empty list + arr = [] + assert lower_bound(arr, 5, use_rust=use_rust) == 0 + assert upper_bound(arr, 5, use_rust=use_rust) == 0 + assert binary_search(arr, 5, use_rust=use_rust) is False + assert equal_range(arr, 5, use_rust=use_rust) == (0, 0) + + # Single element + arr = [5] + assert lower_bound(arr, 3, use_rust=use_rust) == 0 + assert lower_bound(arr, 5, use_rust=use_rust) == 0 + assert lower_bound(arr, 7, use_rust=use_rust) == 1 + + assert upper_bound(arr, 3, use_rust=use_rust) == 0 + assert upper_bound(arr, 5, use_rust=use_rust) == 1 + assert upper_bound(arr, 7, use_rust=use_rust) == 1 + + assert binary_search(arr, 5, use_rust=use_rust) is True + assert binary_search(arr, 3, use_rust=use_rust) is False + assert equal_range(arr, 5, use_rust=use_rust) == (0, 1) + + +def test_custom_comparator(): + # Comparator returns True if element < val + def item_comp(item1, item2): + return item1.val < item2.val + + for use_rust in [True, False]: + arr = [Item(1), Item(2), Item(2), Item(3)] + val = Item(2) + + assert lower_bound(arr, val, comp=item_comp, use_rust=use_rust) == 1 + assert upper_bound(arr, val, comp=item_comp, use_rust=use_rust) == 3 + assert binary_search(arr, val, comp=item_comp, use_rust=use_rust) is True + assert equal_range(arr, val, comp=item_comp, use_rust=use_rust) == (1, 3) + + # Element not present + val_not = Item(4) + assert lower_bound(arr, val_not, comp=item_comp, use_rust=use_rust) == 4 + assert binary_search(arr, val_not, comp=item_comp, use_rust=use_rust) is False From 263431f0005984c025ded85deb72048a19ec09e2 Mon Sep 17 00:00:00 2001 From: AnshMNSoni Date: Fri, 12 Jun 2026 14:36:07 +0530 Subject: [PATCH 2/2] style: fix all flake8 lint violations and update version label --- README.md | 2 +- pyproject.toml | 2 +- pythonstl/__init__.py | 2 +- pythonstl/facade/algorithms.py | 21 ++++++++++----------- pythonstl/facade/map.py | 3 +-- pythonstl/facade/priority_queue.py | 3 +-- pythonstl/facade/queue.py | 3 +-- pythonstl/facade/set.py | 7 +++---- pythonstl/facade/stack.py | 3 +-- pythonstl/facade/vector.py | 5 ++--- 10 files changed, 22 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 216821e..fc6a908 100644 --- a/README.md +++ b/README.md @@ -419,4 +419,4 @@ Contributions are welcome! Please: - GitHub: [@AnshMNSoni](https://github.com/AnshMNSoni) - Issues: [GitHub Issues](https://github.com/AnshMNSoni/PythonSTL/issues) -**PythonSTL v0.1.1** - Bringing C++ STL elegance to Python +**PythonSTL v1.1.4** - Bringing C++ STL elegance to Python diff --git a/pyproject.toml b/pyproject.toml index df33774..236c093 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ module-name = "pythonstl._rust" [project] name = "pythonstl" -version = "0.1.4" +version = "1.1.4" description = "C++ STL-style containers implemented in Python using the Facade Design Pattern" readme = "README.md" authors = [ diff --git a/pythonstl/__init__.py b/pythonstl/__init__.py index ebb4c50..54e07fd 100644 --- a/pythonstl/__init__.py +++ b/pythonstl/__init__.py @@ -8,7 +8,7 @@ data structures while hiding implementation details from users. """ -__version__ = "0.1.4" +__version__ = "1.1.4" __author__ = "PySTL Contributors" from pythonstl.facade.stack import stack diff --git a/pythonstl/facade/algorithms.py b/pythonstl/facade/algorithms.py index ae273d1..962f4f9 100644 --- a/pythonstl/facade/algorithms.py +++ b/pythonstl/facade/algorithms.py @@ -27,19 +27,19 @@ def _py_next_permutation(arr: list) -> bool: n = len(arr) if n <= 1: return False - + i = n - 2 while i >= 0 and arr[i] >= arr[i + 1]: i -= 1 - + if i < 0: arr.reverse() return False - + j = n - 1 while arr[j] <= arr[i]: j -= 1 - + arr[i], arr[j] = arr[j], arr[i] arr[i + 1:] = reversed(arr[i + 1:]) return True @@ -49,19 +49,19 @@ def _py_prev_permutation(arr: list) -> bool: n = len(arr) if n <= 1: return False - + i = n - 2 while i >= 0 and arr[i] <= arr[i + 1]: i -= 1 - + if i < 0: arr.reverse() return False - + j = n - 1 while arr[j] >= arr[i]: j -= 1 - + arr[i], arr[j] = arr[j], arr[i] arr[i + 1:] = reversed(arr[i + 1:]) return True @@ -71,7 +71,7 @@ def _py_nth_element(arr: list, nth: int) -> None: n = len(arr) if nth < 0 or nth >= n: return - + left = 0 right = n - 1 while left < right: @@ -84,7 +84,7 @@ def _py_nth_element(arr: list, nth: int) -> None: arr[i], arr[j] = arr[j], arr[i] i += 1 arr[i], arr[right] = arr[right], arr[i] - + pivot_idx = i if pivot_idx == nth: return @@ -94,7 +94,6 @@ def _py_nth_element(arr: list, nth: int) -> None: left = pivot_idx + 1 - def _py_partition(arr: list, predicate: Callable[[Any], bool]) -> int: i = 0 for j in range(len(arr)): diff --git a/pythonstl/facade/map.py b/pythonstl/facade/map.py index a4b5a59..3eb9232 100644 --- a/pythonstl/facade/map.py +++ b/pythonstl/facade/map.py @@ -248,7 +248,7 @@ def __eq__(self, other: object) -> bool: """ if not isinstance(other, stl_map): return False - + self_data = dict(self._impl.get_data()) if self._is_rust else self._impl._data other_data = dict(other._impl.get_data()) if other._is_rust else other._impl._data return self_data == other_data @@ -294,5 +294,4 @@ def __deepcopy__(self, memo) -> 'stl_map': return new_map - __all__ = ['stl_map'] diff --git a/pythonstl/facade/priority_queue.py b/pythonstl/facade/priority_queue.py index 0aa29d4..016aefe 100644 --- a/pythonstl/facade/priority_queue.py +++ b/pythonstl/facade/priority_queue.py @@ -191,7 +191,7 @@ def __eq__(self, other: object) -> bool: return False if self._comparator != other._comparator: return False - + self_data = self._impl.get_data() if self._is_rust else self._impl._data other_data = other._impl.get_data() if other._is_rust else other._impl._data return self_data == other_data @@ -224,5 +224,4 @@ def __deepcopy__(self, memo) -> 'priority_queue': return new_pq - __all__ = ['priority_queue'] diff --git a/pythonstl/facade/queue.py b/pythonstl/facade/queue.py index a7302e1..0a5a477 100644 --- a/pythonstl/facade/queue.py +++ b/pythonstl/facade/queue.py @@ -197,7 +197,7 @@ def __eq__(self, other: object) -> bool: """ if not isinstance(other, queue): return False - + self_data = self._impl.get_data() if self._is_rust else self._impl._data other_data = other._impl.get_data() if other._is_rust else other._impl._data return self_data == other_data @@ -230,5 +230,4 @@ def __deepcopy__(self, memo) -> 'queue': return new_queue - __all__ = ['queue'] diff --git a/pythonstl/facade/set.py b/pythonstl/facade/set.py index 7c1ebc4..c1e8efd 100644 --- a/pythonstl/facade/set.py +++ b/pythonstl/facade/set.py @@ -218,14 +218,14 @@ def __eq__(self, other: object) -> bool: """ if not isinstance(other, stl_set): return False - + self_data = self._impl.get_data() if self._is_rust else self._impl._data other_data = other._impl.get_data() if other._is_rust else other._impl._data - + # BTreeSet elements are sorted, so direct list equality works for sorted comparison if self._is_rust and other._is_rust: return self_data == other_data - + return set(self_data) == set(other_data) def __iter__(self) -> TypingIterator[T]: @@ -267,5 +267,4 @@ def __deepcopy__(self, memo) -> 'stl_set': return new_set - __all__ = ['stl_set'] diff --git a/pythonstl/facade/stack.py b/pythonstl/facade/stack.py index 92e3e90..cb02dd8 100644 --- a/pythonstl/facade/stack.py +++ b/pythonstl/facade/stack.py @@ -180,7 +180,7 @@ def __eq__(self, other: object) -> bool: """ if not isinstance(other, stack): return False - + self_data = self._impl.get_data() if self._is_rust else self._impl._data other_data = other._impl.get_data() if other._is_rust else other._impl._data return self_data == other_data @@ -213,5 +213,4 @@ def __deepcopy__(self, memo) -> 'stack': return new_stack - __all__ = ['stack'] diff --git a/pythonstl/facade/vector.py b/pythonstl/facade/vector.py index 52d98d6..0a6fd58 100644 --- a/pythonstl/facade/vector.py +++ b/pythonstl/facade/vector.py @@ -336,7 +336,7 @@ def __eq__(self, other: object) -> bool: """ if not isinstance(other, vector): return False - + self_data = self._impl.get_data() if self._is_rust else self._impl._data other_data = other._impl.get_data() if other._is_rust else other._impl._data return self_data == other_data @@ -353,7 +353,7 @@ def __lt__(self, other: 'vector') -> bool: """ self_data = self._impl.get_data() if self._is_rust else self._impl._data other_data = other._impl.get_data() if other._is_rust else other._impl._data - + min_size = min(len(self_data), len(other_data)) for i in range(min_size): if self_data[i] < other_data[i]: @@ -402,5 +402,4 @@ def __deepcopy__(self, memo) -> 'vector': return new_vector - __all__ = ['vector']