Skip to content

Commit d9c8df6

Browse files
docs(abtests): Added documentation for featureFilters configuration i… (generated)
algolia/api-clients-automation#5688 Co-authored-by: algolia-bot <[email protected]> Co-authored-by: Samy Kettani <[email protected]>
1 parent 853eaea commit d9c8df6

File tree

3 files changed

+70
-2
lines changed

3 files changed

+70
-2
lines changed

Sources/Abtesting/Models/AbtestingABTestConfiguration.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,25 @@ import Foundation
88

99
/// A/B test configuration.
1010
public struct AbtestingABTestConfiguration: Codable, JSONEncodable {
11+
public var featureFilters: FeatureFilters?
1112
public var outliers: Outliers?
1213
public var emptySearch: EmptySearch?
1314
public var minimumDetectableEffect: AbtestingMinimumDetectableEffect?
1415

1516
public init(
17+
featureFilters: FeatureFilters? = nil,
1618
outliers: Outliers? = nil,
1719
emptySearch: EmptySearch? = nil,
1820
minimumDetectableEffect: AbtestingMinimumDetectableEffect? = nil
1921
) {
22+
self.featureFilters = featureFilters
2023
self.outliers = outliers
2124
self.emptySearch = emptySearch
2225
self.minimumDetectableEffect = minimumDetectableEffect
2326
}
2427

2528
public enum CodingKeys: String, CodingKey, CaseIterable {
29+
case featureFilters
2630
case outliers
2731
case emptySearch
2832
case minimumDetectableEffect
@@ -32,6 +36,7 @@ public struct AbtestingABTestConfiguration: Codable, JSONEncodable {
3236

3337
public func encode(to encoder: Encoder) throws {
3438
var container = encoder.container(keyedBy: CodingKeys.self)
39+
try container.encodeIfPresent(self.featureFilters, forKey: .featureFilters)
3540
try container.encodeIfPresent(self.outliers, forKey: .outliers)
3641
try container.encodeIfPresent(self.emptySearch, forKey: .emptySearch)
3742
try container.encodeIfPresent(self.minimumDetectableEffect, forKey: .minimumDetectableEffect)
@@ -40,14 +45,16 @@ public struct AbtestingABTestConfiguration: Codable, JSONEncodable {
4045

4146
extension AbtestingABTestConfiguration: Equatable {
4247
public static func ==(lhs: AbtestingABTestConfiguration, rhs: AbtestingABTestConfiguration) -> Bool {
43-
lhs.outliers == rhs.outliers &&
48+
lhs.featureFilters == rhs.featureFilters &&
49+
lhs.outliers == rhs.outliers &&
4450
lhs.emptySearch == rhs.emptySearch &&
4551
lhs.minimumDetectableEffect == rhs.minimumDetectableEffect
4652
}
4753
}
4854

4955
extension AbtestingABTestConfiguration: Hashable {
5056
public func hash(into hasher: inout Hasher) {
57+
hasher.combine(self.featureFilters?.hashValue)
5158
hasher.combine(self.outliers?.hashValue)
5259
hasher.combine(self.emptySearch?.hashValue)
5360
hasher.combine(self.minimumDetectableEffect?.hashValue)

Sources/Abtesting/Models/AbtestingEstimateConfiguration.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,25 @@ import Foundation
88

99
/// A/B test configuration for estimating the sample size and duration using minimum detectable effect.
1010
public struct AbtestingEstimateConfiguration: Codable, JSONEncodable {
11+
public var featureFilters: FeatureFilters?
1112
public var outliers: Outliers?
1213
public var emptySearch: EmptySearch?
1314
public var minimumDetectableEffect: AbtestingMinimumDetectableEffect
1415

1516
public init(
17+
featureFilters: FeatureFilters? = nil,
1618
outliers: Outliers? = nil,
1719
emptySearch: EmptySearch? = nil,
1820
minimumDetectableEffect: AbtestingMinimumDetectableEffect
1921
) {
22+
self.featureFilters = featureFilters
2023
self.outliers = outliers
2124
self.emptySearch = emptySearch
2225
self.minimumDetectableEffect = minimumDetectableEffect
2326
}
2427

2528
public enum CodingKeys: String, CodingKey, CaseIterable {
29+
case featureFilters
2630
case outliers
2731
case emptySearch
2832
case minimumDetectableEffect
@@ -32,6 +36,7 @@ public struct AbtestingEstimateConfiguration: Codable, JSONEncodable {
3236

3337
public func encode(to encoder: Encoder) throws {
3438
var container = encoder.container(keyedBy: CodingKeys.self)
39+
try container.encodeIfPresent(self.featureFilters, forKey: .featureFilters)
3540
try container.encodeIfPresent(self.outliers, forKey: .outliers)
3641
try container.encodeIfPresent(self.emptySearch, forKey: .emptySearch)
3742
try container.encode(self.minimumDetectableEffect, forKey: .minimumDetectableEffect)
@@ -40,14 +45,16 @@ public struct AbtestingEstimateConfiguration: Codable, JSONEncodable {
4045

4146
extension AbtestingEstimateConfiguration: Equatable {
4247
public static func ==(lhs: AbtestingEstimateConfiguration, rhs: AbtestingEstimateConfiguration) -> Bool {
43-
lhs.outliers == rhs.outliers &&
48+
lhs.featureFilters == rhs.featureFilters &&
49+
lhs.outliers == rhs.outliers &&
4450
lhs.emptySearch == rhs.emptySearch &&
4551
lhs.minimumDetectableEffect == rhs.minimumDetectableEffect
4652
}
4753
}
4854

4955
extension AbtestingEstimateConfiguration: Hashable {
5056
public func hash(into hasher: inout Hasher) {
57+
hasher.combine(self.featureFilters?.hashValue)
5158
hasher.combine(self.outliers?.hashValue)
5259
hasher.combine(self.emptySearch?.hashValue)
5360
hasher.combine(self.minimumDetectableEffect.hashValue)
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on
2+
// https://github.com/algolia/api-clients-automation. DO NOT EDIT.
3+
4+
import Foundation
5+
#if canImport(Core)
6+
import Core
7+
#endif
8+
9+
/// Configuration of feature-based filters applied to the A/B test population.
10+
public struct FeatureFilters: Codable, JSONEncodable {
11+
/// Whether to apply Dynamic Re-Ranking feature filters.
12+
public var dynamicReRanking: Bool?
13+
/// Whether to apply AI Personalization feature filters.
14+
public var aiPerso: Bool?
15+
/// Whether to apply Multi-Signal Re-Ranking feature filters.
16+
public var multiSignalRanking: Bool?
17+
18+
public init(dynamicReRanking: Bool? = nil, aiPerso: Bool? = nil, multiSignalRanking: Bool? = nil) {
19+
self.dynamicReRanking = dynamicReRanking
20+
self.aiPerso = aiPerso
21+
self.multiSignalRanking = multiSignalRanking
22+
}
23+
24+
public enum CodingKeys: String, CodingKey, CaseIterable {
25+
case dynamicReRanking
26+
case aiPerso
27+
case multiSignalRanking
28+
}
29+
30+
// Encodable protocol methods
31+
32+
public func encode(to encoder: Encoder) throws {
33+
var container = encoder.container(keyedBy: CodingKeys.self)
34+
try container.encodeIfPresent(self.dynamicReRanking, forKey: .dynamicReRanking)
35+
try container.encodeIfPresent(self.aiPerso, forKey: .aiPerso)
36+
try container.encodeIfPresent(self.multiSignalRanking, forKey: .multiSignalRanking)
37+
}
38+
}
39+
40+
extension FeatureFilters: Equatable {
41+
public static func ==(lhs: FeatureFilters, rhs: FeatureFilters) -> Bool {
42+
lhs.dynamicReRanking == rhs.dynamicReRanking &&
43+
lhs.aiPerso == rhs.aiPerso &&
44+
lhs.multiSignalRanking == rhs.multiSignalRanking
45+
}
46+
}
47+
48+
extension FeatureFilters: Hashable {
49+
public func hash(into hasher: inout Hasher) {
50+
hasher.combine(self.dynamicReRanking?.hashValue)
51+
hasher.combine(self.aiPerso?.hashValue)
52+
hasher.combine(self.multiSignalRanking?.hashValue)
53+
}
54+
}

0 commit comments

Comments
 (0)