Metadata-Version: 2.2
Name: dualdict-cpp
Version: 0.3.3a2
Summary: Experimental native record-pool backend for DualDict
Author: Anjani Agrawal
License: MIT License
         
         Copyright (c) 2026 Anjani
         
         Permission is hereby granted, free of charge, to any person obtaining a copy
         of this software and associated documentation files (the "Software"), to deal
         in the Software without restriction, including without limitation the rights
         to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
         copies of the Software, and to permit persons to whom the Software is
         furnished to do so, subject to the following conditions:
         
         The above copyright notice and this permission notice shall be included in all
         copies or substantial portions of the Software.
         
         THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
         IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
         FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
         AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
         LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
         OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
         SOFTWARE.
         
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: C++
Project-URL: Author LinkedIn, https://www.linkedin.com/in/anjani-kumar-agrawal/
Requires-Python: >=3.10
Requires-Dist: dualdict==0.1.0a2
Description-Content-Type: text/markdown

# DualDict C++ — experimental native backends

Optional native backends for DualDict, distributed under the MIT License.
The native binaries incorporate nanobind and robin-map under their respective
BSD-3-Clause and MIT terms, included in `THIRD_PARTY_NOTICES.txt`.
Distribution version **0.3.3a2** contains backend **V3.3.1** and depends on
`dualdict==0.1.0a2`. This is an alpha personal project: APIs may change,
development is intermittent, and no support or release schedule is promised.

## Installation

Once this version is published on PyPI:

```sh
python -m pip install dualdict-cpp==0.3.3a2
```

The initial wheel is for **Windows x64, GIL-enabled CPython 3.12**. Other Python/OS
combinations require a source build with a C++17 compiler and Python development
headers (MSVC Build Tools on Windows). Isolated builds obtain CMake, nanobind and
the other declared build dependencies. Source-build CI covers CPython 3.10, 3.12
and 3.14 on Windows, Linux and macOS; this is not a complete binary wheel matrix.
Python 3.10+ is required. Native code supports the main interpreter only;
free-threaded Python, PyPy and subinterpreters are unsupported.

```python
from dualdict.v331_cpp import DualDict

d = DualDict([(101, ("Alice", "Engineering"))])
employee = d.by_key.live(101)
d.by_key.set_field(101, 1, "Research")
assert employee.snapshot() == ("Alice", "Research")
assert d.by_value[("Alice", "Research")] == 101
```

Indexed reads return raw endpoints; use `view.live(key)` for a live handle.
Installing this distribution does not change the default pure-Python API.
Deletion permanently invalidates retained handles. Endpoints must have stable,
non-raising, non-reentrant hash/equality behavior, including tuple members.
Tuple-field edits require plain tuples. Multiple calls are not transactions;
application synchronization is required for shared multi-call sequences.
If callback-induced rollback cannot restore indexes, the native owner disables
itself and must be discarded. Arbitrary hostile callbacks and asynchronous
interruption are outside transaction-level guarantees. No production-grade
security assurance or universal performance improvement is claimed.

For the complete API, limitations, examples and reproducible benchmarks, download
the `dualdict` 0.1.0a2 **source archive** from its package files. It includes
`README.md`, `docs/`, `examples/`, `tests/` and `benchmarks/README.md`. The native
source archive includes implementation sources and backend design notes.

## Author

Created by [Anjani Agrawal](https://www.linkedin.com/in/anjani-kumar-agrawal/).
