expr-codegen 0.8.1__tar.gz → 0.8.2__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.
Files changed (28) hide show
  1. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/PKG-INFO +1 -1
  2. expr_codegen-0.8.2/expr_codegen/_version.py +1 -0
  3. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen/polars/printer.py +17 -1
  4. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen/tool.py +11 -3
  5. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen.egg-info/PKG-INFO +1 -1
  6. expr_codegen-0.8.1/expr_codegen/_version.py +0 -1
  7. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/LICENSE +0 -0
  8. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/README.md +0 -0
  9. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen/__init__.py +0 -0
  10. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen/codes.py +0 -0
  11. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen/dag.py +0 -0
  12. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen/expr.py +0 -0
  13. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen/latex/__init__.py +0 -0
  14. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen/latex/printer.py +0 -0
  15. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen/model.py +0 -0
  16. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen/pandas/__init__.py +0 -0
  17. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen/pandas/code.py +0 -0
  18. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen/pandas/printer.py +0 -0
  19. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen/pandas/template.py.j2 +0 -0
  20. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen/polars/__init__.py +0 -0
  21. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen/polars/code.py +0 -0
  22. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen/polars/template.py.j2 +0 -0
  23. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen.egg-info/SOURCES.txt +0 -0
  24. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen.egg-info/dependency_links.txt +0 -0
  25. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen.egg-info/requires.txt +0 -0
  26. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/expr_codegen.egg-info/top_level.txt +0 -0
  27. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/pyproject.toml +0 -0
  28. {expr_codegen-0.8.1 → expr_codegen-0.8.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: expr_codegen
3
- Version: 0.8.1
3
+ Version: 0.8.2
4
4
  Summary: symbol expression to polars expression tool
5
5
  Author-email: wukan <wu-kan@163.com>
6
6
  License: BSD 3-Clause License
@@ -0,0 +1 @@
1
+ __version__ = "0.8.2"
@@ -1,5 +1,5 @@
1
1
  from sympy import Basic, Function, StrPrinter
2
- from sympy.printing.precedence import precedence
2
+ from sympy.printing.precedence import precedence, PRECEDENCE
3
3
 
4
4
 
5
5
  # TODO: 如有新添加函数,但表达式有变更才需要在此补充对应的打印代码,否则可以省略
@@ -55,6 +55,22 @@ class PolarsStrPrinter(StrPrinter):
55
55
  PREC = precedence(expr)
56
56
  return "%s==%s" % (self.parenthesize(expr.args[0], PREC), self.parenthesize(expr.args[1], PREC))
57
57
 
58
+ def _print_Or(self, expr):
59
+ PREC = PRECEDENCE["Mul"]
60
+ return "%s | %s" % (self.parenthesize(expr.args[0], PREC), self.parenthesize(expr.args[1], PREC))
61
+
62
+ def _print_Xor(self, expr):
63
+ PREC = PRECEDENCE["Mul"]
64
+ return "%s ^ %s" % (self.parenthesize(expr.args[0], PREC), self.parenthesize(expr.args[1], PREC))
65
+
66
+ def _print_And(self, expr):
67
+ PREC = PRECEDENCE["Mul"]
68
+ return "%s & %s" % (self.parenthesize(expr.args[0], PREC), self.parenthesize(expr.args[1], PREC))
69
+
70
+ def _print_Not(self, expr):
71
+ PREC = PRECEDENCE["Mul"]
72
+ return "~%s" % self.parenthesize(expr.args[0], PREC)
73
+
58
74
  def _print_gp_rank(self, expr):
59
75
  return "cs_rank(%s)" % self._print(expr.args[1])
60
76
 
@@ -11,6 +11,14 @@ from expr_codegen.expr import get_current_by_prefix, get_children, replace_exprs
11
11
  from expr_codegen.model import dag_start, dag_end, dag_middle
12
12
 
13
13
 
14
+ def simplify2(expr):
15
+ try:
16
+ expr = simplify(expr)
17
+ except AttributeError as e:
18
+ print(f'{expr} ,表达式无法简化, {e}')
19
+ return expr
20
+
21
+
14
22
  class ExprTool:
15
23
 
16
24
  def __init__(self):
@@ -38,7 +46,7 @@ class ExprTool:
38
46
 
39
47
  """
40
48
  # 抽取前先化简
41
- expr = simplify(expr)
49
+ expr = simplify2(expr)
42
50
 
43
51
  exprs = []
44
52
  syms = []
@@ -87,9 +95,9 @@ class ExprTool:
87
95
 
88
96
  # 不做改动,直接生成
89
97
  for variable, expr in repl:
90
- exprs_dict[variable] = simplify(expr)
98
+ exprs_dict[variable] = simplify2(expr)
91
99
  for variable, expr in redu:
92
- exprs_dict[variable] = simplify(expr)
100
+ exprs_dict[variable] = simplify2(expr)
93
101
 
94
102
  return exprs_dict
95
103
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: expr_codegen
3
- Version: 0.8.1
3
+ Version: 0.8.2
4
4
  Summary: symbol expression to polars expression tool
5
5
  Author-email: wukan <wu-kan@163.com>
6
6
  License: BSD 3-Clause License
@@ -1 +0,0 @@
1
- __version__ = "0.8.1"
File without changes
File without changes
File without changes