- Bump [egglog dep](https://github.com/egraphs-good/egglog/compare/c83fc750878755eb610a314da90f9273b3bfe25d...4d67f262a6f27aa5cfb62a2cfc7df968959105df)
Breaking Changes
- Switches `RunReport` to include more granular timings
New Features
- Add ability to pass `seminaive` flag to Egraph to replicate `--naive` CLI flag [48](https://github.com/egraphs-good/egglog-python/pull/48)
- Add ability to inline leaves $n$ times instead of just once for visualization [48](https://github.com/egraphs-good/egglog-python/pull/48)
- Add `Relation` and `PrintOverallStatistics` low level commands [46](https://github.com/egraphs-good/egglog-python/pull/46)
- Adds `count-matches` and `replace` string commands [46](https://github.com/egraphs-good/egglog-python/pull/46)
Uncategorized
- Added initial supported for Python objects [31](https://github.com/egraphs-good/egglog-python/pull/31)
- Renamed `BaseExpr` to `Expr` for succinctness
- Add [slides for zoom presentation with Open Teams](explanation/2023_07_presentation)
- Started adding tutorial for using with array API and sklearn], using this to drive
the support for more Python integration
- Added a PyObject sort with the `save_object` and `load_object` egraphs methods and the `exec`
- Added more general mechanism to upcast Python arguments into egglog expressions, by registering `converter`s
- Added support for default arguments (this required refactoring declerations so that pretty printing can lookup expressions)
- Added support for properties
- Added support for passing args as keywords
- Add support for pure Python methods, using the `preserve` kwarg to implement functions like `__bool__` on expressions.
- Fix `__str__` method when pretty printing breaks.
- Added to/from i64 to i64 methods.
- Upgraded `egg-smol` dependency ([changes](https://github.com/saulshanabrook/egg-smol/compare/353c4387640019bd2066991ee0488dc6d5c54168...2ac80cb1162c61baef295d8e6d00351bfe84883f))
- Add support for functions which mutates their args, like `__setitem__` [35](https://github.com/egraphs-good/egglog-python/pull/35)
- Makes conversions transitive [38](https://github.com/egraphs-good/egglog-python/pull/38)
- Add support for reflective operators [39](https://github.com/egraphs-good/egglog-python/pull/39)
- Make reflective operators map directly to non-reflective [40](https://github.com/egraphs-good/egglog-python/pull/40)
- Includes latest egglog changes [42](https://github.com/egraphs-good/egglog-python/pull/42)
- Switches to termdag introduced in [egglog 176](https://github.com/egraphs-good/egglog/pull/176)
- Removes custom fork of egglog now that visualizations are in core
- Adds int and float to string functions
- Switches `define` to `let`
- Tidy up notebook appearence [43](https://github.com/egraphs-good/egglog-python/pull/43)
- Display expressions as code in Jupyter notebook
- Display all expressions when graphing
- Start adding to string support [45](https://github.com/egraphs-good/egglog-python/pull/45)
- Fix adding rules for sorts defined in other modules
- Split out array API into multiple module
- tidy up docs homepage