#32223: Path.resolve(strict=True) can raise a PermissionError in autoreloader.
-------------------------------------+-------------------------------------
               Reporter:  Mariusz    |          Owner:  nobody
  Felisiak                           |
                   Type:  Bug        |         Status:  new
              Component:  Core       |        Version:  3.1
  (Management commands)              |
               Severity:  Normal     |       Keywords:
           Triage Stage:  Accepted   |      Has patch:  0
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 Using `Path.resolve(strict=True)` can cause permission errors when users
 don't have permissions to all intermediate directories in a Django
 installation path, see:
 {{{
 Traceback (most recent call last):
   File "manage.py", line 21, in <module>
     main()
   File "manage.py", line 17, in main
     execute_from_command_line(sys.argv)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/core/management/__init__.py", line 401, in
 execute_from_command_line
     utility.execute()
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/core/management/__init__.py", line 395, in execute
     self.fetch_command(subcommand).run_from_argv(self.argv)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/core/management/base.py", line 328, in run_from_argv
     self.execute(*args, **cmd_options)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/core/management/commands/runserver.py", line 60, in
 execute
     super().execute(*args, **options)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/core/management/base.py", line 369, in execute
     output = self.handle(*args, **options)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/core/management/commands/runserver.py", line 95, in handle
     self.run(**options)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/core/management/commands/runserver.py", line 102, in run
     autoreload.run_with_reloader(self.inner_run, **options)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 599, in run_with_reloader
     start_django(reloader, main_func, *args, **kwargs)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 584, in start_django
     reloader.run(django_main_thread)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 299, in run
     self.run_loop()
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 305, in run_loop
     next(ticker)
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 345, in tick
     for filepath, mtime in self.snapshot_files():
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 361, in snapshot_files
     for file in self.watched_files():
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 260, in watched_files
     yield from iter_all_python_module_files()
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 105, in
 iter_all_python_module_files
     return iter_modules_and_files(modules, frozenset(_error_files))
   File "/usr/home/XXX/.virtualenvs/go/lib/python3.8/site-
 packages/django/utils/autoreload.py", line 141, in iter_modules_and_files
     resolved_path = path.resolve(strict=True).absolute()
   File "/usr/local/lib/python3.8/pathlib.py", line 1180, in resolve
     s = self._flavour.resolve(self, strict=strict)
   File "/usr/local/lib/python3.8/pathlib.py", line 362, in resolve
     return _resolve(base, str(path)) or sep
   File "/usr/local/lib/python3.8/pathlib.py", line 346, in _resolve
     target = accessor.readlink(newpath)
   File "/usr/local/lib/python3.8/pathlib.py", line 451, in readlink
     return os.readlink(path)
 PermissionError: [Errno 13] Permission denied: '/usr'
 }}}

 Regression in e28671187903e6aca2428374fdd504fca3032aee (Django 3.0).

 Thanks Jakub SzafraƄski for the
 [https://code.djangoproject.com/ticket/31912#comment:15 report].

-- 
Ticket URL: <https://code.djangoproject.com/ticket/32223>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/050.1db9499ab4e6a4c6154d5868645007d0%40djangoproject.com.

Reply via email to