these 4 derivations will be built: /nix/store/jyxlsa3b6x36924c3glk8sx7d3wrk50r-python3.14-types-icalendar-6.3.2.20260223.drv /nix/store/y9mqp15ydycsc8jhb2lvw4jw1gm96wg9-treefmt.toml.drv /nix/store/m0p70fxqq81g09zfamjqzlglhc1c19ib-treefmt.drv /nix/store/mjl1rd338s5py04nwvzimn1dckp36hjk-treefmt-check.drv these 17 paths will be fetched (3.5 MiB download, 20.6 MiB unpacked): /nix/store/mc2ifxz3zl7777sx7gvaky8q2w9dlc14-prettier-3.8.3 /nix/store/sdh1n4jl3a14nqibi72xdlwfip6kghjl-python-metadata-check-hook.sh /nix/store/dszlgxvrcqbi9gqv2agjhj8dfc5sz92h-python3-3.14.6-env /nix/store/lfym45gm9blyr4vk5ifbb6p3jmns7yxc-python3.14-beautifulsoup4-4.15.0 /nix/store/542y62d4329p74iyjxcrvlnwr5i6x2aj-python3.14-icalendar-7.2.0 /nix/store/w31kw0im6d4lmn12llsp80rqh4k97gn7-python3.14-pexpect-4.9.0 /nix/store/6pz3qf9xpwc68849005slsx3waphib1b-python3.14-ptyprocess-0.7.0 /nix/store/abk9lg378m6xryk3cj21avrww5cxbv1m-python3.14-python-dateutil-2.9.0.post0 /nix/store/dcm56c4jpy6q4d5h6k2c3v3y21amlbr7-python3.14-six-1.17.0 /nix/store/x2zc2mb9l3gw2r1v1r1vxqk3m6jzcsgg-python3.14-soupsieve-2.8.4 /nix/store/z2d1n3xg2s8divw2i7bkhizr5p23ribw-python3.14-types-beautifulsoup4-4.12.0.20250516 /nix/store/rp475fqq1q7w0vgc0brjjfxmmrrz2wwn-python3.14-types-html5lib-1.1.11.20260518 /nix/store/8x0niklkwglvsc5nsvsh1mlqx0zxdwmj-python3.14-types-python-dateutil-2.9.0.20251115 /nix/store/il6sdm1wlad8glcmai5lnm4r0xvnks0n-python3.14-types-pytz-2026.1.1.20260304 /nix/store/a6jxnxm5mns4fz0smjgcgagwksxqb8c1-python3.14-types-webencodings-0.5.0.20260408 /nix/store/zqnli24s1idrygb85w3vhvrh76j8x8kq-python3.14-tzdata-2026.3 /nix/store/1nyz5ncnnx962ygs7ycsgxfd8m1izcnf-python3.14-websockets-16.1 building '/nix/store/jyxlsa3b6x36924c3glk8sx7d3wrk50r-python3.14-types-icalendar-6.3.2.20260223.drv' on 'ssh-ng://customer@mac02' building '/nix/store/jyxlsa3b6x36924c3glk8sx7d3wrk50r-python3.14-types-icalendar-6.3.2.20260223.drv' python3.14-types-icalendar-6.3.2.20260223> Sourcing python-remove-tests-dir-hook python3.14-types-icalendar-6.3.2.20260223> Sourcing python-catch-conflicts-hook.sh python3.14-types-icalendar-6.3.2.20260223> Sourcing python-remove-bin-bytecode-hook.sh python3.14-types-icalendar-6.3.2.20260223> Sourcing pypa-build-hook python3.14-types-icalendar-6.3.2.20260223> Using pypaBuildPhase python3.14-types-icalendar-6.3.2.20260223> Sourcing python-runtime-deps-check-hook python3.14-types-icalendar-6.3.2.20260223> Using pythonRuntimeDepsCheckHook python3.14-types-icalendar-6.3.2.20260223> Sourcing pypa-install-hook python3.14-types-icalendar-6.3.2.20260223> Using pypaInstallPhase python3.14-types-icalendar-6.3.2.20260223> Sourcing python-imports-check-hook.sh python3.14-types-icalendar-6.3.2.20260223> Using pythonImportsCheckPhase python3.14-types-icalendar-6.3.2.20260223> Sourcing python-metadata-check-hook.sh python3.14-types-icalendar-6.3.2.20260223> Using pythonMetadataCheckPhase python3.14-types-icalendar-6.3.2.20260223> Sourcing python-namespaces-hook python3.14-types-icalendar-6.3.2.20260223> Sourcing python-catch-conflicts-hook.sh python3.14-types-icalendar-6.3.2.20260223> Running phase: unpackPhase python3.14-types-icalendar-6.3.2.20260223> unpacking source archive /nix/store/00fk7mb6fxfrnzwnzw8p94b97ib2ab6d-types_icalendar-6.3.2.20260223.tar.gz python3.14-types-icalendar-6.3.2.20260223> source root is types_icalendar-6.3.2.20260223 python3.14-types-icalendar-6.3.2.20260223> setting SOURCE_DATE_EPOCH to timestamp 1771819905 of file "types_icalendar-6.3.2.20260223/setup.cfg" python3.14-types-icalendar-6.3.2.20260223> Running phase: patchPhase python3.14-types-icalendar-6.3.2.20260223> Running phase: updateAutotoolsGnuConfigScriptsPhase python3.14-types-icalendar-6.3.2.20260223> Running phase: configurePhase python3.14-types-icalendar-6.3.2.20260223> no configure script, doing nothing python3.14-types-icalendar-6.3.2.20260223> Running phase: buildPhase python3.14-types-icalendar-6.3.2.20260223> Executing pypaBuildPhase python3.14-types-icalendar-6.3.2.20260223> Creating a wheel... python3.14-types-icalendar-6.3.2.20260223> pypa build flags: --no-isolation --outdir dist/ --wheel python3.14-types-icalendar-6.3.2.20260223> * Getting build dependencies for wheel... python3.14-types-icalendar-6.3.2.20260223> running egg_info python3.14-types-icalendar-6.3.2.20260223> writing types_icalendar.egg-info/PKG-INFO python3.14-types-icalendar-6.3.2.20260223> writing dependency_links to types_icalendar.egg-info/dependency_links.txt python3.14-types-icalendar-6.3.2.20260223> writing requirements to types_icalendar.egg-info/requires.txt python3.14-types-icalendar-6.3.2.20260223> writing top-level names to types_icalendar.egg-info/top_level.txt python3.14-types-icalendar-6.3.2.20260223> reading manifest file 'types_icalendar.egg-info/SOURCES.txt' python3.14-types-icalendar-6.3.2.20260223> reading manifest template 'MANIFEST.in' python3.14-types-icalendar-6.3.2.20260223> adding license file 'LICENSE' python3.14-types-icalendar-6.3.2.20260223> writing manifest file 'types_icalendar.egg-info/SOURCES.txt' python3.14-types-icalendar-6.3.2.20260223> * Building wheel... python3.14-types-icalendar-6.3.2.20260223> running bdist_wheel python3.14-types-icalendar-6.3.2.20260223> running build python3.14-types-icalendar-6.3.2.20260223> running build_py python3.14-types-icalendar-6.3.2.20260223> creating build/lib/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/version.pyi -> build/lib/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/prop.pyi -> build/lib/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/error.pyi -> build/lib/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/attr.pyi -> build/lib/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/__init__.pyi -> build/lib/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/parser.pyi -> build/lib/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/alarms.pyi -> build/lib/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/caselessdict.pyi -> build/lib/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/cal.pyi -> build/lib/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/tools.pyi -> build/lib/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/parser_tools.pyi -> build/lib/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/enums.pyi -> build/lib/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/param.pyi -> build/lib/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/py.typed -> build/lib/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> creating build/lib/icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/timezone/__init__.pyi -> build/lib/icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/timezone/equivalent_timezone_ids.pyi -> build/lib/icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/timezone/equivalent_timezone_ids_result.pyi -> build/lib/icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/timezone/provider.pyi -> build/lib/icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/timezone/pytz.pyi -> build/lib/icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/timezone/tzid.pyi -> build/lib/icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/timezone/tzp.pyi -> build/lib/icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/timezone/windows_to_olson.pyi -> build/lib/icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/timezone/zoneinfo.pyi -> build/lib/icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying icalendar-stubs/METADATA.toml -> build/lib/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> installing to build/bdist.macosx-14.0-arm64/wheel python3.14-types-icalendar-6.3.2.20260223> running install python3.14-types-icalendar-6.3.2.20260223> running install_lib python3.14-types-icalendar-6.3.2.20260223> creating build/bdist.macosx-14.0-arm64/wheel python3.14-types-icalendar-6.3.2.20260223> creating build/bdist.macosx-14.0-arm64/wheel/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/version.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/prop.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/error.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> creating build/bdist.macosx-14.0-arm64/wheel/icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/timezone/__init__.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/timezone/tzp.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/timezone/equivalent_timezone_ids.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/timezone/provider.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/timezone/equivalent_timezone_ids_result.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/timezone/zoneinfo.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/timezone/pytz.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/timezone/windows_to_olson.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/timezone/tzid.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/attr.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/__init__.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/parser.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/alarms.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/caselessdict.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/py.typed -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/cal.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/tools.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/METADATA.toml -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/parser_tools.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/enums.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/param.pyi -> build/bdist.macosx-14.0-arm64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> running install_egg_info python3.14-types-icalendar-6.3.2.20260223> running egg_info python3.14-types-icalendar-6.3.2.20260223> writing types_icalendar.egg-info/PKG-INFO python3.14-types-icalendar-6.3.2.20260223> writing dependency_links to types_icalendar.egg-info/dependency_links.txt python3.14-types-icalendar-6.3.2.20260223> writing requirements to types_icalendar.egg-info/requires.txt python3.14-types-icalendar-6.3.2.20260223> writing top-level names to types_icalendar.egg-info/top_level.txt python3.14-types-icalendar-6.3.2.20260223> reading manifest file 'types_icalendar.egg-info/SOURCES.txt' python3.14-types-icalendar-6.3.2.20260223> reading manifest template 'MANIFEST.in' python3.14-types-icalendar-6.3.2.20260223> adding license file 'LICENSE' python3.14-types-icalendar-6.3.2.20260223> writing manifest file 'types_icalendar.egg-info/SOURCES.txt' python3.14-types-icalendar-6.3.2.20260223> Copying types_icalendar.egg-info to build/bdist.macosx-14.0-arm64/wheel/./types_icalendar-6.3.2.20260223-py3.14.egg-info python3.14-types-icalendar-6.3.2.20260223> running install_scripts python3.14-types-icalendar-6.3.2.20260223> creating build/bdist.macosx-14.0-arm64/wheel/types_icalendar-6.3.2.20260223.dist-info/WHEEL python3.14-types-icalendar-6.3.2.20260223> creating '/nix/var/nix/builds/nix-31581-196484350/types_icalendar-6.3.2.20260223/dist/.tmp-l206eoxi/types_icalendar-6.3.2.20260223-py3-none-any.whl' and adding 'build/bdist.macosx-14.0-arm64/wheel' to it python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/METADATA.toml' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/__init__.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/alarms.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/attr.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/cal.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/caselessdict.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/enums.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/error.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/param.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/parser.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/parser_tools.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/prop.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/py.typed' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/tools.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/version.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/timezone/__init__.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/timezone/equivalent_timezone_ids.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/timezone/equivalent_timezone_ids_result.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/timezone/provider.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/timezone/pytz.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/timezone/tzid.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/timezone/tzp.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/timezone/windows_to_olson.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'icalendar-stubs/timezone/zoneinfo.pyi' python3.14-types-icalendar-6.3.2.20260223> adding 'types_icalendar-6.3.2.20260223.dist-info/licenses/LICENSE' python3.14-types-icalendar-6.3.2.20260223> adding 'types_icalendar-6.3.2.20260223.dist-info/METADATA' python3.14-types-icalendar-6.3.2.20260223> adding 'types_icalendar-6.3.2.20260223.dist-info/WHEEL' python3.14-types-icalendar-6.3.2.20260223> adding 'types_icalendar-6.3.2.20260223.dist-info/top_level.txt' python3.14-types-icalendar-6.3.2.20260223> adding 'types_icalendar-6.3.2.20260223.dist-info/RECORD' python3.14-types-icalendar-6.3.2.20260223> removing build/bdist.macosx-14.0-arm64/wheel python3.14-types-icalendar-6.3.2.20260223> Successfully built types_icalendar-6.3.2.20260223-py3-none-any.whl python3.14-types-icalendar-6.3.2.20260223> Finished creating a wheel... python3.14-types-icalendar-6.3.2.20260223> Finished executing pypaBuildPhase python3.14-types-icalendar-6.3.2.20260223> Running phase: pythonRuntimeDepsCheckHook python3.14-types-icalendar-6.3.2.20260223> Executing pythonRuntimeDepsCheck python3.14-types-icalendar-6.3.2.20260223> Checking runtime dependencies for types_icalendar-6.3.2.20260223-py3-none-any.whl python3.14-types-icalendar-6.3.2.20260223> Finished executing pythonRuntimeDepsCheck python3.14-types-icalendar-6.3.2.20260223> Running phase: installPhase python3.14-types-icalendar-6.3.2.20260223> Executing pypaInstallPhase python3.14-types-icalendar-6.3.2.20260223> Successfully installed types_icalendar-6.3.2.20260223-py3-none-any.whl python3.14-types-icalendar-6.3.2.20260223> Finished executing pypaInstallPhase python3.14-types-icalendar-6.3.2.20260223> Running phase: pythonOutputDistPhase python3.14-types-icalendar-6.3.2.20260223> Executing pythonOutputDistPhase python3.14-types-icalendar-6.3.2.20260223> Finished executing pythonOutputDistPhase python3.14-types-icalendar-6.3.2.20260223> Running phase: fixupPhase python3.14-types-icalendar-6.3.2.20260223> checking for references to /nix/var/nix/builds/nix-31581-196484350/ in /nix/store/a0ywjq0bxx91d4xpc75xpx73csg9fs29-python3.14-types-icalendar-6.3.2.20260223... python3.14-types-icalendar-6.3.2.20260223> patching script interpreter paths in /nix/store/a0ywjq0bxx91d4xpc75xpx73csg9fs29-python3.14-types-icalendar-6.3.2.20260223 python3.14-types-icalendar-6.3.2.20260223> stripping (with command strip and flags -S) in /nix/store/a0ywjq0bxx91d4xpc75xpx73csg9fs29-python3.14-types-icalendar-6.3.2.20260223/lib python3.14-types-icalendar-6.3.2.20260223> checking for references to /nix/var/nix/builds/nix-31581-196484350/ in /nix/store/n6wgz4ib791n4b9yznj03r0w0l1g8lcl-python3.14-types-icalendar-6.3.2.20260223-dist... python3.14-types-icalendar-6.3.2.20260223> patching script interpreter paths in /nix/store/n6wgz4ib791n4b9yznj03r0w0l1g8lcl-python3.14-types-icalendar-6.3.2.20260223-dist python3.14-types-icalendar-6.3.2.20260223> Executing pythonRemoveTestsDir python3.14-types-icalendar-6.3.2.20260223> Finished executing pythonRemoveTestsDir python3.14-types-icalendar-6.3.2.20260223> Running phase: pythonCatchConflictsPhase python3.14-types-icalendar-6.3.2.20260223> Running phase: pythonRemoveBinBytecodePhase python3.14-types-icalendar-6.3.2.20260223> Running phase: pythonImportsCheckPhase python3.14-types-icalendar-6.3.2.20260223> Executing pythonImportsCheckPhase python3.14-types-icalendar-6.3.2.20260223> Running phase: pythonMetadataCheckPhase python3.14-types-icalendar-6.3.2.20260223> Executing pythonMetadataCheckPhase building '/nix/store/y9mqp15ydycsc8jhb2lvw4jw1gm96wg9-treefmt.toml.drv' on 'ssh-ng://customer@mac02' building '/nix/store/y9mqp15ydycsc8jhb2lvw4jw1gm96wg9-treefmt.toml.drv' treefmt.toml> structuredAttrs is enabled building '/nix/store/m0p70fxqq81g09zfamjqzlglhc1c19ib-treefmt.drv' on 'ssh-ng://customer@mac02' building '/nix/store/m0p70fxqq81g09zfamjqzlglhc1c19ib-treefmt.drv' building '/nix/store/mjl1rd338s5py04nwvzimn1dckp36hjk-treefmt-check.drv' on 'ssh-ng://customer@mac02' building '/nix/store/mjl1rd338s5py04nwvzimn1dckp36hjk-treefmt-check.drv' treefmt-check> treefmt v2.5.0ERRO formatter | ruff-check: failed to apply with options '[check --fix]': exit status 1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> weather-cli/lib/weather_cli/__init__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> weather-cli/lib/weather_cli/main.py:1:1 treefmt-check> treefmt-check> Found 2 errors. treefmt-check> treefmt-check> ERRO formatter | ruff-check: failed to apply with options '[check --fix]': exit status 1 treefmt-check> treefmt-check> BLE001 Do not catch blind exception: `Exception` treefmt-check> --> kagi-search/kagi_search.py:199:16 treefmt-check> | treefmt-check> 197 | print(stderr_msg, file=sys.stderr) treefmt-check> 198 | sys.exit(1) treefmt-check> 199 | except Exception as e: treefmt-check> | ^^^^^^^^^ treefmt-check> 200 | error_msg = colorize(f"Error getting session token: {e}", color="red", bold=True) treefmt-check> 201 | print(error_msg, file=sys.stderr) treefmt-check> | treefmt-check> treefmt-check> TRY002 Create your own exception treefmt-check> --> kagi-search/kagi_search.py:218:23 treefmt-check> | treefmt-check> 216 | return # Success treefmt-check> 217 | elif "/signin" in final_url or "/welcome" in final_url: treefmt-check> 218 | raise Exception(f"Authentication failed - redirected to {final_url}") treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 219 | except Exception as e: treefmt-check> 220 | raise Exception(f"Failed to authenticate with token: {e}") treefmt-check> | treefmt-check> treefmt-check> BLE001 Do not catch blind exception: `Exception` treefmt-check> --> kagi-search/kagi_search.py:219:16 treefmt-check> | treefmt-check> 217 | elif "/signin" in final_url or "/welcome" in final_url: treefmt-check> 218 | raise Exception(f"Authentication failed - redirected to {final_url}") treefmt-check> 219 | except Exception as e: treefmt-check> | ^^^^^^^^^ treefmt-check> 220 | raise Exception(f"Failed to authenticate with token: {e}") treefmt-check> | treefmt-check> treefmt-check> TRY002 Create your own exception treefmt-check> --> kagi-search/kagi_search.py:220:19 treefmt-check> | treefmt-check> 218 | raise Exception(f"Authentication failed - redirected to {final_url}") treefmt-check> 219 | except Exception as e: treefmt-check> 220 | raise Exception(f"Failed to authenticate with token: {e}") treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 221 | treefmt-check> 222 | def search(self, query: str, limit: int = 10) -> list[SearchResult]: treefmt-check> | treefmt-check> treefmt-check> TRY002 Create your own exception treefmt-check> --> kagi-search/kagi_search.py:260:27 treefmt-check> | treefmt-check> 258 | final_url = response.geturl() treefmt-check> 259 | if "/signin" in final_url or "/welcome" in final_url: treefmt-check> 260 | raise Exception(f"Authentication failed - redirected to {final_url}") treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 261 | treefmt-check> 262 | # Read response treefmt-check> | treefmt-check> treefmt-check> TRY002 Create your own exception treefmt-check> --> kagi-search/kagi_search.py:280:27 treefmt-check> | treefmt-check> 278 | time.sleep(retry_delay) treefmt-check> 279 | continue treefmt-check> 280 | raise Exception("No results box found on page") treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 281 | treefmt-check> 282 | # Extract search results treefmt-check> | treefmt-check> treefmt-check> TRY004 Prefer `TypeError` exception for invalid type treefmt-check> --> kagi-search/kagi_search.py:285:21 treefmt-check> | treefmt-check> 283 | results = [] treefmt-check> 284 | if not isinstance(results_box, Tag): treefmt-check> 285 | raise Exception("Results box is not a Tag element") treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 286 | search_results = results_box.find_all(class_="search-result") treefmt-check> | treefmt-check> treefmt-check> TRY002 Create your own exception treefmt-check> --> kagi-search/kagi_search.py:285:27 treefmt-check> | treefmt-check> 283 | results = [] treefmt-check> 284 | if not isinstance(results_box, Tag): treefmt-check> 285 | raise Exception("Results box is not a Tag element") treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 286 | search_results = results_box.find_all(class_="search-result") treefmt-check> | treefmt-check> treefmt-check> TRY002 Create your own exception treefmt-check> --> kagi-search/kagi_search.py:332:23 treefmt-check> | treefmt-check> 330 | time.sleep(retry_delay) treefmt-check> 331 | continue treefmt-check> 332 | raise Exception(f"Request failed: {e}") treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 333 | treefmt-check> 334 | return [] treefmt-check> | treefmt-check> treefmt-check> TRY002 Create your own exception treefmt-check> --> kagi-search/kagi_search.py:385:23 treefmt-check> | treefmt-check> 383 | logger.debug(f"Final URL: {final_url}") treefmt-check> 384 | if "/signin" in final_url or "/welcome" in final_url: treefmt-check> 385 | raise Exception(f"Authentication failed - redirected to {final_url}") treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 386 | treefmt-check> 387 | # Read response treefmt-check> | treefmt-check> treefmt-check> BLE001 Do not catch blind exception: `Exception` treefmt-check> --> kagi-search/kagi_search.py:460:16 treefmt-check> | treefmt-check> 458 | ) treefmt-check> 459 | treefmt-check> 460 | except Exception as e: treefmt-check> | ^^^^^^^^^ treefmt-check> 461 | # Quick Answer might not be available for all queries treefmt-check> 462 | logger.debug(f"Quick Answer error: {type(e).__name__}: {e}") treefmt-check> | treefmt-check> treefmt-check> BLE001 Do not catch blind exception: `Exception` treefmt-check> --> kagi-search/kagi_search.py:500:12 treefmt-check> | treefmt-check> 498 | try: treefmt-check> 499 | client = KagiSearch(session_token=args.token, config_path=args.config) treefmt-check> 500 | except Exception as e: treefmt-check> | ^^^^^^^^^ treefmt-check> 501 | error_msg = colorize(f"Error initializing Kagi client: {e}", color="red", bold=True) treefmt-check> 502 | print(error_msg, file=sys.stderr) treefmt-check> | treefmt-check> treefmt-check> BLE001 Do not catch blind exception: `Exception` treefmt-check> --> kagi-search/kagi_search.py:509:12 treefmt-check> | treefmt-check> 507 | results = client.search(args.query, limit=args.num_results) if args.links else [] treefmt-check> 508 | quick_answer = client.get_quick_answer(args.query) treefmt-check> 509 | except Exception as e: treefmt-check> | ^^^^^^^^^ treefmt-check> 510 | error_msg = colorize(f"Search failed: {e}", color="red", bold=True) treefmt-check> 511 | print(error_msg, file=sys.stderr) treefmt-check> | treefmt-check> treefmt-check> Found 28 errors (15 fixed, 13 remaining). treefmt-check> treefmt-check> ERRO formatter | ruff-check: failed to apply with options '[check --fix]': exit status 1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> browser-cli/browser_cli/__init__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> browser-cli/browser_cli/__main__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> browser-cli/browser_cli/bridge.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> browser-cli/browser_cli/browsh.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> browser-cli/browser_cli/cli.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> browser-cli/browser_cli/client.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> browser-cli/browser_cli/config.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> browser-cli/browser_cli/errors.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> browser-cli/browser_cli/paths.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> browser-cli/browser_cli/server.py:1:1 treefmt-check> treefmt-check> Found 10 errors. treefmt-check> treefmt-check> ERRO formatter | ruff-check: failed to apply with options '[check --fix]': exit status 1 treefmt-check> treefmt-check> EXE001 Shebang is present but file is not executable treefmt-check> --> screenshot-cli/screenshot_cli.py:1:1 treefmt-check> | treefmt-check> 1 | #!/usr/bin/env python3 treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 2 | """Non-interactive screenshot CLI for agent use on macOS and Linux Wayland. treefmt-check> | treefmt-check> treefmt-check> DTZ005 `datetime.datetime.now()` called without a `tz` argument treefmt-check> --> screenshot-cli/screenshot_cli.py:261:14 treefmt-check> | treefmt-check> 259 | # Include microseconds: niri actions complete in ~150ms so two calls treefmt-check> 260 | # easily land in the same wall-clock second and clobber each other. treefmt-check> 261 | ts = datetime.now().strftime("%Y%m%d-%H%M%S-%f") treefmt-check> | ^^^^^^^^^^^^^^ treefmt-check> 262 | output = str(outdir / f"screenshot-{ts}.png") treefmt-check> 263 | Path(output).parent.mkdir(parents=True, exist_ok=True) treefmt-check> | treefmt-check> help: Pass a `datetime.timezone` object to the `tz` parameter treefmt-check> treefmt-check> Found 3 errors (1 fixed, 2 remaining). treefmt-check> treefmt-check> ERRO formatter | ruff-check: failed to apply with options '[check --fix]': exit status 1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> pexpect-cli/pexpect_cli/__init__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> pexpect-cli/pexpect_cli/client.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> pexpect-cli/pexpect_cli/server.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> pexpect-cli/tests/__init__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> pexpect-cli/tests/test_integration.py:1:1 treefmt-check> treefmt-check> Found 5 errors. treefmt-check> treefmt-check> ERRO formatter | ruff-check: failed to apply with options '[check --fix]': exit status 1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> gmaps-cli/gmaps_cli.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> gmaps-cli/test_gmaps_cli_integration.py:1:1 treefmt-check> treefmt-check> Found 5 errors (3 fixed, 2 remaining). treefmt-check> treefmt-check> ERRO formatter | ruff-check: failed to apply with options '[check --fix]': exit status 1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> tasker-cli/lib/tasker_cli/__init__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> tasker-cli/lib/tasker_cli/adb.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> tasker-cli/lib/tasker_cli/config.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> tasker-cli/lib/tasker_cli/main.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> tasker-cli/lib/tasker_cli/specs.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> tasker-cli/lib/tasker_cli/webui.py:1:1 treefmt-check> treefmt-check> RUF036 `None` not at the end of the type union. treefmt-check> --> tasker-cli/lib/tasker_cli/webui.py:17:5 treefmt-check> | treefmt-check> 15 | # JSON type aliases for the untyped WebUI responses treefmt-check> 16 | type JsonValue = ( treefmt-check> 17 | str | int | float | bool | None | list[JsonValue] | dict[str, JsonValue] treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 18 | ) treefmt-check> | treefmt-check> help: Move `None` to the end of the type union treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> tasker-cli/tests/__init__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> tasker-cli/tests/conftest.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> tasker-cli/tests/test_deploy.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> tasker-cli/tests/test_specs.py:1:1 treefmt-check> treefmt-check> Found 11 errors. treefmt-check> No fixes available (1 hidden fix can be enabled with the `--unsafe-fixes` option). treefmt-check> treefmt-check> ERRO formatter | ruff-check: failed to apply with options '[check --fix]': exit status 1 treefmt-check> treefmt-check> SIM102 Use a single `if` statement instead of nested `if` statements treefmt-check> --> n8n-cli/n8n_cli/commands/apply.py:64:13 treefmt-check> | treefmt-check> 63 | # Filter by IDs if specified treefmt-check> 64 | / if ids: treefmt-check> 65 | | if not wf_id or wf_id not in ids: treefmt-check> | |_________________________________________________^ treefmt-check> 66 | continue treefmt-check> | treefmt-check> help: Combine `if` statements using `and` treefmt-check> treefmt-check> SIM103 Return the condition `local.get("active") != remote.get("active")` directly treefmt-check> --> n8n-cli/n8n_cli/commands/apply.py:137:5 treefmt-check> | treefmt-check> 135 | return True treefmt-check> 136 | # Compare active state treefmt-check> 137 | / if local.get("active") != remote.get("active"): treefmt-check> 138 | | return True treefmt-check> 139 | | return False treefmt-check> | |________________^ treefmt-check> help: Replace with `return local.get("active") != remote.get("active")` treefmt-check> treefmt-check> SIM102 Use a single `if` statement instead of nested `if` statements treefmt-check> --> n8n-cli/n8n_cli/commands/apply.py:224:9 treefmt-check> | treefmt-check> 222 | local_updated = data.get("updatedAt") treefmt-check> 223 | remote_updated = remote.get("updatedAt") treefmt-check> 224 | / if local_updated and remote_updated and remote_updated > local_updated: treefmt-check> 225 | | if not ns.force: treefmt-check> | |____________________________^ treefmt-check> 226 | print( treefmt-check> 227 | f" conflict: {basename} (remote is newer: {remote_updated} > {local_updated})" treefmt-check> | treefmt-check> help: Combine `if` statements using `and` treefmt-check> treefmt-check> SIM117 Use a single `with` statement with multiple contexts instead of nested `with` statements treefmt-check> --> n8n-cli/tests/test_errors.py:14:9 treefmt-check> | treefmt-check> 12 | """Missing API URL/key produces a ConfigError, not a traceback.""" treefmt-check> 13 | env = {"N8N_API_URL": "", "N8N_API_KEY": ""} treefmt-check> 14 | / with patch.dict("os.environ", env, clear=False): treefmt-check> 15 | | with patch("sys.argv", ["n8n-cli", "credential", "list"]): treefmt-check> | |______________________________________________________________________^ treefmt-check> 16 | with pytest.raises(SystemExit) as exc_info: treefmt-check> 17 | main() treefmt-check> | treefmt-check> help: Combine `with` statements treefmt-check> treefmt-check> SIM117 Use a single `with` statement with multiple contexts instead of nested `with` statements treefmt-check> --> n8n-cli/tests/test_errors.py:24:9 treefmt-check> | treefmt-check> 22 | def test_unknown_command(self, capsys: pytest.CaptureFixture[str]) -> None: treefmt-check> 23 | """Unknown top-level command exits with code 2 (argparse error).""" treefmt-check> 24 | / with patch.dict("os.environ", {"N8N_API_URL": "x", "N8N_API_KEY": "x"}): treefmt-check> 25 | | with patch("sys.argv", ["n8n-cli", "bogus"]): treefmt-check> | |_________________________________________________________^ treefmt-check> 26 | with pytest.raises(SystemExit) as exc_info: treefmt-check> 27 | main() treefmt-check> | treefmt-check> help: Combine `with` statements treefmt-check> treefmt-check> Found 16 errors (11 fixed, 5 remaining). treefmt-check> No fixes available (2 hidden fixes can be enabled with the `--unsafe-fixes` option). treefmt-check> treefmt-check> ERRO formatter | ruff-check: failed to apply with options '[check --fix]': exit status 1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/calendar_cli/__init__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/calendar_cli/cache.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/calendar_cli/config.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/calendar_cli/create.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/calendar_cli/email_invite.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/calendar_cli/errors.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/calendar_cli/import_invite.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/calendar_cli/main.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/calendar_cli/models.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/calendar_cli/parse.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/calendar_cli/reply.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/calendar_cli/store.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/calendar_cli/timeutil.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/calendar_cli/util.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/tests/__init__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/tests/conftest.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/tests/helpers.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/tests/test_cache.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/tests/test_cli.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/tests/test_import.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/tests/test_invite.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/tests/test_reply.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> calendar-cli/tests/test_store.py:1:1 treefmt-check> treefmt-check> Found 23 errors. treefmt-check> treefmt-check> traversed 182 files treefmt-check> emitted 162 files for processing treefmt-check> formatted 77 files (8 changed) in 4.215s treefmt-check> Error: failed to finalise formatting: formatting failures detected error: build of '/nix/store/mjl1rd338s5py04nwvzimn1dckp36hjk-treefmt-check.drv' on 'ssh-ng://customer@mac02' failed: Cannot build '/nix/store/mjl1rd338s5py04nwvzimn1dckp36hjk-treefmt-check.drv'. Reason: builder failed with exit code 1. Output paths: /nix/store/iap4v843gqwjvm79bm7v45ghjjfll4kq-treefmt-check Last 25 log lines: > > CPY001 Missing copyright notice at top of file > --> calendar-cli/tests/test_cache.py:1:1 > > CPY001 Missing copyright notice at top of file > --> calendar-cli/tests/test_cli.py:1:1 > > CPY001 Missing copyright notice at top of file > --> calendar-cli/tests/test_import.py:1:1 > > CPY001 Missing copyright notice at top of file > --> calendar-cli/tests/test_invite.py:1:1 > > CPY001 Missing copyright notice at top of file > --> calendar-cli/tests/test_reply.py:1:1 > > CPY001 Missing copyright notice at top of file > --> calendar-cli/tests/test_store.py:1:1 > > Found 23 errors. > > traversed 182 files > emitted 162 files for processing > formatted 77 files (8 changed) in 4.215s > Error: failed to finalise formatting: formatting failures detected For full logs, run: nix log /nix/store/mjl1rd338s5py04nwvzimn1dckp36hjk-treefmt-check.drv error: Cannot build '/nix/store/mjl1rd338s5py04nwvzimn1dckp36hjk-treefmt-check.drv'. Reason: builder failed with exit code 1. Output paths: /nix/store/iap4v843gqwjvm79bm7v45ghjjfll4kq-treefmt-check