egglog 7.0.0__tar.gz → 7.2.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.

Files changed (118) hide show
  1. egglog-7.2.0/.github/dependabot.yml +19 -0
  2. {egglog-7.0.0 → egglog-7.2.0}/.github/workflows/CI.yml +7 -7
  3. {egglog-7.0.0 → egglog-7.2.0}/.github/workflows/version.yml +14 -13
  4. {egglog-7.0.0 → egglog-7.2.0}/Cargo.lock +44 -38
  5. {egglog-7.0.0 → egglog-7.2.0}/Cargo.toml +5 -5
  6. {egglog-7.0.0 → egglog-7.2.0}/PKG-INFO +21 -21
  7. egglog-7.2.0/README.md +10 -0
  8. {egglog-7.0.0 → egglog-7.2.0}/docs/changelog.md +21 -0
  9. egglog-7.2.0/docs/reference/contributing.md +91 -0
  10. {egglog-7.0.0 → egglog-7.2.0}/docs/reference/python-integration.md +122 -0
  11. {egglog-7.0.0 → egglog-7.2.0}/pyproject.toml +2 -3
  12. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/bindings.pyi +7 -0
  13. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/builtins.py +41 -1
  14. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/conversion.py +22 -17
  15. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/declarations.py +122 -37
  16. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/egraph.py +219 -78
  17. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/egraph_state.py +124 -54
  18. egglog-7.2.0/python/egglog/examples/higher_order_functions.py +50 -0
  19. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/exp/array_api.py +12 -9
  20. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/pretty.py +71 -15
  21. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/runtime.py +118 -33
  22. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/thunk.py +17 -6
  23. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/type_constraint_solver.py +5 -4
  24. {egglog-7.0.0 → egglog-7.2.0}/python/tests/conftest.py +2 -0
  25. {egglog-7.0.0 → egglog-7.2.0}/python/tests/test_high_level.py +134 -2
  26. {egglog-7.0.0 → egglog-7.2.0}/python/tests/test_runtime.py +12 -11
  27. egglog-7.2.0/python/tests/test_unstable_fn.py +184 -0
  28. {egglog-7.0.0 → egglog-7.2.0}/src/conversions.rs +10 -1
  29. {egglog-7.0.0 → egglog-7.2.0}/src/egraph.rs +3 -1
  30. {egglog-7.0.0 → egglog-7.2.0}/src/py_object_sort.rs +9 -9
  31. egglog-7.0.0/README.md +0 -10
  32. egglog-7.0.0/docs/reference/contributing.md +0 -15
  33. {egglog-7.0.0 → egglog-7.2.0}/.gitignore +0 -0
  34. {egglog-7.0.0 → egglog-7.2.0}/.pre-commit-config.yaml +0 -0
  35. {egglog-7.0.0 → egglog-7.2.0}/.readthedocs.yaml +0 -0
  36. {egglog-7.0.0 → egglog-7.2.0}/CITATION.cff +0 -0
  37. {egglog-7.0.0 → egglog-7.2.0}/LICENSE +0 -0
  38. {egglog-7.0.0 → egglog-7.2.0}/conftest.py +0 -0
  39. {egglog-7.0.0 → egglog-7.2.0}/docs/.gitignore +0 -0
  40. {egglog-7.0.0 → egglog-7.2.0}/docs/_templates/comments.html +0 -0
  41. {egglog-7.0.0 → egglog-7.2.0}/docs/conf.py +0 -0
  42. {egglog-7.0.0 → egglog-7.2.0}/docs/environment.yml +0 -0
  43. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/.gitignore +0 -0
  44. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/2023_07_presentation.ipynb +0 -0
  45. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/2023_11_09_portland_state.ipynb +0 -0
  46. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/2023_11_17_pytensor.ipynb +0 -0
  47. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/2023_11_pydata_lightning_talk.ipynb +0 -0
  48. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/2023_12_02_congruence_closure-1.png +0 -0
  49. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/2023_12_02_congruence_closure-2.png +0 -0
  50. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/2023_12_02_congruence_closure.md +0 -0
  51. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/2024_03_17_community_talk.ipynb +0 -0
  52. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/2024_03_17_map.svg +0 -0
  53. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/big_graph.svg +0 -0
  54. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/define_and_define.md +0 -0
  55. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/ecosystem-graph.png +0 -0
  56. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/egg.png +0 -0
  57. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/indexing_pushdown.ipynb +0 -0
  58. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/moa.png +0 -0
  59. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/optional_values.md +0 -0
  60. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation/pldi_2023_presentation.ipynb +0 -0
  61. {egglog-7.0.0 → egglog-7.2.0}/docs/explanation.md +0 -0
  62. {egglog-7.0.0 → egglog-7.2.0}/docs/how-to-guides.md +0 -0
  63. {egglog-7.0.0 → egglog-7.2.0}/docs/index.md +0 -0
  64. {egglog-7.0.0 → egglog-7.2.0}/docs/reference/bindings.md +0 -0
  65. {egglog-7.0.0 → egglog-7.2.0}/docs/reference/egglog-translation.md +0 -0
  66. {egglog-7.0.0 → egglog-7.2.0}/docs/reference/high-level.md +0 -0
  67. {egglog-7.0.0 → egglog-7.2.0}/docs/reference/usage.md +0 -0
  68. {egglog-7.0.0 → egglog-7.2.0}/docs/reference.md +0 -0
  69. {egglog-7.0.0 → egglog-7.2.0}/docs/tutorials/getting-started.ipynb +0 -0
  70. {egglog-7.0.0 → egglog-7.2.0}/docs/tutorials/screenshot-1.png +0 -0
  71. {egglog-7.0.0 → egglog-7.2.0}/docs/tutorials/screenshot-2.png +0 -0
  72. {egglog-7.0.0 → egglog-7.2.0}/docs/tutorials/sklearn.ipynb +0 -0
  73. {egglog-7.0.0 → egglog-7.2.0}/docs/tutorials.md +0 -0
  74. {egglog-7.0.0 → egglog-7.2.0}/increment_version.py +0 -0
  75. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/__init__.py +0 -0
  76. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/config.py +0 -0
  77. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/examples/README.rst +0 -0
  78. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/examples/__init__.py +0 -0
  79. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/examples/bool.py +0 -0
  80. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/examples/eqsat_basic.py +0 -0
  81. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/examples/fib.py +0 -0
  82. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/examples/lambda_.py +0 -0
  83. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/examples/matrix.py +0 -0
  84. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/examples/ndarrays.py +0 -0
  85. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/examples/resolution.py +0 -0
  86. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/examples/schedule_demo.py +0 -0
  87. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/exp/__init__.py +0 -0
  88. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/exp/array_api_jit.py +0 -0
  89. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/exp/array_api_numba.py +0 -0
  90. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/exp/array_api_program_gen.py +0 -0
  91. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/exp/program_gen.py +0 -0
  92. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/exp/siu_examples.py +0 -0
  93. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/graphviz_widget.py +0 -0
  94. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/ipython_magic.py +0 -0
  95. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/py.typed +0 -0
  96. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/widget.css +0 -0
  97. {egglog-7.0.0 → egglog-7.2.0}/python/egglog/widget.js +0 -0
  98. {egglog-7.0.0 → egglog-7.2.0}/python/tests/__init__.py +0 -0
  99. {egglog-7.0.0 → egglog-7.2.0}/python/tests/__snapshots__/test_array_api/TestLDA.test_optimize.py +0 -0
  100. {egglog-7.0.0 → egglog-7.2.0}/python/tests/__snapshots__/test_array_api/TestLDA.test_source_optimized.py +0 -0
  101. {egglog-7.0.0 → egglog-7.2.0}/python/tests/__snapshots__/test_array_api/TestLDA.test_trace.py +0 -0
  102. {egglog-7.0.0 → egglog-7.2.0}/python/tests/__snapshots__/test_program_gen/test_to_string.py +0 -0
  103. {egglog-7.0.0 → egglog-7.2.0}/python/tests/test_array_api.py +0 -0
  104. {egglog-7.0.0 → egglog-7.2.0}/python/tests/test_bindings.py +0 -0
  105. {egglog-7.0.0 → egglog-7.2.0}/python/tests/test_convert.py +0 -0
  106. {egglog-7.0.0 → egglog-7.2.0}/python/tests/test_modules.py +0 -0
  107. {egglog-7.0.0 → egglog-7.2.0}/python/tests/test_pretty.py +0 -0
  108. {egglog-7.0.0 → egglog-7.2.0}/python/tests/test_program_gen.py +0 -0
  109. {egglog-7.0.0 → egglog-7.2.0}/python/tests/test_py_object_sort.py +0 -0
  110. {egglog-7.0.0 → egglog-7.2.0}/python/tests/test_type_constraint_solver.py +0 -0
  111. {egglog-7.0.0 → egglog-7.2.0}/python/tests/test_typing.py +0 -0
  112. {egglog-7.0.0 → egglog-7.2.0}/rust-toolchain.toml +0 -0
  113. {egglog-7.0.0 → egglog-7.2.0}/src/error.rs +0 -0
  114. {egglog-7.0.0 → egglog-7.2.0}/src/lib.rs +0 -0
  115. {egglog-7.0.0 → egglog-7.2.0}/src/serialize.rs +0 -0
  116. {egglog-7.0.0 → egglog-7.2.0}/src/utils.rs +0 -0
  117. {egglog-7.0.0 → egglog-7.2.0}/stubtest_allow +0 -0
  118. {egglog-7.0.0 → egglog-7.2.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"
@@ -28,7 +28,7 @@ jobs:
28
28
  - uses: dtolnay/rust-toolchain@1.71.1
29
29
  - uses: Swatinem/rust-cache@v2
30
30
  - name: Setup python ${{ matrix.py }}
31
- uses: actions/setup-python@v4
31
+ uses: actions/setup-python@v5
32
32
  with:
33
33
  python-version: ${{ matrix.py }}
34
34
  cache: "pip"
@@ -40,20 +40,20 @@ jobs:
40
40
  - uses: actions/checkout@v4
41
41
  - uses: dtolnay/rust-toolchain@1.71.1
42
42
  - uses: Swatinem/rust-cache@v2
43
- - uses: actions/setup-python@v4
43
+ - uses: actions/setup-python@v5
44
44
  with:
45
45
  python-version: "3.10"
46
46
  cache: "pip"
47
47
  - run: pip install -e .[test] mypy pre-commit
48
- - run: pre-commit run --hook-stage manual mypy
49
- - run: pre-commit run --hook-stage manual stubtest
48
+ - run: pre-commit run --hook-stage manual --all-files mypy
49
+ - run: pre-commit run --hook-stage manual --all-files stubtest
50
50
  benchmark:
51
51
  runs-on: ubuntu-latest
52
52
  steps:
53
53
  - uses: actions/checkout@v4
54
54
  - uses: dtolnay/rust-toolchain@1.71.1
55
55
  - uses: Swatinem/rust-cache@v2
56
- - uses: actions/setup-python@v4
56
+ - uses: actions/setup-python@v5
57
57
  with:
58
58
  python-version: "3.12"
59
59
  cache: "pip"
@@ -68,7 +68,7 @@ jobs:
68
68
  - uses: actions/checkout@v4
69
69
  - uses: dtolnay/rust-toolchain@1.71.1
70
70
  - uses: Swatinem/rust-cache@v2
71
- - uses: actions/setup-python@v4
71
+ - uses: actions/setup-python@v5
72
72
  with:
73
73
  python-version: "3.10"
74
74
  cache: "pip"
@@ -77,4 +77,4 @@ jobs:
77
77
  sudo apt-get update
78
78
  sudo apt-get install -y graphviz
79
79
  - run: pip install -e .[docs] pre-commit
80
- - run: pre-commit run --hook-stage manual docs
80
+ - run: pre-commit run --hook-stage manual --all-files docs
@@ -53,15 +53,15 @@ jobs:
53
53
  - uses: actions/checkout@v4
54
54
  with:
55
55
  ref: version-${{ needs.bump.outputs.version }}
56
- - uses: PyO3/maturin-action@v1.40.1
56
+ - uses: PyO3/maturin-action@v1.42.1
57
57
  with:
58
58
  manylinux: auto
59
59
  command: build
60
60
  args: --release --sdist -o dist --find-interpreter
61
61
  - name: Upload wheels
62
- uses: actions/upload-artifact@v2
62
+ uses: actions/upload-artifact@v4
63
63
  with:
64
- name: wheels
64
+ name: wheels-linux
65
65
  path: dist
66
66
 
67
67
  windows:
@@ -72,14 +72,14 @@ jobs:
72
72
  - uses: actions/checkout@v4
73
73
  with:
74
74
  ref: version-${{ needs.bump.outputs.version }}
75
- - uses: PyO3/maturin-action@v1.40.1
75
+ - uses: PyO3/maturin-action@v1.42.1
76
76
  with:
77
77
  command: build
78
78
  args: --release -o dist --find-interpreter
79
79
  - name: Upload wheels
80
- uses: actions/upload-artifact@v2
80
+ uses: actions/upload-artifact@v4
81
81
  with:
82
- name: wheels
82
+ name: wheels-windows
83
83
  path: dist
84
84
 
85
85
  macos:
@@ -90,14 +90,14 @@ jobs:
90
90
  - uses: actions/checkout@v4
91
91
  with:
92
92
  ref: version-${{ needs.bump.outputs.version }}
93
- - uses: PyO3/maturin-action@v1.40.1
93
+ - uses: PyO3/maturin-action@v1.42.1
94
94
  with:
95
95
  command: build
96
96
  args: --release -o dist --universal2 --find-interpreter
97
97
  - name: Upload wheels
98
- uses: actions/upload-artifact@v2
98
+ uses: actions/upload-artifact@v4
99
99
  with:
100
- name: wheels
100
+ name: wheels-macos
101
101
  path: dist
102
102
 
103
103
  release:
@@ -106,11 +106,12 @@ jobs:
106
106
  if: startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch')
107
107
  needs: [macos, windows, linux]
108
108
  steps:
109
- - uses: actions/download-artifact@v2
109
+ - uses: actions/download-artifact@v4
110
110
  with:
111
- name: wheels
111
+ pattern: wheels-*
112
+ merge-multiple: true
112
113
  - name: Publish to PyPI
113
- uses: PyO3/maturin-action@v1.40.1
114
+ uses: PyO3/maturin-action@v1.42.1
114
115
  env:
115
116
  MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
116
117
  with:
@@ -127,7 +128,7 @@ jobs:
127
128
  - run: |
128
129
  git tag "v$VERSION"
129
130
  git push --tags
130
- gh pr merge --admin --delete-branch
131
+ gh pr merge --admin --delete-branch --merge
131
132
  env:
132
133
  VERSION: ${{ needs.bump.outputs.version }}
133
134
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -190,7 +190,7 @@ dependencies = [
190
190
  "heck",
191
191
  "proc-macro2",
192
192
  "quote",
193
- "syn 2.0.32",
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=0113af1d6476b75d4319591cc3d675f96a71cdc5#0113af1d6476b75d4319591cc3d675f96a71cdc5"
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 = "7.0.0"
315
+ version = "7.2.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.0.2"
490
+ version = "2.2.6"
491
491
  source = "registry+https://github.com/rust-lang/crates.io-index"
492
- checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897"
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.0"
587
+ version = "0.20.2"
588
588
  source = "registry+https://github.com/rust-lang/crates.io-index"
589
- checksum = "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d"
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.20"
624
+ version = "0.4.21"
625
625
  source = "registry+https://github.com/rust-lang/crates.io-index"
626
- checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
626
+ checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
627
627
 
628
628
  [[package]]
629
629
  name = "memchr"
630
- version = "2.5.0"
630
+ version = "2.7.2"
631
631
  source = "registry+https://github.com/rust-lang/crates.io-index"
632
- checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
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.32",
762
+ "syn 2.0.60",
763
763
  ]
764
764
 
765
765
  [[package]]
@@ -818,9 +818,9 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
818
818
 
819
819
  [[package]]
820
820
  name = "proc-macro2"
821
- version = "1.0.66"
821
+ version = "1.0.81"
822
822
  source = "registry+https://github.com/rust-lang/crates.io-index"
823
- checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
823
+ checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba"
824
824
  dependencies = [
825
825
  "unicode-ident",
826
826
  ]
@@ -883,7 +883,7 @@ dependencies = [
883
883
  "proc-macro2",
884
884
  "pyo3-macros-backend",
885
885
  "quote",
886
- "syn 2.0.32",
886
+ "syn 2.0.60",
887
887
  ]
888
888
 
889
889
  [[package]]
@@ -896,14 +896,14 @@ dependencies = [
896
896
  "proc-macro2",
897
897
  "pyo3-build-config",
898
898
  "quote",
899
- "syn 2.0.32",
899
+ "syn 2.0.60",
900
900
  ]
901
901
 
902
902
  [[package]]
903
903
  name = "quote"
904
- version = "1.0.31"
904
+ version = "1.0.36"
905
905
  source = "registry+https://github.com/rust-lang/crates.io-index"
906
- checksum = "5fe8a65d69dd0808184ebb5f836ab526bb259db23c657efa38711b1072ee47f0"
906
+ checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
907
907
  dependencies = [
908
908
  "proc-macro2",
909
909
  ]
@@ -971,25 +971,25 @@ dependencies = [
971
971
 
972
972
  [[package]]
973
973
  name = "regex"
974
- version = "1.9.1"
974
+ version = "1.10.4"
975
975
  source = "registry+https://github.com/rust-lang/crates.io-index"
976
- checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575"
976
+ checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
977
977
  dependencies = [
978
978
  "aho-corasick",
979
979
  "memchr",
980
980
  "regex-automata",
981
- "regex-syntax",
981
+ "regex-syntax 0.8.3",
982
982
  ]
983
983
 
984
984
  [[package]]
985
985
  name = "regex-automata"
986
- version = "0.3.3"
986
+ version = "0.4.6"
987
987
  source = "registry+https://github.com/rust-lang/crates.io-index"
988
- checksum = "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310"
988
+ checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
989
989
  dependencies = [
990
990
  "aho-corasick",
991
991
  "memchr",
992
- "regex-syntax",
992
+ "regex-syntax 0.8.3",
993
993
  ]
994
994
 
995
995
  [[package]]
@@ -998,6 +998,12 @@ version = "0.7.4"
998
998
  source = "registry+https://github.com/rust-lang/crates.io-index"
999
999
  checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2"
1000
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
+
1001
1007
  [[package]]
1002
1008
  name = "rustc-hash"
1003
1009
  version = "1.1.0"
@@ -1037,29 +1043,29 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
1037
1043
 
1038
1044
  [[package]]
1039
1045
  name = "serde"
1040
- version = "1.0.188"
1046
+ version = "1.0.199"
1041
1047
  source = "registry+https://github.com/rust-lang/crates.io-index"
1042
- checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
1048
+ checksum = "0c9f6e76df036c77cd94996771fb40db98187f096dd0b9af39c6c6e452ba966a"
1043
1049
  dependencies = [
1044
1050
  "serde_derive",
1045
1051
  ]
1046
1052
 
1047
1053
  [[package]]
1048
1054
  name = "serde_derive"
1049
- version = "1.0.188"
1055
+ version = "1.0.199"
1050
1056
  source = "registry+https://github.com/rust-lang/crates.io-index"
1051
- checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
1057
+ checksum = "11bd257a6541e141e42ca6d24ae26f7714887b47e89aa739099104c7e4d3b7fc"
1052
1058
  dependencies = [
1053
1059
  "proc-macro2",
1054
1060
  "quote",
1055
- "syn 2.0.32",
1061
+ "syn 2.0.60",
1056
1062
  ]
1057
1063
 
1058
1064
  [[package]]
1059
1065
  name = "serde_json"
1060
- version = "1.0.107"
1066
+ version = "1.0.116"
1061
1067
  source = "registry+https://github.com/rust-lang/crates.io-index"
1062
- checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
1068
+ checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813"
1063
1069
  dependencies = [
1064
1070
  "indexmap",
1065
1071
  "itoa",
@@ -1132,9 +1138,9 @@ dependencies = [
1132
1138
 
1133
1139
  [[package]]
1134
1140
  name = "syn"
1135
- version = "2.0.32"
1141
+ version = "2.0.60"
1136
1142
  source = "registry+https://github.com/rust-lang/crates.io-index"
1137
- checksum = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2"
1143
+ checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3"
1138
1144
  dependencies = [
1139
1145
  "proc-macro2",
1140
1146
  "quote",
@@ -1197,7 +1203,7 @@ checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc"
1197
1203
  dependencies = [
1198
1204
  "proc-macro2",
1199
1205
  "quote",
1200
- "syn 2.0.32",
1206
+ "syn 2.0.60",
1201
1207
  ]
1202
1208
 
1203
1209
  [[package]]
@@ -1247,9 +1253,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
1247
1253
 
1248
1254
  [[package]]
1249
1255
  name = "uuid"
1250
- version = "1.7.0"
1256
+ version = "1.8.0"
1251
1257
  source = "registry+https://github.com/rust-lang/crates.io-index"
1252
- checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a"
1258
+ checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0"
1253
1259
  dependencies = [
1254
1260
  "getrandom",
1255
1261
  ]
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "egglog-python"
3
- version = "7.0.0"
3
+ version = "7.2.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
@@ -12,16 +12,16 @@ crate-type = ["cdylib"]
12
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 = "0113af1d6476b75d4319591cc3d675f96a71cdc5" }
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
20
  pyo3-log = "0.10.0"
21
- log = "0.4.20"
22
- lalrpop-util = { version = "0.20.0", features = ["lexer"] }
21
+ log = "0.4.21"
22
+ lalrpop-util = { version = "0.20.2", features = ["lexer"] }
23
23
  ordered-float = "*"
24
- uuid = { version = "1.7.0", features = ["v4"] }
24
+ uuid = { version = "1.8.0", features = ["v4"] }
25
25
  num-rational = "*"
26
26
 
27
27
  [package.metadata.maturin]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: egglog
3
- Version: 7.0.0
3
+ Version: 7.2.0
4
4
  Classifier: Environment :: MacOS X
5
5
  Classifier: Environment :: Win32 (MS Windows)
6
6
  Classifier: Intended Audience :: Developers
@@ -19,6 +19,22 @@ Classifier: Typing :: Typed
19
19
  Requires-Dist: typing-extensions
20
20
  Requires-Dist: black
21
21
  Requires-Dist: graphviz
22
+ Requires-Dist: pytest; extra == 'test'
23
+ Requires-Dist: mypy; extra == 'test'
24
+ Requires-Dist: syrupy; extra == 'test'
25
+ Requires-Dist: egglog[array]; extra == 'test'
26
+ Requires-Dist: pytest-codspeed; extra == 'test'
27
+ Requires-Dist: pytest-benchmark; extra == 'test'
28
+ Requires-Dist: pytest-xdist; extra == 'test'
29
+ Requires-Dist: scikit-learn; extra == 'array'
30
+ Requires-Dist: array_api_compat; extra == 'array'
31
+ Requires-Dist: numba==0.59.1; extra == 'array'
32
+ Requires-Dist: llvmlite==0.42.0; extra == 'array'
33
+ Requires-Dist: pre-commit; extra == 'dev'
34
+ Requires-Dist: ruff; extra == 'dev'
35
+ Requires-Dist: mypy; extra == 'dev'
36
+ Requires-Dist: anywidget[dev]; extra == 'dev'
37
+ Requires-Dist: egglog[docs,test]; extra == 'dev'
22
38
  Requires-Dist: pydata-sphinx-theme; extra == 'docs'
23
39
  Requires-Dist: myst-nb; extra == 'docs'
24
40
  Requires-Dist: sphinx-autodoc-typehints; extra == 'docs'
@@ -31,26 +47,10 @@ Requires-Dist: egglog[array]; extra == 'docs'
31
47
  Requires-Dist: line-profiler; extra == 'docs'
32
48
  Requires-Dist: sphinxcontrib-mermaid; extra == 'docs'
33
49
  Requires-Dist: ablog; extra == 'docs'
34
- Requires-Dist: pre-commit; extra == 'dev'
35
- Requires-Dist: ruff; extra == 'dev'
36
- Requires-Dist: mypy; extra == 'dev'
37
- Requires-Dist: anywidget[dev]; extra == 'dev'
38
- Requires-Dist: egglog[docs,test]; extra == 'dev'
39
- Requires-Dist: scikit-learn; extra == 'array'
40
- Requires-Dist: array_api_compat; extra == 'array'
41
- Requires-Dist: numba==0.59.0rc1; extra == 'array'
42
- Requires-Dist: llvmlite==0.42.0rc1; extra == 'array'
43
- Requires-Dist: pytest; extra == 'test'
44
- Requires-Dist: mypy; extra == 'test'
45
- Requires-Dist: syrupy; extra == 'test'
46
- Requires-Dist: egglog[array]; extra == 'test'
47
- Requires-Dist: pytest-codspeed; extra == 'test'
48
- Requires-Dist: pytest-benchmark; extra == 'test'
49
- Requires-Dist: pytest-xdist; extra == 'test'
50
- Provides-Extra: docs
51
- Provides-Extra: dev
52
- Provides-Extra: array
53
50
  Provides-Extra: test
51
+ Provides-Extra: array
52
+ Provides-Extra: dev
53
+ Provides-Extra: docs
54
54
  License-File: LICENSE
55
55
  Summary: e-graphs in Python built around the the egglog rust library
56
56
  License: MIT
@@ -59,7 +59,7 @@ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
59
59
 
60
60
  # `egglog` Python wrapper
61
61
 
62
- [![Documentation Status](https://readthedocs.org/projects/egglog-python/badge/?version=latest)](https://egglog-python.readthedocs.io/en/latest/?badge=latest) [![Test](https://github.com/egraphs-good/egglog-python/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/egraphs-good/egglog-python/actions/workflows/CI.yml) [![PyPi Package](https://img.shields.io/pypi/v/egglog.svg)](https://pypi.org/project/egglog/) [![License](https://img.shields.io/pypi/l/egglog.svg)](https://pypi.org/project/egglog/) [![Python Versions](https://img.shields.io/pypi/pyversions/egglog.svg)](https://pypi.org/project/egglog/) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit) [![CodSpeed Badge](https://img.shields.io/endpoint?url=https://codspeed.io/badge.json)](https://codspeed.io/egraphs-good/egglog-python)
62
+ [![Documentation Status](https://readthedocs.org/projects/egglog-python/badge/?version=latest)](https://egglog-python.readthedocs.io/latest/?badge=latest) [![Test](https://github.com/egraphs-good/egglog-python/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/egraphs-good/egglog-python/actions/workflows/CI.yml) [![PyPi Package](https://img.shields.io/pypi/v/egglog.svg)](https://pypi.org/project/egglog/) [![License](https://img.shields.io/pypi/l/egglog.svg)](https://pypi.org/project/egglog/) [![Python Versions](https://img.shields.io/pypi/pyversions/egglog.svg)](https://pypi.org/project/egglog/) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit) [![CodSpeed Badge](https://img.shields.io/endpoint?url=https://codspeed.io/badge.json)](https://codspeed.io/egraphs-good/egglog-python)
63
63
 
64
64
  `egglog` is a Python package that provides bindings to the Rust library [`egglog`](https://github.com/egraphs-good/egglog/),
65
65
  allowing you to use e-graphs in Python for optimization, symbolic computation, and analysis.
egglog-7.2.0/README.md ADDED
@@ -0,0 +1,10 @@
1
+ # `egglog` Python wrapper
2
+
3
+ [![Documentation Status](https://readthedocs.org/projects/egglog-python/badge/?version=latest)](https://egglog-python.readthedocs.io/latest/?badge=latest) [![Test](https://github.com/egraphs-good/egglog-python/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/egraphs-good/egglog-python/actions/workflows/CI.yml) [![PyPi Package](https://img.shields.io/pypi/v/egglog.svg)](https://pypi.org/project/egglog/) [![License](https://img.shields.io/pypi/l/egglog.svg)](https://pypi.org/project/egglog/) [![Python Versions](https://img.shields.io/pypi/pyversions/egglog.svg)](https://pypi.org/project/egglog/) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit) [![CodSpeed Badge](https://img.shields.io/endpoint?url=https://codspeed.io/badge.json)](https://codspeed.io/egraphs-good/egglog-python)
4
+
5
+ `egglog` is a Python package that provides bindings to the Rust library [`egglog`](https://github.com/egraphs-good/egglog/),
6
+ allowing you to use e-graphs in Python for optimization, symbolic computation, and analysis.
7
+
8
+ Please see the [documentation](https://egglog-python.readthedocs.io/) for more information.
9
+
10
+ Come say hello [on the e-graphs Zulip](https://egraphs.zulipchat.com/#narrow/stream/375765-egglog/) or [open an issue](https://github.com/egraphs-good/egglog-python/issues/new/choose)!
@@ -4,6 +4,27 @@ _This project uses semantic versioning_
4
4
 
5
5
  ## UNRELEASED
6
6
 
7
+ ## 7.2.0 (2024-05-23)
8
+
9
+ - Adds ability to use function bodies as default rewrites ([#167](https://github.com/egraphs-good/egglog-python/pull/167))
10
+ - Fixed bug with creating empty maps and adding to maps ([#168](https://github.com/egraphs-good/egglog-python/pull/168))
11
+
12
+ ## 7.1.0 (2024-05-03)
13
+
14
+ ## New Feaatures
15
+
16
+ - Upgrade [egglog](https://github.com/egraphs-good/egglog/compare/0113af1d6476b75d4319591cc3d675f96a71cdc5...fb4a9f114f9bb93154d6eff0dbab079b5cb4ebb6) ([#143](https://github.com/egraphs-good/egglog-python/pull/143))
17
+ - Adds `bindings.UnstableCombinedRulset` to commands
18
+ - Adds `UnstableFn` sort
19
+ - Adds support for first class functions as values using Python's built in `Callable` syntax and `partial`.
20
+ - Adds way to combine ruleset with `r1 | r2` syntax or the experimental `unstable_combine_rulesets(*rs, name=None)` function.
21
+
22
+ ## Minor improvements
23
+
24
+ - Fixes a bug where you could not write binary dunder methods (like `__add__`) that didn't have symetric arguments
25
+ - Use function name as ruleset name by default when creating ruleset from function
26
+ - Adds ability to refer to methods and property off of classes instead of only off of instances (i.e. `Math.__add__(x, y)`)
27
+
7
28
  ## 7.0.0 (2024-04-27)
8
29
 
9
30
  - Defers adding rules in functions until they are used, so that you can use types that are not present yet.
@@ -0,0 +1,91 @@
1
+ # Contributing
2
+
3
+ ## Development
4
+
5
+ This package is in active development and welcomes contributions!
6
+
7
+ Feel free to bring up any questions/comments on [the Zulip chat](https://egraphs.zulipchat.com/) or open an issue.
8
+
9
+ All feedback is welcome and encouraged, it's great to hear about anything that works well or could be improved.
10
+
11
+ ### Getting Started
12
+
13
+ To get started locally developing with this project, fork it and clone it to your local machine.
14
+
15
+ Using [the Github CLI](https://github.com/cli/cli#installation) this would be:
16
+
17
+ ```bash
18
+ brew install gh
19
+ gh repo fork egraphs-good/egglog-python --clone
20
+ cd egglog-python
21
+ ```
22
+
23
+ Then [install Rust](https://www.rust-lang.org/tools/install) and get a Python environment set up with a compatible version. Using [miniconda](https://formulae.brew.sh/cask/miniconda) this would be:
24
+
25
+ ```bash
26
+ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
27
+ brew install --cask miniconda
28
+ conda create -n egglog-python python
29
+ conda activate egglog-python
30
+ ```
31
+
32
+ Then install the package in editable mode with the development dependencies:
33
+
34
+ ```bash
35
+ pip install -e .[dev]
36
+ ```
37
+
38
+ Anytime you change the rust code, you can run `pip install -e .` to recompile the rust code.
39
+
40
+ ### Running Tests
41
+
42
+ To run the tests, you can use the `pytest` command:
43
+
44
+ ```bash
45
+ pytest
46
+ ```
47
+
48
+ All code must pass ruff linters and formaters. This will be checked automatically by the pre-commit if you run `pre-commit install`.
49
+
50
+ To run it manually, you can use:
51
+
52
+ ```bash
53
+ pre-commit run --all-files ruff
54
+ ```
55
+
56
+ If you make changes to the rust bindings, you can check that the stub files accurately reflect the rust code by running:
57
+
58
+ ```bash
59
+ pre-commit run --all-files --hook-stage manual stubtest
60
+ ```
61
+
62
+ All code must all pass MyPy type checking. To run that locally use:
63
+
64
+ ```bash
65
+ pre-commit run --all-files --hook-stage manual mypy
66
+ ```
67
+
68
+ Finally, to build the docs locally and test that they work, you can run:
69
+
70
+ ```bash
71
+ pre-commit run --all-files --hook-stage manual docs
72
+ ```
73
+
74
+ ## Making changes
75
+
76
+ All changes that impact users should be documented in the `docs/changelog.md` file. Please also add tests for any new features
77
+ or bug fixes.
78
+
79
+ When you are ready to submit your changes, please open a pull request. The CI will run the tests and check the code style.
80
+
81
+ ## Documentation
82
+
83
+ We use the [Diátaxis framework](https://diataxis.fr/) to organize our documentation. The "explanation" section has
84
+ been renamed to "Blog" since most of the content there is more like a blog post than a reference manual. It uses
85
+ the [ABlog](https://ablog.readthedocs.io/en/stable/index.html#how-it-works) extension.
86
+
87
+ ## Governance
88
+
89
+ The governance is currently informal, with Saul Shanabrook as the lead maintainer. If the project grows and there
90
+ are more contributors, we will formalize the governance structure in a way to allow it to be multi-stakeholder and
91
+ to spread out the power and responsibility.