Skip to content

Commit 5e617b9

Browse files
Refactoring more code and fixing broken utils
1 parent 86e45a5 commit 5e617b9

File tree

15 files changed

+515
-508
lines changed

15 files changed

+515
-508
lines changed

classes/analyser.py

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,50 @@
1-
from dataclasses import dataclass
2-
from typing import Optional
3-
import pandas as pd
4-
5-
6-
@dataclass
7-
class Analyser:
8-
"""
9-
Data class representing an analyser.
10-
"""
11-
12-
analyser_id: Optional[int] = None
13-
analyser_code: Optional[str] = None
14-
hub_id: Optional[int] = None
15-
analyser_type_id: Optional[int] = None
16-
spoil_result_code: Optional[int] = None
17-
tech_fail_result_code: Optional[int] = None
18-
below_range_result_code: Optional[int] = None
19-
above_range_result_code: Optional[int] = None
20-
21-
def __str__(self) -> str:
22-
return (
23-
f"Analyser [analyser_id={self.analyser_id}, analyser_code={self.analyser_code}, "
24-
f"hub_id={self.hub_id}, spoil_result_code={self.spoil_result_code}, "
25-
f"tech_fail_result_code={self.tech_fail_result_code}, "
26-
f"below_range_result_code={self.below_range_result_code}, "
27-
f"above_range_result_code={self.above_range_result_code}]"
28-
)
29-
30-
@staticmethod
31-
def from_dataframe_row(row: pd.Series) -> "Analyser":
32-
"""
33-
Creates an Analyser object from a pandas DataFrame row containing analyser query results.
34-
35-
Args:
36-
row (pd.Series): A row from a pandas DataFrame with columns:
37-
- tk_analyser_id
38-
- analyser_code
39-
- hub_id
40-
- tk_analyser_type_id
41-
42-
Returns:
43-
Analyser: The constructed Analyser object.
44-
"""
45-
return Analyser(
46-
analyser_id=row.get("tk_analyser_id"),
47-
analyser_code=row.get("analyser_code"),
48-
hub_id=row.get("hub_id"),
49-
analyser_type_id=row.get("tk_analyser_type_id"),
50-
)
1+
from dataclasses import dataclass
2+
from typing import Optional
3+
import pandas as pd
4+
5+
6+
@dataclass
7+
class Analyser:
8+
"""
9+
Data class representing an analyser.
10+
"""
11+
12+
analyser_id: Optional[int] = None
13+
analyser_code: Optional[str] = None
14+
hub_id: Optional[int] = None
15+
analyser_type_id: Optional[int] = None
16+
spoil_result_code: Optional[int] = None
17+
tech_fail_result_code: Optional[int] = None
18+
below_range_result_code: Optional[int] = None
19+
above_range_result_code: Optional[int] = None
20+
21+
def __str__(self) -> str:
22+
return (
23+
f"Analyser [analyser_id={self.analyser_id}, analyser_code={self.analyser_code}, "
24+
f"hub_id={self.hub_id}, spoil_result_code={self.spoil_result_code}, "
25+
f"tech_fail_result_code={self.tech_fail_result_code}, "
26+
f"below_range_result_code={self.below_range_result_code}, "
27+
f"above_range_result_code={self.above_range_result_code}]"
28+
)
29+
30+
@staticmethod
31+
def from_dataframe_row(row: pd.Series) -> "Analyser":
32+
"""
33+
Creates an Analyser object from a pandas DataFrame row containing analyser query results.
34+
35+
Args:
36+
row (pd.Series): A row from a pandas DataFrame with columns:
37+
- tk_analyser_id
38+
- analyser_code
39+
- hub_id
40+
- tk_analyser_type_id
41+
42+
Returns:
43+
Analyser: The constructed Analyser object.
44+
"""
45+
return Analyser(
46+
analyser_id=row.get("tk_analyser_id"),
47+
analyser_code=row.get("analyser_code"),
48+
hub_id=row.get("hub_id"),
49+
analyser_type_id=row.get("tk_analyser_type_id"),
50+
)
Lines changed: 66 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,66 @@
1-
from enum import Enum
2-
from typing import Optional, Dict
3-
4-
5-
class AnalyserResultCodeType(Enum):
6-
"""
7-
Enum for analyser result code types, mapped to valid value IDs and descriptions.
8-
"""
9-
10-
ABOVE_DILUTION_RANGE = (309030, "Above dilution range")
11-
BELOW_MEASURING_RANGE = (309028, "Below measuring range")
12-
SPOILT = (309026, "Spoilt")
13-
TECHNICAL_FAIL = (309027, "Technical Fail")
14-
15-
def __init__(self, valid_value_id: int, description: str) -> None:
16-
self._valid_value_id = valid_value_id
17-
self._description = description
18-
19-
@property
20-
def valid_value_id(self) -> int:
21-
"""
22-
Returns the valid value ID for the analyser result code type.
23-
"""
24-
return self._valid_value_id
25-
26-
@property
27-
def description(self) -> str:
28-
"""
29-
Returns the description for the analyser result code type.
30-
"""
31-
return self._description
32-
33-
@classmethod
34-
def by_description(cls, description: str) -> Optional["AnalyserResultCodeType"]:
35-
"""
36-
Returns the enum member matching the given description (case-sensitive).
37-
"""
38-
for member in cls:
39-
if member.description == description:
40-
return member
41-
return None
42-
43-
@classmethod
44-
def by_description_case_insensitive(
45-
cls, description: str
46-
) -> Optional["AnalyserResultCodeType"]:
47-
"""
48-
Returns the enum member matching the given description (case-insensitive).
49-
"""
50-
desc_lower = description.lower()
51-
for member in cls:
52-
if member.description.lower() == desc_lower:
53-
return member
54-
return None
55-
56-
@classmethod
57-
def by_valid_value_id(
58-
cls, valid_value_id: int
59-
) -> Optional["AnalyserResultCodeType"]:
60-
"""
61-
Returns the enum member matching the given valid value ID.
62-
"""
63-
for member in cls:
64-
if member.valid_value_id == valid_value_id:
65-
return member
66-
return None
1+
from enum import Enum
2+
from typing import Optional, Dict
3+
4+
5+
class AnalyserResultCodeType(Enum):
6+
"""
7+
Enum for analyser result code types, mapped to valid value IDs and descriptions.
8+
"""
9+
10+
ABOVE_DILUTION_RANGE = (309030, "Above dilution range")
11+
BELOW_MEASURING_RANGE = (309028, "Below measuring range")
12+
SPOILT = (309026, "Spoilt")
13+
TECHNICAL_FAIL = (309027, "Technical Fail")
14+
15+
def __init__(self, valid_value_id: int, description: str) -> None:
16+
self._valid_value_id = valid_value_id
17+
self._description = description
18+
19+
@property
20+
def valid_value_id(self) -> int:
21+
"""
22+
Returns the valid value ID for the analyser result code type.
23+
"""
24+
return self._valid_value_id
25+
26+
@property
27+
def description(self) -> str:
28+
"""
29+
Returns the description for the analyser result code type.
30+
"""
31+
return self._description
32+
33+
@classmethod
34+
def by_description(cls, description: str) -> Optional["AnalyserResultCodeType"]:
35+
"""
36+
Returns the enum member matching the given description (case-sensitive).
37+
"""
38+
for member in cls:
39+
if member.description == description:
40+
return member
41+
return None
42+
43+
@classmethod
44+
def by_description_case_insensitive(
45+
cls, description: str
46+
) -> Optional["AnalyserResultCodeType"]:
47+
"""
48+
Returns the enum member matching the given description (case-insensitive).
49+
"""
50+
desc_lower = description.lower()
51+
for member in cls:
52+
if member.description.lower() == desc_lower:
53+
return member
54+
return None
55+
56+
@classmethod
57+
def by_valid_value_id(
58+
cls, valid_value_id: int
59+
) -> Optional["AnalyserResultCodeType"]:
60+
"""
61+
Returns the enum member matching the given valid value ID.
62+
"""
63+
for member in cls:
64+
if member.valid_value_id == valid_value_id:
65+
return member
66+
return None

0 commit comments

Comments
 (0)