Source: pymeeus
Version: 0.5.11+dfsg1-1
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: [email protected]
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;[email protected]
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20240319&[email protected]&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.

Reply via email to