Hello community, here is the log from the commit of package python-numexpr for openSUSE:Factory checked in at 2019-01-08 12:26:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-numexpr (Old) and /work/SRC/openSUSE:Factory/.python-numexpr.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-numexpr" Tue Jan 8 12:26:02 2019 rev:10 rq:660789 version:2.6.9 Changes: -------- --- /work/SRC/openSUSE:Factory/python-numexpr/python-numexpr.changes 2018-09-04 22:56:27.545060130 +0200 +++ /work/SRC/openSUSE:Factory/.python-numexpr.new.28833/python-numexpr.changes 2019-01-08 12:28:22.276279198 +0100 @@ -1,0 +2,7 @@ +Sat Dec 22 05:26:03 UTC 2018 - Todd R <[email protected]> + +- Update to 2.6.9 + * Thanks to Mike Toews for more robust handling of the thread-setting environment variables. + * With Appveyor updating to Python 3.7.1, wheels for Python 3.7 are now available in addition to those for other OSes. + +------------------------------------------------------------------- Old: ---- numexpr-2.6.8.tar.gz New: ---- numexpr-2.6.9.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-numexpr.spec ++++++ --- /var/tmp/diff_new_pack.IithlG/_old 2019-01-08 12:28:22.836278586 +0100 +++ /var/tmp/diff_new_pack.IithlG/_new 2019-01-08 12:28:22.836278586 +0100 @@ -12,13 +12,13 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-numexpr -Version: 2.6.8 +Version: 2.6.9 Release: 0 Summary: Numerical expression evaluator for NumPy License: MIT @@ -42,6 +42,8 @@ %prep %setup -q -n numexpr-%{version} +# wrong-file-end-of-line-encoding +sed -i 's/\r$//' ANNOUNCE.rst AUTHORS.txt README.rst RELEASE_NOTES.rst site.cfg.example # remove unwanted shebang sed -i '/^#!/ d' numexpr/cpuinfo.py @@ -53,6 +55,14 @@ %python_install %python_expand %fdupes %{buildroot}%{$python_sitearch} +%check +mkdir tester +pushd tester +%{python_expand export PYTHONPATH=%{buildroot}%{$python_sitearch} +$python -B -c "import sys;import numexpr;sys.exit(0 if numexpr.test().wasSuccessful() else 1)" +} +popd + %files %{python_files} %doc ANNOUNCE.rst AUTHORS.txt README.rst RELEASE_NOTES.rst site.cfg.example %license LICENSE.txt ++++++ numexpr-2.6.8.tar.gz -> numexpr-2.6.9.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.8/ANNOUNCE.rst new/numexpr-2.6.9/ANNOUNCE.rst --- old/numexpr-2.6.8/ANNOUNCE.rst 2018-08-17 05:48:20.000000000 +0200 +++ new/numexpr-2.6.9/ANNOUNCE.rst 2018-12-21 00:59:52.000000000 +0100 @@ -1,29 +1,23 @@ ========================== - Announcing Numexpr 2.6.8 + Announcing Numexpr 2.6.9 ========================== Hi everyone, -Our attempt to fix the memory leak in 2.6.7 had an unforseen consequence that -the `f_locals` from the top-most frame is actually `f_globals`, and clearing it -to fix the extra reference count deletes all global variables. Needless to say -this is undesired behavior. A check has been added to prevent clearing the -globals dict, tested against both `python` and `ipython`. As such, we recommend -skipping 2.6.7 and upgrading straight to 2.6.8 from 2.6.6. +This is a version-bump release to provide wheels for Python 3.7.1 on Windows +platforms. Project documentation is available at: http://numexpr.readthedocs.io/ -Changes from 2.6.7 to 2.6.8 +Changes from 2.6.8 to 2.6.9 --------------------------- -- Add check to make sure that `f_locals` is not actually `f_globals` when we - do the `f_locals` clear to avoid the #310 memory leak issue. -- Compare NumPy versions using `distutils.version.LooseVersion` to avoid issue - #312 when working with NumPy development versions. -- As part of `multibuild`, wheels for Python 3.7 for Linux and MacOSX are now - available on PyPI. +- Thanks to Mike Toews for more robust handling of the thread-setting + environment variables. +- With Appveyor updating to Python 3.7.1, wheels for Python 3.7 are now + available in addition to those for other OSes. What's Numexpr? --------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.8/PKG-INFO new/numexpr-2.6.9/PKG-INFO --- old/numexpr-2.6.8/PKG-INFO 2018-08-19 20:43:01.000000000 +0200 +++ new/numexpr-2.6.9/PKG-INFO 2018-12-21 19:38:11.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: numexpr -Version: 2.6.8 +Version: 2.6.9 Summary: Fast numerical expression evaluator for NumPy Home-page: https://github.com/pydata/numexpr Author: David M. Cooke, Francesc Alted and others @@ -17,14 +17,17 @@ :Travis CI: |travis| :Appveyor: |appveyor| :PyPi: |version| + :DOI: |doi| :readthedocs: |docs| .. |travis| image:: https://travis-ci.org/pydata/numexpr.png?branch=master :target: https://travis-ci.org/pydata/numexpr - .. |appveyor| image:: https://ci.appveyor.com/api/projects/status/github/robbmcleod/numexpr + .. |appveyor| image:: https://ci.appveyor.com/api/projects/status/we2ff01vqlmlb9ip :target: https://ci.appveyor.com/project/robbmcleod/numexpr .. |docs| image:: https://readthedocs.org/projects/numexpr/badge/?version=latest :target: http://numexpr.readthedocs.io/en/latest + .. |doi| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1492916.svg + :target: https://zenodo.org/record/1492916 .. |version| image:: https://img.shields.io/pypi/v/numexpr.png :target: https://pypi.python.org/pypi/numexpr diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.8/README.rst new/numexpr-2.6.9/README.rst --- old/numexpr-2.6.8/README.rst 2018-08-12 18:59:27.000000000 +0200 +++ new/numexpr-2.6.9/README.rst 2018-11-21 06:28:24.000000000 +0100 @@ -9,14 +9,17 @@ :Travis CI: |travis| :Appveyor: |appveyor| :PyPi: |version| +:DOI: |doi| :readthedocs: |docs| .. |travis| image:: https://travis-ci.org/pydata/numexpr.png?branch=master :target: https://travis-ci.org/pydata/numexpr -.. |appveyor| image:: https://ci.appveyor.com/api/projects/status/github/robbmcleod/numexpr +.. |appveyor| image:: https://ci.appveyor.com/api/projects/status/we2ff01vqlmlb9ip :target: https://ci.appveyor.com/project/robbmcleod/numexpr .. |docs| image:: https://readthedocs.org/projects/numexpr/badge/?version=latest :target: http://numexpr.readthedocs.io/en/latest +.. |doi| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1492916.svg + :target: https://zenodo.org/record/1492916 .. |version| image:: https://img.shields.io/pypi/v/numexpr.png :target: https://pypi.python.org/pypi/numexpr diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.8/RELEASE_NOTES.rst new/numexpr-2.6.9/RELEASE_NOTES.rst --- old/numexpr-2.6.8/RELEASE_NOTES.rst 2018-08-17 05:48:27.000000000 +0200 +++ new/numexpr-2.6.9/RELEASE_NOTES.rst 2018-12-21 00:59:50.000000000 +0100 @@ -2,6 +2,14 @@ Release notes for Numexpr 2.6 series ===================================== +Changes from 2.6.8 to 2.6.9 +--------------------------- + +- Thanks to Mike Toews for more robust handling of the thread-setting + environment variables. +- With Appveyor updating to Python 3.7.1, wheels for Python 3.7 are now + available in addition to those for other OSes. + Changes from 2.6.7 to 2.6.8 --------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.8/numexpr/cpuinfo.py new/numexpr-2.6.9/numexpr/cpuinfo.py --- old/numexpr-2.6.8/numexpr/cpuinfo.py 2018-07-12 19:33:23.000000000 +0200 +++ new/numexpr-2.6.9/numexpr/cpuinfo.py 2018-09-28 17:35:10.000000000 +0200 @@ -256,16 +256,16 @@ return self.is_PentiumIV() and self.has_sse3() def _is_Nocona(self): - return self.is_Intel() \ - and (self.info[0]['cpu family'] == '6' \ - or self.info[0]['cpu family'] == '15' ) \ - and (self.has_sse3() and not self.has_ssse3()) \ - and re.match(r'.*?\blm\b', self.info[0]['flags']) is not None + return (self.is_Intel() and + self.info[0]['cpu family'] in ('6', '15') and + # two s sse3; three s ssse3 not the same thing, this is fine + (self.has_sse3() and not self.has_ssse3()) and + re.match(r'.*?\blm\b', self.info[0]['flags']) is not None) def _is_Core2(self): - return self.is_64bit() and self.is_Intel() and \ - re.match(r'.*?Core\(TM\)2\b', \ - self.info[0]['model name']) is not None + return (self.is_64bit() and self.is_Intel() and + re.match(r'.*?Core\(TM\)2\b', + self.info[0]['model name']) is not None) def _is_Itanium(self): return re.match(r'.*?Itanium\b', @@ -659,7 +659,7 @@ try: #XXX: Bad style to use so long `try:...except:...`. Fix it! - prgx = re.compile(r"family\s+(?P<FML>\d+)\s+model\s+(?P<MDL>\d+)" \ + prgx = re.compile(r"family\s+(?P<FML>\d+)\s+model\s+(?P<MDL>\d+)" "\s+stepping\s+(?P<STP>\d+)", re.IGNORECASE) chnd = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, self.pkey) pnum = 0 @@ -706,20 +706,20 @@ return self.is_AMD() and self.info[0]['Family'] == 4 def _is_AMDK5(self): - return self.is_AMD() and self.info[0]['Family'] == 5 \ - and self.info[0]['Model'] in [0, 1, 2, 3] + return (self.is_AMD() and self.info[0]['Family'] == 5 and + self.info[0]['Model'] in [0, 1, 2, 3]) def _is_AMDK6(self): - return self.is_AMD() and self.info[0]['Family'] == 5 \ - and self.info[0]['Model'] in [6, 7] + return (self.is_AMD() and self.info[0]['Family'] == 5 and + self.info[0]['Model'] in [6, 7]) def _is_AMDK6_2(self): - return self.is_AMD() and self.info[0]['Family'] == 5 \ - and self.info[0]['Model'] == 8 + return (self.is_AMD() and self.info[0]['Family'] == 5 and + self.info[0]['Model'] == 8) def _is_AMDK6_3(self): - return self.is_AMD() and self.info[0]['Family'] == 5 \ - and self.info[0]['Model'] == 9 + return (self.is_AMD() and self.info[0]['Family'] == 5 and + self.info[0]['Model'] == 9) def _is_AMDK7(self): return self.is_AMD() and self.info[0]['Family'] == 6 @@ -752,31 +752,31 @@ return self.is_Intel() and self.info[0]['Family'] == 5 def _is_PentiumMMX(self): - return self.is_Intel() and self.info[0]['Family'] == 5 \ - and self.info[0]['Model'] == 4 + return (self.is_Intel() and self.info[0]['Family'] == 5 and + self.info[0]['Model'] == 4) def _is_PentiumPro(self): - return self.is_Intel() and self.info[0]['Family'] == 6 \ - and self.info[0]['Model'] == 1 + return (self.is_Intel() and self.info[0]['Family'] == 6 and + self.info[0]['Model'] == 1) def _is_PentiumII(self): - return self.is_Intel() and self.info[0]['Family'] == 6 \ - and self.info[0]['Model'] in [3, 5, 6] + return (self.is_Intel() and self.info[0]['Family'] == 6 and + self.info[0]['Model'] in [3, 5, 6]) def _is_PentiumIII(self): - return self.is_Intel() and self.info[0]['Family'] == 6 \ - and self.info[0]['Model'] in [7, 8, 9, 10, 11] + return (self.is_Intel() and self.info[0]['Family'] == 6 and + self.info[0]['Model'] in [7, 8, 9, 10, 11]) def _is_PentiumIV(self): return self.is_Intel() and self.info[0]['Family'] == 15 def _is_PentiumM(self): - return self.is_Intel() and self.info[0]['Family'] == 6 \ - and self.info[0]['Model'] in [9, 13, 14] + return (self.is_Intel() and self.info[0]['Family'] == 6 and + self.info[0]['Model'] in [9, 13, 14]) def _is_Core2(self): - return self.is_Intel() and self.info[0]['Family'] == 6 \ - and self.info[0]['Model'] in [15, 16, 17] + return (self.is_Intel() and self.info[0]['Family'] == 6 and + self.info[0]['Model'] in [15, 16, 17]) # Varia @@ -788,8 +788,9 @@ def _has_mmx(self): if self.is_Intel(): - return (self.info[0]['Family'] == 5 and self.info[0]['Model'] == 4) \ - or (self.info[0]['Family'] in [6, 15]) + return ((self.info[0]['Family'] == 5 and + self.info[0]['Model'] == 4) or + (self.info[0]['Family'] in [6, 15])) elif self.is_AMD(): return self.info[0]['Family'] in [5, 6, 15] else: @@ -797,20 +798,19 @@ def _has_sse(self): if self.is_Intel(): - return (self.info[0]['Family'] == 6 and \ - self.info[0]['Model'] in [7, 8, 9, 10, 11]) \ - or self.info[0]['Family'] == 15 + return ((self.info[0]['Family'] == 6 and + self.info[0]['Model'] in [7, 8, 9, 10, 11]) or + self.info[0]['Family'] == 15) elif self.is_AMD(): - return (self.info[0]['Family'] == 6 and \ - self.info[0]['Model'] in [6, 7, 8, 10]) \ - or self.info[0]['Family'] == 15 + return ((self.info[0]['Family'] == 6 and + self.info[0]['Model'] in [6, 7, 8, 10]) or + self.info[0]['Family'] == 15) else: return False def _has_sse2(self): if self.is_Intel(): - return self.is_Pentium4() or self.is_PentiumM() \ - or self.is_Core2() + return self.is_Pentium4() or self.is_PentiumM() or self.is_Core2() elif self.is_AMD(): return self.is_AMD64() else: @@ -858,4 +858,4 @@ info.append('%s=%s' % (name[1:], r)) else: info.append(name[1:]) - print('CPU information: ' + ' '.join(info)) \ No newline at end of file + print('CPU information: ' + ' '.join(info)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.8/numexpr/utils.py new/numexpr-2.6.9/numexpr/utils.py --- old/numexpr-2.6.8/numexpr/utils.py 2018-07-12 19:33:23.000000000 +0200 +++ new/numexpr-2.6.9/numexpr/utils.py 2018-09-28 17:52:46.000000000 +0200 @@ -108,10 +108,12 @@ else: # OSX: return int(subprocess.check_output(["sysctl", "-n", "hw.ncpu"])) # Windows: - if os.environ.has_key("NUMBER_OF_PROCESSORS"): - ncpus = int(os.environ["NUMBER_OF_PROCESSORS"]); + try: + ncpus = int(os.environ.get("NUMBER_OF_PROCESSORS", "")) if ncpus > 0: return ncpus + except ValueError: + pass return 1 # Default @@ -120,13 +122,13 @@ If this is modified, please update the note in: https://github.com/pydata/numexpr/wiki/Numexpr-Users-Guide """ try: - nthreads = int(os.environ['NUMEXPR_NUM_THREADS']) - except KeyError: - nthreads = int(os.environ.get('OMP_NUM_THREADS', detect_number_of_cores())) - # Check that we don't activate too many threads at the same time. - # 8 seems a sensible value. - if nthreads > 8: - nthreads = 8 + nthreads = int(os.environ.get('NUMEXPR_NUM_THREADS', '')) + except ValueError: + try: + nthreads = int(os.environ.get('OMP_NUM_THREADS', '')) + except ValueError: + nthreads = detect_number_of_cores() + # Check that we don't surpass the MAX_THREADS in interpreter.cpp if nthreads > MAX_THREADS: nthreads = MAX_THREADS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.8/numexpr/version.py new/numexpr-2.6.9/numexpr/version.py --- old/numexpr-2.6.8/numexpr/version.py 2018-08-17 05:30:53.000000000 +0200 +++ new/numexpr-2.6.9/numexpr/version.py 2018-12-21 01:00:09.000000000 +0100 @@ -8,4 +8,4 @@ # rights to use. #################################################################### -version = '2.6.8' +version = '2.6.9' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.8/numexpr.egg-info/PKG-INFO new/numexpr-2.6.9/numexpr.egg-info/PKG-INFO --- old/numexpr-2.6.8/numexpr.egg-info/PKG-INFO 2018-08-19 20:43:01.000000000 +0200 +++ new/numexpr-2.6.9/numexpr.egg-info/PKG-INFO 2018-12-21 19:38:11.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: numexpr -Version: 2.6.8 +Version: 2.6.9 Summary: Fast numerical expression evaluator for NumPy Home-page: https://github.com/pydata/numexpr Author: David M. Cooke, Francesc Alted and others @@ -17,14 +17,17 @@ :Travis CI: |travis| :Appveyor: |appveyor| :PyPi: |version| + :DOI: |doi| :readthedocs: |docs| .. |travis| image:: https://travis-ci.org/pydata/numexpr.png?branch=master :target: https://travis-ci.org/pydata/numexpr - .. |appveyor| image:: https://ci.appveyor.com/api/projects/status/github/robbmcleod/numexpr + .. |appveyor| image:: https://ci.appveyor.com/api/projects/status/we2ff01vqlmlb9ip :target: https://ci.appveyor.com/project/robbmcleod/numexpr .. |docs| image:: https://readthedocs.org/projects/numexpr/badge/?version=latest :target: http://numexpr.readthedocs.io/en/latest + .. |doi| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1492916.svg + :target: https://zenodo.org/record/1492916 .. |version| image:: https://img.shields.io/pypi/v/numexpr.png :target: https://pypi.python.org/pypi/numexpr
