brynq-sdk-bob 2.8.1__tar.gz → 2.8.2.dev0__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.
Files changed (36) hide show
  1. brynq_sdk_bob-2.8.2.dev0/PKG-INFO +17 -0
  2. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/people.py +25 -9
  3. brynq_sdk_bob-2.8.2.dev0/brynq_sdk_bob.egg-info/PKG-INFO +17 -0
  4. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/setup.py +1 -1
  5. brynq_sdk_bob-2.8.1/PKG-INFO +0 -10
  6. brynq_sdk_bob-2.8.1/brynq_sdk_bob.egg-info/PKG-INFO +0 -10
  7. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/__init__.py +0 -0
  8. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/bank.py +0 -0
  9. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/company.py +0 -0
  10. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/custom_tables.py +0 -0
  11. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/documents.py +0 -0
  12. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/employment.py +0 -0
  13. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/named_lists.py +0 -0
  14. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/payments.py +0 -0
  15. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/payroll_history.py +0 -0
  16. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/reports.py +0 -0
  17. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/salaries.py +0 -0
  18. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/schemas/__init__.py +0 -0
  19. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/schemas/bank.py +0 -0
  20. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/schemas/custom_tables.py +0 -0
  21. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/schemas/employment.py +0 -0
  22. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/schemas/named_lists.py +0 -0
  23. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/schemas/payments.py +0 -0
  24. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/schemas/payroll_history.py +0 -0
  25. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/schemas/people.py +0 -0
  26. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/schemas/salary.py +0 -0
  27. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/schemas/timeoff.py +0 -0
  28. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/schemas/work.py +0 -0
  29. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/timeoff.py +0 -0
  30. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob/work.py +0 -0
  31. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob.egg-info/SOURCES.txt +0 -0
  32. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob.egg-info/dependency_links.txt +0 -0
  33. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob.egg-info/not-zip-safe +0 -0
  34. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob.egg-info/requires.txt +0 -0
  35. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/brynq_sdk_bob.egg-info/top_level.txt +0 -0
  36. {brynq_sdk_bob-2.8.1 → brynq_sdk_bob-2.8.2.dev0}/setup.cfg +0 -0
@@ -0,0 +1,17 @@
1
+ Metadata-Version: 2.4
2
+ Name: brynq_sdk_bob
3
+ Version: 2.8.2.dev0
4
+ Summary: Bob wrapper from BrynQ
5
+ Author: BrynQ
6
+ Author-email: support@brynq.com
7
+ License: BrynQ License
8
+ Requires-Dist: brynq-sdk-brynq<5,>=4
9
+ Requires-Dist: pandas<3.0.0,>=2.2.0
10
+ Dynamic: author
11
+ Dynamic: author-email
12
+ Dynamic: description
13
+ Dynamic: license
14
+ Dynamic: requires-dist
15
+ Dynamic: summary
16
+
17
+ Bob wrapper from BrynQ
@@ -51,15 +51,31 @@ class People:
51
51
  # Normalize separators in incoming data: convert '/' to '.' to match schema aliases
52
52
  df.columns = df.columns.str.replace('/', '.', regex=False)
53
53
 
54
- # format custom columns in the same way as they were in the schema/request body. (e.g. '.table.custom.123123123.value' -> 'table.custom.123123123')
55
- custom_cols = [col for col in df.columns if "custom" in str(col)]
56
- prefix = r'\.'
57
- suffix = r'\.value'
58
- df = df.rename(
59
- columns={
60
- col: col.removeprefix(prefix).removesuffix(suffix)
61
- for col in custom_cols
62
- } )
54
+
55
+ # Format custom columns in the same way as they were in the schema/request body.
56
+ # (e.g. 'identification.custom.field_1747318003716.value' -> 'identification.custom.field_1747318003716')
57
+ # But only if the target column doesn't already exist or is empty, to prioritize the cleaner name if it has value
58
+ custom_cols = [col for col in df.columns if "custom" in str(col) and str(col).endswith('.value')]
59
+ for col in custom_cols:
60
+ new_col = col.removesuffix('.value')
61
+ # If the new column doesn't exist, rename it directly
62
+ if new_col not in df.columns:
63
+ df = df.rename(columns={col: new_col})
64
+ # If it exists but is all empty/NA, and the .value column has data, overwrite it
65
+ elif df[new_col].isna().all() and not df[col].isna().all():
66
+ df[new_col] = df[col]
67
+ df = df.drop(columns=[col])
68
+ # If both exist and have data, prefer the existing one (assuming cleaner format) but drop the .value duplicate if redundant
69
+ else:
70
+ # If both exist, we might want to keep the existing one as is, and just drop the .value one to avoid confusion
71
+ # Or check if they are identical and drop one
72
+ if df[new_col].equals(df[col]):
73
+ df = df.drop(columns=[col])
74
+ else:
75
+ # If they differ, we might want to keep the one with more data or default to existing behavior
76
+ # For now, let's assume we trust the existing column if it has data.
77
+ # Just drop the .value column if we aren't using it to overwrite
78
+ pass
63
79
 
64
80
 
65
81
  # A lot of fields from Bob are returned with only ID's. Those fields should be mapped to names. Therefore, we need to get the mapping from the named-lists endpoint.
@@ -0,0 +1,17 @@
1
+ Metadata-Version: 2.4
2
+ Name: brynq_sdk_bob
3
+ Version: 2.8.2.dev0
4
+ Summary: Bob wrapper from BrynQ
5
+ Author: BrynQ
6
+ Author-email: support@brynq.com
7
+ License: BrynQ License
8
+ Requires-Dist: brynq-sdk-brynq<5,>=4
9
+ Requires-Dist: pandas<3.0.0,>=2.2.0
10
+ Dynamic: author
11
+ Dynamic: author-email
12
+ Dynamic: description
13
+ Dynamic: license
14
+ Dynamic: requires-dist
15
+ Dynamic: summary
16
+
17
+ Bob wrapper from BrynQ
@@ -2,7 +2,7 @@ from setuptools import setup, find_namespace_packages
2
2
 
3
3
  setup(
4
4
  name='brynq_sdk_bob',
5
- version='2.8.1',
5
+ version='2.8.2-dev',
6
6
  description='Bob wrapper from BrynQ',
7
7
  long_description='Bob wrapper from BrynQ',
8
8
  author='BrynQ',
@@ -1,10 +0,0 @@
1
- Metadata-Version: 1.0
2
- Name: brynq_sdk_bob
3
- Version: 2.8.1
4
- Summary: Bob wrapper from BrynQ
5
- Home-page: UNKNOWN
6
- Author: BrynQ
7
- Author-email: support@brynq.com
8
- License: BrynQ License
9
- Description: Bob wrapper from BrynQ
10
- Platform: UNKNOWN
@@ -1,10 +0,0 @@
1
- Metadata-Version: 1.0
2
- Name: brynq-sdk-bob
3
- Version: 2.8.1
4
- Summary: Bob wrapper from BrynQ
5
- Home-page: UNKNOWN
6
- Author: BrynQ
7
- Author-email: support@brynq.com
8
- License: BrynQ License
9
- Description: Bob wrapper from BrynQ
10
- Platform: UNKNOWN