From 213c8615791e1e6a1ce3b95559a2f8916ae64c98 Mon Sep 17 00:00:00 2001 From: HowToSD Date: Sun, 23 Feb 2025 21:59:54 -0800 Subject: [PATCH] Added SNS plot/chart nodes to use Seaborn for plot/chart moving forward. --- README.md | 8 +- __init__.py | 9 ++ dev/scripts/init_py_generate.py | 6 +- docs/images/sns_line.png | Bin 0 -> 125766 bytes docs/reference/node_reference.md | 3 + docs/reference/sns_bar.md | 14 +++ docs/reference/sns_line.md | 33 ++++++ docs/reference/sns_scatter.md | 14 +++ modules/pandas_wrapper/utils.py | 15 +++ modules/seaborn_wrapper/common.py | 21 ++++ modules/seaborn_wrapper/sns_bar.py | 80 +++++++++++++ modules/seaborn_wrapper/sns_line.py | 99 ++++++++++++++++ modules/seaborn_wrapper/sns_scatter.py | 80 +++++++++++++ modules/seaborn_wrapper/util.py | 106 ++++++++++++++++++ pyproject.toml | 2 +- requirements.txt | 3 +- ...ma_separated_labels_string_to_list_test.py | 38 +++++++ 17 files changed, 524 insertions(+), 7 deletions(-) create mode 100644 docs/images/sns_line.png create mode 100644 docs/reference/sns_bar.md create mode 100644 docs/reference/sns_line.md create mode 100644 docs/reference/sns_scatter.md create mode 100644 modules/seaborn_wrapper/common.py create mode 100644 modules/seaborn_wrapper/sns_bar.py create mode 100644 modules/seaborn_wrapper/sns_line.py create mode 100644 modules/seaborn_wrapper/sns_scatter.py create mode 100644 modules/seaborn_wrapper/util.py create mode 100644 tests/pandas_wrapper/utils_comma_separated_labels_string_to_list_test.py diff --git a/README.md b/README.md index cd8b6bb..15a35b1 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ ComfyUI was designed to make Stable Diffusion accessible to non-engineers while At the end of this page, you’ll find a tutorial on how to use this package to answer the MLB hits question. -I hope you enjoy using it and have a great time exploring data. +I hope you find it useful and engaging for data exploration. — Hide Inada @@ -36,7 +36,7 @@ Here are just some of the included nodes. For a complete list of nodes, check ou You can connect these nodes to conduct complex analysis in an intuitive graphical way. You can also use other Comfy custom nodes to fit your needs (e.g., combining images). -These custom nodes aim to make data exploration and analysis more efficient and enjoyable. +These custom nodes enhance efficiency and usability in data exploration and analysis. ## Installation Note: GPU is not required to run this custom module. @@ -58,7 +58,7 @@ Note: GPU is not required to run this custom module. ``` This will create a new subdirectory ComfyUI-Data-Analysis. 3. Rename the folder name from ComfyUI-Data-Analysis to data-analysis. - If you skip this, example workflows will not work as those flows use this folder name. + Skipping this step will cause example workflows to fail, as they rely on this folder name. 4. Check if your ComfyUI environment already has pandas and matplotlib. If not, install them using pip. ``` pip install -r requirements.txt @@ -75,7 +75,7 @@ Refer to [User's Guide](docs/ug.md) or check out [Node Reference](docs/reference For a practical example, see the tutorial on baseball data: [How to Find Out Who Had the Most Hits](docs/baseball_example1.md). ## Update -Please refer to the release notes. I try to avoid backward-incompatible changes as much as possible, but sometimes they are unavoidable because the project is still in its early stage and I discover issues along the way. The release notes contain those changes so that you know what to expect before upgrading your version. +Refer to the release notes. While backward-incompatible changes are minimized, some may be necessary. The release notes contain those changes so that you know what to expect before upgrading your version. ## Contribution 🚫 **This project does not accept pull requests.** diff --git a/__init__.py b/__init__.py index a0e2d60..d15761f 100644 --- a/__init__.py +++ b/__init__.py @@ -105,6 +105,9 @@ from .modules.pandas_wrapper.pandas_var import PandasVar from .modules.pandas_wrapper.pandas_vertical_concat import PandasVerticalConcat from .modules.pandas_wrapper.pandas_vertical_split import PandasVerticalSplit from .modules.pandas_wrapper.pandas_xs import PandasXs +from .modules.seaborn_wrapper.sns_bar import SNSBar +from .modules.seaborn_wrapper.sns_line import SNSLine +from .modules.seaborn_wrapper.sns_scatter import SNSScatter T = TypeVar("T") @@ -219,6 +222,9 @@ NODE_CLASS_MAPPINGS: Dict[str, Type[T]] = { "PandasVerticalConcat": PandasVerticalConcat, "PandasVerticalSplit": PandasVerticalSplit, "PandasXs": PandasXs, + "SNSBar": SNSBar, + "SNSLine": SNSLine, + "SNSScatter": SNSScatter, } @@ -333,6 +339,9 @@ NODE_DISPLAY_NAME_MAPPINGS: Dict[str, str] = { "PandasVerticalConcat": "Pandas Vertical Concat", "PandasVerticalSplit": "Pandas Vertical Split", "PandasXs": "Pandas Xs", + "SNSBar": "SNS Bar Chart", + "SNSLine": "SNS Line Plot", + "SNSScatter": "SNS Scatter Plot", } diff --git a/dev/scripts/init_py_generate.py b/dev/scripts/init_py_generate.py index fa4d26d..2d22740 100644 --- a/dev/scripts/init_py_generate.py +++ b/dev/scripts/init_py_generate.py @@ -76,12 +76,16 @@ def format_display_name(class_name): ("CD A", "CDA"), ("H T M L", "HTML"), ("MP L", "MPL"), + ("SN S", "SNS"), (" N A", " NA"), ("Data Frame", "DataFrame"), ("Multi Index", "MultiIndex"), ("MPL Bar", "MPL Bar Chart"), ("MPL Line", "MPL Line Plot"), - ("MPL Scatter", "MPL Scatter Plot") + ("MPL Scatter", "MPL Scatter Plot"), + ("SNS Bar", "SNS Bar Chart"), + ("SNS Line", "SNS Line Plot"), + ("SNS Scatter", "SNS Scatter Plot") ] for p in replace_pairs: final_result = final_result.replace(p[0], p[1]) diff --git a/docs/images/sns_line.png b/docs/images/sns_line.png new file mode 100644 index 0000000000000000000000000000000000000000..701f55942e15c10dd18ccb39b4fa23abe2392fae GIT binary patch literal 125766 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 vpnRnzrJ27ntyZ!x=h5G{P)G&3Qr-t2P~^b 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 Dmh+ln literal 0 HcmV?d00001 diff --git a/docs/reference/node_reference.md b/docs/reference/node_reference.md index 16e06a1..ea18e87 100644 --- a/docs/reference/node_reference.md +++ b/docs/reference/node_reference.md @@ -114,6 +114,9 @@ | [MPL Bar Chart](mpl_bar.md) | Generates a bar chart from a Pandas DataFrame. | | [MPL Line Plot](mpl_line.md) | Generates a line plot from a pandas DataFrame. | | [MPL Scatter Plot](mpl_scatter.md) | Generates a scatter plot from a pandas DataFrame. | +| [SNS Bar Chart](sns_bar.md) | Generates a bar chart from a Pandas DataFrame using Seaborn. | +| [SNS Line Plot](sns_line.md) | Generates a line plot from a pandas DataFrame using Seaborn. | +| [SNS Scatter Plot](sns_scatter.md) | Generates a scatter plot from a pandas DataFrame using Seaborn. | ## Summary statistics | Node | Description | | --- | --- | diff --git a/docs/reference/sns_bar.md b/docs/reference/sns_bar.md new file mode 100644 index 0000000..4fd2db7 --- /dev/null +++ b/docs/reference/sns_bar.md @@ -0,0 +1,14 @@ +# SNS Bar Chart +Generates a bar chart from a Pandas DataFrame using Seaborn. + +For style and palette parameters, refer to [SNS Line Plot documentation](sns_line.md). + +## Output +| Data type | +|---| +| Image | + +
+Category: Plot + +ComfyUI Data Analysis Node Reference. © 2025 Hide Inada (HowToSD.com). All rights reserved. diff --git a/docs/reference/sns_line.md b/docs/reference/sns_line.md new file mode 100644 index 0000000..4c476bc --- /dev/null +++ b/docs/reference/sns_line.md @@ -0,0 +1,33 @@ +# SNS Line Plot +Generates a line plot from a pandas DataFrame using Seaborn. + +For plotting multiple lines, enter a comma-separated column labels in y_column_name. +If you want to display a legend for each line, enter a comma-separated legend label +in legend label. + +![SNS Line Plot](../images/sns_line.png) + +The `style` parameter can be chosen from: +* darkgrid (default) – Grid with a dark background. +* whitegrid – Grid with a white background. +* dark – Dark background, no grid. +* white – White background, no grid. +* ticks – White background with tick marks. + +The `palette` parameter can be chosen from: +* deep (default) – High contrast, good for multiple categories. +* muted – Softer colors, easier on the eyes. +* pastel – Light colors, suitable for minimalistic styles. +* bright – Vibrant and highly saturated colors. +* dark – Darker, high-contrast colors. +* colorblind – Optimized for color vision deficiencies. + +## Output +| Data type | +|---| +| Image | + +
+Category: Plot + +ComfyUI Data Analysis Node Reference. © 2025 Hide Inada (HowToSD.com). All rights reserved. diff --git a/docs/reference/sns_scatter.md b/docs/reference/sns_scatter.md new file mode 100644 index 0000000..24b81fd --- /dev/null +++ b/docs/reference/sns_scatter.md @@ -0,0 +1,14 @@ +# SNS Scatter Plot +Generates a scatter plot from a pandas DataFrame using Seaborn. + +For style and palette parameters, refer to [SNS Line Plot documentation](sns_line.md). + +## Output +| Data type | +|---| +| Image | + +
+Category: Plot + +ComfyUI Data Analysis Node Reference. © 2025 Hide Inada (HowToSD.com). All rights reserved. diff --git a/modules/pandas_wrapper/utils.py b/modules/pandas_wrapper/utils.py index 9cac0c6..1113be3 100644 --- a/modules/pandas_wrapper/utils.py +++ b/modules/pandas_wrapper/utils.py @@ -27,6 +27,21 @@ def flatten_list_tuple_unique(lst: Union[List[Any], Tuple[Any, ...]]) -> Set[Any recurse(lst) return result +def comma_separated_labels_string_to_list(s:str) -> List[str]: + """ + Converts a comma-separated labels string into a list of string labels. + + Args: + s (str): A comma-separated labels. + + Returns: + List[str]: A list of valid labels. + """ + if s is None or s == "": + return [] + label_list = [e.strip() for e in s.split(",")] + return label_list + def column_labels_string_to_list(dataframe:pd.DataFrame, s:str, no_check:bool=False) -> List[Union[str, int]]: """ diff --git a/modules/seaborn_wrapper/common.py b/modules/seaborn_wrapper/common.py new file mode 100644 index 0000000..7212d2c --- /dev/null +++ b/modules/seaborn_wrapper/common.py @@ -0,0 +1,21 @@ +def common_input_types(): + """ + Defines the input types for a plot function. + + Returns: + Dict[str, Any]: A dictionary specifying required input types. + """ + return { + "required": { + "dataframe": ("DATAFRAME", {}), + "x_column_name": ("STRING", {"default": ""}), + "y_column_name": ("STRING", {"default": ""}), + "title": ("STRING", {"default": ""}), + "x_axis_label": ("STRING", {"default": ""}), + "y_axis_label": ("STRING", {"default": ""}), + "legend_label": ("STRING", {"default": ""}), + "x_tick_as_int": ("BOOLEAN", {"default": False}), # To show 2002 instead of 2002.5 on x-axis + "style": ("STRING", {"default": ""}), + "palette": ("STRING", {"default": ""}) + } + } diff --git a/modules/seaborn_wrapper/sns_bar.py b/modules/seaborn_wrapper/sns_bar.py new file mode 100644 index 0000000..7997192 --- /dev/null +++ b/modules/seaborn_wrapper/sns_bar.py @@ -0,0 +1,80 @@ +from typing import Any, Dict +from matplotlib import pyplot as plt +import pandas as pd +import seaborn as sns +from .common import common_input_types +from .util import plot_post_steps +from .util import set_up_sns_style_palette +from .util import process_y_columns_and_labels + + +class SNSBar: + """ + SNS Bar Chart: + Generates a bar chart from a Pandas DataFrame using Seaborn. + + For style and palette parameters, refer to [SNS Line Plot documentation](sns_line.md). + + category: Plot + """ + + @classmethod + def INPUT_TYPES(cls) -> Dict[str, Any]: + """ + Defines the input types for the `bar_chart` function. + + Returns: + Dict[str, Any]: A dictionary specifying required input types. + """ + return common_input_types() + + RETURN_TYPES: tuple = ("IMAGE",) + FUNCTION: str = "bar_chart" + CATEGORY: str = "Data Analysis" + + def bar_chart(self, + dataframe: pd.DataFrame, + x_column_name: str, + y_column_name: str, + title: str, + x_axis_label: str, + y_axis_label: str, + legend_label: str, + x_tick_as_int: bool, + style: str=None, + palette: str=None) -> tuple: + """ + Generates a bar chart from a pandas DataFrame. + + Args: + dataframe (DataFrame): The DataFrame. + x_column_name (str): The column name for the x-axis. + y_column_name (str): The column name for the y-axis. + title (str): The title of the plot. + x_axis_label (str): The label for the x-axis data. + y_axis_label (str): The label for the y-axis data. + x_tick_as_int (bool): If set, use integers for x ticks. For example, + if ticks show floating point numbers for years, e.g. 2002.5, + setting this flag will show integer values instead. + style (str): Style of the plot + palette (str): Palette of the plot + Returns: + tuple: A tuple containing the image tensor representation of the plot. + """ + df = dataframe + set_up_sns_style_palette(style, palette) + y_columns, labels = process_y_columns_and_labels(df, y_column_name, legend_label) + + # Create the plot + fig, ax = plt.subplots() + for i in range(len(y_columns)): + sns.barplot(x=df[x_column_name], y=df[y_columns[i]], ax=ax, label=labels[i]) + + return plot_post_steps( + fig, + ax, + plt, + title, + x_axis_label, + y_axis_label, + x_tick_as_int) diff --git a/modules/seaborn_wrapper/sns_line.py b/modules/seaborn_wrapper/sns_line.py new file mode 100644 index 0000000..d4c85fa --- /dev/null +++ b/modules/seaborn_wrapper/sns_line.py @@ -0,0 +1,99 @@ +from typing import Any, Dict +from matplotlib import pyplot as plt +import seaborn as sns +import pandas as pd +from .common import common_input_types +from .util import plot_post_steps +from .util import set_up_sns_style_palette +from .util import process_y_columns_and_labels + + +class SNSLine: + """ + SNS Line Plot: + Generates a line plot from a pandas DataFrame using Seaborn. + + For plotting multiple lines, enter a comma-separated column labels in y_column_name. + If you want to display a legend for each line, enter a comma-separated legend label + in legend label. + + ![SNS Line Plot](../images/sns_line.png) + + The `style` parameter can be chosen from: + * darkgrid (default) – Grid with a dark background. + * whitegrid – Grid with a white background. + * dark – Dark background, no grid. + * white – White background, no grid. + * ticks – White background with tick marks. + + The `palette` parameter can be chosen from: + * deep (default) – High contrast, good for multiple categories. + * muted – Softer colors, easier on the eyes. + * pastel – Light colors, suitable for minimalistic styles. + * bright – Vibrant and highly saturated colors. + * dark – Darker, high-contrast colors. + * colorblind – Optimized for color vision deficiencies. + + category: Plot + """ + + @classmethod + def INPUT_TYPES(cls) -> Dict[str, Any]: + """ + Defines the input types for the `line_plot` function. + + Returns: + Dict[str, Any]: A dictionary specifying required input types. + """ + return common_input_types() + + RETURN_TYPES: tuple = ("IMAGE",) + FUNCTION: str = "line_plot" + CATEGORY: str = "Data Analysis" + + def line_plot(self, + dataframe: pd.DataFrame, + x_column_name: str, + y_column_name: str, + title: str, + x_axis_label: str, + y_axis_label: str, + legend_label: str, + x_tick_as_int: bool, + style: str=None, + palette: str=None) -> tuple: + """ + Generates a line plot from a pandas DataFrame. + + Args: + dataframe (DataFrame): The DataFrame. + x_column_name (str): The column name for the x-axis. + y_column_name (str): The column name for the y-axis. + title (str): The title of the plot. + x_axis_label (str): The label for the x-axis data. + y_axis_label (str): The label for the y-axis data. + legend_label (str): The legend label of the plot. + x_tick_as_int (bool): If set, use integers for x ticks. For example, + if ticks show floating point numbers for years, e.g. 2002.5, + setting this flag will show integer values instead. + style (str): Style of the plot + palette (str): Palette of the plot + Returns: + tuple: A tuple containing the image tensor representation of the plot. + """ + df = dataframe + set_up_sns_style_palette(style, palette) + y_columns, labels = process_y_columns_and_labels(df, y_column_name, legend_label) + + fig, ax = plt.subplots() + for i in range(len(y_columns)): + sns.lineplot(x=df[x_column_name], y=df[y_columns[i]], ax=ax, label=labels[i]) + + return plot_post_steps( + fig, + ax, + plt, + title, + x_axis_label, + y_axis_label, + x_tick_as_int) diff --git a/modules/seaborn_wrapper/sns_scatter.py b/modules/seaborn_wrapper/sns_scatter.py new file mode 100644 index 0000000..b069ec3 --- /dev/null +++ b/modules/seaborn_wrapper/sns_scatter.py @@ -0,0 +1,80 @@ +from typing import Any, Dict +from matplotlib import pyplot as plt +import seaborn as sns +import pandas as pd +from .common import common_input_types +from .util import plot_post_steps +from .util import set_up_sns_style_palette +from .util import process_y_columns_and_labels + + +class SNSScatter: + """ + SNS Scatter Plot: + Generates a scatter plot from a pandas DataFrame using Seaborn. + + For style and palette parameters, refer to [SNS Line Plot documentation](sns_line.md). + + category: Plot + """ + + @classmethod + def INPUT_TYPES(cls) -> Dict[str, Any]: + """ + Defines the input types for the `scatter_plot` function. + + Returns: + Dict[str, Any]: A dictionary specifying required input types. + """ + return common_input_types() + + RETURN_TYPES: tuple = ("IMAGE",) + FUNCTION: str = "scatter_plot" + CATEGORY: str = "Data Analysis" + + def scatter_plot(self, + dataframe: pd.DataFrame, + x_column_name: str, + y_column_name: str, + title: str, + x_axis_label: str, + y_axis_label: str, + legend_label: str, + x_tick_as_int: bool, + style: str=None, + palette: str=None) -> tuple: + """ + Generates a scatter plot from a pandas DataFrame. + + Args: + dataframe (DataFrame): The DataFrame. + x_column_name (str): The column name for the x-axis. + y_column_name (str): The column name for the y-axis. + title (str): The title of the plot. + x_axis_label (str): The label for the x-axis data. + y_axis_label (str): The label for the y-axis data. + x_tick_as_int (bool): If set, use integers for x ticks. For example, + if ticks show floating point numbers for years, e.g. 2002.5, + setting this flag will show integer values instead. + style (str): Style of the plot + palette (str): Palette of the plot + Returns: + tuple: A tuple containing the image tensor representation of the plot. + """ + df = dataframe + set_up_sns_style_palette(style, palette) + y_columns, labels = process_y_columns_and_labels(df, y_column_name, legend_label) + + # Create the plot + fig, ax = plt.subplots() + for i in range(len(y_columns)): + sns.scatterplot(x=df[x_column_name], y=df[y_columns[i]], ax=ax, label=labels[i]) + + return plot_post_steps( + fig, + ax, + plt, + title, + x_axis_label, + y_axis_label, + x_tick_as_int) diff --git a/modules/seaborn_wrapper/util.py b/modules/seaborn_wrapper/util.py new file mode 100644 index 0000000..54396cd --- /dev/null +++ b/modules/seaborn_wrapper/util.py @@ -0,0 +1,106 @@ +import io +from typing import List, Tuple +import numpy as np +import matplotlib.figure +import matplotlib.axes +from matplotlib import pyplot as plt +import matplotlib.ticker as mticker +import seaborn as sns +from PIL import Image +import torch +import pandas as pd +import seaborn as sns +from typing import Optional +from ..pandas_wrapper.utils import column_labels_string_to_list +from ..pandas_wrapper.utils import comma_separated_labels_string_to_list + + +def process_y_columns_and_labels(df:pd.DataFrame, y_column_name: str, legend_label: str) -> Tuple[List[str], List[str]]: + """ + Generates a y column list and legend label list from the comma-separated y column names and legend label string. + + Args: + df (pd.DataFrame): The input dataframe containing the data. + y_column_name (str): A comma-separated string of column names to be used as y-values. + legend_label (str): A comma-separated string of labels corresponding to the y columns. + + Returns: + List[str]: A list of processed y column names. + List[str]: A list of processed legend labels. + """ + y_columns = column_labels_string_to_list(df, y_column_name) + if legend_label: + labels = comma_separated_labels_string_to_list(legend_label) + if len(labels) < len(y_columns): + labels = labels + [""] * (len(y_columns) - len(labels)) + else: + labels = [""] * len(y_columns) + + return y_columns, labels + + +def set_up_sns_style_palette(style: Optional[str], palette: Optional[str]) -> None: + """ + Sets the Seaborn theme with the given style and palette. + + Args: + style (Optional[str]): The style to apply to the Seaborn theme (e.g., 'darkgrid', 'whitegrid'). + palette (Optional[str]): The color palette to apply (e.g., 'deep', 'muted'). + + Returns: + None + """ + if style and palette: + sns.set_theme(style=style, palette=palette) + elif style: + sns.set_theme(style=style) + elif palette: + sns.set_theme(palette=palette) + else: + sns.set_theme() + + +def plot_post_steps( + fig: matplotlib.figure.Figure, + ax: matplotlib.axes.Axes, + plt: plt, + title: str, + x_axis_label: str, + y_axis_label: str, + x_tick_as_int: bool +) -> tuple: + r"""Plots a post-processed step plot using Matplotlib. + + Args: + fig (matplotlib.figure.Figure): The figure object for the plot. + ax (matplotlib.axes.Axes): The axes object for the plot. + plt (module): The Matplotlib module. + title (str): The title of the plot. + x_axis_label (str): The label for the x-axis. + y_axis_label (str): The label for the y-axis. + x_tick_as_int (bool): If ``True``, use integers for x-axis ticks. + For example, if ticks display floating point numbers (e.g., 2002.5), + setting this flag forces integer values instead. + + Returns: + tuple: A tuple containing the image tensor representation of the plot. + """ + if x_tick_as_int: + ax.xaxis.set_major_locator(mticker.MaxNLocator(integer=True)) + + # Set title and labels + ax.set_title(title) + ax.set_xlabel(x_axis_label) + ax.set_ylabel(y_axis_label) + + # Save the plot to a buffer + buf = io.BytesIO() + fig.savefig(buf, format='PNG') + buf.seek(0) + plt.close(fig) # Close the figure to free memory + + # Load image and convert to tensor + image = Image.open(buf).convert("RGB") + image_tensor = torch.from_numpy(np.array(image)).float() / 255.0 # Normalize to [0,1] + image_tensor = image_tensor.unsqueeze(0) + return (image_tensor,) \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 810eb98..a300e76 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "data-analysis" description = "Data analysis custom modules for ComfyUI - Use Pandas & Matplotlib within ComfyUI" -version = "1.1.25" +version = "1.2.0" license = {file = "LICENSE"} [project.urls] diff --git a/requirements.txt b/requirements.txt index 6382173..2dd4374 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ matplotlib>=3.10.0 pandas>=2.2.3 - +seaborn>=0.13.2 +scipy>=1.14.1 \ No newline at end of file diff --git a/tests/pandas_wrapper/utils_comma_separated_labels_string_to_list_test.py b/tests/pandas_wrapper/utils_comma_separated_labels_string_to_list_test.py new file mode 100644 index 0000000..67e51eb --- /dev/null +++ b/tests/pandas_wrapper/utils_comma_separated_labels_string_to_list_test.py @@ -0,0 +1,38 @@ +import os +import sys +import unittest +from typing import List + +PROJECT_ROOT = os.path.realpath(os.path.join(__file__, "..", "..", "..")) +MODULE_ROOT = os.path.join(PROJECT_ROOT, "modules") +sys.path.append(MODULE_ROOT) + +from pandas_wrapper.utils import comma_separated_labels_string_to_list + +class TestCommaSeparatedLabelsStringToList(unittest.TestCase): + """ + Unit tests for `comma_separated_labels_string_to_list` function. + """ + + def setUp(self) -> None: + """ + Sets up the test environment before each test case. + """ + pass + + def test_valid_column_strings(self) -> None: + """ + Tests `comma_separated_labels_string_to_list` with various valid input strings. + """ + self.assertEqual(comma_separated_labels_string_to_list("label1,label2,label3"), ["label1", "label2", "label3"]) + self.assertEqual(comma_separated_labels_string_to_list(" label1 , label2 ,label3 "), ["label1", "label2", "label3"]) + self.assertEqual(comma_separated_labels_string_to_list("a,b,c,d"), ["a", "b", "c", "d"]) + self.assertEqual(comma_separated_labels_string_to_list("one"), ["one"]) + self.assertEqual(comma_separated_labels_string_to_list(""), []) + self.assertEqual(comma_separated_labels_string_to_list(None), []) + self.assertEqual(comma_separated_labels_string_to_list(" , , , "), ["", "", "", ""]) + +if __name__ == "__main__": + unittest.main() + +