Bug#851359: diffoscope: Improve support for comparing images

Chris Lamb lamby at debian.org
Mon Apr 24 16:13:17 UTC 2017

Hey Maria,

> I tried to improve indentation and other cosmetic things. What do you
> think of the current state?

Thanks for the quick updates :)

So, I think…

    if get_image_size(self.path) != get_image_size(other.path):
        raise AssertionError

… are better written as:

    assert get_image_size(self.path) == get_image_size(other.path)

Or at least it is more Pythonic…  However, we should definitely *not*
be catching AssertionError like that for control flow, so either we need
to raise a different exception or find some other way of doing this.

For example, did you try farming all these checks out to another method?
That way you could have

    def fn(self, other):
        if get_image_size(self.path) != get_image_size(other.path):
            return False

        if other_check:
            return False

        return True

> +    # Store information about whether we are going to output html,
> +    # so we don't waste time computing things we aren't going to use.

Right, where "things" means calculating the visual diffs given that
only the HTML output currently supports them? If so:

  a) We should rename this global variable to something that reflects
     this usage.
  b) We could always just calculate the visual diffs and simply not
     render them in the presenter backends that do not support them.
     Are they remarkably slow, for example?

(Agree that making them lazy would not be the cleanest solution)


     : :'  :     Chris Lamb
     `. `'`      lamby at debian.org / chris-lamb.co.uk

More information about the Reproducible-builds mailing list