brynq-sdk-bob 2.9.1__tar.gz → 2.9.3__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 (34) hide show
  1. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/PKG-INFO +1 -1
  2. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/payments.py +26 -10
  3. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/schemas/work.py +12 -8
  4. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob.egg-info/PKG-INFO +1 -1
  5. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/setup.py +2 -2
  6. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/__init__.py +0 -0
  7. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/bank.py +0 -0
  8. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/company.py +0 -0
  9. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/custom_tables.py +0 -0
  10. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/documents.py +0 -0
  11. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/employment.py +0 -0
  12. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/named_lists.py +0 -0
  13. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/payroll_history.py +0 -0
  14. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/people.py +0 -0
  15. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/reports.py +0 -0
  16. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/salaries.py +0 -0
  17. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/schemas/__init__.py +0 -0
  18. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/schemas/bank.py +0 -0
  19. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/schemas/custom_tables.py +0 -0
  20. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/schemas/employment.py +0 -0
  21. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/schemas/named_lists.py +0 -0
  22. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/schemas/payments.py +0 -0
  23. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/schemas/payroll_history.py +0 -0
  24. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/schemas/people.py +0 -0
  25. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/schemas/salary.py +0 -0
  26. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/schemas/timeoff.py +0 -0
  27. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/timeoff.py +0 -0
  28. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob/work.py +0 -0
  29. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob.egg-info/SOURCES.txt +0 -0
  30. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob.egg-info/dependency_links.txt +0 -0
  31. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob.egg-info/not-zip-safe +0 -0
  32. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob.egg-info/requires.txt +0 -0
  33. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/brynq_sdk_bob.egg-info/top_level.txt +0 -0
  34. {brynq_sdk_bob-2.9.1 → brynq_sdk_bob-2.9.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: brynq_sdk_bob
3
- Version: 2.9.1
3
+ Version: 2.9.3
4
4
  Summary: Bob wrapper from BrynQ
5
5
  Author: BrynQ
6
6
  Author-email: support@brynq.com
@@ -1,7 +1,11 @@
1
+ import time
2
+ from typing import List, Optional
3
+
1
4
  import pandas as pd
2
- from typing import Optional, List
5
+
3
6
  from brynq_sdk_functions import Functions
4
- from .schemas.payments import VariablePaymentSchema, ActualPaymentsSchema
7
+
8
+ from .schemas.payments import ActualPaymentsSchema, VariablePaymentSchema
5
9
 
6
10
 
7
11
  class Payments:
@@ -10,18 +14,30 @@ class Payments:
10
14
  self.schema = VariablePaymentSchema
11
15
 
12
16
  def get(self, person_ids: List[str]) -> (pd.DataFrame, pd.DataFrame):
13
- df = pd.DataFrame()
17
+ records = []
18
+
14
19
  for person_id in person_ids:
15
- resp = self.bob.session.get(url=f"{self.bob.base_url}people/{person_id}/variable", timeout=self.bob.timeout)
20
+ # Throttle requests to respect API rate limits
21
+ time.sleep(0.2)
22
+
23
+ resp = self.bob.session.get(
24
+ url=f"{self.bob.base_url}people/{person_id}/variable",
25
+ timeout=self.bob.timeout
26
+ )
16
27
  resp.raise_for_status()
28
+
17
29
  data = resp.json()
18
- df = pd.concat([df, pd.json_normalize(
19
- data,
20
- record_path='values'
21
- )])
22
- df['employee_id'] = person_id
23
- df = df.reset_index(drop=True)
30
+
31
+ # Normalize nested json and assign ID before appending to list
32
+ df_temp = pd.json_normalize(data, record_path='values')
33
+ df_temp['employee_id'] = person_id
34
+ records.append(df_temp)
35
+
36
+ # Concatenate once to improve performance
37
+ df = pd.concat(records, ignore_index=True) if records else pd.DataFrame()
38
+
24
39
  valid_payments, invalid_payments = Functions.validate_data(df=df, schema=self.schema, debug=True)
40
+
25
41
  return valid_payments, invalid_payments
26
42
 
27
43
  def get_actual_payments(
@@ -1,9 +1,13 @@
1
+ from datetime import datetime
2
+ from typing import Optional
3
+
4
+ import pandas as pd
1
5
  import pandera as pa
2
6
  from pandera.typing import Series
3
- import pandas as pd
4
- from datetime import datetime
7
+
5
8
  from brynq_sdk_functions import BrynQPanderaDataFrameModel
6
9
 
10
+
7
11
  class WorkSchema(BrynQPanderaDataFrameModel):
8
12
  can_be_deleted: Series[pa.Bool] = pa.Field(coerce=True, description="Can Be Deleted", alias="canBeDeleted")
9
13
  work_change_type: Series[str] = pa.Field(coerce=True, description="Work Change Type", alias="workChangeType")
@@ -21,12 +25,12 @@ class WorkSchema(BrynQPanderaDataFrameModel):
21
25
  change_reason: Series[str] = pa.Field(coerce=True, nullable=True, description="Change Reason", alias="change.reason")
22
26
  change_changed_by: Series[str] = pa.Field(coerce=True, nullable=True, description="Change Changed By", alias="change.changedBy")
23
27
  change_changed_by_id: Series[str] = pa.Field(coerce=True, nullable=True, description="Change Changed By ID", alias="change.changedById")
24
- reports_to_id: Series[str] = pa.Field(coerce=True, nullable=True, description="Reports To ID", alias="reportsTo.id")
25
- reports_to_first_name: Series[str] = pa.Field(coerce=True, nullable=True, description="Reports To First Name", alias="reportsTo.firstName")
26
- reports_to_surname: Series[str] = pa.Field(coerce=True, nullable=True, description="Reports To Surname", alias="reportsTo.surname")
27
- reports_to_email: Series[str] = pa.Field(coerce=True, nullable=True, description="Reports To Email", alias="reportsTo.email")
28
- reports_to_display_name: Series[str] = pa.Field(coerce=True, nullable=True, description="Reports To Display Name", alias="reportsTo.displayName")
29
- reports_to: Series[pd.Int64Dtype] = pa.Field(coerce=True, nullable=True, description="Reports To", alias="reportsTo")
28
+ reports_to_id: Optional[Series[str]] = pa.Field(coerce=True, nullable=True, description="Reports To ID", alias="reportsTo.id")
29
+ reports_to_first_name: Optional[Series[str]] = pa.Field(coerce=True, nullable=True, description="Reports To First Name", alias="reportsTo.firstName")
30
+ reports_to_surname: Optional[Series[str]] = pa.Field(coerce=True, nullable=True, description="Reports To Surname", alias="reportsTo.surname")
31
+ reports_to_email: Optional[Series[str]] = pa.Field(coerce=True, nullable=True, description="Reports To Email", alias="reportsTo.email")
32
+ reports_to_display_name: Optional[Series[str]] = pa.Field(coerce=True, nullable=True, description="Reports To Display Name", alias="reportsTo.displayName")
33
+ reports_to: Optional[Series[pd.Int64Dtype]] = pa.Field(coerce=True, nullable=True, description="Reports To", alias="reportsTo")
30
34
  employee_id: Series[str] = pa.Field(coerce=True, description="Employee ID", alias="employeeId")
31
35
 
32
36
  class Config:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: brynq_sdk_bob
3
- Version: 2.9.1
3
+ Version: 2.9.3
4
4
  Summary: Bob wrapper from BrynQ
5
5
  Author: BrynQ
6
6
  Author-email: support@brynq.com
@@ -1,8 +1,8 @@
1
- from setuptools import setup, find_namespace_packages
1
+ from setuptools import find_namespace_packages, setup
2
2
 
3
3
  setup(
4
4
  name='brynq_sdk_bob',
5
- version='2.9.1',
5
+ version='2.9.3',
6
6
  description='Bob wrapper from BrynQ',
7
7
  long_description='Bob wrapper from BrynQ',
8
8
  author='BrynQ',
File without changes