egglog 4.0.1__cp312-none-win_amd64.whl → 5.0.0__cp312-none-win_amd64.whl
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/bindings.cp312-win_amd64.pyd +0 -0
- egglog/declarations.py +1 -4
- egglog/egraph.py +33 -15
- egglog/examples/bool.py +1 -1
- egglog/examples/lambda_.py +4 -4
- egglog/examples/resolution.py +1 -1
- egglog/exp/array_api.py +3 -3
- egglog/exp/array_api_program_gen.py +2 -1
- egglog/exp/program_gen.py +9 -9
- egglog/runtime.py +7 -9
- {egglog-4.0.1.dist-info → egglog-5.0.0.dist-info}/METADATA +13 -13
- {egglog-4.0.1.dist-info → egglog-5.0.0.dist-info}/RECORD +14 -14
- {egglog-4.0.1.dist-info → egglog-5.0.0.dist-info}/WHEEL +0 -0
- {egglog-4.0.1.dist-info → egglog-5.0.0.dist-info}/license_files/LICENSE +0 -0
|
Binary file
|
egglog/declarations.py
CHANGED
|
@@ -269,7 +269,7 @@ class ModuleDeclarations:
|
|
|
269
269
|
return decls.get_egg_fn(ref)
|
|
270
270
|
except KeyError:
|
|
271
271
|
pass
|
|
272
|
-
raise KeyError(f"Callable ref {ref} not found")
|
|
272
|
+
raise KeyError(f"Callable ref {ref!r} not found")
|
|
273
273
|
|
|
274
274
|
def get_egg_sort(self, ref: JustTypeRef) -> str:
|
|
275
275
|
for decls in self.all_decls:
|
|
@@ -770,9 +770,6 @@ class CallDecl:
|
|
|
770
770
|
if self in context.names:
|
|
771
771
|
return context.names[self]
|
|
772
772
|
ref, args = self.callable, [a.expr for a in self.args]
|
|
773
|
-
# Special case != since it doesn't have a decl
|
|
774
|
-
if isinstance(ref, MethodRef) and ref.method_name == "__ne__":
|
|
775
|
-
return f"{args[0].pretty(context)} != {args[1].pretty(context)}"
|
|
776
773
|
function_decl = context.mod_decls.get_function_decl(ref)
|
|
777
774
|
# Determine how many of the last arguments are defaults, by iterating from the end and comparing the arg with the default
|
|
778
775
|
n_defaults = 0
|
egglog/egraph.py
CHANGED
|
@@ -54,6 +54,7 @@ __all__ = [
|
|
|
54
54
|
"rewrite",
|
|
55
55
|
"birewrite",
|
|
56
56
|
"eq",
|
|
57
|
+
"ne",
|
|
57
58
|
"panic",
|
|
58
59
|
"let",
|
|
59
60
|
"delete",
|
|
@@ -258,8 +259,6 @@ class _BaseModule(ABC):
|
|
|
258
259
|
unextractable=unextractable,
|
|
259
260
|
)
|
|
260
261
|
|
|
261
|
-
# Register != as a method so we can print it as a string
|
|
262
|
-
self._mod_decls._decl.register_callable_ref(MethodRef(cls_name, "__ne__"), "!=")
|
|
263
262
|
return RuntimeClass(self._mod_decls, cls_name)
|
|
264
263
|
|
|
265
264
|
# We seperate the function and method overloads to make it simpler to know if we are modifying a function or method,
|
|
@@ -663,6 +662,8 @@ class _Builtins(_BaseModule):
|
|
|
663
662
|
msg = "Builtins already initialized"
|
|
664
663
|
raise RuntimeError(msg)
|
|
665
664
|
_BUILTIN_DECLS = self._mod_decls._decl
|
|
665
|
+
# Register != operator
|
|
666
|
+
_BUILTIN_DECLS.register_callable_ref(FunctionRef("!="), "!=")
|
|
666
667
|
|
|
667
668
|
def _process_commands(self, cmds: Iterable[bindings._Command]) -> None:
|
|
668
669
|
"""
|
|
@@ -1152,22 +1153,10 @@ class Expr(metaclass=_ExprMetaclass):
|
|
|
1152
1153
|
Expression base class, which adds suport for != to all expression types.
|
|
1153
1154
|
"""
|
|
1154
1155
|
|
|
1155
|
-
def __ne__(self
|
|
1156
|
-
"""
|
|
1157
|
-
Compare whether to expressions are not equal.
|
|
1158
|
-
|
|
1159
|
-
:param self: The expression to compare.
|
|
1160
|
-
:param other_expr: The other expression to compare to, which must be of the same type.
|
|
1161
|
-
:meta public:
|
|
1162
|
-
"""
|
|
1156
|
+
def __ne__(self, other: NoReturn) -> NoReturn: # type: ignore[override, empty-body]
|
|
1163
1157
|
...
|
|
1164
1158
|
|
|
1165
1159
|
def __eq__(self, other: NoReturn) -> NoReturn: # type: ignore[override, empty-body]
|
|
1166
|
-
"""
|
|
1167
|
-
Equality is currently not supported.
|
|
1168
|
-
|
|
1169
|
-
We only add this method so that if you try to use it MyPy will warn you.
|
|
1170
|
-
"""
|
|
1171
1160
|
...
|
|
1172
1161
|
|
|
1173
1162
|
|
|
@@ -1492,6 +1481,11 @@ def eq(expr: EXPR) -> _EqBuilder[EXPR]:
|
|
|
1492
1481
|
return _EqBuilder(expr)
|
|
1493
1482
|
|
|
1494
1483
|
|
|
1484
|
+
def ne(expr: EXPR) -> _NeBuilder[EXPR]:
|
|
1485
|
+
"""Check if the given expression is not equal to the given value."""
|
|
1486
|
+
return _NeBuilder(expr)
|
|
1487
|
+
|
|
1488
|
+
|
|
1495
1489
|
def panic(message: str) -> Action:
|
|
1496
1490
|
"""Raise an error with the given message."""
|
|
1497
1491
|
return Panic(message)
|
|
@@ -1596,6 +1590,30 @@ class _EqBuilder(Generic[EXPR]):
|
|
|
1596
1590
|
return f"eq({self.expr})"
|
|
1597
1591
|
|
|
1598
1592
|
|
|
1593
|
+
@dataclass
|
|
1594
|
+
class _NeBuilder(Generic[EXPR]):
|
|
1595
|
+
expr: EXPR
|
|
1596
|
+
|
|
1597
|
+
def to(self, expr: EXPR) -> Unit:
|
|
1598
|
+
l_expr = cast(RuntimeExpr, self.expr)
|
|
1599
|
+
return cast(
|
|
1600
|
+
Unit,
|
|
1601
|
+
RuntimeExpr(
|
|
1602
|
+
BUILTINS._mod_decls,
|
|
1603
|
+
TypedExprDecl(
|
|
1604
|
+
JustTypeRef("Unit"),
|
|
1605
|
+
CallDecl(
|
|
1606
|
+
FunctionRef("!="),
|
|
1607
|
+
(l_expr.__egg_typed_expr__, convert_to_same_type(expr, l_expr).__egg_typed_expr__),
|
|
1608
|
+
),
|
|
1609
|
+
),
|
|
1610
|
+
),
|
|
1611
|
+
)
|
|
1612
|
+
|
|
1613
|
+
def __str__(self) -> str:
|
|
1614
|
+
return f"ne({self.expr})"
|
|
1615
|
+
|
|
1616
|
+
|
|
1599
1617
|
@dataclass
|
|
1600
1618
|
class _SetBuilder(Generic[EXPR]):
|
|
1601
1619
|
lhs: Expr
|
egglog/examples/bool.py
CHANGED
|
@@ -13,7 +13,7 @@ egraph = EGraph()
|
|
|
13
13
|
egraph.check(eq(T & T).to(T))
|
|
14
14
|
egraph.check(eq(T & F).to(F))
|
|
15
15
|
egraph.check(eq(T | F).to(T))
|
|
16
|
-
egraph.check((T | F)
|
|
16
|
+
egraph.check(ne(T | F).to(F))
|
|
17
17
|
|
|
18
18
|
egraph.check(eq(i64(1).bool_lt(2)).to(T))
|
|
19
19
|
egraph.check(eq(i64(2).bool_lt(1)).to(F))
|
egglog/examples/lambda_.py
CHANGED
|
@@ -117,7 +117,7 @@ egraph.register(
|
|
|
117
117
|
union(t.eval()).with_(Val(i1 + i2))
|
|
118
118
|
),
|
|
119
119
|
rule(eq(t).to(t1 == t2), eq(t1.eval()).to(t2.eval())).then(union(t.eval()).with_(Val.TRUE)),
|
|
120
|
-
rule(eq(t).to(t1 == t2), eq(t1.eval()).to(v1), eq(t2.eval()).to(v2), v1
|
|
120
|
+
rule(eq(t).to(t1 == t2), eq(t1.eval()).to(v1), eq(t2.eval()).to(v2), ne(v1).to(v2)).then(
|
|
121
121
|
union(t.eval()).with_(Val.FALSE)
|
|
122
122
|
),
|
|
123
123
|
rule(eq(v).to(t.eval())).then(union(t).with_(Term.val(v))),
|
|
@@ -154,12 +154,12 @@ egraph.register(
|
|
|
154
154
|
# let-var-same
|
|
155
155
|
rewrite(let_(x, t, Term.var(x))).to(t),
|
|
156
156
|
# let-var-diff
|
|
157
|
-
rewrite(let_(x, t, Term.var(y))).to(Term.var(y), x
|
|
157
|
+
rewrite(let_(x, t, Term.var(y))).to(Term.var(y), ne(x).to(y)),
|
|
158
158
|
# let-lam-same
|
|
159
159
|
rewrite(let_(x, t, lam(x, t1))).to(lam(x, t1)),
|
|
160
160
|
# let-lam-diff
|
|
161
|
-
rewrite(let_(x, t, lam(y, t1))).to(lam(y, let_(x, t, t1)), x
|
|
162
|
-
rule(eq(t).to(let_(x, t1, lam(y, t2))), x
|
|
161
|
+
rewrite(let_(x, t, lam(y, t1))).to(lam(y, let_(x, t, t1)), ne(x).to(y), eq(fv).to(freer(t)), fv.not_contains(y)),
|
|
162
|
+
rule(eq(t).to(let_(x, t1, lam(y, t2))), ne(x).to(y), eq(fv).to(freer(t1)), fv.contains(y)).then(
|
|
163
163
|
union(t).with_(lam(t.v(), let_(x, t1, let_(y, Term.var(t.v()), t2))))
|
|
164
164
|
),
|
|
165
165
|
)
|
egglog/examples/resolution.py
CHANGED
egglog/exp/array_api.py
CHANGED
|
@@ -278,7 +278,7 @@ class Int(Expr):
|
|
|
278
278
|
@array_api_module.register
|
|
279
279
|
def _int(i: i64, j: i64, r: Boolean, o: Int):
|
|
280
280
|
yield rewrite(Int(i) == Int(i)).to(TRUE)
|
|
281
|
-
yield rule(eq(r).to(Int(i) == Int(j)), i
|
|
281
|
+
yield rule(eq(r).to(Int(i) == Int(j)), ne(i).to(j)).then(union(r).with_(FALSE))
|
|
282
282
|
|
|
283
283
|
yield rewrite(Int(i) >= Int(i)).to(TRUE)
|
|
284
284
|
yield rule(eq(r).to(Int(i) >= Int(j)), i > j).then(union(r).with_(TRUE))
|
|
@@ -666,7 +666,7 @@ def _tuple_value(
|
|
|
666
666
|
# Includes
|
|
667
667
|
rewrite(TupleValue.EMPTY.includes(v)).to(FALSE),
|
|
668
668
|
rewrite(TupleValue(v).includes(v)).to(TRUE),
|
|
669
|
-
rewrite(TupleValue(v).includes(v2)).to(FALSE, v
|
|
669
|
+
rewrite(TupleValue(v).includes(v2)).to(FALSE, ne(v).to(v2)),
|
|
670
670
|
rewrite((ti + ti2).includes(v)).to(ti.includes(v) | ti2.includes(v)),
|
|
671
671
|
]
|
|
672
672
|
|
|
@@ -1503,7 +1503,7 @@ def _assume_value_one_of(x: NDArray, v: Value, vs: TupleValue, idx: TupleInt):
|
|
|
1503
1503
|
def _ndarray_value_isfinite(arr: NDArray, x: Value, xs: TupleValue, i: Int, f: f64, b: Boolean):
|
|
1504
1504
|
yield rewrite(Value.int(i).isfinite()).to(TRUE)
|
|
1505
1505
|
yield rewrite(Value.bool(b).isfinite()).to(TRUE)
|
|
1506
|
-
yield rewrite(Value.float(Float(f)).isfinite()).to(TRUE, f
|
|
1506
|
+
yield rewrite(Value.float(Float(f)).isfinite()).to(TRUE, ne(f).to(f64(math.nan)))
|
|
1507
1507
|
|
|
1508
1508
|
# a sum of an array is finite if all the values are finite
|
|
1509
1509
|
yield rewrite(isfinite(sum(arr))).to(NDArray.scalar(Value.bool(arr.index(ALL_INDICES).isfinite())))
|
|
@@ -126,7 +126,8 @@ def _float_program(f: Float, g: Float, f64_: f64, i: Int, r: Rational):
|
|
|
126
126
|
yield rewrite(float_program(f * g)).to(Program("(") + float_program(f) + " * " + float_program(g) + ")")
|
|
127
127
|
yield rewrite(float_program(f / g)).to(Program("(") + float_program(f) + " / " + float_program(g) + ")")
|
|
128
128
|
yield rewrite(float_program(Float.rational(r))).to(
|
|
129
|
-
Program("float(") + Program(r.numer.to_string()) + " / " + Program(r.denom.to_string()) + ")",
|
|
129
|
+
Program("float(") + Program(r.numer.to_string()) + " / " + Program(r.denom.to_string()) + ")",
|
|
130
|
+
ne(r.denom).to(i64(1)),
|
|
130
131
|
)
|
|
131
132
|
yield rewrite(float_program(Float.rational(r))).to(
|
|
132
133
|
Program("float(") + Program(r.numer.to_string()) + ")", eq(r.denom).to(i64(1))
|
egglog/exp/program_gen.py
CHANGED
|
@@ -182,7 +182,7 @@ def _compile(
|
|
|
182
182
|
yield rule(
|
|
183
183
|
stmt,
|
|
184
184
|
p.compile(i),
|
|
185
|
-
p1.parent
|
|
185
|
+
ne(p1.parent).to(p),
|
|
186
186
|
eq(s1).to(p1.expr),
|
|
187
187
|
).then(
|
|
188
188
|
set_(p.statements).to(join(s1, "\n")),
|
|
@@ -214,7 +214,7 @@ def _compile(
|
|
|
214
214
|
# Otherwise, if its not equal to either input, its not an identifier
|
|
215
215
|
yield rule(program_add, eq(p.expr).to(p1.expr), eq(b).to(p1.is_identifer)).then(set_(p.is_identifer).to(b))
|
|
216
216
|
yield rule(program_add, eq(p.expr).to(p2.expr), eq(b).to(p2.is_identifer)).then(set_(p.is_identifer).to(b))
|
|
217
|
-
yield rule(program_add, p.expr
|
|
217
|
+
yield rule(program_add, ne(p.expr).to(p1.expr), ne(p.expr).to(p2.expr)).then(set_(p.is_identifer).to(Bool(False)))
|
|
218
218
|
|
|
219
219
|
# Set parent of p1
|
|
220
220
|
yield rule(program_add, p.compile(i)).then(
|
|
@@ -228,7 +228,7 @@ def _compile(
|
|
|
228
228
|
yield rule(program_add, p.compile(i), p1.next_sym).then(set_(p2.parent).to(p))
|
|
229
229
|
|
|
230
230
|
# Compile p2, if p1 parent not equal, but p2 parent equal
|
|
231
|
-
yield rule(program_add, p.compile(i), p1.parent
|
|
231
|
+
yield rule(program_add, p.compile(i), ne(p1.parent).to(p), eq(p2.parent).to(p)).then(p2.compile(i))
|
|
232
232
|
|
|
233
233
|
# Compile p2, if p1 parent eqal
|
|
234
234
|
yield rule(program_add, p.compile(i2), eq(p1.parent).to(p), eq(i).to(p1.next_sym), eq(p2.parent).to(p)).then(
|
|
@@ -259,8 +259,8 @@ def _compile(
|
|
|
259
259
|
yield rule(
|
|
260
260
|
program_add,
|
|
261
261
|
p.compile(i),
|
|
262
|
-
p1.parent
|
|
263
|
-
p2.parent
|
|
262
|
+
ne(p1.parent).to(p),
|
|
263
|
+
ne(p2.parent).to(p),
|
|
264
264
|
).then(
|
|
265
265
|
set_(p.statements).to(String("")),
|
|
266
266
|
set_(p.next_sym).to(i),
|
|
@@ -269,7 +269,7 @@ def _compile(
|
|
|
269
269
|
yield rule(
|
|
270
270
|
program_add,
|
|
271
271
|
eq(p1.parent).to(p),
|
|
272
|
-
p2.parent
|
|
272
|
+
ne(p2.parent).to(p),
|
|
273
273
|
eq(s1).to(p1.statements),
|
|
274
274
|
eq(i).to(p1.next_sym),
|
|
275
275
|
).then(
|
|
@@ -280,7 +280,7 @@ def _compile(
|
|
|
280
280
|
yield rule(
|
|
281
281
|
program_add,
|
|
282
282
|
eq(p2.parent).to(p),
|
|
283
|
-
p1.parent
|
|
283
|
+
ne(p1.parent).to(p),
|
|
284
284
|
eq(s2).to(p2.statements),
|
|
285
285
|
eq(i).to(p2.next_sym),
|
|
286
286
|
).then(
|
|
@@ -319,7 +319,7 @@ def _compile(
|
|
|
319
319
|
# 1. b. If p1 parent is not p, then just use assign as statement, next sym of i
|
|
320
320
|
yield rule(
|
|
321
321
|
program_assign,
|
|
322
|
-
p1.parent
|
|
322
|
+
ne(p1.parent).to(p),
|
|
323
323
|
p.compile(i),
|
|
324
324
|
eq(s2).to(p1.expr),
|
|
325
325
|
eq(p1.is_identifer).to(Bool(False)),
|
|
@@ -347,7 +347,7 @@ def _compile(
|
|
|
347
347
|
# 1. b. If p1 parent is not p, then just use assign as statement, next sym of i
|
|
348
348
|
yield rule(
|
|
349
349
|
program_assign,
|
|
350
|
-
p1.parent
|
|
350
|
+
ne(p1.parent).to(p),
|
|
351
351
|
p.compile(i),
|
|
352
352
|
eq(s2).to(p1.expr),
|
|
353
353
|
eq(p1.is_identifer).to(Bool(True)),
|
egglog/runtime.py
CHANGED
|
@@ -435,15 +435,13 @@ class RuntimeMethod:
|
|
|
435
435
|
self.__egg_callable_ref__ = PropertyRef(self.class_name, self.__egg_method_name__)
|
|
436
436
|
else:
|
|
437
437
|
self.__egg_callable_ref__ = MethodRef(self.class_name, self.__egg_method_name__)
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
self.
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
except KeyError as e:
|
|
446
|
-
raise AttributeError(f"Class {self.class_name} does not have method {self.__egg_method_name__}") from e
|
|
438
|
+
try:
|
|
439
|
+
self.__egg_fn_decl__ = self.__egg_self__.__egg_decls__.get_function_decl(self.__egg_callable_ref__)
|
|
440
|
+
except KeyError as e:
|
|
441
|
+
msg = f"Class {self.class_name} does not have method {self.__egg_method_name__}"
|
|
442
|
+
if self.__egg_method_name__ == "__ne__":
|
|
443
|
+
msg += ". Did you mean to use the ne(...).to(...)?"
|
|
444
|
+
raise AttributeError(msg) from e
|
|
447
445
|
|
|
448
446
|
def __call__(self, *args: object, **kwargs) -> RuntimeExpr | None:
|
|
449
447
|
args = (self.__egg_self__, *args)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: egglog
|
|
3
|
-
Version:
|
|
3
|
+
Version: 5.0.0
|
|
4
4
|
Classifier: Environment :: MacOS X
|
|
5
5
|
Classifier: Environment :: Win32 (MS Windows)
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -19,10 +19,11 @@ Classifier: Typing :: Typed
|
|
|
19
19
|
Requires-Dist: typing-extensions
|
|
20
20
|
Requires-Dist: black
|
|
21
21
|
Requires-Dist: graphviz
|
|
22
|
-
Requires-Dist:
|
|
23
|
-
Requires-Dist:
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist:
|
|
22
|
+
Requires-Dist: pre-commit; extra == 'dev'
|
|
23
|
+
Requires-Dist: ruff; extra == 'dev'
|
|
24
|
+
Requires-Dist: mypy; extra == 'dev'
|
|
25
|
+
Requires-Dist: anywidget[dev]; extra == 'dev'
|
|
26
|
+
Requires-Dist: egglog[docs,test]; extra == 'dev'
|
|
26
27
|
Requires-Dist: pydata-sphinx-theme; extra == 'docs'
|
|
27
28
|
Requires-Dist: myst-nb; extra == 'docs'
|
|
28
29
|
Requires-Dist: sphinx-autodoc-typehints; extra == 'docs'
|
|
@@ -35,17 +36,16 @@ Requires-Dist: egglog[array]; extra == 'docs'
|
|
|
35
36
|
Requires-Dist: line-profiler; extra == 'docs'
|
|
36
37
|
Requires-Dist: sphinxcontrib-mermaid; extra == 'docs'
|
|
37
38
|
Requires-Dist: ablog; extra == 'docs'
|
|
38
|
-
Requires-Dist:
|
|
39
|
-
Requires-Dist:
|
|
40
|
-
Requires-Dist:
|
|
41
|
-
Requires-Dist:
|
|
42
|
-
Requires-Dist: egglog[docs,test]; extra == 'dev'
|
|
39
|
+
Requires-Dist: pytest; extra == 'test'
|
|
40
|
+
Requires-Dist: mypy; extra == 'test'
|
|
41
|
+
Requires-Dist: syrupy; extra == 'test'
|
|
42
|
+
Requires-Dist: egglog[array]; extra == 'test'
|
|
43
43
|
Requires-Dist: scikit-learn; extra == 'array'
|
|
44
44
|
Requires-Dist: array_api_compat; extra == 'array'
|
|
45
45
|
Requires-Dist: numba; (python_version<"3.12") and extra == 'array'
|
|
46
|
-
Provides-Extra: test
|
|
47
|
-
Provides-Extra: docs
|
|
48
46
|
Provides-Extra: dev
|
|
47
|
+
Provides-Extra: docs
|
|
48
|
+
Provides-Extra: test
|
|
49
49
|
Provides-Extra: array
|
|
50
50
|
License-File: LICENSE
|
|
51
51
|
Summary: e-graphs in Python built around the the egglog rust library
|
|
@@ -60,7 +60,7 @@ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
|
60
60
|
`egglog` is a Python package that provides bindings to the Rust library [`egglog`](https://github.com/egraphs-good/egglog/),
|
|
61
61
|
allowing you to use e-graphs in Python for optimization, symbolic computation, and analysis.
|
|
62
62
|
|
|
63
|
-
Please see the [documentation](https://egglog-python.readthedocs.io/
|
|
63
|
+
Please see the [documentation](https://egglog-python.readthedocs.io/) for more information.
|
|
64
64
|
|
|
65
65
|
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)!
|
|
66
66
|
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
egglog-
|
|
2
|
-
egglog-
|
|
3
|
-
egglog-
|
|
1
|
+
egglog-5.0.0.dist-info/METADATA,sha256=qi__7zlNff-jiJ4Brz5IwWx9OXIql62sX2D13U4gaGc,3524
|
|
2
|
+
egglog-5.0.0.dist-info/WHEEL,sha256=5VSD4WjrAS64a1-QM6eGcLa48TnO082fkviTtVvn8m4,96
|
|
3
|
+
egglog-5.0.0.dist-info/license_files/LICENSE,sha256=TfaboMVZ81Q6OUaKjU7z6uVjSlcGKclLYcOpgDbm9_s,1091
|
|
4
4
|
egglog/bindings.pyi,sha256=ozrs-Oau7dSNnU9x1iTZWmuqJSXnepQ_fYR18JKlaWA,11073
|
|
5
5
|
egglog/builtins.py,sha256=3kNQv62722Z1PtgHA_mDOIlaMSPJLSOjjO2B9SIZYdo,14005
|
|
6
6
|
egglog/config.py,sha256=mALVaxh7zmGrbuyzaVKVmYKcu1lF703QsKJw8AF7gSM,176
|
|
7
|
-
egglog/declarations.py,sha256=
|
|
8
|
-
egglog/egraph.py,sha256=
|
|
9
|
-
egglog/examples/bool.py,sha256=
|
|
7
|
+
egglog/declarations.py,sha256=GrDNVkhfy1h9CqUYJuMhlQlntdJJl-pnLLPbq65of_s,39437
|
|
8
|
+
egglog/egraph.py,sha256=vF4_V3FsdazBI9UN42M3xrjkMm_esDHN8JxvTwHf9Qw,60382
|
|
9
|
+
egglog/examples/bool.py,sha256=P4X2lxyiViP7bxsQooJBP-ofnqmVcw5jdylBOricNtY,851
|
|
10
10
|
egglog/examples/eqsat_basic.py,sha256=1vY0HVPM-xgKT-VuYa2XAaC_dfv6PEcfjg0qCF55sjo,1023
|
|
11
11
|
egglog/examples/fib.py,sha256=fQDB4quzrHwZER5DSPvZKB9POcYDNYV7fNdlVwI-0Ns,533
|
|
12
|
-
egglog/examples/lambda_.py,sha256=
|
|
12
|
+
egglog/examples/lambda_.py,sha256=fuxQKmouE_vC4CyLXuPfNsJyTfMerHoryAs3DOAl88g,9023
|
|
13
13
|
egglog/examples/matrix.py,sha256=hAVoxd9TIdeFkD9MpsEpm8nW2nJONZefIGhqMPuQlNI,5440
|
|
14
14
|
egglog/examples/ndarrays.py,sha256=slNff_HoiTGk_0XRs9oPsyQWT8EVGZ7eURlU5U05fg8,4373
|
|
15
15
|
egglog/examples/README.rst,sha256=QrbfmivODBvUvmY3-dHarcbC6bEvwoqAfTDhiI-aJxU,237
|
|
16
|
-
egglog/examples/resolution.py,sha256=
|
|
16
|
+
egglog/examples/resolution.py,sha256=xhsXQDhYJJ9lI5jk9RAnTi-fUFSZwLSzwWQjAGDdHi4,2231
|
|
17
17
|
egglog/examples/schedule_demo.py,sha256=3borxRua7WSlEPqmPcImhJcDzz37rJh6uOL9-koBDD8,756
|
|
18
18
|
egglog/examples/__init__.py,sha256=KuhaJFOyz_rpUvEqZubsgLnv6rhQNE_AVFXA6bUnpdY,34
|
|
19
|
-
egglog/exp/array_api.py,sha256=
|
|
19
|
+
egglog/exp/array_api.py,sha256=k6DTmjwppXC9SYOY5xlKsnWFVigSIMOA5vQeedFXAKA,43911
|
|
20
20
|
egglog/exp/array_api_jit.py,sha256=Srd4K3Ej-lsvBrFN97VS0A9lb8AwIKKZqPLiMwFzLcU,1283
|
|
21
21
|
egglog/exp/array_api_numba.py,sha256=e6qq08FMjyksXLNJemEfFUgCMCpF7l8eW2wBzBN1f90,4024
|
|
22
|
-
egglog/exp/array_api_program_gen.py,sha256=
|
|
23
|
-
egglog/exp/program_gen.py,sha256=
|
|
22
|
+
egglog/exp/array_api_program_gen.py,sha256=Asz9p_CvXSjd-KoVBLvj1eJ5W2aEzWRNgtY0RXFqsbw,20343
|
|
23
|
+
egglog/exp/program_gen.py,sha256=lHc3AViP-3Zf0iGUTet0z5_au5v2aaMte8LgChKYZRw,12495
|
|
24
24
|
egglog/exp/__init__.py,sha256=G9zeKUcPBgIhgUg1meC86OfZVFETYIugyHWseTcCe_0,52
|
|
25
25
|
egglog/graphviz_widget.py,sha256=YtI7LCFWHihDQ1qLvdj2SVYEcuZLSooFUYheunOTxdc,1339
|
|
26
26
|
egglog/ipython_magic.py,sha256=VA19xAb6Sz7-IxlJBbnZW_gVFDqaYNnvdMB9QitndjE,1254
|
|
27
27
|
egglog/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
|
-
egglog/runtime.py,sha256=
|
|
28
|
+
egglog/runtime.py,sha256=1PP0XugpbgGH3r0brskkF1Pg9EAtfXpejVAhp_GXJUY,23932
|
|
29
29
|
egglog/type_constraint_solver.py,sha256=ZsrFvi_6ecDcXCrdZNwCeVj-LQlpfnnXQ3GP7XitwS8,3519
|
|
30
30
|
egglog/widget.css,sha256=WJS2M1wQdujhSTCakMa_ZXuoTPre1Uy1lPcvBE1LZQU,102
|
|
31
31
|
egglog/widget.js,sha256=UNOER3sYZ-bS7Qhw9S6qtpR81FuHa5DzXQaWWtQq334,2021
|
|
32
32
|
egglog/__init__.py,sha256=AGM-7H_Vx1Xb0Z-tc0C9Y8JbQxpa6hdYfhSU_dnT3Mw,244
|
|
33
|
-
egglog/bindings.cp312-win_amd64.pyd,sha256=
|
|
34
|
-
egglog-
|
|
33
|
+
egglog/bindings.cp312-win_amd64.pyd,sha256=TsSuqKzHCsFVaoky1QlI7X4w4rQIXPLlxzkTkXUAeY4,5279744
|
|
34
|
+
egglog-5.0.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|