[Django] #20422: makemessages ignores "ignore patterns"

44 views
Skip to first unread message

Django

unread,
May 16, 2013, 11:14:48 AM5/16/13
to django-...@googlegroups.com
#20422: makemessages ignores "ignore patterns"
--------------------------------------------+----------------------------
Reporter: nnseva | Owner: nobody
Type: Bug | Status: new
Component: Core (Management commands) | Version: 1.5
Severity: Normal | Keywords: ignore,pattern
Triage Stage: Unreviewed | Has patch: 1
Easy pickings: 0 | UI/UX: 0
--------------------------------------------+----------------------------
The default ignore pattern set contains '.*','*~', and 'CVS' patterns. As
I was expecting, it should mean that any file having file NAME like these
patterns, should be ignored.

Really, the makemessages management command ignores only project root
files having file names like these.

As a result, the makemessages makes such unexpected things like walking
through all .svn directories except root, or trying to analyze binary Mac
OS X - specific file descriptors like '._adminoverride.js'

The reason for such inconsistency is a function is_ignored() defined in
the makemessages.py.

While the django 1.5 declares this function in a module context, the
current trunk defines it in a context of the find_files() function (it is
not important, but makes creating ready-to-use patch harder).

Anyway, the only line required to be fixed is:
{{{
if fnmatch.fnmatchcase(path, pattern):
}}}
which should be replaced by:
{{{
if fnmatch.fnmatchcase(os.path.split(path)[-1], pattern):
}}}
This simple change makes makemessages command working with ignore patterns
as expected.

The applied patch has been created for django version 1.5.1-final:
{{{
>>> import django
>>> django.VERSION
(1, 5, 1, 'final', 0)
}}}

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

Django

unread,
May 16, 2013, 12:38:28 PM5/16/13
to django-...@googlegroups.com
#20422: makemessages ignores "ignore patterns"
-------------------------------------+-------------------------------------

Reporter: nnseva | Owner: nobody
Type: Bug | Status: new
Component: Core (Management | Version: 1.5
commands) | Resolution:
Severity: Normal | Triage Stage: Accepted
Keywords: ignore,pattern | Needs documentation: 0
Has patch: 1 | Patch needs improvement: 0
Needs tests: 0 | UI/UX: 0
Easy pickings: 0 |
-------------------------------------+-------------------------------------
Changes (by bmispelon):

* cc: bmispelon@… (added)
* needs_docs: => 0
* needs_better_patch: => 0
* needs_tests: => 0
* stage: Unreviewed => Accepted


Comment:

Hi,

I added some tests and rewrote the `is_ignored` function a bit (using the
builtin `any` instead of the loop).
I made a pull request out of it:
https://github.com/django/django/pull/1076

Thank you for the report and the original patch.

--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:1>

Django

unread,
May 18, 2013, 4:20:48 AM5/18/13
to django-...@googlegroups.com
#20422: makemessages ignores "ignore patterns"
-------------------------------------+-------------------------------------
Reporter: nnseva | Owner: claudep
Type: Bug | Status: assigned

Component: Core (Management | Version: 1.5
commands) | Resolution:
Severity: Normal | Triage Stage: Ready for
Keywords: ignore,pattern | checkin
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by claudep):

* owner: nobody => claudep
* status: new => assigned
* stage: Accepted => Ready for checkin


--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:2>

Django

unread,
May 18, 2013, 4:40:43 AM5/18/13
to django-...@googlegroups.com
#20422: makemessages ignores "ignore patterns"
-------------------------------------+-------------------------------------
Reporter: nnseva | Owner: claudep
Type: Bug | Status: closed

Component: Core (Management | Version: 1.5
commands) | Resolution: fixed

Severity: Normal | Triage Stage: Ready for
Keywords: ignore,pattern | checkin
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Claude Paroz <claude@…>):

* status: assigned => closed
* resolution: => fixed


Comment:

