brynq-sdk-bob 2.2.0__tar.gz → 2.3.0__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 (31) hide show
  1. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/PKG-INFO +1 -1
  2. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/people.py +1 -0
  3. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/timeoff.py +18 -0
  4. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/timeoff.py +33 -1
  5. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob.egg-info/PKG-INFO +1 -1
  6. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/setup.py +1 -1
  7. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/__init__.py +0 -0
  8. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/bank.py +0 -0
  9. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/company.py +0 -0
  10. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/custom_tables.py +0 -0
  11. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/documents.py +0 -0
  12. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/employment.py +0 -0
  13. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/named_lists.py +0 -0
  14. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/payments.py +0 -0
  15. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/people.py +0 -0
  16. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/salaries.py +0 -0
  17. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/__init__.py +0 -0
  18. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/bank.py +0 -0
  19. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/custom_tables.py +0 -0
  20. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/employment.py +0 -0
  21. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/named_lists.py +0 -0
  22. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/payments.py +0 -0
  23. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/salary.py +0 -0
  24. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/schemas/work.py +0 -0
  25. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob/work.py +0 -0
  26. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob.egg-info/SOURCES.txt +0 -0
  27. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob.egg-info/dependency_links.txt +0 -0
  28. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob.egg-info/not-zip-safe +0 -0
  29. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob.egg-info/requires.txt +0 -0
  30. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/brynq_sdk_bob.egg-info/top_level.txt +0 -0
  31. {brynq_sdk_bob-2.2.0 → brynq_sdk_bob-2.3.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.0
2
2
  Name: brynq_sdk_bob
3
- Version: 2.2.0
3
+ Version: 2.3.0
4
4
  Summary: Bob wrapper from BrynQ
5
5
  Home-page: UNKNOWN
6
6
  Author: BrynQ
@@ -68,6 +68,7 @@ class PeopleSchema(BrynQPanderaDataFrameModel):
68
68
  work_years_of_service: Optional[Series[Float]] = pa.Field(coerce=True, nullable=True, description="Work Years of Service", alias="work.yearsOfService")
69
69
  payroll_employment_contract: Optional[Series[String]] = pa.Field(coerce=True, nullable=True, description="Contract Type", alias="payroll.employment.contract")
70
70
  payroll_employment_type: Optional[Series[String]] = pa.Field(coerce=True, nullable=True, description="Employment Type", alias="payroll.employment.type")
71
+ tax_id: Optional[Series[String]] = pa.Field(coerce=True, nullable=True, description="Tax ID", alias="payroll.taxCode")
71
72
 
72
73
  about_food_preferences: Optional[Series[object]] = pa.Field(coerce=True, check_name=check_list, description="About Food Preferences", alias="about.foodPreferences")
73
74
  # about_social_data_linkedin: Series[String] = pa.Field(coerce=True, nullable=True)
@@ -27,3 +27,21 @@ class TimeOffSchema(BrynQPanderaDataFrameModel):
27
27
 
28
28
  class Config:
29
29
  coerce = True
30
+
31
+
32
+ class TimeOffBalanceSchema(BrynQPanderaDataFrameModel):
33
+ employee_id: Series[String] = pa.Field(coerce=True, description="Employee ID", alias="employeeId")
34
+ policy_type_name: Series[String] = pa.Field(coerce=True, description="Policy Type Name", alias="policyTypeName")
35
+ policy_type_display_name: Series[String] = pa.Field(coerce=True, description="Policy Type Display Name", alias="policyTypeDisplayName")
36
+ balance: Series[Float] = pa.Field(coerce=True, description="Current Balance", alias="balance")
37
+ used: Series[Float] = pa.Field(coerce=True, description="Used Balance", alias="used")
38
+ available: Series[Float] = pa.Field(coerce=True, description="Available Balance", alias="available")
39
+ approved_requests: Series[Float] = pa.Field(coerce=True, description="Approved Requests", alias="approvedRequests")
40
+ pending_requests: Series[Float] = pa.Field(coerce=True, description="Pending Requests", alias="pendingRequests")
41
+ as_of_date: Series[String] = pa.Field(coerce=True, description="As of Date", alias="asOfDate")
42
+ accrual_start_date: Series[String] = pa.Field(nullable=True, coerce=True, description="Accrual Start Date", alias="accrualStartDate")
43
+ expiry_date: Series[String] = pa.Field(nullable=True, coerce=True, description="Expiry Date", alias="expiryDate")
44
+ duration_unit: Series[String] = pa.Field(coerce=True, description="Duration Unit", alias="durationUnit")
45
+
46
+ class Config:
47
+ coerce = True
@@ -1,7 +1,7 @@
1
1
  from datetime import datetime, timezone, timedelta
2
2
  import pandas as pd
3
3
  from brynq_sdk_functions import Functions
4
- from .schemas.timeoff import TimeOffSchema
4
+ from .schemas.timeoff import TimeOffSchema, TimeOffBalanceSchema
5
5
  import warnings
6
6
 
7
7
 
@@ -9,6 +9,7 @@ class TimeOff:
9
9
  def __init__(self, bob):
10
10
  self.bob = bob
11
11
  self.schema = TimeOffSchema
12
+ self.balance_schema = TimeOffBalanceSchema
12
13
 
13
14
  def get(self, since: datetime = None) -> tuple[pd.DataFrame, pd.DataFrame]:
14
15
  """
@@ -49,3 +50,34 @@ class TimeOff:
49
50
  valid_timeoff, invalid_timeoff = Functions.validate_data(df=df, schema=self.schema, debug=True)
50
51
 
51
52
  return valid_timeoff, invalid_timeoff
53
+
54
+ def get_balance(self, employee_id: str, policy_type: str = None, as_of_date: str = None) -> tuple[pd.DataFrame, pd.DataFrame]:
55
+ """
56
+ Get time off balance for a specific employee
57
+
58
+ Args:
59
+ employee_id (str): The ID of the employee
60
+ policy_type (str, optional): The policy type to filter by. Defaults to None.
61
+ as_of_date (str, optional): The date to get balance as of (YYYY-MM-DD format). Defaults to None.
62
+
63
+ Returns:
64
+ tuple[pd.DataFrame, pd.DataFrame]: A tuple of (valid_balance, invalid_balance) as pandas DataFrames
65
+ """
66
+ params = {}
67
+ if policy_type:
68
+ params['policyType'] = policy_type
69
+ if as_of_date:
70
+ params['asOfDate'] = as_of_date
71
+
72
+ resp = self.bob.session.get(
73
+ url=f"{self.bob.base_url}timeoff/employees/{employee_id}/balance",
74
+ params=params,
75
+ timeout=self.bob.timeout
76
+ )
77
+ resp.raise_for_status()
78
+ data = resp.json()
79
+ df = pd.DataFrame(data)
80
+
81
+ valid_balance, invalid_balance = Functions.validate_data(df=df, schema=self.balance_schema, debug=True)
82
+
83
+ return valid_balance, invalid_balance
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.0
2
2
  Name: brynq-sdk-bob
3
- Version: 2.2.0
3
+ Version: 2.3.0
4
4
  Summary: Bob wrapper from BrynQ
5
5
  Home-page: UNKNOWN
6
6
  Author: 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.2.0',
5
+ version='2.3.0',
6
6
  description='Bob wrapper from BrynQ',
7
7
  long_description='Bob wrapper from BrynQ',
8
8
  author='BrynQ',
File without changes