boarddata 6.7.2__tar.gz → 6.7.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.
- {boarddata-6.7.2 → boarddata-6.7.3}/PKG-INFO +1 -1
- {boarddata-6.7.2 → boarddata-6.7.3}/__init__.py +1 -1
- {boarddata-6.7.2 → boarddata-6.7.3}/_comex.py +32 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/boarddata.egg-info/PKG-INFO +1 -1
- {boarddata-6.7.2 → boarddata-6.7.3}/pyproject.toml +1 -1
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_comex.py +42 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/types/comex.py +20 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/CLAUDE.md +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/README.md +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/_assemblies.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/_auditors.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/_base.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/_committees.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/_companies.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/_criteria.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/_directors.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/_documents.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/_esg.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/_indexes.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/_persons.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/_risks.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/_sentinel.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/_utilities.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/boarddata.egg-info/SOURCES.txt +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/boarddata.egg-info/dependency_links.txt +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/boarddata.egg-info/requires.txt +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/boarddata.egg-info/top_level.txt +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/cache.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/client.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/dq/__init__.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/dq/adjudicate.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/dq/apply.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/dq/context.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/dq/db.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/dq/domains.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/dq/models.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/dq/oracle.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/dq/registry.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/dq/report.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/dq/rules/__init__.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/dq/rules/cross_company.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/dq/rules/lexical.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/dq/s3.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/dq/verify_s3.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/errors.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/py.typed +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/scripts/__init__.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/scripts/dq_apply.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/scripts/dq_batch.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/scripts/dq_plan.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/scripts/dq_revert.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/scripts/dq_scan.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/scripts/dq_verify_s3.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/setup.cfg +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/__init__.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/conftest.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_assemblies.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_auditors.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_base.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_build_payload.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_cache.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_committees.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_companies.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_config.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_criteria.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_directors.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_documents.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_esg.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_exports.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_indexes.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_persons.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_risks.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_sentinel.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_utilities.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/types/__init__.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/types/assemblies.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/types/auditors.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/types/committees.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/types/companies.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/types/core.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/types/criteria.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/types/directors.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/types/documents.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/types/esg.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/types/indexes.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/types/persons.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/types/risks.py +0 -0
- {boarddata-6.7.2 → boarddata-6.7.3}/types/sentinel.py +0 -0
|
@@ -349,6 +349,11 @@ class ComexMixin:
|
|
|
349
349
|
discretionary_grant: bool | None = None,
|
|
350
350
|
subsidiary_remuneration: str | None = None,
|
|
351
351
|
remuneration_via_holding: bool | None = None,
|
|
352
|
+
sti_basis: str | None = None,
|
|
353
|
+
variable_target_value: str | None = None,
|
|
354
|
+
variable_max_value: str | None = None,
|
|
355
|
+
lti_grant_cap_basis: str | None = None,
|
|
356
|
+
lti_grant_cap_value: str | None = None,
|
|
352
357
|
currency: str | None = None,
|
|
353
358
|
field_sources: list[FieldSourcePayload] | None = None,
|
|
354
359
|
criteria: list[dict[str, Any]] | None = None,
|
|
@@ -397,6 +402,12 @@ class ComexMixin:
|
|
|
397
402
|
discretionary_grant: Whether discretionary grant applies.
|
|
398
403
|
subsidiary_remuneration: Subsidiary remuneration (decimal).
|
|
399
404
|
remuneration_via_holding: Whether remuneration is provided via holding.
|
|
405
|
+
sti_basis: Disclosed STI base form (frozen enum, e.g. ``"pct_of_fixed"``).
|
|
406
|
+
variable_target_value: STI target in the DISCLOSED basis (decimal string;
|
|
407
|
+
interpretation governed by ``sti_basis`` — never converted).
|
|
408
|
+
variable_max_value: STI cap in the DISCLOSED basis (decimal string).
|
|
409
|
+
lti_grant_cap_basis: Disclosed LTI grant-cap basis (frozen enum).
|
|
410
|
+
lti_grant_cap_value: LTI grant cap in the DISCLOSED basis (decimal string).
|
|
400
411
|
currency: Currency code (e.g. ``"EUR"``).
|
|
401
412
|
field_sources: Document provenance for fields.
|
|
402
413
|
criteria: List of compensation criteria dicts.
|
|
@@ -448,6 +459,11 @@ class ComexMixin:
|
|
|
448
459
|
discretionary_grant=discretionary_grant,
|
|
449
460
|
subsidiary_remuneration=subsidiary_remuneration,
|
|
450
461
|
remuneration_via_holding=remuneration_via_holding,
|
|
462
|
+
sti_basis=sti_basis,
|
|
463
|
+
variable_target_value=variable_target_value,
|
|
464
|
+
variable_max_value=variable_max_value,
|
|
465
|
+
lti_grant_cap_basis=lti_grant_cap_basis,
|
|
466
|
+
lti_grant_cap_value=lti_grant_cap_value,
|
|
451
467
|
currency=currency,
|
|
452
468
|
field_sources=field_sources,
|
|
453
469
|
criteria=criteria,
|
|
@@ -498,6 +514,11 @@ class ComexMixin:
|
|
|
498
514
|
discretionary_grant: bool | None = None,
|
|
499
515
|
subsidiary_remuneration: str | None = None,
|
|
500
516
|
remuneration_via_holding: bool | None = None,
|
|
517
|
+
sti_basis: str | None = None,
|
|
518
|
+
variable_target_value: str | None = None,
|
|
519
|
+
variable_max_value: str | None = None,
|
|
520
|
+
lti_grant_cap_basis: str | None = None,
|
|
521
|
+
lti_grant_cap_value: str | None = None,
|
|
501
522
|
currency: str | None = None,
|
|
502
523
|
field_sources: list[FieldSourcePayload] | None = None,
|
|
503
524
|
criteria: list[dict[str, Any]] | None = None,
|
|
@@ -546,6 +567,12 @@ class ComexMixin:
|
|
|
546
567
|
discretionary_grant: Whether discretionary grant applies.
|
|
547
568
|
subsidiary_remuneration: Subsidiary remuneration (decimal).
|
|
548
569
|
remuneration_via_holding: Whether remuneration is provided via holding.
|
|
570
|
+
sti_basis: Disclosed STI base form (frozen enum, e.g. ``"pct_of_fixed"``).
|
|
571
|
+
variable_target_value: STI target in the DISCLOSED basis (decimal string;
|
|
572
|
+
interpretation governed by ``sti_basis`` — never converted).
|
|
573
|
+
variable_max_value: STI cap in the DISCLOSED basis (decimal string).
|
|
574
|
+
lti_grant_cap_basis: Disclosed LTI grant-cap basis (frozen enum).
|
|
575
|
+
lti_grant_cap_value: LTI grant cap in the DISCLOSED basis (decimal string).
|
|
549
576
|
currency: Currency code (e.g. ``"EUR"``).
|
|
550
577
|
field_sources: Document provenance for fields.
|
|
551
578
|
criteria: List of compensation criteria dicts.
|
|
@@ -597,6 +624,11 @@ class ComexMixin:
|
|
|
597
624
|
discretionary_grant=discretionary_grant,
|
|
598
625
|
subsidiary_remuneration=subsidiary_remuneration,
|
|
599
626
|
remuneration_via_holding=remuneration_via_holding,
|
|
627
|
+
sti_basis=sti_basis,
|
|
628
|
+
variable_target_value=variable_target_value,
|
|
629
|
+
variable_max_value=variable_max_value,
|
|
630
|
+
lti_grant_cap_basis=lti_grant_cap_basis,
|
|
631
|
+
lti_grant_cap_value=lti_grant_cap_value,
|
|
600
632
|
currency=currency,
|
|
601
633
|
field_sources=field_sources,
|
|
602
634
|
criteria=criteria,
|
|
@@ -159,3 +159,45 @@ class TestReplaceComexCompensation:
|
|
|
159
159
|
c._request.return_value = {"id": "comp10", "action": "created"}
|
|
160
160
|
result = c.replace_comex_compensation("comex-uuid", 2024, "POLITIC", fixed="1.00")
|
|
161
161
|
assert result["action"] == "created"
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
def test_envelope_scalar_kwargs_in_signatures():
|
|
165
|
+
import inspect
|
|
166
|
+
|
|
167
|
+
from boarddata import BoardDataClient
|
|
168
|
+
|
|
169
|
+
for method in (
|
|
170
|
+
BoardDataClient.create_comex_compensation,
|
|
171
|
+
BoardDataClient.replace_comex_compensation,
|
|
172
|
+
):
|
|
173
|
+
params = inspect.signature(method).parameters
|
|
174
|
+
for k in (
|
|
175
|
+
"sti_basis",
|
|
176
|
+
"variable_target_value",
|
|
177
|
+
"variable_max_value",
|
|
178
|
+
"lti_grant_cap_basis",
|
|
179
|
+
"lti_grant_cap_value",
|
|
180
|
+
):
|
|
181
|
+
assert k in params, f"{method.__name__} missing {k}"
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
def test_envelope_scalars_reach_the_wire():
|
|
185
|
+
c = make_client()
|
|
186
|
+
c._request.return_value = {"id": "1", "action": "created"}
|
|
187
|
+
c.replace_comex_compensation(
|
|
188
|
+
"uid",
|
|
189
|
+
2025,
|
|
190
|
+
"real",
|
|
191
|
+
sti_basis="pct_of_fixed",
|
|
192
|
+
variable_target_value="150",
|
|
193
|
+
variable_max_value="180",
|
|
194
|
+
lti_grant_cap_basis="pct_of_fixed",
|
|
195
|
+
lti_grant_cap_value="150",
|
|
196
|
+
)
|
|
197
|
+
_, kwargs = c._request.call_args
|
|
198
|
+
p = kwargs["json"]
|
|
199
|
+
assert p["sti_basis"] == "pct_of_fixed"
|
|
200
|
+
assert p["variable_target_value"] == "150"
|
|
201
|
+
assert p["variable_max_value"] == "180"
|
|
202
|
+
assert p["lti_grant_cap_basis"] == "pct_of_fixed"
|
|
203
|
+
assert p["lti_grant_cap_value"] == "150"
|
|
@@ -110,6 +110,11 @@ class ComexCompensationItem(TypedDict):
|
|
|
110
110
|
holding: bool
|
|
111
111
|
has_employment_contract: bool
|
|
112
112
|
remuneration_via_holding: bool
|
|
113
|
+
sti_basis: str
|
|
114
|
+
variable_target_value: str | None
|
|
115
|
+
variable_max_value: str | None
|
|
116
|
+
lti_grant_cap_basis: str
|
|
117
|
+
lti_grant_cap_value: str | None
|
|
113
118
|
total: str | None
|
|
114
119
|
total_paid: str | None
|
|
115
120
|
currency: str
|
|
@@ -158,6 +163,11 @@ class ComexCompensationDetail(TypedDict):
|
|
|
158
163
|
discretionary_grant: bool
|
|
159
164
|
subsidiary_remuneration: str | None
|
|
160
165
|
remuneration_via_holding: bool
|
|
166
|
+
sti_basis: str
|
|
167
|
+
variable_target_value: str | None
|
|
168
|
+
variable_max_value: str | None
|
|
169
|
+
lti_grant_cap_basis: str
|
|
170
|
+
lti_grant_cap_value: str | None
|
|
161
171
|
currency: str
|
|
162
172
|
total: str | None
|
|
163
173
|
total_paid: str | None
|
|
@@ -206,6 +216,11 @@ class CreateComexCompensationPayload(TypedDict):
|
|
|
206
216
|
discretionary_grant: NotRequired[bool]
|
|
207
217
|
subsidiary_remuneration: NotRequired[str | None]
|
|
208
218
|
remuneration_via_holding: NotRequired[bool]
|
|
219
|
+
sti_basis: NotRequired[str]
|
|
220
|
+
variable_target_value: NotRequired[str | None]
|
|
221
|
+
variable_max_value: NotRequired[str | None]
|
|
222
|
+
lti_grant_cap_basis: NotRequired[str]
|
|
223
|
+
lti_grant_cap_value: NotRequired[str | None]
|
|
209
224
|
currency: NotRequired[str]
|
|
210
225
|
field_sources: NotRequired[list[FieldSourcePayload]]
|
|
211
226
|
criteria: NotRequired[list[dict[str, Any]]]
|
|
@@ -252,6 +267,11 @@ class UpdateComexCompensationPayload(TypedDict, total=False):
|
|
|
252
267
|
discretionary_grant: bool
|
|
253
268
|
subsidiary_remuneration: str | None
|
|
254
269
|
remuneration_via_holding: bool
|
|
270
|
+
sti_basis: str
|
|
271
|
+
variable_target_value: str | None
|
|
272
|
+
variable_max_value: str | None
|
|
273
|
+
lti_grant_cap_basis: str
|
|
274
|
+
lti_grant_cap_value: str | None
|
|
255
275
|
currency: str
|
|
256
276
|
field_sources: list[FieldSourcePayload]
|
|
257
277
|
criteria: list[dict[str, Any]]
|
|
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
|
|
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
|
|
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
|