Egglog

Latest version: v7.2.0

Safety actively analyzes 640296 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 3 of 4

1.0.1

- Adds youtube video to [presentation slides](./explanation/2023_07_presentation).

1.0.0

Breaking Changes

- Test on Python 3.9 - 3.11, stop testing on 3.8 to follow Scientific Python versioning policy
- Bump [egglog dep](https://github.com/egraphs-good/egglog/compare/45d05e727cceaab13413b4e51a60ee3be9fbf403...ceed816e9369570ffed9feeba157b19471dda70d)
- Adds `Bool` builtin
- Rename `PrintTable` command to `PrintFunction`
- Change extract command back to taking an expression instead of a fact
- Adds `numer` and `denom` functions to `Rational` sort.
- Adds `terms_encoding` boolean flag for creating an EGraph
- Allow print size command to be called with no args to print all sizes
- Add `rebuild` method for sets, maps, and vecs.

New Features

- Add ability to print egglog string of module with `.as_egglog_string`
- Add ability to visualize changes in egraph as it runs with `.saturate()`
- Add ability to make functions and module unextractable as well as increase the cost of a whole module.
- Convert reflected methods based on both types
- Allow specifying custom costs for conversions
- In `py_exec` make a temporary file with source for tracebacks
- Add an experimental Array API implementation with a scikit-learn test

0.7.0

- Bump [egglog dep](https://github.com/egraphs-good/egglog/compare/4d67f262a6f27aa5cfb62a2cfc7df968959105df...45d05e727cceaab13413b4e51a60ee3be9fbf403)

New Features

- Adds ability for custom user defined types in a union for proper static typing with conversions [49](https://github.com/egraphs-good/egglog-python/pull/49)
- Adds `py_eval` function to `EGraph` as a helper to eval Python code. [49](https://github.com/egraphs-good/egglog-python/pull/49)
- Adds on hover behavior for edges in graphviz SVG output to make them easier to trace [49](https://github.com/egraphs-good/egglog-python/pull/49)
- Adds `egglog.exp.program_gen` module that will compile expressions into Python statements/functions [49](https://github.com/egraphs-good/egglog-python/pull/49)
- Adds `py_exec` primitive function for executing Python code [49](https://github.com/egraphs-good/egglog-python/pull/49)

Bug fixes

- Clean up example in tutorial with demand based expression generation [49](https://github.com/egraphs-good/egglog-python/pull/49)

0.6.0

- 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

0.5.1

- Added support for negation on `f64` sort
- Upgraded `egg-smol` dependency ([changes](https://github.com/saulshanabrook/egg-smol/compare/4b7ec0a640b430bc86ec1d9f79e38a06e62c0cb7...353c4387640019bd2066991ee0488dc6d5c54168))

0.5.0

- Renamed `config()` to `run()` to better match `egglog` command
- Fixed `relation` type signature
- Added default limit of 1 to `run()` to match `egglog` command and moved to second arg
- Upgraded `egglog` dependency ([changes](https://github.com/egraphs-good/egglog/compare/30feaaab88452ec4b6c5f7a199345298bac2dd0f...39b199d9bfce9cc47d0c54977279c5b04231e717))
- Added `Set` sort and removed set method from `Map`
- Added `Vec` sort
- Added support for variable args for builtin functions, to use in creation of `Vec` and `Set` sorts.
- Added suport for joining `String`s
- Switch generated egg names to use `.` as seperate (i.e. `Math.__add__`) instead of `_` (i.e. `Math___add__`)
- Adds support for modules to define functions/sorts/rules without executing them, for reuse in other modules
- Moved simplifying and running rulesets to the `run` and `simplify` methods on the `EGraph` from those methods on the `Ruleset` since we can now create `Rulset`s for modules which don't have an EGraph attached and can't be run
- Fixed extracting classmethods which required generic args to cls
- Added support for alternative way of creating variables using functions
- Add NDarray example
- Render EGraphs with `graphviz` in the notebook (used in progress egglog PR).
- Add images to doc examples
- Add `%%egglog` magic to the notebook

Page 3 of 4

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.