mirror of
https://github.com/mwisnowski/mtg_python_deckbuilder.git
synced 2025-12-16 23:50:12 +01:00
fix(setup): restore security stamp filtering
This commit is contained in:
parent
f48e335e17
commit
4b3ddf5853
4 changed files with 70 additions and 27 deletions
|
|
@ -194,13 +194,36 @@ def filter_dataframe(df: pd.DataFrame, banned_cards: List[str]) -> pd.DataFrame:
|
|||
filtered_df = df.copy()
|
||||
filter_config: FilterConfig = FILTER_CONFIG # Type hint for configuration
|
||||
for field, rules in filter_config.items():
|
||||
if field not in filtered_df.columns:
|
||||
logger.warning('Skipping filter for missing field %s', field)
|
||||
continue
|
||||
|
||||
for rule_type, values in rules.items():
|
||||
if not values:
|
||||
continue
|
||||
|
||||
if rule_type == 'exclude':
|
||||
for value in values:
|
||||
filtered_df = filtered_df[~filtered_df[field].str.contains(value, na=False)]
|
||||
mask = filtered_df[field].astype(str).str.contains(
|
||||
value,
|
||||
case=False,
|
||||
na=False,
|
||||
regex=False
|
||||
)
|
||||
filtered_df = filtered_df[~mask]
|
||||
elif rule_type == 'require':
|
||||
for value in values:
|
||||
filtered_df = filtered_df[filtered_df[field].str.contains(value, na=False)]
|
||||
mask = filtered_df[field].astype(str).str.contains(
|
||||
value,
|
||||
case=False,
|
||||
na=False,
|
||||
regex=False
|
||||
)
|
||||
filtered_df = filtered_df[mask]
|
||||
else:
|
||||
logger.warning('Unknown filter rule type %s for field %s', rule_type, field)
|
||||
continue
|
||||
|
||||
logger.debug(f'Applied {rule_type} filter for {field}: {values}')
|
||||
|
||||
# Remove illegal sets
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue