Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-pyerfa for openSUSE:Factory checked in at 2022-12-23 10:21:20 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pyerfa (Old) and /work/SRC/openSUSE:Factory/.python-pyerfa.new.1563 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pyerfa" Fri Dec 23 10:21:20 2022 rev:9 rq:1044287 version:2.0.0.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pyerfa/python-pyerfa.changes 2021-05-20 19:25:19.157878770 +0200 +++ /work/SRC/openSUSE:Factory/.python-pyerfa.new.1563/python-pyerfa.changes 2022-12-23 10:21:22.363436152 +0100 @@ -1,0 +2,8 @@ +Thu Dec 22 14:40:49 UTC 2022 - Ben Greiner <c...@bnavigator.de> + +- Update to 2.0.0.1 + * The underlying universal functions in erfa.ufunc now work with + an out argument also if the required output is a structured + array. [gh-76] + +------------------------------------------------------------------- Old: ---- pyerfa-2.0.0.tar.gz New: ---- pyerfa-2.0.0.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pyerfa.spec ++++++ --- /var/tmp/diff_new_pack.D1esML/_old 2022-12-23 10:21:22.871439055 +0100 +++ /var/tmp/diff_new_pack.D1esML/_new 2022-12-23 10:21:22.875439078 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-pyerfa # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -22,31 +22,31 @@ %else %bcond_without systemlibs %endif -%{?!python_module:%define python_module() python-%{**} python3-%{**}} + %define erfaversion 2.0.0 %define skip_python2 1 -%define skip_python36 1 Name: python-pyerfa -Version: 2.0.0 +Version: 2.0.0.1 Release: 0 Summary: Python bindings for ERFA License: BSD-3-Clause URL: https://github.com/liberfa/pyerfa Source: https://files.pythonhosted.org/packages/source/p/pyerfa/pyerfa-%{version}.tar.gz -BuildRequires: %{python_module Jinja2} BuildRequires: %{python_module devel} -BuildRequires: %{python_module numpy-devel >= 1.16} +BuildRequires: %{python_module numpy-devel >= 1.17} +BuildRequires: %{python_module pip} BuildRequires: %{python_module pytest-doctestplus >= 0.7} BuildRequires: %{python_module pytest} BuildRequires: %{python_module setuptools_scm} BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module wheel} BuildRequires: fdupes BuildRequires: pkgconfig BuildRequires: python-rpm-macros %if %{with systemlibs} BuildRequires: pkgconfig(erfa) >= %{erfaversion} %endif -Requires: python-numpy >= 1.16 +Requires: python-numpy >= 1.17 %python_subpackages %description @@ -64,18 +64,20 @@ %if %{with systemlibs} rm -rf liberfa/ %endif +# numpy 1.24 has some new xpass ufunc tests -- https://github.com/liberfa/pyerfa/issues/99 +sed -i '/xfail_strict = true/d' setup.cfg %build %if %{with systemlibs} export PYERFA_USE_SYSTEM_LIBERFA=1 %endif -%python_build +%pyproject_wheel %install %if %{with systemlibs} export PYERFA_USE_SYSTEM_LIBERFA=1 %endif -%python_install +%pyproject_install %python_expand %fdupes %{buildroot}%{$python_sitearch} %check @@ -86,8 +88,12 @@ %pytest_arch --pyargs erfa %{?skip_embedded_test} %files %{python_files} -%license LICENSE.rst licenses/ERFA.rst +%doc README.rst +%license LICENSE.rst +%if !%{with systemlibs} +%license licenses/ERFA.rst +%endif %{python_sitearch}/erfa -%{python_sitearch}/pyerfa-%{version}-py*.egg-info +%{python_sitearch}/pyerfa-%{version}.dist-info %changelog ++++++ pyerfa-2.0.0.tar.gz -> pyerfa-2.0.0.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyerfa-2.0.0/CHANGES.rst new/pyerfa-2.0.0.1/CHANGES.rst --- old/pyerfa-2.0.0/CHANGES.rst 2021-05-17 17:26:51.000000000 +0200 +++ new/pyerfa-2.0.0.1/CHANGES.rst 2021-11-02 20:17:42.000000000 +0100 @@ -1,4 +1,10 @@ -2.0.0 (17/05/2021) +2.0.0.1 (2021-11-02) +==================== + +- The underlying universal functions in ``erfa.ufunc`` now work with an ``out`` + argument also if the required output is a structured array. [gh-76] + +2.0.0 (2021-05-17) ================== - Bundled liberfa version update to v2.0.0. This includes new functionality, @@ -12,14 +18,14 @@ specific output file names has been removed, as it was not used. (Note: these changes have no effect on use of PyERFA.) [gh-71] -1.7.3 (25/04/2021) +1.7.3 (2021-04-25) ================== - Bundled liberfa version update to v1.7.3. - Fixed a bug that caused the output of ``rx``, ``ry``, and ``rz`` to be boolean rather than float for some compilers/OS. [gh-72] -1.7.2 (25/01/2021) +1.7.2 (2021-01-25) ================== - Bundled liberfa version update to v1.7.2. @@ -27,13 +33,13 @@ (backport https://github.com/astropy/astropy/pull/11224). -1.7.1.1 (18/11/2020) +1.7.1.1 (2020-11-18) ==================== - Fix incorrect ``__version__`` value [gh-60]. -1.7.1 (16/11/2020) +1.7.1 (2020-11-16) ================== - Bundled liberfa version update to v1.7.1. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyerfa-2.0.0/PKG-INFO new/pyerfa-2.0.0.1/PKG-INFO --- old/pyerfa-2.0.0/PKG-INFO 2021-05-17 17:27:20.522589200 +0200 +++ new/pyerfa-2.0.0.1/PKG-INFO 2021-11-02 20:18:20.977307600 +0100 @@ -1,134 +1,10 @@ Metadata-Version: 2.1 Name: pyerfa -Version: 2.0.0 +Version: 2.0.0.1 Summary: Python bindings for ERFA Home-page: https://github.com/liberfa/pyerfa Author: The PyERFA Developers License: BSD 3-Clause License -Description: ====== - PyERFA - ====== - - |PyPI Status| |Zenodo| |Travis Status| |Documentation Status| - - PyERFA is the Python_ wrapper for the ERFA_ library (Essential Routines for - Fundamental Astronomy), a C library containing key algorithms for astronomy, - which is based on the SOFA library published by the International Astronomical - Union (IAU). All C routines are wrapped as Numpy_ `universal functions - <https://numpy.org/devdocs/reference/ufuncs.html>`_, so that they can be - called with scalar or array inputs. - - The project is a split of ``astropy._erfa`` module, developed in the - context of Astropy_ project, into a standalone package. It contains - the ERFA_ C source code as a git submodule. The wrapping is done - with help of the Jinja2_ template engine. - - If you use this package in your research, please cita it via DOI - `10.5281/zenodo.3940699 <https://doi.org/10.5281/zenodo.3940699>`_. - - .. Installation - - Installation instructions - ------------------------- - - The package can be installed from the package directory using a simple:: - - $ pip install . - - and similarly a wheel_ can be created with:: - - $ pip wheel . - - .. note:: If you already have the C library ``liberfa`` on your - system, you can use that by setting environment variable - ``PYERFA_USE_SYSTEM_LIBERFA=1``. - - - .. _wheel: https://github.com/pypa/wheel - - - Testing - ------- - - For testing, one can install the packages together with its testing - dependencies and then test it with:: - - $ pip install .[test] - $ pytest - - Alternatively, one can use ``tox``, which will set up a separate testing - environment for you, with:: - - $ tox -e test - - - Usage - ----- - - The package can be imported as ``erfa`` which has all ERFA_ ufuncs wrapped with - python code that tallies errors and warnings. Also exposed are the constants - defined by ERFA_ in `erfam.h - <https://github.com/liberfa/erfa/blob/master/src/erfam.h>`_, as well - as `numpy.dtype` corresponding to structures used by ERFA_. Examples:: - - >>> import erfa - >>> erfa.jd2cal(2460000., [0, 1, 2, 3]) - (array([2023, 2023, 2023, 2023], dtype=int32), - array([2, 2, 2, 2], dtype=int32), - array([24, 25, 26, 27], dtype=int32), - array([0.5, 0.5, 0.5, 0.5])) - >>> erfa.plan94(2460000., [0, 1, 2, 3], 1) - array([([ 0.09083713, -0.39041392, -0.21797389], [0.02192341, 0.00705449, 0.00149618]), - ([ 0.11260694, -0.38275202, -0.21613731], [0.02160375, 0.00826891, 0.00217806]), - ([ 0.13401992, -0.37387798, -0.21361622], [0.0212094 , 0.00947838, 0.00286503]), - ([ 0.15500031, -0.36379788, -0.21040601], [0.02073822, 0.01068061, 0.0035561 ])], - dtype={'names':['p','v'], 'formats':[('<f8', (3,)),('<f8', (3,))], 'offsets':[0,24], 'itemsize':48, 'aligned':True}) - >>> erfa.dt_pv - dtype([('p', '<f8', (3,)), ('v', '<f8', (3,))], align=True) - >>> erfa.dt_eraLDBODY - dtype([('bm', '<f8'), ('dl', '<f8'), ('pv', [('p', '<f8', (3,)), ('v', '<f8', (3,))])], align=True) - >>> erfa.DAYSEC - 86400.0 - - It is also possible to use the ufuncs directly, though then one has to - deal with the warning and error states explicitly. For instance, compare:: - - >>> erfa.jd2cal(-600000., [0, 1, 2, 3]) - Traceback (most recent call last): - ... - ErfaError: ERFA function "jd2cal" yielded 4 of "unacceptable date (Note 1)" - >>> erfa.ufunc.jd2cal(-600000., [0, 1, 2, 3]) - (array([-1, -1, -1, -1], dtype=int32), - ..., - array([-1, -1, -1, -1], dtype=int32)) - - - License - ------- - - PyERFA is licensed under a 3-clause BSD style license - see the - `LICENSE.rst <LICENSE.rst>`_ file. - - - .. References - .. _Python: https://www.python.org/ - .. _ERFA: https://github.com/liberfa/erfa - .. _Numpy: https://numpy.org/ - .. _Astropy: https://www.astropy.org - .. _Jinja2: https://palletsprojects.com/p/jinja/ - .. |PyPI Status| image:: https://img.shields.io/pypi/v/pyerfa.svg - :target: https://pypi.python.org/pypi/pyerfa - :alt: PyPI Status - .. |Zenodo| image:: https://zenodo.org/badge/261332899.svg - :target: https://zenodo.org/badge/latestdoi/261332899 - :alt: DOI 10.5281/zenodo.3940699 - .. |Travis Status| image:: https://img.shields.io/travis/liberfa/pyerfa/master?logo=travis%20ci&logoColor=white&label=Travis%20CI - :target: https://travis-ci.org/liberfa/pyerfa - :alt: Travis CI Status - .. |Documentation Status| image:: https://img.shields.io/readthedocs/pyerfa/latest.svg?logo=read%20the%20docs&logoColor=white&label=Docs&version=stable - :target: http://pyerfa.readthedocs.org/en/stable/?badge=stable - :alt: Documentation Status - Keywords: astronomy,astrophysics,cosmology,space,science,coordinate Platform: UNKNOWN Classifier: Intended Audience :: Science/Research @@ -142,3 +18,130 @@ Requires-Python: >=3.7 Provides-Extra: test Provides-Extra: docs +License-File: LICENSE.rst + +====== +PyERFA +====== + +|PyPI Status| |Zenodo| |Travis Status| |Documentation Status| + +PyERFA is the Python_ wrapper for the ERFA_ library (Essential Routines for +Fundamental Astronomy), a C library containing key algorithms for astronomy, +which is based on the SOFA library published by the International Astronomical +Union (IAU). All C routines are wrapped as Numpy_ `universal functions +<https://numpy.org/devdocs/reference/ufuncs.html>`_, so that they can be +called with scalar or array inputs. + +The project is a split of ``astropy._erfa`` module, developed in the +context of Astropy_ project, into a standalone package. It contains +the ERFA_ C source code as a git submodule. The wrapping is done +with help of the Jinja2_ template engine. + +If you use this package in your research, please cita it via DOI +`10.5281/zenodo.3940699 <https://doi.org/10.5281/zenodo.3940699>`_. + +.. Installation + +Installation instructions +------------------------- + +The package can be installed from the package directory using a simple:: + + $ pip install . + +and similarly a wheel_ can be created with:: + + $ pip wheel . + +.. note:: If you already have the C library ``liberfa`` on your + system, you can use that by setting environment variable + ``PYERFA_USE_SYSTEM_LIBERFA=1``. + + +.. _wheel: https://github.com/pypa/wheel + + +Testing +------- + +For testing, one can install the packages together with its testing +dependencies and then test it with:: + + $ pip install .[test] + $ pytest + +Alternatively, one can use ``tox``, which will set up a separate testing +environment for you, with:: + + $ tox -e test + + +Usage +----- + +The package can be imported as ``erfa`` which has all ERFA_ ufuncs wrapped with +python code that tallies errors and warnings. Also exposed are the constants +defined by ERFA_ in `erfam.h +<https://github.com/liberfa/erfa/blob/master/src/erfam.h>`_, as well +as `numpy.dtype` corresponding to structures used by ERFA_. Examples:: + + >>> import erfa + >>> erfa.jd2cal(2460000., [0, 1, 2, 3]) + (array([2023, 2023, 2023, 2023], dtype=int32), + array([2, 2, 2, 2], dtype=int32), + array([24, 25, 26, 27], dtype=int32), + array([0.5, 0.5, 0.5, 0.5])) + >>> erfa.plan94(2460000., [0, 1, 2, 3], 1) + array([([ 0.09083713, -0.39041392, -0.21797389], [0.02192341, 0.00705449, 0.00149618]), + ([ 0.11260694, -0.38275202, -0.21613731], [0.02160375, 0.00826891, 0.00217806]), + ([ 0.13401992, -0.37387798, -0.21361622], [0.0212094 , 0.00947838, 0.00286503]), + ([ 0.15500031, -0.36379788, -0.21040601], [0.02073822, 0.01068061, 0.0035561 ])], + dtype={'names':['p','v'], 'formats':[('<f8', (3,)),('<f8', (3,))], 'offsets':[0,24], 'itemsize':48, 'aligned':True}) + >>> erfa.dt_pv + dtype([('p', '<f8', (3,)), ('v', '<f8', (3,))], align=True) + >>> erfa.dt_eraLDBODY + dtype([('bm', '<f8'), ('dl', '<f8'), ('pv', [('p', '<f8', (3,)), ('v', '<f8', (3,))])], align=True) + >>> erfa.DAYSEC + 86400.0 + +It is also possible to use the ufuncs directly, though then one has to +deal with the warning and error states explicitly. For instance, compare:: + + >>> erfa.jd2cal(-600000., [0, 1, 2, 3]) + Traceback (most recent call last): + ... + ErfaError: ERFA function "jd2cal" yielded 4 of "unacceptable date (Note 1)" + >>> erfa.ufunc.jd2cal(-600000., [0, 1, 2, 3]) + (array([-1, -1, -1, -1], dtype=int32), + ..., + array([-1, -1, -1, -1], dtype=int32)) + + +License +------- + +PyERFA is licensed under a 3-clause BSD style license - see the +`LICENSE.rst <LICENSE.rst>`_ file. + + +.. References +.. _Python: https://www.python.org/ +.. _ERFA: https://github.com/liberfa/erfa +.. _Numpy: https://numpy.org/ +.. _Astropy: https://www.astropy.org +.. _Jinja2: https://palletsprojects.com/p/jinja/ +.. |PyPI Status| image:: https://img.shields.io/pypi/v/pyerfa.svg + :target: https://pypi.python.org/pypi/pyerfa + :alt: PyPI Status +.. |Zenodo| image:: https://zenodo.org/badge/261332899.svg + :target: https://zenodo.org/badge/latestdoi/261332899 + :alt: DOI 10.5281/zenodo.3940699 +.. |Travis Status| image:: https://img.shields.io/travis/liberfa/pyerfa/master?logo=travis%20ci&logoColor=white&label=Travis%20CI + :target: https://travis-ci.org/liberfa/pyerfa + :alt: Travis CI Status +.. |Documentation Status| image:: https://img.shields.io/readthedocs/pyerfa/latest.svg?logo=read%20the%20docs&logoColor=white&label=Docs&version=stable + :target: http://pyerfa.readthedocs.org/en/stable/?badge=stable + :alt: Documentation Status + + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyerfa-2.0.0/RELEASING.rst new/pyerfa-2.0.0.1/RELEASING.rst --- old/pyerfa-2.0.0/RELEASING.rst 2021-05-17 17:26:51.000000000 +0200 +++ new/pyerfa-2.0.0.1/RELEASING.rst 2021-11-02 20:17:42.000000000 +0100 @@ -62,3 +62,9 @@ See the `OpenAstronomy Azure Pipelines Templates Documentation <https://openastronomy-azure-pipelines.readthedocs.io/en/latest/publish.html>`_ for more details about the Azure Pipelines set-up. + +Finally, for completeness, update the ``Releases`` section on the main +github page. Click on the new tag you just made, then ``edit tag``, +then insert ``vx.y.z`` for the version, and in the description write +``PyERFA v`` and then paste the relevant section of ``CHANGES.rst`` to +it. Preview to ensure this works, and then publish the release. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyerfa-2.0.0/azure-pipelines.yml new/pyerfa-2.0.0.1/azure-pipelines.yml --- old/pyerfa-2.0.0/azure-pipelines.yml 2021-05-17 17:26:51.000000000 +0200 +++ new/pyerfa-2.0.0.1/azure-pipelines.yml 2021-11-02 20:17:42.000000000 +0100 @@ -1,5 +1,6 @@ variables: - CIBW_BUILD: cp36-* cp37-* cp38-* cp39-* + CIBW_BUILD: cp37-* cp38-* cp39-* cp310-* + CIBW_ARCHS_LINUX: "auto, aarch64" resources: repositories: @@ -31,6 +32,15 @@ test_command: pytest --pyargs erfa targets: - sdist - - wheels_linux + - wheels_cp*-manylinux_i686 + - wheels_cp*-manylinux_x86_64 + - wheels_cp37-musllinux_x86_64 + - wheels_cp38-musllinux_x86_64 + - wheels_cp39-musllinux_x86_64 + - wheels_cp310-musllinux_x86_64 + - wheels_cp37-manylinux_aarch64 + - wheels_cp38-manylinux_aarch64 + - wheels_cp39-manylinux_aarch64 + - wheels_cp310-manylinux_aarch64 - wheels_macos - wheels_windows diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyerfa-2.0.0/erfa/_version.py new/pyerfa-2.0.0.1/erfa/_version.py --- old/pyerfa-2.0.0/erfa/_version.py 2021-05-17 17:27:20.000000000 +0200 +++ new/pyerfa-2.0.0.1/erfa/_version.py 2021-11-02 20:18:20.000000000 +0100 @@ -1,5 +1,5 @@ # coding: utf-8 # file generated by setuptools_scm # don't change, don't track in version control -version = '2.0.0' -version_tuple = (2, 0, 0) +version = '2.0.0.1' +version_tuple = (2, 0, 0, 1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyerfa-2.0.0/erfa/tests/test_erfa.py new/pyerfa-2.0.0.1/erfa/tests/test_erfa.py --- old/pyerfa-2.0.0/erfa/tests/test_erfa.py 2021-05-17 17:26:51.000000000 +0200 +++ new/pyerfa-2.0.0.1/erfa/tests/test_erfa.py 2021-11-02 20:17:42.000000000 +0100 @@ -286,6 +286,24 @@ np.testing.assert_allclose(astrom3['em'], 1.010428384373318379) +def test_pv_out(): + """Test that ufunc can also deal with 'out' argument.""" + pv = erfa.ufunc.s2pv(np.pi/2.0, np.pi/4.0, 2.0, np.sqrt(2.0)/2.0, 0.0, 0.0) + pv2 = np.empty_like(pv) + out = erfa.ufunc.s2pv(np.pi/2.0, np.pi/4.0, 2.0, np.sqrt(2.0)/2.0, 0.0, 0.0, + out=pv2) + assert out is pv2 + assert np.all(pv2 == pv) + + +def test_zpv_out(): + """Test that no-input routines work with 'out' argument.""" + pv = np.zeros(10, erfa.dt_pv) + out = erfa.ufunc.zpv(out=pv) + assert out is pv + np.testing.assert_array_equal(pv, np.zeros(10, erfa.dt_pv)) + + def test_struct_ldbody(): """ Check dt_eraLDBODY is correctly defined (regression test; gh-74) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyerfa-2.0.0/erfa/ufunc.c new/pyerfa-2.0.0.1/erfa/ufunc.c --- old/pyerfa-2.0.0/erfa/ufunc.c 2021-05-17 17:27:06.000000000 +0200 +++ new/pyerfa-2.0.0.1/erfa/ufunc.c 2021-11-02 20:18:05.000000000 +0100 @@ -9537,21 +9537,32 @@ } /* * All inputs were ok; now check casting back to the outputs. - * MHvK: Since no casting from structured to non-structured is - * possible, no changes needed here. + * For void, only allow casting to the same void. */ for (i = nin; i < nop; ++i) { if (op[i] != NULL) { - PyArray_Descr *tmp = PyArray_DescrFromType(types[i]); - if (tmp == NULL) { - return -1; + if (types[i] == NPY_VOID && dtypes != NULL) { + PyArray_Descr *op_descr = PyArray_DESCR(op[i]); + /* + * MHvK: for VOID, we only allow VOID->same VOID. + */ + if (op_descr->type_num != NPY_VOID + || !PyArray_EquivTypes(op_descr, dtypes[i])) { + return 0; + } } - if (!PyArray_CanCastTypeTo(tmp, PyArray_DESCR(op[i]), + else { + PyArray_Descr *tmp = PyArray_DescrFromType(types[i]); + if (tmp == NULL) { + return -1; + } + if (!PyArray_CanCastTypeTo(tmp, PyArray_DESCR(op[i]), casting)) { + Py_DECREF(tmp); + return 0; + } Py_DECREF(tmp); - return 0; } - Py_DECREF(tmp); } } return 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyerfa-2.0.0/erfa/ufunc.c.templ new/pyerfa-2.0.0.1/erfa/ufunc.c.templ --- old/pyerfa-2.0.0/erfa/ufunc.c.templ 2021-05-17 17:26:51.000000000 +0200 +++ new/pyerfa-2.0.0.1/erfa/ufunc.c.templ 2021-11-02 20:17:42.000000000 +0100 @@ -402,21 +402,32 @@ } /* * All inputs were ok; now check casting back to the outputs. - * MHvK: Since no casting from structured to non-structured is - * possible, no changes needed here. + * For void, only allow casting to the same void. */ for (i = nin; i < nop; ++i) { if (op[i] != NULL) { - PyArray_Descr *tmp = PyArray_DescrFromType(types[i]); - if (tmp == NULL) { - return -1; + if (types[i] == NPY_VOID && dtypes != NULL) { + PyArray_Descr *op_descr = PyArray_DESCR(op[i]); + /* + * MHvK: for VOID, we only allow VOID->same VOID. + */ + if (op_descr->type_num != NPY_VOID + || !PyArray_EquivTypes(op_descr, dtypes[i])) { + return 0; + } } - if (!PyArray_CanCastTypeTo(tmp, PyArray_DESCR(op[i]), + else { + PyArray_Descr *tmp = PyArray_DescrFromType(types[i]); + if (tmp == NULL) { + return -1; + } + if (!PyArray_CanCastTypeTo(tmp, PyArray_DESCR(op[i]), casting)) { + Py_DECREF(tmp); + return 0; + } Py_DECREF(tmp); - return 0; } - Py_DECREF(tmp); } } return 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyerfa-2.0.0/pyerfa.egg-info/PKG-INFO new/pyerfa-2.0.0.1/pyerfa.egg-info/PKG-INFO --- old/pyerfa-2.0.0/pyerfa.egg-info/PKG-INFO 2021-05-17 17:27:20.000000000 +0200 +++ new/pyerfa-2.0.0.1/pyerfa.egg-info/PKG-INFO 2021-11-02 20:18:20.000000000 +0100 @@ -1,134 +1,10 @@ Metadata-Version: 2.1 Name: pyerfa -Version: 2.0.0 +Version: 2.0.0.1 Summary: Python bindings for ERFA Home-page: https://github.com/liberfa/pyerfa Author: The PyERFA Developers License: BSD 3-Clause License -Description: ====== - PyERFA - ====== - - |PyPI Status| |Zenodo| |Travis Status| |Documentation Status| - - PyERFA is the Python_ wrapper for the ERFA_ library (Essential Routines for - Fundamental Astronomy), a C library containing key algorithms for astronomy, - which is based on the SOFA library published by the International Astronomical - Union (IAU). All C routines are wrapped as Numpy_ `universal functions - <https://numpy.org/devdocs/reference/ufuncs.html>`_, so that they can be - called with scalar or array inputs. - - The project is a split of ``astropy._erfa`` module, developed in the - context of Astropy_ project, into a standalone package. It contains - the ERFA_ C source code as a git submodule. The wrapping is done - with help of the Jinja2_ template engine. - - If you use this package in your research, please cita it via DOI - `10.5281/zenodo.3940699 <https://doi.org/10.5281/zenodo.3940699>`_. - - .. Installation - - Installation instructions - ------------------------- - - The package can be installed from the package directory using a simple:: - - $ pip install . - - and similarly a wheel_ can be created with:: - - $ pip wheel . - - .. note:: If you already have the C library ``liberfa`` on your - system, you can use that by setting environment variable - ``PYERFA_USE_SYSTEM_LIBERFA=1``. - - - .. _wheel: https://github.com/pypa/wheel - - - Testing - ------- - - For testing, one can install the packages together with its testing - dependencies and then test it with:: - - $ pip install .[test] - $ pytest - - Alternatively, one can use ``tox``, which will set up a separate testing - environment for you, with:: - - $ tox -e test - - - Usage - ----- - - The package can be imported as ``erfa`` which has all ERFA_ ufuncs wrapped with - python code that tallies errors and warnings. Also exposed are the constants - defined by ERFA_ in `erfam.h - <https://github.com/liberfa/erfa/blob/master/src/erfam.h>`_, as well - as `numpy.dtype` corresponding to structures used by ERFA_. Examples:: - - >>> import erfa - >>> erfa.jd2cal(2460000., [0, 1, 2, 3]) - (array([2023, 2023, 2023, 2023], dtype=int32), - array([2, 2, 2, 2], dtype=int32), - array([24, 25, 26, 27], dtype=int32), - array([0.5, 0.5, 0.5, 0.5])) - >>> erfa.plan94(2460000., [0, 1, 2, 3], 1) - array([([ 0.09083713, -0.39041392, -0.21797389], [0.02192341, 0.00705449, 0.00149618]), - ([ 0.11260694, -0.38275202, -0.21613731], [0.02160375, 0.00826891, 0.00217806]), - ([ 0.13401992, -0.37387798, -0.21361622], [0.0212094 , 0.00947838, 0.00286503]), - ([ 0.15500031, -0.36379788, -0.21040601], [0.02073822, 0.01068061, 0.0035561 ])], - dtype={'names':['p','v'], 'formats':[('<f8', (3,)),('<f8', (3,))], 'offsets':[0,24], 'itemsize':48, 'aligned':True}) - >>> erfa.dt_pv - dtype([('p', '<f8', (3,)), ('v', '<f8', (3,))], align=True) - >>> erfa.dt_eraLDBODY - dtype([('bm', '<f8'), ('dl', '<f8'), ('pv', [('p', '<f8', (3,)), ('v', '<f8', (3,))])], align=True) - >>> erfa.DAYSEC - 86400.0 - - It is also possible to use the ufuncs directly, though then one has to - deal with the warning and error states explicitly. For instance, compare:: - - >>> erfa.jd2cal(-600000., [0, 1, 2, 3]) - Traceback (most recent call last): - ... - ErfaError: ERFA function "jd2cal" yielded 4 of "unacceptable date (Note 1)" - >>> erfa.ufunc.jd2cal(-600000., [0, 1, 2, 3]) - (array([-1, -1, -1, -1], dtype=int32), - ..., - array([-1, -1, -1, -1], dtype=int32)) - - - License - ------- - - PyERFA is licensed under a 3-clause BSD style license - see the - `LICENSE.rst <LICENSE.rst>`_ file. - - - .. References - .. _Python: https://www.python.org/ - .. _ERFA: https://github.com/liberfa/erfa - .. _Numpy: https://numpy.org/ - .. _Astropy: https://www.astropy.org - .. _Jinja2: https://palletsprojects.com/p/jinja/ - .. |PyPI Status| image:: https://img.shields.io/pypi/v/pyerfa.svg - :target: https://pypi.python.org/pypi/pyerfa - :alt: PyPI Status - .. |Zenodo| image:: https://zenodo.org/badge/261332899.svg - :target: https://zenodo.org/badge/latestdoi/261332899 - :alt: DOI 10.5281/zenodo.3940699 - .. |Travis Status| image:: https://img.shields.io/travis/liberfa/pyerfa/master?logo=travis%20ci&logoColor=white&label=Travis%20CI - :target: https://travis-ci.org/liberfa/pyerfa - :alt: Travis CI Status - .. |Documentation Status| image:: https://img.shields.io/readthedocs/pyerfa/latest.svg?logo=read%20the%20docs&logoColor=white&label=Docs&version=stable - :target: http://pyerfa.readthedocs.org/en/stable/?badge=stable - :alt: Documentation Status - Keywords: astronomy,astrophysics,cosmology,space,science,coordinate Platform: UNKNOWN Classifier: Intended Audience :: Science/Research @@ -142,3 +18,130 @@ Requires-Python: >=3.7 Provides-Extra: test Provides-Extra: docs +License-File: LICENSE.rst + +====== +PyERFA +====== + +|PyPI Status| |Zenodo| |Travis Status| |Documentation Status| + +PyERFA is the Python_ wrapper for the ERFA_ library (Essential Routines for +Fundamental Astronomy), a C library containing key algorithms for astronomy, +which is based on the SOFA library published by the International Astronomical +Union (IAU). All C routines are wrapped as Numpy_ `universal functions +<https://numpy.org/devdocs/reference/ufuncs.html>`_, so that they can be +called with scalar or array inputs. + +The project is a split of ``astropy._erfa`` module, developed in the +context of Astropy_ project, into a standalone package. It contains +the ERFA_ C source code as a git submodule. The wrapping is done +with help of the Jinja2_ template engine. + +If you use this package in your research, please cita it via DOI +`10.5281/zenodo.3940699 <https://doi.org/10.5281/zenodo.3940699>`_. + +.. Installation + +Installation instructions +------------------------- + +The package can be installed from the package directory using a simple:: + + $ pip install . + +and similarly a wheel_ can be created with:: + + $ pip wheel . + +.. note:: If you already have the C library ``liberfa`` on your + system, you can use that by setting environment variable + ``PYERFA_USE_SYSTEM_LIBERFA=1``. + + +.. _wheel: https://github.com/pypa/wheel + + +Testing +------- + +For testing, one can install the packages together with its testing +dependencies and then test it with:: + + $ pip install .[test] + $ pytest + +Alternatively, one can use ``tox``, which will set up a separate testing +environment for you, with:: + + $ tox -e test + + +Usage +----- + +The package can be imported as ``erfa`` which has all ERFA_ ufuncs wrapped with +python code that tallies errors and warnings. Also exposed are the constants +defined by ERFA_ in `erfam.h +<https://github.com/liberfa/erfa/blob/master/src/erfam.h>`_, as well +as `numpy.dtype` corresponding to structures used by ERFA_. Examples:: + + >>> import erfa + >>> erfa.jd2cal(2460000., [0, 1, 2, 3]) + (array([2023, 2023, 2023, 2023], dtype=int32), + array([2, 2, 2, 2], dtype=int32), + array([24, 25, 26, 27], dtype=int32), + array([0.5, 0.5, 0.5, 0.5])) + >>> erfa.plan94(2460000., [0, 1, 2, 3], 1) + array([([ 0.09083713, -0.39041392, -0.21797389], [0.02192341, 0.00705449, 0.00149618]), + ([ 0.11260694, -0.38275202, -0.21613731], [0.02160375, 0.00826891, 0.00217806]), + ([ 0.13401992, -0.37387798, -0.21361622], [0.0212094 , 0.00947838, 0.00286503]), + ([ 0.15500031, -0.36379788, -0.21040601], [0.02073822, 0.01068061, 0.0035561 ])], + dtype={'names':['p','v'], 'formats':[('<f8', (3,)),('<f8', (3,))], 'offsets':[0,24], 'itemsize':48, 'aligned':True}) + >>> erfa.dt_pv + dtype([('p', '<f8', (3,)), ('v', '<f8', (3,))], align=True) + >>> erfa.dt_eraLDBODY + dtype([('bm', '<f8'), ('dl', '<f8'), ('pv', [('p', '<f8', (3,)), ('v', '<f8', (3,))])], align=True) + >>> erfa.DAYSEC + 86400.0 + +It is also possible to use the ufuncs directly, though then one has to +deal with the warning and error states explicitly. For instance, compare:: + + >>> erfa.jd2cal(-600000., [0, 1, 2, 3]) + Traceback (most recent call last): + ... + ErfaError: ERFA function "jd2cal" yielded 4 of "unacceptable date (Note 1)" + >>> erfa.ufunc.jd2cal(-600000., [0, 1, 2, 3]) + (array([-1, -1, -1, -1], dtype=int32), + ..., + array([-1, -1, -1, -1], dtype=int32)) + + +License +------- + +PyERFA is licensed under a 3-clause BSD style license - see the +`LICENSE.rst <LICENSE.rst>`_ file. + + +.. References +.. _Python: https://www.python.org/ +.. _ERFA: https://github.com/liberfa/erfa +.. _Numpy: https://numpy.org/ +.. _Astropy: https://www.astropy.org +.. _Jinja2: https://palletsprojects.com/p/jinja/ +.. |PyPI Status| image:: https://img.shields.io/pypi/v/pyerfa.svg + :target: https://pypi.python.org/pypi/pyerfa + :alt: PyPI Status +.. |Zenodo| image:: https://zenodo.org/badge/261332899.svg + :target: https://zenodo.org/badge/latestdoi/261332899 + :alt: DOI 10.5281/zenodo.3940699 +.. |Travis Status| image:: https://img.shields.io/travis/liberfa/pyerfa/master?logo=travis%20ci&logoColor=white&label=Travis%20CI + :target: https://travis-ci.org/liberfa/pyerfa + :alt: Travis CI Status +.. |Documentation Status| image:: https://img.shields.io/readthedocs/pyerfa/latest.svg?logo=read%20the%20docs&logoColor=white&label=Docs&version=stable + :target: http://pyerfa.readthedocs.org/en/stable/?badge=stable + :alt: Documentation Status + +