@@ -19,13 +19,24 @@ use crate::expr::PyExpr;
19
19
use pyo3:: prelude:: * ;
20
20
use std:: fmt:: { self , Display , Formatter } ;
21
21
22
- use datafusion_expr:: Expr ;
22
+ use datafusion_expr:: expr :: Alias ;
23
23
24
24
#[ pyclass( name = "Alias" , module = "datafusion.expr" , subclass) ]
25
25
#[ derive( Clone ) ]
26
26
pub struct PyAlias {
27
- expr : PyExpr ,
28
- alias_name : String ,
27
+ alias : Alias ,
28
+ }
29
+
30
+ impl From < Alias > for PyAlias {
31
+ fn from ( alias : Alias ) -> Self {
32
+ Self { alias }
33
+ }
34
+ }
35
+
36
+ impl From < PyAlias > for Alias {
37
+ fn from ( py_alias : PyAlias ) -> Self {
38
+ py_alias. alias
39
+ }
29
40
}
30
41
31
42
impl Display for PyAlias {
@@ -35,29 +46,20 @@ impl Display for PyAlias {
35
46
"Alias
36
47
\n Expr: `{:?}`
37
48
\n Alias Name: `{}`" ,
38
- & self . expr, & self . alias_name
49
+ & self . alias . expr, & self . alias . name
39
50
)
40
51
}
41
52
}
42
53
43
- impl PyAlias {
44
- pub fn new ( expr : & Expr , alias_name : & String ) -> Self {
45
- Self {
46
- expr : expr. clone ( ) . into ( ) ,
47
- alias_name : alias_name. to_owned ( ) ,
48
- }
49
- }
50
- }
51
-
52
54
#[ pymethods]
53
55
impl PyAlias {
54
56
/// Retrieve the "name" of the alias
55
57
fn alias ( & self ) -> PyResult < String > {
56
- Ok ( self . alias_name . clone ( ) )
58
+ Ok ( self . alias . name . clone ( ) )
57
59
}
58
60
59
61
fn expr ( & self ) -> PyResult < PyExpr > {
60
- Ok ( self . expr . clone ( ) )
62
+ Ok ( ( * self . alias . expr . clone ( ) ) . into ( ) )
61
63
}
62
64
63
65
/// Get a String representation of this column
0 commit comments