Skip to content

Commit 22078fc

Browse files
authored
fix: New provider spec for python (#951)
1 parent 37c810e commit 22078fc

41 files changed

Lines changed: 4979 additions & 517 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

clients/java/bindings/src/main/kotlin/uniffi/superposition_client/superposition_client.kt

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -767,6 +767,10 @@ internal interface UniffiForeignFutureCompleteVoid : com.sun.jna.Callback {
767767

768768

769769

770+
771+
772+
773+
770774

771775

772776

@@ -793,6 +797,8 @@ fun uniffi_superposition_core_checksum_func_ffi_eval_config_with_reasoning(
793797
): Short
794798
fun uniffi_superposition_core_checksum_func_ffi_get_applicable_variants(
795799
): Short
800+
fun uniffi_superposition_core_checksum_func_ffi_parse_config_file_with_filters(
801+
): Short
796802
fun uniffi_superposition_core_checksum_func_ffi_parse_json_config(
797803
): Short
798804
fun uniffi_superposition_core_checksum_func_ffi_parse_toml_config(
@@ -803,6 +809,8 @@ fun uniffi_superposition_core_checksum_method_providercache_filter_config(
803809
): Short
804810
fun uniffi_superposition_core_checksum_method_providercache_filter_experiment(
805811
): Short
812+
fun uniffi_superposition_core_checksum_method_providercache_get_applicable_variants(
813+
): Short
806814
fun uniffi_superposition_core_checksum_method_providercache_init_config(
807815
): Short
808816
fun uniffi_superposition_core_checksum_method_providercache_init_experiments(
@@ -871,6 +879,8 @@ fun uniffi_superposition_core_fn_method_providercache_filter_config(`ptr`: Point
871879
): RustBufferConfig.ByValue
872880
fun uniffi_superposition_core_fn_method_providercache_filter_experiment(`ptr`: Pointer,`dimensionData`: RustBuffer.ByValue,`prefix`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus,
873881
): RustBuffer.ByValue
882+
fun uniffi_superposition_core_fn_method_providercache_get_applicable_variants(`ptr`: Pointer,`dimensionData`: RustBuffer.ByValue,`prefix`: RustBuffer.ByValue,`targetingKey`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus,
883+
): RustBuffer.ByValue
874884
fun uniffi_superposition_core_fn_method_providercache_init_config(`ptr`: Pointer,`defaultConfig`: RustBuffer.ByValue,`contexts`: RustBuffer.ByValue,`overrides`: RustBuffer.ByValue,`dimensions`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus,
875885
): Unit
876886
fun uniffi_superposition_core_fn_method_providercache_init_experiments(`ptr`: Pointer,`experiments`: RustBuffer.ByValue,`experimentGroups`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus,
@@ -881,6 +891,8 @@ fun uniffi_superposition_core_fn_func_ffi_eval_config_with_reasoning(`defaultCon
881891
): RustBuffer.ByValue
882892
fun uniffi_superposition_core_fn_func_ffi_get_applicable_variants(`eargs`: RustBuffer.ByValue,`dimensionsInfo`: RustBuffer.ByValue,`queryData`: RustBuffer.ByValue,`prefix`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus,
883893
): RustBuffer.ByValue
894+
fun uniffi_superposition_core_fn_func_ffi_parse_config_file_with_filters(`fileContent`: RustBuffer.ByValue,`format`: RustBuffer.ByValue,`dimensionData`: RustBuffer.ByValue,`prefix`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus,
895+
): RustBufferConfig.ByValue
884896
fun uniffi_superposition_core_fn_func_ffi_parse_json_config(`jsonContent`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus,
885897
): RustBufferConfig.ByValue
886898
fun uniffi_superposition_core_fn_func_ffi_parse_toml_config(`tomlContent`: RustBuffer.ByValue,uniffi_out_err: UniffiRustCallStatus,
@@ -1020,6 +1032,9 @@ private fun uniffiCheckApiChecksums(lib: IntegrityCheckingUniffiLib) {
10201032
if (lib.uniffi_superposition_core_checksum_func_ffi_get_applicable_variants() != 58234.toShort()) {
10211033
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
10221034
}
1035+
if (lib.uniffi_superposition_core_checksum_func_ffi_parse_config_file_with_filters() != 63728.toShort()) {
1036+
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
1037+
}
10231038
if (lib.uniffi_superposition_core_checksum_func_ffi_parse_json_config() != 30321.toShort()) {
10241039
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
10251040
}
@@ -1035,6 +1050,9 @@ private fun uniffiCheckApiChecksums(lib: IntegrityCheckingUniffiLib) {
10351050
if (lib.uniffi_superposition_core_checksum_method_providercache_filter_experiment() != 60575.toShort()) {
10361051
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
10371052
}
1053+
if (lib.uniffi_superposition_core_checksum_method_providercache_get_applicable_variants() != 12269.toShort()) {
1054+
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
1055+
}
10381056
if (lib.uniffi_superposition_core_checksum_method_providercache_init_config() != 28151.toShort()) {
10391057
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
10401058
}
@@ -1374,6 +1392,8 @@ public interface ProviderCacheInterface {
13741392

13751393
fun `filterExperiment`(`dimensionData`: Map<kotlin.String, kotlin.String>?, `prefix`: List<kotlin.String>?): ExperimentConfig
13761394

1395+
fun `getApplicableVariants`(`dimensionData`: Map<kotlin.String, kotlin.String>?, `prefix`: List<kotlin.String>?, `targetingKey`: kotlin.String): List<kotlin.String>
1396+
13771397
fun `initConfig`(`defaultConfig`: Map<kotlin.String, kotlin.String>, `contexts`: List<Context>, `overrides`: Map<kotlin.String, Overrides>, `dimensions`: Map<kotlin.String, DimensionInfo>)
13781398

13791399
fun `initExperiments`(`experiments`: List<FfiExperiment>, `experimentGroups`: List<FfiExperimentGroup>)
@@ -1510,6 +1530,19 @@ open class ProviderCache: Disposable, AutoCloseable, ProviderCacheInterface
15101530

15111531

15121532

1533+
@Throws(OperationException::class)override fun `getApplicableVariants`(`dimensionData`: Map<kotlin.String, kotlin.String>?, `prefix`: List<kotlin.String>?, `targetingKey`: kotlin.String): List<kotlin.String> {
1534+
return FfiConverterSequenceString.lift(
1535+
callWithPointer {
1536+
uniffiRustCallWithError(OperationException) { _status ->
1537+
UniffiLib.INSTANCE.uniffi_superposition_core_fn_method_providercache_get_applicable_variants(
1538+
it, FfiConverterOptionalMapStringString.lower(`dimensionData`),FfiConverterOptionalSequenceString.lower(`prefix`),FfiConverterString.lower(`targetingKey`),_status)
1539+
}
1540+
}
1541+
)
1542+
}
1543+
1544+
1545+
15131546
@Throws(OperationException::class)override fun `initConfig`(`defaultConfig`: Map<kotlin.String, kotlin.String>, `contexts`: List<Context>, `overrides`: Map<kotlin.String, Overrides>, `dimensions`: Map<kotlin.String, DimensionInfo>)
15141547
=
15151548
callWithPointer {
@@ -2286,6 +2319,16 @@ public object FfiConverterMapStringTypeOverrides: FfiConverterRustBuffer<Map<kot
22862319
}
22872320

22882321

2322+
@Throws(OperationException::class) fun `ffiParseConfigFileWithFilters`(`fileContent`: kotlin.String, `format`: kotlin.String, `dimensionData`: Map<kotlin.String, kotlin.String>?, `prefix`: List<kotlin.String>?): Config {
2323+
return FfiConverterTypeConfig.lift(
2324+
uniffiRustCallWithError(OperationException) { _status ->
2325+
UniffiLib.INSTANCE.uniffi_superposition_core_fn_func_ffi_parse_config_file_with_filters(
2326+
FfiConverterString.lower(`fileContent`),FfiConverterString.lower(`format`),FfiConverterOptionalMapStringString.lower(`dimensionData`),FfiConverterOptionalSequenceString.lower(`prefix`),_status)
2327+
}
2328+
)
2329+
}
2330+
2331+
22892332
/**
22902333
* Parse JSON configuration string
22912334
*

clients/python/bindings/superposition_bindings/superposition_client.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -501,6 +501,8 @@ def _uniffi_check_api_checksums(lib):
501501
raise InternalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
502502
if lib.uniffi_superposition_core_checksum_func_ffi_get_applicable_variants() != 58234:
503503
raise InternalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
504+
if lib.uniffi_superposition_core_checksum_func_ffi_parse_config_file_with_filters() != 63728:
505+
raise InternalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
504506
if lib.uniffi_superposition_core_checksum_func_ffi_parse_json_config() != 30321:
505507
raise InternalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
506508
if lib.uniffi_superposition_core_checksum_func_ffi_parse_toml_config() != 1558:
@@ -511,6 +513,8 @@ def _uniffi_check_api_checksums(lib):
511513
raise InternalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
512514
if lib.uniffi_superposition_core_checksum_method_providercache_filter_experiment() != 60575:
513515
raise InternalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
516+
if lib.uniffi_superposition_core_checksum_method_providercache_get_applicable_variants() != 12269:
517+
raise InternalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
514518
if lib.uniffi_superposition_core_checksum_method_providercache_init_config() != 28151:
515519
raise InternalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
516520
if lib.uniffi_superposition_core_checksum_method_providercache_init_experiments() != 55579:
@@ -660,6 +664,14 @@ class _UniffiForeignFutureStructVoid(ctypes.Structure):
660664
ctypes.POINTER(_UniffiRustCallStatus),
661665
)
662666
_UniffiLib.uniffi_superposition_core_fn_method_providercache_filter_experiment.restype = _UniffiRustBuffer
667+
_UniffiLib.uniffi_superposition_core_fn_method_providercache_get_applicable_variants.argtypes = (
668+
ctypes.c_void_p,
669+
_UniffiRustBuffer,
670+
_UniffiRustBuffer,
671+
_UniffiRustBuffer,
672+
ctypes.POINTER(_UniffiRustCallStatus),
673+
)
674+
_UniffiLib.uniffi_superposition_core_fn_method_providercache_get_applicable_variants.restype = _UniffiRustBuffer
663675
_UniffiLib.uniffi_superposition_core_fn_method_providercache_init_config.argtypes = (
664676
ctypes.c_void_p,
665677
_UniffiRustBuffer,
@@ -708,6 +720,14 @@ class _UniffiForeignFutureStructVoid(ctypes.Structure):
708720
ctypes.POINTER(_UniffiRustCallStatus),
709721
)
710722
_UniffiLib.uniffi_superposition_core_fn_func_ffi_get_applicable_variants.restype = _UniffiRustBuffer
723+
_UniffiLib.uniffi_superposition_core_fn_func_ffi_parse_config_file_with_filters.argtypes = (
724+
_UniffiRustBuffer,
725+
_UniffiRustBuffer,
726+
_UniffiRustBuffer,
727+
_UniffiRustBuffer,
728+
ctypes.POINTER(_UniffiRustCallStatus),
729+
)
730+
_UniffiLib.uniffi_superposition_core_fn_func_ffi_parse_config_file_with_filters.restype = _UniffiRustBufferConfig
711731
_UniffiLib.uniffi_superposition_core_fn_func_ffi_parse_json_config.argtypes = (
712732
_UniffiRustBuffer,
713733
ctypes.POINTER(_UniffiRustCallStatus),
@@ -995,6 +1015,9 @@ class _UniffiForeignFutureStructVoid(ctypes.Structure):
9951015
_UniffiLib.uniffi_superposition_core_checksum_func_ffi_get_applicable_variants.argtypes = (
9961016
)
9971017
_UniffiLib.uniffi_superposition_core_checksum_func_ffi_get_applicable_variants.restype = ctypes.c_uint16
1018+
_UniffiLib.uniffi_superposition_core_checksum_func_ffi_parse_config_file_with_filters.argtypes = (
1019+
)
1020+
_UniffiLib.uniffi_superposition_core_checksum_func_ffi_parse_config_file_with_filters.restype = ctypes.c_uint16
9981021
_UniffiLib.uniffi_superposition_core_checksum_func_ffi_parse_json_config.argtypes = (
9991022
)
10001023
_UniffiLib.uniffi_superposition_core_checksum_func_ffi_parse_json_config.restype = ctypes.c_uint16
@@ -1010,6 +1033,9 @@ class _UniffiForeignFutureStructVoid(ctypes.Structure):
10101033
_UniffiLib.uniffi_superposition_core_checksum_method_providercache_filter_experiment.argtypes = (
10111034
)
10121035
_UniffiLib.uniffi_superposition_core_checksum_method_providercache_filter_experiment.restype = ctypes.c_uint16
1036+
_UniffiLib.uniffi_superposition_core_checksum_method_providercache_get_applicable_variants.argtypes = (
1037+
)
1038+
_UniffiLib.uniffi_superposition_core_checksum_method_providercache_get_applicable_variants.restype = ctypes.c_uint16
10131039
_UniffiLib.uniffi_superposition_core_checksum_method_providercache_init_config.argtypes = (
10141040
)
10151041
_UniffiLib.uniffi_superposition_core_checksum_method_providercache_init_config.restype = ctypes.c_uint16
@@ -1723,6 +1749,8 @@ def filter_config(self, dimension_data: "typing.Optional[dict[str, str]]",prefix
17231749
raise NotImplementedError
17241750
def filter_experiment(self, dimension_data: "typing.Optional[dict[str, str]]",prefix: "typing.Optional[typing.List[str]]"):
17251751
raise NotImplementedError
1752+
def get_applicable_variants(self, dimension_data: "typing.Optional[dict[str, str]]",prefix: "typing.Optional[typing.List[str]]",targeting_key: "str"):
1753+
raise NotImplementedError
17261754
def init_config(self, default_config: "dict[str, str]",contexts: "typing.List[Context]",overrides: "dict[str, Overrides]",dimensions: "dict[str, DimensionInfo]"):
17271755
raise NotImplementedError
17281756
def init_experiments(self, experiments: "typing.List[FfiExperiment]",experiment_groups: "typing.List[FfiExperimentGroup]"):
@@ -1803,6 +1831,24 @@ def filter_experiment(self, dimension_data: "typing.Optional[dict[str, str]]",pr
18031831

18041832

18051833

1834+
def get_applicable_variants(self, dimension_data: "typing.Optional[dict[str, str]]",prefix: "typing.Optional[typing.List[str]]",targeting_key: "str") -> "typing.List[str]":
1835+
_UniffiConverterOptionalMapStringString.check_lower(dimension_data)
1836+
1837+
_UniffiConverterOptionalSequenceString.check_lower(prefix)
1838+
1839+
_UniffiConverterString.check_lower(targeting_key)
1840+
1841+
return _UniffiConverterSequenceString.lift(
1842+
_uniffi_rust_call_with_error(_UniffiConverterTypeOperationError,_UniffiLib.uniffi_superposition_core_fn_method_providercache_get_applicable_variants,self._uniffi_clone_pointer(),
1843+
_UniffiConverterOptionalMapStringString.lower(dimension_data),
1844+
_UniffiConverterOptionalSequenceString.lower(prefix),
1845+
_UniffiConverterString.lower(targeting_key))
1846+
)
1847+
1848+
1849+
1850+
1851+
18061852
def init_config(self, default_config: "dict[str, str]",contexts: "typing.List[Context]",overrides: "dict[str, Overrides]",dimensions: "dict[str, DimensionInfo]") -> None:
18071853
_UniffiConverterMapStringString.check_lower(default_config)
18081854

@@ -1964,6 +2010,22 @@ def ffi_get_applicable_variants(eargs: "ExperimentationArgs",dimensions_info: "d
19642010
_UniffiConverterOptionalSequenceString.lower(prefix)))
19652011

19662012

2013+
def ffi_parse_config_file_with_filters(file_content: "str",format: "str",dimension_data: "typing.Optional[dict[str, str]]",prefix: "typing.Optional[typing.List[str]]") -> "Config":
2014+
_UniffiConverterString.check_lower(file_content)
2015+
2016+
_UniffiConverterString.check_lower(format)
2017+
2018+
_UniffiConverterOptionalMapStringString.check_lower(dimension_data)
2019+
2020+
_UniffiConverterOptionalSequenceString.check_lower(prefix)
2021+
2022+
return _UniffiConverterTypeConfig.lift(_uniffi_rust_call_with_error(_UniffiConverterTypeOperationError,_UniffiLib.uniffi_superposition_core_fn_func_ffi_parse_config_file_with_filters,
2023+
_UniffiConverterString.lower(file_content),
2024+
_UniffiConverterString.lower(format),
2025+
_UniffiConverterOptionalMapStringString.lower(dimension_data),
2026+
_UniffiConverterOptionalSequenceString.lower(prefix)))
2027+
2028+
19672029
def ffi_parse_json_config(json_content: "str") -> "Config":
19682030
"""
19692031
Parse JSON configuration string
@@ -2041,6 +2103,7 @@ def ffi_parse_toml_config(toml_content: "str") -> "Config":
20412103
"ffi_eval_config",
20422104
"ffi_eval_config_with_reasoning",
20432105
"ffi_get_applicable_variants",
2106+
"ffi_parse_config_file_with_filters",
20442107
"ffi_parse_json_config",
20452108
"ffi_parse_toml_config",
20462109
"ProviderCache",
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
[default-configs]
2+
currency = { value = "Rupee", schema = { enum = [
3+
"Rupee",
4+
"Dollar",
5+
"Euro",
6+
], type = "string" } }
7+
price = { value = 10000, schema = { minimum = 0, type = "number" } }
8+
9+
10+
[dimensions]
11+
city = { position = 3, schema = { type = "string" }, type = "REGULAR" }
12+
customers = { position = 1, schema = { definitions = { gold = { in = [
13+
{ var = "name" },
14+
[
15+
"Angit",
16+
"Bhrey",
17+
],
18+
] }, platinum = { in = [
19+
{ var = "name" },
20+
[
21+
"Agush",
22+
"Sauyav",
23+
],
24+
] } }, enum = [
25+
"platinum",
26+
"gold",
27+
"otherwise",
28+
], type = "string" }, type = "LOCAL_COHORT:name" }
29+
name = { position = 2, schema = { type = "string" }, type = "REGULAR" }
30+
variantIds = { position = 0, schema = { pattern = ".*", type = "string" }, type = "REGULAR" }
31+
32+
33+
[[overrides]]
34+
_context_ = { customers = "platinum" }
35+
price = 5000
36+
37+
[[overrides]]
38+
_context_ = { customers = "gold" }
39+
price = 8000
40+
41+
[[overrides]]
42+
_context_ = { name = "karbik" }
43+
price = 1
44+
45+
[[overrides]]
46+
_context_ = { city = "Boston" }
47+
currency = "Dollar"
48+
49+
[[overrides]]
50+
_context_ = { city = "Berlin" }
51+
currency = "Euro"
52+
53+
[[overrides]]
54+
_context_ = { city = "Kolkata", variantIds = "7445772794710855680-test-control" }
55+
price = 8000
56+
57+
[[overrides]]
58+
_context_ = { city = "Kolkata", variantIds = "7445772794710855680-test-experimental" }
59+
price = 7000

0 commit comments

Comments
 (0)