#31738: invalid exception thrown "django.core.exceptions.ImproperlyConfigured:
settings.FIXTURE_DIRS contains duplicates."
-------------------------------------+-------------------------------------
     Reporter:  timharsch            |                    Owner:  nobody
         Type:  Uncategorized        |                   Status:  closed
    Component:  Core (Management     |                  Version:  master
  commands)                          |
     Severity:  Normal               |               Resolution:  invalid
     Keywords:                       |             Triage Stage:
                                     |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by felixxm):

 * status:  new => closed
 * resolution:   => invalid
 * component:  Uncategorized => Core (Management commands)
 * easy:  1 => 0


Old description:

> loaddata.py incorrectly throws an ImproperlyConfigured exception when
> FIXTURE_DIRS is a list of one.  See:
> https://github.com/django/django/blame/798835112d81b852efaae0e067af389c733cd1b3/django/core/management/commands/loaddata.py#L296
>
> I changed this code to:
> 286         print(fixture_dirs)
> 287         print(len(fixture_dirs))
> 288         print(len(set(fixture_dirs)))
> 289         if len(fixture_dirs) != len(set(fixture_dirs)):
> 290             raise ImproperlyConfigured("settings.FIXTURE_DIRS
> contains duplicates.")
>
> and set my FIXTURE_DIRS like so:
> FIXTURE_DIRS=('piece/core/fixtures','piece/core/fixtures2')
>
> when I run loaddata I see:
> ('piece/core/fixtures', 'piece/core/fixtures2')
> 2
> 2
> Installed 6 object(s) from 2 fixture(s)
>
> so far so good.  Now set it like so:
> FIXTURE_DIRS=('piece/core/fixtures'')
>
> I run it and get:
>
> piece/core/fixtures
> 19
> 12
> Traceback (most recent call last):
>   File "manage.py", line 16, in <module>
>     execute_from_command_line(sys.argv)
>   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
> packages/django/core/management/__init__.py", line 401, in
> execute_from_command_line
>     utility.execute()
>   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
> packages/django/core/management/__init__.py", line 395, in execute
>     self.fetch_command(subcommand).run_from_argv(self.argv)
>   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
> packages/django/core/management/base.py", line 328, in run_from_argv
>     self.execute(*args, **cmd_options)
>   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
> packages/django/core/management/base.py", line 369, in execute
>     output = self.handle(*args, **options)
>   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
> packages/django/core/management/commands/loaddata.py", line 72, in handle
>     self.loaddata(fixture_labels)
>   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
> packages/django/core/management/commands/loaddata.py", line 106, in
> loaddata
>     if self.find_fixtures(fixture_label):
>   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
> packages/django/core/management/commands/loaddata.py", line 235, in
> find_fixtures
>     fixture_dirs = self.fixture_dirs
>   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
> packages/django/utils/functional.py", line 48, in __get__
>     res = instance.__dict__[self.name] = self.func(instance)
>   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
> packages/django/core/management/commands/loaddata.py", line 290, in
> fixture_dirs
>     raise ImproperlyConfigured("settings.FIXTURE_DIRS contains
> duplicates.")
> django.core.exceptions.ImproperlyConfigured: settings.FIXTURE_DIRS
> contains duplicates.

New description:

 loaddata.py incorrectly throws an ImproperlyConfigured exception when
 FIXTURE_DIRS is a list of one.  See:
 
https://github.com/django/django/blame/798835112d81b852efaae0e067af389c733cd1b3/django/core/management/commands/loaddata.py#L296

 I changed this code to:
 {{{
 286         print(fixture_dirs)
 287         print(len(fixture_dirs))
 288         print(len(set(fixture_dirs)))
 289         if len(fixture_dirs) != len(set(fixture_dirs)):
 290             raise ImproperlyConfigured("settings.FIXTURE_DIRS contains
 duplicates.")
 }}}
 and set my FIXTURE_DIRS like so:
 `FIXTURE_DIRS=('piece/core/fixtures','piece/core/fixtures2')`

 when I run loaddata I see:
 {{{
 ('piece/core/fixtures', 'piece/core/fixtures2')
 2
 2
 Installed 6 object(s) from 2 fixture(s)
 }}}
 so far so good.  Now set it like so:
 `FIXTURE_DIRS=('piece/core/fixtures'')`

 I run it and get:
 {{{{
 piece/core/fixtures
 19
 12
 Traceback (most recent call last):
   File "manage.py", line 16, in <module>
     execute_from_command_line(sys.argv)
   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
 packages/django/core/management/__init__.py", line 401, in
 execute_from_command_line
     utility.execute()
   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
 packages/django/core/management/__init__.py", line 395, in execute
     self.fetch_command(subcommand).run_from_argv(self.argv)
   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
 packages/django/core/management/base.py", line 328, in run_from_argv
     self.execute(*args, **cmd_options)
   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
 packages/django/core/management/base.py", line 369, in execute
     output = self.handle(*args, **options)
   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
 packages/django/core/management/commands/loaddata.py", line 72, in handle
     self.loaddata(fixture_labels)
   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
 packages/django/core/management/commands/loaddata.py", line 106, in
 loaddata
     if self.find_fixtures(fixture_label):
   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
 packages/django/core/management/commands/loaddata.py", line 235, in
 find_fixtures
     fixture_dirs = self.fixture_dirs
   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
 packages/django/utils/functional.py", line 48, in __get__
     res = instance.__dict__[self.name] = self.func(instance)
   File "/Users/harsch/.pyenv/versions/p38/lib/python3.8/site-
 packages/django/core/management/commands/loaddata.py", line 290, in
 fixture_dirs
     raise ImproperlyConfigured("settings.FIXTURE_DIRS contains
 duplicates.")
 django.core.exceptions.ImproperlyConfigured: settings.FIXTURE_DIRS
 contains duplicates.
 }}}}

--

Comment:

 `FIXTURE_DIRS=('piece/core/fixtures')` is not a list or tuple it's a
 string that contains duplicates e.g. `'e'`.

 Closing per TicketClosingReasons/UseSupportChannels.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/31738#comment:1>
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/067.911730f938e5c84d16b6583217591b7b%40djangoproject.com.

Reply via email to