Skip to content

Commit

Permalink
refactor jedi class method extract_tar (NOAA-EMC#2862)
Browse files Browse the repository at this point in the history
  • Loading branch information
RussTreadon-NOAA committed Sep 18, 2024
1 parent 4229886 commit ed52b72
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 27 deletions.
43 changes: 20 additions & 23 deletions ush/python/pygfs/jedi/jedi.py
Original file line number Diff line number Diff line change
Expand Up @@ -232,39 +232,36 @@ def get_bias_dict(self, task_config: AttrDict, bias_file) -> Dict[str, Any]:
return bias_dict

@logit(logger)
def extract_tar(self, task_config: AttrDict, tar_dict) -> Dict[str, Any]:
"""Extract files from list of tarfiles
def extract_tar(self, tar_file: str) -> None:
"""Extract bias correction files from a tarball
This method extract bias correction files from tarball(s)
This method extract files from a tarball
Parameters
----------
task_config: AttrDict
Attribute-dictionary of all configuration variables associated with a GDAS task.
tar_dict
a dictionary containing the list of tar files
tar_file
path/name of tarball
Returns
----------
None
"""

# extract bias correction files from tar file
for tar_file in tar_dict['copy']:
if tar_file[1].endswith('.tar'):
try:
with tarfile.open(tar_file[1], "r") as tarball:
tarball.extractall(path=os.path.join(task_config.DATA, 'obs'))
logger.info(f"Extract {tarball.getnames()}")
except tarfile.ReadError as err:
if tarfile.is_tarfile(tarfile[1]):
logger.error(f"FATAL ERROR: {tarfile[1]} could not be read")
raise tarfile.ReadError(f"FATAL ERROR: unable to read {tarfile[1]}")
else:
logger.info()
except tarfile.ExtractError as err:
logger.exception(f"FATAL ERROR: unable to extract from {tarfile[1]}")
raise tarfile.ExtractError("FATAL ERROR: unable to extract from {tarfile[1]}")
# extract files from tar file
tar_path = os.path.dirname(tar_file)
try:
with tarfile.open(tar_file, "r") as tarball:
tarball.extractall(path=tar_path)
logger.info(f"Extract {tarball.getnames()}")
except tarfile.ReadError as err:
if tarfile.is_tarfile(tarfile[1]):
logger.error(f"FATAL ERROR: {tarfile[1]} could not be read")
raise tarfile.ReadError(f"FATAL ERROR: unable to read {tarfile[1]}")
else:
logger.info()
except tarfile.ExtractError as err:
logger.exception(f"FATAL ERROR: unable to extract from {tarfile[1]}")
raise tarfile.ExtractError("FATAL ERROR: unable to extract from {tarfile[1]}")


@logit(logger)
Expand Down
5 changes: 3 additions & 2 deletions ush/python/pygfs/task/atm_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,9 @@ def initialize_analysis(self) -> None:
logger.debug(f"Bias correction files:\n{pformat(bias_dict)}")

# extract bias corrections
logger.info(f"Extract bias correction files from tarball")
self.jedi.extract_tar(self.task_config, bias_dict)
tar_file = os.path.join(self.task_config.DATA, 'obs', f"{self.task_config.GPREFIX}{bias_file}")
logger.info(f"Extract bias correction files from {tar_file}")
self.jedi.extract_tar(tar_file)

# stage CRTM fix files
logger.info(f"Staging CRTM fix files from {self.task_config.CRTM_FIX_YAML}")
Expand Down
5 changes: 3 additions & 2 deletions ush/python/pygfs/task/atmens_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,9 @@ def initialize_analysis(self) -> None:
logger.debug(f"Bias correction files:\n{pformat(bias_dict)}")

# extract bias corrections
logger.info(f"Extract bias correction files from tarball")
self.jedi.extract_tar(self.task_config, bias_dict)
tar_file = os.path.join(self.task_config.DATA, 'obs', f"{self.task_config.GPREFIX}{bias_file}")
logger.info(f"Extract bias correction files from {tar_file}")
self.jedi.extract_tar(tar_file)

# stage CRTM fix files
logger.info(f"Staging CRTM fix files from {self.task_config.CRTM_FIX_YAML}")
Expand Down

0 comments on commit ed52b72

Please sign in to comment.