these 3 derivations will be built: /nix/store/33j846xprv7700ffcq2l7whn03zfcclc-python3-3.14.6-env.drv /nix/store/d7hjc3x860y80rjrlw1npf3fjib3b7s2-drawio-headless-30.2.6.drv /nix/store/ss6dp0sd2qzkw0bzm6zd53m3qn0i9iwf-drawio-cli-0.1.0.drv these 13 paths will be fetched (195.5 MiB download, 552.5 MiB unpacked): /nix/store/8a2mz57nxvmz4a6v4s8q60s2xxfpsapc-drawio-30.2.6 /nix/store/d88cy47qigxdighyfyz4fjkwh8777r8j-electron-41.10.3 /nix/store/cn0bd3lyc3zbggms10qyjnvzgh58p3kb-electron-unwrapped-41.10.3 /nix/store/s8b3wp8chfc0v7jpm5aqq0f8ad204wc5-fonts.conf /nix/store/r2p96kjri716z0lw2d4br3jn5hvgp659-gd-2.3.3 /nix/store/kz5ahranvr1248qln01890wfgcjj3ll9-getopt-1.1.6 /nix/store/04yj0f2x0fx9nb1ncw8n5afw2n1kg0g1-ghostscript-with-X-10.07.1-fonts /nix/store/cn7ik6k9az3jzjdad0hbn1awfa2n3cla-graphviz-15.1.0 /nix/store/xr8ly21qx9474x21b7yapqs9sd7g1af4-gts-0.7.6 /nix/store/dcspdlj2cphxd8siphk3jxyny5azjv5w-libxpm-3.5.19 /nix/store/4wf1zyk828569zzahahjb5wwj2063x4a-ncompress-5.0 /nix/store/90dwfpy19mxi536v98cjg3bibc3lnjgb-speech-dispatcher-0.12.1 /nix/store/5nzif4nmqzw0h5k9s8wjlbkqb645z14w-xvfb-run-1+g87f6705 building '/nix/store/33j846xprv7700ffcq2l7whn03zfcclc-python3-3.14.6-env.drv' python3-3.14.6-env> structuredAttrs is enabled python3-3.14.6-env> created 223 symlinks in user environment building '/nix/store/d7hjc3x860y80rjrlw1npf3fjib3b7s2-drawio-headless-30.2.6.drv' building '/nix/store/ss6dp0sd2qzkw0bzm6zd53m3qn0i9iwf-drawio-cli-0.1.0.drv' drawio-cli-0.1.0> Running phase: unpackPhase drawio-cli-0.1.0> unpacking source archive /nix/store/nm39xalnhg923wqngvn5xvz7gv8hplqg-drawio-cli drawio-cli-0.1.0> source root is drawio-cli drawio-cli-0.1.0> Running phase: patchPhase drawio-cli-0.1.0> Running phase: updateAutotoolsGnuConfigScriptsPhase drawio-cli-0.1.0> Running phase: configurePhase drawio-cli-0.1.0> no configure script, doing nothing drawio-cli-0.1.0> Running phase: buildPhase drawio-cli-0.1.0> no Makefile or custom buildPhase, doing nothing drawio-cli-0.1.0> Running phase: checkPhase drawio-cli-0.1.0> 21 files already formatted drawio-cli-0.1.0> EXE001 Shebang is present but file is not executable drawio-cli-0.1.0> --> index-builder/update-baseline.py:1:1 drawio-cli-0.1.0> | drawio-cli-0.1.0> 1 | #!/usr/bin/env python3 drawio-cli-0.1.0> | ^^^^^^^^^^^^^^^^^^^^^^ drawio-cli-0.1.0> 2 | from __future__ import annotations drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> TRY004 Prefer `TypeError` exception for invalid type drawio-cli-0.1.0> --> index-builder/update-baseline.py:20:9 drawio-cli-0.1.0> | drawio-cli-0.1.0> 18 | value = data.get(key) drawio-cli-0.1.0> 19 | if not isinstance(value, dict): drawio-cli-0.1.0> 20 | raise ValueError(f"manifest {key!r} must be an object") drawio-cli-0.1.0> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ drawio-cli-0.1.0> 21 | return value drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> TRY004 Prefer `TypeError` exception for invalid type drawio-cli-0.1.0> --> index-builder/update-baseline.py:27:9 drawio-cli-0.1.0> | drawio-cli-0.1.0> 25 | value = data.get(key) drawio-cli-0.1.0> 26 | if not isinstance(value, int) or isinstance(value, bool): drawio-cli-0.1.0> 27 | raise ValueError(f"manifest {key!r} must be an integer") drawio-cli-0.1.0> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ drawio-cli-0.1.0> 28 | if positive and value <= 0: drawio-cli-0.1.0> 29 | raise ValueError(f"manifest {key!r} must be positive") drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> TRY004 Prefer `TypeError` exception for invalid type drawio-cli-0.1.0> --> index-builder/update-baseline.py:88:9 drawio-cli-0.1.0> | drawio-cli-0.1.0> 86 | value = json.loads(path.read_text(encoding="utf-8")) drawio-cli-0.1.0> 87 | if not isinstance(value, dict): drawio-cli-0.1.0> 88 | raise ValueError(f"{path} must contain a JSON object") drawio-cli-0.1.0> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ drawio-cli-0.1.0> 89 | return value drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> RUF100 [*] Unused `noqa` directive (non-enabled: `S603`) drawio-cli-0.1.0> --> src/drawio_cli/desktop.py:24:28 drawio-cli-0.1.0> | drawio-cli-0.1.0> 22 | drawio_bin = drawio or os.environ.get("DRAWIO_CLI_DRAWIO", "drawio") drawio-cli-0.1.0> 23 | try: drawio-cli-0.1.0> 24 | subprocess.Popen( # noqa: S603 drawio-cli-0.1.0> | ^^^^^^^^^^^^ drawio-cli-0.1.0> 25 | [drawio_bin, str(source)], drawio-cli-0.1.0> 26 | stdin=subprocess.DEVNULL, drawio-cli-0.1.0> | drawio-cli-0.1.0> help: Remove unused `noqa` directive drawio-cli-0.1.0> | drawio-cli-0.1.0> 23 | try: drawio-cli-0.1.0> - subprocess.Popen( # noqa: S603 drawio-cli-0.1.0> 24 + subprocess.Popen( drawio-cli-0.1.0> 25 | [drawio_bin, str(source)], drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> TRY004 Prefer `TypeError` exception for invalid type drawio-cli-0.1.0> --> src/drawio_cli/layout.py:83:9 drawio-cli-0.1.0> | drawio-cli-0.1.0> 81 | data = json.load(handle) drawio-cli-0.1.0> 82 | if not isinstance(data, dict): drawio-cli-0.1.0> 83 | raise ValueError("graph JSON must be an object") drawio-cli-0.1.0> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ drawio-cli-0.1.0> 84 | graph_direction = direction or str(data.get("direction", "TB")) drawio-cli-0.1.0> 85 | if graph_direction not in {"TB", "LR"}: drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> TRY004 Prefer `TypeError` exception for invalid type drawio-cli-0.1.0> --> src/drawio_cli/layout.py:91:9 drawio-cli-0.1.0> | drawio-cli-0.1.0> 89 | edges_raw = data.get("edges", []) drawio-cli-0.1.0> 90 | if not isinstance(nodes_raw, list) or not isinstance(edges_raw, list): drawio-cli-0.1.0> 91 | raise ValueError("nodes and edges must be lists") drawio-cli-0.1.0> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ drawio-cli-0.1.0> 92 | drawio-cli-0.1.0> 93 | nodes: list[Node] = [] drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> TRY004 Prefer `TypeError` exception for invalid type drawio-cli-0.1.0> --> src/drawio_cli/layout.py:97:13 drawio-cli-0.1.0> | drawio-cli-0.1.0> 95 | for raw in nodes_raw: drawio-cli-0.1.0> 96 | if not isinstance(raw, dict): drawio-cli-0.1.0> 97 | raise ValueError("node must be an object") drawio-cli-0.1.0> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ drawio-cli-0.1.0> 98 | node_id = str(raw.get("id", "")) drawio-cli-0.1.0> 99 | if not node_id or node_id in {"0", "1"}: drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> TRY004 Prefer `TypeError` exception for invalid type drawio-cli-0.1.0> --> src/drawio_cli/layout.py:129:13 drawio-cli-0.1.0> | drawio-cli-0.1.0> 127 | for index, raw in enumerate(edges_raw): drawio-cli-0.1.0> 128 | if not isinstance(raw, dict): drawio-cli-0.1.0> 129 | raise ValueError("edge must be an object") drawio-cli-0.1.0> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ drawio-cli-0.1.0> 130 | source = str(raw.get("source", "")) drawio-cli-0.1.0> 131 | target = str(raw.get("target", "")) drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> UP022 Prefer `capture_output` over sending `stdout` and `stderr` to `PIPE` drawio-cli-0.1.0> --> src/drawio_cli/layout.py:243:18 drawio-cli-0.1.0> | drawio-cli-0.1.0> 241 | dot_path = Path(tmp) / "graph.dot" drawio-cli-0.1.0> 242 | dot_path.write_text(source, encoding="utf-8") drawio-cli-0.1.0> 243 | result = subprocess.run( drawio-cli-0.1.0> | __________________^ drawio-cli-0.1.0> 244 | | [dot, "-Tplain", str(dot_path)], drawio-cli-0.1.0> 245 | | check=False, drawio-cli-0.1.0> 246 | | text=True, drawio-cli-0.1.0> 247 | | stdout=subprocess.PIPE, drawio-cli-0.1.0> 248 | | stderr=subprocess.PIPE, drawio-cli-0.1.0> 249 | | ) drawio-cli-0.1.0> | |_________^ drawio-cli-0.1.0> 250 | if result.returncode != 0: drawio-cli-0.1.0> 251 | raise RuntimeError(f"dot failed: {result.stderr.strip()}") drawio-cli-0.1.0> | drawio-cli-0.1.0> help: Replace with `capture_output` keyword argument drawio-cli-0.1.0> drawio-cli-0.1.0> UP022 Prefer `capture_output` over sending `stdout` and `stderr` to `PIPE` drawio-cli-0.1.0> --> src/drawio_cli/render.py:63:18 drawio-cli-0.1.0> | drawio-cli-0.1.0> 61 | transparent=transparent, drawio-cli-0.1.0> 62 | ) drawio-cli-0.1.0> 63 | result = subprocess.run( drawio-cli-0.1.0> | __________________^ drawio-cli-0.1.0> 64 | | cmd, drawio-cli-0.1.0> 65 | | check=False, drawio-cli-0.1.0> 66 | | text=True, drawio-cli-0.1.0> 67 | | stdout=subprocess.PIPE, drawio-cli-0.1.0> 68 | | stderr=subprocess.PIPE, drawio-cli-0.1.0> 69 | | env=_render_env(Path(tmp)), drawio-cli-0.1.0> 70 | | ) drawio-cli-0.1.0> | |_________^ drawio-cli-0.1.0> 71 | if result.returncode != 0: drawio-cli-0.1.0> 72 | raise RuntimeError( drawio-cli-0.1.0> | drawio-cli-0.1.0> help: Replace with `capture_output` keyword argument drawio-cli-0.1.0> drawio-cli-0.1.0> TRY004 Prefer `TypeError` exception for invalid type drawio-cli-0.1.0> --> src/drawio_cli/shapes.py:113:9 drawio-cli-0.1.0> | drawio-cli-0.1.0> 111 | rows = raw.get("entries", raw) if isinstance(raw, dict) else raw drawio-cli-0.1.0> 112 | if not isinstance(rows, list): drawio-cli-0.1.0> 113 | raise ValueError("shape index must contain list or entries list") drawio-cli-0.1.0> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ drawio-cli-0.1.0> 114 | entries: list[ShapeEntry] = [] drawio-cli-0.1.0> 115 | for index, row in enumerate(rows): drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> TRY004 Prefer `TypeError` exception for invalid type drawio-cli-0.1.0> --> src/drawio_cli/shapes.py:117:13 drawio-cli-0.1.0> | drawio-cli-0.1.0> 115 | for index, row in enumerate(rows): drawio-cli-0.1.0> 116 | if not isinstance(row, dict): drawio-cli-0.1.0> 117 | raise ValueError(f"shape index entry {index} must be an object") drawio-cli-0.1.0> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ drawio-cli-0.1.0> 118 | entries.append(ShapeEntry.from_json(row)) drawio-cli-0.1.0> 119 | return ShapeIndex(tuple(entries)) drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> RUF007 Prefer `itertools.pairwise()` over `zip()` when iterating over successive pairs drawio-cli-0.1.0> --> src/drawio_cli/validate.py:167:23 drawio-cli-0.1.0> | drawio-cli-0.1.0> 165 | corners = [(x, y), (x + width, y), (x + width, y + height), (x, y + height)] drawio-cli-0.1.0> 166 | borders = list(zip(corners, [*corners[1:], corners[0]])) drawio-cli-0.1.0> 167 | for start, end in zip(points, points[1:]): drawio-cli-0.1.0> | ^^^ drawio-cli-0.1.0> 168 | if _point_in_rect(start, box) or _point_in_rect(end, box): drawio-cli-0.1.0> 169 | return True drawio-cli-0.1.0> | drawio-cli-0.1.0> help: Replace `zip()` with `itertools.pairwise()` drawio-cli-0.1.0> drawio-cli-0.1.0> RUF007 Prefer `itertools.pairwise()` over `zip()` when iterating over successive pairs drawio-cli-0.1.0> --> src/drawio_cli/validate.py:181:31 drawio-cli-0.1.0> | drawio-cli-0.1.0> 179 | return any( drawio-cli-0.1.0> 180 | _segments_cross(a_start, a_end, b_start, b_end) drawio-cli-0.1.0> 181 | for a_start, a_end in zip(a, a[1:]) drawio-cli-0.1.0> | ^^^ drawio-cli-0.1.0> 182 | for b_start, b_end in zip(b, b[1:]) drawio-cli-0.1.0> 183 | ) drawio-cli-0.1.0> | drawio-cli-0.1.0> help: Replace `zip()` with `itertools.pairwise()` drawio-cli-0.1.0> drawio-cli-0.1.0> RUF007 Prefer `itertools.pairwise()` over `zip()` when iterating over successive pairs drawio-cli-0.1.0> --> src/drawio_cli/validate.py:182:31 drawio-cli-0.1.0> | drawio-cli-0.1.0> 180 | _segments_cross(a_start, a_end, b_start, b_end) drawio-cli-0.1.0> 181 | for a_start, a_end in zip(a, a[1:]) drawio-cli-0.1.0> 182 | for b_start, b_end in zip(b, b[1:]) drawio-cli-0.1.0> | ^^^ drawio-cli-0.1.0> 183 | ) drawio-cli-0.1.0> | drawio-cli-0.1.0> help: Replace `zip()` with `itertools.pairwise()` drawio-cli-0.1.0> drawio-cli-0.1.0> I001 [*] Import block is un-sorted or un-formatted drawio-cli-0.1.0> --> tests/test_cli.py:1:1 drawio-cli-0.1.0> | drawio-cli-0.1.0> 1 | / from __future__ import annotations drawio-cli-0.1.0> 2 | | drawio-cli-0.1.0> 3 | | import json drawio-cli-0.1.0> 4 | | from pathlib import Path drawio-cli-0.1.0> 5 | | drawio-cli-0.1.0> 6 | | import pytest drawio-cli-0.1.0> 7 | | from drawio_cli.cli import build_parser, main drawio-cli-0.1.0> 8 | | from drawio_cli.document import DrawioDocument, element_to_text drawio-cli-0.1.0> | |_______________________________________________________________^ drawio-cli-0.1.0> 9 | drawio-cli-0.1.0> 10 | FIXTURES = Path(__file__).parent / "fixtures" drawio-cli-0.1.0> | drawio-cli-0.1.0> help: Organize imports drawio-cli-0.1.0> | drawio-cli-0.1.0> 6 | import pytest drawio-cli-0.1.0> 7 + drawio-cli-0.1.0> 8 | from drawio_cli.cli import build_parser, main drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> I001 [*] Import block is un-sorted or un-formatted drawio-cli-0.1.0> --> tests/test_desktop.py:1:1 drawio-cli-0.1.0> | drawio-cli-0.1.0> 1 | / from __future__ import annotations drawio-cli-0.1.0> 2 | | drawio-cli-0.1.0> 3 | | import subprocess drawio-cli-0.1.0> 4 | | from pathlib import Path drawio-cli-0.1.0> 5 | | from unittest.mock import Mock, patch drawio-cli-0.1.0> 6 | | drawio-cli-0.1.0> 7 | | import pytest drawio-cli-0.1.0> 8 | | from drawio_cli.desktop import _has_gui_session, handoff_to_desktop drawio-cli-0.1.0> | |___________________________________________________________________^ drawio-cli-0.1.0> help: Organize imports drawio-cli-0.1.0> | drawio-cli-0.1.0> 7 | import pytest drawio-cli-0.1.0> 8 + drawio-cli-0.1.0> 9 | from drawio_cli.desktop import _has_gui_session, handoff_to_desktop drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> I001 [*] Import block is un-sorted or un-formatted drawio-cli-0.1.0> --> tests/test_document.py:1:1 drawio-cli-0.1.0> | drawio-cli-0.1.0> 1 | / from __future__ import annotations drawio-cli-0.1.0> 2 | | drawio-cli-0.1.0> 3 | | import base64 drawio-cli-0.1.0> 4 | | import urllib.parse drawio-cli-0.1.0> 5 | | import xml.etree.ElementTree as ET drawio-cli-0.1.0> 6 | | import zlib drawio-cli-0.1.0> 7 | | from pathlib import Path drawio-cli-0.1.0> 8 | | drawio-cli-0.1.0> 9 | | import pytest drawio-cli-0.1.0> 10 | | from drawio_cli import xmlsafe drawio-cli-0.1.0> 11 | | from drawio_cli.cli import main drawio-cli-0.1.0> 12 | | from drawio_cli.document import DrawioDocument, sha256_file drawio-cli-0.1.0> | |___________________________________________________________^ drawio-cli-0.1.0> 13 | drawio-cli-0.1.0> 14 | FIXTURES = Path(__file__).parent / "fixtures" drawio-cli-0.1.0> | drawio-cli-0.1.0> help: Organize imports drawio-cli-0.1.0> | drawio-cli-0.1.0> 9 | import pytest drawio-cli-0.1.0> 10 + drawio-cli-0.1.0> 11 | from drawio_cli import xmlsafe drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> I001 [*] Import block is un-sorted or un-formatted drawio-cli-0.1.0> --> tests/test_layout.py:1:1 drawio-cli-0.1.0> | drawio-cli-0.1.0> 1 | / from __future__ import annotations drawio-cli-0.1.0> 2 | | drawio-cli-0.1.0> 3 | | import json drawio-cli-0.1.0> 4 | | from pathlib import Path drawio-cli-0.1.0> 5 | | drawio-cli-0.1.0> 6 | | import pytest drawio-cli-0.1.0> 7 | | from drawio_cli.document import DrawioDocument drawio-cli-0.1.0> 8 | | from drawio_cli.layout import layout_graph drawio-cli-0.1.0> 9 | | from drawio_cli.validate import validate_document drawio-cli-0.1.0> | |_________________________________________________^ drawio-cli-0.1.0> help: Organize imports drawio-cli-0.1.0> | drawio-cli-0.1.0> 6 | import pytest drawio-cli-0.1.0> 7 + drawio-cli-0.1.0> 8 | from drawio_cli.document import DrawioDocument drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> I001 [*] Import block is un-sorted or un-formatted drawio-cli-0.1.0> --> tests/test_render.py:1:1 drawio-cli-0.1.0> | drawio-cli-0.1.0> 1 | / from __future__ import annotations drawio-cli-0.1.0> 2 | | drawio-cli-0.1.0> 3 | | import struct drawio-cli-0.1.0> 4 | | import zlib drawio-cli-0.1.0> 5 | | from pathlib import Path drawio-cli-0.1.0> 6 | | from unittest.mock import patch drawio-cli-0.1.0> 7 | | drawio-cli-0.1.0> 8 | | import pytest drawio-cli-0.1.0> 9 | | from drawio_cli.png import PNG_MAGIC, assert_png, repair_png_iend drawio-cli-0.1.0> 10 | | from drawio_cli.render import ( drawio-cli-0.1.0> 11 | | _render_command, drawio-cli-0.1.0> 12 | | _render_env, drawio-cli-0.1.0> 13 | | _validate_render_output, drawio-cli-0.1.0> 14 | | render_diagram, drawio-cli-0.1.0> 15 | | ) drawio-cli-0.1.0> | |_^ drawio-cli-0.1.0> 16 | drawio-cli-0.1.0> 17 | FIXTURES = Path(__file__).parent / "fixtures" drawio-cli-0.1.0> | drawio-cli-0.1.0> help: Organize imports drawio-cli-0.1.0> | drawio-cli-0.1.0> 8 | import pytest drawio-cli-0.1.0> 9 + drawio-cli-0.1.0> 10 | from drawio_cli.png import PNG_MAGIC, assert_png, repair_png_iend drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> I001 [*] Import block is un-sorted or un-formatted drawio-cli-0.1.0> --> tests/test_shapes.py:1:1 drawio-cli-0.1.0> | drawio-cli-0.1.0> 1 | / from __future__ import annotations drawio-cli-0.1.0> 2 | | drawio-cli-0.1.0> 3 | | import gzip drawio-cli-0.1.0> 4 | | import json drawio-cli-0.1.0> 5 | | from pathlib import Path drawio-cli-0.1.0> 6 | | drawio-cli-0.1.0> 7 | | import pytest drawio-cli-0.1.0> 8 | | from drawio_cli.shapes import ShapeIndex, load_index, search_shapes, soundex drawio-cli-0.1.0> | |____________________________________________________________________________^ drawio-cli-0.1.0> help: Organize imports drawio-cli-0.1.0> | drawio-cli-0.1.0> 7 | import pytest drawio-cli-0.1.0> 8 + drawio-cli-0.1.0> 9 | from drawio_cli.shapes import ShapeIndex, load_index, search_shapes, soundex drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> I001 [*] Import block is un-sorted or un-formatted drawio-cli-0.1.0> --> tests/test_validate.py:1:1 drawio-cli-0.1.0> | drawio-cli-0.1.0> 1 | / from __future__ import annotations drawio-cli-0.1.0> 2 | | drawio-cli-0.1.0> 3 | | from pathlib import Path drawio-cli-0.1.0> 4 | | drawio-cli-0.1.0> 5 | | import pytest drawio-cli-0.1.0> 6 | | from drawio_cli.document import DrawioDocument drawio-cli-0.1.0> 7 | | from drawio_cli.validate import validate_document drawio-cli-0.1.0> | |_________________________________________________^ drawio-cli-0.1.0> 8 | drawio-cli-0.1.0> 9 | FIXTURES = Path(__file__).parent / "fixtures" drawio-cli-0.1.0> | drawio-cli-0.1.0> help: Organize imports drawio-cli-0.1.0> | drawio-cli-0.1.0> 5 | import pytest drawio-cli-0.1.0> 6 + drawio-cli-0.1.0> 7 | from drawio_cli.document import DrawioDocument drawio-cli-0.1.0> | drawio-cli-0.1.0> drawio-cli-0.1.0> Found 23 errors. drawio-cli-0.1.0> [*] 8 fixable with the `--fix` option (5 hidden fixes can be enabled with the `--unsafe-fixes` option). error: Cannot build '/nix/store/ss6dp0sd2qzkw0bzm6zd53m3qn0i9iwf-drawio-cli-0.1.0.drv'. Reason: builder failed with exit code 1. Output paths: /nix/store/98gb5z6m5hph4s192ff57bk4dv4w4z3c-drawio-cli-0.1.0 Last 25 log lines: > | > > I001 [*] Import block is un-sorted or un-formatted > --> tests/test_validate.py:1:1 > | > 1 | / from __future__ import annotations > 2 | | > 3 | | from pathlib import Path > 4 | | > 5 | | import pytest > 6 | | from drawio_cli.document import DrawioDocument > 7 | | from drawio_cli.validate import validate_document > | |_________________________________________________^ > 8 | > 9 | FIXTURES = Path(__file__).parent / "fixtures" > | > help: Organize imports > | > 5 | import pytest > 6 + > 7 | from drawio_cli.document import DrawioDocument > | > > Found 23 errors. > [*] 8 fixable with the `--fix` option (5 hidden fixes can be enabled with the `--unsafe-fixes` option). For full logs, run: nix log /nix/store/ss6dp0sd2qzkw0bzm6zd53m3qn0i9iwf-drawio-cli-0.1.0.drv