11"""building a validated datasource namespace"""
22
33import json
4+ import logging
45import os
56import pkgutil
67from collections .abc import Sequence
4243_config = ConfigParser ()
4344_config .read (os .path .join (_here , "config.ini" ))
4445
46+ logger = logging .getLogger (__name__ )
47+ if not logger .handlers :
48+ logger .addHandler (logging .NullHandler ())
49+
4550
4651def get_all_catalogs () -> list :
4752 """Get a list of all available dataops catalogs.
@@ -57,8 +62,10 @@ def get_all_catalogs() -> list:
5762 for module_finder , modname , ispkg in pkgutil .iter_modules (catalog_pkg .__path__ ):
5863 if ispkg :
5964 catalogs .append ((catalog_nspace , modname , module_finder .path ))
60- except ModuleNotFoundError :
61- print (f"No catalogs exist in namespace { catalog_nspace } " )
65+ except ModuleNotFoundError as e :
66+ if e .name != catalog_nspace :
67+ raise
68+ logger .warning ("No catalogs exist in namespace %s" , catalog_nspace )
6269
6370 return catalogs
6471
@@ -340,6 +347,7 @@ def _get_version_blobs(
340347 raise ValueError (
341348 f"Version { version } not found in available versions: { available_versions } "
342349 )
350+ logger .info (f"Using version: { version } " )
343351 if print_version :
344352 print (f"Using version: { version } " )
345353 if isinstance (version , list ):
@@ -424,6 +432,7 @@ def get_dataframe(
424432 output : Literal ["pandas" , "pd" ] = "pandas" ,
425433 version_spec : str | None = None ,
426434 selection : Literal ["newest" , "oldest" ] = "newest" ,
435+ print_version : bool = False ,
427436 ) -> pd .DataFrame : ...
428437
429438 @overload
@@ -432,6 +441,7 @@ def get_dataframe(
432441 output : Literal ["polars" , "pl" ],
433442 version_spec : str | None = None ,
434443 selection : Literal ["newest" , "oldest" ] = "newest" ,
444+ print_version : bool = False ,
435445 ) -> pl .DataFrame : ...
436446
437447 @overload
@@ -440,13 +450,15 @@ def get_dataframe(
440450 output : Literal ["pl_lazy" , "lazy" ],
441451 version_spec : str | None = None ,
442452 selection : Literal ["newest" , "oldest" ] = "newest" ,
453+ print_version : bool = False ,
443454 ) -> pl .LazyFrame : ...
444455
445456 def get_dataframe (
446457 self ,
447458 output : Literal ["pandas" , "pd" , "polars" , "pl" , "pl_lazy" , "lazy" ] = "pandas" ,
448459 version_spec : str | None = None ,
449460 selection : Literal ["newest" , "oldest" ] = "newest" ,
461+ print_version : bool = False ,
450462 ) -> pd .DataFrame | pl .DataFrame | pl .LazyFrame :
451463 """Get the data as a pandas or polars dataframe
452464
@@ -456,6 +468,7 @@ def get_dataframe(
456468 version_spec (str, optional): the version of the data to get.
457469 Defaults to "latest".
458470 selection (Literal["newest", "oldest", "all"], optional): whether to get the newest, oldest, or all matching versions. Defaults to "newest".
471+ print_version (bool, optional): whether to log the resolved version information. Defaults to False.
459472
460473 Raises:
461474 ValueError: if output is not one of
@@ -472,7 +485,7 @@ def get_dataframe(
472485 )
473486 # Fetch version blobs once and validate before deriving file extension.
474487 version_blobs = self ._get_version_blobs (
475- version_spec = version_spec , selection = selection
488+ version_spec = version_spec , selection = selection , print_version = print_version
476489 )
477490 if not version_blobs :
478491 raise ValueError (
@@ -627,7 +640,7 @@ def save_dataframe(
627640 )
628641 if file_format in ["json" , "jsonl" ] and path_after_prefix .endswith (".json" ):
629642 path_after_prefix = path_after_prefix [:- 5 ] + ".jsonl"
630- print ("Changing file extension to .jsonl for line-delimited JSON." )
643+ logger . info ("Changing file extension to .jsonl for line-delimited JSON." )
631644 if isinstance (df , pd .DataFrame ):
632645 if file_format == "parquet" :
633646 pq_bytes = df .to_parquet (index = False , compression = "snappy" )
0 commit comments