Skip to content

Commit f7951e3

Browse files
committed
Preliminary pass over common
1 parent 04431c0 commit f7951e3

File tree

4 files changed

+19
-11
lines changed

4 files changed

+19
-11
lines changed

src/common/data_type.rs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ impl From<PyScalarValue> for ScalarValue {
3737
}
3838

3939
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
40-
#[pyclass(eq, eq_int, name = "RexType", module = "datafusion.common")]
40+
#[pyclass(frozen, eq, eq_int, name = "RexType", module = "datafusion.common")]
4141
pub enum RexType {
4242
Alias,
4343
Literal,
@@ -56,6 +56,7 @@ pub enum RexType {
5656
/// and manageable location. Therefore this structure exists
5757
/// to map those types and provide a simple place for developers
5858
/// to map types from one system to another.
59+
// TODO: This looks like this needs pyo3 tracking so leaving unfrozen for now
5960
#[derive(Debug, Clone)]
6061
#[pyclass(name = "DataTypeMap", module = "datafusion.common", subclass)]
6162
pub struct DataTypeMap {
@@ -577,7 +578,7 @@ impl DataTypeMap {
577578
/// Since `DataType` exists in another package we cannot make that happen here so we wrap
578579
/// `DataType` as `PyDataType` This exists solely to satisfy those constraints.
579580
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
580-
#[pyclass(name = "DataType", module = "datafusion.common")]
581+
#[pyclass(frozen, name = "DataType", module = "datafusion.common")]
581582
pub struct PyDataType {
582583
pub data_type: DataType,
583584
}
@@ -635,7 +636,7 @@ impl From<DataType> for PyDataType {
635636

636637
/// Represents the possible Python types that can be mapped to the SQL types
637638
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
638-
#[pyclass(eq, eq_int, name = "PythonType", module = "datafusion.common")]
639+
#[pyclass(frozen, eq, eq_int, name = "PythonType", module = "datafusion.common")]
639640
pub enum PythonType {
640641
Array,
641642
Bool,
@@ -655,7 +656,7 @@ pub enum PythonType {
655656
#[allow(non_camel_case_types)]
656657
#[allow(clippy::upper_case_acronyms)]
657658
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
658-
#[pyclass(eq, eq_int, name = "SqlType", module = "datafusion.common")]
659+
#[pyclass(frozen, eq, eq_int, name = "SqlType", module = "datafusion.common")]
659660
pub enum SqlType {
660661
ANY,
661662
ARRAY,
@@ -713,7 +714,13 @@ pub enum SqlType {
713714
#[allow(non_camel_case_types)]
714715
#[allow(clippy::upper_case_acronyms)]
715716
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
716-
#[pyclass(eq, eq_int, name = "NullTreatment", module = "datafusion.common")]
717+
#[pyclass(
718+
frozen,
719+
eq,
720+
eq_int,
721+
name = "NullTreatment",
722+
module = "datafusion.common"
723+
)]
717724
pub enum NullTreatment {
718725
IGNORE_NULLS,
719726
RESPECT_NULLS,

src/common/df_schema.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use datafusion::common::DFSchema;
2121
use pyo3::prelude::*;
2222

2323
#[derive(Debug, Clone)]
24-
#[pyclass(name = "DFSchema", module = "datafusion.common", subclass)]
24+
#[pyclass(frozen, name = "DFSchema", module = "datafusion.common", subclass)]
2525
pub struct PyDFSchema {
2626
schema: Arc<DFSchema>,
2727
}

src/common/function.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use pyo3::prelude::*;
2222

2323
use super::data_type::PyDataType;
2424

25-
#[pyclass(name = "SqlFunction", module = "datafusion.common", subclass)]
25+
#[pyclass(frozen, name = "SqlFunction", module = "datafusion.common", subclass)]
2626
#[derive(Debug, Clone)]
2727
pub struct SqlFunction {
2828
pub name: String,

src/common/schema.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ use crate::sql::logical::PyLogicalPlan;
3333

3434
use super::{data_type::DataTypeMap, function::SqlFunction};
3535

36+
// TODO I think the get/set prohibits frozen
3637
#[pyclass(name = "SqlSchema", module = "datafusion.common", subclass)]
3738
#[derive(Debug, Clone)]
3839
pub struct SqlSchema {
@@ -208,7 +209,7 @@ fn is_supported_push_down_expr(_expr: &Expr) -> bool {
208209
true
209210
}
210211

211-
#[pyclass(name = "SqlStatistics", module = "datafusion.common", subclass)]
212+
#[pyclass(frozen, name = "SqlStatistics", module = "datafusion.common", subclass)]
212213
#[derive(Debug, Clone)]
213214
pub struct SqlStatistics {
214215
row_count: f64,
@@ -227,7 +228,7 @@ impl SqlStatistics {
227228
}
228229
}
229230

230-
#[pyclass(name = "Constraints", module = "datafusion.expr", subclass)]
231+
#[pyclass(frozen, name = "Constraints", module = "datafusion.expr", subclass)]
231232
#[derive(Clone)]
232233
pub struct PyConstraints {
233234
pub constraints: Constraints,
@@ -252,7 +253,7 @@ impl Display for PyConstraints {
252253
}
253254

254255
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
255-
#[pyclass(eq, eq_int, name = "TableType", module = "datafusion.common")]
256+
#[pyclass(frozen, eq, eq_int, name = "TableType", module = "datafusion.common")]
256257
pub enum PyTableType {
257258
Base,
258259
View,
@@ -279,7 +280,7 @@ impl From<TableType> for PyTableType {
279280
}
280281
}
281282

282-
#[pyclass(name = "TableSource", module = "datafusion.common", subclass)]
283+
#[pyclass(frozen, name = "TableSource", module = "datafusion.common", subclass)]
283284
#[derive(Clone)]
284285
pub struct PyTableSource {
285286
pub table_source: Arc<dyn TableSource>,

0 commit comments

Comments
 (0)