egglog 6.1.0__tar.gz → 7.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of egglog might be problematic. Click here for more details.
- egglog-7.1.0/.github/dependabot.yml +19 -0
- egglog-7.1.0/.github/workflows/CI.yml +80 -0
- egglog-7.1.0/.github/workflows/version.yml +134 -0
- {egglog-6.1.0 → egglog-7.1.0}/.pre-commit-config.yaml +1 -1
- egglog-7.1.0/CITATION.cff +35 -0
- {egglog-6.1.0 → egglog-7.1.0}/Cargo.lock +64 -50
- {egglog-6.1.0 → egglog-7.1.0}/Cargo.toml +7 -7
- {egglog-6.1.0 → egglog-7.1.0}/PKG-INFO +10 -10
- egglog-7.1.0/README.md +10 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/changelog.md +24 -0
- egglog-7.1.0/docs/explanation/2024_03_17_community_talk.ipynb +9604 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/reference/python-integration.md +38 -0
- egglog-7.1.0/increment_version.py +79 -0
- {egglog-6.1.0 → egglog-7.1.0}/pyproject.toml +12 -3
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/__init__.py +1 -1
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/bindings.pyi +9 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/builtins.py +42 -2
- egglog-7.1.0/python/egglog/conversion.py +177 -0
- egglog-7.1.0/python/egglog/declarations.py +640 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/egraph.py +602 -800
- egglog-7.1.0/python/egglog/egraph_state.py +456 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/exp/array_api.py +100 -88
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/exp/array_api_numba.py +6 -1
- egglog-7.1.0/python/egglog/exp/siu_examples.py +35 -0
- egglog-7.1.0/python/egglog/pretty.py +464 -0
- egglog-7.1.0/python/egglog/runtime.py +548 -0
- egglog-7.1.0/python/egglog/thunk.py +71 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/type_constraint_solver.py +5 -2
- {egglog-6.1.0 → egglog-7.1.0}/python/tests/__snapshots__/test_array_api/TestLDA.test_optimize.py +2 -2
- {egglog-6.1.0 → egglog-7.1.0}/python/tests/__snapshots__/test_array_api/TestLDA.test_source_optimized.py +2 -2
- {egglog-6.1.0 → egglog-7.1.0}/python/tests/conftest.py +3 -3
- {egglog-6.1.0 → egglog-7.1.0}/python/tests/test_array_api.py +34 -29
- {egglog-6.1.0 → egglog-7.1.0}/python/tests/test_high_level.py +40 -2
- egglog-7.1.0/python/tests/test_pretty.py +149 -0
- egglog-7.1.0/python/tests/test_runtime.py +109 -0
- egglog-7.1.0/python/tests/test_unstable_fn.py +184 -0
- egglog-7.1.0/rust-toolchain.toml +2 -0
- {egglog-6.1.0 → egglog-7.1.0}/src/conversions.rs +12 -3
- {egglog-6.1.0 → egglog-7.1.0}/src/egraph.rs +30 -13
- {egglog-6.1.0 → egglog-7.1.0}/src/lib.rs +1 -1
- {egglog-6.1.0 → egglog-7.1.0}/src/py_object_sort.rs +24 -22
- {egglog-6.1.0 → egglog-7.1.0}/src/serialize.rs +1 -3
- {egglog-6.1.0 → egglog-7.1.0}/src/utils.rs +3 -3
- egglog-6.1.0/.github/workflows/CI.yml +0 -148
- egglog-6.1.0/README.md +0 -10
- egglog-6.1.0/docs/explanation/2024_03_17_community_talk.ipynb +0 -9538
- egglog-6.1.0/python/egglog/declarations.py +0 -1020
- egglog-6.1.0/python/egglog/runtime.py +0 -700
- egglog-6.1.0/python/tests/test_runtime.py +0 -143
- egglog-6.1.0/rust-toolchain +0 -1
- {egglog-6.1.0 → egglog-7.1.0}/.gitignore +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/.readthedocs.yaml +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/LICENSE +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/conftest.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/.gitignore +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/_templates/comments.html +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/conf.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/environment.yml +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation/.gitignore +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation/2023_07_presentation.ipynb +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation/2023_11_09_portland_state.ipynb +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation/2023_11_17_pytensor.ipynb +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation/2023_11_pydata_lightning_talk.ipynb +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation/2023_12_02_congruence_closure-1.png +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation/2023_12_02_congruence_closure-2.png +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation/2023_12_02_congruence_closure.md +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation/2024_03_17_map.svg +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation/big_graph.svg +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation/define_and_define.md +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation/ecosystem-graph.png +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation/egg.png +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation/indexing_pushdown.ipynb +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation/moa.png +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation/optional_values.md +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation/pldi_2023_presentation.ipynb +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/explanation.md +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/how-to-guides.md +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/index.md +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/reference/bindings.md +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/reference/contributing.md +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/reference/egglog-translation.md +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/reference/high-level.md +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/reference/usage.md +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/reference.md +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/tutorials/getting-started.ipynb +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/tutorials/screenshot-1.png +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/tutorials/screenshot-2.png +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/tutorials/sklearn.ipynb +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/docs/tutorials.md +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/config.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/examples/README.rst +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/examples/__init__.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/examples/bool.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/examples/eqsat_basic.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/examples/fib.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/examples/lambda_.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/examples/matrix.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/examples/ndarrays.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/examples/resolution.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/examples/schedule_demo.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/exp/__init__.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/exp/array_api_jit.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/exp/array_api_program_gen.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/exp/program_gen.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/graphviz_widget.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/ipython_magic.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/py.typed +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/widget.css +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/egglog/widget.js +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/tests/__init__.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/tests/__snapshots__/test_array_api/TestLDA.test_trace.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/tests/__snapshots__/test_program_gen/test_to_string.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/tests/test_bindings.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/tests/test_convert.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/tests/test_modules.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/tests/test_program_gen.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/tests/test_py_object_sort.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/tests/test_type_constraint_solver.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/python/tests/test_typing.py +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/src/error.rs +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/stubtest_allow +0 -0
- {egglog-6.1.0 → egglog-7.1.0}/test-data/unit/check-high-level.test +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# To get started with Dependabot version updates, you'll need to specify which
|
|
2
|
+
# package ecosystems to update and where the package manifests are located.
|
|
3
|
+
# Please see the documentation for all configuration options:
|
|
4
|
+
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
|
|
5
|
+
|
|
6
|
+
version: 2
|
|
7
|
+
updates:
|
|
8
|
+
- package-ecosystem: "cargo"
|
|
9
|
+
directory: "/"
|
|
10
|
+
schedule:
|
|
11
|
+
interval: "weekly"
|
|
12
|
+
- package-ecosystem: "github-actions"
|
|
13
|
+
directory: "/"
|
|
14
|
+
schedule:
|
|
15
|
+
interval: "weekly"
|
|
16
|
+
- package-ecosystem: "pip"
|
|
17
|
+
directory: "/"
|
|
18
|
+
schedule:
|
|
19
|
+
interval: "weekly"
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
pull_request:
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
# Allow one concurrent deployment
|
|
11
|
+
concurrency:
|
|
12
|
+
group: ${{ github.ref }}
|
|
13
|
+
cancel-in-progress: true
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
test:
|
|
17
|
+
name: test ${{ matrix.py }}
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
strategy:
|
|
20
|
+
fail-fast: false
|
|
21
|
+
matrix:
|
|
22
|
+
py:
|
|
23
|
+
- "3.12"
|
|
24
|
+
- "3.11"
|
|
25
|
+
- "3.10"
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@v4
|
|
28
|
+
- uses: dtolnay/rust-toolchain@1.71.1
|
|
29
|
+
- uses: Swatinem/rust-cache@v2
|
|
30
|
+
- name: Setup python ${{ matrix.py }}
|
|
31
|
+
uses: actions/setup-python@v5
|
|
32
|
+
with:
|
|
33
|
+
python-version: ${{ matrix.py }}
|
|
34
|
+
cache: "pip"
|
|
35
|
+
- run: pip install -e .[test]
|
|
36
|
+
- run: pytest --benchmark-disable -vvv
|
|
37
|
+
mypy:
|
|
38
|
+
runs-on: ubuntu-latest
|
|
39
|
+
steps:
|
|
40
|
+
- uses: actions/checkout@v4
|
|
41
|
+
- uses: dtolnay/rust-toolchain@1.71.1
|
|
42
|
+
- uses: Swatinem/rust-cache@v2
|
|
43
|
+
- uses: actions/setup-python@v5
|
|
44
|
+
with:
|
|
45
|
+
python-version: "3.10"
|
|
46
|
+
cache: "pip"
|
|
47
|
+
- run: pip install -e .[test] mypy pre-commit
|
|
48
|
+
- run: pre-commit run --hook-stage manual --all-files mypy
|
|
49
|
+
- run: pre-commit run --hook-stage manual --all-files stubtest
|
|
50
|
+
benchmark:
|
|
51
|
+
runs-on: ubuntu-latest
|
|
52
|
+
steps:
|
|
53
|
+
- uses: actions/checkout@v4
|
|
54
|
+
- uses: dtolnay/rust-toolchain@1.71.1
|
|
55
|
+
- uses: Swatinem/rust-cache@v2
|
|
56
|
+
- uses: actions/setup-python@v5
|
|
57
|
+
with:
|
|
58
|
+
python-version: "3.12"
|
|
59
|
+
cache: "pip"
|
|
60
|
+
- run: pip install -e .[test]
|
|
61
|
+
- uses: CodSpeedHQ/action@v2
|
|
62
|
+
with:
|
|
63
|
+
token: ${{ secrets.CODSPEED_TOKEN }}
|
|
64
|
+
run: pytest -vvv -n auto
|
|
65
|
+
docs:
|
|
66
|
+
runs-on: ubuntu-latest
|
|
67
|
+
steps:
|
|
68
|
+
- uses: actions/checkout@v4
|
|
69
|
+
- uses: dtolnay/rust-toolchain@1.71.1
|
|
70
|
+
- uses: Swatinem/rust-cache@v2
|
|
71
|
+
- uses: actions/setup-python@v5
|
|
72
|
+
with:
|
|
73
|
+
python-version: "3.10"
|
|
74
|
+
cache: "pip"
|
|
75
|
+
- name: Install graphviz
|
|
76
|
+
run: |
|
|
77
|
+
sudo apt-get update
|
|
78
|
+
sudo apt-get install -y graphviz
|
|
79
|
+
- run: pip install -e .[docs] pre-commit
|
|
80
|
+
- run: pre-commit run --hook-stage manual --all-files docs
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Creates a new version by:
|
|
2
|
+
# 1. bumping the version number in the changelog and cargo
|
|
3
|
+
# 2. Creates a new branch for this version
|
|
4
|
+
# 3. makes a new commit
|
|
5
|
+
# 4. Opens a PR for the new version
|
|
6
|
+
# 5. Pulls that branch and builds it for different platforms
|
|
7
|
+
# 6. Once all those build, makes a release
|
|
8
|
+
# 7. Creates a tag for that release
|
|
9
|
+
# 7. merges that PR when tests pass and removes the branch
|
|
10
|
+
|
|
11
|
+
# This seperates the release process from the test process, so we can still release if we need to and tests are failing
|
|
12
|
+
name: Bump Version
|
|
13
|
+
on:
|
|
14
|
+
workflow_dispatch:
|
|
15
|
+
inputs:
|
|
16
|
+
type:
|
|
17
|
+
description: "Release type"
|
|
18
|
+
required: true
|
|
19
|
+
default: "major"
|
|
20
|
+
type: choice
|
|
21
|
+
options:
|
|
22
|
+
- major
|
|
23
|
+
- minor
|
|
24
|
+
- patch
|
|
25
|
+
|
|
26
|
+
jobs:
|
|
27
|
+
bump:
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
permissions: write-all
|
|
30
|
+
outputs:
|
|
31
|
+
version: ${{ steps.bump.outputs.version }}
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@v4
|
|
34
|
+
- run: |
|
|
35
|
+
git config user.name github-actions[bot]
|
|
36
|
+
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
|
|
37
|
+
VERSION=$(python increment_version.py $TYPE)
|
|
38
|
+
git checkout -b "version-$VERSION"
|
|
39
|
+
git commit -am "Version $VERSION"
|
|
40
|
+
git push -u origin HEAD
|
|
41
|
+
gh pr create --fill
|
|
42
|
+
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
|
43
|
+
id: bump
|
|
44
|
+
env:
|
|
45
|
+
TYPE: ${{ inputs.type }}
|
|
46
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
47
|
+
|
|
48
|
+
linux:
|
|
49
|
+
name: build linux
|
|
50
|
+
runs-on: ubuntu-latest
|
|
51
|
+
needs: [bump]
|
|
52
|
+
steps:
|
|
53
|
+
- uses: actions/checkout@v4
|
|
54
|
+
with:
|
|
55
|
+
ref: version-${{ needs.bump.outputs.version }}
|
|
56
|
+
- uses: PyO3/maturin-action@v1.42.1
|
|
57
|
+
with:
|
|
58
|
+
manylinux: auto
|
|
59
|
+
command: build
|
|
60
|
+
args: --release --sdist -o dist --find-interpreter
|
|
61
|
+
- name: Upload wheels
|
|
62
|
+
uses: actions/upload-artifact@v4
|
|
63
|
+
with:
|
|
64
|
+
name: wheels-linux
|
|
65
|
+
path: dist
|
|
66
|
+
|
|
67
|
+
windows:
|
|
68
|
+
name: build windows
|
|
69
|
+
runs-on: windows-latest
|
|
70
|
+
needs: [bump]
|
|
71
|
+
steps:
|
|
72
|
+
- uses: actions/checkout@v4
|
|
73
|
+
with:
|
|
74
|
+
ref: version-${{ needs.bump.outputs.version }}
|
|
75
|
+
- uses: PyO3/maturin-action@v1.42.1
|
|
76
|
+
with:
|
|
77
|
+
command: build
|
|
78
|
+
args: --release -o dist --find-interpreter
|
|
79
|
+
- name: Upload wheels
|
|
80
|
+
uses: actions/upload-artifact@v4
|
|
81
|
+
with:
|
|
82
|
+
name: wheels-windows
|
|
83
|
+
path: dist
|
|
84
|
+
|
|
85
|
+
macos:
|
|
86
|
+
name: build macos
|
|
87
|
+
runs-on: macos-latest
|
|
88
|
+
needs: [bump]
|
|
89
|
+
steps:
|
|
90
|
+
- uses: actions/checkout@v4
|
|
91
|
+
with:
|
|
92
|
+
ref: version-${{ needs.bump.outputs.version }}
|
|
93
|
+
- uses: PyO3/maturin-action@v1.42.1
|
|
94
|
+
with:
|
|
95
|
+
command: build
|
|
96
|
+
args: --release -o dist --universal2 --find-interpreter
|
|
97
|
+
- name: Upload wheels
|
|
98
|
+
uses: actions/upload-artifact@v4
|
|
99
|
+
with:
|
|
100
|
+
name: wheels-macos
|
|
101
|
+
path: dist
|
|
102
|
+
|
|
103
|
+
release:
|
|
104
|
+
name: Release
|
|
105
|
+
runs-on: ubuntu-latest
|
|
106
|
+
if: startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch')
|
|
107
|
+
needs: [macos, windows, linux]
|
|
108
|
+
steps:
|
|
109
|
+
- uses: actions/download-artifact@v4
|
|
110
|
+
with:
|
|
111
|
+
pattern: wheels-*
|
|
112
|
+
merge-multiple: true
|
|
113
|
+
- name: Publish to PyPI
|
|
114
|
+
uses: PyO3/maturin-action@v1.42.1
|
|
115
|
+
env:
|
|
116
|
+
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
|
|
117
|
+
with:
|
|
118
|
+
command: upload
|
|
119
|
+
args: --skip-existing *
|
|
120
|
+
tag-and-merge:
|
|
121
|
+
runs-on: ubuntu-latest
|
|
122
|
+
permissions: write-all
|
|
123
|
+
needs: [release, bump]
|
|
124
|
+
steps:
|
|
125
|
+
- uses: actions/checkout@v4
|
|
126
|
+
with:
|
|
127
|
+
ref: version-${{ needs.bump.outputs.version }}
|
|
128
|
+
- run: |
|
|
129
|
+
git tag "v$VERSION"
|
|
130
|
+
git push --tags
|
|
131
|
+
gh pr merge --admin --delete-branch
|
|
132
|
+
env:
|
|
133
|
+
VERSION: ${{ needs.bump.outputs.version }}
|
|
134
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# This CITATION.cff file was generated with cffinit.
|
|
2
|
+
# Visit https://bit.ly/cffinit to generate yours today!
|
|
3
|
+
|
|
4
|
+
cff-version: 1.2.0
|
|
5
|
+
title: 'Egglog Python: A Pythonic Library for E-graphs'
|
|
6
|
+
message: >-
|
|
7
|
+
If you use this software, please cite it using the
|
|
8
|
+
metadata from this file.
|
|
9
|
+
type: software
|
|
10
|
+
authors:
|
|
11
|
+
- given-names: Saul
|
|
12
|
+
family-names: Shanabrook
|
|
13
|
+
email: s.shanabrook@gmail.com
|
|
14
|
+
orcid: 'https://orcid.org/0000-0002-0258-4236'
|
|
15
|
+
identifiers:
|
|
16
|
+
- type: other
|
|
17
|
+
value: 'arXiv:2305.04311'
|
|
18
|
+
repository-code: 'https://github.com/egraphs-good/egglog-python'
|
|
19
|
+
url: 'https://egglog-python.readthedocs.io/'
|
|
20
|
+
abstract: >-
|
|
21
|
+
E-graphs have emerged as a versatile data structure with
|
|
22
|
+
applications in synthesis, optimization, and verification
|
|
23
|
+
through techniques such as equality saturation. This paper
|
|
24
|
+
introduces Python bindings for the experimental egglog
|
|
25
|
+
library (previously called egg-smol), which aims to bring
|
|
26
|
+
the benefits of e-graphs to the Python ecosystem. The
|
|
27
|
+
bindings offer a high-level, Pythonic API providing an
|
|
28
|
+
accessible and familiar interface for Python users. By
|
|
29
|
+
integrating e-graph techniques with Python, we hope to
|
|
30
|
+
enable collaboration and innovation across various domains
|
|
31
|
+
in the scientific computing and machine learning
|
|
32
|
+
communities. We discuss the advantages of using Python
|
|
33
|
+
bindings for both Python and existing egg-smol users, as
|
|
34
|
+
well as possible future directions for development.
|
|
35
|
+
license: MIT
|
|
@@ -190,7 +190,7 @@ dependencies = [
|
|
|
190
190
|
"heck",
|
|
191
191
|
"proc-macro2",
|
|
192
192
|
"quote",
|
|
193
|
-
"syn 2.0.
|
|
193
|
+
"syn 2.0.60",
|
|
194
194
|
]
|
|
195
195
|
|
|
196
196
|
[[package]]
|
|
@@ -285,7 +285,7 @@ checksum = "675e35c02a51bb4d4618cb4885b3839ce6d1787c97b664474d9208d074742e20"
|
|
|
285
285
|
[[package]]
|
|
286
286
|
name = "egglog"
|
|
287
287
|
version = "0.1.0"
|
|
288
|
-
source = "git+https://github.com/egraphs-good/egglog?rev=
|
|
288
|
+
source = "git+https://github.com/egraphs-good/egglog?rev=fb4a9f114f9bb93154d6eff0dbab079b5cb4ebb6#fb4a9f114f9bb93154d6eff0dbab079b5cb4ebb6"
|
|
289
289
|
dependencies = [
|
|
290
290
|
"clap",
|
|
291
291
|
"egraph-serialize",
|
|
@@ -312,7 +312,7 @@ dependencies = [
|
|
|
312
312
|
|
|
313
313
|
[[package]]
|
|
314
314
|
name = "egglog-python"
|
|
315
|
-
version = "
|
|
315
|
+
version = "7.1.0"
|
|
316
316
|
dependencies = [
|
|
317
317
|
"egglog",
|
|
318
318
|
"egraph-serialize",
|
|
@@ -487,9 +487,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
|
|
|
487
487
|
|
|
488
488
|
[[package]]
|
|
489
489
|
name = "indexmap"
|
|
490
|
-
version = "2.
|
|
490
|
+
version = "2.2.6"
|
|
491
491
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
492
|
-
checksum = "
|
|
492
|
+
checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
|
|
493
493
|
dependencies = [
|
|
494
494
|
"equivalent",
|
|
495
495
|
"hashbrown 0.14.1",
|
|
@@ -575,7 +575,7 @@ dependencies = [
|
|
|
575
575
|
"petgraph",
|
|
576
576
|
"pico-args",
|
|
577
577
|
"regex",
|
|
578
|
-
"regex-syntax",
|
|
578
|
+
"regex-syntax 0.7.4",
|
|
579
579
|
"string_cache",
|
|
580
580
|
"term",
|
|
581
581
|
"tiny-keccak",
|
|
@@ -584,11 +584,11 @@ dependencies = [
|
|
|
584
584
|
|
|
585
585
|
[[package]]
|
|
586
586
|
name = "lalrpop-util"
|
|
587
|
-
version = "0.20.
|
|
587
|
+
version = "0.20.2"
|
|
588
588
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
589
|
-
checksum = "
|
|
589
|
+
checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553"
|
|
590
590
|
dependencies = [
|
|
591
|
-
"regex",
|
|
591
|
+
"regex-automata",
|
|
592
592
|
]
|
|
593
593
|
|
|
594
594
|
[[package]]
|
|
@@ -621,15 +621,15 @@ dependencies = [
|
|
|
621
621
|
|
|
622
622
|
[[package]]
|
|
623
623
|
name = "log"
|
|
624
|
-
version = "0.4.
|
|
624
|
+
version = "0.4.21"
|
|
625
625
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
626
|
-
checksum = "
|
|
626
|
+
checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
|
|
627
627
|
|
|
628
628
|
[[package]]
|
|
629
629
|
name = "memchr"
|
|
630
|
-
version = "2.
|
|
630
|
+
version = "2.7.2"
|
|
631
631
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
632
|
-
checksum = "
|
|
632
|
+
checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
|
|
633
633
|
|
|
634
634
|
[[package]]
|
|
635
635
|
name = "memoffset"
|
|
@@ -759,7 +759,7 @@ dependencies = [
|
|
|
759
759
|
"pest_meta",
|
|
760
760
|
"proc-macro2",
|
|
761
761
|
"quote",
|
|
762
|
-
"syn 2.0.
|
|
762
|
+
"syn 2.0.60",
|
|
763
763
|
]
|
|
764
764
|
|
|
765
765
|
[[package]]
|
|
@@ -798,6 +798,12 @@ version = "0.5.0"
|
|
|
798
798
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
799
799
|
checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315"
|
|
800
800
|
|
|
801
|
+
[[package]]
|
|
802
|
+
name = "portable-atomic"
|
|
803
|
+
version = "1.6.0"
|
|
804
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
805
|
+
checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
|
|
806
|
+
|
|
801
807
|
[[package]]
|
|
802
808
|
name = "ppv-lite86"
|
|
803
809
|
version = "0.2.17"
|
|
@@ -812,24 +818,25 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
|
|
|
812
818
|
|
|
813
819
|
[[package]]
|
|
814
820
|
name = "proc-macro2"
|
|
815
|
-
version = "1.0.
|
|
821
|
+
version = "1.0.81"
|
|
816
822
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
817
|
-
checksum = "
|
|
823
|
+
checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba"
|
|
818
824
|
dependencies = [
|
|
819
825
|
"unicode-ident",
|
|
820
826
|
]
|
|
821
827
|
|
|
822
828
|
[[package]]
|
|
823
829
|
name = "pyo3"
|
|
824
|
-
version = "0.
|
|
830
|
+
version = "0.21.2"
|
|
825
831
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
826
|
-
checksum = "
|
|
832
|
+
checksum = "a5e00b96a521718e08e03b1a622f01c8a8deb50719335de3f60b3b3950f069d8"
|
|
827
833
|
dependencies = [
|
|
828
834
|
"cfg-if",
|
|
829
835
|
"indoc",
|
|
830
836
|
"libc",
|
|
831
837
|
"memoffset",
|
|
832
838
|
"parking_lot",
|
|
839
|
+
"portable-atomic",
|
|
833
840
|
"pyo3-build-config",
|
|
834
841
|
"pyo3-ffi",
|
|
835
842
|
"pyo3-macros",
|
|
@@ -838,9 +845,9 @@ dependencies = [
|
|
|
838
845
|
|
|
839
846
|
[[package]]
|
|
840
847
|
name = "pyo3-build-config"
|
|
841
|
-
version = "0.
|
|
848
|
+
version = "0.21.2"
|
|
842
849
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
843
|
-
checksum = "
|
|
850
|
+
checksum = "7883df5835fafdad87c0d888b266c8ec0f4c9ca48a5bed6bbb592e8dedee1b50"
|
|
844
851
|
dependencies = [
|
|
845
852
|
"once_cell",
|
|
846
853
|
"target-lexicon",
|
|
@@ -848,9 +855,9 @@ dependencies = [
|
|
|
848
855
|
|
|
849
856
|
[[package]]
|
|
850
857
|
name = "pyo3-ffi"
|
|
851
|
-
version = "0.
|
|
858
|
+
version = "0.21.2"
|
|
852
859
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
853
|
-
checksum = "
|
|
860
|
+
checksum = "01be5843dc60b916ab4dad1dca6d20b9b4e6ddc8e15f50c47fe6d85f1fb97403"
|
|
854
861
|
dependencies = [
|
|
855
862
|
"libc",
|
|
856
863
|
"pyo3-build-config",
|
|
@@ -858,9 +865,9 @@ dependencies = [
|
|
|
858
865
|
|
|
859
866
|
[[package]]
|
|
860
867
|
name = "pyo3-log"
|
|
861
|
-
version = "0.
|
|
868
|
+
version = "0.10.0"
|
|
862
869
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
863
|
-
checksum = "
|
|
870
|
+
checksum = "2af49834b8d2ecd555177e63b273b708dea75150abc6f5341d0a6e1a9623976c"
|
|
864
871
|
dependencies = [
|
|
865
872
|
"arc-swap",
|
|
866
873
|
"log",
|
|
@@ -869,33 +876,34 @@ dependencies = [
|
|
|
869
876
|
|
|
870
877
|
[[package]]
|
|
871
878
|
name = "pyo3-macros"
|
|
872
|
-
version = "0.
|
|
879
|
+
version = "0.21.2"
|
|
873
880
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
874
|
-
checksum = "
|
|
881
|
+
checksum = "77b34069fc0682e11b31dbd10321cbf94808394c56fd996796ce45217dfac53c"
|
|
875
882
|
dependencies = [
|
|
876
883
|
"proc-macro2",
|
|
877
884
|
"pyo3-macros-backend",
|
|
878
885
|
"quote",
|
|
879
|
-
"syn 2.0.
|
|
886
|
+
"syn 2.0.60",
|
|
880
887
|
]
|
|
881
888
|
|
|
882
889
|
[[package]]
|
|
883
890
|
name = "pyo3-macros-backend"
|
|
884
|
-
version = "0.
|
|
891
|
+
version = "0.21.2"
|
|
885
892
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
886
|
-
checksum = "
|
|
893
|
+
checksum = "08260721f32db5e1a5beae69a55553f56b99bd0e1c3e6e0a5e8851a9d0f5a85c"
|
|
887
894
|
dependencies = [
|
|
888
895
|
"heck",
|
|
889
896
|
"proc-macro2",
|
|
897
|
+
"pyo3-build-config",
|
|
890
898
|
"quote",
|
|
891
|
-
"syn 2.0.
|
|
899
|
+
"syn 2.0.60",
|
|
892
900
|
]
|
|
893
901
|
|
|
894
902
|
[[package]]
|
|
895
903
|
name = "quote"
|
|
896
|
-
version = "1.0.
|
|
904
|
+
version = "1.0.36"
|
|
897
905
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
898
|
-
checksum = "
|
|
906
|
+
checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
|
|
899
907
|
dependencies = [
|
|
900
908
|
"proc-macro2",
|
|
901
909
|
]
|
|
@@ -963,25 +971,25 @@ dependencies = [
|
|
|
963
971
|
|
|
964
972
|
[[package]]
|
|
965
973
|
name = "regex"
|
|
966
|
-
version = "1.
|
|
974
|
+
version = "1.10.4"
|
|
967
975
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
968
|
-
checksum = "
|
|
976
|
+
checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
|
|
969
977
|
dependencies = [
|
|
970
978
|
"aho-corasick",
|
|
971
979
|
"memchr",
|
|
972
980
|
"regex-automata",
|
|
973
|
-
"regex-syntax",
|
|
981
|
+
"regex-syntax 0.8.3",
|
|
974
982
|
]
|
|
975
983
|
|
|
976
984
|
[[package]]
|
|
977
985
|
name = "regex-automata"
|
|
978
|
-
version = "0.
|
|
986
|
+
version = "0.4.6"
|
|
979
987
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
980
|
-
checksum = "
|
|
988
|
+
checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
|
|
981
989
|
dependencies = [
|
|
982
990
|
"aho-corasick",
|
|
983
991
|
"memchr",
|
|
984
|
-
"regex-syntax",
|
|
992
|
+
"regex-syntax 0.8.3",
|
|
985
993
|
]
|
|
986
994
|
|
|
987
995
|
[[package]]
|
|
@@ -990,6 +998,12 @@ version = "0.7.4"
|
|
|
990
998
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
991
999
|
checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2"
|
|
992
1000
|
|
|
1001
|
+
[[package]]
|
|
1002
|
+
name = "regex-syntax"
|
|
1003
|
+
version = "0.8.3"
|
|
1004
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1005
|
+
checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
|
|
1006
|
+
|
|
993
1007
|
[[package]]
|
|
994
1008
|
name = "rustc-hash"
|
|
995
1009
|
version = "1.1.0"
|
|
@@ -1029,29 +1043,29 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
|
|
1029
1043
|
|
|
1030
1044
|
[[package]]
|
|
1031
1045
|
name = "serde"
|
|
1032
|
-
version = "1.0.
|
|
1046
|
+
version = "1.0.199"
|
|
1033
1047
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1034
|
-
checksum = "
|
|
1048
|
+
checksum = "0c9f6e76df036c77cd94996771fb40db98187f096dd0b9af39c6c6e452ba966a"
|
|
1035
1049
|
dependencies = [
|
|
1036
1050
|
"serde_derive",
|
|
1037
1051
|
]
|
|
1038
1052
|
|
|
1039
1053
|
[[package]]
|
|
1040
1054
|
name = "serde_derive"
|
|
1041
|
-
version = "1.0.
|
|
1055
|
+
version = "1.0.199"
|
|
1042
1056
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1043
|
-
checksum = "
|
|
1057
|
+
checksum = "11bd257a6541e141e42ca6d24ae26f7714887b47e89aa739099104c7e4d3b7fc"
|
|
1044
1058
|
dependencies = [
|
|
1045
1059
|
"proc-macro2",
|
|
1046
1060
|
"quote",
|
|
1047
|
-
"syn 2.0.
|
|
1061
|
+
"syn 2.0.60",
|
|
1048
1062
|
]
|
|
1049
1063
|
|
|
1050
1064
|
[[package]]
|
|
1051
1065
|
name = "serde_json"
|
|
1052
|
-
version = "1.0.
|
|
1066
|
+
version = "1.0.116"
|
|
1053
1067
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1054
|
-
checksum = "
|
|
1068
|
+
checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813"
|
|
1055
1069
|
dependencies = [
|
|
1056
1070
|
"indexmap",
|
|
1057
1071
|
"itoa",
|
|
@@ -1124,9 +1138,9 @@ dependencies = [
|
|
|
1124
1138
|
|
|
1125
1139
|
[[package]]
|
|
1126
1140
|
name = "syn"
|
|
1127
|
-
version = "2.0.
|
|
1141
|
+
version = "2.0.60"
|
|
1128
1142
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1129
|
-
checksum = "
|
|
1143
|
+
checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3"
|
|
1130
1144
|
dependencies = [
|
|
1131
1145
|
"proc-macro2",
|
|
1132
1146
|
"quote",
|
|
@@ -1189,7 +1203,7 @@ checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc"
|
|
|
1189
1203
|
dependencies = [
|
|
1190
1204
|
"proc-macro2",
|
|
1191
1205
|
"quote",
|
|
1192
|
-
"syn 2.0.
|
|
1206
|
+
"syn 2.0.60",
|
|
1193
1207
|
]
|
|
1194
1208
|
|
|
1195
1209
|
[[package]]
|
|
@@ -1239,9 +1253,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
|
|
|
1239
1253
|
|
|
1240
1254
|
[[package]]
|
|
1241
1255
|
name = "uuid"
|
|
1242
|
-
version = "1.
|
|
1256
|
+
version = "1.8.0"
|
|
1243
1257
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1244
|
-
checksum = "
|
|
1258
|
+
checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0"
|
|
1245
1259
|
dependencies = [
|
|
1246
1260
|
"getrandom",
|
|
1247
1261
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "egglog-python"
|
|
3
|
-
version = "
|
|
3
|
+
version = "7.1.0"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
|
|
6
6
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
@@ -9,19 +9,19 @@ name = "egglog_python"
|
|
|
9
9
|
crate-type = ["cdylib"]
|
|
10
10
|
|
|
11
11
|
[dependencies]
|
|
12
|
-
pyo3 = { version = "0.
|
|
12
|
+
pyo3 = { version = "0.21", features = ["extension-module"] }
|
|
13
13
|
|
|
14
14
|
# https://github.com/egraphs-good/egglog/compare/ceed816e9369570ffed9feeba157b19471dda70d...main
|
|
15
|
-
egglog = { git = "https://github.com/egraphs-good/egglog", rev = "
|
|
15
|
+
egglog = { git = "https://github.com/egraphs-good/egglog", rev = "fb4a9f114f9bb93154d6eff0dbab079b5cb4ebb6" }
|
|
16
16
|
# egglog = { git = "https://github.com/oflatt/egg-smol", branch = "oflatt-fast-terms" }
|
|
17
17
|
# egglog = { git = "https://github.com/saulshanabrook/egg-smol", rev = "38b3014b34399cc78887ede09c845b2a5d6c7d19" }
|
|
18
18
|
egraph-serialize = { git = "https://github.com/egraphs-good/egraph-serialize", rev = "5838c036623e91540831745b1574539e01c8cb23" }
|
|
19
19
|
serde_json = "*"
|
|
20
|
-
pyo3-log = "0.
|
|
21
|
-
log = "0.4.
|
|
22
|
-
lalrpop-util = { version = "0.20.
|
|
20
|
+
pyo3-log = "0.10.0"
|
|
21
|
+
log = "0.4.21"
|
|
22
|
+
lalrpop-util = { version = "0.20.2", features = ["lexer"] }
|
|
23
23
|
ordered-float = "*"
|
|
24
|
-
uuid = { version = "1.
|
|
24
|
+
uuid = { version = "1.8.0", features = ["v4"] }
|
|
25
25
|
num-rational = "*"
|
|
26
26
|
|
|
27
27
|
[package.metadata.maturin]
|