11"""PEtab core functions (or functions that don't fit anywhere else)"""
2-
2+ from pathlib import Path
33import logging
44import os
55import re
@@ -43,7 +43,7 @@ def write_simulation_df(df: pd.DataFrame, filename: str) -> None:
4343 df .to_csv (filename , sep = '\t ' , index = False )
4444
4545
46- def get_visualization_df (visualization_file : str ) -> pd .DataFrame :
46+ def get_visualization_df (visualization_file : Union [ str , Path ] ) -> pd .DataFrame :
4747 """Read PEtab visualization table
4848
4949 Arguments:
@@ -62,7 +62,9 @@ def get_visualization_df(visualization_file: str) -> pd.DataFrame:
6262 return vis_spec
6363
6464
65- def write_visualization_df (df : pd .DataFrame , filename : str ) -> None :
65+ def write_visualization_df (
66+ df : pd .DataFrame , filename : Union [str , Path ]
67+ ) -> None :
6668 """Write PEtab visualization table
6769
6870 Arguments:
@@ -177,7 +179,8 @@ def flatten_timepoint_specific_output_overrides(
177179
178180
179181def concat_tables (
180- tables : Union [str , pd .DataFrame , Iterable [Union [pd .DataFrame , str ]]],
182+ tables : Union [str , Path , pd .DataFrame ,
183+ Iterable [Union [pd .DataFrame , str , Path ]]],
181184 file_parser : Optional [Callable ] = None
182185) -> pd .DataFrame :
183186 """Concatenate DataFrames provided as DataFrames or filenames, and a parser
@@ -196,14 +199,14 @@ def concat_tables(
196199 if isinstance (tables , pd .DataFrame ):
197200 return tables
198201
199- if isinstance (tables , str ):
202+ if isinstance (tables , ( str , Path ) ):
200203 return file_parser (tables )
201204
202205 df = pd .DataFrame ()
203206
204207 for tmp_df in tables :
205208 # load from file, if necessary
206- if isinstance (tmp_df , str ):
209+ if isinstance (tmp_df , ( str , Path ) ):
207210 tmp_df = file_parser (tmp_df )
208211
209212 df = df .append (tmp_df , sort = False ,
@@ -241,14 +244,14 @@ def is_empty(val) -> bool:
241244
242245
243246def create_combine_archive (
244- yaml_file : str ,
245- filename : str ,
247+ yaml_file : Union [ str , Path ] ,
248+ filename : Union [ str , Path ] ,
246249 family_name : Optional [str ] = None ,
247250 given_name : Optional [str ] = None ,
248251 email : Optional [str ] = None ,
249252 organization : Optional [str ] = None ,
250253) -> None :
251- """Create COMBINE archive (http ://co.mbine.org/documents/archive) based
254+ """Create COMBINE archive (https ://co.mbine.org/documents/archive) based
252255 on PEtab YAML file.
253256
254257 Arguments:
@@ -260,7 +263,7 @@ def create_combine_archive(
260263 organization: Organization of archive creator
261264 """
262265
263- path_prefix = os .path .dirname (yaml_file )
266+ path_prefix = os .path .dirname (str ( yaml_file ) )
264267 yaml_config = yaml .load_yaml (yaml_file )
265268
266269 # function-level import, because module-level import interfered with
@@ -285,7 +288,7 @@ def _add_file_metadata(location: str, description: str = ""):
285288
286289 # Add PEtab files and metadata
287290 archive .addFile (
288- yaml_file ,
291+ str ( yaml_file ) ,
289292 os .path .basename (yaml_file ),
290293 libcombine .KnownFormats .lookupFormat ("yaml" ),
291294 True
@@ -353,7 +356,7 @@ def _add_file_metadata(location: str, description: str = ""):
353356 description .addCreator (creator )
354357
355358 archive .addMetadata ("." , description )
356- archive .writeToFile (filename )
359+ archive .writeToFile (str ( filename ) )
357360
358361
359362def unique_preserve_order (seq : Sequence ) -> List :
0 commit comments