File tree Expand file tree Collapse file tree 8 files changed +363
-21
lines changed Expand file tree Collapse file tree 8 files changed +363
-21
lines changed Original file line number Diff line number Diff line change 1+ # SOME DESCRIPTIVE TITLE.
2+ # Copyright (C) YEAR ORGANIZATION
3+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4+ #
5+ msgid ""
6+ msgstr ""
7+ "Project-Id-Version : PACKAGE VERSION\n "
8+ "POT-Creation-Date : 2000-01-01 00:00+0000\n "
9+ "PO-Revision-Date : YEAR-MO-DA HO:MI+ZONE\n "
10+ "Last-Translator : FULL NAME <EMAIL@ADDRESS>\n "
11+ "
Language-Team :
LANGUAGE <[email protected] >\n "
12+ "MIME-Version : 1.0\n "
13+ "Content-Type : text/plain; charset=UTF-8\n "
14+ "Content-Transfer-Encoding : 8bit\n "
15+ "Generated-By : pygettext.py 1.5\n "
16+
17+
18+ #: docstrings.py:7
19+ #, docstring
20+ msgid ""
21+ msgstr ""
22+
23+ #: docstrings.py:18
24+ #, docstring
25+ msgid ""
26+ "multiline\n"
27+ " docstring\n"
28+ " "
29+ msgstr ""
30+
31+ #: docstrings.py:25
32+ #, docstring
33+ msgid "docstring1"
34+ msgstr ""
35+
36+ #: docstrings.py:30
37+ #, docstring
38+ msgid "Hello, {}!"
39+ msgstr ""
40+
Original file line number Diff line number Diff line change 1+ # Test docstring extraction
2+ from gettext import gettext as _
3+
4+
5+ # Empty docstring
6+ def test (x ):
7+ """"""
8+
9+
10+ # Leading empty line
11+ def test2 (x ):
12+
13+ """docstring""" # XXX This should be extracted but isn't.
14+
15+
16+ # XXX Multiline docstrings should be cleaned with `inspect.cleandoc`.
17+ def test3 (x ):
18+ """multiline
19+ docstring
20+ """
21+
22+
23+ # Multiple docstrings - only the first should be extracted
24+ def test4 (x ):
25+ """docstring1"""
26+ """docstring2"""
27+
28+
29+ def test5 (x ):
30+ """Hello, {}!""" .format ("world!" ) # XXX This should not be extracted.
31+
32+
33+ # Nested docstrings
34+ def test6 (x ):
35+ def inner (y ):
36+ """nested docstring""" # XXX This should be extracted but isn't.
37+
38+
39+ class Outer :
40+ class Inner :
41+ "nested class docstring" # XXX This should be extracted but isn't.
Original file line number Diff line number Diff line change 1+ # SOME DESCRIPTIVE TITLE.
2+ # Copyright (C) YEAR ORGANIZATION
3+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4+ #
5+ msgid ""
6+ msgstr ""
7+ "Project-Id-Version : PACKAGE VERSION\n "
8+ "POT-Creation-Date : 2000-01-01 00:00+0000\n "
9+ "PO-Revision-Date : YEAR-MO-DA HO:MI+ZONE\n "
10+ "Last-Translator : FULL NAME <EMAIL@ADDRESS>\n "
11+ "
Language-Team :
LANGUAGE <[email protected] >\n "
12+ "MIME-Version : 1.0\n "
13+ "Content-Type : text/plain; charset=UTF-8\n "
14+ "Content-Transfer-Encoding : 8bit\n "
15+ "Generated-By : pygettext.py 1.5\n "
16+
17+
18+ #: fileloc.py:5 fileloc.py:6
19+ msgid "foo"
20+ msgstr ""
21+
22+ #: fileloc.py:9
23+ msgid "bar"
24+ msgstr ""
25+
26+ #: fileloc.py:14 fileloc.py:18
27+ #, docstring
28+ msgid "docstring"
29+ msgstr ""
30+
31+ #: fileloc.py:22 fileloc.py:26
32+ #, docstring
33+ msgid "baz"
34+ msgstr ""
35+
Original file line number Diff line number Diff line change 1+ # Test file locations
2+ from gettext import gettext as _
3+
4+ # Duplicate strings
5+ _ ('foo' )
6+ _ ('foo' )
7+
8+ # Duplicate strings on the same line should only add one location to the output
9+ _ ('bar' ), _ ('bar' )
10+
11+
12+ # Duplicate docstrings
13+ class A :
14+ """docstring"""
15+
16+
17+ def f ():
18+ """docstring"""
19+
20+
21+ # Duplicate message and docstring
22+ _ ('baz' )
23+
24+
25+ def g ():
26+ """baz"""
Original file line number Diff line number Diff line change 1+ # SOME DESCRIPTIVE TITLE.
2+ # Copyright (C) YEAR ORGANIZATION
3+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4+ #
5+ msgid ""
6+ msgstr ""
7+ "Project-Id-Version : PACKAGE VERSION\n "
8+ "POT-Creation-Date : 2000-01-01 00:00+0000\n "
9+ "PO-Revision-Date : YEAR-MO-DA HO:MI+ZONE\n "
10+ "Last-Translator : FULL NAME <EMAIL@ADDRESS>\n "
11+ "
Language-Team :
LANGUAGE <[email protected] >\n "
12+ "MIME-Version : 1.0\n "
13+ "Content-Type : text/plain; charset=UTF-8\n "
14+ "Content-Transfer-Encoding : 8bit\n "
15+ "Generated-By : pygettext.py 1.5\n "
16+
17+
18+ #: messages.py:5
19+ msgid ""
20+ msgstr ""
21+
22+ #: messages.py:8 messages.py:9
23+ msgid "parentheses"
24+ msgstr ""
25+
26+ #: messages.py:12
27+ msgid "Hello, world!"
28+ msgstr ""
29+
30+ #: messages.py:15
31+ msgid ""
32+ "Hello,\n"
33+ " multiline!\n"
34+ msgstr ""
35+
36+ #: messages.py:29
37+ msgid "Hello, {}!"
38+ msgstr ""
39+
40+ #: messages.py:33
41+ msgid "1"
42+ msgstr ""
43+
44+ #: messages.py:33
45+ msgid "2"
46+ msgstr ""
47+
48+ #: messages.py:34 messages.py:35
49+ msgid "A"
50+ msgstr ""
51+
52+ #: messages.py:34 messages.py:35
53+ msgid "B"
54+ msgstr ""
55+
56+ #: messages.py:36
57+ msgid "set"
58+ msgstr ""
59+
60+ #: messages.py:42
61+ msgid "nested string"
62+ msgstr ""
63+
64+ #: messages.py:47
65+ msgid "baz"
66+ msgstr ""
67+
Original file line number Diff line number Diff line change 1+ # Test message extraction
2+ from gettext import gettext as _
3+
4+ # Empty string
5+ _ ("" )
6+
7+ # Extra parentheses
8+ (_ ("parentheses" ))
9+ ((_ ("parentheses" )))
10+
11+ # Multiline strings
12+ _ ("Hello, "
13+ "world!" )
14+
15+ _ ("""Hello,
16+ multiline!
17+ """ )
18+
19+ # Invalid arguments
20+ _ ()
21+ _ (None )
22+ _ (1 )
23+ _ (False )
24+ _ (x = "kwargs are not allowed" )
25+ _ ("foo" , "bar" )
26+ _ ("something" , x = "something else" )
27+
28+ # .format()
29+ _ ("Hello, {}!" ).format ("world" ) # valid
30+ _ ("Hello, {}!" .format ("world" )) # invalid
31+
32+ # Nested structures
33+ _ ("1" ), _ ("2" )
34+ arr = [_ ("A" ), _ ("B" )]
35+ obj = {'a' : _ ("A" ), 'b' : _ ("B" )}
36+ {{{_ ('set' )}}}
37+
38+
39+ # Nested functions and classes
40+ def test ():
41+ _ ("nested string" ) # XXX This should be extracted but isn't.
42+ [_ ("nested string" )]
43+
44+
45+ class Foo :
46+ def bar (self ):
47+ return _ ("baz" )
48+
49+
50+ def bar (x = _ ('default value' )): # XXX This should be extracted but isn't.
51+ pass
52+
53+
54+ def baz (x = [_ ('default value' )]): # XXX This should be extracted but isn't.
55+ pass
56+
57+
58+ # Shadowing _()
59+ def _ (x ):
60+ pass
61+
62+
63+ def _ (x = "don't extract me" ):
64+ pass
You can’t perform that action at this time.
0 commit comments