Source: blurhash-python
Version: 1.1.4-4
Severity: normal

python-mastodon Build-Depends on python3-blurhash.  Currently its tests 
aren't run at build time, but I added a direct build-dependency on 
python3-pytest to fix that, only to find that a blurhash-related test 
failed as follows:

  ___________________________ test_blurhash_decode ___________________________

  api = <mastodon.Mastodon.Mastodon object at 0x7f7b059e5350>

      def test_blurhash_decode(api):
          fake_media_dict = {
              'width': 320,
              'height': 240,
              'blurhash': '=~NdOWof1PbIPUXSvgbI$f'
          }
  >       decoded_image = api.decode_blurhash(fake_media_dict)

  tests/test_blurhash.py:13:
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

  self = <mastodon.Mastodon.Mastodon object at 0x7f7b059e5350>, media_dict = 
{'blurhash': '=~NdOWof1PbIPUXSvgbI$f', 'height': 240, 'width': 320}, out_size = 
(16, 16)
  size_per_component = True, return_linear = True

      def decode_blurhash(self, media_dict, out_size=(16, 16), 
size_per_component=True, return_linear=True):
          """
          Basic media-dict blurhash decoding.

          out_size is the desired result size in pixels, either absolute or per 
blurhash
          component (this is the default).

          By default, this function will return the image as linear RGB, ready 
for further
          scaling operations. If you want to display the image directly, set 
return_linear
          to False.

          Returns the decoded blurhash image as a three-dimensional list: 
[height][width][3],
          with the last dimension being RGB colours.

          For further info and tips for advanced usage, refer to the 
documentation for the
          blurhash module: https://github.com/halcy/blurhash-python
          """
          if not IMPL_HAS_BLURHASH:
              raise NotImplementedError(
                  'To use the blurhash functions, please install the blurhash 
Python module.')

          # Figure out what size to decode to
  >       decode_components_x, decode_components_y = 
blurhash.components(media_dict["blurhash"])
  E       AttributeError: module 'blurhash' has no attribute 'components'

  mastodon/utility.py:104: AttributeError

I then investigated the blurhash-python source package.  In the process, 
I found that:

 * Both https://pypi.org/project/blurhash/ (= 
   https://github.com/halcy/blurhash-python) and 
   https://pypi.org/project/blurhash-python/ exist, and are entirely 
   different packages
 * The Debian package incorrectly claims to be related to 
   https://github.com/halcy/blurhash-python (in debian/control Homepage 
   and debian/upstream/metadata) and of the "blurhash" package on PyPI 
   (in debian/watch)
 * The Debian package claims to be at upstream version 1.1.4, which is 
   the current version of the "blurhash" package on PyPI but is not a 
   version that has ever been released of the "blurhash-python" package 
   on PyPI (which went from 1.1.3 to 1.2.0)
 * Debian's "blurhash-python_1.1.4.orig.tar.gz" is in fact identical to 
   blurhash-python 1.1.3 from PyPI, i.e. 
   
https://files.pythonhosted.org/packages/d3/3d/311668b9bad012d83f48c2f41e31cacd97730df2155d1f92a2834fca0f9c/blurhash-python-1.1.3.tar.gz

Given that the only reverse-dependency (actually a reverse-recommends) 
on python3-blurhash in Debian is python3-mastodon, and that's 
demonstrably incompatible with the version that's actually packaged, I'm 
inclined to suggest that the best fix might be to change the package to 
match its claimed upstream metadata rather than the other way round: in 
other words, replace the current blurhash-python package contents with 
blurhash 1.1.4 from PyPI, versioning it as 
1.1.4+ds-1 or similar.  (Keeping the current source package name doesn't 
seem too unreasonable, since it matches upstream's GitHub repository 
name even if it doesn't match the PyPI package name.)

But I don't know if this was originally packaged for the benefit of 
python-mastodon, or for some other reason.  CCing Edward in case he 
remembers.

Thanks,

-- 
Colin Watson (he/him)                              [cjwat...@debian.org]

Reply via email to