Skip to content

Commit c79d909

Browse files
committed
Initial commit to load package_version, datetime of analysis into metadata.
1 parent 5c3eed7 commit c79d909

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

src/diffpy/labpdfproc/tests/test_tools.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22
import re
33
from pathlib import Path
44

5+
import freezegun
56
import pytest
67

78
from diffpy.labpdfproc.labpdfprocapp import get_args
89
from diffpy.labpdfproc.tools import (
910
known_sources,
11+
load_datetime,
12+
load_package_version,
1013
load_user_metadata,
1114
set_input_lists,
1215
set_output_directory,
@@ -241,3 +244,25 @@ def test_load_user_metadata_bad(inputs, msg):
241244
actual_args = get_args(cli_inputs)
242245
with pytest.raises(ValueError, match=msg[0]):
243246
actual_args = load_user_metadata(actual_args)
247+
248+
249+
params7 = [(["2.5", "data.xy"], {"package_version": "0.1.0"})]
250+
251+
252+
@pytest.mark.parametrize("inputs, expected", params7)
253+
def test_load_package_version(inputs, expected, monkeypatch):
254+
monkeypatch.setattr("importlib.metadata.version", lambda _: expected["package_version"])
255+
actual_inputs = get_args(inputs)
256+
actual_args = load_package_version(actual_inputs)
257+
assert actual_args.package_version == expected["package_version"]
258+
259+
260+
params8 = [(["2.5", "data.xy"], ["2024-05-21 17:18:19"])]
261+
262+
263+
@pytest.mark.parametrize("inputs, expected_time", params8)
264+
def test_load_datetime(inputs, expected_time):
265+
with freezegun.freeze_time("2024-05-21 17:18:19"):
266+
actual_inputs = get_args(inputs)
267+
actual_args = load_datetime(actual_inputs)
268+
assert actual_args.creation_time == expected_time

src/diffpy/labpdfproc/tools.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
from datetime import datetime
12
from pathlib import Path
23

4+
from pip._internal.metadata import importlib
5+
36
WAVELENGTHS = {"Mo": 0.71, "Ag": 0.59, "Cu": 1.54}
47
known_sources = [key for key in WAVELENGTHS.keys()]
58

@@ -171,3 +174,39 @@ def load_user_metadata(args):
171174
setattr(args, key, value)
172175
delattr(args, "user_metadata")
173176
return args
177+
178+
179+
def load_package_version(args):
180+
"""
181+
Load package version into the provided argparse Namespace.
182+
183+
Parameters
184+
----------
185+
args argparse.Namespace
186+
the arguments from the parser
187+
188+
Returns
189+
-------
190+
the updated argparse Namespace with package version inserted as key-value pairs
191+
"""
192+
package_version = importlib.metadata.version("diffpy.labpdfproc")
193+
setattr(args, "package_version", package_version)
194+
return args
195+
196+
197+
def load_datetime(args):
198+
"""
199+
Load datetime into the provided argparse Namespace.
200+
201+
Parameters
202+
----------
203+
args argparse.Namespace
204+
the arguments from the parser
205+
206+
Returns
207+
-------
208+
the updated argparse Namespace with datetime inserted as key-value pairs
209+
"""
210+
curr_time = datetime.now()
211+
setattr(args, "creation_time", curr_time)
212+
return args

0 commit comments

Comments
 (0)