Skip to content

Commit 9d127a9

Browse files
committed
fixes after system testing
1 parent ef9418b commit 9d127a9

File tree

5 files changed

+28
-24
lines changed

5 files changed

+28
-24
lines changed

zappend/context.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,11 @@ def __init__(self, config: Dict[str, Any]):
3535
target_uri,
3636
storage_options=target_storage_options
3737
) as target_dataset:
38-
logger.info(f"Target dataset f{target_uri} found")
3938
target_metadata = DatasetMetadata.from_dataset(
4039
target_dataset,
4140
config
4241
)
4342
except FileNotFoundError:
44-
logger.info(f"Target dataset {target_uri} not found")
4543
target_metadata = None
4644

4745
self._target_metadata = target_metadata

zappend/fsutil/fileobj.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,7 @@ def path(self) -> str:
7777
def close(self):
7878
"""Close the filesystem used by this file object."""
7979
if self._fs is not None:
80-
if hasattr(self._fs, "close") and callable(
81-
self._fs.close):
80+
if hasattr(self._fs, "close") and callable(self._fs.close):
8281
self._fs.close()
8382
self._fs = None
8483

zappend/fsutil/transaction.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
ROLLBACK_ACTIONS = "delete_dir", "delete_file", "replace_file"
2828

2929

30+
# TODO: allow disabling rollbacks entirely
31+
3032
class Transaction:
3133
"""
3234
A filesystem transaction.
@@ -79,12 +81,14 @@ def __exit__(self, exc_type, exc_val, exc_tb):
7981
for line in rollback_txt.split("\n")
8082
] if record]
8183

82-
for record in rollback_records:
83-
logger.debug(f"Running rollback {record}")
84-
action = record[0]
85-
args = record[1:]
86-
action_method = getattr(self, "_" + action)
87-
action_method(*args)
84+
if rollback_records:
85+
logger.info(f"Rolling back {len(rollback_records)} action(s)")
86+
for record in rollback_records:
87+
logger.debug(f"Running rollback {record}")
88+
action = record[0]
89+
args = record[1:]
90+
action_method = getattr(self, "_" + action)
91+
action_method(*args)
8892

8993
self._rollback_dir.delete(recursive=True)
9094

@@ -96,15 +100,17 @@ def __exit__(self, exc_type, exc_val, exc_tb):
96100
logger.warning("Note, it should be save to delete it manually.")
97101

98102
def _delete_dir(self, target_path):
99-
self._target_dir.fs.rm(target_path, recursive=True)
103+
_dir = self._target_dir / target_path
104+
_dir.delete(recursive=True)
100105

101106
def _delete_file(self, target_path):
102-
self._target_dir.fs.rm(target_path)
107+
_file = self._target_dir / target_path
108+
_file.delete()
103109

104110
def _replace_file(self, target_path, rollback_filename):
111+
_file = self._target_dir / target_path
105112
data = (self._rollback_dir / rollback_filename).read()
106-
with self._target_dir.fs.open(target_path, "wb") as f:
107-
f.write(data)
113+
_file.write(data)
108114

109115
def _add_rollback_action(self,
110116
action: RollbackAction,

zappend/metadata.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,8 @@ def from_dataset(cls,
123123

124124
variables = _get_effective_variables(
125125
dataset,
126-
config.get("included_variables") or {},
127-
config.get("excluded_variables") or {},
126+
config.get("included_variables") or [],
127+
config.get("excluded_variables") or [],
128128
config.get("variables") or {}
129129
)
130130

@@ -166,11 +166,8 @@ def _get_effective_variables(
166166
config_variables: dict[str, dict[str, Any]] | None
167167
) -> dict[str, VariableMetadata]:
168168
config_variables = dict(config_variables or {})
169+
# Get and remove defaults for all variables
169170
defaults = config_variables.pop("*", {})
170-
config_variables = {k: merge_configs(defaults, v)
171-
for k, v in config_variables.items()
172-
if k != "*"}
173-
174171
all_var_names = (set(map(str, dataset.variables.keys()))
175172
.union(set(config_variables.keys())))
176173
if config_included_variables:
@@ -189,7 +186,11 @@ def _get_effective_variables(
189186
variables = {}
190187

191188
for var_name in selected_var_names:
192-
config_var_def: dict = dict(config_variables.get(var_name) or {})
189+
# "*" is default for all variables
190+
config_var_def: dict = merge_configs(
191+
defaults,
192+
config_variables.get(var_name) or {}
193+
)
193194
ds_var = dataset.variables.get(var_name)
194195
if ds_var is not None:
195196
# Variable found in dataset: use dataset variable to complement

zappend/processor.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,11 @@ def process_slice(self, slice_obj: str | xr.Dataset):
8181
def create_target_from_slice(ctx: Context,
8282
slice_ds: xr.Dataset,
8383
rollback_cb: RollbackCallback):
84-
logger.info(f"Creating target dataset")
84+
target_dir = ctx.target_dir
85+
logger.info(f"Creating target dataset {target_dir.uri}")
8586
target_ds = tailor_target_dataset(slice_ds, ctx.target_metadata)
8687
if ctx.dry_run:
8788
return
88-
target_dir = ctx.target_dir
8989
# TODO: adjust global attributes dependent on append_dim,
9090
# e.g., time coverage
9191
try:
@@ -102,8 +102,8 @@ def create_target_from_slice(ctx: Context,
102102
def update_target_from_slice(ctx: Context,
103103
slice_ds: xr.Dataset,
104104
rollback_cb: RollbackCallback):
105-
logger.info(f"Updating target dataset")
106105
target_dir = ctx.target_dir
106+
logger.info(f"Updating target dataset {target_dir.uri}")
107107
append_dim_name = ctx.append_dim_name
108108

109109
slice_ds = tailor_slice_dataset(slice_ds,

0 commit comments

Comments
 (0)