done
This commit is contained in:
36
lib/python3.11/site-packages/dash/_watch.py
Normal file
36
lib/python3.11/site-packages/dash/_watch.py
Normal file
@ -0,0 +1,36 @@
|
||||
import collections
|
||||
import os
|
||||
import re
|
||||
import time
|
||||
|
||||
|
||||
def watch(folders, on_change, pattern=None, sleep_time=0.1):
|
||||
pattern = re.compile(pattern) if pattern else None
|
||||
watched = collections.defaultdict(lambda: -1.0)
|
||||
|
||||
def walk():
|
||||
walked = []
|
||||
for folder in folders:
|
||||
for current, _, files in os.walk(folder):
|
||||
for f in files:
|
||||
if pattern and not pattern.search(f):
|
||||
continue
|
||||
path = os.path.join(current, f)
|
||||
|
||||
info = os.stat(path)
|
||||
new_time = info.st_mtime
|
||||
|
||||
if new_time > watched[path] > 0:
|
||||
on_change(path, new_time, False)
|
||||
|
||||
watched[path] = new_time
|
||||
walked.append(path)
|
||||
|
||||
# Look for deleted files
|
||||
for w in [x for x in watched.keys() if x not in walked]:
|
||||
del watched[w]
|
||||
on_change(w, -1, True)
|
||||
|
||||
while True:
|
||||
walk()
|
||||
time.sleep(sleep_time)
|
Reference in New Issue
Block a user