Black: error: cannot format Tests/test_file_libtiff.py: (-1, 8)

Created on 14 Aug 2020  ·  5Comments  ·  Source: psf/black

Describe the bug A clear and concise description of what the bug is.

To Reproduce Steps to reproduce the behavior:

  1. Take this file https://github.com/python-pillow/Pillow/blob/e54909b97c213278accc8176f1c52e403f8afcb6/Tests/test_file_libtiff.py
  2. Run _Black_ on it with these arguments --check Tests/test_file_libtiff.py
  3. See error
$ black --version
black, version 19.10b1.dev141+g820f387
$ black --check Tests/test_file_libtiff.py
error: cannot format Tests/test_file_libtiff.py: (-1, 8)
Oh no! 💥 💔 💥
1 file would fail to reformat.

Expected behavior A clear and concise description of what you expected to happen.

File formats.

Environment (please complete the following information):

  • Version: master
  • OS and Python version: macOS/Python 3.8.3

Does this bug also happen on master? To answer this, you have two options:

Yes, see above.

Works with last release (the codebase is already formatted with that version):

$ black --version
black, version 19.10b0
$ black --check Tests/test_file_libtiff.py
All done! ✨ 🍰 ✨
1 file would be left unchanged.

Additional context Add any other context about the problem here.

Looks like it's this part:

                            assert (
                                c_float(val[0][0] / val[0][1]).value
                                == c_float(value[0][0] / value[0][1]).value
                            ), ("%s didn't roundtrip" % tag)

https://github.com/python-pillow/Pillow/blob/e54909b97c213278accc8176f1c52e403f8afcb6/Tests/test_file_libtiff.py#L171-L174

(We're about to drop Python 3.5 and adopt f-strings, it's replacement is handled fine:

                            assert (
                                c_float(val[0][0] / val[0][1]).value
                                == c_float(value[0][0] / value[0][1]).value
                            ), f"{tag} didn't roundtrip"

)

bug crash duplicate

All 5 comments

git bisect -> 544ea9c217cad9459d7b60665db787e94b52f93d in "Improve String Handling" (#1132)

Possibly duplicate of https://github.com/psf/black/issues/1597?

Possibly duplicate of #1597?

Probably, but I don't trust myself to accurately know due to lack of familiarity with Black's formatting code so I'll someone else decide that.

FYI: Jelle created a PR (#1594) where in verbose mode, Black prints out the trackback on failure so it's a bit more clear that there was an ~IndexError~ KeyError 🙂.

I'm pretty sure this is the same underlying issue as #1597, but when we fix it we should make sure both cases are covered. Closing this one as a duplicate though.

FYI: Jelle created a PR (#1594) where in verbose mode, Black prints out the trackback on failure so it's a bit more clear that there was an IndexError 🙂.

That's useful!

Same traceback:

Traceback (most recent call last):
  File "/Users/hugo/github/black/src/black/__init__.py", line 657, in reformat_one
    if changed is not Changed.CACHED and format_file_in_place(
  File "/Users/hugo/github/black/src/black/__init__.py", line 800, in format_file_in_place
    dst_contents = format_file_contents(src_contents, fast=fast, mode=mode)
  File "/Users/hugo/github/black/src/black/__init__.py", line 921, in format_file_contents
    dst_contents = format_str(src_contents, mode=mode)
  File "/Users/hugo/github/black/src/black/__init__.py", line 986, in format_str
    for line in transform_line(
  File "/Users/hugo/github/black/src/black/__init__.py", line 2740, in transform_line
    result.extend(
  File "/Users/hugo/github/black/src/black/__init__.py", line 2734, in transform_line
    for transformed_line in transform(line, features):
  File "/Users/hugo/github/black/src/black/__init__.py", line 2843, in __call__
    for line_result in self.do_transform(line, string_idx):
  File "/Users/hugo/github/black/src/black/__init__.py", line 3363, in do_transform
    append_leaves(new_line, line, LL[: string_idx - 1])
  File "/Users/hugo/github/black/src/black/__init__.py", line 4649, in append_leaves
    new_line.append(new_leaf)
  File "/Users/hugo/github/black/src/black/__init__.py", line 1434, in append
    self.bracket_tracker.mark(leaf)
  File "/Users/hugo/github/black/src/black/__init__.py", line 1300, in mark
    opening_bracket = self.bracket_match.pop((self.depth, leaf.type))
KeyError: (-1, 8)

This file now formats without errors with master.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

quodlibetor picture quodlibetor  ·  3Comments

asottile picture asottile  ·  3Comments

JelleZijlstra picture JelleZijlstra  ·  3Comments

nottrobin picture nottrobin  ·  3Comments

dgnsrekt picture dgnsrekt  ·  3Comments