Skip to content

Commit 2bd8b50

Browse files
initial commit
1 parent f6b2ba4 commit 2bd8b50

File tree

3 files changed

+90
-1
lines changed

3 files changed

+90
-1
lines changed

src/diffpy/labpdfproc/labpdfprocapp.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from diffpy.labpdfproc.functions import apply_corr, compute_cve
55
from diffpy.labpdfproc.tools import (
66
known_sources,
7+
load_metadata,
78
load_package_info,
89
load_user_info,
910
load_user_metadata,
@@ -144,7 +145,7 @@ def main():
144145
"tth",
145146
scat_quantity="x-ray",
146147
name=filepath.stem,
147-
metadata={"muD": args.mud, "anode_type": args.anode_type},
148+
metadata=load_metadata(args, filepath),
148149
)
149150

150151
absorption_correction = compute_cve(input_pattern, args.mud, args.wavelength)

src/diffpy/labpdfproc/tests/test_tools.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from diffpy.labpdfproc.labpdfprocapp import get_args
88
from diffpy.labpdfproc.tools import (
99
known_sources,
10+
load_metadata,
1011
load_package_info,
1112
load_user_info,
1213
load_user_metadata,
@@ -277,3 +278,57 @@ def test_load_package_info(mocker):
277278
actual_args = get_args(cli_inputs)
278279
actual_args = load_package_info(actual_args)
279280
assert actual_args.package_info == {"diffpy.labpdfproc": "1.2.3", "diffpy.utils": "3.3.0"}
281+
282+
283+
def _setup(mocker, user_filesystem):
284+
cwd = Path(user_filesystem)
285+
home_dir = cwd / "home_dir"
286+
mocker.patch("pathlib.Path.home", lambda _: home_dir)
287+
os.chdir(cwd)
288+
mocker.patch(
289+
"importlib.metadata.version",
290+
side_effect=lambda package_name: "3.3.0" if package_name == "diffpy.utils" else "1.2.3",
291+
)
292+
293+
294+
def _preprocess_args(args):
295+
args = load_package_info(args)
296+
args = load_user_info(args)
297+
args = set_input_lists(args)
298+
args.output_directory = set_output_directory(args)
299+
args.wavelength = set_wavelength(args)
300+
args = load_user_metadata(args)
301+
return args
302+
303+
304+
def test_load_metadata(mocker, user_filesystem):
305+
_setup(mocker, user_filesystem)
306+
cli_inputs = [
307+
"2.5",
308+
".",
309+
"--wavelength",
310+
"1.54",
311+
"--user-metadata",
312+
"key=value",
313+
"--username",
314+
"cli_username",
315+
"--email",
316+
317+
]
318+
actual_args = get_args(cli_inputs)
319+
actual_args = _preprocess_args(actual_args)
320+
for filepath in actual_args.input_paths:
321+
actual_metadata = load_metadata(actual_args, filepath)
322+
expected_metadata = {
323+
"mud": 2.5,
324+
"input_directory": str(filepath),
325+
"anode_type": "Cu",
326+
"wavelength": 1.54,
327+
"output_directory": str(Path.cwd().resolve()),
328+
"xtype": "tth",
329+
"key": "value",
330+
"username": "cli_username",
331+
"email": "[email protected]",
332+
"package_info": {"diffpy.labpdfproc": "1.2.3", "diffpy.utils": "3.3.0"},
333+
}
334+
assert actual_metadata == expected_metadata

src/diffpy/labpdfproc/tools.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,3 +213,36 @@ def load_package_info(args):
213213
metadata = get_package_info("diffpy.labpdfproc")
214214
setattr(args, "package_info", metadata["package_info"])
215215
return args
216+
217+
218+
def _set_anode_type(args):
219+
if args.wavelength in WAVELENGTHS.values():
220+
args.anode_type = next(key for key, value in WAVELENGTHS.items() if value == args.wavelength)
221+
else:
222+
delattr(args, "anode_type")
223+
return args
224+
225+
226+
def load_metadata(args, filepath):
227+
"""
228+
Load metadata from args,
229+
except for anode type if wavelength does not match, and do not load output_correction or force_overwrite
230+
231+
Parameters
232+
----------
233+
args argparse.Namespace
234+
the arguments from the parser
235+
236+
Returns
237+
-------
238+
A dictionary with all arguments from the parser
239+
"""
240+
241+
args = _set_anode_type(args)
242+
metadata = vars(args)
243+
exclude_keys = ["output_correction", "force_overwrite", "input", "input_paths"]
244+
for key in exclude_keys:
245+
metadata.pop(key, None)
246+
metadata["input_directory"] = str(filepath)
247+
metadata["output_directory"] = str(metadata["output_directory"])
248+
return metadata

0 commit comments

Comments
 (0)