Your message dated Sun, 07 Apr 2024 02:51:18 +0000
with message-id <e1rtico-005tgo...@fasolo.debian.org>
and subject line Bug#1067290: fixed in pymeeus 0.5.12+dfsg1-1
has caused the Debian Bug report #1067290,
regarding pymeeus: FTBFS: FAILED 
tests/test_interpolation.py::test_interpolation_call - RuntimeError: I...
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
1067290: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1067290
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Source: pymeeus
Version: 0.5.11+dfsg1-1
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: lu...@debian.org
Usertags: ftbfs-20240319 ftbfs-trixie

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
>  debian/rules binary
> dh binary --with python3 --buildsystem=pybuild
>    dh_update_autotools_config -O--buildsystem=pybuild
>    dh_autoreconf -O--buildsystem=pybuild
>    dh_auto_configure -O--buildsystem=pybuild
> I: pybuild base:305: python3.12 setup.py config 
> running config
> I: pybuild base:305: python3.11 setup.py config 
> running config
>    dh_auto_build -O--buildsystem=pybuild
> I: pybuild base:305: /usr/bin/python3.12 setup.py build 
> running build
> running build_py
> file base.py (for module base) not found
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/Coordinates.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/Minor.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/Epoch.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/CurveFitting.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/JupiterMoons.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/Venus.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/Saturn.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/Pluto.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/Moon.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/Sun.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/base.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/Mars.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/Neptune.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/Earth.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/Mercury.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/Uranus.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/Jupiter.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/Angle.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> copying pymeeus/Interpolation.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus
> file base.py (for module base) not found
> I: pybuild base:305: /usr/bin/python3 setup.py build 
> running build
> running build_py
> file base.py (for module base) not found
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/Coordinates.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/Minor.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/Epoch.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/CurveFitting.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/JupiterMoons.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/Venus.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/Saturn.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/Pluto.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/Moon.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/Sun.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/base.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/Mars.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/Neptune.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/Earth.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/Mercury.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/Uranus.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/Jupiter.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/Angle.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> copying pymeeus/Interpolation.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build/pymeeus
> file base.py (for module base) not found
>    dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:305: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build; python3.12 -m pytest 
> tests
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.12.2, pytest-8.1.1, pluggy-1.4.0
> rootdir: /<<PKGBUILDDIR>>
> plugins: cov-4.1.0
> collected 251 items
> 
> tests/test_angle.py ........................................             [ 
> 15%]
> tests/test_coordinates.py .......................................        [ 
> 31%]
> tests/test_curvefitting.py .FFFF                                         [ 
> 33%]
> tests/test_earth.py ................                                     [ 
> 39%]
> tests/test_epoch.py .................................                    [ 
> 52%]
> tests/test_interpolation.py .FFF.                                        [ 
> 54%]
> tests/test_jupiter.py ..........                                         [ 
> 58%]
> tests/test_jupiterMoons.py .........                                     [ 
> 62%]
> tests/test_mars.py ..........                                            [ 
> 66%]
> tests/test_mercury.py ............                                       [ 
> 71%]
> tests/test_minor.py ..                                                   [ 
> 72%]
> tests/test_moon.py ..............                                        [ 
> 77%]
> tests/test_neptune.py ......                                             [ 
> 80%]
> tests/test_pluto.py ..                                                   [ 
> 80%]
> tests/test_saturn.py ..............                                      [ 
> 86%]
> tests/test_sun.py ............                                           [ 
> 91%]
> tests/test_uranus.py ........                                            [ 
> 94%]
> tests/test_venus.py ..............                                       
> [100%]
> 
> =================================== FAILURES 
> ===================================
> _____________________ test_curvefitting_correlation_coeff 
> ______________________
> 
>     def test_curvefitting_correlation_coeff():
>         """Tests the correlation_coeff() method of CurveFitting class"""
>     
> >       r = cf1.correlation_coeff()
> 
> tests/test_curvefitting.py:95: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = CurveFitting([], [])
> 
>     def correlation_coeff(self):
>         """This method returns the coefficient of correlation, as a float.
>     
>         :returns: Coefficient of correlation.
>         :rtype: float
>     
>         >>> cf = CurveFitting([73.0, 38.0, 35.0, 42.0, 78.0, 68.0, 74.0, 42.0,
>         ...                    52.0, 54.0, 39.0, 61.0, 42.0, 49.0, 50.0, 62.0,
>         ...                    44.0, 39.0, 43.0, 54.0, 44.0, 37.0],
>         ...                   [90.4, 125.3, 161.8, 143.4, 52.5, 50.8, 71.5,
>         ...                    152.8, 131.3, 98.5, 144.8, 78.1, 89.5, 63.9,
>         ...                    112.1, 82.0, 119.8, 161.2, 208.4, 111.6, 167.1,
>         ...                    162.1])
>         >>> r = cf.correlation_coeff()
>         >>> print(round(r, 3))
>         -0.767
>         """
>     
> >       n = self._N
> E       AttributeError: 'CurveFitting' object has no attribute '_N'
> 
> pymeeus/CurveFitting.py:324: AttributeError
> _______________________ test_curvefitting_linear_fitting 
> _______________________
> 
>     def test_curvefitting_linear_fitting():
>         """Tests the linear_fitting() method of CurveFitting class"""
>     
> >       a, b = cf1.linear_fitting()
> 
> tests/test_curvefitting.py:103: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = CurveFitting([], [])
> 
>     def linear_fitting(self):
>         """This method returns a tuple with the 'a', 'b' coefficients of the
>         linear equation *'y = a*x + b'* that best fits the table data, using
>         the least squares approach.
>     
>         :returns: 'a', 'b' coefficients of best linear equation fit.
>         :rtype: tuple
>         :raises: ZeroDivisionError if input data leads to a division by zero
>     
>         >>> cf = CurveFitting([73.0, 38.0, 35.0, 42.0, 78.0, 68.0, 74.0, 42.0,
>         ...                    52.0, 54.0, 39.0, 61.0, 42.0, 49.0, 50.0, 62.0,
>         ...                    44.0, 39.0, 43.0, 54.0, 44.0, 37.0],
>         ...                   [90.4, 125.3, 161.8, 143.4, 52.5, 50.8, 71.5,
>         ...                    152.8, 131.3, 98.5, 144.8, 78.1, 89.5, 63.9,
>         ...                    112.1, 82.0, 119.8, 161.2, 208.4, 111.6, 167.1,
>         ...                    162.1])
>         >>> a, b = cf.linear_fitting()
>         >>> print("a = {}\tb = {}".format(round(a, 2), round(b, 2)))
>         a = -2.49     b = 244.18
>         """
>     
> >       n = self._N
> E       AttributeError: 'CurveFitting' object has no attribute '_N'
> 
> pymeeus/CurveFitting.py:354: AttributeError
> _____________________ test_curvefitting_quadratic_fitting 
> ______________________
> 
>     def test_curvefitting_quadratic_fitting():
>         """Tests the quadratic_fitting() method of CurveFitting class"""
>     
> >       a, b, c = cf3.quadratic_fitting()
> 
> tests/test_curvefitting.py:121: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = CurveFitting([], [])
> 
>     def quadratic_fitting(self):
>         """This method returns a tuple with the 'a', 'b', 'c' coefficients of
>         the quadratic equation *'y = a*x*x + b*x + c'* that best fits the 
> table
>         data, using the least squares approach.
>     
>         :returns: 'a', 'b', 'c' coefficients of best quadratic equation fit.
>         :rtype: tuple
>         :raises: ZeroDivisionError if input data leads to a division by zero
>     
>         >>> cf2 = CurveFitting([-2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5,
>         ...                     2.0, 2.5,3.0],
>         ...                    [-9.372, -3.821, 0.291, 3.730, 5.822, 8.324,
>         ...                     9.083, 6.957, 7.006, 0.365, -1.722])
>         >>> a, b, c = cf2.quadratic_fitting()
>         >>> print("a = {}; b = {}; c = {}".format(round(a, 2), round(b, 2),
>         ...                                       round(c, 2)))
>         a = -2.22; b = 3.76; c = 6.64
>         """
>     
> >       n = self._N
> E       AttributeError: 'CurveFitting' object has no attribute '_N'
> 
> pymeeus/CurveFitting.py:387: AttributeError
> ______________________ test_curvefitting_general_fitting 
> _______________________
> 
>     def test_curvefitting_general_fitting():
>         """Tests the general_fitting() method of CurveFitting class"""
>     
>         # Let's define the three functions to be used for fitting
>         def sin1(x):
>             return sin(radians(x))
>     
>         def sin2(x):
>             return sin(radians(2.0*x))
>     
>         def sin3(x):
>             return sin(radians(3.0*x))
>     
> >       a, b, c = cf4.general_fitting(sin1, sin2, sin3)
> 
> tests/test_curvefitting.py:145: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = CurveFitting([], [])
> f0 = <function test_curvefitting_general_fitting.<locals>.sin1 at 
> 0x7efe673567a0>
> f1 = <function test_curvefitting_general_fitting.<locals>.sin2 at 
> 0x7efe67356700>
> f2 = <function test_curvefitting_general_fitting.<locals>.sin3 at 
> 0x7efe67355bc0>
> 
>     def general_fitting(self, f0, f1=lambda *args: 0.0, f2=lambda *args: 0.0):
>         """This method returns a tuple with the 'a', 'b', 'c' coefficients of
>         the general equation *'y = a*f0(x) + b*f1(x) + c*f2(x)'* that best 
> fits
>         the table data, using the least squares approach.
>     
>         :param f0, f1, f2: Functions used to build the general equation.
>         :type f0, f1, f2: function
>         :returns: 'a', 'b', 'c' coefficients of best general equation fit.
>         :rtype: tuple
>         :raises: ZeroDivisionError if input functions are null or input data
>            leads to a division by zero
>     
>         >>> cf4 = CurveFitting([3, 20, 34, 50, 75, 88, 111, 129, 143, 160, 
> 183,
>         ...                     200, 218, 230, 248, 269, 290, 303, 320, 344],
>         ...                    [0.0433, 0.2532, 0.3386, 0.3560, 0.4983, 
> 0.7577,
>         ...                     1.4585, 1.8628, 1.8264, 1.2431, -0.2043,
>         ...                     -1.2431, -1.8422, -1.8726, -1.4889, -0.8372,
>         ...                     -0.4377, -0.3640, -0.3508, -0.2126])
>         >>> def sin1(x): return sin(radians(x))
>         >>> def sin2(x): return sin(radians(2.0*x))
>         >>> def sin3(x): return sin(radians(3.0*x))
>         >>> a, b, c = cf4.general_fitting(sin1, sin2, sin3)
>         >>> print("a = {}; b = {}; c = {}".format(round(a, 2), round(b, 2),
>         ...                                       round(c, 2)))
>         a = 1.2; b = -0.77; c = 0.39
>     
>         >>> cf5 = CurveFitting([0, 1.2, 1.4, 1.7, 2.1, 2.2])
>         >>> a, b, c = cf5.general_fitting(sqrt)
>         >>> print("a = {}; b = {}; c = {}".format(round(a, 3), round(b, 3),
>         ...                                       round(c, 3)))
>         a = 1.016; b = 0.0; c = 0.0
>         """
>     
>         m = 0
>         p = 0
>         q = 0
>         r = 0
>         s = 0
>         t = 0
>         u = 0
>         v = 0
>         w = 0
>         xl = list(self._x)
>         yl = list(self._y)
>         for i, value in enumerate(xl):
>             x = value
>             y = yl[i]
>             m += f0(x) * f0(x)
>             p += f0(x) * f1(x)
>             q += f0(x) * f2(x)
>             r += f1(x) * f1(x)
>             s += f1(x) * f2(x)
>             t += f2(x) * f2(x)
>             u += y * f0(x)
>             v += y * f1(x)
>             w += y * f2(x)
>     
>         if abs(r) < TOL and abs(t) < TOL and abs(m) >= TOL:
>             return (u / m, 0.0, 0.0)
>     
>         if abs(m * r * t) < TOL:
> >           raise ZeroDivisionError("Invalid input functions: They are null")
> E           ZeroDivisionError: Invalid input functions: They are null
> 
> pymeeus/CurveFitting.py:470: ZeroDivisionError
> ___________________________ test_interpolation_call 
> ____________________________
> 
>     def test_interpolation_call():
>         """Tests the __call__() method of Interpolation class"""
>     
>         m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
>     
>         assert abs(m(-0.8) - (-0.52)) < TOL, \
>             "ERROR: In 1st __call__() test, output value doesn't match"
>     
>         assert abs(m(0.7) - 2.93) < TOL, \
>             "ERROR: In 2nd __call__() test, output value doesn't match"
>     
>         assert abs(m(-1.0) - (-2.0)) < TOL, \
>             "ERROR: In 3rd __call__() test, output value doesn't match"
>     
>         m = Interpolation([-3.0, 0.0, 2.5], [12.0, -3.0, -1.75])
>     
>         assert abs(m(-2.0) - 5.0) < TOL, \
>             "ERROR: In 4th __call__() test, output value doesn't match"
>     
>         assert abs(m(2.5) - (-1.75)) < TOL, \
>             "ERROR: In 5th __call__() test, output value doesn't match"
>     
>         # This interpolation test uses Right Ascension
> >       a = Angle(i_ra(11.0))
> 
> tests/test_interpolation.py:121: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = Interpolation([], []), x = 11.0
> 
>     def __call__(self, x):
>         """Method to interpolate the function at a given 'x'.
>     
>         :param x: Point where the interpolation will be carried out.
>         :type x: int, float, :py:class:`Angle`
>     
>         :returns: Resulting value of the interpolation.
>         :rtype: float
>         :raises: ValueError if input value is outside of interpolation range.
>         :raises: TypeError if input value is of wrong type.
>     
>         >>> i = Interpolation([7, 8, 9], [0.884226, 0.877366, 0.870531])
>         >>> y = round(i(8.18125), 6)
>         >>> print(y)
>         0.876125
>         """
>     
>         # Check if input value is of correct type
>         if isinstance(x, (int, float, Angle)):
>             # Check if 'x' already belongs to the data table
>             for i in range(len(self._x)):
>                 if abs(x - self._x[i]) < self._tol:
>                     return self._y[i]  # We don't need to look further
>             # Check if Newton coefficients table is not empty
>             if len(self._table) == 0:
> >               raise RuntimeError("Internal table is empty. Use set().")
> E               RuntimeError: Internal table is empty. Use set().
> 
> pymeeus/Interpolation.py:407: RuntimeError
> ________________________ test_interpolation_derivative 
> _________________________
> 
>     def test_interpolation_derivative():
>         """Tests the derivative() method of Interpolation class"""
>     
>         m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
>     
>         assert abs(m.derivative(-1.0) - 8.0) < TOL, \
>             "ERROR: In 1st derivative() test, output value doesn't match"
>     
>         assert abs(m.derivative(0.0) - 2.0) < TOL, \
>             "ERROR: In 2nd derivative() test, output value doesn't match"
>     
>         assert abs(m.derivative(0.5) - (-1.0)) < TOL, \
>             "ERROR: In 3rd derivative() test, output value doesn't match"
>     
>         m = Interpolation([-3.0, 0.0, 2.5], [12.0, -3.0, -1.75])
>     
>         assert abs(m.derivative(-3.0) - (-8.0)) < TOL, \
>             "ERROR: In 4th derivative() test, output value doesn't match"
>     
>         assert abs(m.derivative(0.0) - (-2.0)) < TOL, \
>             "ERROR: In 5th derivative() test, output value doesn't match"
>     
>         assert abs(m.derivative(2.5) - 3.0) < TOL, \
>             "ERROR: In 6th derivative() test, output value doesn't match"
>     
>         # Do test with an interpolation object with 6 table entries, based on 
> sine
>         # We need to adjust the result because degrees were used instead of 
> radians
> >       res = degrees(i_sine.derivative(30.0))
> 
> tests/test_interpolation.py:161: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = Interpolation([], []), x = 30.0
> 
>     def derivative(self, x):
>         """Method to compute the derivative from interpolation polynomial.
>     
>         :param x: Point where the interpolation derivative will be carried 
> out.
>         :type x: int, float, :py:class:`Angle`
>     
>         :returns: Resulting value of the interpolation derivative.
>         :rtype: float
>         :raises: ValueError if input value is outside of interpolation range.
>         :raises: TypeError if input value is of wrong type.
>     
>         >>> m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
>         >>> m.derivative(-1.0)
>         8.0
>         >>> m.derivative(0.5)
>         -1.0
>         """
>     
>         # Check if input value is of correct type
>         if isinstance(x, (int, float, Angle)):
>             # Check that x is within interpolation table values
> >           if x < self._x[0] or x > self._x[-1]:
> E           IndexError: list index out of range
> 
> pymeeus/Interpolation.py:441: IndexError
> ___________________________ test_interpolation_root 
> ____________________________
> 
>     def test_interpolation_root():
>         """Tests the root() method of Interpolation class"""
>     
>         m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
>     
>         assert abs(m.root() - (-0.7207592200561265)) < TOL, \
>             "ERROR: In 1st root() test, output value doesn't match"
>     
>         m = Interpolation([-3.0, 0.0, 2.5], [12.0, -3.0, -1.75])
>     
>         assert abs(m.root(-2.0, 0.0) - (-1.0)) < TOL, \
>             "ERROR: In 2nd root() test, output value doesn't match"
>     
>         assert abs(m.root() - (-1.0)) < TOL, \
>             "ERROR: In 3rd root() test, output value doesn't match"
>     
>         m = Interpolation([-3.0, 0.0, 2.5, 3.5], [12.0, -3.0, -1.75, 2.25])
>     
>         assert abs(m.root(0.0, 3.15) - 3.0) < TOL, \
>             "ERROR: In 4th root() test, output value doesn't match"
>     
>         # Let's do some tests with Angles
> >       assert abs(i_angles1.root() - 26.798732705) < TOL, \
>             "ERROR: In 5th root() test, output value doesn't match"
> 
> tests/test_interpolation.py:188: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = Interpolation([], []), xl = 0, xh = 0, max_iter = 1000
> 
>     def root(self, xl=0, xh=0, max_iter=1000):
>         """Method to find the root inside the [xl, xh] range.
>     
>         This method applies, in principle, the Newton method to find the root;
>         however, if conditions are such that Newton method may not bei 
> properly
>         behaving or converging, then it switches to the linear Interpolation
>         method.
>     
>         If values xl, xh are not given, the limits of the interpolation table
>         values will be used.
>     
>         .. note:: This method returns a ValueError exception if the
>            corresponding yl = f(xl) and yh = f(xh) values have the same sign.
>            In that case, the method assumes there is no root in the [xl, xh]
>            interval.
>     
>         .. note:: If any of the xl, xh values is beyond the limits given by 
> the
>            interpolation values, its value will be set to the corresponding
>            limit.
>     
>         .. note:: If xl == xh (and not zero), a ValueError exception is 
> raised.
>     
>         .. note:: If the method doesn't converge within max_iter ierations,
>            then a ValueError exception is raised.
>     
>         :param xl: Lower limit of interval where the root will be looked for.
>         :type xl: int, float, :py:class:`Angle`
>         :param xh: Higher limit of interval where the root will be looked for.
>         :type xh: int, float, :py:class:`Angle`
>         :param max_iter: Maximum number of iterations allowed.
>         :type max_iter: int
>     
>         :returns: Root of the interpolated function within [xl, xh] interval.
>         :rtype: int, float, :py:class:`Angle`
>         :raises: ValueError if yl = f(xl), yh = f(xh) have same sign.
>         :raises: ValueError if xl == xh.
>         :raises: ValueError if maximum number of iterations is exceeded.
>         :raises: TypeError if input value is of wrong type.
>     
>         >>> m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
>         >>> round(m.root(), 8)
>         -0.72075922
>         """
>     
>         # Get the limits of the interpolation table
> >       xmin = self._x[0]
> E       IndexError: list index out of range
> 
> pymeeus/Interpolation.py:506: IndexError
> =============================== warnings summary 
> ===============================
> .pybuild/cpython3_3.12_pymeeus/build/tests/test_epoch.py::test_epoch_constructor
> .pybuild/cpython3_3.12_pymeeus/build/tests/test_epoch.py::test_epoch_constructor
> .pybuild/cpython3_3.12_pymeeus/build/tests/test_epoch.py::test_epoch_constructor
> .pybuild/cpython3_3.12_pymeeus/build/tests/test_epoch.py::test_epoch_constructor
>   /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus/Epoch.py:987: 
> DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled 
> for removal in a future version. Use timezone-aware objects to represent 
> datetimes in UTC: datetime.datetime.now(datetime.UTC).
>     utchour = datetime.datetime.utcnow().hour
> 
> .pybuild/cpython3_3.12_pymeeus/build/tests/test_epoch.py::test_epoch_constructor
> .pybuild/cpython3_3.12_pymeeus/build/tests/test_epoch.py::test_epoch_constructor
> .pybuild/cpython3_3.12_pymeeus/build/tests/test_epoch.py::test_epoch_constructor
> .pybuild/cpython3_3.12_pymeeus/build/tests/test_epoch.py::test_epoch_constructor
>   /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build/pymeeus/Epoch.py:989: 
> DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled 
> for removal in a future version. Use timezone-aware objects to represent 
> datetimes in UTC: datetime.datetime.now(datetime.UTC).
>     utcminute = datetime.datetime.utcnow().minute
> 
> -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
> =========================== short test summary info 
> ============================
> FAILED tests/test_curvefitting.py::test_curvefitting_correlation_coeff - 
> Attr...
> FAILED tests/test_curvefitting.py::test_curvefitting_linear_fitting - 
> Attribu...
> FAILED tests/test_curvefitting.py::test_curvefitting_quadratic_fitting - 
> Attr...
> FAILED tests/test_curvefitting.py::test_curvefitting_general_fitting - 
> ZeroDi...
> FAILED tests/test_interpolation.py::test_interpolation_call - RuntimeError: 
> I...
> FAILED tests/test_interpolation.py::test_interpolation_derivative - 
> IndexErro...
> FAILED tests/test_interpolation.py::test_interpolation_root - IndexError: 
> lis...
> ================== 7 failed, 244 passed, 8 warnings in 2.11s 
> ===================
> E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_pymeeus/build; python3.12 -m pytest 
> tests
> I: pybuild base:305: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build; python3.11 -m pytest 
> tests
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.11.8, pytest-8.1.1, pluggy-1.4.0
> rootdir: /<<PKGBUILDDIR>>
> plugins: cov-4.1.0
> collected 251 items
> 
> tests/test_angle.py ........................................             [ 
> 15%]
> tests/test_coordinates.py .......................................        [ 
> 31%]
> tests/test_curvefitting.py .FFFF                                         [ 
> 33%]
> tests/test_earth.py ................                                     [ 
> 39%]
> tests/test_epoch.py .................................                    [ 
> 52%]
> tests/test_interpolation.py .FFF.                                        [ 
> 54%]
> tests/test_jupiter.py ..........                                         [ 
> 58%]
> tests/test_jupiterMoons.py .........                                     [ 
> 62%]
> tests/test_mars.py ..........                                            [ 
> 66%]
> tests/test_mercury.py ............                                       [ 
> 71%]
> tests/test_minor.py ..                                                   [ 
> 72%]
> tests/test_moon.py ..............                                        [ 
> 77%]
> tests/test_neptune.py ......                                             [ 
> 80%]
> tests/test_pluto.py ..                                                   [ 
> 80%]
> tests/test_saturn.py ..............                                      [ 
> 86%]
> tests/test_sun.py ............                                           [ 
> 91%]
> tests/test_uranus.py ........                                            [ 
> 94%]
> tests/test_venus.py ..............                                       
> [100%]
> 
> =================================== FAILURES 
> ===================================
> _____________________ test_curvefitting_correlation_coeff 
> ______________________
> 
>     def test_curvefitting_correlation_coeff():
>         """Tests the correlation_coeff() method of CurveFitting class"""
>     
> >       r = cf1.correlation_coeff()
> 
> tests/test_curvefitting.py:95: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = CurveFitting([], [])
> 
>     def correlation_coeff(self):
>         """This method returns the coefficient of correlation, as a float.
>     
>         :returns: Coefficient of correlation.
>         :rtype: float
>     
>         >>> cf = CurveFitting([73.0, 38.0, 35.0, 42.0, 78.0, 68.0, 74.0, 42.0,
>         ...                    52.0, 54.0, 39.0, 61.0, 42.0, 49.0, 50.0, 62.0,
>         ...                    44.0, 39.0, 43.0, 54.0, 44.0, 37.0],
>         ...                   [90.4, 125.3, 161.8, 143.4, 52.5, 50.8, 71.5,
>         ...                    152.8, 131.3, 98.5, 144.8, 78.1, 89.5, 63.9,
>         ...                    112.1, 82.0, 119.8, 161.2, 208.4, 111.6, 167.1,
>         ...                    162.1])
>         >>> r = cf.correlation_coeff()
>         >>> print(round(r, 3))
>         -0.767
>         """
>     
> >       n = self._N
> E       AttributeError: 'CurveFitting' object has no attribute '_N'
> 
> pymeeus/CurveFitting.py:324: AttributeError
> _______________________ test_curvefitting_linear_fitting 
> _______________________
> 
>     def test_curvefitting_linear_fitting():
>         """Tests the linear_fitting() method of CurveFitting class"""
>     
> >       a, b = cf1.linear_fitting()
> 
> tests/test_curvefitting.py:103: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = CurveFitting([], [])
> 
>     def linear_fitting(self):
>         """This method returns a tuple with the 'a', 'b' coefficients of the
>         linear equation *'y = a*x + b'* that best fits the table data, using
>         the least squares approach.
>     
>         :returns: 'a', 'b' coefficients of best linear equation fit.
>         :rtype: tuple
>         :raises: ZeroDivisionError if input data leads to a division by zero
>     
>         >>> cf = CurveFitting([73.0, 38.0, 35.0, 42.0, 78.0, 68.0, 74.0, 42.0,
>         ...                    52.0, 54.0, 39.0, 61.0, 42.0, 49.0, 50.0, 62.0,
>         ...                    44.0, 39.0, 43.0, 54.0, 44.0, 37.0],
>         ...                   [90.4, 125.3, 161.8, 143.4, 52.5, 50.8, 71.5,
>         ...                    152.8, 131.3, 98.5, 144.8, 78.1, 89.5, 63.9,
>         ...                    112.1, 82.0, 119.8, 161.2, 208.4, 111.6, 167.1,
>         ...                    162.1])
>         >>> a, b = cf.linear_fitting()
>         >>> print("a = {}\tb = {}".format(round(a, 2), round(b, 2)))
>         a = -2.49     b = 244.18
>         """
>     
> >       n = self._N
> E       AttributeError: 'CurveFitting' object has no attribute '_N'
> 
> pymeeus/CurveFitting.py:354: AttributeError
> _____________________ test_curvefitting_quadratic_fitting 
> ______________________
> 
>     def test_curvefitting_quadratic_fitting():
>         """Tests the quadratic_fitting() method of CurveFitting class"""
>     
> >       a, b, c = cf3.quadratic_fitting()
> 
> tests/test_curvefitting.py:121: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = CurveFitting([], [])
> 
>     def quadratic_fitting(self):
>         """This method returns a tuple with the 'a', 'b', 'c' coefficients of
>         the quadratic equation *'y = a*x*x + b*x + c'* that best fits the 
> table
>         data, using the least squares approach.
>     
>         :returns: 'a', 'b', 'c' coefficients of best quadratic equation fit.
>         :rtype: tuple
>         :raises: ZeroDivisionError if input data leads to a division by zero
>     
>         >>> cf2 = CurveFitting([-2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5,
>         ...                     2.0, 2.5,3.0],
>         ...                    [-9.372, -3.821, 0.291, 3.730, 5.822, 8.324,
>         ...                     9.083, 6.957, 7.006, 0.365, -1.722])
>         >>> a, b, c = cf2.quadratic_fitting()
>         >>> print("a = {}; b = {}; c = {}".format(round(a, 2), round(b, 2),
>         ...                                       round(c, 2)))
>         a = -2.22; b = 3.76; c = 6.64
>         """
>     
> >       n = self._N
> E       AttributeError: 'CurveFitting' object has no attribute '_N'
> 
> pymeeus/CurveFitting.py:387: AttributeError
> ______________________ test_curvefitting_general_fitting 
> _______________________
> 
>     def test_curvefitting_general_fitting():
>         """Tests the general_fitting() method of CurveFitting class"""
>     
>         # Let's define the three functions to be used for fitting
>         def sin1(x):
>             return sin(radians(x))
>     
>         def sin2(x):
>             return sin(radians(2.0*x))
>     
>         def sin3(x):
>             return sin(radians(3.0*x))
>     
> >       a, b, c = cf4.general_fitting(sin1, sin2, sin3)
> 
> tests/test_curvefitting.py:145: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = CurveFitting([], [])
> f0 = <function test_curvefitting_general_fitting.<locals>.sin1 at 
> 0x7f26f49f5a80>
> f1 = <function test_curvefitting_general_fitting.<locals>.sin2 at 
> 0x7f26f49f5580>
> f2 = <function test_curvefitting_general_fitting.<locals>.sin3 at 
> 0x7f26f49f5800>
> 
>     def general_fitting(self, f0, f1=lambda *args: 0.0, f2=lambda *args: 0.0):
>         """This method returns a tuple with the 'a', 'b', 'c' coefficients of
>         the general equation *'y = a*f0(x) + b*f1(x) + c*f2(x)'* that best 
> fits
>         the table data, using the least squares approach.
>     
>         :param f0, f1, f2: Functions used to build the general equation.
>         :type f0, f1, f2: function
>         :returns: 'a', 'b', 'c' coefficients of best general equation fit.
>         :rtype: tuple
>         :raises: ZeroDivisionError if input functions are null or input data
>            leads to a division by zero
>     
>         >>> cf4 = CurveFitting([3, 20, 34, 50, 75, 88, 111, 129, 143, 160, 
> 183,
>         ...                     200, 218, 230, 248, 269, 290, 303, 320, 344],
>         ...                    [0.0433, 0.2532, 0.3386, 0.3560, 0.4983, 
> 0.7577,
>         ...                     1.4585, 1.8628, 1.8264, 1.2431, -0.2043,
>         ...                     -1.2431, -1.8422, -1.8726, -1.4889, -0.8372,
>         ...                     -0.4377, -0.3640, -0.3508, -0.2126])
>         >>> def sin1(x): return sin(radians(x))
>         >>> def sin2(x): return sin(radians(2.0*x))
>         >>> def sin3(x): return sin(radians(3.0*x))
>         >>> a, b, c = cf4.general_fitting(sin1, sin2, sin3)
>         >>> print("a = {}; b = {}; c = {}".format(round(a, 2), round(b, 2),
>         ...                                       round(c, 2)))
>         a = 1.2; b = -0.77; c = 0.39
>     
>         >>> cf5 = CurveFitting([0, 1.2, 1.4, 1.7, 2.1, 2.2])
>         >>> a, b, c = cf5.general_fitting(sqrt)
>         >>> print("a = {}; b = {}; c = {}".format(round(a, 3), round(b, 3),
>         ...                                       round(c, 3)))
>         a = 1.016; b = 0.0; c = 0.0
>         """
>     
>         m = 0
>         p = 0
>         q = 0
>         r = 0
>         s = 0
>         t = 0
>         u = 0
>         v = 0
>         w = 0
>         xl = list(self._x)
>         yl = list(self._y)
>         for i, value in enumerate(xl):
>             x = value
>             y = yl[i]
>             m += f0(x) * f0(x)
>             p += f0(x) * f1(x)
>             q += f0(x) * f2(x)
>             r += f1(x) * f1(x)
>             s += f1(x) * f2(x)
>             t += f2(x) * f2(x)
>             u += y * f0(x)
>             v += y * f1(x)
>             w += y * f2(x)
>     
>         if abs(r) < TOL and abs(t) < TOL and abs(m) >= TOL:
>             return (u / m, 0.0, 0.0)
>     
>         if abs(m * r * t) < TOL:
> >           raise ZeroDivisionError("Invalid input functions: They are null")
> E           ZeroDivisionError: Invalid input functions: They are null
> 
> pymeeus/CurveFitting.py:470: ZeroDivisionError
> ___________________________ test_interpolation_call 
> ____________________________
> 
>     def test_interpolation_call():
>         """Tests the __call__() method of Interpolation class"""
>     
>         m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
>     
>         assert abs(m(-0.8) - (-0.52)) < TOL, \
>             "ERROR: In 1st __call__() test, output value doesn't match"
>     
>         assert abs(m(0.7) - 2.93) < TOL, \
>             "ERROR: In 2nd __call__() test, output value doesn't match"
>     
>         assert abs(m(-1.0) - (-2.0)) < TOL, \
>             "ERROR: In 3rd __call__() test, output value doesn't match"
>     
>         m = Interpolation([-3.0, 0.0, 2.5], [12.0, -3.0, -1.75])
>     
>         assert abs(m(-2.0) - 5.0) < TOL, \
>             "ERROR: In 4th __call__() test, output value doesn't match"
>     
>         assert abs(m(2.5) - (-1.75)) < TOL, \
>             "ERROR: In 5th __call__() test, output value doesn't match"
>     
>         # This interpolation test uses Right Ascension
> >       a = Angle(i_ra(11.0))
> 
> tests/test_interpolation.py:121: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = Interpolation([], []), x = 11.0
> 
>     def __call__(self, x):
>         """Method to interpolate the function at a given 'x'.
>     
>         :param x: Point where the interpolation will be carried out.
>         :type x: int, float, :py:class:`Angle`
>     
>         :returns: Resulting value of the interpolation.
>         :rtype: float
>         :raises: ValueError if input value is outside of interpolation range.
>         :raises: TypeError if input value is of wrong type.
>     
>         >>> i = Interpolation([7, 8, 9], [0.884226, 0.877366, 0.870531])
>         >>> y = round(i(8.18125), 6)
>         >>> print(y)
>         0.876125
>         """
>     
>         # Check if input value is of correct type
>         if isinstance(x, (int, float, Angle)):
>             # Check if 'x' already belongs to the data table
>             for i in range(len(self._x)):
>                 if abs(x - self._x[i]) < self._tol:
>                     return self._y[i]  # We don't need to look further
>             # Check if Newton coefficients table is not empty
>             if len(self._table) == 0:
> >               raise RuntimeError("Internal table is empty. Use set().")
> E               RuntimeError: Internal table is empty. Use set().
> 
> pymeeus/Interpolation.py:407: RuntimeError
> ________________________ test_interpolation_derivative 
> _________________________
> 
>     def test_interpolation_derivative():
>         """Tests the derivative() method of Interpolation class"""
>     
>         m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
>     
>         assert abs(m.derivative(-1.0) - 8.0) < TOL, \
>             "ERROR: In 1st derivative() test, output value doesn't match"
>     
>         assert abs(m.derivative(0.0) - 2.0) < TOL, \
>             "ERROR: In 2nd derivative() test, output value doesn't match"
>     
>         assert abs(m.derivative(0.5) - (-1.0)) < TOL, \
>             "ERROR: In 3rd derivative() test, output value doesn't match"
>     
>         m = Interpolation([-3.0, 0.0, 2.5], [12.0, -3.0, -1.75])
>     
>         assert abs(m.derivative(-3.0) - (-8.0)) < TOL, \
>             "ERROR: In 4th derivative() test, output value doesn't match"
>     
>         assert abs(m.derivative(0.0) - (-2.0)) < TOL, \
>             "ERROR: In 5th derivative() test, output value doesn't match"
>     
>         assert abs(m.derivative(2.5) - 3.0) < TOL, \
>             "ERROR: In 6th derivative() test, output value doesn't match"
>     
>         # Do test with an interpolation object with 6 table entries, based on 
> sine
>         # We need to adjust the result because degrees were used instead of 
> radians
> >       res = degrees(i_sine.derivative(30.0))
> 
> tests/test_interpolation.py:161: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = Interpolation([], []), x = 30.0
> 
>     def derivative(self, x):
>         """Method to compute the derivative from interpolation polynomial.
>     
>         :param x: Point where the interpolation derivative will be carried 
> out.
>         :type x: int, float, :py:class:`Angle`
>     
>         :returns: Resulting value of the interpolation derivative.
>         :rtype: float
>         :raises: ValueError if input value is outside of interpolation range.
>         :raises: TypeError if input value is of wrong type.
>     
>         >>> m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
>         >>> m.derivative(-1.0)
>         8.0
>         >>> m.derivative(0.5)
>         -1.0
>         """
>     
>         # Check if input value is of correct type
>         if isinstance(x, (int, float, Angle)):
>             # Check that x is within interpolation table values
> >           if x < self._x[0] or x > self._x[-1]:
> E           IndexError: list index out of range
> 
> pymeeus/Interpolation.py:441: IndexError
> ___________________________ test_interpolation_root 
> ____________________________
> 
>     def test_interpolation_root():
>         """Tests the root() method of Interpolation class"""
>     
>         m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
>     
>         assert abs(m.root() - (-0.7207592200561265)) < TOL, \
>             "ERROR: In 1st root() test, output value doesn't match"
>     
>         m = Interpolation([-3.0, 0.0, 2.5], [12.0, -3.0, -1.75])
>     
>         assert abs(m.root(-2.0, 0.0) - (-1.0)) < TOL, \
>             "ERROR: In 2nd root() test, output value doesn't match"
>     
>         assert abs(m.root() - (-1.0)) < TOL, \
>             "ERROR: In 3rd root() test, output value doesn't match"
>     
>         m = Interpolation([-3.0, 0.0, 2.5, 3.5], [12.0, -3.0, -1.75, 2.25])
>     
>         assert abs(m.root(0.0, 3.15) - 3.0) < TOL, \
>             "ERROR: In 4th root() test, output value doesn't match"
>     
>         # Let's do some tests with Angles
> >       assert abs(i_angles1.root() - 26.798732705) < TOL, \
>             "ERROR: In 5th root() test, output value doesn't match"
> 
> tests/test_interpolation.py:188: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = Interpolation([], []), xl = 0, xh = 0, max_iter = 1000
> 
>     def root(self, xl=0, xh=0, max_iter=1000):
>         """Method to find the root inside the [xl, xh] range.
>     
>         This method applies, in principle, the Newton method to find the root;
>         however, if conditions are such that Newton method may not bei 
> properly
>         behaving or converging, then it switches to the linear Interpolation
>         method.
>     
>         If values xl, xh are not given, the limits of the interpolation table
>         values will be used.
>     
>         .. note:: This method returns a ValueError exception if the
>            corresponding yl = f(xl) and yh = f(xh) values have the same sign.
>            In that case, the method assumes there is no root in the [xl, xh]
>            interval.
>     
>         .. note:: If any of the xl, xh values is beyond the limits given by 
> the
>            interpolation values, its value will be set to the corresponding
>            limit.
>     
>         .. note:: If xl == xh (and not zero), a ValueError exception is 
> raised.
>     
>         .. note:: If the method doesn't converge within max_iter ierations,
>            then a ValueError exception is raised.
>     
>         :param xl: Lower limit of interval where the root will be looked for.
>         :type xl: int, float, :py:class:`Angle`
>         :param xh: Higher limit of interval where the root will be looked for.
>         :type xh: int, float, :py:class:`Angle`
>         :param max_iter: Maximum number of iterations allowed.
>         :type max_iter: int
>     
>         :returns: Root of the interpolated function within [xl, xh] interval.
>         :rtype: int, float, :py:class:`Angle`
>         :raises: ValueError if yl = f(xl), yh = f(xh) have same sign.
>         :raises: ValueError if xl == xh.
>         :raises: ValueError if maximum number of iterations is exceeded.
>         :raises: TypeError if input value is of wrong type.
>     
>         >>> m = Interpolation([-1.0, 0.0, 1.0], [-2.0, 3.0, 2.0])
>         >>> round(m.root(), 8)
>         -0.72075922
>         """
>     
>         # Get the limits of the interpolation table
> >       xmin = self._x[0]
> E       IndexError: list index out of range
> 
> pymeeus/Interpolation.py:506: IndexError
> =========================== short test summary info 
> ============================
> FAILED tests/test_curvefitting.py::test_curvefitting_correlation_coeff - 
> Attr...
> FAILED tests/test_curvefitting.py::test_curvefitting_linear_fitting - 
> Attribu...
> FAILED tests/test_curvefitting.py::test_curvefitting_quadratic_fitting - 
> Attr...
> FAILED tests/test_curvefitting.py::test_curvefitting_general_fitting - 
> ZeroDi...
> FAILED tests/test_interpolation.py::test_interpolation_call - RuntimeError: 
> I...
> FAILED tests/test_interpolation.py::test_interpolation_derivative - 
> IndexErro...
> FAILED tests/test_interpolation.py::test_interpolation_root - IndexError: 
> lis...
> ======================== 7 failed, 244 passed in 1.97s 
> =========================
> E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pymeeus/build; python3.11 -m pytest 
> tests
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 
> 3.11" returned exit code 13


