brynq-sdk-alight 1.0.0.dev0__py3-none-any.whl

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 (44) hide show
  1. brynq_sdk_alight/__init__.py +1058 -0
  2. brynq_sdk_alight/address.py +72 -0
  3. brynq_sdk_alight/archive/flat_wrapper.py +139 -0
  4. brynq_sdk_alight/archive/hrxml_generator.py +280 -0
  5. brynq_sdk_alight/archive/managers.py +132 -0
  6. brynq_sdk_alight/archive/managers_generic.py +114 -0
  7. brynq_sdk_alight/archive/managers_old_complex.py +294 -0
  8. brynq_sdk_alight/archive/managers_simple.py +229 -0
  9. brynq_sdk_alight/employee.py +81 -0
  10. brynq_sdk_alight/job.py +89 -0
  11. brynq_sdk_alight/leave.py +97 -0
  12. brynq_sdk_alight/pay_elements.py +97 -0
  13. brynq_sdk_alight/salary.py +89 -0
  14. brynq_sdk_alight/schemas/__init__.py +26 -0
  15. brynq_sdk_alight/schemas/absence.py +83 -0
  16. brynq_sdk_alight/schemas/address.py +113 -0
  17. brynq_sdk_alight/schemas/employee.py +656 -0
  18. brynq_sdk_alight/schemas/generated_envelope_xsd_schema/__init__.py +38683 -0
  19. brynq_sdk_alight/schemas/generated_envelope_xsd_schema/process_pay_serv_emp.py +622264 -0
  20. brynq_sdk_alight/schemas/generated_xsd_schemas/__init__.py +10965 -0
  21. brynq_sdk_alight/schemas/generated_xsd_schemas/csec_person.py +39808 -0
  22. brynq_sdk_alight/schemas/generated_xsd_schemas/hrxml_indicative_data.py +90318 -0
  23. brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_bod.py +33869 -0
  24. brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_list_currency_code_iso_7_04.py +365 -0
  25. brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_list_language_code_iso_7_04.py +16 -0
  26. brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_list_mimemedia_type_code_iana_7_04.py +16 -0
  27. brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_list_unit_code_unece_7_04.py +14 -0
  28. brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_lists.py +535 -0
  29. brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_qualified_data_types.py +84 -0
  30. brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_unqualified_data_types.py +1449 -0
  31. brynq_sdk_alight/schemas/job.py +145 -0
  32. brynq_sdk_alight/schemas/leave.py +58 -0
  33. brynq_sdk_alight/schemas/payments.py +207 -0
  34. brynq_sdk_alight/schemas/salary.py +67 -0
  35. brynq_sdk_alight/schemas/termination.py +48 -0
  36. brynq_sdk_alight/schemas/timequota.py +66 -0
  37. brynq_sdk_alight/schemas/utils.py +452 -0
  38. brynq_sdk_alight/termination.py +103 -0
  39. brynq_sdk_alight/time_elements.py +121 -0
  40. brynq_sdk_alight/time_quotas.py +114 -0
  41. brynq_sdk_alight-1.0.0.dev0.dist-info/METADATA +20 -0
  42. brynq_sdk_alight-1.0.0.dev0.dist-info/RECORD +44 -0
  43. brynq_sdk_alight-1.0.0.dev0.dist-info/WHEEL +5 -0
  44. brynq_sdk_alight-1.0.0.dev0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,114 @@
