==========
watchfiles
==========

-------------------------------------------------
Simple, modern and high performance file watching
-------------------------------------------------

:Author: Louis-Philippe Véronneau
:Date: 2024
:Manual section: 1

Synopsis
========

watchfiles [**--ignore-paths** *<IGNORE_PATHS>*] [**--target-type** (*command* | *function* | *auto*)] [**--filter** *<FILTER>*] [**--args** *<ARGS>*] [**--verbose]** [**--non-recursive**] [**--verbosity** (*warning* | *info* | *debug*)] [**--sigint-timeout** *<SIGINT_TIMEOUT>*] [**--grace-period** *<GRACE_PERIOD>*] [**--sigkill-timeout** *<SIGKILL_TIMEOUT>*] [**--ignore-permission-denied**] *target* [*paths* ...]

| 
| watchfiles (**-h** \| **--help**)
| watchfiles (**-V** \| **--version**)

Description
===========

*watchfiles* watches one or more directories and executes either a Shell command
or a Python function on file changes.

Arguments
=========

| *target*  Command or dotted function path to run
| *paths*   Filesystem paths to watch, defaults to current directory

Options
=======

| **-h** | **--help**
|     Show this help message and exit

| **--ignore-paths** *<IGNORE_PATHS>*
|     Specify directories to ignore, to ignore multiple paths use a comma as
|     separator, e.g. "env" or "env,node_modules"

| **--target-type** (*command* | *function* | *auto*)
|     Whether the target should be intercepted as a shell command or a Python
|     function, defaults to "auto" which infers the target type from the target
|     string

| **--filter** *<FILTER>*
|     Which files to watch, defaults to "default" which uses the
|     "DefaultFilter", "python" uses the "PythonFilter", "all" uses no filter,
|     any other value is interpreted as a Python function/class path which is
|     imported

| **--args** *<ARGS>*
|     Arguments to set on sys.argv before calling target function, used only if
|     the target is a function

| **--verbose**
|     Set log level to "debug", wins over **--verbosity**

| **--non-recursive**
|     Do not watch for changes in sub-directories recursively

| **--verbosity** (*warning* | *info* | *debug*)
|     Log level, defaults to "info"

| **--sigint-timeout** *<SIGINT_TIMEOUT>*
|     How long to wait for the sigint timeout before sending sigkill.

| **--grace-period** *<GRACE_PERIOD>*
|     Number of seconds after the process is started before watching for
|     changes.

| **--sigkill-timeout** *<SIGKILL_TIMEOUT>*
|     How long to wait for the sigkill timeout before issuing a timeout
|     exception.

| **--ignore-permission-denied**
|     Ignore permission denied errors while watching files and directories.

|  **-V** | **--version**
|     Show program's version number and exit

Examples
========

Watching the current directory and calling a Python function:

    $ watchfiles foobar.main

Watching Python files in two local directories and calling a Shell command:

    $ watchfiles --filter python 'pytest --lf' src tests

Bugs
====

Bugs can be reported to your distribution's bug tracker or upstream
at https://github.com/samuelcolvin/watchfiles/issues
