Sourcing python-remove-tests-dir-hook Sourcing python-catch-conflicts-hook.sh Sourcing python-remove-bin-bytecode-hook.sh Sourcing pypa-build-hook Using pypaBuildPhase Sourcing python-runtime-deps-check-hook Using pythonRuntimeDepsCheckHook Sourcing pypa-install-hook Using pypaInstallPhase Sourcing python-imports-check-hook.sh Using pythonImportsCheckPhase Sourcing python-namespaces-hook Sourcing python-catch-conflicts-hook.sh Sourcing pytest-check-hook Running phase: unpackPhase unpacking source archive /nix/store/552jmv68yc0sddhfj1kl99z1pi8whxm0-kmap-cli source root is kmap-cli setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "kmap-cli/tests/test_kmap_cli.py" Running phase: patchPhase Running phase: updateAutotoolsGnuConfigScriptsPhase Running phase: configurePhase no configure script, doing nothing Running phase: buildPhase Executing pypaBuildPhase Creating a wheel... pypa build flags: --no-isolation --outdir dist/ --wheel * Getting build dependencies for wheel... * Building wheel... Successfully built kmap_cli-0.1.0-py3-none-any.whl Finished creating a wheel... Finished executing pypaBuildPhase Running phase: pythonRuntimeDepsCheckHook Executing pythonRuntimeDepsCheck Checking runtime dependencies for kmap_cli-0.1.0-py3-none-any.whl Finished executing pythonRuntimeDepsCheck Running phase: installPhase Executing pypaInstallPhase Successfully installed kmap_cli-0.1.0-py3-none-any.whl Finished executing pypaInstallPhase Running phase: pythonOutputDistPhase Executing pythonOutputDistPhase Finished executing pythonOutputDistPhase Running phase: fixupPhase shrinking RPATHs of ELF executables and libraries in /nix/store/6y6ri38j7mzsnz1iqk96nsijn6cj7gl1-kmap-cli-0.1.0 checking for references to /build/ in /nix/store/6y6ri38j7mzsnz1iqk96nsijn6cj7gl1-kmap-cli-0.1.0... patching script interpreter paths in /nix/store/6y6ri38j7mzsnz1iqk96nsijn6cj7gl1-kmap-cli-0.1.0 stripping (with command strip and flags -S -p) in /nix/store/6y6ri38j7mzsnz1iqk96nsijn6cj7gl1-kmap-cli-0.1.0/lib /nix/store/6y6ri38j7mzsnz1iqk96nsijn6cj7gl1-kmap-cli-0.1.0/bin shrinking RPATHs of ELF executables and libraries in /nix/store/gv6skaqssd24qvdkaaynfd2rz1dzszzg-kmap-cli-0.1.0-dist checking for references to /build/ in /nix/store/gv6skaqssd24qvdkaaynfd2rz1dzszzg-kmap-cli-0.1.0-dist... patching script interpreter paths in /nix/store/gv6skaqssd24qvdkaaynfd2rz1dzszzg-kmap-cli-0.1.0-dist Rewriting #!/nix/store/gxzhl7aaiid7zp3y47jqqiq7zg5mqpwp-python3-3.14.6/bin/python3.14 to #!/nix/store/gxzhl7aaiid7zp3y47jqqiq7zg5mqpwp-python3-3.14.6 wrapping `/nix/store/6y6ri38j7mzsnz1iqk96nsijn6cj7gl1-kmap-cli-0.1.0/bin/kmap-cli'... Executing pythonRemoveTestsDir Finished executing pythonRemoveTestsDir Running phase: installCheckPhase EXE001 Shebang is present but file is not executable --> kmap_cli.py:1:1 | 1 | #!/usr/bin/env python3 | ^^^^^^^^^^^^^^^^^^^^^^ 2 | # Copyright (c) 2026 Seungwon Lee 3 | # SPDX-License-Identifier: MIT | UP022 Prefer `capture_output` over sending `stdout` and `stderr` to `PIPE` --> kmap_cli.py:151:18 | 149 | return None 150 | try: 151 | result = subprocess.run( | __________________^ 152 | | args, 153 | | check=True, 154 | | stdout=subprocess.PIPE, 155 | | stderr=subprocess.PIPE, 156 | | text=True, 157 | | timeout=10, 158 | | ) | |_________^ 159 | except (subprocess.SubprocessError, OSError) as error: 160 | raise ConfigError(f"secret command failed: {error}") from error | help: Replace with `capture_output` keyword argument RUF100 [*] Unused `noqa` directive (non-enabled: `S310`) --> kmap_cli.py:437:91 | 435 | headers["Content-Type"] = "application/json" 436 | data = json.dumps(body).encode("utf-8") 437 | request = urllib.request.Request(url, data=data, headers=headers, method=method) # noqa: S310 | ^^^^^^^^^^^^ 438 | try: 439 | with urllib.request.urlopen(request, timeout=15) as response: # noqa: S310 | help: Remove unused `noqa` directive | 436 | data = json.dumps(body).encode("utf-8") - request = urllib.request.Request(url, data=data, headers=headers, method=method) # noqa: S310 437 + request = urllib.request.Request(url, data=data, headers=headers, method=method) 438 | try: | RUF100 [*] Unused `noqa` directive (non-enabled: `S310`) --> kmap_cli.py:439:76 | 437 | request = urllib.request.Request(url, data=data, headers=headers, method=method) # noqa: S310 438 | try: 439 | with urllib.request.urlopen(request, timeout=15) as response: # noqa: S310 | ^^^^^^^^^^^^ 440 | parsed = json.loads(response.read().decode("utf-8")) 441 | except urllib.error.HTTPError as error: | help: Remove unused `noqa` directive | 438 | try: - with urllib.request.urlopen(request, timeout=15) as response: # noqa: S310 439 + with urllib.request.urlopen(request, timeout=15) as response: 440 | parsed = json.loads(response.read().decode("utf-8")) | PYI041 [*] Use `float` instead of `int | float` --> kmap_cli.py:713:29 | 713 | def format_distance(meters: int | float) -> str: | ^^^^^^^^^^^ 714 | if meters < 1000: 715 | return f"{meters:.0f} m" | help: Remove redundant type | 712 | - def format_distance(meters: int | float) -> str: 713 + def format_distance(meters: float) -> str: 714 | if meters < 1000: | RUF007 Prefer `itertools.pairwise()` over `zip()` when iterating over successive pairs --> kmap_cli.py:886:32 | 884 | segments: list[dict[str, object]] = [] 885 | has_routes = False 886 | for origin, destination in zip(places, places[1:]): | ^^^ 887 | routes = client.transit_routes( 888 | Point(origin.x, origin.y), | help: Replace `zip()` with `itertools.pairwise()` Found 6 errors. [*] 3 fixable with the `--fix` option (2 hidden fixes can be enabled with the `--unsafe-fixes` option).