prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  [ENH] Naming conventions
  I wanted to discuss naming conventions for the various functions and arguments for consistency. `expand_column` has a parameter `column` whereas `add_column` had `col_name`.
  
  Also, is `_column` necessary in each function? Would it be ok to just have an `add()` or `transform()` method? In general I'm more on the side of more verbose function names, but just wanted to throw the idea out there.
  
  Similarly, when following the format of `limit_column_characters` functions like `change_type` should probably be named `change_column_type`.
  
  I'm not married to any of this (except the function arguments, those should be consistent) but wanted to get peoples' ideas.
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `janitor/io.py`
  Content:
  ```
  1 import os
  2 from glob import glob
  3 
  4 import pandas as pd
  5 
  6 
  7 def read_csvs(filespath: str, seperate_df: bool = False, **kwargs):
  8     """
  9     :param filespath: The filepath pattern matching the CSVs files.
  10         Accepts regular expressions, with or without csv extension.
  11     :param seperate_df: If False (default) returns a single Dataframe
  12         with the concatenation of the csv files.
  13         If True, returns a dictionary of seperate dataframes
  14         for each CSV file.
  15     :param kwargs: Keyword arguments to pass into the
  16         original pandas `read_csv`.
  17     """
  18     # Sanitize input
  19     assert filespath is not None
  20     assert len(filespath) != 0
  21 
  22     # Read the csv files
  23     dfs = {
  24         os.path.basename(f): pd.read_csv(f, **kwargs) for f in glob(filespath)
  25     }
  26     # Check if dataframes have been read
  27     if len(dfs) == 0:
  28         raise ValueError("No CSV files to read with the given filespath")
  29     # Concatenate the dataframes if requested (default)
  30     col_names = list(dfs.values())[0].columns
  31     if not seperate_df:
  32         # If columns do not match raise an error
  33         for df in dfs.values():
  34             if not all(df.columns == col_names):
  35                 raise ValueError(
  36                     "Columns in input CSV files do not match."
  37                     "Files cannot be concatenated"
  38                 )
  39         return pd.concat(list(dfs.values()), ignore_index=True, sort=False)
  40     else:
  41         return dfs
  42
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/janitor/io.py b/janitor/io.py
  --- a/janitor/io.py
  +++ b/janitor/io.py
  @@ -1,34 +1,49 @@
   import os
   from glob import glob
  +from typing import Iterable, Union
   
   import pandas as pd
   
  +from .utils import deprecated_alias
   
  -def read_csvs(filespath: str, seperate_df: bool = False, **kwargs):
  +
  +@deprecated_alias(seperate_df="separate_df", filespath="files_path")
  +def read_csvs(
  +    files_path: Union[str, Iterable[str]], separate_df: bool = False, **kwargs
  +) -> Union[pd.DataFrame, dict]:
       """
  -    :param filespath: The filepath pattern matching the CSVs files.
  +    :param files_path: The filepath pattern matching the CSVs files.
           Accepts regular expressions, with or without csv extension.
  -    :param seperate_df: If False (default) returns a single Dataframe
  +        Also accepts iterable of file paths.
  +    :param separate_df: If False (default) returns a single Dataframe
           with the concatenation of the csv files.
  -        If True, returns a dictionary of seperate dataframes
  +        If True, returns a dictionary of separate dataframes
           for each CSV file.
       :param kwargs: Keyword arguments to pass into the
           original pandas `read_csv`.
       """
       # Sanitize input
  -    assert filespath is not None
  -    assert len(filespath) != 0
  +    assert files_path is not None
  +    assert len(files_path) != 0
   
       # Read the csv files
  -    dfs = {
  -        os.path.basename(f): pd.read_csv(f, **kwargs) for f in glob(filespath)
  -    }
  +    # String to file/folder or file pattern provided
  +    if isinstance(files_path, str):
  +        dfs = {
  +            os.path.basename(f): pd.read_csv(f, **kwargs)
  +            for f in glob(files_path)
  +        }
  +    # Iterable of file paths provided
  +    else:
  +        dfs = {
  +            os.path.basename(f): pd.read_csv(f, **kwargs) for f in files_path
  +        }
       # Check if dataframes have been read
       if len(dfs) == 0:
  -        raise ValueError("No CSV files to read with the given filespath")
  +        raise ValueError("No CSV files to read with the given `files_path`")
       # Concatenate the dataframes if requested (default)
       col_names = list(dfs.values())[0].columns
  -    if not seperate_df:
  +    if not separate_df:
           # If columns do not match raise an error
           for df in dfs.values():
               if not all(df.columns == col_names):
  
verification_info: {"golden_diff": "diff --git a/janitor/io.py b/janitor/io.py\n--- a/janitor/io.py\n+++ b/janitor/io.py\n@@ -1,34 +1,49 @@\n import os\n from glob import glob\n+from typing import Iterable, Union\n \n import pandas as pd\n \n+from .utils import deprecated_alias\n \n-def read_csvs(filespath: str, seperate_df: bool = False, **kwargs):\n+\n+@deprecated_alias(seperate_df=\"separate_df\", filespath=\"files_path\")\n+def read_csvs(\n+    files_path: Union[str, Iterable[str]], separate_df: bool = False, **kwargs\n+) -> Union[pd.DataFrame, dict]:\n     \"\"\"\n-    :param filespath: The filepath pattern matching the CSVs files.\n+    :param files_path: The filepath pattern matching the CSVs files.\n         Accepts regular expressions, with or without csv extension.\n-    :param seperate_df: If False (default) returns a single Dataframe\n+        Also accepts iterable of file paths.\n+    :param separate_df: If False (default) returns a single Dataframe\n         with the concatenation of the csv files.\n-        If True, returns a dictionary of seperate dataframes\n+        If True, returns a dictionary of separate dataframes\n         for each CSV file.\n     :param kwargs: Keyword arguments to pass into the\n         original pandas `read_csv`.\n     \"\"\"\n     # Sanitize input\n-    assert filespath is not None\n-    assert len(filespath) != 0\n+    assert files_path is not None\n+    assert len(files_path) != 0\n \n     # Read the csv files\n-    dfs = {\n-        os.path.basename(f): pd.read_csv(f, **kwargs) for f in glob(filespath)\n-    }\n+    # String to file/folder or file pattern provided\n+    if isinstance(files_path, str):\n+        dfs = {\n+            os.path.basename(f): pd.read_csv(f, **kwargs)\n+            for f in glob(files_path)\n+        }\n+    # Iterable of file paths provided\n+    else:\n+        dfs = {\n+            os.path.basename(f): pd.read_csv(f, **kwargs) for f in files_path\n+        }\n     # Check if dataframes have been read\n     if len(dfs) == 0:\n-        raise ValueError(\"No CSV files to read with the given filespath\")\n+        raise ValueError(\"No CSV files to read with the given `files_path`\")\n     # Concatenate the dataframes if requested (default)\n     col_names = list(dfs.values())[0].columns\n-    if not seperate_df:\n+    if not separate_df:\n         # If columns do not match raise an error\n         for df in dfs.values():\n             if not all(df.columns == col_names):\n", "issue": "[ENH] Naming conventions\nI wanted to discuss naming conventions for the various functions and arguments for consistency. `expand_column` has a parameter `column` whereas `add_column` had `col_name`.\r\n\r\nAlso, is `_column` necessary in each function? Would it be ok to just have an `add()` or `transform()` method? In general I'm more on the side of more verbose function names, but just wanted to throw the idea out there.\r\n\r\nSimilarly, when following the format of `limit_column_characters` functions like `change_type` should probably be named `change_column_type`.\r\n\r\nI'm not married to any of this (except the function arguments, those should be consistent) but wanted to get peoples' ideas.\n", "before_files": [{"content": "import os\nfrom glob import glob\n\nimport pandas as pd\n\n\ndef read_csvs(filespath: str, seperate_df: bool = False, **kwargs):\n    \"\"\"\n    :param filespath: The filepath pattern matching the CSVs files.\n        Accepts regular expressions, with or without csv extension.\n    :param seperate_df: If False (default) returns a single Dataframe\n        with the concatenation of the csv files.\n        If True, returns a dictionary of seperate dataframes\n        for each CSV file.\n    :param kwargs: Keyword arguments to pass into the\n        original pandas `read_csv`.\n    \"\"\"\n    # Sanitize input\n    assert filespath is not None\n    assert len(filespath) != 0\n\n    # Read the csv files\n    dfs = {\n        os.path.basename(f): pd.read_csv(f, **kwargs) for f in glob(filespath)\n    }\n    # Check if dataframes have been read\n    if len(dfs) == 0:\n        raise ValueError(\"No CSV files to read with the given filespath\")\n    # Concatenate the dataframes if requested (default)\n    col_names = list(dfs.values())[0].columns\n    if not seperate_df:\n        # If columns do not match raise an error\n        for df in dfs.values():\n            if not all(df.columns == col_names):\n                raise ValueError(\n                    \"Columns in input CSV files do not match.\"\n                    \"Files cannot be concatenated\"\n                )\n        return pd.concat(list(dfs.values()), ignore_index=True, sort=False)\n    else:\n        return dfs\n", "path": "janitor/io.py"}], "after_files": [{"content": "import os\nfrom glob import glob\nfrom typing import Iterable, Union\n\nimport pandas as pd\n\nfrom .utils import deprecated_alias\n\n\n@deprecated_alias(seperate_df=\"separate_df\", filespath=\"files_path\")\ndef read_csvs(\n    files_path: Union[str, Iterable[str]], separate_df: bool = False, **kwargs\n) -> Union[pd.DataFrame, dict]:\n    \"\"\"\n    :param files_path: The filepath pattern matching the CSVs files.\n        Accepts regular expressions, with or without csv extension.\n        Also accepts iterable of file paths.\n    :param separate_df: If False (default) returns a single Dataframe\n        with the concatenation of the csv files.\n        If True, returns a dictionary of separate dataframes\n        for each CSV file.\n    :param kwargs: Keyword arguments to pass into the\n        original pandas `read_csv`.\n    \"\"\"\n    # Sanitize input\n    assert files_path is not None\n    assert len(files_path) != 0\n\n    # Read the csv files\n    # String to file/folder or file pattern provided\n    if isinstance(files_path, str):\n        dfs = {\n            os.path.basename(f): pd.read_csv(f, **kwargs)\n            for f in glob(files_path)\n        }\n    # Iterable of file paths provided\n    else:\n        dfs = {\n            os.path.basename(f): pd.read_csv(f, **kwargs) for f in files_path\n        }\n    # Check if dataframes have been read\n    if len(dfs) == 0:\n        raise ValueError(\"No CSV files to read with the given `files_path`\")\n    # Concatenate the dataframes if requested (default)\n    col_names = list(dfs.values())[0].columns\n    if not separate_df:\n        # If columns do not match raise an error\n        for df in dfs.values():\n            if not all(df.columns == col_names):\n                raise ValueError(\n                    \"Columns in input CSV files do not match.\"\n                    \"Files cannot be concatenated\"\n                )\n        return pd.concat(list(dfs.values()), ignore_index=True, sort=False)\n    else:\n        return dfs\n", "path": "janitor/io.py"}]}