Skip to content

Commit 7a3fb3b

Browse files
committed
Merge branch 'add-check-evaluator'.
- add support for the "CHECK" evaluator. - use the OPTIMIZED evaluator when supported.
2 parents d6d819d + 181b9e6 commit 7a3fb3b

File tree

7 files changed

+24
-17
lines changed

7 files changed

+24
-17
lines changed

SConstruct

+1
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ if env['PLATFORM'] == 'darwin':
110110
env.Replace(SHLINKFLAGS=darwin_shlinkflags)
111111
env.AppendUnique(SHLINKFLAGS=['-bundle'])
112112
env.AppendUnique(SHLINKFLAGS=['-undefined', 'dynamic_lookup'])
113+
env.AppendUnique(SHLINKFLAGS=['-headerpad_max_install_names'])
113114
fast_linkflags[:] = []
114115

115116
# Compiler specific options

conda-recipe/meta.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ requirements:
2020
- python
2121
- setuptools
2222
- numpy 1.9.2
23-
- libdiffpy >=1.3.2,1.3.*
23+
- libdiffpy >=1.3.3,1.3.*
2424
- pycifrw
2525
- diffpy.structure
2626
- scons
@@ -29,7 +29,7 @@ requirements:
2929
- python
3030
- setuptools
3131
- numpy >=1.9.2
32-
- libdiffpy >=1.3.2,1.3.*
32+
- libdiffpy >=1.3.3,1.3.*
3333
- pycifrw
3434
- diffpy.structure
3535
- pyobjcryst 2.0*

diffpy/srreal/parallel.py

+2
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,8 @@ def _parallelData(kwd):
167167
'''Helper for calculating and fetching raw results from a worker node.
168168
'''
169169
pqobj = kwd['pqobj']
170+
if pqobj.evaluatortype == 'OPTIMIZED':
171+
pqobj = copy.copy(pqobj)
170172
pqobj._setupParallelRun(kwd['cpuindex'], kwd['ncpu'])
171173
pqobj.eval()
172174
return pqobj._getParallelData()

diffpy/srreal/tests/testpairquantity.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,13 @@ def test_evaluatortype(self):
2626
self.assertRaises(ValueError, setattr, pq, 'evaluatortype', 'invalid')
2727
self.assertRaises(ValueError, setattr, pq, 'evaluatortype', 'basic')
2828
self.assertRaises(ValueError, setattr, pq, 'evaluatortype', 'BASic')
29-
# check OPTIMIZED setup with PDFCalculator where it is supported
29+
# check all supported evaluators in PDFCalculator
3030
pdfc = PDFCalculator()
31+
self.assertEqual('OPTIMIZED', pdfc.evaluatortype)
32+
pdfc.evaluatortype = 'BASIC'
3133
self.assertEqual('BASIC', pdfc.evaluatortype)
34+
pdfc.evaluatortype = 'CHECK'
35+
self.assertEqual('CHECK', pdfc.evaluatortype)
3236
pdfc.evaluatortype = 'OPTIMIZED'
3337
self.assertEqual('OPTIMIZED', pdfc.evaluatortype)
3438
return

srrealmodule/SConscript

+12-5
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,18 @@ module = env.SharedLibrary('srreal_ext', GlobSources('*.cpp'),
1919
SHLIBPREFIX='', SHLIBSUFFIX='.so')
2020
Alias('module', module)
2121

22-
# install in a development mode
23-
gitdir = env['ENV'].get('GIT_DIR', '#/.git')
24-
gheads = Glob(gitdir + '/HEAD') + Glob(gitdir + '/refs/heads/*')
25-
egginfo = env.Command(NoCache('#/diffpy.srreal.egg-info/PKG-INFO'), gheads,
26-
'$python setup.py egg_info')
22+
# update egg info when package version changes.
23+
basedir = Dir('#').abspath
24+
version = pyoutput(
25+
'import sys\n'
26+
'sys.path.insert(0, %r)\n'
27+
'from setup import versiondata\n'
28+
'print(versiondata.get("DEFAULT", "version"))\n' % basedir)
29+
egginfo = env.Command(NoCache('#/diffpy.srreal.egg-info/PKG-INFO'),
30+
env.Value(version),
31+
'$python setup.py egg_info')
32+
33+
# install extension module in a development mode.
2734
develop = Alias('develop', [egginfo, Install('#/diffpy/srreal', module)])
2835

2936
test = env.Alias('test', develop,

srrealmodule/srreal_converters.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@
3434
#include <diffpy/srreal/QuantityType.hpp>
3535
#include <diffpy/version.hpp>
3636

37-
#if DIFFPY_VERSION < 1003002000
38-
#error "diffpy.srreal requires libdiffpy 1.3.2 or later."
37+
#if DIFFPY_VERSION < 1003003000
38+
#error "diffpy.srreal requires libdiffpy 1.3.3 or later."
3939
#endif
4040

4141
/// Conversion function that supports implicit conversions in

srrealmodule/wrap_PairQuantity.cpp

-7
Original file line numberDiff line numberDiff line change
@@ -359,10 +359,8 @@ std::string stringevaluatortype(PQEvaluatorType tp)
359359
return evtp_BASIC;
360360
case OPTIMIZED:
361361
return evtp_OPTIMIZED;
362-
#if DIFFPY_VERSION >= 1003002023
363362
case CHECK:
364363
return evtp_CHECK;
365-
#endif
366364
}
367365
const char* emsg = "Unknown internal value of PQEvaluatorType.";
368366
PyErr_SetString(PyExc_NotImplementedError, emsg);
@@ -381,15 +379,10 @@ void setevaluatortype(PairQuantity& pq, const std::string& tp)
381379
{
382380
if (tp == evtp_BASIC) return pq.setEvaluatorType(BASIC);
383381
if (tp == evtp_OPTIMIZED) return pq.setEvaluatorType(OPTIMIZED);
384-
#if DIFFPY_VERSION >= 1003002023
385382
if (tp == evtp_CHECK) return pq.setEvaluatorType(CHECK);
386383
python::object emsg = ("evaluatortype must be one of %r." %
387384
python::make_tuple(python::make_tuple(
388385
evtp_BASIC, evtp_OPTIMIZED, evtp_CHECK)));
389-
#else
390-
python::object emsg = ("evaluatortype must be either %r or %r." %
391-
python::make_tuple(evtp_BASIC, evtp_OPTIMIZED));
392-
#endif
393386
PyErr_SetObject(PyExc_ValueError, emsg.ptr());
394387
throw_error_already_set();
395388
}

0 commit comments

Comments
 (0)