1
0
mirror of https://github.com/django/django.git synced 2025-04-08 15:36:47 +00:00

Fixed #36252 -- Handled duplicate automatic imports in the shell command.

This commit is contained in:
hesham942 2025-03-14 15:16:38 +02:00 committed by nessita
parent 1823a80113
commit e804a07d76
3 changed files with 9 additions and 3 deletions

View File

@ -185,8 +185,8 @@ class Command(BaseCommand):
else:
module = None
name = path
auto_imports[module].append((name, obj))
if (name, obj) not in auto_imports[module]:
auto_imports[module].append((name, obj))
namespace = {
name: obj for items in auto_imports.values() for name, obj in items

View File

@ -55,7 +55,8 @@ Running this customized ``shell`` command with ``verbosity=2`` would show:
from django.urls import resolve, reverse
If an overridden ``shell`` command includes paths that cannot be imported,
these errors are shown when ``verbosity`` is set to ``1`` or higher.
these errors are shown when ``verbosity`` is set to ``1`` or higher. Duplicate
imports are automatically handled.
Note that automatic imports can be disabled for a specific ``shell`` session
using the :option:`--no-imports <shell --no-imports>` flag. To permanently

View File

@ -303,11 +303,16 @@ class ShellCommandAutoImportsTestCase(SimpleTestCase):
def test_message_with_stdout_listing_objects_with_isort_not_installed(self):
class TestCommand(shell.Command):
def get_auto_imports(self):
# Include duplicate import strings to ensure proper handling,
# independent of isort's deduplication (#36252).
return super().get_auto_imports() + [
"django.urls.reverse",
"django.urls.resolve",
"shell",
"django",
"django.urls.reverse",
"shell",
"django",
]
with captured_stdout() as stdout: