these 6 derivations will be built: /nix/store/5pnafk6qbv2s6p0s9p4vp1kx1jyxwa6l-types_icalendar-6.3.2.20260223.tar.gz.drv /nix/store/b55d5dxy1y43bf3ly7bidd1pp0xszvh2-python3.14-types-icalendar-6.3.2.20260223.drv /nix/store/fn15q9vvxnxh4ih5mdhiz79vlaqmcaqz-mdformat-wrapped.drv /nix/store/irv238xhykcnjm0fy1zjgplk71dgii39-treefmt.toml.drv /nix/store/ik8iwqyfvrsnccgd1dmfsc12pbsin8xz-treefmt.drv /nix/store/lh1bisj23hi9kamqdkb3mrlvjda8paw1-treefmt-check.drv these 5 paths will be fetched (16.3 MiB download, 67.6 MiB unpacked): /nix/store/w3vsprzhxpq4lsk61ava6xcpa7gbyshg-python3.14-mdformat-frontmatter-2.0.10 /nix/store/rwhsrjlbc2pjsfhjfwjsr7ksxwxpgplc-python3.14-mdit-py-plugins-0.6.1 /nix/store/pn48p580ynnv8j1cgh44zj24qyy59nb8-python3.14-mypy-2.1.0 /nix/store/4kwsacrhd83ch0l8jj261xm2gln978sn-python3.14-types-python-dateutil-2.9.0.20251115 /nix/store/zxjffmgxvjbgqahzdzj9f9ggwbzfqc30-python3.14-types-pytz-2026.1.1.20260304 building '/nix/store/g1315wwf2insxby6y0i0a0dm2x0pnxsp-types_icalendar-6.3.2.20260223.tar.gz.drv' types_icalendar-6.3.2.20260223.tar.gz> structuredAttrs is enabled types_icalendar-6.3.2.20260223.tar.gz> types_icalendar-6.3.2.20260223.tar.gz> trying https://files.pythonhosted.org/packages/source/t/types_icalendar/types_icalendar-6.3.2.20260223.tar.gz types_icalendar-6.3.2.20260223.tar.gz> % Total % Received % Xferd Average Speed Time Time Time Current types_icalendar-6.3.2.20260223.tar.gz> Dload Upload Total Spent Left Speed types_icalendar-6.3.2.20260223.tar.gz> 0 0 0 0 0 0 0 0 0 types_icalendar-6.3.2.20260223.tar.gz> 100 18493 100 18493 0 0 1.07M 0 0 building '/nix/store/b55d5dxy1y43bf3ly7bidd1pp0xszvh2-python3.14-types-icalendar-6.3.2.20260223.drv' building '/nix/store/fn15q9vvxnxh4ih5mdhiz79vlaqmcaqz-mdformat-wrapped.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/__init__.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/attr.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/caselessdict.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/error.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/parser.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/prop.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/version.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.linux-x86_64/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.linux-x86_64/wheel python3.14-types-icalendar-6.3.2.20260223> creating build/bdist.linux-x86_64/wheel/icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/__init__.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/alarms.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/attr.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/cal.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/caselessdict.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/enums.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/error.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/param.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/parser.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/parser_tools.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/prop.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/tools.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/version.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/py.typed -> build/bdist.linux-x86_64/wheel/./icalendar-stubs python3.14-types-icalendar-6.3.2.20260223> creating build/bdist.linux-x86_64/wheel/icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/timezone/__init__.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/timezone/equivalent_timezone_ids.pyi -> build/bdist.linux-x86_64/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.linux-x86_64/wheel/./icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/timezone/provider.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/timezone/pytz.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/timezone/tzid.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/timezone/tzp.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/timezone/windows_to_olson.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/timezone/zoneinfo.pyi -> build/bdist.linux-x86_64/wheel/./icalendar-stubs/timezone python3.14-types-icalendar-6.3.2.20260223> copying build/lib/icalendar-stubs/METADATA.toml -> build/bdist.linux-x86_64/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.linux-x86_64/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.linux-x86_64/wheel/types_icalendar-6.3.2.20260223.dist-info/WHEEL python3.14-types-icalendar-6.3.2.20260223> creating '/build/types_icalendar-6.3.2.20260223/dist/.tmp-am3hucn7/types_icalendar-6.3.2.20260223-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/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.linux-x86_64/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> shrinking RPATHs of ELF executables and libraries in /nix/store/m3kmqy5rlfnk7vc60v3x530vx6d00yc0-python3.14-types-icalendar-6.3.2.20260223 python3.14-types-icalendar-6.3.2.20260223> checking for references to /build/ in /nix/store/m3kmqy5rlfnk7vc60v3x530vx6d00yc0-python3.14-types-icalendar-6.3.2.20260223... python3.14-types-icalendar-6.3.2.20260223> patching script interpreter paths in /nix/store/m3kmqy5rlfnk7vc60v3x530vx6d00yc0-python3.14-types-icalendar-6.3.2.20260223 python3.14-types-icalendar-6.3.2.20260223> stripping (with command strip and flags -S -p) in /nix/store/m3kmqy5rlfnk7vc60v3x530vx6d00yc0-python3.14-types-icalendar-6.3.2.20260223/lib python3.14-types-icalendar-6.3.2.20260223> shrinking RPATHs of ELF executables and libraries in /nix/store/b4w57746lzmvjfyqb9xnn99k7wl5ffx0-python3.14-types-icalendar-6.3.2.20260223-dist python3.14-types-icalendar-6.3.2.20260223> checking for references to /build/ in /nix/store/b4w57746lzmvjfyqb9xnn99k7wl5ffx0-python3.14-types-icalendar-6.3.2.20260223-dist... python3.14-types-icalendar-6.3.2.20260223> patching script interpreter paths in /nix/store/b4w57746lzmvjfyqb9xnn99k7wl5ffx0-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/irv238xhykcnjm0fy1zjgplk71dgii39-treefmt.toml.drv' treefmt.toml> structuredAttrs is enabled building '/nix/store/ik8iwqyfvrsnccgd1dmfsc12pbsin8xz-treefmt.drv' building '/nix/store/lh1bisj23hi9kamqdkb3mrlvjda8paw1-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> --> biorefs-cli/biorefs_cli/__init__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/commands/__init__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/commands/assay.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/commands/compound.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/commands/gene.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/commands/ncbi.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/commands/nucleotide.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/commands/openalex.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/commands/paper.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/commands/protein.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/commands/setup.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/commands/structure.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/commands/uniprot.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/config.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/errors.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/http.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/identifiers.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/jsonshape.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/main.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/ncbi_client.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/output.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/rate_limit.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/biorefs_cli/rcsb_graphql.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/__init__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_api_specs.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_assay.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_compound.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_core_helpers.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_gene.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_http_post.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_ncbi_command.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_ncbi_extra.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_nucleotide.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_openalex.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_paper.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_paper_extra.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_protein.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_rate_limit.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_rcsb_graphql.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_render_helpers.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_scaffold.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_setup.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_structure_fetch.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_structure_info.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_structure_render.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_structure_search.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> biorefs-cli/tests/test_uniprot.py:1:1 treefmt-check> treefmt-check> EXE001 Shebang is present but file is not executable treefmt-check> --> drawio-cli/index-builder/update-baseline.py:1:1 treefmt-check> | treefmt-check> 1 | #!/usr/bin/env python3 treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 2 | from __future__ import annotations treefmt-check> | treefmt-check> treefmt-check> TRY004 Prefer `TypeError` exception for invalid type treefmt-check> --> drawio-cli/index-builder/update-baseline.py:20:9 treefmt-check> | treefmt-check> 18 | value = data.get(key) treefmt-check> 19 | if not isinstance(value, dict): treefmt-check> 20 | raise ValueError(f"manifest {key!r} must be an object") treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 21 | return value treefmt-check> | treefmt-check> treefmt-check> TRY004 Prefer `TypeError` exception for invalid type treefmt-check> --> drawio-cli/index-builder/update-baseline.py:27:9 treefmt-check> | treefmt-check> 25 | value = data.get(key) treefmt-check> 26 | if not isinstance(value, int) or isinstance(value, bool): treefmt-check> 27 | raise ValueError(f"manifest {key!r} must be an integer") treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 28 | if positive and value <= 0: treefmt-check> 29 | raise ValueError(f"manifest {key!r} must be positive") treefmt-check> | treefmt-check> treefmt-check> TRY004 Prefer `TypeError` exception for invalid type treefmt-check> --> drawio-cli/index-builder/update-baseline.py:88:9 treefmt-check> | treefmt-check> 86 | value = json.loads(path.read_text(encoding="utf-8")) treefmt-check> 87 | if not isinstance(value, dict): treefmt-check> 88 | raise ValueError(f"{path} must contain a JSON object") treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 89 | return value treefmt-check> | treefmt-check> treefmt-check> TRY004 Prefer `TypeError` exception for invalid type treefmt-check> --> drawio-cli/src/drawio_cli/layout.py:83:9 treefmt-check> | treefmt-check> 81 | data = json.load(handle) treefmt-check> 82 | if not isinstance(data, dict): treefmt-check> 83 | raise ValueError("graph JSON must be an object") treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 84 | graph_direction = direction or str(data.get("direction", "TB")) treefmt-check> 85 | if graph_direction not in {"TB", "LR"}: treefmt-check> | treefmt-check> treefmt-check> TRY004 Prefer `TypeError` exception for invalid type treefmt-check> --> drawio-cli/src/drawio_cli/layout.py:91:9 treefmt-check> | treefmt-check> 89 | edges_raw = data.get("edges", []) treefmt-check> 90 | if not isinstance(nodes_raw, list) or not isinstance(edges_raw, list): treefmt-check> 91 | raise ValueError("nodes and edges must be lists") treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 92 | treefmt-check> 93 | nodes: list[Node] = [] treefmt-check> | treefmt-check> treefmt-check> TRY004 Prefer `TypeError` exception for invalid type treefmt-check> --> drawio-cli/src/drawio_cli/layout.py:97:13 treefmt-check> | treefmt-check> 95 | for raw in nodes_raw: treefmt-check> 96 | if not isinstance(raw, dict): treefmt-check> 97 | raise ValueError("node must be an object") treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 98 | node_id = str(raw.get("id", "")) treefmt-check> 99 | if not node_id or node_id in {"0", "1"}: treefmt-check> | treefmt-check> treefmt-check> TRY004 Prefer `TypeError` exception for invalid type treefmt-check> --> drawio-cli/src/drawio_cli/layout.py:129:13 treefmt-check> | treefmt-check> 127 | for index, raw in enumerate(edges_raw): treefmt-check> 128 | if not isinstance(raw, dict): treefmt-check> 129 | raise ValueError("edge must be an object") treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 130 | source = str(raw.get("source", "")) treefmt-check> 131 | target = str(raw.get("target", "")) treefmt-check> | treefmt-check> treefmt-check> UP022 Prefer `capture_output` over sending `stdout` and `stderr` to `PIPE` treefmt-check> --> drawio-cli/src/drawio_cli/layout.py:243:18 treefmt-check> | treefmt-check> 241 | dot_path = Path(tmp) / "graph.dot" treefmt-check> 242 | dot_path.write_text(source, encoding="utf-8") treefmt-check> 243 | result = subprocess.run( treefmt-check> | __________________^ treefmt-check> 244 | | [dot, "-Tplain", str(dot_path)], treefmt-check> 245 | | check=False, treefmt-check> 246 | | text=True, treefmt-check> 247 | | stdout=subprocess.PIPE, treefmt-check> 248 | | stderr=subprocess.PIPE, treefmt-check> 249 | | ) treefmt-check> | |_________^ treefmt-check> 250 | if result.returncode != 0: treefmt-check> 251 | raise RuntimeError(f"dot failed: {result.stderr.strip()}") treefmt-check> | treefmt-check> help: Replace with `capture_output` keyword argument treefmt-check> treefmt-check> UP022 Prefer `capture_output` over sending `stdout` and `stderr` to `PIPE` treefmt-check> --> drawio-cli/src/drawio_cli/render.py:63:18 treefmt-check> | treefmt-check> 61 | transparent=transparent, treefmt-check> 62 | ) treefmt-check> 63 | result = subprocess.run( treefmt-check> | __________________^ treefmt-check> 64 | | cmd, treefmt-check> 65 | | check=False, treefmt-check> 66 | | text=True, treefmt-check> 67 | | stdout=subprocess.PIPE, treefmt-check> 68 | | stderr=subprocess.PIPE, treefmt-check> 69 | | env=_render_env(Path(tmp)), treefmt-check> 70 | | ) treefmt-check> | |_________^ treefmt-check> 71 | if result.returncode != 0: treefmt-check> 72 | raise RuntimeError( treefmt-check> | treefmt-check> help: Replace with `capture_output` keyword argument treefmt-check> treefmt-check> TRY004 Prefer `TypeError` exception for invalid type treefmt-check> --> drawio-cli/src/drawio_cli/shapes.py:113:9 treefmt-check> | treefmt-check> 111 | rows = raw.get("entries", raw) if isinstance(raw, dict) else raw treefmt-check> 112 | if not isinstance(rows, list): treefmt-check> 113 | raise ValueError("shape index must contain list or entries list") treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 114 | entries: list[ShapeEntry] = [] treefmt-check> 115 | for index, row in enumerate(rows): treefmt-check> | treefmt-check> treefmt-check> TRY004 Prefer `TypeError` exception for invalid type treefmt-check> --> drawio-cli/src/drawio_cli/shapes.py:117:13 treefmt-check> | treefmt-check> 115 | for index, row in enumerate(rows): treefmt-check> 116 | if not isinstance(row, dict): treefmt-check> 117 | raise ValueError(f"shape index entry {index} must be an object") treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 118 | entries.append(ShapeEntry.from_json(row)) treefmt-check> 119 | return ShapeIndex(tuple(entries)) treefmt-check> | treefmt-check> treefmt-check> RUF007 Prefer `itertools.pairwise()` over `zip()` when iterating over successive pairs treefmt-check> --> drawio-cli/src/drawio_cli/validate.py:167:23 treefmt-check> | treefmt-check> 165 | corners = [(x, y), (x + width, y), (x + width, y + height), (x, y + height)] treefmt-check> 166 | borders = list(zip(corners, [*corners[1:], corners[0]])) treefmt-check> 167 | for start, end in zip(points, points[1:]): treefmt-check> | ^^^ treefmt-check> 168 | if _point_in_rect(start, box) or _point_in_rect(end, box): treefmt-check> 169 | return True treefmt-check> | treefmt-check> help: Replace `zip()` with `itertools.pairwise()` treefmt-check> treefmt-check> RUF007 Prefer `itertools.pairwise()` over `zip()` when iterating over successive pairs treefmt-check> --> drawio-cli/src/drawio_cli/validate.py:181:31 treefmt-check> | treefmt-check> 179 | return any( treefmt-check> 180 | _segments_cross(a_start, a_end, b_start, b_end) treefmt-check> 181 | for a_start, a_end in zip(a, a[1:]) treefmt-check> | ^^^ treefmt-check> 182 | for b_start, b_end in zip(b, b[1:]) treefmt-check> 183 | ) treefmt-check> | treefmt-check> help: Replace `zip()` with `itertools.pairwise()` treefmt-check> treefmt-check> RUF007 Prefer `itertools.pairwise()` over `zip()` when iterating over successive pairs treefmt-check> --> drawio-cli/src/drawio_cli/validate.py:182:31 treefmt-check> | treefmt-check> 180 | _segments_cross(a_start, a_end, b_start, b_end) treefmt-check> 181 | for a_start, a_end in zip(a, a[1:]) treefmt-check> 182 | for b_start, b_end in zip(b, b[1:]) treefmt-check> | ^^^ treefmt-check> 183 | ) treefmt-check> | treefmt-check> help: Replace `zip()` with `itertools.pairwise()` 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> CPY001 Missing copyright notice at top of file treefmt-check> --> kmap-cli/kmap_cli.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> kmap-cli/tests/test_kmap_cli.py:1:1 treefmt-check> treefmt-check> RUF012 Mutable default value for class attribute treefmt-check> --> linkwarden-cli/tests/test_cli.py:18:38 treefmt-check> | treefmt-check> 17 | class State: treefmt-check> 18 | requests: list[dict[str, Any]] = [] treefmt-check> | ^^ treefmt-check> help: Consider initializing in `__init__` or annotating with `typing.ClassVar` treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> nmap-cli/nmap_cli.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> nmap-cli/tests/__init__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> nmap-cli/tests/test_nmap_cli.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> paperfetch-cli/paperfetch_cli/__init__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> paperfetch-cli/paperfetch_cli/browser.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> paperfetch-cli/paperfetch_cli/config.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> paperfetch-cli/paperfetch_cli/errors.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> paperfetch-cli/paperfetch_cli/main.py:1:1 treefmt-check> treefmt-check> PLR0917 Too many positional arguments (7 > 5) treefmt-check> --> paperfetch-cli/paperfetch_cli/main.py:285:5 treefmt-check> | treefmt-check> 285 | def _browser_pdf( # noqa: PLR0913 treefmt-check> | ^^^^^^^^^^^^ treefmt-check> 286 | args: argparse.Namespace, treefmt-check> 287 | meta: PaperMeta, treefmt-check> | treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> paperfetch-cli/paperfetch_cli/resolve.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> paperfetch-cli/paperfetch_cli/sanitize.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> paperfetch-cli/tests/__init__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> paperfetch-cli/tests/test_browser.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> paperfetch-cli/tests/test_cli.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> paperfetch-cli/tests/test_live_e2e.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> paperfetch-cli/tests/test_resolve.py:1:1 treefmt-check> treefmt-check> UP022 Prefer `capture_output` over sending `stdout` and `stderr` to `PIPE` treefmt-check> --> pymol-cli/pymol_cli/main.py:496:20 treefmt-check> | treefmt-check> 494 | return treefmt-check> 495 | if not ns.foreground: treefmt-check> 496 | run_proc = subprocess.run( treefmt-check> | ____________________^ treefmt-check> 497 | | ["pueue", "add", "--print-task-id", "--", *command], treefmt-check> 498 | | check=False, treefmt-check> 499 | | text=True, treefmt-check> 500 | | stdout=subprocess.PIPE, treefmt-check> 501 | | stderr=subprocess.PIPE, treefmt-check> 502 | | ) treefmt-check> | |_________^ treefmt-check> 503 | if run_proc.returncode != 0: treefmt-check> 504 | raise CLIError(run_proc.stderr.strip() or "pueue launch failed") treefmt-check> | treefmt-check> help: Replace with `capture_output` keyword argument treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> shortcuts-cli/shortcuts_cli.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> shortcuts-cli/tests/test_shortcuts_cli.py:1:1 treefmt-check> treefmt-check> RUF012 Mutable default value for class attribute treefmt-check> --> vikunja-cli/tests/test_client.py:18:26 treefmt-check> | treefmt-check> 16 | class Handler(BaseHTTPRequestHandler): treefmt-check> 17 | response_status = 200 treefmt-check> 18 | response_body: Any = {"ok": True} treefmt-check> | ^^^^^^^^^^^^ treefmt-check> 19 | response_content_type = "application/json" treefmt-check> 20 | seen: dict[str, Any] = {} treefmt-check> | treefmt-check> help: Consider initializing in `__init__` or annotating with `typing.ClassVar` treefmt-check> treefmt-check> RUF012 Mutable default value for class attribute treefmt-check> --> vikunja-cli/tests/test_client.py:20:28 treefmt-check> | treefmt-check> 18 | response_body: Any = {"ok": True} treefmt-check> 19 | response_content_type = "application/json" treefmt-check> 20 | seen: dict[str, Any] = {} treefmt-check> | ^^ treefmt-check> 21 | treefmt-check> 22 | def do_GET(self) -> None: treefmt-check> | treefmt-check> help: Consider initializing in `__init__` or annotating with `typing.ClassVar` treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> weather-cli/tests/__init__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> weather-cli/tests/test_weather_cli.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> weather-cli/weather_cli/__init__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> weather-cli/weather_cli/main.py:1:1 treefmt-check> treefmt-check> RUF012 Mutable default value for class attribute treefmt-check> --> zhost-cli/tests/test_cli.py:19:46 treefmt-check> | treefmt-check> 17 | class State: treefmt-check> 18 | version = 10 treefmt-check> 19 | collections: dict[str, dict[str, Any]] = {} treefmt-check> | ^^ treefmt-check> 20 | items: dict[str, dict[str, Any]] = {} treefmt-check> 21 | settings: dict[str, dict[str, Any]] = {} treefmt-check> | treefmt-check> help: Consider initializing in `__init__` or annotating with `typing.ClassVar` treefmt-check> treefmt-check> RUF012 Mutable default value for class attribute treefmt-check> --> zhost-cli/tests/test_cli.py:20:40 treefmt-check> | treefmt-check> 18 | version = 10 treefmt-check> 19 | collections: dict[str, dict[str, Any]] = {} treefmt-check> 20 | items: dict[str, dict[str, Any]] = {} treefmt-check> | ^^ treefmt-check> 21 | settings: dict[str, dict[str, Any]] = {} treefmt-check> 22 | fulltext: dict[str, dict[str, Any]] = {} treefmt-check> | treefmt-check> help: Consider initializing in `__init__` or annotating with `typing.ClassVar` treefmt-check> treefmt-check> RUF012 Mutable default value for class attribute treefmt-check> --> zhost-cli/tests/test_cli.py:21:43 treefmt-check> | treefmt-check> 19 | collections: dict[str, dict[str, Any]] = {} treefmt-check> 20 | items: dict[str, dict[str, Any]] = {} treefmt-check> 21 | settings: dict[str, dict[str, Any]] = {} treefmt-check> | ^^ treefmt-check> 22 | fulltext: dict[str, dict[str, Any]] = {} treefmt-check> 23 | requests: list[dict[str, Any]] = [] treefmt-check> | treefmt-check> help: Consider initializing in `__init__` or annotating with `typing.ClassVar` treefmt-check> treefmt-check> RUF012 Mutable default value for class attribute treefmt-check> --> zhost-cli/tests/test_cli.py:22:43 treefmt-check> | treefmt-check> 20 | items: dict[str, dict[str, Any]] = {} treefmt-check> 21 | settings: dict[str, dict[str, Any]] = {} treefmt-check> 22 | fulltext: dict[str, dict[str, Any]] = {} treefmt-check> | ^^ treefmt-check> 23 | requests: list[dict[str, Any]] = [] treefmt-check> 24 | counter = 0 treefmt-check> | treefmt-check> help: Consider initializing in `__init__` or annotating with `typing.ClassVar` treefmt-check> treefmt-check> RUF012 Mutable default value for class attribute treefmt-check> --> zhost-cli/tests/test_cli.py:23:38 treefmt-check> | treefmt-check> 21 | settings: dict[str, dict[str, Any]] = {} treefmt-check> 22 | fulltext: dict[str, dict[str, Any]] = {} treefmt-check> 23 | requests: list[dict[str, Any]] = [] treefmt-check> | ^^ treefmt-check> 24 | counter = 0 treefmt-check> | treefmt-check> help: Consider initializing in `__init__` or annotating with `typing.ClassVar` treefmt-check> treefmt-check> RUF015 Prefer `next(...)` over single element slice treefmt-check> --> zhost-cli/tests/test_cli.py:325:9 treefmt-check> | treefmt-check> 323 | main(["-j", "item", "find", "x"]) treefmt-check> 324 | assert {i["key"] for i in json.loads(capsys.readouterr().out)} == {"PAPER222"} treefmt-check> 325 | q = [r for r in _reqs("GET", "/users/1/items") if "q" in r["query"]][0] treefmt-check> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ treefmt-check> 326 | assert q["query"]["qmode"] == ["everything"] treefmt-check> | treefmt-check> help: Replace with `next(...)` treefmt-check> treefmt-check> RUF015 Prefer `next(...)` over single element slice treefmt-check> --> zhost-cli/tests/test_cli.py:412:12 treefmt-check> | treefmt-check> 410 | State.items["PAPER222"] = {"key": "PAPER222", "itemType": "journalArticle"} treefmt-check> 411 | main(["note", "add", "PAPER222", "--text", "
hi
"]) treefmt-check> 412 | note = [ treefmt-check> | ____________^ treefmt-check> 413 | | r for r in _reqs("POST", "/users/1/items") if r["body"][0]["itemType"] == "note" treefmt-check> 414 | | ][0] treefmt-check> | |________^ treefmt-check> 415 | assert note["body"][0]["parentItem"] == "PAPER222" treefmt-check> 416 | main(["note", "list", "PAPER222"]) treefmt-check> | treefmt-check> help: Replace with `next(...)` treefmt-check> treefmt-check> SIM115 Use a context manager for opening files treefmt-check> --> zhost-cli/tests/test_cli.py:424:5 treefmt-check> | treefmt-check> 422 | ) -> None: treefmt-check> 423 | pdf = f"{tmp_path}/p.pdf" treefmt-check> 424 | open(pdf, "wb").write(b"%PDF-1.7 data") treefmt-check> | ^^^^ treefmt-check> 425 | State.items["PAPER222"] = {"key": "PAPER222", "itemType": "journalArticle"} treefmt-check> 426 | main(["pdf", "attach", "PAPER222", "--pdf", pdf]) treefmt-check> | treefmt-check> treefmt-check> RUF015 Prefer `next(...)` over single element slice treefmt-check> --> zhost-cli/tests/test_cli.py:429:11 treefmt-check> | treefmt-check> 427 | assert any(r["path"].startswith("/uploads/") for r in State.requests) treefmt-check> 428 | # the attachment was created under the paper treefmt-check> 429 | att = [ treefmt-check> | ___________^ treefmt-check> 430 | | r treefmt-check> 431 | | for r in _reqs("POST", "/users/1/items") treefmt-check> 432 | | if r["body"][0]["itemType"] == "attachment" treefmt-check> 433 | | ][0] treefmt-check> | |________^ treefmt-check> 434 | assert att["body"][0]["parentItem"] == "PAPER222" treefmt-check> 435 | out_path = f"{tmp_path}/dl.pdf" treefmt-check> | treefmt-check> help: Replace with `next(...)` treefmt-check> treefmt-check> SIM115 Use a context manager for opening files treefmt-check> --> zhost-cli/tests/test_cli.py:437:12 treefmt-check> | treefmt-check> 435 | out_path = f"{tmp_path}/dl.pdf" treefmt-check> 436 | main(["pdf", "fetch", "PAPER222", "--output", out_path]) treefmt-check> 437 | assert open(out_path, "rb").read().startswith(b"%PDF") treefmt-check> | ^^^^ treefmt-check> treefmt-check> RUF015 Prefer `next(...)` over single element slice treefmt-check> --> zhost-cli/tests/test_cli.py:458:11 treefmt-check> | treefmt-check> 456 | } treefmt-check> 457 | main(["highlight", "add", "PAPER222", "--pdf", pdf, "--text", "highlight this"]) treefmt-check> 458 | ann = [ treefmt-check> | ___________^ treefmt-check> 459 | | r treefmt-check> 460 | | for r in _reqs("POST", "/users/1/items") treefmt-check> 461 | | if r["body"][0]["itemType"] == "annotation" treefmt-check> 462 | | ][0] treefmt-check> | |________^ treefmt-check> 463 | assert ann["body"][0]["parentItem"] == "ATTAC222" treefmt-check> 464 | assert ann["body"][0]["annotationText"] == "highlight this" treefmt-check> | treefmt-check> help: Replace with `next(...)` treefmt-check> treefmt-check> SIM115 Use a context manager for opening files treefmt-check> --> zhost-cli/tests/test_cli.py:503:5 treefmt-check> | treefmt-check> 501 | ) -> None: treefmt-check> 502 | pdf = f"{tmp_path}/p.pdf" treefmt-check> 503 | open(pdf, "wb").write(b"%PDF-1.7 data") treefmt-check> | ^^^^ treefmt-check> 504 | main(["-j", "item", "add", "--title", "P", "--pdf", pdf]) treefmt-check> 505 | out = json.loads(capsys.readouterr().out) treefmt-check> | treefmt-check> treefmt-check> SIM115 Use a context manager for opening files treefmt-check> --> zhost-cli/tests/test_cli.py:546:5 treefmt-check> | treefmt-check> 544 | ) -> None: treefmt-check> 545 | pdf = f"{tmp_path}/p.pdf" treefmt-check> 546 | open(pdf, "wb").write(b"%PDF-1.7 new") treefmt-check> | ^^^^ treefmt-check> 547 | State.items["PAPER222"] = {"key": "PAPER222", "itemType": "journalArticle"} treefmt-check> 548 | State.items["ATTAC222"] = { treefmt-check> | treefmt-check> treefmt-check> SIM115 Use a context manager for opening files treefmt-check> --> zhost-cli/tests/test_cli.py:656:27 treefmt-check> | treefmt-check> 654 | main(["library", "export", out]) treefmt-check> 655 | treefmt-check> 656 | manifest = json.loads(open(f"{out}/manifest.json").read()) treefmt-check> | ^^^^ treefmt-check> 657 | assert manifest["counts"]["items"] == 1 # one top-level paper treefmt-check> | treefmt-check> treefmt-check> SIM115 Use a context manager for opening files treefmt-check> --> zhost-cli/tests/test_cli.py:659:22 treefmt-check> | treefmt-check> 657 | assert manifest["counts"]["items"] == 1 # one top-level paper treefmt-check> 658 | treefmt-check> 659 | rec = json.loads(open(f"{out}/items/PAPER222.json").read()) treefmt-check> | ^^^^ treefmt-check> 660 | assert rec["item"]["data"]["title"] == "P" treefmt-check> 661 | assert {c["key"] for c in rec["children"]} == {"ATTAC222", "NOTE2222"} treefmt-check> | treefmt-check> treefmt-check> SIM115 Use a context manager for opening files treefmt-check> --> zhost-cli/tests/test_cli.py:664:12 treefmt-check> | treefmt-check> 662 | assert rec["fulltext"]["ATTAC222"]["content"] == "full body" treefmt-check> 663 | treefmt-check> 664 | assert open(f"{out}/files/ATTAC222/p.pdf", "rb").read().startswith(b"%PDF") treefmt-check> | ^^^^ treefmt-check> 665 | colls = json.loads(open(f"{out}/collections.json").read()) treefmt-check> 666 | assert any(c["key"] == "FOLDER22" for c in colls) treefmt-check> | treefmt-check> treefmt-check> SIM115 Use a context manager for opening files treefmt-check> --> zhost-cli/tests/test_cli.py:665:24 treefmt-check> | treefmt-check> 664 | assert open(f"{out}/files/ATTAC222/p.pdf", "rb").read().startswith(b"%PDF") treefmt-check> 665 | colls = json.loads(open(f"{out}/collections.json").read()) treefmt-check> | ^^^^ treefmt-check> 666 | assert any(c["key"] == "FOLDER22" for c in colls) treefmt-check> | treefmt-check> treefmt-check> SIM115 Use a context manager for opening files treefmt-check> --> zhost-cli/tests/test_cli.py:717:43 treefmt-check> | treefmt-check> 715 | exported_items = {p[:-5] for p in os.listdir(f"{out}/items")} treefmt-check> 716 | assert exported_items == {"PAPER222", "SUBPAP22", "CROSS222"} treefmt-check> 717 | colls = {c["key"] for c in json.loads(open(f"{out}/collections.json").read())} treefmt-check> | ^^^^ treefmt-check> 718 | assert colls == {"ROOT2222", "FOLDER22", "SUBCOL22"} treefmt-check> 719 | cross = json.loads(open(f"{out}/items/CROSS222.json").read()) treefmt-check> | treefmt-check> treefmt-check> SIM115 Use a context manager for opening files treefmt-check> --> zhost-cli/tests/test_cli.py:719:24 treefmt-check> | treefmt-check> 717 | colls = {c["key"] for c in json.loads(open(f"{out}/collections.json").read())} treefmt-check> 718 | assert colls == {"ROOT2222", "FOLDER22", "SUBCOL22"} treefmt-check> 719 | cross = json.loads(open(f"{out}/items/CROSS222.json").read()) treefmt-check> | ^^^^ treefmt-check> 720 | assert cross["item"]["data"]["collections"] == ["FOLDER22"] treefmt-check> | treefmt-check> treefmt-check> SIM115 Use a context manager for opening files treefmt-check> --> zhost-cli/tests/test_cli.py:734:27 treefmt-check> | treefmt-check> 732 | main(["library", "export", out]) treefmt-check> 733 | treefmt-check> 734 | settings = json.loads(open(f"{out}/settings.json").read()) treefmt-check> | ^^^^ treefmt-check> 735 | assert settings["tagColors"]["value"] == [{"name": "read", "color": "#5fb236"}] treefmt-check> | treefmt-check> treefmt-check> SIM115 Use a context manager for opening files treefmt-check> --> zhost-cli/zhost_cli/client.py:274:16 treefmt-check> | treefmt-check> 272 | ) -> Response: treefmt-check> 273 | """Run the full authorize -> upload -> register sequence for `path`.""" treefmt-check> 274 | data = open(path, "rb").read() treefmt-check> | ^^^^ treefmt-check> 275 | md5 = hashlib.md5(data).hexdigest() treefmt-check> 276 | stat = os.stat(path) treefmt-check> | treefmt-check> treefmt-check> Found 134 errors (21 fixed, 113 remaining). treefmt-check> No fixes available (10 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> --> context7-cli/context7_cli.py:1:1 treefmt-check> treefmt-check> Found 1 error. 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> --> crwl-cli/crawl.py:1:1 treefmt-check> treefmt-check> Found 1 error. 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> --> crabfit-cli/crabfit_cli.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> crabfit-cli/tests/__init__.py:1:1 treefmt-check> treefmt-check> CPY001 Missing copyright notice at top of file treefmt-check> --> crabfit-cli/tests/test_crabfit_cli.py:1:1 treefmt-check> treefmt-check> Found 3 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> --> 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> SIM102 Use a single `if` statement instead of nested `if` statements treefmt-check> --> n8n-cli/n8n_cli/commands/apply.py:66:13 treefmt-check> | treefmt-check> 65 | # Filter by IDs if specified treefmt-check> 66 | / if ids: treefmt-check> 67 | | if not wf_id or wf_id not in ids: treefmt-check> | |_________________________________________________^ treefmt-check> 68 | 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:185:5 treefmt-check> | treefmt-check> 183 | return True treefmt-check> 184 | # Compare active state treefmt-check> 185 | / if local.get("active") != remote.get("active"): treefmt-check> 186 | | return True treefmt-check> 187 | | 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:272:9 treefmt-check> | treefmt-check> 270 | local_updated = data.get("updatedAt") treefmt-check> 271 | remote_updated = remote.get("updatedAt") treefmt-check> 272 | / if local_updated and remote_updated and remote_updated > local_updated: treefmt-check> 273 | | if not ns.force: treefmt-check> | |____________________________^ treefmt-check> 274 | print( treefmt-check> 275 | 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/conftest.py:333:5 treefmt-check> | treefmt-check> 331 | "N8N_API_KEY": "test-key-1234", treefmt-check> 332 | } treefmt-check> 333 | / with patch.dict("os.environ", env, clear=False): treefmt-check> 334 | | with patch("sys.argv", ["n8n-cli", *argv]): treefmt-check> | |___________________________________________________^ treefmt-check> 335 | try: treefmt-check> 336 | 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/conftest.py:354:5 treefmt-check> | treefmt-check> 352 | "N8N_API_KEY": "test-key-1234", treefmt-check> 353 | } treefmt-check> 354 | / with patch.dict("os.environ", env, clear=False): treefmt-check> 355 | | with patch("sys.argv", ["n8n-cli", *argv]): treefmt-check> | |___________________________________________________^ treefmt-check> 356 | with pytest.raises(SystemExit) as exc_info: treefmt-check> 357 | 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: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 18 errors (11 fixed, 7 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 363 files treefmt-check> emitted 319 files for processing treefmt-check> formatted 128 files (25 changed) in 3.238s treefmt-check> Error: failed to finalise formatting: formatting failures detected error: Cannot build '/nix/store/lh1bisj23hi9kamqdkb3mrlvjda8paw1-treefmt-check.drv'. Reason: builder failed with exit code 1. Output paths: /nix/store/ilnfmcrld2zalbkaa93l9babwslc7yil-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 363 files > emitted 319 files for processing > formatted 128 files (25 changed) in 3.238s > Error: failed to finalise formatting: formatting failures detected For full logs, run: nix log /nix/store/lh1bisj23hi9kamqdkb3mrlvjda8paw1-treefmt-check.drv