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.
Files changed (88) hide show
  1. {boarddata-6.7.2 → boarddata-6.7.3}/PKG-INFO +1 -1
  2. {boarddata-6.7.2 → boarddata-6.7.3}/__init__.py +1 -1
  3. {boarddata-6.7.2 → boarddata-6.7.3}/_comex.py +32 -0
  4. {boarddata-6.7.2 → boarddata-6.7.3}/boarddata.egg-info/PKG-INFO +1 -1
  5. {boarddata-6.7.2 → boarddata-6.7.3}/pyproject.toml +1 -1
  6. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_comex.py +42 -0
  7. {boarddata-6.7.2 → boarddata-6.7.3}/types/comex.py +20 -0
  8. {boarddata-6.7.2 → boarddata-6.7.3}/CLAUDE.md +0 -0
  9. {boarddata-6.7.2 → boarddata-6.7.3}/README.md +0 -0
  10. {boarddata-6.7.2 → boarddata-6.7.3}/_assemblies.py +0 -0
  11. {boarddata-6.7.2 → boarddata-6.7.3}/_auditors.py +0 -0
  12. {boarddata-6.7.2 → boarddata-6.7.3}/_base.py +0 -0
  13. {boarddata-6.7.2 → boarddata-6.7.3}/_committees.py +0 -0
  14. {boarddata-6.7.2 → boarddata-6.7.3}/_companies.py +0 -0
  15. {boarddata-6.7.2 → boarddata-6.7.3}/_criteria.py +0 -0
  16. {boarddata-6.7.2 → boarddata-6.7.3}/_directors.py +0 -0
  17. {boarddata-6.7.2 → boarddata-6.7.3}/_documents.py +0 -0
  18. {boarddata-6.7.2 → boarddata-6.7.3}/_esg.py +0 -0
  19. {boarddata-6.7.2 → boarddata-6.7.3}/_indexes.py +0 -0
  20. {boarddata-6.7.2 → boarddata-6.7.3}/_persons.py +0 -0
  21. {boarddata-6.7.2 → boarddata-6.7.3}/_risks.py +0 -0
  22. {boarddata-6.7.2 → boarddata-6.7.3}/_sentinel.py +0 -0
  23. {boarddata-6.7.2 → boarddata-6.7.3}/_utilities.py +0 -0
  24. {boarddata-6.7.2 → boarddata-6.7.3}/boarddata.egg-info/SOURCES.txt +0 -0
  25. {boarddata-6.7.2 → boarddata-6.7.3}/boarddata.egg-info/dependency_links.txt +0 -0
  26. {boarddata-6.7.2 → boarddata-6.7.3}/boarddata.egg-info/requires.txt +0 -0
  27. {boarddata-6.7.2 → boarddata-6.7.3}/boarddata.egg-info/top_level.txt +0 -0
  28. {boarddata-6.7.2 → boarddata-6.7.3}/cache.py +0 -0
  29. {boarddata-6.7.2 → boarddata-6.7.3}/client.py +0 -0
  30. {boarddata-6.7.2 → boarddata-6.7.3}/dq/__init__.py +0 -0
  31. {boarddata-6.7.2 → boarddata-6.7.3}/dq/adjudicate.py +0 -0
  32. {boarddata-6.7.2 → boarddata-6.7.3}/dq/apply.py +0 -0
  33. {boarddata-6.7.2 → boarddata-6.7.3}/dq/context.py +0 -0
  34. {boarddata-6.7.2 → boarddata-6.7.3}/dq/db.py +0 -0
  35. {boarddata-6.7.2 → boarddata-6.7.3}/dq/domains.py +0 -0
  36. {boarddata-6.7.2 → boarddata-6.7.3}/dq/models.py +0 -0
  37. {boarddata-6.7.2 → boarddata-6.7.3}/dq/oracle.py +0 -0
  38. {boarddata-6.7.2 → boarddata-6.7.3}/dq/registry.py +0 -0
  39. {boarddata-6.7.2 → boarddata-6.7.3}/dq/report.py +0 -0
  40. {boarddata-6.7.2 → boarddata-6.7.3}/dq/rules/__init__.py +0 -0
  41. {boarddata-6.7.2 → boarddata-6.7.3}/dq/rules/cross_company.py +0 -0
  42. {boarddata-6.7.2 → boarddata-6.7.3}/dq/rules/lexical.py +0 -0
  43. {boarddata-6.7.2 → boarddata-6.7.3}/dq/s3.py +0 -0
  44. {boarddata-6.7.2 → boarddata-6.7.3}/dq/verify_s3.py +0 -0
  45. {boarddata-6.7.2 → boarddata-6.7.3}/errors.py +0 -0
  46. {boarddata-6.7.2 → boarddata-6.7.3}/py.typed +0 -0
  47. {boarddata-6.7.2 → boarddata-6.7.3}/scripts/__init__.py +0 -0
  48. {boarddata-6.7.2 → boarddata-6.7.3}/scripts/dq_apply.py +0 -0
  49. {boarddata-6.7.2 → boarddata-6.7.3}/scripts/dq_batch.py +0 -0
  50. {boarddata-6.7.2 → boarddata-6.7.3}/scripts/dq_plan.py +0 -0
  51. {boarddata-6.7.2 → boarddata-6.7.3}/scripts/dq_revert.py +0 -0
  52. {boarddata-6.7.2 → boarddata-6.7.3}/scripts/dq_scan.py +0 -0
  53. {boarddata-6.7.2 → boarddata-6.7.3}/scripts/dq_verify_s3.py +0 -0
  54. {boarddata-6.7.2 → boarddata-6.7.3}/setup.cfg +0 -0
  55. {boarddata-6.7.2 → boarddata-6.7.3}/tests/__init__.py +0 -0
  56. {boarddata-6.7.2 → boarddata-6.7.3}/tests/conftest.py +0 -0
  57. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_assemblies.py +0 -0
  58. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_auditors.py +0 -0
  59. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_base.py +0 -0
  60. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_build_payload.py +0 -0
  61. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_cache.py +0 -0
  62. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_committees.py +0 -0
  63. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_companies.py +0 -0
  64. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_config.py +0 -0
  65. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_criteria.py +0 -0
  66. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_directors.py +0 -0
  67. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_documents.py +0 -0
  68. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_esg.py +0 -0
  69. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_exports.py +0 -0
  70. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_indexes.py +0 -0
  71. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_persons.py +0 -0
  72. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_risks.py +0 -0
  73. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_sentinel.py +0 -0
  74. {boarddata-6.7.2 → boarddata-6.7.3}/tests/test_utilities.py +0 -0
  75. {boarddata-6.7.2 → boarddata-6.7.3}/types/__init__.py +0 -0
  76. {boarddata-6.7.2 → boarddata-6.7.3}/types/assemblies.py +0 -0
  77. {boarddata-6.7.2 → boarddata-6.7.3}/types/auditors.py +0 -0
  78. {boarddata-6.7.2 → boarddata-6.7.3}/types/committees.py +0 -0
  79. {boarddata-6.7.2 → boarddata-6.7.3}/types/companies.py +0 -0
  80. {boarddata-6.7.2 → boarddata-6.7.3}/types/core.py +0 -0
  81. {boarddata-6.7.2 → boarddata-6.7.3}/types/criteria.py +0 -0
  82. {boarddata-6.7.2 → boarddata-6.7.3}/types/directors.py +0 -0
  83. {boarddata-6.7.2 → boarddata-6.7.3}/types/documents.py +0 -0
  84. {boarddata-6.7.2 → boarddata-6.7.3}/types/esg.py +0 -0
  85. {boarddata-6.7.2 → boarddata-6.7.3}/types/indexes.py +0 -0
  86. {boarddata-6.7.2 → boarddata-6.7.3}/types/persons.py +0 -0
  87. {boarddata-6.7.2 → boarddata-6.7.3}/types/risks.py +0 -0
  88. {boarddata-6.7.2 → boarddata-6.7.3}/types/sentinel.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boarddata
3
- Version: 6.7.2
3
+ Version: 6.7.3
4
4
  Summary: Python SDK for the BoardData V2 REST API
5
5
  License: MIT
6
6
  Classifier: Development Status :: 4 - Beta
@@ -6,7 +6,7 @@ from .cache import FileTokenCache, ScalewaySecretTokenCache
6
6
  from .client import BoardDataClient
7
7
  from .errors import BoardDataError, ExportTooLargeError
8
8
 
9
- __version__ = "6.7.2"
9
+ __version__ = "6.7.3"
10
10
  __all__ = [
11
11
  "Base",
12
12
  "BoardDataClient",
@@ -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,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boarddata
3
- Version: 6.7.2
3
+ Version: 6.7.3
4
4
  Summary: Python SDK for the BoardData V2 REST API
5
5
  License: MIT
6
6
  Classifier: Development Status :: 4 - Beta
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "boarddata"
7
- version = "6.7.2"
7
+ version = "6.7.3"
8
8
  description = "Python SDK for the BoardData V2 REST API"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -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