Skip to content

Commit 00ad4b3

Browse files
fix: Correctly set dunder name for schemas with at least one rule (#34)
1 parent 6c955c4 commit 00ad4b3

2 files changed

Lines changed: 20 additions & 6 deletions

File tree

dataframely/_base_schema.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,15 +98,15 @@ def __new__(
9898
)
9999

100100
# 2) Check that the columns referenced in the group rules exist.
101-
for name, rule in result.rules.items():
101+
for rule_name, rule in result.rules.items():
102102
if isinstance(rule, GroupRule):
103103
missing_columns = set(rule.group_columns) - set(result.columns)
104104
if len(missing_columns) > 0:
105105
missing_list = ", ".join(
106106
sorted(f"'{col}'" for col in missing_columns)
107107
)
108108
raise ImplementationError(
109-
f"Group validation rule '{name}' has been implemented "
109+
f"Group validation rule '{rule_name}' has been implemented "
110110
f"incorrectly. It references {len(missing_columns)} columns "
111111
f"which are not in the schema: {missing_list}."
112112
)
@@ -116,16 +116,16 @@ def __new__(
116116
# empty data frame and checking for the evaluated dtypes.
117117
if len(result.rules) > 0:
118118
lf_empty = pl.LazyFrame(
119-
schema={name: col.dtype for name, col in result.columns.items()}
119+
schema={col_name: col.dtype for col_name, col in result.columns.items()}
120120
)
121121
# NOTE: For some reason, `polars` does not yield correct dtypes when calling
122122
# `collect_schema()`
123123
schema = with_evaluation_rules(lf_empty, result.rules).collect().schema
124-
for name, rule in result.rules.items():
125-
dtype = schema[name]
124+
for rule_name, rule in result.rules.items():
125+
dtype = schema[rule_name]
126126
if not isinstance(dtype, pl.Boolean):
127127
raise RuleImplementationError(
128-
name, dtype, isinstance(rule, GroupRule)
128+
rule_name, dtype, isinstance(rule, GroupRule)
129129
)
130130

131131
return super().__new__(mcs, name, bases, namespace, *args, **kwargs)

tests/schema/test_base.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ class MySchema(dy.Schema):
1818
d = dy.Any(alias="e")
1919

2020

21+
class MySchemaWithRule(MySchema):
22+
@dy.rule()
23+
def a_greater_than_c() -> pl.Expr:
24+
return pl.col("a") > pl.col("c")
25+
26+
2127
def test_column_names() -> None:
2228
assert MySchema.column_names() == ["a", "b", "c", "e"]
2329

@@ -75,3 +81,11 @@ def test_col_in_polars_expression() -> None:
7581
.select(MySchema.a.col)
7682
)
7783
assert df.row(0) == (1,)
84+
85+
86+
def test_dunder_name() -> None:
87+
assert MySchema.__name__ == "MySchema"
88+
89+
90+
def test_dunder_name_with_rule() -> None:
91+
assert MySchemaWithRule.__name__ == "MySchemaWithRule"

0 commit comments

Comments
 (0)