You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**Rust toolchain** - Version 1.89.0 (specified in rust-toolchain.toml)
26
-
-**Python** - 3.10+ (see .python-version)
27
+
-**Rust toolchain** - See rust-toolchain.toml for version
28
+
-**Python** - See .python-version for version
27
29
28
30
### Common Commands
29
31
30
32
```bash
31
-
# Install dependencies (for development)
32
-
uv sync --extra dev --locked
33
-
34
-
# Install dependencies (for testing)
35
-
uv sync --extra test --locked
33
+
# Install dependencies
34
+
uv sync --all-extras
36
35
37
36
# Run tests
38
37
uv run pytest --benchmark-disable -vvv --durations=10
@@ -91,7 +90,7 @@ See `pyproject.toml` for complete Ruff configuration.
91
90
-**FFI**: Uses PyO3 for Python bindings
92
91
-**Main library**: Uses egglog from git (saulshanabrook/egg-smol, clone-cost branch)
93
92
94
-
### File Organization
93
+
### Rust File Organization
95
94
-`src/lib.rs` - Main library entry point
96
95
-`src/egraph.rs` - E-graph implementation
97
96
-`src/conversions.rs` - Type conversions between Python and Rust
@@ -102,6 +101,31 @@ See `pyproject.toml` for complete Ruff configuration.
102
101
-`src/termdag.rs` - Term DAG operations
103
102
-`src/utils.rs` - Utility functions
104
103
104
+
### Python File Organization
105
+
106
+
#### Public Interface
107
+
All public Python APIs are exported from the top-level `egglog` module. Anything that is public should be exported in `python/egglog/__init__.py` at the top level.
108
+
109
+
#### Lower-Level Bindings
110
+
The `egglog.bindings` module provides lower-level access to the Rust implementation for advanced use cases.
111
+
112
+
#### Core Python Files
113
+
-`python/egglog/__init__.py` - Top-level module exports, defines the public API
114
+
-`python/egglog/egraph.py` - Main EGraph class and e-graph management
115
+
-`python/egglog/egraph_state.py` - E-graph state and execution management
116
+
-`python/egglog/runtime.py` - Runtime system for expression evaluation and method definitions
0 commit comments