1
+ from typing import Any, Dict, List, Optional, Union
2
+
3
+ from .schemas.timequota import TimeQuota, TimeQuotas
4
+ from .schemas.payments import PayServEmpExtensionCreate
5
+ from .schemas import EmployeeCreate as EmployeeModel
6
+
7
+
8
+ class TimeQuotas:
9
+ """
10
+ High-level Time Quotas API. Sends TimeQuotas via PayServEmpExtension.
11
+
12
+ Usage:
13
+ alight = Alight()
14
+ xml = alight.time_quotas.create(time_quotas=[...], person_id="35561", employee_id="35561ZZGB")
15
+ xml = alight.time_quotas.update(time_quotas=[...], person_id="35561", employee_id="35561ZZGB")
16
+ """
17
+
18
+ def __init__(self, client: Any):
19
+ self._client = client
20
+
21
+ def _build_extension_with_time_quotas(self, time_quotas: List[Union[TimeQuota, Dict[str, Any]]]) -> Dict[str, Any]:
22
+ """
23
+ Wrap raw time quota dictionaries into the schema-backed extension payload.
24
+
25
+ Running through `TimeQuota` and `TimeQuotas` ensures aliases (like unit/identifier wrappers)
26
+ are applied before the data touches the XSD validation layer.
27
+
28
+ Example:
29
+ >>> self._build_extension_with_time_quotas(
30
+ ... [{"quota_code": "VAC", "balance": "40", "valid_from": "2024-01-01"}]
31
+ ... )
32
+ """
33
+ quota_models = [q if isinstance(q, TimeQuota) else TimeQuota(**q) for q in time_quotas]
34
+ wrapper = TimeQuotas(time_quotas=quota_models)
35
+ ext = PayServEmpExtensionCreate(time_quotas=wrapper) # type: ignore[arg-type]
36
+ return ext.to_nested_dict()
37
+
38
+ def create(
39
+ self,
40
+ *,
41
+ time_quotas: List[Union[TimeQuota, Dict[str, Any]]],
42
+ person_id: str,
43
+ employee_id: str,
44
+ logical_id: Optional[str] = None,
45
+ envelope_options: Optional[Dict[str, Any]] = None,
46
+ pretty_print: bool = True,
47
+ ) -> str:
48
+ """
49
+ Generate an ADD envelope that pushes quota balances through the extension block.
50
+
51
+ Example:
52
+ >>> alight.time_quotas.create(
53
+ ... time_quotas=[{"quota_code": "VAC", "balance": "40"}],
54
+ ... person_id="35561",
55
+ ... employee_id="35561ZZGB",
56
+ ... )
57
+
58
+ Passing quota dictionaries directly keeps the calling code small—the helper expands wrappers like
59
+ `quota_code.value` and runs schema validation before serializing to XML.
60
+ """
61
+ extension_data = self._build_extension_with_time_quotas(time_quotas)
62
+
63
+ employee_model = EmployeeModel(
64
+ person_id=person_id,
65
+ employee_id=employee_id,
66
+ )
67
+
68
+ return self._client.generate_employee_xml(
69
+ employee=employee_model,
70
+ action_code="ADD",
71
+ logical_id=logical_id,
72
+ extension_data=extension_data,
73
+ envelope_options=envelope_options,
74
+ pretty_print=pretty_print,
75
+ )
76
+
77
+ def update(
78
+ self,
79
+ *,
80
+ time_quotas: List[Union[TimeQuota, Dict[str, Any]]],
81
+ person_id: str,
82
+ employee_id: str,
83
+ logical_id: Optional[str] = None,
84
+ envelope_options: Optional[Dict[str, Any]] = None,
85
+ pretty_print: bool = True,
86
+ ) -> str:
87
+ """
88
+ Generate a CHANGE envelope for quota adjustments using the same normalization flow as `create`.
89
+
90
+ Keeps the employee identifiers consistent with the flat dictionary interface while ensuring the
91
+ extension payload remains schema-valid.
92
+
93
+ Example:
94
+ >>> alight.time_quotas.update(
95
+ ... time_quotas=[{"quota_code": "VAC", "balance": "32"}],
96
+ ... person_id="35561",
97
+ ... employee_id="35561ZZGB",
98
+ ... )
99
+ """
100
+ extension_data = self._build_extension_with_time_quotas(time_quotas)
101
+
102
+ employee_model = EmployeeModel(
103
+ person_id=person_id,
104
+ employee_id=employee_id,
105
+ )
106
+
107
+ return self._client.generate_employee_xml(
108
+ employee=employee_model,
109
+ action_code="CHANGE",
110
+ logical_id=logical_id,
111
+ extension_data=extension_data,
112
+ envelope_options=envelope_options,
113
+ pretty_print=pretty_print,
114
+ )
@@ -0,0 +1,20 @@
1
+ Metadata-Version: 2.4
2
+ Name: brynq_sdk_alight
3
+ Version: 1.0.0.dev0
4
+ Summary: Alight SDK for the BrynQ.com platform
5
+ Author: BrynQ
6
+ Author-email: support@brynq.com
7
+ License: BrynQ License
8
+ Requires-Dist: requests<=3,>=2
9
+ Requires-Dist: xsdata>=25.0.0
10
+ Requires-Dist: pydantic>=2.0.0
11
+ Requires-Dist: pydantic-xml>=2.0.0
12
+ Requires-Dist: xsdata-pydantic>=24.0.0
13
+ Dynamic: author
14
+ Dynamic: author-email
15
+ Dynamic: description
16
+ Dynamic: license
17
+ Dynamic: requires-dist
18
+ Dynamic: summary
19
+
20
+ Alight SDK for the BrynQ.com platform
@@ -0,0 +1,44 @@
1
+ brynq_sdk_alight/__init__.py,sha256=Xtxcewz98rTAQww2NdMIZh9zUwvdwsFmyLgcxOKCiow,45941
2
+ brynq_sdk_alight/address.py,sha256=xi14zO_l2hdXMVzxDcKaeEyhh6y0LBhgidTZ6ws0dek,2180
3
+ brynq_sdk_alight/employee.py,sha256=9E-zlgD7eSPiS7p5brRPpf9X9JFSsyETkv5bXfqv0dU,2692
4
+ brynq_sdk_alight/job.py,sha256=DqWqBXcqMKQbDsIPu9zcE79hzE0jHewPjVBb2eI-6ic,2683
5
+ brynq_sdk_alight/leave.py,sha256=7hYWbkxXFLWEjzBqallYCOg6kVGXxd_FCsRsE_TXTns,2993
6
+ brynq_sdk_alight/pay_elements.py,sha256=XJA1KexjHX8ottQWSsgD8jip2M5LmLlhiTU3Ldp51co,3519
7
+ brynq_sdk_alight/salary.py,sha256=KfSYW-WrW4L0OqxfE2oUTDJERaCmhCTptRSft07NsrA,3716
8
+ brynq_sdk_alight/termination.py,sha256=IhvJ61GteSnOx2v98eDf2WOIhLn1jDdIdio5N4kCNQI,3427
9
+ brynq_sdk_alight/time_elements.py,sha256=ssYHzpx_hJ-f7RTyYpq_7OrfZBdPUrxfU5Fx418TabM,4360
10
+ brynq_sdk_alight/time_quotas.py,sha256=dag3OEzUge81IX61093SZ_RwJGynBY0zcuVn0XO7xb0,4143
11
+ brynq_sdk_alight/archive/flat_wrapper.py,sha256=-5yK5P3daAItmSIXfqfiPssSZ3Lje-dItGBqNAhwSB8,5677
12
+ brynq_sdk_alight/archive/hrxml_generator.py,sha256=b52bfGmLKUsCPGFtMr6KWCcc11XPAf8GOR4v7UBAVOU,9852
13
+ brynq_sdk_alight/archive/managers.py,sha256=hJpEK5Ni2ddAYde64ER4HAbVY6fb7XKkFXhr1Ixyhb8,5890
14
+ brynq_sdk_alight/archive/managers_generic.py,sha256=41t_NRzA0THoFcu_0peUhaBmxdpY6k8PbOJxzQs6IeQ,4916
15
+ brynq_sdk_alight/archive/managers_old_complex.py,sha256=aAw0xWN-hGjVgcki6nTyR65aykEdTWlwlrCMryrpaEs,12516
16
+ brynq_sdk_alight/archive/managers_simple.py,sha256=EiHTVocRAmBQdO4ipxXAQtgdIPrM5IG-V6m2BRoQ-p8,8601
17
+ brynq_sdk_alight/schemas/__init__.py,sha256=nDqu5nKvrts-cDHNWYbBJWz-ouq6BtOazdwT1z165nc,537
18
+ brynq_sdk_alight/schemas/absence.py,sha256=2BlTvF3ecRfYqF27QvkKo5J6k1ZMFypSZpuhY6pPuWo,3402
19
+ brynq_sdk_alight/schemas/address.py,sha256=Rl6dqE8piDQv1oA8PA7IId14uVp03vK21DGopP4dPiM,4473
20
+ brynq_sdk_alight/schemas/employee.py,sha256=880woXJTPBxxM4gai6CVvmjgM2RQ2NKUCqBTcDNLTcw,27925
21
+ brynq_sdk_alight/schemas/job.py,sha256=DF2u4IhEg2kWLlzL7Qel02FFZD8KTD43P5YfUA-thCM,6073
22
+ brynq_sdk_alight/schemas/leave.py,sha256=BUJ7V5I4c-t-U6Keyaoqr81FfguzoxtJ4-Yg6e1e0q8,2183
23
+ brynq_sdk_alight/schemas/payments.py,sha256=69O40UoOa8FG7VAWSWk-x_c7co2Sxn_LG95hYkCYpOI,15331
24
+ brynq_sdk_alight/schemas/salary.py,sha256=B1wykXINd-oqG1Agk8bSDB9HneWejChnZeDtBzts-CY,2343
25
+ brynq_sdk_alight/schemas/termination.py,sha256=dbKiMUkaUExqks1ZyRKJklejpQxZ5MtOfzuhejhZxSU,1761
26
+ brynq_sdk_alight/schemas/timequota.py,sha256=kq-u5zkKIRtTGqJBTZQBSmvifaTg_P-UCc5GSzIAb1U,2926
27
+ brynq_sdk_alight/schemas/utils.py,sha256=6mOI_kbkaw4MAuqponZZNqUAsPfwy-6pNd6OBCgZzxs,16284
28
+ brynq_sdk_alight/schemas/generated_envelope_xsd_schema/__init__.py,sha256=2mPTceQnAvE9jayO_HlvcJ77swycTOo1yaQWSzU_ZUU,909937
29
+ brynq_sdk_alight/schemas/generated_envelope_xsd_schema/process_pay_serv_emp.py,sha256=B0h8e3hMz0udXUV0dYjjsc3ZqVp2gDw3RqJwclfSFsk,17349645
30
+ brynq_sdk_alight/schemas/generated_xsd_schemas/__init__.py,sha256=BwVA8LuNjTwjQHGP-IDubRt5zZSXkNglMHn1oTTL9Eg,289863
31
+ brynq_sdk_alight/schemas/generated_xsd_schemas/csec_person.py,sha256=102ahqr03fBkNOLty79rYpQhEBU6qBkV1kKn2ub1iFo,1119803
32
+ brynq_sdk_alight/schemas/generated_xsd_schemas/hrxml_indicative_data.py,sha256=V2AlkYyUuIXFJkR9LbkVRUWy-j2WBlRrrcaHqN5AzbA,3190892
33
+ brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_bod.py,sha256=wdMkcGgn3i_IDwoaLouMTV4ifwFM5zyc_dmcpX4axwY,1179590
34
+ brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_list_currency_code_iso_7_04.py,sha256=bCHsvtH_0H7Z2B2nY4ohz-7Br5ZKSfne5wiBqPWNW4E,12893
35
+ brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_list_language_code_iso_7_04.py,sha256=64sQtW4XAL2gYjH3w3goxqBLZ1DNM3OLgByAJIwNwec,369
36
+ brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_list_mimemedia_type_code_iana_7_04.py,sha256=-UuDNEh-ffD0HA94qPR707keQAJocqI_VJX1claA93s,378
37
+ brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_list_unit_code_unece_7_04.py,sha256=RjuRRlfuIVrXyium230AR0RkBNXmenYuB1TkH_9_ltM,354
38
+ brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_code_lists.py,sha256=YSjUKQI3j0BxDIk3jOipJ8bSvFRH3M7OU4g7lFqP4Gc,15244
39
+ brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_qualified_data_types.py,sha256=fwhRh2bkBdMvpRpRnITAv-1wiYKf1H20HCeIWa0ziyE,2696
40
+ brynq_sdk_alight/schemas/generated_xsd_schemas/openapplications_unqualified_data_types.py,sha256=cbea-P7N45ktP7tFcQMZvKbvTE9-x81NV7CumP4G10I,69646
41
+ brynq_sdk_alight-1.0.0.dev0.dist-info/METADATA,sha256=1yD4MSkfHX4R_nqxSiPZ0gcOpSYeP_ikKhk2VjuMGG4,502
42
+ brynq_sdk_alight-1.0.0.dev0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
43
+ brynq_sdk_alight-1.0.0.dev0.dist-info/top_level.txt,sha256=4S5DPwjBXkLhf4SonK9dvZsdc5ijVT8Zeyro8vv82-I,17
44
+ brynq_sdk_alight-1.0.0.dev0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1 @@
1
+ brynq_sdk_alight