Add gimdict module - high-performance MutableMapping dictionary with pybind11 #5
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implements a new
gimdictmodule that provides a high-performance dictionary-like class with C++ backing, following the established patterns in the pygim project. The module fully implements Python'sMutableMappinginterface and provides multiple backend support.Overview
The new module can be imported and used as follows:
Implementation Details
Core Components
gimdictclass: A high-performance dictionary implementation backed bystd::unordered_map<std::string, py::object>(compatible withtsl::robin_mapinterface)collections.abc.MutableMappingand is explicitly registered with the ABCabsl::flat_hash_mapandtsl::robin_mapbackendsKeyErrorfor missing keys, matching Python's dict behaviorFeatures
backendsanddefault_mapgimdict()(notgimdict.GimDict())get(),pop(),popitem(),setdefault(),update(),clear(),keys(),values(),items()|=for dict updatesrepr()matching dict styleCode Organization
Following the established project structure:
src/_pygim_fast/gimdict.h- C++ class definition with full MutableMapping implementationsrc/_pygim_fast/gimdict.cpp- pybind11 module definition with ABC registrationtests/unittests/test_gimdict.py- 17 comprehensive unit tests comparing against Python dictdocs/examples/gimdict/- Complete API reference, examples, and implementation notesThe build system (
setup.py) automatically discovers and compiles the module aspygim.gimdictduring package build, requiring no additional configuration.Testing
Added 17 comprehensive unit tests, all comparing
gimdictbehavior directly against Python's builtindict:backends,default_map)|=)get(),pop(),popitem(),setdefault(),update(),clear()keys(),values(),items()Documentation
Complete documentation package included:
Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.