The full build log is available from:
http://qa-logs.debian.net/2024/03/19/pymeeus_0.5.11+dfsg1-1_unstable.log

All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20240319;users=lu...@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20240319&fusertaguser=lu...@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.

--- End Message ---
--- Begin Message ---
Source: pymeeus
Source-Version: 0.5.12+dfsg1-1
Done: Antoine Beaupré <anar...@debian.org>

We believe that the bug you reported is fixed in the latest version of
pymeeus, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1067...@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Antoine Beaupré <anar...@debian.org> (supplier of updated pymeeus package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmas...@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Format: 1.8
Date: Sat, 06 Apr 2024 22:26:57 -0400
Source: pymeeus
Architecture: source
Version: 0.5.12+dfsg1-1
Distribution: unstable
Urgency: medium
Maintainer: Debian Python Team <team+pyt...@tracker.debian.org>
Changed-By: Antoine Beaupré <anar...@debian.org>
Closes: 1067290
Changes:
 pymeeus (0.5.12+dfsg1-1) unstable; urgency=medium
 .
   [ Alexandre Detiste ]
   * New upstream version 0.5.12+dfsg1
   * use new dh-sequence-python3
 .
   [ Debian Janitor ]
   * Update standards version to 4.6.1, no changes needed.
 .
   [ Antoine Beaupré ]
   * Fix pytest 7.2+ support and FTBFS in test suite (Closes: #1067290)
Checksums-Sha1:
 8c92e7b200b50899edab831055bc3019df025949 1550 pymeeus_0.5.12+dfsg1-1.dsc
 cb920233564edf95f308dd24ddfb0d0484149112 513860 
pymeeus_0.5.12+dfsg1.orig.tar.xz
 33e7d0c01710bd3d784853661d1bc5bbe6d78187 4340 
pymeeus_0.5.12+dfsg1-1.debian.tar.xz
 999ceba94f67a3a6735299071d271768736ee35d 6622 
pymeeus_0.5.12+dfsg1-1_amd64.buildinfo
Checksums-Sha256:
 e28b417eb1e1220d967e574d17df862cbea2e900e7d7f43379812cbec4ddb814 1550 
pymeeus_0.5.12+dfsg1-1.dsc
 710c2e772b2b871828bd4fff07d3de348290d0494fcb9ccfc51b3b43647ea540 513860 
pymeeus_0.5.12+dfsg1.orig.tar.xz
 16fb9c5a75511bbf253ab358ebc9509604cd025427a14cc17ad655d8abf48152 4340 
pymeeus_0.5.12+dfsg1-1.debian.tar.xz
 1a7e3f3684d2fb9ce87859402cf37296ecec8e32d10471eded99f5237e74adde 6622 
pymeeus_0.5.12+dfsg1-1_amd64.buildinfo
Files:
 f266245e5c71228f7363e0629514045c 1550 python optional 
pymeeus_0.5.12+dfsg1-1.dsc
 82452b9b81426064a21716c57357308e 513860 python optional 
pymeeus_0.5.12+dfsg1.orig.tar.xz
 b31b392331a34657192c185e9a413630 4340 python optional 
pymeeus_0.5.12+dfsg1-1.debian.tar.xz
 1eb75796433bc4f84a7c3da17d539de5 6622 python optional 
pymeeus_0.5.12+dfsg1-1_amd64.buildinfo

-----BEGIN PGP SIGNATURE-----

iHUEARYIAB0WIQS7ts1MmNdOE1inUqYCKTpvpOU0cwUCZhIGtwAKCRACKTpvpOU0
cy3qAQCH8e0wXWKtjOyY/h0/Rh0i43v3HxY3iRWylLApSXhJtgD/Xupuzy6rEDLr
M0JXjbdPd+HsnG9CO9InMKD2Zuhz0QI=
=rkCX
-----END PGP SIGNATURE-----

Attachment: pgpcFxAbxM9Bs.pgp
Description: PGP signature


--- End Message ---

Reply via email to