In [changeset:"9012a9e2000020493b881a5b79cc801c62180796"]:
{{{
#!CommitTicketReference repository=""
revision="9012a9e2000020493b881a5b79cc801c62180796"
Fixed #20422 -- Applied makemessage's --ignore patterns to full path

Fix makemessage's --ignore patterns being applied to the full path
instead of the file name. Thanks to nnseva for the report and the
original patch.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:3>

Django

unread,
Mar 14, 2014, 11:50:18 AM3/14/14
to django-...@googlegroups.com
#20422: makemessages ignores "ignore patterns"
-------------------------------------+-------------------------------------
Reporter: nnseva | Owner: claudep
Type: Bug | Status: new
Component: Core (Management | Version: 1.6
commands) | Resolution:

Severity: Normal | Triage Stage: Ready for
Keywords: ignore,pattern | checkin
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 1

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by fdemmer):

* status: closed => new
* needs_better_patch: 0 => 1
* version: 1.5 => 1.6
* resolution: fixed =>


Comment:

Unfortunately the assumption that "file NAME like these patterns, should
be ignored" was not correct. According to the documentation the --ignore
pattern should "ignore files or directories matching"
(https://docs.djangoproject.com/en/1.6/ref/django-admin/#django-admin-
option---ignore)

The example given in the docs actually uses patterns with paths:

{{{django-admin.py makemessages --locale=en_US --ignore=apps/*
--ignore=secret/*.html}}}

The applied patch breaks this behaviour by using {{{filename =
os.path.basename(path)}}}

Being able to exclude paths is important to eg. easily exclude certain
apps in a project from translation.

--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:4>

Django

unread,
Mar 25, 2014, 7:30:51 AM3/25/14
to django-...@googlegroups.com
#20422: makemessages ignores "ignore patterns"
-------------------------------------+-------------------------------------
Reporter: nnseva | Owner: claudep
Type: Bug | Status: new
Component: Core (Management | Version: 1.5

commands) | Resolution:
Severity: Normal | Triage Stage: Ready for
Keywords: ignore,pattern | checkin
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by timo):

* needs_better_patch: 1 => 0
* version: 1.6 => 1.5


Comment:

Could you please open a new ticket as the fix for this one has already
been released? Thanks.

--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:5>

Django

unread,
Mar 25, 2014, 7:54:21 AM3/25/14
to django-...@googlegroups.com
#20422: makemessages ignores "ignore patterns"
-------------------------------------+-------------------------------------
Reporter: nnseva | Owner: claudep
Type: Bug | Status: closed

Component: Core (Management | Version: 1.5
commands) | Resolution: fixed

Severity: Normal | Triage Stage: Ready for
Keywords: ignore,pattern | checkin
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by timo):

* status: new => closed
* resolution: => fixed


--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:6>

Django

unread,
Mar 25, 2014, 8:46:45 PM3/25/14
to django-...@googlegroups.com
#20422: makemessages ignores "ignore patterns"
-------------------------------------+-------------------------------------
Reporter: nnseva | Owner: claudep
Type: Bug | Status: closed
Component: Core (Management | Version: 1.5
commands) | Resolution: fixed
Severity: Normal | Triage Stage: Ready for
Keywords: ignore,pattern | checkin
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by infraredgirl):

I opened a new ticket for this regression:

https://code.djangoproject.com/ticket/22336

--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:7>

Django

unread,
Aug 18, 2014, 12:33:35 PM8/18/14
to django-...@googlegroups.com
#20422: makemessages ignores "ignore patterns"
-------------------------------------+-------------------------------------
Reporter: nnseva | Owner: claudep
Type: Bug | Status: closed
Component: Core (Management | Version: 1.5
commands) | Resolution: fixed
Severity: Normal | Triage Stage: Ready for
Keywords: ignore,pattern | checkin
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Ramiro Morales <ramiro@…>):

In [changeset:"b4dce7c37ab7666b023ac791d2c46dad6c8aa637"]:
{{{
#!CommitTicketReference repository=""
revision="b4dce7c37ab7666b023ac791d2c46dad6c8aa637"
Fixed #23298 -- Made makemessages actually ignore specified dirs on
Windows.

This was detected by two failures in the i18n.test_extraction of our
test suite.

Refs #20422, refs #22336
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:8>

Django

unread,
Aug 18, 2014, 1:00:52 PM8/18/14
to django-...@googlegroups.com
#20422: makemessages ignores "ignore patterns"
-------------------------------------+-------------------------------------
Reporter: nnseva | Owner: claudep
Type: Bug | Status: closed
Component: Core (Management | Version: 1.5
commands) | Resolution: fixed
Severity: Normal | Triage Stage: Ready for
Keywords: ignore,pattern | checkin
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Tim Graham <timograham@…>):

In [changeset:"126606c5b8499830cd56cbe632f6af17bc7471ea"]:
{{{
#!CommitTicketReference repository=""
revision="126606c5b8499830cd56cbe632f6af17bc7471ea"
[1.7.x] Fixed #23298 -- Made makemessages actually ignore specified dirs
on Windows.

This was detected by two failures in the i18n.test_extraction of our
test suite.

Refs #20422, refs #22336

Backport of b4dce7c37a from master
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/20422#comment:9>

Reply all
Reply to author
Forward
0 new messages