brynq-sdk-bob 2.6.6__tar.gz → 2.6.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/PKG-INFO +1 -1
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/people.py +27 -1
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob.egg-info/PKG-INFO +1 -1
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/setup.py +1 -1
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/__init__.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/bank.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/company.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/custom_tables.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/documents.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/employment.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/named_lists.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/payments.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/payroll_history.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/salaries.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/schemas/__init__.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/schemas/bank.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/schemas/custom_tables.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/schemas/employment.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/schemas/named_lists.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/schemas/payments.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/schemas/payroll_history.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/schemas/people.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/schemas/salary.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/schemas/timeoff.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/schemas/work.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/timeoff.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob/work.py +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob.egg-info/SOURCES.txt +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob.egg-info/dependency_links.txt +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob.egg-info/not-zip-safe +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob.egg-info/requires.txt +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/brynq_sdk_bob.egg-info/top_level.txt +0 -0
- {brynq_sdk_bob-2.6.6 → brynq_sdk_bob-2.6.7}/setup.cfg +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import pandas as pd
|
|
2
|
+
import re
|
|
2
3
|
from typing import Optional
|
|
3
4
|
from brynq_sdk_functions import Functions
|
|
4
5
|
from brynq_sdk_functions import BrynQPanderaDataFrameModel
|
|
@@ -21,6 +22,7 @@ class People:
|
|
|
21
22
|
self.schema = PeopleSchema
|
|
22
23
|
|
|
23
24
|
|
|
25
|
+
|
|
24
26
|
# Build API fields using column metadata if present (api_field), otherwise use the column (alias) name
|
|
25
27
|
def __build_api_fields(self, schema_model: BrynQPanderaDataFrameModel) -> list[str]:
|
|
26
28
|
schema = schema_model.to_schema()
|
|
@@ -74,6 +76,30 @@ class People:
|
|
|
74
76
|
|
|
75
77
|
|
|
76
78
|
valid_people, invalid_people = Functions.validate_data(df=valid_people, schema=PeopleSchema, debug=True)
|
|
77
|
-
valid_people = valid_people.loc[:, ~valid_people.columns.str.contains(r'\.value|_get')]
|
|
78
79
|
|
|
80
|
+
# For columns ending with .value.value, use fillna to fill the corresponding base column since that's not done automatically
|
|
81
|
+
def _normalize_key(key: str) -> str:
|
|
82
|
+
# Build mapping from custom schema alias (API path) to the real column name used after validation
|
|
83
|
+
key = key.lstrip('.')
|
|
84
|
+
key = key.replace('/', '.')
|
|
85
|
+
key = key.replace('.', '_')
|
|
86
|
+
key = re.sub(r'(?<!^)([A-Z])', r'_\1', key).lower()
|
|
87
|
+
return key
|
|
88
|
+
|
|
89
|
+
alias_to_real: dict = {}
|
|
90
|
+
if schema_custom_fields is not None:
|
|
91
|
+
alias_map = getattr(schema_custom_fields, "_alias_map", {}) # real_name -> alias
|
|
92
|
+
alias_to_real = {_normalize_key(alias): real for real, alias in alias_map.items()}
|
|
93
|
+
|
|
94
|
+
for col in valid_people.columns:
|
|
95
|
+
if col.endswith('value.value'):
|
|
96
|
+
# Compute the base alias (remove suffix), normalise, and resolve to real column name via custom schema
|
|
97
|
+
base_alias = col[:-12]
|
|
98
|
+
target_key = _normalize_key(base_alias)
|
|
99
|
+
target_col = alias_to_real.get(target_key, target_key)
|
|
100
|
+
if target_col in valid_people.columns:
|
|
101
|
+
valid_people[target_col] = valid_people[target_col].fillna(valid_people[col])
|
|
102
|
+
|
|
103
|
+
# Remove columns that contain '.value' or '_get'
|
|
104
|
+
valid_people = valid_people.loc[:, ~valid_people.columns.str.contains(r'\.value|_get')]
|
|
79
105
|
return valid_people, pd.concat([invalid_people, invalid_people_custom])
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|