Skip to content

Commit fdc2e16

Browse files
authored
Merge pull request #119 from Tieqiong/date
fix: correct release date
2 parents 24fb526 + a1531a0 commit fdc2e16

File tree

2 files changed

+61
-7
lines changed

2 files changed

+61
-7
lines changed

news/date.rst

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
**Added:**
2+
3+
* <news item>
4+
5+
**Changed:**
6+
7+
* <news item>
8+
9+
**Deprecated:**
10+
11+
* <news item>
12+
13+
**Removed:**
14+
15+
* <news item>
16+
17+
**Fixed:**
18+
19+
* Fix missing `__date__`, use PyPI release date.
20+
21+
**Security:**
22+
23+
* <news item>

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__"]
19-
20-
# obtain version information
17+
import datetime
18+
import json
19+
import urllib.request
2120
from importlib.metadata import version
21+
from pathlib import Path
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)
54+
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)