Fixes to enable an import of the watchdog module
This commit is contained in:
parent
750cf953da
commit
ac4b6fc7b5
14 changed files with 111 additions and 46 deletions
|
@ -88,7 +88,7 @@ Event Handler Classes
|
||||||
import os.path
|
import os.path
|
||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
from watchdog.utils.patterns import match_any_paths
|
from .utils.patterns import match_any_paths
|
||||||
|
|
||||||
|
|
||||||
EVENT_TYPE_MOVED = 'moved'
|
EVENT_TYPE_MOVED = 'moved'
|
||||||
|
|
|
@ -54,8 +54,8 @@ Class Platforms Note
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import warnings
|
import warnings
|
||||||
from watchdog.utils import platform
|
from ..utils import platform
|
||||||
from watchdog.utils import UnsupportedLibc
|
from ..utils import UnsupportedLibc
|
||||||
|
|
||||||
if platform.is_linux():
|
if platform.is_linux():
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -19,8 +19,8 @@ import queue
|
||||||
import threading
|
import threading
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from watchdog.utils import BaseThread
|
from ..utils import BaseThread
|
||||||
from watchdog.utils.bricks import SkipRepeatsQueue
|
from ..utils.bricks import SkipRepeatsQueue
|
||||||
|
|
||||||
DEFAULT_EMITTER_TIMEOUT = 1 # in seconds.
|
DEFAULT_EMITTER_TIMEOUT = 1 # in seconds.
|
||||||
DEFAULT_OBSERVER_TIMEOUT = 1 # in seconds.
|
DEFAULT_OBSERVER_TIMEOUT = 1 # in seconds.
|
||||||
|
|
|
@ -28,7 +28,7 @@ import threading
|
||||||
import unicodedata
|
import unicodedata
|
||||||
import _watchdog_fsevents as _fsevents
|
import _watchdog_fsevents as _fsevents
|
||||||
|
|
||||||
from watchdog.events import (
|
from ..events import (
|
||||||
FileDeletedEvent,
|
FileDeletedEvent,
|
||||||
FileModifiedEvent,
|
FileModifiedEvent,
|
||||||
FileCreatedEvent,
|
FileCreatedEvent,
|
||||||
|
@ -39,7 +39,7 @@ from watchdog.events import (
|
||||||
DirMovedEvent
|
DirMovedEvent
|
||||||
)
|
)
|
||||||
|
|
||||||
from watchdog.observers.api import (
|
from .api import (
|
||||||
BaseObserver,
|
BaseObserver,
|
||||||
EventEmitter,
|
EventEmitter,
|
||||||
DEFAULT_EMITTER_TIMEOUT,
|
DEFAULT_EMITTER_TIMEOUT,
|
||||||
|
|
|
@ -26,7 +26,7 @@ import queue
|
||||||
import unicodedata
|
import unicodedata
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
||||||
from watchdog.events import (
|
from ..events import (
|
||||||
FileDeletedEvent,
|
FileDeletedEvent,
|
||||||
FileModifiedEvent,
|
FileModifiedEvent,
|
||||||
FileCreatedEvent,
|
FileCreatedEvent,
|
||||||
|
@ -36,7 +36,7 @@ from watchdog.events import (
|
||||||
DirCreatedEvent,
|
DirCreatedEvent,
|
||||||
DirMovedEvent
|
DirMovedEvent
|
||||||
)
|
)
|
||||||
from watchdog.observers.api import (
|
from .api import (
|
||||||
BaseObserver,
|
BaseObserver,
|
||||||
EventEmitter,
|
EventEmitter,
|
||||||
DEFAULT_EMITTER_TIMEOUT,
|
DEFAULT_EMITTER_TIMEOUT,
|
||||||
|
|
|
@ -70,14 +70,14 @@ import os
|
||||||
import threading
|
import threading
|
||||||
from .inotify_buffer import InotifyBuffer
|
from .inotify_buffer import InotifyBuffer
|
||||||
|
|
||||||
from watchdog.observers.api import (
|
from .api import (
|
||||||
EventEmitter,
|
EventEmitter,
|
||||||
BaseObserver,
|
BaseObserver,
|
||||||
DEFAULT_EMITTER_TIMEOUT,
|
DEFAULT_EMITTER_TIMEOUT,
|
||||||
DEFAULT_OBSERVER_TIMEOUT
|
DEFAULT_OBSERVER_TIMEOUT
|
||||||
)
|
)
|
||||||
|
|
||||||
from watchdog.events import (
|
from ..events import (
|
||||||
DirDeletedEvent,
|
DirDeletedEvent,
|
||||||
DirModifiedEvent,
|
DirModifiedEvent,
|
||||||
DirMovedEvent,
|
DirMovedEvent,
|
||||||
|
|
|
@ -15,9 +15,9 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
from watchdog.utils import BaseThread
|
from ..utils import BaseThread
|
||||||
from watchdog.utils.delayed_queue import DelayedQueue
|
from ..utils.delayed_queue import DelayedQueue
|
||||||
from watchdog.observers.inotify_c import Inotify
|
from .inotify_c import Inotify
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ import ctypes
|
||||||
import ctypes.util
|
import ctypes.util
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
from ctypes import c_int, c_char_p, c_uint32
|
from ctypes import c_int, c_char_p, c_uint32
|
||||||
from watchdog.utils import UnsupportedLibc
|
from ..utils import UnsupportedLibc
|
||||||
|
|
||||||
|
|
||||||
def _load_libc():
|
def _load_libc():
|
||||||
|
|
|
@ -67,7 +67,7 @@ Collections and Utility Classes
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from watchdog.utils import platform
|
from ..utils import platform
|
||||||
|
|
||||||
import threading
|
import threading
|
||||||
import errno
|
import errno
|
||||||
|
@ -78,16 +78,16 @@ import select
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from watchdog.observers.api import (
|
from .api import (
|
||||||
BaseObserver,
|
BaseObserver,
|
||||||
EventEmitter,
|
EventEmitter,
|
||||||
DEFAULT_OBSERVER_TIMEOUT,
|
DEFAULT_OBSERVER_TIMEOUT,
|
||||||
DEFAULT_EMITTER_TIMEOUT
|
DEFAULT_EMITTER_TIMEOUT
|
||||||
)
|
)
|
||||||
|
|
||||||
from watchdog.utils.dirsnapshot import DirectorySnapshot
|
from ..utils.dirsnapshot import DirectorySnapshot
|
||||||
|
|
||||||
from watchdog.events import (
|
from ..events import (
|
||||||
DirMovedEvent,
|
DirMovedEvent,
|
||||||
DirDeletedEvent,
|
DirDeletedEvent,
|
||||||
DirCreatedEvent,
|
DirCreatedEvent,
|
||||||
|
|
|
@ -38,15 +38,15 @@ import os
|
||||||
import threading
|
import threading
|
||||||
from functools import partial
|
from functools import partial
|
||||||
|
|
||||||
from watchdog.utils.dirsnapshot import DirectorySnapshot, DirectorySnapshotDiff
|
from ..utils.dirsnapshot import DirectorySnapshot, DirectorySnapshotDiff
|
||||||
from watchdog.observers.api import (
|
from .api import (
|
||||||
EventEmitter,
|
EventEmitter,
|
||||||
BaseObserver,
|
BaseObserver,
|
||||||
DEFAULT_OBSERVER_TIMEOUT,
|
DEFAULT_OBSERVER_TIMEOUT,
|
||||||
DEFAULT_EMITTER_TIMEOUT
|
DEFAULT_EMITTER_TIMEOUT
|
||||||
)
|
)
|
||||||
|
|
||||||
from watchdog.events import (
|
from ..events import (
|
||||||
DirMovedEvent,
|
DirMovedEvent,
|
||||||
DirDeletedEvent,
|
DirDeletedEvent,
|
||||||
DirCreatedEvent,
|
DirCreatedEvent,
|
||||||
|
|
|
@ -20,7 +20,7 @@ import threading
|
||||||
import os.path
|
import os.path
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from watchdog.events import (
|
from ..events import (
|
||||||
DirCreatedEvent,
|
DirCreatedEvent,
|
||||||
DirDeletedEvent,
|
DirDeletedEvent,
|
||||||
DirMovedEvent,
|
DirMovedEvent,
|
||||||
|
@ -33,14 +33,14 @@ from watchdog.events import (
|
||||||
generate_sub_created_events,
|
generate_sub_created_events,
|
||||||
)
|
)
|
||||||
|
|
||||||
from watchdog.observers.api import (
|
from api import (
|
||||||
EventEmitter,
|
EventEmitter,
|
||||||
BaseObserver,
|
BaseObserver,
|
||||||
DEFAULT_OBSERVER_TIMEOUT,
|
DEFAULT_OBSERVER_TIMEOUT,
|
||||||
DEFAULT_EMITTER_TIMEOUT
|
DEFAULT_EMITTER_TIMEOUT
|
||||||
)
|
)
|
||||||
|
|
||||||
from watchdog.observers.winapi import (
|
from winapi import (
|
||||||
read_events,
|
read_events,
|
||||||
get_directory_handle,
|
get_directory_handle,
|
||||||
close_directory_handle,
|
close_directory_handle,
|
||||||
|
|
|
@ -46,8 +46,8 @@ import signal
|
||||||
import subprocess
|
import subprocess
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from watchdog.utils import echo
|
from ..utils import echo
|
||||||
from watchdog.events import PatternMatchingEventHandler
|
from ..events import PatternMatchingEventHandler
|
||||||
|
|
||||||
|
|
||||||
class Trick(PatternMatchingEventHandler):
|
class Trick(PatternMatchingEventHandler):
|
||||||
|
|
|
@ -35,7 +35,6 @@ Classes
|
||||||
.. autoclass:: OrderedSet
|
.. autoclass:: OrderedSet
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import queue
|
import queue
|
||||||
|
|
||||||
|
|
||||||
|
@ -100,3 +99,69 @@ class SkipRepeatsQueue(queue.Queue):
|
||||||
if item is self._last_item:
|
if item is self._last_item:
|
||||||
self._last_item = None
|
self._last_item = None
|
||||||
return item
|
return item
|
||||||
|
|
||||||
|
|
||||||
|
class OrderedSetQueue(queue.Queue):
|
||||||
|
|
||||||
|
"""Thread-safe implementation of an ordered set queue.
|
||||||
|
|
||||||
|
Disallows adding a duplicate item while maintaining the
|
||||||
|
order of items in the queue. The implementation leverages
|
||||||
|
locking already implemented in the base class
|
||||||
|
redefining only the primitives. Since the internal queue
|
||||||
|
is not replaced, the order is maintained. The set is used
|
||||||
|
merely to check for the existence of an item.
|
||||||
|
|
||||||
|
Queued items must be immutable and hashable so that they can be used
|
||||||
|
as dictionary keys. You must implement **only read-only properties** and
|
||||||
|
the :meth:`Item.__hash__()`, :meth:`Item.__eq__()`, and
|
||||||
|
:meth:`Item.__ne__()` methods for items to be hashable.
|
||||||
|
|
||||||
|
An example implementation follows::
|
||||||
|
|
||||||
|
class Item(object):
|
||||||
|
def __init__(self, a, b):
|
||||||
|
self._a = a
|
||||||
|
self._b = b
|
||||||
|
|
||||||
|
@property
|
||||||
|
def a(self):
|
||||||
|
return self._a
|
||||||
|
|
||||||
|
@property
|
||||||
|
def b(self):
|
||||||
|
return self._b
|
||||||
|
|
||||||
|
def _key(self):
|
||||||
|
return (self._a, self._b)
|
||||||
|
|
||||||
|
def __eq__(self, item):
|
||||||
|
return self._key() == item._key()
|
||||||
|
|
||||||
|
def __ne__(self, item):
|
||||||
|
return self._key() != item._key()
|
||||||
|
|
||||||
|
def __hash__(self):
|
||||||
|
return hash(self._key())
|
||||||
|
|
||||||
|
:author: lalinsky@gmail.com (Lukáš Lalinský)
|
||||||
|
:url: http://stackoverflow.com/questions/1581895/how-check-if-a-task-is-already-in-python-queue
|
||||||
|
"""
|
||||||
|
|
||||||
|
def _init(self, maxsize):
|
||||||
|
queue.Queue._init(self, maxsize)
|
||||||
|
self._set_of_items = set()
|
||||||
|
|
||||||
|
def _put(self, item):
|
||||||
|
if item not in self._set_of_items:
|
||||||
|
queue.Queue._put(self, item)
|
||||||
|
self._set_of_items.add(item)
|
||||||
|
else:
|
||||||
|
# `put` increments `unfinished_tasks` even if we did not put
|
||||||
|
# anything into the queue here
|
||||||
|
self.unfinished_tasks -= 1
|
||||||
|
|
||||||
|
def _get(self):
|
||||||
|
item = queue.Queue._get(self)
|
||||||
|
self._set_of_items.remove(item)
|
||||||
|
return item
|
||||||
|
|
|
@ -32,8 +32,8 @@ import logging
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
|
|
||||||
from argh import arg, aliases, ArghParser, expects_obj
|
from argh import arg, aliases, ArghParser, expects_obj
|
||||||
from watchdog.version import VERSION_STRING
|
from .version import VERSION_STRING
|
||||||
from watchdog.utils import WatchdogShutdown, load_class
|
from .utils import WatchdogShutdown, load_class
|
||||||
|
|
||||||
|
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
@ -162,7 +162,7 @@ def tricks_from(args):
|
||||||
:param args:
|
:param args:
|
||||||
Command line argument options.
|
Command line argument options.
|
||||||
"""
|
"""
|
||||||
from watchdog.observers import Observer
|
from .observers import Observer
|
||||||
|
|
||||||
add_to_sys_path(path_split(args.python_path))
|
add_to_sys_path(path_split(args.python_path))
|
||||||
observers = []
|
observers = []
|
||||||
|
@ -312,8 +312,8 @@ def log(args):
|
||||||
:param args:
|
:param args:
|
||||||
Command line argument options.
|
Command line argument options.
|
||||||
"""
|
"""
|
||||||
from watchdog.utils import echo
|
from .utils import echo
|
||||||
from watchdog.tricks import LoggerTrick
|
from .tricks import LoggerTrick
|
||||||
|
|
||||||
if args.trace:
|
if args.trace:
|
||||||
echo.echo_class(LoggerTrick)
|
echo.echo_class(LoggerTrick)
|
||||||
|
@ -324,23 +324,23 @@ def log(args):
|
||||||
ignore_patterns=ignore_patterns,
|
ignore_patterns=ignore_patterns,
|
||||||
ignore_directories=args.ignore_directories)
|
ignore_directories=args.ignore_directories)
|
||||||
if args.debug_force_polling:
|
if args.debug_force_polling:
|
||||||
from watchdog.observers.polling import PollingObserver as Observer
|
from .observers.polling import PollingObserver as Observer
|
||||||
elif args.debug_force_kqueue:
|
elif args.debug_force_kqueue:
|
||||||
from watchdog.observers.kqueue import KqueueObserver as Observer
|
from .observers.kqueue import KqueueObserver as Observer
|
||||||
elif args.debug_force_winapi_async:
|
elif args.debug_force_winapi_async:
|
||||||
from watchdog.observers.read_directory_changes_async import\
|
from .observers.read_directory_changes_async import\
|
||||||
WindowsApiAsyncObserver as Observer
|
WindowsApiAsyncObserver as Observer
|
||||||
elif args.debug_force_winapi:
|
elif args.debug_force_winapi:
|
||||||
from watchdog.observers.read_directory_changes import\
|
from .observers.read_directory_changes import\
|
||||||
WindowsApiObserver as Observer
|
WindowsApiObserver as Observer
|
||||||
elif args.debug_force_inotify:
|
elif args.debug_force_inotify:
|
||||||
from watchdog.observers.inotify import InotifyObserver as Observer
|
from .observers.inotify import InotifyObserver as Observer
|
||||||
elif args.debug_force_fsevents:
|
elif args.debug_force_fsevents:
|
||||||
from watchdog.observers.fsevents import FSEventsObserver as Observer
|
from .observers.fsevents import FSEventsObserver as Observer
|
||||||
else:
|
else:
|
||||||
# Automatically picks the most appropriate observer for the platform
|
# Automatically picks the most appropriate observer for the platform
|
||||||
# on which it is running.
|
# on which it is running.
|
||||||
from watchdog.observers import Observer
|
from .observers import Observer
|
||||||
observer = Observer(timeout=args.timeout)
|
observer = Observer(timeout=args.timeout)
|
||||||
observe_with(observer, handler, args.directories, args.recursive)
|
observe_with(observer, handler, args.directories, args.recursive)
|
||||||
|
|
||||||
|
@ -420,15 +420,15 @@ def shell_command(args):
|
||||||
:param args:
|
:param args:
|
||||||
Command line argument options.
|
Command line argument options.
|
||||||
"""
|
"""
|
||||||
from watchdog.tricks import ShellCommandTrick
|
from .tricks import ShellCommandTrick
|
||||||
|
|
||||||
if not args.command:
|
if not args.command:
|
||||||
args.command = None
|
args.command = None
|
||||||
|
|
||||||
if args.debug_force_polling:
|
if args.debug_force_polling:
|
||||||
from watchdog.observers.polling import PollingObserver as Observer
|
from .observers.polling import PollingObserver as Observer
|
||||||
else:
|
else:
|
||||||
from watchdog.observers import Observer
|
from .observers import Observer
|
||||||
|
|
||||||
patterns, ignore_patterns = parse_patterns(args.patterns,
|
patterns, ignore_patterns = parse_patterns(args.patterns,
|
||||||
args.ignore_patterns)
|
args.ignore_patterns)
|
||||||
|
@ -510,11 +510,11 @@ def auto_restart(args):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if args.debug_force_polling:
|
if args.debug_force_polling:
|
||||||
from watchdog.observers.polling import PollingObserver as Observer
|
from .observers.polling import PollingObserver as Observer
|
||||||
else:
|
else:
|
||||||
from watchdog.observers import Observer
|
from .observers import Observer
|
||||||
|
|
||||||
from watchdog.tricks import AutoRestartTrick
|
from .tricks import AutoRestartTrick
|
||||||
import signal
|
import signal
|
||||||
|
|
||||||
if not args.directories:
|
if not args.directories:
|
||||||
|
|
Loading…
Reference in a new issue