diff --git a/CHANGELOG.md b/CHANGELOG.md index d4a52aa..b9aa1ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [v0.2.3] - 2025-08-26 - Better support for merging schemas +- Small code improvements ## [v0.2.2] - 2025-08-25 diff --git a/vecorel_cli/conversion/base.py b/vecorel_cli/conversion/base.py index abf4f5f..85289b8 100644 --- a/vecorel_cli/conversion/base.py +++ b/vecorel_cli/conversion/base.py @@ -243,27 +243,24 @@ def read_data(self, paths, **kwargs): return pd.concat(gdfs) def filter_rows(self, gdf): - if len(self.column_filters) > 0: - self.info("Applying filters") - for key, fn in self.column_filters.items(): - if key in gdf.columns: - result = fn(gdf[key]) + if len(self.column_filters) == 0: + return gdf + + self.info("Applying filters") + for key, fn in self.column_filters.items(): + if key in gdf.columns: + result = fn(gdf[key]) + if isinstance(result, tuple): # If the result is a tuple, the second value is a flag to potentially invert the mask - if isinstance(result, tuple): - if result[1]: - # Invert mask - mask = ~result[0] - else: - # Use mask as is - mask = result[0] - else: - # Just got a mask, proceed - mask = result - - # Filter columns based on the mask - gdf = gdf[mask] + mask = ~result[0] if result[1] else result[0] else: - self.warning(f"Column '{key}' not found in dataset, skipping filter") + # Just got a mask, proceed + mask = result + + # Filter columns based on the mask + gdf = gdf[mask] + else: + self.warning(f"Column '{key}' not found in dataset, skipping filter") return gdf def get_title(self): diff --git a/vecorel_cli/converters.py b/vecorel_cli/converters.py index e6f95a5..6c956ba 100644 --- a/vecorel_cli/converters.py +++ b/vecorel_cli/converters.py @@ -1,5 +1,6 @@ import importlib import os +from typing import Sequence import click import pandas as pd @@ -111,7 +112,7 @@ def list_ids(self) -> list: ids = [f[:-3] for f in files if self.is_converter(f)] return ids - def list_all(self, keys=["short_name", "license"]) -> dict: + def list_all(self, keys: Sequence[str] = ("short_name", "license")) -> dict: converters = {} for id in self.list_ids(): obj = {}