Bug#813781: healpy: FTBFS: ValueError: Header update sequence item #0 is invalid; the item must either be a 2-tuple containing a keyword and value, or a 3-tuple containing a keyword, value, and comment string.

Chris Lamb lamby at debian.org
Fri Feb 5 08:37:03 UTC 2016


Source: healpy
Version: 1.8.1-1.1
Severity: serious
Justification: fails to build from source
User: reproducible-builds at lists.alioth.debian.org
Usertags: ftbfs
X-Debbugs-Cc: reproducible-builds at lists.alioth.debian.org

Dear Maintainer,

healpy fails to build from source in unstable/amd64:

  [..]

  
      def update(self, *args, **kwargs):
          """
              Update the Header with new keyword values, updating the values of
              existing keywords and appending new keywords otherwise; similar to
              `dict.update`.
      
              `update` accepts either a dict-like object or an iterable.  In the
              former case the keys must be header keywords and the values may be
              either scalar values or (value, comment) tuples.  In the case of an
              iterable the items must be (keyword, value) tuples or (keyword, value,
              comment) tuples.
      
              Arbitrary arguments are also accepted, in which case the update() is
              called again with the kwargs dict as its only argument.  That is,
      
              ::
      
                  >>> header.update(NAXIS1=100, NAXIS2=100)
      
              is equivalent to::
      
                  >>> header.update({'NAXIS1': 100, 'NAXIS2': 100})
              """
      
          if args:
              other = args[0]
          else:
              other = None
      
          def update_from_dict(k, v):
              if not isinstance(v, tuple):
                  card = Card(k, v)
              elif 0 < len(v) <= 2:
                  card = Card(*((k,) + v))
              else:
                  raise ValueError(
                      'Header update value for key %r is invalid; the value '
                      'must be either a scalar, a 1-tuple containing the '
                      'scalar value, or a 2-tuple containing the value and a '
                      'comment string.' % k)
              self._update(card)
      
          if other is None:
              pass
          elif hasattr(other, 'iteritems'):
              for k, v in other.iteritems():
                  update_from_dict(k, v)
          elif hasattr(other, 'keys'):
              for k in other.keys():
                  update_from_dict(k, other[k])
          else:
              for idx, card in enumerate(other):
                  if isinstance(card, Card):
                      self._update(card)
                  elif isinstance(card, tuple) and (1 < len(card) <= 3):
                      self._update(Card(*card))
                  else:
                      raise ValueError(
                          'Header update sequence item #%d is invalid; the '
                          'item must either be a 2-tuple containing a keyword '
                          'and value, or a 3-tuple containing a keyword, '
  >                       'value, and comment string.' % idx)
  E                   ValueError: Header update sequence item #0 is invalid; the item must either be a 2-tuple containing a keyword and value, or a 3-tuple containing a keyword, value, and comment string.
  
  /usr/lib/python2.7/dist-packages/pyfits/header.py:1017: ValueError
  ____________________ TestReadWriteCl.test_write_read_cl_II _____________________
  
  self = <healpy.test.test_fitsfunc.TestReadWriteCl testMethod=test_write_read_cl_II>
  
      def test_write_read_cl_II(self):
          cl = np.arange(1025, dtype=np.double)
  >       write_cl("test_cl.fits", cl)
  
  healpy/test/test_fitsfunc.py:84: 
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  healpy/fitsfunc.py:86: in write_cl
      tbhdu.header.update('CREATOR','healpy')
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  
  self = XTENSION= 'BINTABLE'           / binary table extension                       ...FORM1  = 'D       '                                                            
  args = ('CREATOR', 'healpy'), kwargs = {}, other = 'CREATOR'
  update_from_dict = <function update_from_dict at 0x7f056f4b20c8>, idx = 0
  card = 'C'
  
      def update(self, *args, **kwargs):
          """
              Update the Header with new keyword values, updating the values of
              existing keywords and appending new keywords otherwise; similar to
              `dict.update`.
      
              `update` accepts either a dict-like object or an iterable.  In the
              former case the keys must be header keywords and the values may be
              either scalar values or (value, comment) tuples.  In the case of an
              iterable the items must be (keyword, value) tuples or (keyword, value,
              comment) tuples.
      
              Arbitrary arguments are also accepted, in which case the update() is
              called again with the kwargs dict as its only argument.  That is,
      
              ::
      
                  >>> header.update(NAXIS1=100, NAXIS2=100)
      
              is equivalent to::
      
                  >>> header.update({'NAXIS1': 100, 'NAXIS2': 100})
              """
      
          if args:
              other = args[0]
          else:
              other = None
      
          def update_from_dict(k, v):
              if not isinstance(v, tuple):
                  card = Card(k, v)
              elif 0 < len(v) <= 2:
                  card = Card(*((k,) + v))
              else:
                  raise ValueError(
                      'Header update value for key %r is invalid; the value '
                      'must be either a scalar, a 1-tuple containing the '
                      'scalar value, or a 2-tuple containing the value and a '
                      'comment string.' % k)
              self._update(card)
      
          if other is None:
              pass
          elif hasattr(other, 'iteritems'):
              for k, v in other.iteritems():
                  update_from_dict(k, v)
          elif hasattr(other, 'keys'):
              for k in other.keys():
                  update_from_dict(k, other[k])
          else:
              for idx, card in enumerate(other):
                  if isinstance(card, Card):
                      self._update(card)
                  elif isinstance(card, tuple) and (1 < len(card) <= 3):
                      self._update(Card(*card))
                  else:
                      raise ValueError(
                          'Header update sequence item #%d is invalid; the '
                          'item must either be a 2-tuple containing a keyword '
                          'and value, or a 3-tuple containing a keyword, '
  >                       'value, and comment string.' % idx)
  E                   ValueError: Header update sequence item #0 is invalid; the item must either be a 2-tuple containing a keyword and value, or a 3-tuple containing a keyword, value, and comment string.
  
  /usr/lib/python2.7/dist-packages/pyfits/header.py:1017: ValueError
  _____________________ TestNoCrash.test_orthview_ma_nocrash _____________________
  
  self = <healpy.test.test_visufunc.TestNoCrash testMethod=test_orthview_ma_nocrash>
  
      def test_orthview_ma_nocrash(self):
  >       orthview(self.ma)
  
  healpy/test/test_visufunc.py:42: 
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  healpy/visufunc.py:708: in orthview
      cmap=cmap,norm=norm)
  healpy/projaxes.py:700: in projmap
      return super(HpxOrthographicAxes,self).projmap(map,f,**kwds)
  healpy/projaxes.py:689: in projmap
      img = super(OrthographicAxes,self).projmap(map,vec2pix_func,**kwds)
  healpy/projaxes.py:154: in projmap
      img = self.proj.projmap(map,vec2pix_func,rot=rot,coord=coord)
  healpy/projector.py:168: in projmap
      x,y = self.ij2xy()
  healpy/projector.py:862: in ij2xy
      idx = np.outer(np.ones(ysize),np.arange(xsize))
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  
  shape = 400.0, dtype = None, order = 'C'
  
      def ones(shape, dtype=None, order='C'):
          """
          Return a new array of given shape and type, filled with ones.
      
          Parameters
          ----------
          shape : int or sequence of ints
              Shape of the new array, e.g., ``(2, 3)`` or ``2``.
          dtype : data-type, optional
              The desired data-type for the array, e.g., `numpy.int8`.  Default is
              `numpy.float64`.
          order : {'C', 'F'}, optional
              Whether to store multidimensional data in C- or Fortran-contiguous
              (row- or column-wise) order in memory.
      
          Returns
          -------
          out : ndarray
              Array of ones with the given shape, dtype, and order.
      
          See Also
          --------
          zeros, ones_like
      
          Examples
          --------
          >>> np.ones(5)
          array([ 1.,  1.,  1.,  1.,  1.])
      
          >>> np.ones((5,), dtype=np.int)
          array([1, 1, 1, 1, 1])
      
          >>> np.ones((2, 1))
          array([[ 1.],
                 [ 1.]])
      
          >>> s = (2,2)
          >>> np.ones(s)
          array([[ 1.,  1.],
                 [ 1.,  1.]])
      
          """
  >       a = empty(shape, dtype, order)
  E       TypeError: 'float' object cannot be interpreted as an index
  
  /usr/lib/python2.7/dist-packages/numpy/core/numeric.py:190: TypeError
  ______________________ TestNoCrash.test_orthview_nocrash _______________________
  
  self = <healpy.test.test_visufunc.TestNoCrash testMethod=test_orthview_nocrash>
  
      def test_orthview_nocrash(self):
  >       orthview(self.m)
  
  healpy/test/test_visufunc.py:27: 
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  healpy/visufunc.py:708: in orthview
      cmap=cmap,norm=norm)
  healpy/projaxes.py:700: in projmap
      return super(HpxOrthographicAxes,self).projmap(map,f,**kwds)
  healpy/projaxes.py:689: in projmap
      img = super(OrthographicAxes,self).projmap(map,vec2pix_func,**kwds)
  healpy/projaxes.py:154: in projmap
      img = self.proj.projmap(map,vec2pix_func,rot=rot,coord=coord)
  healpy/projector.py:168: in projmap
      x,y = self.ij2xy()
  healpy/projector.py:862: in ij2xy
      idx = np.outer(np.ones(ysize),np.arange(xsize))
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  
  shape = 400.0, dtype = None, order = 'C'
  
      def ones(shape, dtype=None, order='C'):
          """
          Return a new array of given shape and type, filled with ones.
      
          Parameters
          ----------
          shape : int or sequence of ints
              Shape of the new array, e.g., ``(2, 3)`` or ``2``.
          dtype : data-type, optional
              The desired data-type for the array, e.g., `numpy.int8`.  Default is
              `numpy.float64`.
          order : {'C', 'F'}, optional
              Whether to store multidimensional data in C- or Fortran-contiguous
              (row- or column-wise) order in memory.
      
          Returns
          -------
          out : ndarray
              Array of ones with the given shape, dtype, and order.
      
          See Also
          --------
          zeros, ones_like
      
          Examples
          --------
          >>> np.ones(5)
          array([ 1.,  1.,  1.,  1.,  1.])
      
          >>> np.ones((5,), dtype=np.int)
          array([1, 1, 1, 1, 1])
      
          >>> np.ones((2, 1))
          array([[ 1.],
                 [ 1.]])
      
          >>> s = (2,2)
          >>> np.ones(s)
          array([[ 1.,  1.],
                 [ 1.,  1.]])
      
          """
  >       a = empty(shape, dtype, order)
  E       TypeError: 'float' object cannot be interpreted as an index
  
  /usr/lib/python2.7/dist-packages/numpy/core/numeric.py:190: TypeError
  ================= 8 failed, 44 passed, 6 error in 6.95 seconds =================
  E: pybuild pybuild:274: test: plugin distutils failed with: exit code=1: cd /home/lamby/temp/cdt.20160205085031.zTViol37pi/healpy-1.8.1/.pybuild/pythonX.Y_2.7/build; python2.7 -m pytest 
  dh_auto_test: pybuild --test --test-pytest -i python{version} -p 2.7 --dir . returned exit code 13
  debian/rules:17: recipe for target 'override_dh_auto_test' failed
  make[1]: *** [override_dh_auto_test] Error 25
  make[1]: Leaving directory '/home/lamby/temp/cdt.20160205085031.zTViol37pi/healpy-1.8.1'
  debian/rules:6: recipe for target 'build' failed
  make: *** [build] Error 2

  [..]

The full build log is attached.


Regards,

-- 
      ,''`.
     : :'  :     Chris Lamb
     `. `'`      lamby at debian.org / chris-lamb.co.uk
       `-
-------------- next part --------------
A non-text attachment was scrubbed...
Name: healpy.1.8.1-1.1.unstable.amd64.log.txt.gz
Type: application/octet-stream
Size: 6815 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/debian-science-maintainers/attachments/20160205/da6ec97c/attachment-0001.obj>


More information about the debian-science-maintainers mailing list