Skip to content

Commit c6030cd

Browse files
committed
Convert libdiffpy_version_info to namedtuple.
- add micro and patch fields to libdiffpy_version_info - require libdiffpy >= 1.3 to ensure libdiffpy_version_info is available at runtime. - deprecate get_libdiffpy_version_info
1 parent add5027 commit c6030cd

2 files changed

Lines changed: 39 additions & 39 deletions

File tree

diffpy/srreal/version.py

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
##############################################################################
1515

1616

17-
"""Definition of __version__, __date__, __gitsha__.
17+
"""Definition of __version__, __date__, __gitsha__, libdiffpy_version_info.
1818
"""
1919

2020
from pkg_resources import resource_filename
@@ -33,42 +33,42 @@
3333

3434
del cp
3535

36-
# Access to version data of the libdiffpy shared library ---------------------
36+
# version information on the active libdiffpy shared library -----------------
3737

38-
def get_libdiffpy_version_info():
39-
"""Get version data for the linked libdiffpy shared library.
40-
41-
Return a singleton instance of libdiffpy_version_info class.
42-
"""
43-
global _lvi
44-
if _lvi is not None: return _lvi
45-
from diffpy.srreal.srreal_ext import _get_libdiffpy_version_info_dict
46-
vd = _get_libdiffpy_version_info_dict()
47-
48-
class libdiffpy_version_info(object):
38+
from collections import namedtuple
39+
from diffpy.srreal.srreal_ext import _get_libdiffpy_version_info_dict
4940

50-
"""Version information for the loaded libdiffpy shared library.
41+
libdiffpy_version_info = namedtuple('libdiffpy_version_info',
42+
"version version_number major minor micro patch date git_sha")
43+
vd = _get_libdiffpy_version_info_dict()
44+
libdiffpy_version_info = libdiffpy_version_info(
45+
version = vd['version_str'],
46+
version_number = vd['version'],
47+
major = vd['major'],
48+
minor = vd['minor'],
49+
micro = vd['micro'],
50+
patch = vd['patch'],
51+
date = vd['date'],
52+
git_sha = vd['git_sha'])
53+
del vd
5154

52-
version -- version string for the loaded libdiffpy library.
53-
version_number -- Integer encoding of the library version.
54-
major -- Major version number of the library.
55-
minor -- Minor version number of the library.
56-
date -- Git commit date of the libdiffpy sources.
57-
git_sha -- Git commit hash of this libdiffpy version.
58-
"""
5955

60-
version = vd['version_str']
61-
version_number = vd['version']
62-
major = vd['major']
63-
minor = vd['minor']
64-
date = vd['date']
65-
git_sha = vd['git_sha']
56+
def get_libdiffpy_version_info():
57+
"""
58+
Get version data for the active libdiffpy shared library.
6659
67-
# class libdiffpy_version_info
60+
Returns
61+
-------
62+
libdiffpy_version_info
63+
a namedtuple which contains libdiffpy version data.
6864
69-
_lvi = libdiffpy_version_info()
70-
return get_libdiffpy_version_info()
7165
72-
_lvi = None
66+
.. note:: Deprecated in diffpy.srreal 1.1
67+
`libdiffpy_version_info` will be removed in diffpy.srreal 1.2.
68+
"""
69+
from warnings import warn
70+
warn("get_libdiffpy_version_info is deprecated, "
71+
"use the libdiffpy_version_info object.", DeprecationWarning)
72+
return libdiffpy_version_info
7373

7474
# End of file

srrealmodule/wrap_libdiffpy_version.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@
2020
#include <boost/python/dict.hpp>
2121
#include <boost/python/def.hpp>
2222

23+
#if DIFFPY_VERSION < 1003000
24+
#error "diffpy.srreal requires libdiffpy 1.3 or later."
25+
#endif
26+
2327
namespace srrealmodule {
2428
namespace nswrap_libdiffpy_version {
2529

@@ -36,22 +40,18 @@ Return dictionary with version data for the loaded libdiffpy library.\n\
3640
python::dict get_libdiffpy_version_info_dict()
3741
{
3842
python::dict rv;
39-
#if DIFFPY_VERSION > 1002048
4043
// Obtain version data from runtime values.
4144
rv["version"] = libdiffpy_version_info::version;
4245
rv["version_str"] = libdiffpy_version_info::version_str;
4346
rv["major"] = libdiffpy_version_info::major;
4447
rv["minor"] = libdiffpy_version_info::minor;
48+
rv["micro"] = libdiffpy_version_info::micro;
4549
rv["date"] = libdiffpy_version_info::date;
4650
rv["git_sha"] = libdiffpy_version_info::git_sha;
51+
#if DIFFPY_VERSION > 1003000
52+
rv["patch"] = libdiffpy_version_info::patch;
4753
#else
48-
// For old libdiffpy revert to compile time values.
49-
rv["version"] = DIFFPY_VERSION;
50-
rv["version_str"] = DIFFPY_VERSION_STR;
51-
rv["major"] = DIFFPY_VERSION_MAJOR;
52-
rv["minor"] = DIFFPY_VERSION_MINOR;
53-
rv["date"] = DIFFPY_VERSION_DATE;
54-
rv["git_sha"] = DIFFPY_GIT_SHA;
54+
rv["patch"] = 0;
5555
#endif
5656
return rv;
5757
}

0 commit comments

Comments
 (0)