yurikhan: (Default)
From: [personal profile] yurikhan

Есть лёгкое подозрение, что в строке 36 может выпадать слэш, если аргумент old указан с концевым слэшем, а new без оного. Раз copy_tree выставлена как публичная функция, такой вариант вызова нельзя исключать.

В библиотеке общего назначения вывод в stdout (L122, L126) неуместен.

В чём преимущество select с таймаутом в L129 против time.sleep? В том, что при интерактивном выполнении прерывается по нажатию на клавишу?

Двухшаговое переименование в __exit__ оставляет окно для гонок, когда старый каталог уже уехал, а новый ещё не приехал. Более надёжно такие вещи делаются, если допустимо исходную постановку задачи «у нас есть каталог» поменять на «у нас есть симлинк на каталог». Тогда:

  1. создаётся глубокий клон каталога из-под исходного симлинка (с хардлинками внутри);
  2. в нём делаются необходимые изменения (с разбитием хардлинков перед тем или вместе с тем, как менять файлы);
  3. создаётся временный симлинк на новый каталог;
  4. временный симлинк атомарно переименовывается поверх исходного.

Рекурсивное удаление в L157-162 можно сократить до shutil.rmtree, если не мешают требования обратной совместимости.

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

June 2025

S M T W T F S
1 23 4 56 7
89 1011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 12th, 2025 04:13 am
Powered by Dreamwidth Studios