11import datetime
2+ import logging
23import shutil
34import traceback
45from functools import lru_cache
2122from .results import DataGranule
2223from .search import DataCollections
2324
25+ logger = logging .getLogger (__name__ )
26+
2427
2528class EarthAccessFile (fsspec .spec .AbstractBufferedFile ):
2629 def __init__ (self , f : fsspec .AbstractFileSystem , granule : DataGranule ) -> None :
@@ -110,7 +113,7 @@ def __init__(self, auth: Any, pre_authorize: bool = False) -> None:
110113 self .set_requests_session (url )
111114
112115 else :
113- print ( "Warning: the current session is not authenticated with NASA" )
116+ logger . warn ( "The current session is not authenticated with NASA" )
114117 self .auth = None
115118 self .in_region = self ._running_in_us_west_2 ()
116119
@@ -339,7 +342,7 @@ def _open_granules(
339342 ) -> List [Any ]:
340343 fileset : List = []
341344 total_size = round (sum ([granule .size () for granule in granules ]) / 1024 , 2 )
342- print (f"Opening { len (granules )} granules, approx size: { total_size } GB" )
345+ logger . info (f"Opening { len (granules )} granules, approx size: { total_size } GB" )
343346
344347 if self .auth is None :
345348 raise ValueError (
@@ -353,10 +356,10 @@ def _open_granules(
353356 # if the data has its own S3 credentials endpoint, we will use it
354357 endpoint = self ._own_s3_credentials (granules [0 ]["umm" ]["RelatedUrls" ])
355358 if endpoint is not None :
356- print (f"using endpoint: { endpoint } " )
359+ logger . info (f"using endpoint: { endpoint } " )
357360 s3_fs = self .get_s3fs_session (endpoint = endpoint )
358361 else :
359- print (f"using provider: { provider } " )
362+ logger . info (f"using provider: { provider } " )
360363 s3_fs = self .get_s3fs_session (provider = provider )
361364 else :
362365 access = "on_prem"
@@ -425,7 +428,7 @@ def _open_urls(
425428 f"Exception: { traceback .format_exc ()} "
426429 ) from e
427430 else :
428- print (f"Provider { provider } has no valid cloud credentials" )
431+ logger . info (f"Provider { provider } has no valid cloud credentials" )
429432 return fileset
430433 else :
431434 raise ValueError (
@@ -523,13 +526,13 @@ def _get_urls(
523526 "we need to use one from earthaccess.list_cloud_providers()"
524527 )
525528 if self .in_region and data_links [0 ].startswith ("s3" ):
526- print (f"Accessing cloud dataset using provider: { provider } " )
529+ logger . info (f"Accessing cloud dataset using provider: { provider } " )
527530 s3_fs = self .get_s3fs_session (provider = provider )
528531 # TODO: make this parallel or concurrent
529532 for file in data_links :
530533 s3_fs .get (file , str (local_path ))
531534 file_name = local_path / Path (file ).name
532- print (f"Downloaded: { file_name } " )
535+ logger . info (f"Downloaded: { file_name } " )
533536 downloaded_files .append (file_name )
534537 return downloaded_files
535538
@@ -559,17 +562,17 @@ def _get_granules(
559562 )
560563 )
561564 total_size = round (sum ([granule .size () for granule in granules ]) / 1024 , 2 )
562- print (
565+ logger . info (
563566 f" Getting { len (granules )} granules, approx download size: { total_size } GB"
564567 )
565568 if access == "direct" :
566569 if endpoint is not None :
567- print (
570+ logger . info (
568571 f"Accessing cloud dataset using dataset endpoint credentials: { endpoint } "
569572 )
570573 s3_fs = self .get_s3fs_session (endpoint = endpoint )
571574 else :
572- print (f"Accessing cloud dataset using provider: { provider } " )
575+ logger . info (f"Accessing cloud dataset using provider: { provider } " )
573576 s3_fs = self .get_s3fs_session (provider = provider )
574577
575578 local_path .mkdir (parents = True , exist_ok = True )
@@ -578,7 +581,7 @@ def _get_granules(
578581 for file in data_links :
579582 s3_fs .get (file , str (local_path ))
580583 file_name = local_path / Path (file ).name
581- print (f"Downloaded: { file_name } " )
584+ logger . info (f"Downloaded: { file_name } " )
582585 downloaded_files .append (file_name )
583586 return downloaded_files
584587 else :
@@ -615,11 +618,10 @@ def _download_file(self, url: str, directory: Path) -> str:
615618 # https://docs.python-requests.org/en/latest/user/quickstart/#raw-response-content
616619 shutil .copyfileobj (r .raw , f , length = 1024 * 1024 )
617620 except Exception :
618- print (f"Error while downloading the file { local_filename } " )
619- print (traceback .format_exc ())
621+ logger .exception (f"Error while downloading the file { local_filename } " )
620622 raise Exception
621623 else :
622- print (f"File { local_filename } already downloaded" )
624+ logger . info (f"File { local_filename } already downloaded" )
623625 return str (path )
624626
625627 def _download_onprem_granules (
@@ -663,8 +665,7 @@ def _open_urls_https(
663665 try :
664666 fileset = _open_files (url_mapping , https_fs , threads )
665667 except Exception :
666- print (
667- "An exception occurred while trying to access remote files via HTTPS: "
668- f"Exception: { traceback .format_exc ()} "
668+ logger .exception (
669+ "An exception occurred while trying to access remote files via HTTPS"
669670 )
670671 return fileset
0 commit comments