fix(build): handle read-only files on Windows in rmtree to prevent PermissionError (fixes #6808) - #6817
fix(build): handle read-only files on Windows in rmtree to prevent PermissionError (fixes #6808)#6817eminsk wants to merge 1 commit into
Conversation
…rmissionError (fixes flet-dev#6808)
|
The error handler currently suppresses failures from both Could we let retry failures propagate by removing the blanket def _remove_readonly(func, file_path, _):
os.chmod(file_path, stat.S_IWRITE)
func(file_path)
A regression test should simulate deletion failing both initially and after |
Summary of Changes
This PR fixes
PermissionError: [WinError 5] Access deniedon Windows duringflet build windowswhen cleaning up output directories that contain read-only files (such as.gitpack/index objects).Fixes #6808
Root Cause
In
flet_cli/commands/build_base.py:On Windows, standard
shutil.rmtreewithout an error handler fails withPermissionErrorwhen encountering files with the read-only attribute (stat.S_IREAD), which frequently occur inside.git/objects/pack/or other build artifacts.Solution
rmtreetoflet.utils.files(and re-exported inflet.utils) with an error handler that removes the read-only attribute (os.chmod(path, stat.S_IWRITE)) before retrying deletion. Supports both Python 3.12+ (onexc) and prior versions (onerror).build_base.pyto usermtreeinstead of directshutil.rmtreefor directory cleanup.sdk/python/packages/flet/tests/test_files.py.Summary by Sourcery
Make Windows build directory cleanup resilient to read-only files.
Bug Fixes:
Enhancements:
Tests: