Skip to content

Commit

Permalink
Revert "use type instead of isinstance"
Browse files Browse the repository at this point in the history
This reverts commit a23ca31.
  • Loading branch information
k-allagbe committed Sep 10, 2024
1 parent a23ca31 commit f0991d7
Show file tree
Hide file tree
Showing 10 changed files with 35 additions and 739 deletions.
Binary file removed .DS_Store
Binary file not shown.
76 changes: 35 additions & 41 deletions pipeline/inspection.py
Original file line number Diff line number Diff line change
@@ -1,58 +1,60 @@
import re
from typing import List, Optional

from pydantic import BaseModel, Field, field_validator, model_validator


class npkError(ValueError):
pass


def extract_first_number(string: str) -> Optional[str]:
if string is not None:
match = re.search(r"\d+(\.\d+)?", string)
match = re.search(r'\d+(\.\d+)?', string)
if match:
return match.group()
return None


class NutrientValue(BaseModel):
nutrient: str
value: Optional[float] = None
unit: Optional[str] = None

@field_validator("value", mode="before", check_fields=False)
@field_validator('value', mode='before', check_fields=False)
def convert_value(cls, v):
if type(v) in (int, float):
return float(v)
if type(v) is str:
if isinstance(v, bool):
return None
elif isinstance(v, (int, float)):
return str(v)
elif isinstance(v, (str)):
return extract_first_number(v)


return None
class Value(BaseModel):
value: Optional[float]
unit: Optional[str]

@field_validator("value", mode="before", check_fields=False)
@field_validator('value', mode='before', check_fields=False)
def convert_value(cls, v):
if type(v) in (int, float):
return float(v)
if type(v) is str:
if isinstance(v, bool):
return None
elif isinstance(v, (int, float)):
return str(v)
elif isinstance(v, (str)):
return extract_first_number(v)

return None

class Specification(BaseModel):
humidity: Optional[float] = Field(..., alias="humidity")
ph: Optional[float] = Field(..., alias="ph")
humidity: Optional[float] = Field(..., alias='humidity')
ph: Optional[float] = Field(..., alias='ph')
solubility: Optional[float]

@field_validator("humidity", "ph", "solubility", mode="before", check_fields=False)
def convert_value(cls, v):
if type(v) in (int, float):
return float(v)
if type(v) is str:
@field_validator('humidity', 'ph', 'solubility', mode='before', check_fields=False)
def convert_specification_values(cls, v):
if isinstance(v, bool):
return None
elif isinstance(v, (int, float)):
return str(v)
elif isinstance(v, (str)):
return extract_first_number(v)

return None

class FertilizerInspection(BaseModel):
company_name: Optional[str] = None
Expand Down Expand Up @@ -84,31 +86,23 @@ class FertilizerInspection(BaseModel):
ingredients_fr: List[NutrientValue] = []
specifications_fr: List[Specification] = []
first_aid_fr: List[str] = None

@field_validator("npk", mode="before")
@field_validator('npk', mode='before')
def validate_npk(cls, v):
if v is not None:
pattern = re.compile(r"^\d+(\.\d+)?-\d+(\.\d+)?-\d+(\.\d+)?$")
pattern = re.compile(r'^\d+(\.\d+)?-\d+(\.\d+)?-\d+(\.\d+)?$')
if not pattern.match(v):
return None
return v

@model_validator(mode="before")
@model_validator(mode='before')
def replace_none_with_empty_list(cls, values):
fields_to_check = [
"cautions_en",
"first_aid_en",
"cautions_fr",
"first_aid_fr",
"instructions_en",
"micronutrients_en",
"ingredients_en",
"specifications_en",
"instructions_fr",
"micronutrients_fr",
"ingredients_fr",
"specifications_fr",
"guaranteed_analysis",
'cautions_en', 'first_aid_en', 'cautions_fr', 'first_aid_fr',
'instructions_en', 'micronutrients_en', 'ingredients_en',
'specifications_en', 'instructions_fr',
'micronutrients_fr', 'ingredients_fr',
'specifications_fr', 'guaranteed_analysis'
]
for field in fields_to_check:
if values.get(field) is None:
Expand Down
7 changes: 0 additions & 7 deletions script.py

This file was deleted.

39 changes: 0 additions & 39 deletions script2.py

This file was deleted.

68 changes: 0 additions & 68 deletions script3.py

This file was deleted.

Loading

0 comments on commit f0991d7

Please sign in to comment.