Skip to content

relax reload_dirs to allow files, and stop adding cwd when reload_dirs is set #2583

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions tests/supervisors/test_reload.py
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,10 @@ def test_should_watch_one_dir_cwd(mocker: MockerFixture, reload_directory_struct
)
WatchFilesReload(config, target=run, sockets=[])
mock_watch.assert_called_once()
assert mock_watch.call_args[0] == (Path.cwd(),)
assert set(mock_watch.call_args[0]) == {
app_first_dir,
app_dir,
}


@pytest.mark.skipif(WatchFilesReload is None, reason="watchfiles not available")
Expand All @@ -333,7 +336,6 @@ def test_should_watch_separate_dirs_outside_cwd(mocker: MockerFixture, reload_di
assert set(mock_watch.call_args[0]) == {
app_dir,
app_first_dir,
Path.cwd(),
}


Expand Down
2 changes: 1 addition & 1 deletion uvicorn/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ def resolve_reload_patterns(patterns_list: list[str], directories_list: list[str
directories = list(set(directories))
directories = list(map(Path, directories))
directories = list(map(lambda x: x.resolve(), directories))
directories = list({reload_path for reload_path in directories if is_dir(reload_path)})
directories = list(set(filter(Path.exists, directories)))

children = []
for j in range(len(directories)):
Expand Down
5 changes: 1 addition & 4 deletions uvicorn/supervisors/watchfilesreload.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,7 @@ def __init__(
self.reloader_name = "WatchFiles"
self.reload_dirs = []
for directory in config.reload_dirs:
if Path.cwd() not in directory.parents:
self.reload_dirs.append(directory)
if Path.cwd() not in self.reload_dirs:
self.reload_dirs.append(Path.cwd())
self.reload_dirs.append(directory)

self.watch_filter = FileFilter(config)
self.watcher = watch(
Expand Down