upgini 1.1.249a1__tar.gz → 1.1.250__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.
Potentially problematic release.
This version of upgini might be problematic. Click here for more details.
- {upgini-1.1.249a1/src/upgini.egg-info → upgini-1.1.250}/PKG-INFO +1 -1
- {upgini-1.1.249a1 → upgini-1.1.250}/setup.py +1 -1
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/data_source/data_source_publisher.py +18 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/dataset.py +4 -4
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/features_enricher.py +53 -42
- upgini-1.1.250/src/upgini/fingerprint.js +8 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/metadata.py +1 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/resource_bundle/strings.properties +2 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/cv_utils.py +0 -2
- {upgini-1.1.249a1 → upgini-1.1.250/src/upgini.egg-info}/PKG-INFO +1 -1
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini.egg-info/SOURCES.txt +1 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/tests/test_widget.py +5 -1
- {upgini-1.1.249a1 → upgini-1.1.250}/LICENSE +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/README.md +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/pyproject.toml +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/setup.cfg +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/__init__.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/ads.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/ads_management/__init__.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/ads_management/ads_manager.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/autofe/__init__.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/autofe/all_operands.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/autofe/binary.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/autofe/feature.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/autofe/groupby.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/autofe/operand.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/autofe/unary.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/autofe/vector.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/data_source/__init__.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/errors.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/http.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/mdc/__init__.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/mdc/context.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/metrics.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/normalizer/__init__.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/normalizer/phone_normalizer.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/resource_bundle/__init__.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/resource_bundle/exceptions.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/resource_bundle/strings_widget.properties +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/sampler/__init__.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/sampler/base.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/sampler/random_under_sampler.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/sampler/utils.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/search_task.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/spinner.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/__init__.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/base_search_key_detector.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/blocked_time_series.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/country_utils.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/custom_loss_utils.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/datetime_utils.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/deduplicate_utils.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/display_utils.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/email_utils.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/fallback_progress_bar.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/features_validator.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/format.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/ip_utils.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/phone_utils.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/postal_code_utils.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/progress_bar.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/sklearn_ext.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/target_utils.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/track_info.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/utils/warning_counter.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini/version_validator.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini.egg-info/dependency_links.txt +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini.egg-info/requires.txt +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/src/upgini.egg-info/top_level.txt +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/tests/test_binary_dataset.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/tests/test_blocked_time_series.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/tests/test_categorical_dataset.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/tests/test_continuous_dataset.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/tests/test_country_utils.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/tests/test_custom_loss_utils.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/tests/test_datetime_utils.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/tests/test_email_utils.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/tests/test_etalon_validation.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/tests/test_features_enricher.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/tests/test_metrics.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/tests/test_phone_utils.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/tests/test_postal_code_utils.py +0 -0
- {upgini-1.1.249a1 → upgini-1.1.250}/tests/test_target_utils.py +0 -0
|
@@ -32,6 +32,7 @@ class OnlineUploadingType(Enum):
|
|
|
32
32
|
|
|
33
33
|
class DataSourcePublisher:
|
|
34
34
|
FINAL_STATUSES = ["COMPLETED", "FAILED", "TIMED_OUT"]
|
|
35
|
+
ACCEPTABLE_UPDATE_FREQUENCIES = ["Daily", "Weekly", "Monthly", "Quarterly", "Annually"]
|
|
35
36
|
DEFAULT_GENERATE_EMBEDDINGS = []
|
|
36
37
|
|
|
37
38
|
def __init__(self, api_key: Optional[str] = None, endpoint: Optional[str] = None, logs_enabled=True):
|
|
@@ -46,12 +47,14 @@ class DataSourcePublisher:
|
|
|
46
47
|
self,
|
|
47
48
|
data_table_uri: str,
|
|
48
49
|
search_keys: Dict[str, SearchKey],
|
|
50
|
+
update_frequency: str,
|
|
49
51
|
secondary_search_keys: Optional[Dict[str, SearchKey]] = None,
|
|
50
52
|
sort_column: Optional[str] = None,
|
|
51
53
|
date_format: Optional[str] = None,
|
|
52
54
|
exclude_columns: Optional[List[str]] = None,
|
|
53
55
|
hash_feature_names=False,
|
|
54
56
|
snapshot_frequency_days: Optional[int] = None,
|
|
57
|
+
join_date_abs_limit_days: Optional[int] = None,
|
|
55
58
|
features_for_embeddings: Optional[List[str]] = DEFAULT_GENERATE_EMBEDDINGS,
|
|
56
59
|
data_table_id_to_replace: Optional[str] = None,
|
|
57
60
|
exclude_from_autofe_generation: Optional[List[str]] = None,
|
|
@@ -71,6 +74,11 @@ class DataSourcePublisher:
|
|
|
71
74
|
raise ValidationError("Empty search keys")
|
|
72
75
|
if SearchKey.DATE in search_keys.values() and date_format is None:
|
|
73
76
|
raise ValidationError("date_format is required for DATE search key")
|
|
77
|
+
if update_frequency not in self.ACCEPTABLE_UPDATE_FREQUENCIES:
|
|
78
|
+
raise ValidationError(
|
|
79
|
+
f"Invalid update frequency: {update_frequency}. "
|
|
80
|
+
f"Available values: {self.ACCEPTABLE_UPDATE_FREQUENCIES}"
|
|
81
|
+
)
|
|
74
82
|
|
|
75
83
|
request = {
|
|
76
84
|
"dataTableUri": data_table_uri,
|
|
@@ -79,6 +87,8 @@ class DataSourcePublisher:
|
|
|
79
87
|
"excludeColumns": exclude_columns,
|
|
80
88
|
"hashFeatureNames": str(hash_feature_names).lower(),
|
|
81
89
|
"snapshotFrequencyDays": snapshot_frequency_days,
|
|
90
|
+
"joinDateAbsLimitDays": join_date_abs_limit_days,
|
|
91
|
+
"updateFrequency": update_frequency,
|
|
82
92
|
"featuresForEmbeddings": features_for_embeddings,
|
|
83
93
|
"forceGeneration": str(_force_generation).lower(),
|
|
84
94
|
}
|
|
@@ -189,6 +199,7 @@ class DataSourcePublisher:
|
|
|
189
199
|
provider_link: Optional[str] = None,
|
|
190
200
|
source: Optional[str] = None,
|
|
191
201
|
source_link: Optional[str] = None,
|
|
202
|
+
update_frequency: Optional[str] = None,
|
|
192
203
|
client_emails: Optional[List[str]] = None,
|
|
193
204
|
):
|
|
194
205
|
trace_id = str(uuid.uuid4())
|
|
@@ -200,6 +211,11 @@ class DataSourcePublisher:
|
|
|
200
211
|
data_table_ids = [data_table_ids]
|
|
201
212
|
if not isinstance(data_table_ids, list):
|
|
202
213
|
raise ValidationError("data_table_ids should be string or list of strings")
|
|
214
|
+
if update_frequency is not None and update_frequency not in self.ACCEPTABLE_UPDATE_FREQUENCIES:
|
|
215
|
+
raise ValidationError(
|
|
216
|
+
f"Invalid update frequency: {update_frequency}. "
|
|
217
|
+
f"Available values: {self.ACCEPTABLE_UPDATE_FREQUENCIES}"
|
|
218
|
+
)
|
|
203
219
|
# if listing_type == ListingType.PRIVATE and (client_emails is None or len(client_emails) == 0):
|
|
204
220
|
# raise ValidationError("Empty client emails for private data tables")
|
|
205
221
|
# if listing_type not in [ListingType.PRIVATE, ListingType.TRIAL] and client_emails is not None:
|
|
@@ -226,6 +242,8 @@ class DataSourcePublisher:
|
|
|
226
242
|
request["source"] = source
|
|
227
243
|
if source_link is not None:
|
|
228
244
|
request["sourceLink"] = source_link
|
|
245
|
+
if update_frequency is not None:
|
|
246
|
+
request["updateFrequency"] = update_frequency
|
|
229
247
|
if client_emails is not None:
|
|
230
248
|
request["clientEmails"] = client_emails
|
|
231
249
|
self.logger.info(f"Activating data tables with request {request}")
|
|
@@ -662,15 +662,15 @@ class Dataset: # (pd.DataFrame):
|
|
|
662
662
|
# if self.task_type != ModelTaskType.MULTICLASS:
|
|
663
663
|
# self.data[target] = self.data[target].apply(pd.to_numeric, errors="coerce")
|
|
664
664
|
|
|
665
|
-
keys_to_validate =
|
|
665
|
+
keys_to_validate = {
|
|
666
666
|
key
|
|
667
667
|
for search_group in self.search_keys_checked
|
|
668
668
|
for key in search_group
|
|
669
669
|
if self.columns_renaming.get(key) != EmailSearchKeyConverter.EMAIL_ONE_DOMAIN_COLUMN_NAME
|
|
670
|
-
|
|
671
|
-
ipv4_column = self.etalon_def_checked.get(FileColumnMeaningType.IP_ADDRESS)
|
|
670
|
+
}
|
|
671
|
+
ipv4_column = self.etalon_def_checked.get(FileColumnMeaningType.IP_ADDRESS.value)
|
|
672
672
|
if (
|
|
673
|
-
FileColumnMeaningType.IPV6_ADDRESS in self.etalon_def_checked
|
|
673
|
+
FileColumnMeaningType.IPV6_ADDRESS.value in self.etalon_def_checked
|
|
674
674
|
and ipv4_column is not None
|
|
675
675
|
and ipv4_column in keys_to_validate
|
|
676
676
|
):
|
|
@@ -145,6 +145,18 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
145
145
|
CALCULATE_METRICS_MIN_THRESHOLD = 500
|
|
146
146
|
GENERATE_FEATURES_LIMIT = 10
|
|
147
147
|
EMPTY_FEATURES_INFO = pd.DataFrame(
|
|
148
|
+
columns=[
|
|
149
|
+
bundle.get("features_info_name"),
|
|
150
|
+
bundle.get("features_info_shap"),
|
|
151
|
+
bundle.get("features_info_hitrate"),
|
|
152
|
+
bundle.get("features_info_value_preview"),
|
|
153
|
+
bundle.get("features_info_provider"),
|
|
154
|
+
bundle.get("features_info_source"),
|
|
155
|
+
# bundle.get("features_info_commercial_schema"),
|
|
156
|
+
bundle.get("features_info_update_frequency"),
|
|
157
|
+
]
|
|
158
|
+
)
|
|
159
|
+
EMPTY_INTERNAL_FEATURES_INFO = pd.DataFrame(
|
|
148
160
|
columns=[
|
|
149
161
|
bundle.get("features_info_name"),
|
|
150
162
|
bundle.get("features_info_shap"),
|
|
@@ -153,6 +165,7 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
153
165
|
bundle.get("features_info_provider"),
|
|
154
166
|
bundle.get("features_info_source"),
|
|
155
167
|
bundle.get("features_info_commercial_schema"),
|
|
168
|
+
bundle.get("features_info_update_frequency"),
|
|
156
169
|
]
|
|
157
170
|
)
|
|
158
171
|
EMPTY_DATA_SOURCES = pd.DataFrame(
|
|
@@ -233,7 +246,7 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
233
246
|
self._search_task: Optional[SearchTask] = None
|
|
234
247
|
self.features_info: pd.DataFrame = self.EMPTY_FEATURES_INFO
|
|
235
248
|
self._features_info_without_links: pd.DataFrame = self.EMPTY_FEATURES_INFO
|
|
236
|
-
self._internal_features_info: pd.DataFrame = self.
|
|
249
|
+
self._internal_features_info: pd.DataFrame = self.EMPTY_INTERNAL_FEATURES_INFO
|
|
237
250
|
self.relevant_data_sources: pd.DataFrame = self.EMPTY_DATA_SOURCES
|
|
238
251
|
self._relevant_data_sources_wo_links: pd.DataFrame = self.EMPTY_DATA_SOURCES
|
|
239
252
|
self.metrics: Optional[pd.DataFrame] = None
|
|
@@ -1179,11 +1192,11 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1179
1192
|
self, commercial_schema: str, exclude_features_sources: Optional[List[str]]
|
|
1180
1193
|
) -> List[str]:
|
|
1181
1194
|
if exclude_features_sources:
|
|
1182
|
-
filtered_features_info = self.
|
|
1183
|
-
~self.
|
|
1195
|
+
filtered_features_info = self._internal_features_info[
|
|
1196
|
+
~self._internal_features_info[self.bundle.get("features_info_name")].isin(exclude_features_sources)
|
|
1184
1197
|
]
|
|
1185
1198
|
else:
|
|
1186
|
-
filtered_features_info = self.
|
|
1199
|
+
filtered_features_info = self._internal_features_info
|
|
1187
1200
|
return list(
|
|
1188
1201
|
filtered_features_info.loc[
|
|
1189
1202
|
filtered_features_info[self.bundle.get("features_info_commercial_schema")] == commercial_schema,
|
|
@@ -1191,9 +1204,6 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1191
1204
|
].values
|
|
1192
1205
|
)
|
|
1193
1206
|
|
|
1194
|
-
def _has_trial_features(self, exclude_features_sources: Optional[List[str]]) -> bool:
|
|
1195
|
-
return self._has_features_with_commercial_schema(CommercialSchema.TRIAL.value, exclude_features_sources)
|
|
1196
|
-
|
|
1197
1207
|
def _has_paid_features(self, exclude_features_sources: Optional[List[str]]) -> bool:
|
|
1198
1208
|
return self._has_features_with_commercial_schema(CommercialSchema.PAID.value, exclude_features_sources)
|
|
1199
1209
|
|
|
@@ -1573,18 +1583,18 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1573
1583
|
if eval_set is not None:
|
|
1574
1584
|
self.logger.info("Transform with eval_set")
|
|
1575
1585
|
# concatenate X and eval_set with eval_set_index
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1586
|
+
df = validated_X.copy()
|
|
1587
|
+
df[TARGET] = validated_y
|
|
1588
|
+
df[EVAL_SET_INDEX] = 0
|
|
1579
1589
|
for idx, eval_pair in enumerate(eval_set):
|
|
1580
1590
|
eval_x, eval_y = self._validate_eval_set_pair(validated_X, eval_pair)
|
|
1581
1591
|
eval_df_with_index = eval_x.copy()
|
|
1582
1592
|
eval_df_with_index[TARGET] = eval_y
|
|
1583
1593
|
eval_df_with_index[EVAL_SET_INDEX] = idx + 1
|
|
1584
|
-
|
|
1594
|
+
df = pd.concat([df, eval_df_with_index])
|
|
1585
1595
|
|
|
1586
|
-
_,
|
|
1587
|
-
|
|
1596
|
+
_, df = remove_fintech_duplicates(
|
|
1597
|
+
df,
|
|
1588
1598
|
self.search_keys,
|
|
1589
1599
|
date_format=self.date_format,
|
|
1590
1600
|
logger=self.logger,
|
|
@@ -1593,30 +1603,31 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1593
1603
|
)
|
|
1594
1604
|
|
|
1595
1605
|
# downsample if need to eval_set threshold
|
|
1596
|
-
num_samples = _num_samples(
|
|
1606
|
+
num_samples = _num_samples(df)
|
|
1597
1607
|
if num_samples > Dataset.FIT_SAMPLE_WITH_EVAL_SET_THRESHOLD:
|
|
1598
1608
|
self.logger.info(f"Downsampling from {num_samples} to {Dataset.FIT_SAMPLE_WITH_EVAL_SET_ROWS}")
|
|
1599
|
-
|
|
1609
|
+
df = df.sample(
|
|
1600
1610
|
n=Dataset.FIT_SAMPLE_WITH_EVAL_SET_ROWS, random_state=self.random_state
|
|
1601
1611
|
)
|
|
1602
1612
|
|
|
1603
|
-
df_extended, search_keys = self._extend_x(
|
|
1613
|
+
df_extended, search_keys = self._extend_x(df, is_demo_dataset)
|
|
1604
1614
|
|
|
1605
1615
|
eval_set_sampled_dict = dict()
|
|
1606
1616
|
|
|
1607
|
-
|
|
1617
|
+
df = self.__add_fit_system_record_id(df, dict(), self.search_keys)
|
|
1608
1618
|
|
|
1609
1619
|
x_columns = [
|
|
1610
1620
|
c
|
|
1611
1621
|
for c in df_extended.columns
|
|
1612
1622
|
if c not in [TARGET, EVAL_SET_INDEX, DateTimeSearchKeyConverter.DATETIME_COL]
|
|
1613
1623
|
]
|
|
1624
|
+
x_columns.append(SYSTEM_RECORD_ID)
|
|
1614
1625
|
|
|
1615
1626
|
tmp_target_name = "__target"
|
|
1616
|
-
|
|
1627
|
+
df.rename(columns={SYSTEM_RECORD_ID: SORT_ID, TARGET: tmp_target_name}, inplace=True)
|
|
1617
1628
|
|
|
1618
1629
|
enriched_df = self.transform(
|
|
1619
|
-
|
|
1630
|
+
df,
|
|
1620
1631
|
exclude_features_sources=exclude_features_sources,
|
|
1621
1632
|
silent_mode=True,
|
|
1622
1633
|
trace_id=trace_id,
|
|
@@ -1630,6 +1641,7 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1630
1641
|
enriched_df.rename(columns={SORT_ID: SYSTEM_RECORD_ID, tmp_target_name: TARGET}, inplace=True)
|
|
1631
1642
|
|
|
1632
1643
|
enriched_Xy = enriched_df.query(f"{EVAL_SET_INDEX} == 0")
|
|
1644
|
+
x_columns = [col for col in x_columns if col in enriched_Xy.columns]
|
|
1633
1645
|
X_sampled = enriched_Xy[x_columns].copy()
|
|
1634
1646
|
y_sampled = enriched_Xy[TARGET].copy()
|
|
1635
1647
|
enriched_X = enriched_Xy.drop(columns=[TARGET, EVAL_SET_INDEX])
|
|
@@ -1652,15 +1664,16 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1652
1664
|
|
|
1653
1665
|
df_extended, search_keys = self._extend_x(df, is_demo_dataset)
|
|
1654
1666
|
|
|
1655
|
-
|
|
1667
|
+
df = self.__add_fit_system_record_id(df, dict(), self.search_keys)
|
|
1656
1668
|
|
|
1657
|
-
x_columns = [c for c in df_extended if c not in [TARGET, DateTimeSearchKeyConverter.DATETIME_COL]]
|
|
1669
|
+
x_columns = [c for c in df_extended.columns if c not in [TARGET, DateTimeSearchKeyConverter.DATETIME_COL]]
|
|
1670
|
+
x_columns.append(SYSTEM_RECORD_ID)
|
|
1658
1671
|
|
|
1659
1672
|
tmp_target_name = "__target"
|
|
1660
|
-
|
|
1673
|
+
df.rename(columns={SYSTEM_RECORD_ID: SORT_ID, TARGET: tmp_target_name}, inplace=True)
|
|
1661
1674
|
|
|
1662
1675
|
enriched_Xy = self.transform(
|
|
1663
|
-
|
|
1676
|
+
df,
|
|
1664
1677
|
exclude_features_sources=exclude_features_sources,
|
|
1665
1678
|
silent_mode=True,
|
|
1666
1679
|
trace_id=trace_id,
|
|
@@ -1673,7 +1686,8 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1673
1686
|
|
|
1674
1687
|
enriched_Xy.rename(columns={SORT_ID: SYSTEM_RECORD_ID, tmp_target_name: TARGET}, inplace=True)
|
|
1675
1688
|
|
|
1676
|
-
|
|
1689
|
+
x_columns = [col for col in x_columns if col in enriched_Xy.columns]
|
|
1690
|
+
X_sampled = enriched_Xy[x_columns].copy()
|
|
1677
1691
|
y_sampled = enriched_Xy[TARGET].copy()
|
|
1678
1692
|
enriched_X = enriched_Xy.drop(columns=TARGET)
|
|
1679
1693
|
|
|
@@ -1792,15 +1806,16 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1792
1806
|
|
|
1793
1807
|
is_demo_dataset = hash_input(validated_X) in DEMO_DATASET_HASHES
|
|
1794
1808
|
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1809
|
+
# No more trial features functionality
|
|
1810
|
+
# if (
|
|
1811
|
+
# self._has_trial_features(exclude_features_sources)
|
|
1812
|
+
# and not metrics_calculation
|
|
1813
|
+
# and not self.__is_registered
|
|
1814
|
+
# and not is_demo_dataset
|
|
1815
|
+
# ):
|
|
1816
|
+
# msg = self.bundle.get("transform_with_trial_features")
|
|
1817
|
+
# self.logger.warning(msg)
|
|
1818
|
+
# print(msg)
|
|
1804
1819
|
|
|
1805
1820
|
columns_to_drop = [c for c in validated_X.columns if c in self.feature_names_]
|
|
1806
1821
|
if len(columns_to_drop) > 0:
|
|
@@ -2018,14 +2033,14 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
2018
2033
|
if len(
|
|
2019
2034
|
filtered_features[
|
|
2020
2035
|
filtered_features[comm_schema_header].isin(
|
|
2021
|
-
[CommercialSchema.PAID.value
|
|
2036
|
+
[CommercialSchema.PAID.value]
|
|
2022
2037
|
)
|
|
2023
2038
|
]
|
|
2024
2039
|
):
|
|
2025
2040
|
return []
|
|
2026
2041
|
excluded_features = external_features[~external_features.index.isin(filtered_features.index)].copy()
|
|
2027
2042
|
excluded_features = excluded_features[
|
|
2028
|
-
excluded_features[comm_schema_header].isin([CommercialSchema.PAID.value
|
|
2043
|
+
excluded_features[comm_schema_header].isin([CommercialSchema.PAID.value])
|
|
2029
2044
|
]
|
|
2030
2045
|
return excluded_features[feature_name_header].values.tolist()
|
|
2031
2046
|
|
|
@@ -3046,11 +3061,6 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
3046
3061
|
else:
|
|
3047
3062
|
feature_name = internal_feature_name
|
|
3048
3063
|
|
|
3049
|
-
commercial_schema = (
|
|
3050
|
-
"Premium"
|
|
3051
|
-
if feature_meta.commercial_schema in ["Trial", "Paid"] or feature_meta.commercial_schema is None
|
|
3052
|
-
else feature_meta.commercial_schema
|
|
3053
|
-
)
|
|
3054
3064
|
features_info.append(
|
|
3055
3065
|
{
|
|
3056
3066
|
self.bundle.get("features_info_name"): feature_name,
|
|
@@ -3059,7 +3069,7 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
3059
3069
|
self.bundle.get("features_info_value_preview"): feature_sample,
|
|
3060
3070
|
self.bundle.get("features_info_provider"): provider,
|
|
3061
3071
|
self.bundle.get("features_info_source"): source,
|
|
3062
|
-
self.bundle.get("
|
|
3072
|
+
self.bundle.get("features_info_update_frequency"): feature_meta.update_frequency,
|
|
3063
3073
|
}
|
|
3064
3074
|
)
|
|
3065
3075
|
features_info_without_links.append(
|
|
@@ -3070,7 +3080,7 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
3070
3080
|
self.bundle.get("features_info_value_preview"): feature_sample,
|
|
3071
3081
|
self.bundle.get("features_info_provider"): internal_provider,
|
|
3072
3082
|
self.bundle.get("features_info_source"): internal_source,
|
|
3073
|
-
self.bundle.get("
|
|
3083
|
+
self.bundle.get("features_info_update_frequency"): feature_meta.update_frequency,
|
|
3074
3084
|
}
|
|
3075
3085
|
)
|
|
3076
3086
|
internal_features_info.append(
|
|
@@ -3085,6 +3095,7 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
3085
3095
|
self.bundle.get("features_info_source"): internal_source,
|
|
3086
3096
|
"source_link": feature_meta.data_source_link,
|
|
3087
3097
|
self.bundle.get("features_info_commercial_schema"): feature_meta.commercial_schema or "",
|
|
3098
|
+
self.bundle.get("features_info_update_frequency"): feature_meta.update_frequency,
|
|
3088
3099
|
}
|
|
3089
3100
|
)
|
|
3090
3101
|
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FingerprintJS v3.4.2 - Copyright (c) FingerprintJS, Inc, 2023 (https://fingerprint.com)
|
|
3
|
+
* Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
|
|
4
|
+
*
|
|
5
|
+
* This software contains code from open-source projects:
|
|
6
|
+
* MurmurHash3 by Karan Lyons (https://github.com/karanlyons/murmurHash3.js)
|
|
7
|
+
*/
|
|
8
|
+
var e=function(){return e=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var o in n=arguments[t])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e},e.apply(this,arguments)};function n(e,n,t,r){return new(t||(t=Promise))((function(o,a){function i(e){try{u(r.next(e))}catch(n){a(n)}}function c(e){try{u(r.throw(e))}catch(n){a(n)}}function u(e){var n;e.done?o(e.value):(n=e.value,n instanceof t?n:new t((function(e){e(n)}))).then(i,c)}u((r=r.apply(e,n||[])).next())}))}function t(e,n){var t,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(u){return function(c){if(t)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(t=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=n.call(e,i)}catch(u){c=[6,u],r=0}finally{t=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}function r(e,n,t){if(t||2===arguments.length)for(var r,o=0,a=n.length;o<a;o++)!r&&o in n||(r||(r=Array.prototype.slice.call(n,0,o)),r[o]=n[o]);return e.concat(r||Array.prototype.slice.call(n))}function o(e,n){return new Promise((function(t){return setTimeout(t,e,n)}))}function a(e){return!!e&&"function"==typeof e.then}function i(e,n){try{var t=e();a(t)?t.then((function(e){return n(!0,e)}),(function(e){return n(!1,e)})):n(!0,t)}catch(r){n(!1,r)}}function c(e,r,a){return void 0===a&&(a=16),n(this,void 0,void 0,(function(){var n,i,c,u;return t(this,(function(t){switch(t.label){case 0:n=Array(e.length),i=Date.now(),c=0,t.label=1;case 1:return c<e.length?(n[c]=r(e[c],c),(u=Date.now())>=i+a?(i=u,[4,o(0)]):[3,3]):[3,4];case 2:t.sent(),t.label=3;case 3:return++c,[3,1];case 4:return[2,n]}}))}))}function u(e){e.then(void 0,(function(){}))}function l(e,n){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],n=[n[0]>>>16,65535&n[0],n[1]>>>16,65535&n[1]];var t=[0,0,0,0];return t[3]+=e[3]+n[3],t[2]+=t[3]>>>16,t[3]&=65535,t[2]+=e[2]+n[2],t[1]+=t[2]>>>16,t[2]&=65535,t[1]+=e[1]+n[1],t[0]+=t[1]>>>16,t[1]&=65535,t[0]+=e[0]+n[0],t[0]&=65535,[t[0]<<16|t[1],t[2]<<16|t[3]]}function s(e,n){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],n=[n[0]>>>16,65535&n[0],n[1]>>>16,65535&n[1]];var t=[0,0,0,0];return t[3]+=e[3]*n[3],t[2]+=t[3]>>>16,t[3]&=65535,t[2]+=e[2]*n[3],t[1]+=t[2]>>>16,t[2]&=65535,t[2]+=e[3]*n[2],t[1]+=t[2]>>>16,t[2]&=65535,t[1]+=e[1]*n[3],t[0]+=t[1]>>>16,t[1]&=65535,t[1]+=e[2]*n[2],t[0]+=t[1]>>>16,t[1]&=65535,t[1]+=e[3]*n[1],t[0]+=t[1]>>>16,t[1]&=65535,t[0]+=e[0]*n[3]+e[1]*n[2]+e[2]*n[1]+e[3]*n[0],t[0]&=65535,[t[0]<<16|t[1],t[2]<<16|t[3]]}function d(e,n){return 32===(n%=64)?[e[1],e[0]]:n<32?[e[0]<<n|e[1]>>>32-n,e[1]<<n|e[0]>>>32-n]:(n-=32,[e[1]<<n|e[0]>>>32-n,e[0]<<n|e[1]>>>32-n])}function m(e,n){return 0===(n%=64)?e:n<32?[e[0]<<n|e[1]>>>32-n,e[1]<<n]:[e[1]<<n-32,0]}function f(e,n){return[e[0]^n[0],e[1]^n[1]]}function v(e){return e=f(e,[0,e[0]>>>1]),e=f(e=s(e,[4283543511,3981806797]),[0,e[0]>>>1]),e=f(e=s(e,[3301882366,444984403]),[0,e[0]>>>1])}function h(e,n){n=n||0;var t,r=(e=e||"").length%16,o=e.length-r,a=[0,n],i=[0,n],c=[0,0],u=[0,0],h=[2277735313,289559509],p=[1291169091,658871167];for(t=0;t<o;t+=16)c=[255&e.charCodeAt(t+4)|(255&e.charCodeAt(t+5))<<8|(255&e.charCodeAt(t+6))<<16|(255&e.charCodeAt(t+7))<<24,255&e.charCodeAt(t)|(255&e.charCodeAt(t+1))<<8|(255&e.charCodeAt(t+2))<<16|(255&e.charCodeAt(t+3))<<24],u=[255&e.charCodeAt(t+12)|(255&e.charCodeAt(t+13))<<8|(255&e.charCodeAt(t+14))<<16|(255&e.charCodeAt(t+15))<<24,255&e.charCodeAt(t+8)|(255&e.charCodeAt(t+9))<<8|(255&e.charCodeAt(t+10))<<16|(255&e.charCodeAt(t+11))<<24],c=d(c=s(c,h),31),a=l(a=d(a=f(a,c=s(c,p)),27),i),a=l(s(a,[0,5]),[0,1390208809]),u=d(u=s(u,p),33),i=l(i=d(i=f(i,u=s(u,h)),31),a),i=l(s(i,[0,5]),[0,944331445]);switch(c=[0,0],u=[0,0],r){case 15:u=f(u,m([0,e.charCodeAt(t+14)],48));case 14:u=f(u,m([0,e.charCodeAt(t+13)],40));case 13:u=f(u,m([0,e.charCodeAt(t+12)],32));case 12:u=f(u,m([0,e.charCodeAt(t+11)],24));case 11:u=f(u,m([0,e.charCodeAt(t+10)],16));case 10:u=f(u,m([0,e.charCodeAt(t+9)],8));case 9:u=s(u=f(u,[0,e.charCodeAt(t+8)]),p),i=f(i,u=s(u=d(u,33),h));case 8:c=f(c,m([0,e.charCodeAt(t+7)],56));case 7:c=f(c,m([0,e.charCodeAt(t+6)],48));case 6:c=f(c,m([0,e.charCodeAt(t+5)],40));case 5:c=f(c,m([0,e.charCodeAt(t+4)],32));case 4:c=f(c,m([0,e.charCodeAt(t+3)],24));case 3:c=f(c,m([0,e.charCodeAt(t+2)],16));case 2:c=f(c,m([0,e.charCodeAt(t+1)],8));case 1:c=s(c=f(c,[0,e.charCodeAt(t)]),h),a=f(a,c=s(c=d(c,31),p))}return a=l(a=f(a,[0,e.length]),i=f(i,[0,e.length])),i=l(i,a),a=l(a=v(a),i=v(i)),i=l(i,a),("00000000"+(a[0]>>>0).toString(16)).slice(-8)+("00000000"+(a[1]>>>0).toString(16)).slice(-8)+("00000000"+(i[0]>>>0).toString(16)).slice(-8)+("00000000"+(i[1]>>>0).toString(16)).slice(-8)}function p(e){return parseInt(e)}function b(e){return parseFloat(e)}function y(e,n){return"number"==typeof e&&isNaN(e)?n:e}function g(e){return e.reduce((function(e,n){return e+(n?1:0)}),0)}function w(e,n){if(void 0===n&&(n=1),Math.abs(n)>=1)return Math.round(e/n)*n;var t=1/n;return Math.round(e*t)/t}function L(e){return e&&"object"==typeof e&&"message"in e?e:{message:e}}function k(e){return"function"!=typeof e}function V(e,r,o){var a=Object.keys(e).filter((function(e){return!function(e,n){for(var t=0,r=e.length;t<r;++t)if(e[t]===n)return!0;return!1}(o,e)})),l=c(a,(function(n){return function(e,n){var t=new Promise((function(t){var r=Date.now();i(e.bind(null,n),(function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var o=Date.now()-r;if(!e[0])return t((function(){return{error:L(e[1]),duration:o}}));var a=e[1];if(k(a))return t((function(){return{value:a,duration:o}}));t((function(){return new Promise((function(e){var n=Date.now();i(a,(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var a=o+Date.now()-n;if(!t[0])return e({error:L(t[1]),duration:a});e({value:t[1],duration:a})}))}))}))}))}));return u(t),function(){return t.then((function(e){return e()}))}}(e[n],r)}));return u(l),function(){return n(this,void 0,void 0,(function(){var e,n,r,o;return t(this,(function(t){switch(t.label){case 0:return[4,l];case 1:return[4,c(t.sent(),(function(e){var n=e();return u(n),n}))];case 2:return e=t.sent(),[4,Promise.all(e)];case 3:for(n=t.sent(),r={},o=0;o<a.length;++o)r[a[o]]=n[o];return[2,r]}}))}))}}function Z(e,n){var t=function(e){return k(e)?n(e):function(){var t=e();return a(t)?t.then(n):n(t)}};return function(n){var r=e(n);return a(r)?r.then(t):t(r)}}function W(){var e=window,n=navigator;return g(["MSCSSMatrix"in e,"msSetImmediate"in e,"msIndexedDB"in e,"msMaxTouchPoints"in n,"msPointerEnabled"in n])>=4}function C(){var e=window,n=navigator;return g(["msWriteProfilerMark"in e,"MSStream"in e,"msLaunchUri"in n,"msSaveBlob"in n])>=3&&!W()}function S(){var e=window,n=navigator;return g(["webkitPersistentStorage"in n,"webkitTemporaryStorage"in n,0===n.vendor.indexOf("Google"),"webkitResolveLocalFileSystemURL"in e,"BatteryManager"in e,"webkitMediaStream"in e,"webkitSpeechGrammar"in e])>=5}function x(){var e=window,n=navigator;return g(["ApplePayError"in e,"CSSPrimitiveValue"in e,"Counter"in e,0===n.vendor.indexOf("Apple"),"getStorageUpdates"in n,"WebKitMediaKeys"in e])>=4}function F(){var e=window;return g(["safari"in e,!("DeviceMotionEvent"in e),!("ongestureend"in e),!("standalone"in navigator)])>=3}function Y(){var e,n,t=window;return g(["buildID"in navigator,"MozAppearance"in(null!==(n=null===(e=document.documentElement)||void 0===e?void 0:e.style)&&void 0!==n?n:{}),"onmozfullscreenchange"in t,"mozInnerScreenX"in t,"CSSMozDocumentRule"in t,"CanvasCaptureMediaStream"in t])>=4}function M(){var e=document;return e.fullscreenElement||e.msFullscreenElement||e.mozFullScreenElement||e.webkitFullscreenElement||null}function G(){var e=S(),n=Y();if(!e&&!n)return!1;var t=window;return g(["onorientationchange"in t,"orientation"in t,e&&!("SharedWorker"in t),n&&/android/i.test(navigator.appVersion)])>=2}function R(e){var n=new Error(e);return n.name=e,n}function X(e,r,a){var i,c,u;return void 0===a&&(a=50),n(this,void 0,void 0,(function(){var n,l;return t(this,(function(t){switch(t.label){case 0:n=document,t.label=1;case 1:return n.body?[3,3]:[4,o(a)];case 2:return t.sent(),[3,1];case 3:l=n.createElement("iframe"),t.label=4;case 4:return t.trys.push([4,,10,11]),[4,new Promise((function(e,t){var o=!1,a=function(){o=!0,e()};l.onload=a,l.onerror=function(e){o=!0,t(e)};var i=l.style;i.setProperty("display","block","important"),i.position="absolute",i.top="0",i.left="0",i.visibility="hidden",r&&"srcdoc"in l?l.srcdoc=r:l.src="about:blank",n.body.appendChild(l);var c=function(){var e,n;o||("complete"===(null===(n=null===(e=l.contentWindow)||void 0===e?void 0:e.document)||void 0===n?void 0:n.readyState)?a():setTimeout(c,10))};c()}))];case 5:t.sent(),t.label=6;case 6:return(null===(c=null===(i=l.contentWindow)||void 0===i?void 0:i.document)||void 0===c?void 0:c.body)?[3,8]:[4,o(a)];case 7:return t.sent(),[3,6];case 8:return[4,e(l,l.contentWindow)];case 9:return[2,t.sent()];case 10:return null===(u=l.parentNode)||void 0===u||u.removeChild(l),[7];case 11:return[2]}}))}))}function A(e){for(var n=function(e){for(var n,t,r="Unexpected syntax '".concat(e,"'"),o=/^\s*([a-z-]*)(.*)$/i.exec(e),a=o[1]||void 0,i={},c=/([.:#][\w-]+|\[.+?\])/gi,u=function(e,n){i[e]=i[e]||[],i[e].push(n)};;){var l=c.exec(o[2]);if(!l)break;var s=l[0];switch(s[0]){case".":u("class",s.slice(1));break;case"#":u("id",s.slice(1));break;case"[":var d=/^\[([\w-]+)([~|^$*]?=("(.*?)"|([\w-]+)))?(\s+[is])?\]$/.exec(s);if(!d)throw new Error(r);u(d[1],null!==(t=null!==(n=d[4])&&void 0!==n?n:d[5])&&void 0!==t?t:"");break;default:throw new Error(r)}}return[a,i]}(e),t=n[0],r=n[1],o=document.createElement(null!=t?t:"div"),a=0,i=Object.keys(r);a<i.length;a++){var c=i[a],u=r[c].join(" ");"style"===c?j(o.style,u):o.setAttribute(c,u)}return o}function j(e,n){for(var t=0,r=n.split(";");t<r.length;t++){var o=r[t],a=/^\s*([\w-]+)\s*:\s*(.+?)(\s*!([\w-]+))?\s*$/.exec(o);if(a){var i=a[1],c=a[2],u=a[4];e.setProperty(i,c,u||"")}}}var I=["monospace","sans-serif","serif"],J=["sans-serif-thin","ARNO PRO","Agency FB","Arabic Typesetting","Arial Unicode MS","AvantGarde Bk BT","BankGothic Md BT","Batang","Bitstream Vera Sans Mono","Calibri","Century","Century Gothic","Clarendon","EUROSTILE","Franklin Gothic","Futura Bk BT","Futura Md BT","GOTHAM","Gill Sans","HELV","Haettenschweiler","Helvetica Neue","Humanst521 BT","Leelawadee","Letter Gothic","Levenim MT","Lucida Bright","Lucida Sans","Menlo","MS Mincho","MS Outlook","MS Reference Specialty","MS UI Gothic","MT Extra","MYRIAD PRO","Marlett","Meiryo UI","Microsoft Uighur","Minion Pro","Monotype Corsiva","PMingLiU","Pristina","SCRIPTINA","Segoe UI Light","Serifa","SimHei","Small Fonts","Staccato222 BT","TRAJAN PRO","Univers CE 55 Medium","Vrinda","ZWAdobeF"];function H(e){return e.toDataURL()}var P,N;function z(){var e=this;return function(){if(void 0===N){var e=function(){var n=D();E(n)?N=setTimeout(e,2500):(P=n,N=void 0)};e()}}(),function(){return n(e,void 0,void 0,(function(){var e;return t(this,(function(n){switch(n.label){case 0:return E(e=D())?P?[2,r([],P,!0)]:M()?[4,(t=document,(t.exitFullscreen||t.msExitFullscreen||t.mozCancelFullScreen||t.webkitExitFullscreen).call(t))]:[3,2]:[3,2];case 1:n.sent(),e=D(),n.label=2;case 2:return E(e)||(P=e),[2,e]}var t}))}))}}function D(){var e=screen;return[y(b(e.availTop),null),y(b(e.width)-b(e.availWidth)-y(b(e.availLeft),0),null),y(b(e.height)-b(e.availHeight)-y(b(e.availTop),0),null),y(b(e.availLeft),null)]}function E(e){for(var n=0;n<4;++n)if(e[n])return!1;return!0}function T(e){var r;return n(this,void 0,void 0,(function(){var n,a,i,c,u,l,s;return t(this,(function(t){switch(t.label){case 0:for(n=document,a=n.createElement("div"),i=new Array(e.length),c={},B(a),s=0;s<e.length;++s)"DIALOG"===(u=A(e[s])).tagName&&u.show(),B(l=n.createElement("div")),l.appendChild(u),a.appendChild(l),i[s]=u;t.label=1;case 1:return n.body?[3,3]:[4,o(50)];case 2:return t.sent(),[3,1];case 3:n.body.appendChild(a);try{for(s=0;s<e.length;++s)i[s].offsetParent||(c[e[s]]=!0)}finally{null===(r=a.parentNode)||void 0===r||r.removeChild(a)}return[2,c]}}))}))}function B(e){e.style.setProperty("display","block","important")}function _(e){return matchMedia("(inverted-colors: ".concat(e,")")).matches}function O(e){return matchMedia("(forced-colors: ".concat(e,")")).matches}function U(e){return matchMedia("(prefers-contrast: ".concat(e,")")).matches}function Q(e){return matchMedia("(prefers-reduced-motion: ".concat(e,")")).matches}function K(e){return matchMedia("(dynamic-range: ".concat(e,")")).matches}var q=Math,$=function(){return 0};var ee={default:[],apple:[{font:"-apple-system-body"}],serif:[{fontFamily:"serif"}],sans:[{fontFamily:"sans-serif"}],mono:[{fontFamily:"monospace"}],min:[{fontSize:"1px"}],system:[{fontFamily:"system-ui"}]};var ne={fonts:function(){return X((function(e,n){var t=n.document,r=t.body;r.style.fontSize="48px";var o=t.createElement("div"),a={},i={},c=function(e){var n=t.createElement("span"),r=n.style;return r.position="absolute",r.top="0",r.left="0",r.fontFamily=e,n.textContent="mmMwWLliI0O&1",o.appendChild(n),n},u=I.map(c),l=function(){for(var e={},n=function(n){e[n]=I.map((function(e){return function(e,n){return c("'".concat(e,"',").concat(n))}(n,e)}))},t=0,r=J;t<r.length;t++){n(r[t])}return e}();r.appendChild(o);for(var s=0;s<I.length;s++)a[I[s]]=u[s].offsetWidth,i[I[s]]=u[s].offsetHeight;return J.filter((function(e){return n=l[e],I.some((function(e,t){return n[t].offsetWidth!==a[e]||n[t].offsetHeight!==i[e]}));var n}))}))},domBlockers:function(e){var r=(void 0===e?{}:e).debug;return n(this,void 0,void 0,(function(){var e,n,o,a,i;return t(this,(function(t){switch(t.label){case 0:return x()||G()?(c=atob,e={abpIndo:["#Iklan-Melayang","#Kolom-Iklan-728","#SidebarIklan-wrapper",'[title="ALIENBOLA" i]',c("I0JveC1CYW5uZXItYWRz")],abpvn:[".quangcao","#mobileCatfish",c("LmNsb3NlLWFkcw=="),'[id^="bn_bottom_fixed_"]',"#pmadv"],adBlockFinland:[".mainostila",c("LnNwb25zb3JpdA=="),".ylamainos",c("YVtocmVmKj0iL2NsaWNrdGhyZ2guYXNwPyJd"),c("YVtocmVmXj0iaHR0cHM6Ly9hcHAucmVhZHBlYWsuY29tL2FkcyJd")],adBlockPersian:["#navbar_notice_50",".kadr",'TABLE[width="140px"]',"#divAgahi",c("YVtocmVmXj0iaHR0cDovL2cxLnYuZndtcm0ubmV0L2FkLyJd")],adBlockWarningRemoval:["#adblock-honeypot",".adblocker-root",".wp_adblock_detect",c("LmhlYWRlci1ibG9ja2VkLWFk"),c("I2FkX2Jsb2NrZXI=")],adGuardAnnoyances:[".hs-sosyal","#cookieconsentdiv",'div[class^="app_gdpr"]',".as-oil",'[data-cypress="soft-push-notification-modal"]'],adGuardBase:[".BetterJsPopOverlay",c("I2FkXzMwMFgyNTA="),c("I2Jhbm5lcmZsb2F0MjI="),c("I2NhbXBhaWduLWJhbm5lcg=="),c("I0FkLUNvbnRlbnQ=")],adGuardChinese:[c("LlppX2FkX2FfSA=="),c("YVtocmVmKj0iLmh0aGJldDM0LmNvbSJd"),"#widget-quan",c("YVtocmVmKj0iLzg0OTkyMDIwLnh5eiJd"),c("YVtocmVmKj0iLjE5NTZobC5jb20vIl0=")],adGuardFrench:["#pavePub",c("LmFkLWRlc2t0b3AtcmVjdGFuZ2xl"),".mobile_adhesion",".widgetadv",c("LmFkc19iYW4=")],adGuardGerman:['aside[data-portal-id="leaderboard"]'],adGuardJapanese:["#kauli_yad_1",c("YVtocmVmXj0iaHR0cDovL2FkMi50cmFmZmljZ2F0ZS5uZXQvIl0="),c("Ll9wb3BJbl9pbmZpbml0ZV9hZA=="),c("LmFkZ29vZ2xl"),c("Ll9faXNib29zdFJldHVybkFk")],adGuardMobile:[c("YW1wLWF1dG8tYWRz"),c("LmFtcF9hZA=="),'amp-embed[type="24smi"]',"#mgid_iframe1",c("I2FkX2ludmlld19hcmVh")],adGuardRussian:[c("YVtocmVmXj0iaHR0cHM6Ly9hZC5sZXRtZWFkcy5jb20vIl0="),c("LnJlY2xhbWE="),'div[id^="smi2adblock"]',c("ZGl2W2lkXj0iQWRGb3hfYmFubmVyXyJd"),"#psyduckpockeball"],adGuardSocial:[c("YVtocmVmXj0iLy93d3cuc3R1bWJsZXVwb24uY29tL3N1Ym1pdD91cmw9Il0="),c("YVtocmVmXj0iLy90ZWxlZ3JhbS5tZS9zaGFyZS91cmw/Il0="),".etsy-tweet","#inlineShare",".popup-social"],adGuardSpanishPortuguese:["#barraPublicidade","#Publicidade","#publiEspecial","#queTooltip",".cnt-publi"],adGuardTrackingProtection:["#qoo-counter",c("YVtocmVmXj0iaHR0cDovL2NsaWNrLmhvdGxvZy5ydS8iXQ=="),c("YVtocmVmXj0iaHR0cDovL2hpdGNvdW50ZXIucnUvdG9wL3N0YXQucGhwIl0="),c("YVtocmVmXj0iaHR0cDovL3RvcC5tYWlsLnJ1L2p1bXAiXQ=="),"#top100counter"],adGuardTurkish:["#backkapat",c("I3Jla2xhbWk="),c("YVtocmVmXj0iaHR0cDovL2Fkc2Vydi5vbnRlay5jb20udHIvIl0="),c("YVtocmVmXj0iaHR0cDovL2l6bGVuemkuY29tL2NhbXBhaWduLyJd"),c("YVtocmVmXj0iaHR0cDovL3d3dy5pbnN0YWxsYWRzLm5ldC8iXQ==")],bulgarian:[c("dGQjZnJlZW5ldF90YWJsZV9hZHM="),"#ea_intext_div",".lapni-pop-over","#xenium_hot_offers"],easyList:[".yb-floorad",c("LndpZGdldF9wb19hZHNfd2lkZ2V0"),c("LnRyYWZmaWNqdW5reS1hZA=="),".textad_headline",c("LnNwb25zb3JlZC10ZXh0LWxpbmtz")],easyListChina:[c("LmFwcGd1aWRlLXdyYXBbb25jbGljayo9ImJjZWJvcy5jb20iXQ=="),c("LmZyb250cGFnZUFkdk0="),"#taotaole","#aafoot.top_box",".cfa_popup"],easyListCookie:[".ezmob-footer",".cc-CookieWarning","[data-cookie-number]",c("LmF3LWNvb2tpZS1iYW5uZXI="),".sygnal24-gdpr-modal-wrap"],easyListCzechSlovak:["#onlajny-stickers",c("I3Jla2xhbW5pLWJveA=="),c("LnJla2xhbWEtbWVnYWJvYXJk"),".sklik",c("W2lkXj0ic2tsaWtSZWtsYW1hIl0=")],easyListDutch:[c("I2FkdmVydGVudGll"),c("I3ZpcEFkbWFya3RCYW5uZXJCbG9jaw=="),".adstekst",c("YVtocmVmXj0iaHR0cHM6Ly94bHR1YmUubmwvY2xpY2svIl0="),"#semilo-lrectangle"],easyListGermany:["#SSpotIMPopSlider",c("LnNwb25zb3JsaW5rZ3J1ZW4="),c("I3dlcmJ1bmdza3k="),c("I3Jla2xhbWUtcmVjaHRzLW1pdHRl"),c("YVtocmVmXj0iaHR0cHM6Ly9iZDc0Mi5jb20vIl0=")],easyListItaly:[c("LmJveF9hZHZfYW5udW5jaQ=="),".sb-box-pubbliredazionale",c("YVtocmVmXj0iaHR0cDovL2FmZmlsaWF6aW9uaWFkcy5zbmFpLml0LyJd"),c("YVtocmVmXj0iaHR0cHM6Ly9hZHNlcnZlci5odG1sLml0LyJd"),c("YVtocmVmXj0iaHR0cHM6Ly9hZmZpbGlhemlvbmlhZHMuc25haS5pdC8iXQ==")],easyListLithuania:[c("LnJla2xhbW9zX3RhcnBhcw=="),c("LnJla2xhbW9zX251b3JvZG9z"),c("aW1nW2FsdD0iUmVrbGFtaW5pcyBza3lkZWxpcyJd"),c("aW1nW2FsdD0iRGVkaWt1b3RpLmx0IHNlcnZlcmlhaSJd"),c("aW1nW2FsdD0iSG9zdGluZ2FzIFNlcnZlcmlhaS5sdCJd")],estonian:[c("QVtocmVmKj0iaHR0cDovL3BheTRyZXN1bHRzMjQuZXUiXQ==")],fanboyAnnoyances:["#ac-lre-player",".navigate-to-top","#subscribe_popup",".newsletter_holder","#back-top"],fanboyAntiFacebook:[".util-bar-module-firefly-visible"],fanboyEnhancedTrackers:[".open.pushModal","#issuem-leaky-paywall-articles-zero-remaining-nag","#sovrn_container",'div[class$="-hide"][zoompage-fontsize][style="display: block;"]',".BlockNag__Card"],fanboySocial:["#FollowUs","#meteored_share","#social_follow",".article-sharer",".community__social-desc"],frellwitSwedish:[c("YVtocmVmKj0iY2FzaW5vcHJvLnNlIl1bdGFyZ2V0PSJfYmxhbmsiXQ=="),c("YVtocmVmKj0iZG9rdG9yLXNlLm9uZWxpbmsubWUiXQ=="),"article.category-samarbete",c("ZGl2LmhvbGlkQWRz"),"ul.adsmodern"],greekAdBlock:[c("QVtocmVmKj0iYWRtYW4ub3RlbmV0LmdyL2NsaWNrPyJd"),c("QVtocmVmKj0iaHR0cDovL2F4aWFiYW5uZXJzLmV4b2R1cy5nci8iXQ=="),c("QVtocmVmKj0iaHR0cDovL2ludGVyYWN0aXZlLmZvcnRobmV0LmdyL2NsaWNrPyJd"),"DIV.agores300","TABLE.advright"],hungarian:["#cemp_doboz",".optimonk-iframe-container",c("LmFkX19tYWlu"),c("W2NsYXNzKj0iR29vZ2xlQWRzIl0="),"#hirdetesek_box"],iDontCareAboutCookies:['.alert-info[data-block-track*="CookieNotice"]',".ModuleTemplateCookieIndicator",".o--cookies--container","#cookies-policy-sticky","#stickyCookieBar"],icelandicAbp:[c("QVtocmVmXj0iL2ZyYW1ld29yay9yZXNvdXJjZXMvZm9ybXMvYWRzLmFzcHgiXQ==")],latvian:[c("YVtocmVmPSJodHRwOi8vd3d3LnNhbGlkemluaS5sdi8iXVtzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMjBweDsgaGVpZ2h0OiA0MHB4OyBvdmVyZmxvdzogaGlkZGVuOyBwb3NpdGlvbjogcmVsYXRpdmU7Il0="),c("YVtocmVmPSJodHRwOi8vd3d3LnNhbGlkemluaS5sdi8iXVtzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOiA4OHB4OyBoZWlnaHQ6IDMxcHg7IG92ZXJmbG93OiBoaWRkZW47IHBvc2l0aW9uOiByZWxhdGl2ZTsiXQ==")],listKr:[c("YVtocmVmKj0iLy9hZC5wbGFuYnBsdXMuY28ua3IvIl0="),c("I2xpdmVyZUFkV3JhcHBlcg=="),c("YVtocmVmKj0iLy9hZHYuaW1hZHJlcC5jby5rci8iXQ=="),c("aW5zLmZhc3R2aWV3LWFk"),".revenue_unit_item.dable"],listeAr:[c("LmdlbWluaUxCMUFk"),".right-and-left-sponsers",c("YVtocmVmKj0iLmFmbGFtLmluZm8iXQ=="),c("YVtocmVmKj0iYm9vcmFxLm9yZyJd"),c("YVtocmVmKj0iZHViaXp6bGUuY29tL2FyLz91dG1fc291cmNlPSJd")],listeFr:[c("YVtocmVmXj0iaHR0cDovL3Byb21vLnZhZG9yLmNvbS8iXQ=="),c("I2FkY29udGFpbmVyX3JlY2hlcmNoZQ=="),c("YVtocmVmKj0id2Vib3JhbWEuZnIvZmNnaS1iaW4vIl0="),".site-pub-interstitiel",'div[id^="crt-"][data-criteo-id]'],officialPolish:["#ceneo-placeholder-ceneo-12",c("W2hyZWZePSJodHRwczovL2FmZi5zZW5kaHViLnBsLyJd"),c("YVtocmVmXj0iaHR0cDovL2Fkdm1hbmFnZXIudGVjaGZ1bi5wbC9yZWRpcmVjdC8iXQ=="),c("YVtocmVmXj0iaHR0cDovL3d3dy50cml6ZXIucGwvP3V0bV9zb3VyY2UiXQ=="),c("ZGl2I3NrYXBpZWNfYWQ=")],ro:[c("YVtocmVmXj0iLy9hZmZ0cmsuYWx0ZXgucm8vQ291bnRlci9DbGljayJd"),c("YVtocmVmXj0iaHR0cHM6Ly9ibGFja2ZyaWRheXNhbGVzLnJvL3Ryay9zaG9wLyJd"),c("YVtocmVmXj0iaHR0cHM6Ly9ldmVudC4ycGVyZm9ybWFudC5jb20vZXZlbnRzL2NsaWNrIl0="),c("YVtocmVmXj0iaHR0cHM6Ly9sLnByb2ZpdHNoYXJlLnJvLyJd"),'a[href^="/url/"]'],ruAd:[c("YVtocmVmKj0iLy9mZWJyYXJlLnJ1LyJd"),c("YVtocmVmKj0iLy91dGltZy5ydS8iXQ=="),c("YVtocmVmKj0iOi8vY2hpa2lkaWtpLnJ1Il0="),"#pgeldiz",".yandex-rtb-block"],thaiAds:["a[href*=macau-uta-popup]",c("I2Fkcy1nb29nbGUtbWlkZGxlX3JlY3RhbmdsZS1ncm91cA=="),c("LmFkczMwMHM="),".bumq",".img-kosana"],webAnnoyancesUltralist:["#mod-social-share-2","#social-tools",c("LmN0cGwtZnVsbGJhbm5lcg=="),".zergnet-recommend",".yt.btn-link.btn-md.btn"]},n=Object.keys(e),[4,T((i=[]).concat.apply(i,n.map((function(n){return e[n]}))))]):[2,void 0];case 1:return o=t.sent(),r&&function(e,n){for(var t="DOM blockers debug:\n```",r=0,o=Object.keys(e);r<o.length;r++){var a=o[r];t+="\n".concat(a,":");for(var i=0,c=e[a];i<c.length;i++){var u=c[i];t+="\n ".concat(n[u]?"🚫":"➡️"," ").concat(u)}}console.log("".concat(t,"\n```"))}(e,o),(a=n.filter((function(n){var t=e[n];return g(t.map((function(e){return o[e]})))>.6*t.length}))).sort(),[2,a]}var c}))}))},fontPreferences:function(){return function(e,n){void 0===n&&(n=4e3);return X((function(t,o){var a=o.document,i=a.body,c=i.style;c.width="".concat(n,"px"),c.webkitTextSizeAdjust=c.textSizeAdjust="none",S()?i.style.zoom="".concat(1/o.devicePixelRatio):x()&&(i.style.zoom="reset");var u=a.createElement("div");return u.textContent=r([],Array(n/20<<0),!0).map((function(){return"word"})).join(" "),i.appendChild(u),e(a,i)}),'<!doctype html><html><head><meta name="viewport" content="width=device-width, initial-scale=1">')}((function(e,n){for(var t={},r={},o=0,a=Object.keys(ee);o<a.length;o++){var i=a[o],c=ee[i],u=c[0],l=void 0===u?{}:u,s=c[1],d=void 0===s?"mmMwWLliI0fiflO&1":s,m=e.createElement("span");m.textContent=d,m.style.whiteSpace="nowrap";for(var f=0,v=Object.keys(l);f<v.length;f++){var h=v[f],p=l[h];void 0!==p&&(m.style[h]=p)}t[i]=m,n.appendChild(e.createElement("br")),n.appendChild(m)}for(var b=0,y=Object.keys(ee);b<y.length;b++){r[i=y[b]]=t[i].getBoundingClientRect().width}return r}))},audio:function(){var e=window,n=e.OfflineAudioContext||e.webkitOfflineAudioContext;if(!n)return-2;if(x()&&!F()&&!function(){var e=window;return g(["DOMRectList"in e,"RTCPeerConnectionIceEvent"in e,"SVGGeometryElement"in e,"ontransitioncancel"in e])>=3}())return-1;var t=new n(1,5e3,44100),r=t.createOscillator();r.type="triangle",r.frequency.value=1e4;var o=t.createDynamicsCompressor();o.threshold.value=-50,o.knee.value=40,o.ratio.value=12,o.attack.value=0,o.release.value=.25,r.connect(o),o.connect(t.destination),r.start(0);var i=function(e){var n=3,t=500,r=500,o=5e3,i=function(){};return[new Promise((function(c,l){var s=!1,d=0,m=0;e.oncomplete=function(e){return c(e.renderedBuffer)};var f=function(){setTimeout((function(){return l(R("timeout"))}),Math.min(r,m+o-Date.now()))},v=function(){try{var r=e.startRendering();switch(a(r)&&u(r),e.state){case"running":m=Date.now(),s&&f();break;case"suspended":document.hidden||d++,s&&d>=n?l(R("suspended")):setTimeout(v,t)}}catch(o){l(o)}};v(),i=function(){s||(s=!0,m>0&&f())}})),i]}(t),c=i[0],l=i[1],s=c.then((function(e){return function(e){for(var n=0,t=0;t<e.length;++t)n+=Math.abs(e[t]);return n}(e.getChannelData(0).subarray(4500))}),(function(e){if("timeout"===e.name||"suspended"===e.name)return-3;throw e}));return u(s),function(){return l(),s}},screenFrame:function(){var e=this,r=z();return function(){return n(e,void 0,void 0,(function(){var e,n;return t(this,(function(t){switch(t.label){case 0:return[4,r()];case 1:return e=t.sent(),[2,[(n=function(e){return null===e?null:w(e,10)})(e[0]),n(e[1]),n(e[2]),n(e[3])]]}}))}))}},osCpu:function(){return navigator.oscpu},languages:function(){var e,n=navigator,t=[],r=n.language||n.userLanguage||n.browserLanguage||n.systemLanguage;if(void 0!==r&&t.push([r]),Array.isArray(n.languages))S()&&g([!("MediaSettingsRange"in(e=window)),"RTCEncodedAudioFrame"in e,""+e.Intl=="[object Intl]",""+e.Reflect=="[object Reflect]"])>=3||t.push(n.languages);else if("string"==typeof n.languages){var o=n.languages;o&&t.push(o.split(","))}return t},colorDepth:function(){return window.screen.colorDepth},deviceMemory:function(){return y(b(navigator.deviceMemory),void 0)},screenResolution:function(){var e=screen,n=function(e){return y(p(e),null)},t=[n(e.width),n(e.height)];return t.sort().reverse(),t},hardwareConcurrency:function(){return y(p(navigator.hardwareConcurrency),void 0)},timezone:function(){var e,n=null===(e=window.Intl)||void 0===e?void 0:e.DateTimeFormat;if(n){var t=(new n).resolvedOptions().timeZone;if(t)return t}var r,o=(r=(new Date).getFullYear(),-Math.max(b(new Date(r,0,1).getTimezoneOffset()),b(new Date(r,6,1).getTimezoneOffset())));return"UTC".concat(o>=0?"+":"").concat(Math.abs(o))},sessionStorage:function(){try{return!!window.sessionStorage}catch(e){return!0}},localStorage:function(){try{return!!window.localStorage}catch(e){return!0}},indexedDB:function(){if(!W()&&!C())try{return!!window.indexedDB}catch(e){return!0}},openDatabase:function(){return!!window.openDatabase},cpuClass:function(){return navigator.cpuClass},platform:function(){var e=navigator.platform;return"MacIntel"===e&&x()&&!F()?function(){if("iPad"===navigator.platform)return!0;var e=screen,n=e.width/e.height;return g(["MediaSource"in window,!!Element.prototype.webkitRequestFullscreen,n>.65&&n<1.53])>=2}()?"iPad":"iPhone":e},plugins:function(){var e=navigator.plugins;if(e){for(var n=[],t=0;t<e.length;++t){var r=e[t];if(r){for(var o=[],a=0;a<r.length;++a){var i=r[a];o.push({type:i.type,suffixes:i.suffixes})}n.push({name:r.name,description:r.description,mimeTypes:o})}}return n}},canvas:function(){var e,n,t=!1,r=function(){var e=document.createElement("canvas");return e.width=1,e.height=1,[e,e.getContext("2d")]}(),o=r[0],a=r[1];if(function(e,n){return!(!n||!e.toDataURL)}(o,a)){t=function(e){return e.rect(0,0,10,10),e.rect(2,2,6,6),!e.isPointInPath(5,5,"evenodd")}(a),function(e,n){e.width=240,e.height=60,n.textBaseline="alphabetic",n.fillStyle="#f60",n.fillRect(100,1,62,20),n.fillStyle="#069",n.font='11pt "Times New Roman"';var t="Cwm fjordbank gly ".concat(String.fromCharCode(55357,56835));n.fillText(t,2,15),n.fillStyle="rgba(102, 204, 0, 0.2)",n.font="18pt Arial",n.fillText(t,4,45)}(o,a);var i=H(o);i!==H(o)?e=n="unstable":(n=i,function(e,n){e.width=122,e.height=110,n.globalCompositeOperation="multiply";for(var t=0,r=[["#f2f",40,40],["#2ff",80,40],["#ff2",60,80]];t<r.length;t++){var o=r[t],a=o[0],i=o[1],c=o[2];n.fillStyle=a,n.beginPath(),n.arc(i,c,40,0,2*Math.PI,!0),n.closePath(),n.fill()}n.fillStyle="#f9c",n.arc(60,60,60,0,2*Math.PI,!0),n.arc(60,60,20,0,2*Math.PI,!0),n.fill("evenodd")}(o,a),e=H(o))}else e=n="";return{winding:t,geometry:e,text:n}},touchSupport:function(){var e,n=navigator,t=0;void 0!==n.maxTouchPoints?t=p(n.maxTouchPoints):void 0!==n.msMaxTouchPoints&&(t=n.msMaxTouchPoints);try{document.createEvent("TouchEvent"),e=!0}catch(r){e=!1}return{maxTouchPoints:t,touchEvent:e,touchStart:"ontouchstart"in window}},vendor:function(){return navigator.vendor||""},vendorFlavors:function(){for(var e=[],n=0,t=["chrome","safari","__crWeb","__gCrWeb","yandex","__yb","__ybro","__firefox__","__edgeTrackingPreventionStatistics","webkit","oprt","samsungAr","ucweb","UCShellJava","puffinDevice"];n<t.length;n++){var r=t[n],o=window[r];o&&"object"==typeof o&&e.push(r)}return e.sort()},cookiesEnabled:function(){var e=document;try{e.cookie="cookietest=1; SameSite=Strict;";var n=-1!==e.cookie.indexOf("cookietest=");return e.cookie="cookietest=1; SameSite=Strict; expires=Thu, 01-Jan-1970 00:00:01 GMT",n}catch(t){return!1}},colorGamut:function(){for(var e=0,n=["rec2020","p3","srgb"];e<n.length;e++){var t=n[e];if(matchMedia("(color-gamut: ".concat(t,")")).matches)return t}},invertedColors:function(){return!!_("inverted")||!_("none")&&void 0},forcedColors:function(){return!!O("active")||!O("none")&&void 0},monochrome:function(){if(matchMedia("(min-monochrome: 0)").matches){for(var e=0;e<=100;++e)if(matchMedia("(max-monochrome: ".concat(e,")")).matches)return e;throw new Error("Too high value")}},contrast:function(){return U("no-preference")?0:U("high")||U("more")?1:U("low")||U("less")?-1:U("forced")?10:void 0},reducedMotion:function(){return!!Q("reduce")||!Q("no-preference")&&void 0},hdr:function(){return!!K("high")||!K("standard")&&void 0},math:function(){var e,n=q.acos||$,t=q.acosh||$,r=q.asin||$,o=q.asinh||$,a=q.atanh||$,i=q.atan||$,c=q.sin||$,u=q.sinh||$,l=q.cos||$,s=q.cosh||$,d=q.tan||$,m=q.tanh||$,f=q.exp||$,v=q.expm1||$,h=q.log1p||$;return{acos:n(.12312423423423424),acosh:t(1e308),acoshPf:(e=1e154,q.log(e+q.sqrt(e*e-1))),asin:r(.12312423423423424),asinh:o(1),asinhPf:function(e){return q.log(e+q.sqrt(e*e+1))}(1),atanh:a(.5),atanhPf:function(e){return q.log((1+e)/(1-e))/2}(.5),atan:i(.5),sin:c(-1e300),sinh:u(1),sinhPf:function(e){return q.exp(e)-1/q.exp(e)/2}(1),cos:l(10.000000000123),cosh:s(1),coshPf:function(e){return(q.exp(e)+1/q.exp(e))/2}(1),tan:d(-1e300),tanh:m(1),tanhPf:function(e){return(q.exp(2*e)-1)/(q.exp(2*e)+1)}(1),exp:f(1),expm1:v(1),expm1Pf:function(e){return q.exp(e)-1}(1),log1p:h(10),log1pPf:function(e){return q.log(1+e)}(10),powPI:function(e){return q.pow(q.PI,e)}(-100)}},videoCard:function(){var e,n=document.createElement("canvas"),t=null!==(e=n.getContext("webgl"))&&void 0!==e?e:n.getContext("experimental-webgl");if(t&&"getExtension"in t){var r=t.getExtension("WEBGL_debug_renderer_info");if(r)return{vendor:(t.getParameter(r.UNMASKED_VENDOR_WEBGL)||"").toString(),renderer:(t.getParameter(r.UNMASKED_RENDERER_WEBGL)||"").toString()}}},pdfViewerEnabled:function(){return navigator.pdfViewerEnabled},architecture:function(){var e=new Float32Array(1),n=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],n[3]}};function te(e){var n=function(e){if(G())return.4;if(x())return F()?.5:.3;var n=e.platform.value||"";if(/^Win/.test(n))return.6;if(/^Mac/.test(n))return.5;return.7}(e),t=function(e){return w(.99+.01*e,1e-4)}(n);return{score:n,comment:"$ if upgrade to Pro: https://fpjs.dev/pro".replace(/\$/g,"".concat(t))}}function re(n){return JSON.stringify(n,(function(n,t){return t instanceof Error?e({name:(r=t).name,message:r.message,stack:null===(o=r.stack)||void 0===o?void 0:o.split("\n")},r):t;var r,o}),2)}function oe(e){return h(function(e){for(var n="",t=0,r=Object.keys(e).sort();t<r.length;t++){var o=r[t],a=e[o],i=a.error?"error":JSON.stringify(a.value);n+="".concat(n?"|":"").concat(o.replace(/([:|\\])/g,"\\$1"),":").concat(i)}return n}(e))}function ae(e){return void 0===e&&(e=50),function(e,n){void 0===n&&(n=1/0);var t=window.requestIdleCallback;return t?new Promise((function(e){return t.call(window,(function(){return e()}),{timeout:n})})):o(Math.min(e,n))}(e,2*e)}function ie(e,r){var o=Date.now();return{get:function(a){return n(this,void 0,void 0,(function(){var n,i,c;return t(this,(function(t){switch(t.label){case 0:return n=Date.now(),[4,e()];case 1:return i=t.sent(),c=function(e){var n;return{get visitorId(){return void 0===n&&(n=oe(this.components)),n},set visitorId(e){n=e},confidence:te(e),components:e,version:"3.4.2"}}(i),(r||(null==a?void 0:a.debug))&&console.log("Copy the text below to get the debug data:\n\n```\nversion: ".concat(c.version,"\nuserAgent: ").concat(navigator.userAgent,"\ntimeBetweenLoadAndGet: ").concat(n-o,"\nvisitorId: ").concat(c.visitorId,"\ncomponents: ").concat(re(i),"\n```")),[2,c]}}))}))}}}function ce(e){var r=void 0===e?{}:e,o=r.delayFallback,a=r.debug;return r.monitoring,n(this,void 0,void 0,(function(){return t(this,(function(e){switch(e.label){case 0:return[4,ae(o)];case 1:return e.sent(),[2,ie(V(ne,{debug:a},[]),a)]}}))}))}var ue={load:ce,hashComponents:oe,componentsToDebugString:re},le=h;export{re as componentsToDebugString,ue as default,M as getFullscreenElement,z as getScreenFrame,oe as hashComponents,G as isAndroid,S as isChromium,F as isDesktopSafari,C as isEdgeHTML,Y as isGecko,W as isTrident,x as isWebKit,ce as load,V as loadSources,le as murmurX64Hash128,ae as prepareForSources,ne as sources,Z as transformSource,X as withIframe};
|
|
@@ -230,7 +230,9 @@ features_info_name=Feature name
|
|
|
230
230
|
features_info_shap=SHAP value
|
|
231
231
|
features_info_hitrate=Coverage %
|
|
232
232
|
features_info_type=Type
|
|
233
|
+
# Deprecated
|
|
233
234
|
features_info_commercial_schema=Feature type
|
|
235
|
+
features_info_update_frequency=Updates
|
|
234
236
|
features_info_value_preview=Value preview
|
|
235
237
|
|
|
236
238
|
# Relevant data sources
|
|
@@ -55,8 +55,6 @@ class CVConfig:
|
|
|
55
55
|
if self.cv_type == CVType.time_series:
|
|
56
56
|
return TimeSeriesSplit(n_splits=self.n_folds), None
|
|
57
57
|
elif self.cv_type == CVType.blocked_time_series:
|
|
58
|
-
if X.shape[0] < 100 * self.n_folds:
|
|
59
|
-
return TimeSeriesSplit(n_splits=self.n_folds), None
|
|
60
58
|
return BlockedTimeSeriesSplit(n_splits=self.n_folds, test_size=self.test_size), None
|
|
61
59
|
elif self.cv_type == CVType.group_k_fold and self.group_columns:
|
|
62
60
|
groups = get_groups(X, self.group_columns)
|
|
@@ -98,7 +98,7 @@ def run_search(
|
|
|
98
98
|
columns={"Source": included_in_data_listings_header, "Feature name": field_column_header}
|
|
99
99
|
)
|
|
100
100
|
relevant_fields = relevant_fields.query("Provider != ''")
|
|
101
|
-
relevant_fields = relevant_fields.drop(columns=["Coverage %", "Feature type"])
|
|
101
|
+
relevant_fields = relevant_fields.drop(columns=["Coverage %", "Feature type"], errors="ignore")
|
|
102
102
|
|
|
103
103
|
raw_relevant_fields = relevant_fields.copy()
|
|
104
104
|
|
|
@@ -294,6 +294,7 @@ def test_widget(requests_mock: Mocker):
|
|
|
294
294
|
data_source="Calendar data",
|
|
295
295
|
data_source_link="https://upgini.com/#data_sources",
|
|
296
296
|
doc_link="https://docs.upgini.com/public/calendar/calendar#f_events_date_month_sin4_81a273ac",
|
|
297
|
+
update_frequency="Daily",
|
|
297
298
|
),
|
|
298
299
|
FeaturesMetadataV2(
|
|
299
300
|
name="f_ip_company_name_emb145_e56eb2a3",
|
|
@@ -306,6 +307,7 @@ def test_widget(requests_mock: Mocker):
|
|
|
306
307
|
data_provider_link="https://ipinfo.io",
|
|
307
308
|
data_source="Company IP Address Data",
|
|
308
309
|
data_source_link="https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFU/?referer=upgini",
|
|
310
|
+
update_frequency="Monthly",
|
|
309
311
|
),
|
|
310
312
|
FeaturesMetadataV2(
|
|
311
313
|
name="f_ip_company_name_emb54_805ee5b8",
|
|
@@ -318,6 +320,7 @@ def test_widget(requests_mock: Mocker):
|
|
|
318
320
|
data_provider_link="https://ipinfo.io",
|
|
319
321
|
data_source="Company IP Address Data",
|
|
320
322
|
data_source_link="https://app.snowflake.com/marketplace/listing/GZSTZ3VDMFU/?referer=upgini",
|
|
323
|
+
update_frequency="Monthly",
|
|
321
324
|
),
|
|
322
325
|
FeaturesMetadataV2(
|
|
323
326
|
name="f_ip_operator_5d5fc3f3",
|
|
@@ -330,6 +333,7 @@ def test_widget(requests_mock: Mocker):
|
|
|
330
333
|
data_provider_link="https://ipinfo.io",
|
|
331
334
|
data_source="IP Address Data for Mobile Carrier Detection",
|
|
332
335
|
data_source_link="https://app.snowflake.com/marketplace/listing/GZSTZ3VDMF6/?referer=upgini",
|
|
336
|
+
update_frequency="Monthly",
|
|
333
337
|
),
|
|
334
338
|
],
|
|
335
339
|
hit_rate_metrics=HitRateMetrics(
|
|
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
|