Feat: add Interseptor

This commit is contained in:
2024-02-18 17:40:52 +01:00
parent 75e196e366
commit 2f77206b8f
4 changed files with 91 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
import random
import pandas as pd
import pytest
from pydantic import BaseModel
from scripts.intersept_not_valid import Interseptor
class FakeModel(BaseModel):
name: str
age: int
def test_init_composed():
interceptor = Interseptor(FakeModel)
def df_generator(nrows=3):
records = [{"name": "plop", "age": random.randint(1, 50)} for _ in range(nrows)]
return pd.DataFrame.from_records(records)
df_generator_val = interceptor(df_generator)
df = df_generator_val(3)
assert len(df) == 3
assert interceptor.not_valid_rows == []
def test_init_decorator():
interceptor = Interseptor(FakeModel)
@interceptor
def df_generator(nrows=3):
records = [{"name": "plop", "age": random.randint(1, 50)} for _ in range(nrows)]
return pd.DataFrame.from_records(records)
df = df_generator(3)
assert len(df) == 3
assert interceptor.not_valid_rows == []
def test_intersept_not_valid():
interceptor = Interseptor(FakeModel)
@interceptor
def df_generator():
records = [
{"name": "plop", "age": 12},
{"name": "hop", "age": "ui"},
{"name": "pipo", "age": 12},
]
return pd.DataFrame.from_records(records)
df = df_generator()
assert len(df) == 2
assert interceptor.not_valid_rows == [
{
"name": "hop",
"age": "ui",
"InterseptorOrigin": "df_generator",
"InterseptorIndex": 1,
}
]