Skip to content

Commit d612b7c

Browse files
committed
fix: correct release date
1 parent 24fb526 commit d612b7c

File tree

1 file changed

+38
-7
lines changed

1 file changed

+38
-7
lines changed

src/diffpy/pdffit2/version.py

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,46 @@
1414
##############################################################################
1515
"""Definition of __version__."""
1616

17-
# We do not use the other three variables, but can be added back if needed.
18-
__all__ = ["__date__", "__git_commit__", "__timestamp__", "__version__"]
17+
import datetime
18+
from importlib.metadata import distribution, version
19+
from pathlib import Path
20+
import urllib.request
21+
import json
22+
23+
24+
def get_pypi_release_date(package_name, timeout=5):
25+
package_file = Path(__file__).resolve()
26+
27+
try:
28+
with open(package_file, "r", encoding="utf-8") as f:
29+
lines = f.readlines()
30+
for line in reversed(lines):
31+
if line.startswith("# Release date:"):
32+
return line.split(":", 1)[1].strip()
33+
34+
url = f"https://pypi.org/pypi/{package_name}/json"
35+
with urllib.request.urlopen(url, timeout=timeout) as response:
36+
data = json.loads(response.read().decode('utf-8'))
37+
38+
installed_version = version(package_name)
39+
release_data = data["releases"].get(installed_version, [])
40+
if not release_data:
41+
raise ValueError(f"No release data found for version {installed_version}")
42+
43+
release_date_str = release_data[-1]["upload_time"]
44+
release_date = datetime.datetime.fromisoformat(release_date_str).date()
45+
46+
with open(package_file, "a", encoding="utf-8") as f:
47+
f.write(f"\n# Release date: {release_date}")
48+
49+
except (ValueError, OSError) as e:
50+
print(f"Warning: Could not fetch release date from PyPI: {e}")
51+
release_date = datetime.datetime.fromtimestamp(package_file.stat().st_ctime).isoformat()
52+
53+
return str(release_date)
1954

20-
# obtain version information
21-
from importlib.metadata import version
2255

2356
__version__ = version("diffpy.pdffit2")
24-
__date__ = __all__[0]
25-
__git_commit__ = __all__[1]
26-
__timestamp__ = __all__[2]
57+
__date__ = get_pypi_release_date("diffpy.pdffit2")
2758

2859
# End of file

0 commit comments

Comments
 (0)