Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
f954c4b9
Commit
f954c4b9
authored
Jun 04, 2008
by
Georg Brandl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove meaning of -ttt, but still accept -t option on cmdline for compatibility.
parent
e5d68ace
Changes
37
Hide whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
1242 additions
and
1082 deletions
+1242
-1082
Doc/c-api/unicode.rst
Doc/c-api/unicode.rst
+10
-0
Doc/library/functions.rst
Doc/library/functions.rst
+8
-0
Doc/library/stdtypes.rst
Doc/library/stdtypes.rst
+8
-0
Doc/library/sys.rst
Doc/library/sys.rst
+0
-2
Doc/using/cmdline.rst
Doc/using/cmdline.rst
+0
-7
Include/pydebug.h
Include/pydebug.h
+0
-1
Include/unicodeobject.h
Include/unicodeobject.h
+8
-0
Lib/doctest.py
Lib/doctest.py
+16
-0
Lib/test/test_array.py
Lib/test/test_array.py
+1
-1
Lib/test/test_builtin.py
Lib/test/test_builtin.py
+3
-0
Lib/test/test_exceptions.py
Lib/test/test_exceptions.py
+4
-4
Lib/test/test_format.py
Lib/test/test_format.py
+4
-2
Lib/test/test_pyexpat.py
Lib/test/test_pyexpat.py
+1
-1
Lib/test/test_unicode.py
Lib/test/test_unicode.py
+14
-8
Mac/BuildScript/scripts/postflight.framework
Mac/BuildScript/scripts/postflight.framework
+4
-4
Mac/Makefile.in
Mac/Makefile.in
+2
-2
Makefile.pre.in
Makefile.pre.in
+7
-7
Misc/NEWS
Misc/NEWS
+2
-0
Misc/build.sh
Misc/build.sh
+1
-1
Misc/cheatsheet
Misc/cheatsheet
+0
-1
Misc/python.man
Misc/python.man
+0
-8
Misc/valgrind-python.supp
Misc/valgrind-python.supp
+1
-1
Modules/main.c
Modules/main.c
+1
-2
Objects/unicodectype.c
Objects/unicodectype.c
+21
-0
Objects/unicodeobject.c
Objects/unicodeobject.c
+117
-59
Objects/unicodetype_db.h
Objects/unicodetype_db.h
+959
-947
PC/VC6/rt.bat
PC/VC6/rt.bat
+2
-2
PC/VS7.1/rt.bat
PC/VS7.1/rt.bat
+1
-1
PC/VS8.0/rt.bat
PC/VS8.0/rt.bat
+1
-1
PC/os2emx/Makefile
PC/os2emx/Makefile
+2
-2
PC/os2emx/python26.def
PC/os2emx/python26.def
+0
-1
PC/os2vacpp/python.def
PC/os2vacpp/python.def
+0
-1
PCbuild/rt.bat
PCbuild/rt.bat
+1
-1
Parser/parsetok.c
Parser/parsetok.c
+0
-8
Python/bltinmodule.c
Python/bltinmodule.c
+33
-0
Python/sysmodule.c
Python/sysmodule.c
+2
-4
Tools/unicode/makeunicodedata.py
Tools/unicode/makeunicodedata.py
+8
-3
No files found.
Doc/c-api/unicode.rst
View file @
f954c4b9
...
@@ -144,6 +144,13 @@ the Python configuration.
...
@@ -144,6 +144,13 @@ the Python configuration.
Return 1 or 0 depending on whether *ch* is an alphanumeric character.
Return 1 or 0 depending on whether *ch* is an alphanumeric character.
.. cfunction:: int Py_UNICODE_ISPRINTABLE(Py_UNICODE ch)
Return 1 or 0 depending on whether *ch* is a printable character.
Characters defined in the Unicode character database as "Other"
or "Separator" other than ASCII space(0x20) are not considered
printable.
These APIs can be used for fast direct character conversions:
These APIs can be used for fast direct character conversions:
...
@@ -228,6 +235,9 @@ APIs:
...
@@ -228,6 +235,9 @@ APIs:
+===================+=====================+================================+
+===================+=====================+================================+
| :attr:`%%` | *n/a* | The literal % character. |
| :attr:`%%` | *n/a* | The literal % character. |
+-------------------+---------------------+--------------------------------+
+-------------------+---------------------+--------------------------------+
| :attr:`%a` | PyObject\* | The result of calling |
| | | :func:`ascii`. |
+-------------------+---------------------+--------------------------------+
| :attr:`%c` | int | A single character, |
| :attr:`%c` | int | A single character, |
| | | represented as an C int. |
| | | represented as an C int. |
+-------------------+---------------------+--------------------------------+
+-------------------+---------------------+--------------------------------+
...
...
Doc/library/functions.rst
View file @
f954c4b9
...
@@ -91,6 +91,14 @@ are always available. They are listed here in alphabetical order.
...
@@ -91,6 +91,14 @@ are always available. They are listed here in alphabetical order.
return
False
return
False
..
function
::
ascii
(
object
)
As
:
func
:`
repr
`,
return
a
string
containing
a
printable
representation
of
an
object
.
But
unlike
:
func
:`
repr
`,
the
non
-
ASCII
characters
in
the
string
returned
by
:
func
:`
ascii
`()
are
hex
-
escaped
to
generate
a
same
string
as
:
func
:`
repr
`
in
Python
2.
..
function
::
bin
(
x
)
..
function
::
bin
(
x
)
Convert
an
integer
number
to
a
binary
string
.
The
result
is
a
valid
Python
Convert
an
integer
number
to
a
binary
string
.
The
result
is
a
valid
Python
...
...
Doc/library/stdtypes.rst
View file @
f954c4b9
...
@@ -774,6 +774,14 @@ functions based on regular expressions.
...
@@ -774,6 +774,14 @@ functions based on regular expressions.
least one cased character, false otherwise.
least one cased character, false otherwise.
.. method:: str.isprintable()
Return true if all characters in the string are printable and there is at
least one character, false otherwise. Characters defined in the Unicode
character database as "Other" or "Separator" other than ASCII space(0x20) are
not considered printable.
.. method:: str.isspace()
.. method:: str.isspace()
Return true if there are only whitespace characters in the string and there is
Return true if there are only whitespace characters in the string and there is
...
...
Doc/library/sys.rst
View file @
f954c4b9
...
@@ -231,8 +231,6 @@ always available.
...
@@ -231,8 +231,6 @@ always available.
+------------------------------+------------------------------------------+
+------------------------------+------------------------------------------+
| :const:`ignore_environment` | -E |
| :const:`ignore_environment` | -E |
+------------------------------+------------------------------------------+
+------------------------------+------------------------------------------+
| :const:`tabcheck` | -t or -tt |
+------------------------------+------------------------------------------+
| :const:`verbose` | -v |
| :const:`verbose` | -v |
+------------------------------+------------------------------------------+
+------------------------------+------------------------------------------+
| :const:`unicode` | -U |
| :const:`unicode` | -U |
...
...
Doc/using/cmdline.rst
View file @
f954c4b9
...
@@ -222,13 +222,6 @@ Miscellaneous options
...
@@ -222,13 +222,6 @@ Miscellaneous options
manipulations of :data:`sys.path` that it entails.
manipulations of :data:`sys.path` that it entails.
.. cmdoption:: -t
Issue a warning when a source file mixes tabs and spaces for indentation in a
way that makes it depend on the worth of a tab expressed in spaces. Issue an
error when the option is given twice (:option:`-tt`).
.. cmdoption:: -u
.. cmdoption:: -u
Force stdin, stdout and stderr to be totally unbuffered. On systems where it
Force stdin, stdout and stderr to be totally unbuffered. On systems where it
...
...
Include/pydebug.h
View file @
f954c4b9
...
@@ -14,7 +14,6 @@ PyAPI_DATA(int) Py_NoSiteFlag;
...
@@ -14,7 +14,6 @@ PyAPI_DATA(int) Py_NoSiteFlag;
PyAPI_DATA
(
int
)
Py_BytesWarningFlag
;
PyAPI_DATA
(
int
)
Py_BytesWarningFlag
;
PyAPI_DATA
(
int
)
Py_UseClassExceptionsFlag
;
PyAPI_DATA
(
int
)
Py_UseClassExceptionsFlag
;
PyAPI_DATA
(
int
)
Py_FrozenFlag
;
PyAPI_DATA
(
int
)
Py_FrozenFlag
;
PyAPI_DATA
(
int
)
Py_TabcheckFlag
;
PyAPI_DATA
(
int
)
Py_IgnoreEnvironmentFlag
;
PyAPI_DATA
(
int
)
Py_IgnoreEnvironmentFlag
;
PyAPI_DATA
(
int
)
Py_DivisionWarningFlag
;
PyAPI_DATA
(
int
)
Py_DivisionWarningFlag
;
PyAPI_DATA
(
int
)
Py_DontWriteBytecodeFlag
;
PyAPI_DATA
(
int
)
Py_DontWriteBytecodeFlag
;
...
...
Include/unicodeobject.h
View file @
f954c4b9
...
@@ -217,6 +217,7 @@ typedef PY_UNICODE_TYPE Py_UNICODE;
...
@@ -217,6 +217,7 @@ typedef PY_UNICODE_TYPE Py_UNICODE;
# define _PyUnicode_IsLinebreak _PyUnicodeUCS2_IsLinebreak
# define _PyUnicode_IsLinebreak _PyUnicodeUCS2_IsLinebreak
# define _PyUnicode_IsLowercase _PyUnicodeUCS2_IsLowercase
# define _PyUnicode_IsLowercase _PyUnicodeUCS2_IsLowercase
# define _PyUnicode_IsNumeric _PyUnicodeUCS2_IsNumeric
# define _PyUnicode_IsNumeric _PyUnicodeUCS2_IsNumeric
# define _PyUnicode_IsPrintable _PyUnicodeUCS2_IsPrintable
# define _PyUnicode_IsTitlecase _PyUnicodeUCS2_IsTitlecase
# define _PyUnicode_IsTitlecase _PyUnicodeUCS2_IsTitlecase
# define _PyUnicode_IsXidStart _PyUnicodeUCS2_IsXidStart
# define _PyUnicode_IsXidStart _PyUnicodeUCS2_IsXidStart
# define _PyUnicode_IsXidContinue _PyUnicodeUCS2_IsXidContinue
# define _PyUnicode_IsXidContinue _PyUnicodeUCS2_IsXidContinue
...
@@ -311,6 +312,7 @@ typedef PY_UNICODE_TYPE Py_UNICODE;
...
@@ -311,6 +312,7 @@ typedef PY_UNICODE_TYPE Py_UNICODE;
# define _PyUnicode_IsLinebreak _PyUnicodeUCS4_IsLinebreak
# define _PyUnicode_IsLinebreak _PyUnicodeUCS4_IsLinebreak
# define _PyUnicode_IsLowercase _PyUnicodeUCS4_IsLowercase
# define _PyUnicode_IsLowercase _PyUnicodeUCS4_IsLowercase
# define _PyUnicode_IsNumeric _PyUnicodeUCS4_IsNumeric
# define _PyUnicode_IsNumeric _PyUnicodeUCS4_IsNumeric
# define _PyUnicode_IsPrintable _PyUnicodeUCS4_IsPrintable
# define _PyUnicode_IsTitlecase _PyUnicodeUCS4_IsTitlecase
# define _PyUnicode_IsTitlecase _PyUnicodeUCS4_IsTitlecase
# define _PyUnicode_IsXidStart _PyUnicodeUCS4_IsXidStart
# define _PyUnicode_IsXidStart _PyUnicodeUCS4_IsXidStart
# define _PyUnicode_IsXidContinue _PyUnicodeUCS4_IsXidContinue
# define _PyUnicode_IsXidContinue _PyUnicodeUCS4_IsXidContinue
...
@@ -351,6 +353,7 @@ typedef PY_UNICODE_TYPE Py_UNICODE;
...
@@ -351,6 +353,7 @@ typedef PY_UNICODE_TYPE Py_UNICODE;
#define Py_UNICODE_ISDECIMAL(ch) _PyUnicode_IsDecimalDigit(ch)
#define Py_UNICODE_ISDECIMAL(ch) _PyUnicode_IsDecimalDigit(ch)
#define Py_UNICODE_ISDIGIT(ch) _PyUnicode_IsDigit(ch)
#define Py_UNICODE_ISDIGIT(ch) _PyUnicode_IsDigit(ch)
#define Py_UNICODE_ISNUMERIC(ch) _PyUnicode_IsNumeric(ch)
#define Py_UNICODE_ISNUMERIC(ch) _PyUnicode_IsNumeric(ch)
#define Py_UNICODE_ISPRINTABLE(ch) _PyUnicode_IsPrintable(ch)
#define Py_UNICODE_TODECIMAL(ch) _PyUnicode_ToDecimalDigit(ch)
#define Py_UNICODE_TODECIMAL(ch) _PyUnicode_ToDecimalDigit(ch)
#define Py_UNICODE_TODIGIT(ch) _PyUnicode_ToDigit(ch)
#define Py_UNICODE_TODIGIT(ch) _PyUnicode_ToDigit(ch)
...
@@ -381,6 +384,7 @@ extern const unsigned char _Py_ascii_whitespace[];
...
@@ -381,6 +384,7 @@ extern const unsigned char _Py_ascii_whitespace[];
#define Py_UNICODE_ISDECIMAL(ch) _PyUnicode_IsDecimalDigit(ch)
#define Py_UNICODE_ISDECIMAL(ch) _PyUnicode_IsDecimalDigit(ch)
#define Py_UNICODE_ISDIGIT(ch) _PyUnicode_IsDigit(ch)
#define Py_UNICODE_ISDIGIT(ch) _PyUnicode_IsDigit(ch)
#define Py_UNICODE_ISNUMERIC(ch) _PyUnicode_IsNumeric(ch)
#define Py_UNICODE_ISNUMERIC(ch) _PyUnicode_IsNumeric(ch)
#define Py_UNICODE_ISPRINTABLE(ch) _PyUnicode_IsPrintable(ch)
#define Py_UNICODE_TODECIMAL(ch) _PyUnicode_ToDecimalDigit(ch)
#define Py_UNICODE_TODECIMAL(ch) _PyUnicode_ToDecimalDigit(ch)
#define Py_UNICODE_TODIGIT(ch) _PyUnicode_ToDigit(ch)
#define Py_UNICODE_TODIGIT(ch) _PyUnicode_ToDigit(ch)
...
@@ -1499,6 +1503,10 @@ PyAPI_FUNC(int) _PyUnicode_IsNumeric(
...
@@ -1499,6 +1503,10 @@ PyAPI_FUNC(int) _PyUnicode_IsNumeric(
Py_UNICODE
ch
/* Unicode character */
Py_UNICODE
ch
/* Unicode character */
);
);
PyAPI_FUNC
(
int
)
_PyUnicode_IsPrintable
(
Py_UNICODE
ch
/* Unicode character */
);
PyAPI_FUNC
(
int
)
_PyUnicode_IsAlpha
(
PyAPI_FUNC
(
int
)
_PyUnicode_IsAlpha
(
Py_UNICODE
ch
/* Unicode character */
Py_UNICODE
ch
/* Unicode character */
);
);
...
...
Lib/doctest.py
View file @
f954c4b9
...
@@ -1441,6 +1441,13 @@ class OutputChecker:
...
@@ -1441,6 +1441,13 @@ class OutputChecker:
and returns true if they match; and `output_difference`, which
and returns true if they match; and `output_difference`, which
returns a string describing the differences between two outputs.
returns a string describing the differences between two outputs.
"""
"""
def
_toAscii
(
self
,
s
):
"""
Convert string to hex-escaped ASCII string.
"""
return
str
(
s
.
encode
(
'ASCII'
,
'backslashreplace'
),
"ASCII"
)
def
check_output
(
self
,
want
,
got
,
optionflags
):
def
check_output
(
self
,
want
,
got
,
optionflags
):
"""
"""
Return True iff the actual output from an example (`got`)
Return True iff the actual output from an example (`got`)
...
@@ -1451,6 +1458,15 @@ class OutputChecker:
...
@@ -1451,6 +1458,15 @@ class OutputChecker:
documentation for `TestRunner` for more information about
documentation for `TestRunner` for more information about
option flags.
option flags.
"""
"""
# If `want` contains hex-escaped character such as "\u1234",
# then `want` is a string of six characters(e.g. [\,u,1,2,3,4]).
# On the other hand, `got` could be an another sequence of
# characters such as [\u1234], so `want` and `got` should
# be folded to hex-escaped ASCII string to compare.
got
=
self
.
_toAscii
(
got
)
want
=
self
.
_toAscii
(
want
)
# Handle the common case first, for efficiency:
# Handle the common case first, for efficiency:
# if they're string-identical, always return true.
# if they're string-identical, always return true.
if
got
==
want
:
if
got
==
want
:
...
...
Lib/test/test_array.py
View file @
f954c4b9
...
@@ -768,7 +768,7 @@ class UnicodeTest(StringTest):
...
@@ -768,7 +768,7 @@ class UnicodeTest(StringTest):
a
=
array
.
array
(
'u'
,
s
)
a
=
array
.
array
(
'u'
,
s
)
self
.
assertEqual
(
self
.
assertEqual
(
repr
(
a
),
repr
(
a
),
"array('u', '
\
\
x00=
\
"
\
\
'a
\
\
\
\
b
\
\
x80
\
\
xff
\
\
x00
\
\
x01
\
\
u1234')"
)
"array('u', '
\
\
x00=
\
"
\
\
'a
\
\
\
\
b
\
\
x80
\
xff
\
\
x00
\
\
x01
\
u1234
')"
)
self
.
assertRaises
(
TypeError
,
a
.
fromunicode
)
self
.
assertRaises
(
TypeError
,
a
.
fromunicode
)
...
...
Lib/test/test_builtin.py
View file @
f954c4b9
...
@@ -159,6 +159,9 @@ class BuiltinTest(unittest.TestCase):
...
@@ -159,6 +159,9 @@ class BuiltinTest(unittest.TestCase):
S
=
[
10
,
20
,
30
]
S
=
[
10
,
20
,
30
]
self
.
assertEqual
(
any
(
x
>
42
for
x
in
S
),
False
)
self
.
assertEqual
(
any
(
x
>
42
for
x
in
S
),
False
)
def
test_ascii
(
self
):
self
.
assertEqual
(
ascii
(
"
\
u0370
"
),
"'
\
\
u0370'"
)
def
test_neg
(
self
):
def
test_neg
(
self
):
x
=
-
sys
.
maxsize
-
1
x
=
-
sys
.
maxsize
-
1
self
.
assert_
(
isinstance
(
x
,
int
))
self
.
assert_
(
isinstance
(
x
,
int
))
...
...
Lib/test/test_exceptions.py
View file @
f954c4b9
...
@@ -80,10 +80,10 @@ class ExceptionTests(unittest.TestCase):
...
@@ -80,10 +80,10 @@ class ExceptionTests(unittest.TestCase):
self
.
raise_catch
(
IndentationError
,
"IndentationError"
)
self
.
raise_catch
(
IndentationError
,
"IndentationError"
)
self
.
raise_catch
(
TabError
,
"TabError"
)
self
.
raise_catch
(
TabError
,
"TabError"
)
# can only be tested under -tt, and is the only test for -tt
try
:
compile
(
"try:
\
n
\
t
1/0
\
n
\
t
1/0
\
n
finally:
\
n
pass
\
n
"
,
#try: compile("try:\n\t1/0\n \t1/0\nfinally:\n pass\n",
'<string>', 'exec')
'<string>'
,
'exec'
)
#
except TabError: pass
except
TabError
:
pass
#
else: self.fail("TabError not raised")
else
:
self
.
fail
(
"TabError not raised"
)
self
.
raise_catch
(
SystemError
,
"SystemError"
)
self
.
raise_catch
(
SystemError
,
"SystemError"
)
...
...
Lib/test/test_format.py
View file @
f954c4b9
...
@@ -216,6 +216,8 @@ class FormatTest(unittest.TestCase):
...
@@ -216,6 +216,8 @@ class FormatTest(unittest.TestCase):
testformat
(
"%o"
,
0o42
,
"42"
)
testformat
(
"%o"
,
0o42
,
"42"
)
testformat
(
"%o"
,
-
0o42
,
"-42"
)
testformat
(
"%o"
,
-
0o42
,
"-42"
)
testformat
(
"%o"
,
float
(
0o42
),
"42"
)
testformat
(
"%o"
,
float
(
0o42
),
"42"
)
testformat
(
"%r"
,
"
\
u0370
"
,
"'
\
u0370
'"
)
testformat
(
"%a"
,
"
\
u0370
"
,
"'
\
\
u0370'"
)
# Test exception for unknown format characters
# Test exception for unknown format characters
if
verbose
:
if
verbose
:
print
(
'Testing exceptions'
)
print
(
'Testing exceptions'
)
...
@@ -235,8 +237,8 @@ class FormatTest(unittest.TestCase):
...
@@ -235,8 +237,8 @@ class FormatTest(unittest.TestCase):
raise
raise
else
:
else
:
raise
TestFailed
(
'did not get expected exception: %s'
%
excmsg
)
raise
TestFailed
(
'did not get expected exception: %s'
%
excmsg
)
test_exc
(
'abc %
a
'
,
1
,
ValueError
,
test_exc
(
'abc %
b
'
,
1
,
ValueError
,
"unsupported format character '
a' (0x61
) at index 5"
)
"unsupported format character '
b' (0x62
) at index 5"
)
#test_exc(unicode('abc %\u3000','raw-unicode-escape'), 1, ValueError,
#test_exc(unicode('abc %\u3000','raw-unicode-escape'), 1, ValueError,
# "unsupported format character '?' (0x3000) at index 5")
# "unsupported format character '?' (0x3000) at index 5")
test_exc
(
'%d'
,
'1'
,
TypeError
,
"%d format: a number is required, not str"
)
test_exc
(
'%d'
,
'1'
,
TypeError
,
"%d format: a number is required, not str"
)
...
...
Lib/test/test_pyexpat.py
View file @
f954c4b9
...
@@ -131,7 +131,7 @@ class ParseTest(unittest.TestCase):
...
@@ -131,7 +131,7 @@ class ParseTest(unittest.TestCase):
self
.
assertEquals
(
op
[
1
],
"Comment: ' comment data '"
)
self
.
assertEquals
(
op
[
1
],
"Comment: ' comment data '"
)
self
.
assertEquals
(
op
[
2
],
"Notation declared: ('notation', None, 'notation.jpeg', None)"
)
self
.
assertEquals
(
op
[
2
],
"Notation declared: ('notation', None, 'notation.jpeg', None)"
)
self
.
assertEquals
(
op
[
3
],
"Unparsed entity decl: ('unparsed_entity', None, 'entity.file', None, 'notation')"
)
self
.
assertEquals
(
op
[
3
],
"Unparsed entity decl: ('unparsed_entity', None, 'entity.file', None, 'notation')"
)
self
.
assertEquals
(
op
[
4
],
"Start element: 'root' {'attr1': 'value1', 'attr2': 'value2
\
\
u1f40'}"
)
self
.
assertEquals
(
op
[
4
],
"Start element: 'root' {'attr1': 'value1', 'attr2': 'value2
\
u1f40
'}"
)
self
.
assertEquals
(
op
[
5
],
"NS decl: 'myns' 'http://www.python.org/namespace'"
)
self
.
assertEquals
(
op
[
5
],
"NS decl: 'myns' 'http://www.python.org/namespace'"
)
self
.
assertEquals
(
op
[
6
],
"Start element: 'http://www.python.org/namespace!subelement' {}"
)
self
.
assertEquals
(
op
[
6
],
"Start element: 'http://www.python.org/namespace!subelement' {}"
)
self
.
assertEquals
(
op
[
7
],
"Character data: 'Contents of subelements'"
)
self
.
assertEquals
(
op
[
7
],
"Character data: 'Contents of subelements'"
)
...
...
Lib/test/test_unicode.py
View file @
f954c4b9
...
@@ -94,14 +94,14 @@ class UnicodeTest(
...
@@ -94,14 +94,14 @@ class UnicodeTest(
"JKLMNOPQRSTUVWXYZ[
\
\
\
\
]^_`abcdefghijklmnopqrstuvwxyz{|}~
\
\
x7f"
"JKLMNOPQRSTUVWXYZ[
\
\
\
\
]^_`abcdefghijklmnopqrstuvwxyz{|}~
\
\
x7f"
"
\
\
x80
\
\
x81
\
\
x82
\
\
x83
\
\
x84
\
\
x85
\
\
x86
\
\
x87
\
\
x88
\
\
x89
\
\
x8a
\
\
x8b
\
\
x8c
\
\
x8d"
"
\
\
x80
\
\
x81
\
\
x82
\
\
x83
\
\
x84
\
\
x85
\
\
x86
\
\
x87
\
\
x88
\
\
x89
\
\
x8a
\
\
x8b
\
\
x8c
\
\
x8d"
"
\
\
x8e
\
\
x8f
\
\
x90
\
\
x91
\
\
x92
\
\
x93
\
\
x94
\
\
x95
\
\
x96
\
\
x97
\
\
x98
\
\
x99
\
\
x9a
\
\
x9b"
"
\
\
x8e
\
\
x8f
\
\
x90
\
\
x91
\
\
x92
\
\
x93
\
\
x94
\
\
x95
\
\
x96
\
\
x97
\
\
x98
\
\
x99
\
\
x9a
\
\
x9b"
"
\
\
x9c
\
\
x9d
\
\
x9e
\
\
x9f
\
\
xa0
\
\
xa1
\
\
xa2
\
\
xa3
\
\
xa4
\
\
xa5
\
\
xa6
\
\
xa7
\
\
xa8
\
\
xa9"
"
\
\
x9c
\
\
x9d
\
\
x9e
\
\
x9f
\
\
xa0
\
xa1
\
xa2
\
xa3
\
xa4
\
xa5
\
xa6
\
xa7
\
xa8
\
xa9
"
"
\
\
xaa
\
\
xab
\
\
xac
\
\
xad
\
\
xae
\
\
xaf
\
\
xb0
\
\
xb1
\
\
xb2
\
\
xb3
\
\
xb4
\
\
xb5
\
\
xb6
\
\
xb7"
"
\
xaa
\
xab
\
xac
\
\
xad
\
xae
\
xaf
\
xb0
\
xb1
\
xb2
\
xb3
\
xb4
\
xb5
\
xb6
\
xb7
"
"
\
\
xb8
\
\
xb9
\
\
xba
\
\
xbb
\
\
xbc
\
\
xbd
\
\
xbe
\
\
xbf
\
\
xc0
\
\
xc1
\
\
xc2
\
\
xc3
\
\
xc4
\
\
xc5"
"
\
xb8
\
xb9
\
xba
\
xbb
\
xbc
\
xbd
\
xbe
\
xbf
\
xc0
\
xc1
\
xc2
\
xc3
\
xc4
\
xc5
"
"
\
\
xc6
\
\
xc7
\
\
xc8
\
\
xc9
\
\
xca
\
\
xcb
\
\
xcc
\
\
xcd
\
\
xce
\
\
xcf
\
\
xd0
\
\
xd1
\
\
xd2
\
\
xd3"
"
\
xc6
\
xc7
\
xc8
\
xc9
\
xca
\
xcb
\
xcc
\
xcd
\
xce
\
xcf
\
xd0
\
xd1
\
xd2
\
xd3
"
"
\
\
xd4
\
\
xd5
\
\
xd6
\
\
xd7
\
\
xd8
\
\
xd9
\
\
xda
\
\
xdb
\
\
xdc
\
\
xdd
\
\
xde
\
\
xdf
\
\
xe0
\
\
xe1"
"
\
xd4
\
xd5
\
xd6
\
xd7
\
xd8
\
xd9
\
xda
\
xdb
\
xdc
\
xdd
\
xde
\
xdf
\
xe0
\
xe1
"
"
\
\
xe2
\
\
xe3
\
\
xe4
\
\
xe5
\
\
xe6
\
\
xe7
\
\
xe8
\
\
xe9
\
\
xea
\
\
xeb
\
\
xec
\
\
xed
\
\
xee
\
\
xef"
"
\
xe2
\
xe3
\
xe4
\
xe5
\
xe6
\
xe7
\
xe8
\
xe9
\
xea
\
xeb
\
xec
\
xed
\
xee
\
xef
"
"
\
\
xf0
\
\
xf1
\
\
xf2
\
\
xf3
\
\
xf4
\
\
xf5
\
\
xf6
\
\
xf7
\
\
xf8
\
\
xf9
\
\
xfa
\
\
xfb
\
\
xfc
\
\
xfd"
"
\
xf0
\
xf1
\
xf2
\
xf3
\
xf4
\
xf5
\
xf6
\
xf7
\
xf8
\
xf9
\
xfa
\
xfb
\
xfc
\
xfd
"
"
\
\
xfe
\
\
xff'"
)
"
\
xfe
\
xff
'"
)
testrepr
=
repr
(
''
.
join
(
map
(
chr
,
range
(
256
))))
testrepr
=
repr
(
''
.
join
(
map
(
chr
,
range
(
256
))))
self
.
assertEqual
(
testrepr
,
latin1repr
)
self
.
assertEqual
(
testrepr
,
latin1repr
)
# Test repr works on wide unicode escapes without overflow.
# Test repr works on wide unicode escapes without overflow.
...
@@ -374,6 +374,12 @@ class UnicodeTest(
...
@@ -374,6 +374,12 @@ class UnicodeTest(
self
.
assertFalse
(
"["
.
isidentifier
())
self
.
assertFalse
(
"["
.
isidentifier
())
self
.
assertFalse
(
""
.
isidentifier
())
self
.
assertFalse
(
""
.
isidentifier
())
def
test_isprintable
(
self
):
self
.
assertTrue
(
"abcdefg"
.
isprintable
())
self
.
assertFalse
(
"abcdefg
\
n
"
.
isprintable
())
self
.
assertTrue
(
"
\
u0370
"
.
isprintable
())
self
.
assertFalse
(
"
\
ud800
"
.
isprintable
())
def
test_contains
(
self
):
def
test_contains
(
self
):
# Testing Unicode contains method
# Testing Unicode contains method
self
.
assert_
(
'a'
in
'abdb'
)
self
.
assert_
(
'a'
in
'abdb'
)
...
...
Mac/BuildScript/scripts/postflight.framework
View file @
f954c4b9
...
@@ -6,22 +6,22 @@
...
@@ -6,22 +6,22 @@
PYVER
=
"@PYVER@"
PYVER
=
"@PYVER@"
FWK
=
"/Library/Frameworks/Python.framework/Versions/@PYVER@"
FWK
=
"/Library/Frameworks/Python.framework/Versions/@PYVER@"
"
${
FWK
}
/bin/python"
-Wi
-tt
\
"
${
FWK
}
/bin/python"
-Wi
\
"
${
FWK
}
/lib/python
${
PYVER
}
/compileall.py"
\
"
${
FWK
}
/lib/python
${
PYVER
}
/compileall.py"
\
-x
badsyntax
-x
site-packages
\
-x
badsyntax
-x
site-packages
\
"
${
FWK
}
/lib/python
${
PYVER
}
"
"
${
FWK
}
/lib/python
${
PYVER
}
"
"
${
FWK
}
/bin/python"
-Wi
-
tt
-
O
\
"
${
FWK
}
/bin/python"
-Wi
-O
\
"
${
FWK
}
/lib/python
${
PYVER
}
/compileall.py"
\
"
${
FWK
}
/lib/python
${
PYVER
}
/compileall.py"
\
-x
badsyntax
-x
site-packages
\
-x
badsyntax
-x
site-packages
\
"
${
FWK
}
/lib/python
${
PYVER
}
"
"
${
FWK
}
/lib/python
${
PYVER
}
"
"
${
FWK
}
/bin/python"
-Wi
-tt
\
"
${
FWK
}
/bin/python"
-Wi
\
"
${
FWK
}
/lib/python
${
PYVER
}
/compileall.py"
\
"
${
FWK
}
/lib/python
${
PYVER
}
/compileall.py"
\
-x
badsyntax
-x
site-packages
\
-x
badsyntax
-x
site-packages
\
"
${
FWK
}
/Mac/Tools"
"
${
FWK
}
/Mac/Tools"
"
${
FWK
}
/bin/python"
-Wi
-
tt
-
O
\
"
${
FWK
}
/bin/python"
-Wi
-O
\
"
${
FWK
}
/lib/python
${
PYVER
}
/compileall.py"
\
"
${
FWK
}
/lib/python
${
PYVER
}
/compileall.py"
\
-x
badsyntax
-x
site-packages
\
-x
badsyntax
-x
site-packages
\
"
${
FWK
}
/Mac/Tools"
"
${
FWK
}
/Mac/Tools"
...
...
Mac/Makefile.in
View file @
f954c4b9
...
@@ -226,8 +226,8 @@ installmacsubtree:
...
@@ -226,8 +226,8 @@ installmacsubtree:
$(RUNSHARED)
$(BUILDPYTHON)
$(CACHERSRC)
-v
$(DESTDIR)$(MACLIBDEST)
$(DESTDIR)$(MACTOOLSDEST)
$(RUNSHARED)
$(BUILDPYTHON)
$(CACHERSRC)
-v
$(DESTDIR)$(MACLIBDEST)
$(DESTDIR)$(MACTOOLSDEST)
$(RUNSHARED)
$(BUILDPYTHON)
-Wi
-tt
$(compileall)
-d
$(MACTOOLSDEST)
-x
badsyntax
$(DESTDIR)$(MACTOOLSDEST)
$(RUNSHARED)
$(BUILDPYTHON)
-Wi
$(compileall)
-d
$(MACTOOLSDEST)
-x
badsyntax
$(DESTDIR)$(MACTOOLSDEST)
$(RUNSHARED)
$(BUILDPYTHON)
-O
-Wi
-tt
$(compileall)
-d
$(MACTOOLSDEST)
-x
badsyntax
$(DESTDIR)$(MACTOOLSDEST)
$(RUNSHARED)
$(BUILDPYTHON)
-O
-Wi
$(compileall)
-d
$(MACTOOLSDEST)
-x
badsyntax
$(DESTDIR)$(MACTOOLSDEST)
$(INSTALLED_PYTHONAPP)
:
install_Python
$(INSTALLED_PYTHONAPP)
:
install_Python
...
...
Makefile.pre.in
View file @
f954c4b9
...
@@ -664,7 +664,7 @@ $(LIBRARY_OBJS) $(MODOBJS) Modules/python.o: $(PYTHON_HEADERS)
...
@@ -664,7 +664,7 @@ $(LIBRARY_OBJS) $(MODOBJS) Modules/python.o: $(PYTHON_HEADERS)
TESTOPTS
=
-l
$(EXTRATESTOPTS)
TESTOPTS
=
-l
$(EXTRATESTOPTS)
TESTPROG
=
$(srcdir)
/Lib/test/regrtest.py
TESTPROG
=
$(srcdir)
/Lib/test/regrtest.py
TESTPYTHON
=
$(RUNSHARED)
./
$(BUILDPYTHON)
-E
-
tt
-
bb
TESTPYTHON
=
$(RUNSHARED)
./
$(BUILDPYTHON)
-E
-bb
test
:
all platform
test
:
all platform
-
find
$(srcdir)
/Lib
-name
'*.py[co]'
-print
| xargs
rm
-f
-
find
$(srcdir)
/Lib
-name
'*.py[co]'
-print
| xargs
rm
-f
-
$(TESTPYTHON)
$(TESTPROG)
$(TESTOPTS)
-
$(TESTPYTHON)
$(TESTPROG)
$(TESTOPTS)
...
@@ -687,7 +687,7 @@ testuniversal: all platform
...
@@ -687,7 +687,7 @@ testuniversal: all platform
-
find
$(srcdir)
/Lib
-name
'*.py[co]'
-print
| xargs
rm
-f
-
find
$(srcdir)
/Lib
-name
'*.py[co]'
-print
| xargs
rm
-f
-
$(TESTPYTHON)
$(TESTPROG)
$(TESTOPTS)
-uall
-
$(TESTPYTHON)
$(TESTPROG)
$(TESTOPTS)
-uall
$(TESTPYTHON)
$(TESTPROG)
$(TESTOPTS)
-uall
$(TESTPYTHON)
$(TESTPROG)
$(TESTOPTS)
-uall
$(RUNSHARED)
/usr/libexec/oah/translate ./
$(BUILDPYTHON)
-E
-tt
$(TESTPROG)
$(TESTOPTS)
-uall
$(RUNSHARED)
/usr/libexec/oah/translate ./
$(BUILDPYTHON)
-E
$(TESTPROG)
$(TESTOPTS)
-uall
# Like testall, but with a single pass only
# Like testall, but with a single pass only
...
@@ -872,23 +872,23 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR)
...
@@ -872,23 +872,23 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR)
done
done
$(INSTALL_DATA)
$(srcdir)
/LICENSE
$(DESTDIR)$(LIBDEST)
/LICENSE.txt
$(INSTALL_DATA)
$(srcdir)
/LICENSE
$(DESTDIR)$(LIBDEST)
/LICENSE.txt
-
PYTHONPATH
=
$(DESTDIR)$(LIBDEST)
$(RUNSHARED)
\
-
PYTHONPATH
=
$(DESTDIR)$(LIBDEST)
$(RUNSHARED)
\
./
$(BUILDPYTHON)
-Wi
-tt
$(DESTDIR)$(LIBDEST)
/compileall.py
\
./
$(BUILDPYTHON)
-Wi
$(DESTDIR)$(LIBDEST)
/compileall.py
\
-d
$(LIBDEST)
-f
\
-d
$(LIBDEST)
-f
\
-x
'bad_coding|badsyntax|site-packages'
$(DESTDIR)$(LIBDEST)
-x
'bad_coding|badsyntax|site-packages'
$(DESTDIR)$(LIBDEST)
-
PYTHONPATH
=
$(DESTDIR)$(LIBDEST)
$(RUNSHARED)
\
-
PYTHONPATH
=
$(DESTDIR)$(LIBDEST)
$(RUNSHARED)
\
./
$(BUILDPYTHON)
-Wi
-
tt
-
O
$(DESTDIR)$(LIBDEST)
/compileall.py
\
./
$(BUILDPYTHON)
-Wi
-O
$(DESTDIR)$(LIBDEST)
/compileall.py
\
-d
$(LIBDEST)
-f
\
-d
$(LIBDEST)
-f
\
-x
'bad_coding|badsyntax|site-packages'
$(DESTDIR)$(LIBDEST)
-x
'bad_coding|badsyntax|site-packages'
$(DESTDIR)$(LIBDEST)
-
PYTHONPATH
=
$(DESTDIR)$(LIBDEST)
$(RUNSHARED)
\
-
PYTHONPATH
=
$(DESTDIR)$(LIBDEST)
$(RUNSHARED)
\
./
$(BUILDPYTHON)
-Wi
-t
$(DESTDIR)$(LIBDEST)
/compileall.py
\
./
$(BUILDPYTHON)
-Wi
$(DESTDIR)$(LIBDEST)
/compileall.py
\
-d
$(LIBDEST)
/site-packages
-f
\
-d
$(LIBDEST)
/site-packages
-f
\
-x
badsyntax
$(DESTDIR)$(LIBDEST)
/site-packages
-x
badsyntax
$(DESTDIR)$(LIBDEST)
/site-packages
-
PYTHONPATH
=
$(DESTDIR)$(LIBDEST)
$(RUNSHARED)
\
-
PYTHONPATH
=
$(DESTDIR)$(LIBDEST)
$(RUNSHARED)
\
./
$(BUILDPYTHON)
-Wi
-
t
-
O
$(DESTDIR)$(LIBDEST)
/compileall.py
\
./
$(BUILDPYTHON)
-Wi
-O
$(DESTDIR)$(LIBDEST)
/compileall.py
\
-d
$(LIBDEST)
/site-packages
-f
\
-d
$(LIBDEST)
/site-packages
-f
\
-x
badsyntax
$(DESTDIR)$(LIBDEST)
/site-packages
-x
badsyntax
$(DESTDIR)$(LIBDEST)
/site-packages
-
PYTHONPATH
=
$(DESTDIR)$(LIBDEST)
$(RUNSHARED)
\
-
PYTHONPATH
=
$(DESTDIR)$(LIBDEST)
$(RUNSHARED)
\
./
$(BUILDPYTHON)
-Wi
-
t
-
c
"import lib2to3.pygram"
./
$(BUILDPYTHON)
-Wi
-c
"import lib2to3.pygram"
# Create the PLATDIR source directory, if one wasn't distributed..
# Create the PLATDIR source directory, if one wasn't distributed..
$(srcdir)/Lib/$(PLATDIR)
:
$(srcdir)/Lib/$(PLATDIR)
:
...
...
Misc/NEWS
View file @
f954c4b9
...
@@ -12,6 +12,8 @@ What's new in Python 3.0b1?
...
@@ -12,6 +12,8 @@ What's new in Python 3.0b1?
Core and Builtins
Core and Builtins
-----------------
-----------------
- Removed the already-defunct ``-t`` option.
- Issue #2957: Corrected a ValueError "recursion limit exceeded", when
- Issue #2957: Corrected a ValueError "recursion limit exceeded", when
unmarshalling many code objects, which happens when importing a
unmarshalling many code objects, which happens when importing a
large .pyc file (~1000 functions).
large .pyc file (~1000 functions).
...
...
Misc/build.sh
View file @
f954c4b9
...
@@ -59,7 +59,7 @@ RSYNC_OPTS="-aC -e ssh"
...
@@ -59,7 +59,7 @@ RSYNC_OPTS="-aC -e ssh"
PYTHON
=
$INSTALL_DIR
/bin/python
PYTHON
=
$INSTALL_DIR
/bin/python
# Python options and regression test program that should always be run.
# Python options and regression test program that should always be run.
REGRTEST_ARGS
=
"-E
-tt
$INSTALL_DIR
/lib/python3.0/test/regrtest.py"
REGRTEST_ARGS
=
"-E
$INSTALL_DIR
/lib/python3.0/test/regrtest.py"
REFLOG
=
"build/reflog.txt.out"
REFLOG
=
"build/reflog.txt.out"
# These tests are not stable and falsely report leaks sometimes.
# These tests are not stable and falsely report leaks sometimes.
...
...
Misc/cheatsheet
View file @
f954c4b9
...
@@ -46,7 +46,6 @@ Option Effect
...
@@ -46,7 +46,6 @@ Option Effect
-OO remove doc-strings in addition to the -O optimizations
-OO remove doc-strings in addition to the -O optimizations
-Q arg division options: -Qold (default), -Qwarn, -Qwarnall, -Qnew
-Q arg division options: -Qold (default), -Qwarn, -Qwarnall, -Qnew
-S Don't perform 'import site' on initialization
-S Don't perform 'import site' on initialization
-t Issue warnings about inconsistent tab usage (-tt: issue errors)
-u Unbuffered binary stdout and stderr (also PYTHONUNBUFFERED=x).
-u Unbuffered binary stdout and stderr (also PYTHONUNBUFFERED=x).
-v Verbose (trace import statements) (also PYTHONVERBOSE=x)
-v Verbose (trace import statements) (also PYTHONVERBOSE=x)
-W arg : warning control (arg is action:message:category:module:lineno)
-W arg : warning control (arg is action:message:category:module:lineno)
...
...
Misc/python.man
View file @
f954c4b9
...
@@ -35,9 +35,6 @@ python \- an interpreted, interactive, object-oriented programming language
...
@@ -35,9 +35,6 @@ python \- an interpreted, interactive, object-oriented programming language
.B \-S
.B \-S
]
]
[
[
.B \-t
]
[
.B \-u
.B \-u
]
]
.br
.br
...
@@ -144,11 +141,6 @@ and the site-dependent manipulations of
...
@@ -144,11 +141,6 @@ and the site-dependent manipulations of
.I sys.path
.I sys.path
that it entails.
that it entails.
.TP
.TP
.B \-t
Issue a warning when a source file mixes tabs and spaces for
indentation in a way that makes it depend on the worth of a tab
expressed in spaces. Issue an error when the option is given twice.
.TP
.B \-u
.B \-u
Force stdin, stdout and stderr to be totally unbuffered. On systems
Force stdin, stdout and stderr to be totally unbuffered. On systems
where it matters, also put stdin, stdout and stderr in binary mode.
where it matters, also put stdin, stdout and stderr in binary mode.
...
...
Misc/valgrind-python.supp
View file @
f954c4b9
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
#
#
# cd python/dist/src
# cd python/dist/src
# valgrind --tool=memcheck --suppressions=Misc/valgrind-python.supp \
# valgrind --tool=memcheck --suppressions=Misc/valgrind-python.supp \
# ./python -E
-tt
./Lib/test/regrtest.py -u bsddb,network
# ./python -E ./Lib/test/regrtest.py -u bsddb,network
#
#
# You must edit Objects/obmalloc.c and uncomment Py_USING_MEMORY_DEBUGGER
# You must edit Objects/obmalloc.c and uncomment Py_USING_MEMORY_DEBUGGER
# to use the preferred suppressions with Py_ADDRESS_IN_RANGE.
# to use the preferred suppressions with Py_ADDRESS_IN_RANGE.
...
...
Modules/main.c
View file @
f954c4b9
...
@@ -72,7 +72,6 @@ static char *usage_2 = "\
...
@@ -72,7 +72,6 @@ static char *usage_2 = "\
-OO : remove doc-strings in addition to the -O optimizations
\n
\
-OO : remove doc-strings in addition to the -O optimizations
\n
\
-s : don't add user site directory to sys.path; also PYTHONNOUSERSITE
\n
\
-s : don't add user site directory to sys.path; also PYTHONNOUSERSITE
\n
\
-S : don't imply 'import site' on initialization
\n
\
-S : don't imply 'import site' on initialization
\n
\
-t : issue warnings about inconsistent tab usage (-tt: issue errors)
\n
\
"
;
"
;
static
char
*
usage_3
=
"\
static
char
*
usage_3
=
"\
-u : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x
\n
\
-u : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x
\n
\
...
@@ -370,7 +369,7 @@ Py_Main(int argc, wchar_t **argv)
...
@@ -370,7 +369,7 @@ Py_Main(int argc, wchar_t **argv)
break
;
break
;
case
't'
:
case
't'
:
Py_TabcheckFlag
++
;
/* ignored for backwards compatibility */
break
;
break
;
case
'u'
:
case
'u'
:
...
...
Objects/unicodectype.c
View file @
f954c4b9
...
@@ -21,6 +21,7 @@
...
@@ -21,6 +21,7 @@
#define UPPER_MASK 0x80
#define UPPER_MASK 0x80
#define XID_START_MASK 0x100
#define XID_START_MASK 0x100
#define XID_CONTINUE_MASK 0x200
#define XID_CONTINUE_MASK 0x200
#define NONPRINTABLE_MASK 0x400
typedef
struct
{
typedef
struct
{
const
Py_UNICODE
upper
;
const
Py_UNICODE
upper
;
...
@@ -675,6 +676,26 @@ int _PyUnicode_IsNumeric(Py_UNICODE ch)
...
@@ -675,6 +676,26 @@ int _PyUnicode_IsNumeric(Py_UNICODE ch)
return
_PyUnicode_ToNumeric
(
ch
)
!=
-
1
.
0
;
return
_PyUnicode_ToNumeric
(
ch
)
!=
-
1
.
0
;
}
}
/* Returns 1 for Unicode characters to be hex-escaped when repr()ed,
0 otherwise.
Characters defined in the Unicode character database as following
categories are not considered printable.
* Cc (Other, Control)
* Cf (Other, Format)
* Cs (Other, Surrogate)
* Co (Other, Private Use)
* Cn (Other, Not Assigned)
* Zl Separator, Line ('\u2028', LINE SEPARATOR)
* Zp Separator, Paragraph ('\u2029', PARAGRAPH SEPARATOR)
* Zs (Separator, Space) other than ASCII space('\x20').
*/
int
_PyUnicode_IsPrintable
(
Py_UNICODE
ch
)
{
const
_PyUnicode_TypeRecord
*
ctype
=
gettyperecord
(
ch
);
return
(
ctype
->
flags
&
NONPRINTABLE_MASK
)
==
0
;
}
#ifndef WANT_WCTYPE_FUNCTIONS
#ifndef WANT_WCTYPE_FUNCTIONS
/* Returns 1 for Unicode characters having the bidirectional type
/* Returns 1 for Unicode characters having the bidirectional type
...
...
Objects/unicodeobject.c
View file @
f954c4b9
...
@@ -7149,6 +7149,36 @@ unicode_isidentifier(PyObject *self)
...
@@ -7149,6 +7149,36 @@ unicode_isidentifier(PyObject *self)
return
PyBool_FromLong
(
PyUnicode_IsIdentifier
(
self
));
return
PyBool_FromLong
(
PyUnicode_IsIdentifier
(
self
));
}
}
PyDoc_STRVAR
(
isprintable__doc__
,
"S.isprintable() -> bool
\n
\
\n
\
Return True if all characters in S are considered
\n
\
printable in repr() and there is at least one character
\n
\
in S, False otherwise."
);
static
PyObject
*
unicode_isprintable
(
PyObject
*
self
)
{
register
const
Py_UNICODE
*
p
=
PyUnicode_AS_UNICODE
(
self
);
register
const
Py_UNICODE
*
e
;
/* Shortcut for single character strings */
if
(
PyUnicode_GET_SIZE
(
self
)
==
1
&&
Py_UNICODE_ISPRINTABLE
(
*
p
))
return
PyBool_FromLong
(
1
);
/* Special case for empty strings */
if
(
PyUnicode_GET_SIZE
(
self
)
==
0
)
return
PyBool_FromLong
(
0
);
e
=
p
+
PyUnicode_GET_SIZE
(
self
);
for
(;
p
<
e
;
p
++
)
{
if
(
!
Py_UNICODE_ISPRINTABLE
(
*
p
))
return
PyBool_FromLong
(
0
);
}
return
PyBool_FromLong
(
1
);
}
PyDoc_STRVAR
(
join__doc__
,
PyDoc_STRVAR
(
join__doc__
,
"S.join(sequence) -> str
\n
\
"S.join(sequence) -> str
\n
\
\n
\
\n
\
...
@@ -7526,61 +7556,8 @@ PyObject *unicode_repr(PyObject *unicode)
...
@@ -7526,61 +7556,8 @@ PyObject *unicode_repr(PyObject *unicode)
continue
;
continue
;
}
}
#ifdef Py_UNICODE_WIDE
/* Map special whitespace to '\t', \n', '\r' */
/* Map 21-bit characters to '\U00xxxxxx' */
if
(
ch
==
'\t'
)
{
else
if
(
ch
>=
0x10000
)
{
*
p
++
=
'\\'
;
*
p
++
=
'U'
;
*
p
++
=
hexdigits
[(
ch
>>
28
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ch
>>
24
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ch
>>
20
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ch
>>
16
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ch
>>
12
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ch
>>
8
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ch
>>
4
)
&
0x0000000F
];
*
p
++
=
hexdigits
[
ch
&
0x0000000F
];
continue
;
}
#else
/* Map UTF-16 surrogate pairs to '\U00xxxxxx' */
else
if
(
ch
>=
0xD800
&&
ch
<
0xDC00
)
{
Py_UNICODE
ch2
;
Py_UCS4
ucs
;
ch2
=
*
s
++
;
size
--
;
if
(
ch2
>=
0xDC00
&&
ch2
<=
0xDFFF
)
{
ucs
=
(((
ch
&
0x03FF
)
<<
10
)
|
(
ch2
&
0x03FF
))
+
0x00010000
;
*
p
++
=
'\\'
;
*
p
++
=
'U'
;
*
p
++
=
hexdigits
[(
ucs
>>
28
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ucs
>>
24
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ucs
>>
20
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ucs
>>
16
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ucs
>>
12
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ucs
>>
8
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ucs
>>
4
)
&
0x0000000F
];
*
p
++
=
hexdigits
[
ucs
&
0x0000000F
];
continue
;
}
/* Fall through: isolated surrogates are copied as-is */
s
--
;
size
++
;
}
#endif
/* Map 16-bit characters to '\uxxxx' */
if
(
ch
>=
256
)
{
*
p
++
=
'\\'
;
*
p
++
=
'u'
;
*
p
++
=
hexdigits
[(
ch
>>
12
)
&
0x000F
];
*
p
++
=
hexdigits
[(
ch
>>
8
)
&
0x000F
];
*
p
++
=
hexdigits
[(
ch
>>
4
)
&
0x000F
];
*
p
++
=
hexdigits
[
ch
&
0x000F
];
}
/* Map special whitespace to '\t', \n', '\r' */
else
if
(
ch
==
'\t'
)
{
*
p
++
=
'\\'
;
*
p
++
=
'\\'
;
*
p
++
=
't'
;
*
p
++
=
't'
;
}
}
...
@@ -7594,16 +7571,79 @@ PyObject *unicode_repr(PyObject *unicode)
...
@@ -7594,16 +7571,79 @@ PyObject *unicode_repr(PyObject *unicode)
}
}
/* Map non-printable US ASCII to '\xhh' */
/* Map non-printable US ASCII to '\xhh' */
else
if
(
ch
<
' '
||
ch
>
=
0x7F
)
{
else
if
(
ch
<
' '
||
ch
=
=
0x7F
)
{
*
p
++
=
'\\'
;
*
p
++
=
'\\'
;
*
p
++
=
'x'
;
*
p
++
=
'x'
;
*
p
++
=
hexdigits
[(
ch
>>
4
)
&
0x000F
];
*
p
++
=
hexdigits
[(
ch
>>
4
)
&
0x000F
];
*
p
++
=
hexdigits
[
ch
&
0x000F
];
*
p
++
=
hexdigits
[
ch
&
0x000F
];
}
}
/* Copy everything else as-is */
/* Copy ASCII characters as-is */
else
else
if
(
ch
<
0x7F
)
{
*
p
++
=
(
char
)
ch
;
*
p
++
=
ch
;
}
/* Non-ASCII characters */
else
{
Py_UCS4
ucs
=
ch
;
#ifndef Py_UNICODE_WIDE
Py_UNICODE
ch2
=
0
;
/* Get code point from surrogate pair */
if
(
size
>
0
)
{
ch2
=
*
s
;
if
(
ch
>=
0xD800
&&
ch
<
0xDC00
&&
ch2
>=
0xDC00
&&
ch2
<=
0xDFFF
)
{
ucs
=
(((
ch
&
0x03FF
)
<<
10
)
|
(
ch2
&
0x03FF
))
+
0x00010000
;
s
++
;
size
--
;
}
}
#endif
/* Map Unicode whitespace and control characters
(categories Z* and C* except ASCII space)
*/
if
(
!
Py_UNICODE_ISPRINTABLE
(
ucs
))
{
/* Map 8-bit characters to '\xhh' */
if
(
ucs
<=
0xff
)
{
*
p
++
=
'\\'
;
*
p
++
=
'x'
;
*
p
++
=
hexdigits
[(
ch
>>
4
)
&
0x000F
];
*
p
++
=
hexdigits
[
ch
&
0x000F
];
}
/* Map 21-bit characters to '\U00xxxxxx' */
else
if
(
ucs
>=
0x10000
)
{
*
p
++
=
'\\'
;
*
p
++
=
'U'
;
*
p
++
=
hexdigits
[(
ucs
>>
28
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ucs
>>
24
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ucs
>>
20
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ucs
>>
16
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ucs
>>
12
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ucs
>>
8
)
&
0x0000000F
];
*
p
++
=
hexdigits
[(
ucs
>>
4
)
&
0x0000000F
];
*
p
++
=
hexdigits
[
ucs
&
0x0000000F
];
}
/* Map 16-bit characters to '\uxxxx' */
else
{
*
p
++
=
'\\'
;
*
p
++
=
'u'
;
*
p
++
=
hexdigits
[(
ucs
>>
12
)
&
0x000F
];
*
p
++
=
hexdigits
[(
ucs
>>
8
)
&
0x000F
];
*
p
++
=
hexdigits
[(
ucs
>>
4
)
&
0x000F
];
*
p
++
=
hexdigits
[
ucs
&
0x000F
];
}
}
/* Copy characters as-is */
else
{
*
p
++
=
ch
;
#ifndef Py_UNICODE_WIDE
if
(
ucs
>=
0x10000
)
*
p
++
=
ch2
;
#endif
}
}
}
}
/* Add quote */
/* Add quote */
*
p
++
=
PyUnicode_AS_UNICODE
(
repr
)[
0
];
*
p
++
=
PyUnicode_AS_UNICODE
(
repr
)[
0
];
...
@@ -8268,6 +8308,7 @@ static PyMethodDef unicode_methods[] = {
...
@@ -8268,6 +8308,7 @@ static PyMethodDef unicode_methods[] = {
{
"isalpha"
,
(
PyCFunction
)
unicode_isalpha
,
METH_NOARGS
,
isalpha__doc__
},
{
"isalpha"
,
(
PyCFunction
)
unicode_isalpha
,
METH_NOARGS
,
isalpha__doc__
},
{
"isalnum"
,
(
PyCFunction
)
unicode_isalnum
,
METH_NOARGS
,
isalnum__doc__
},
{
"isalnum"
,
(
PyCFunction
)
unicode_isalnum
,
METH_NOARGS
,
isalnum__doc__
},
{
"isidentifier"
,
(
PyCFunction
)
unicode_isidentifier
,
METH_NOARGS
,
isidentifier__doc__
},
{
"isidentifier"
,
(
PyCFunction
)
unicode_isidentifier
,
METH_NOARGS
,
isidentifier__doc__
},
{
"isprintable"
,
(
PyCFunction
)
unicode_isprintable
,
METH_NOARGS
,
isprintable__doc__
},
{
"zfill"
,
(
PyCFunction
)
unicode_zfill
,
METH_VARARGS
,
zfill__doc__
},
{
"zfill"
,
(
PyCFunction
)
unicode_zfill
,
METH_VARARGS
,
zfill__doc__
},
{
"format"
,
(
PyCFunction
)
do_string_format
,
METH_VARARGS
|
METH_KEYWORDS
,
format__doc__
},
{
"format"
,
(
PyCFunction
)
do_string_format
,
METH_VARARGS
|
METH_KEYWORDS
,
format__doc__
},
{
"__format__"
,
(
PyCFunction
)
unicode__format__
,
METH_VARARGS
,
p_format__doc__
},
{
"__format__"
,
(
PyCFunction
)
unicode__format__
,
METH_VARARGS
,
p_format__doc__
},
...
@@ -8853,6 +8894,7 @@ PyObject *PyUnicode_Format(PyObject *format,
...
@@ -8853,6 +8894,7 @@ PyObject *PyUnicode_Format(PyObject *format,
case
's'
:
case
's'
:
case
'r'
:
case
'r'
:
case
'a'
:
if
(
PyUnicode_Check
(
v
)
&&
c
==
's'
)
{
if
(
PyUnicode_Check
(
v
)
&&
c
==
's'
)
{
temp
=
v
;
temp
=
v
;
Py_INCREF
(
temp
);
Py_INCREF
(
temp
);
...
@@ -8872,6 +8914,22 @@ PyObject *PyUnicode_Format(PyObject *format,
...
@@ -8872,6 +8914,22 @@ PyObject *PyUnicode_Format(PyObject *format,
"%s argument has non-string str()"
);
"%s argument has non-string str()"
);
goto
onError
;
goto
onError
;
}
}
if
(
c
==
'a'
)
{
PyObject
*
ascii
=
PyUnicode_EncodeASCII
(
PyUnicode_AS_UNICODE
(
temp
),
PyUnicode_GET_SIZE
(
temp
),
"backslashreplace"
);
Py_DECREF
(
temp
);
if
(
ascii
==
NULL
)
goto
onError
;
temp
=
PyUnicode_FromEncodedObject
(
ascii
,
"ASCII"
,
NULL
);
Py_DECREF
(
ascii
);
if
(
temp
==
NULL
)
goto
onError
;
}
}
}
pbuf
=
PyUnicode_AS_UNICODE
(
temp
);
pbuf
=
PyUnicode_AS_UNICODE
(
temp
);
len
=
PyUnicode_GET_SIZE
(
temp
);
len
=
PyUnicode_GET_SIZE
(
temp
);
...
...
Objects/unicodetype_db.h
View file @
f954c4b9
This source diff could not be displayed because it is too large. You can
view the blob
instead.
PC/VC6/rt.bat
View file @
f954c4b9
...
@@ -31,11 +31,11 @@
...
@@ -31,11 +31,11 @@
@if
"
%_qmode%
"
==
"yes"
goto
Qmode
@if
"
%_qmode%
"
==
"yes"
goto
Qmode
@echo
Deleting
.pyc/.pyo
files
...
@echo
Deleting
.pyc/.pyo
files
...
@
%_exe%
rmpyc
.py
@
%_exe%
rmpyc
.py
%_exe%
%_dashO%
-E
-tt
../../lib/test/regrtest.py
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
%_exe%
%_dashO%
-E
../../lib/test/regrtest.py
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
@echo
About
to
run
again
without
deleting
.pyc/.pyo
first
:
@echo
About
to
run
again
without
deleting
.pyc/.pyo
first
:
@pause
@pause
:Qmode
:Qmode
%_exe%
%_dashO%
-E
-tt
../../lib/test/regrtest.py
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
%_exe%
%_dashO%
-E
../../lib/test/regrtest.py
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
@set _exe
=
@set _exe
=
@set _qmode
=
@set _qmode
=
@set _dashO
=
@set _dashO
=
PC/VS7.1/rt.bat
View file @
f954c4b9
...
@@ -34,7 +34,7 @@ if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts
...
@@ -34,7 +34,7 @@ if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts
if
"
%
1"
==
"-q"
(
set
qmode
=
yes
)
&
shift
&
goto
CheckOpts
if
"
%
1"
==
"-q"
(
set
qmode
=
yes
)
&
shift
&
goto
CheckOpts
if
"
%
1"
==
"-d"
(
set
exe
=
python_d
)
&
shift
&
goto
CheckOpts
if
"
%
1"
==
"-d"
(
set
exe
=
python_d
)
&
shift
&
goto
CheckOpts
set
cmd
=
%exe%
%dashO%
-E
-tt
../../lib/test/regrtest.py
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
set
cmd
=
%exe%
%dashO%
-E
../../lib/test/regrtest.py
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
if
defined
qmode
goto
Qmode
if
defined
qmode
goto
Qmode
echo
Deleting
.pyc/.pyo
files
...
echo
Deleting
.pyc/.pyo
files
...
...
...
PC/VS8.0/rt.bat
View file @
f954c4b9
...
@@ -34,7 +34,7 @@ if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts
...
@@ -34,7 +34,7 @@ if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts
if
"
%
1"
==
"-q"
(
set
qmode
=
yes
)
&
shift
&
goto
CheckOpts
if
"
%
1"
==
"-q"
(
set
qmode
=
yes
)
&
shift
&
goto
CheckOpts
if
"
%
1"
==
"-d"
(
set
exe
=
python_d
)
&
shift
&
goto
CheckOpts
if
"
%
1"
==
"-d"
(
set
exe
=
python_d
)
&
shift
&
goto
CheckOpts
set
cmd
=
%exe%
%dashO%
-E
-tt
../../lib/test/regrtest.py
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
set
cmd
=
%exe%
%dashO%
-E
../../lib/test/regrtest.py
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
if
defined
qmode
goto
Qmode
if
defined
qmode
goto
Qmode
echo
Deleting
.pyc/.pyo
files
...
echo
Deleting
.pyc/.pyo
files
...
...
...
PC/os2emx/Makefile
View file @
f954c4b9
...
@@ -666,7 +666,7 @@ _ssl$(MODULE.EXT): $(OUT)_ssl$O $(OUT)_ssl_m.def $(PYTHON.IMPLIB)
...
@@ -666,7 +666,7 @@ _ssl$(MODULE.EXT): $(OUT)_ssl$O $(OUT)_ssl_m.def $(PYTHON.IMPLIB)
# the test target
# the test target
test
:
test
:
-
find ../../Lib
-name
"*.py[co]"
-exec
rm
{}
";"
-
find ../../Lib
-name
"*.py[co]"
-exec
rm
{}
";"
-
./python
-E
-tt
../../lib/test/regrtest.py
-l
-u
"network"
-
./python
-E
../../lib/test/regrtest.py
-l
-u
"network"
./python
-E
-tt
../../lib/test/regrtest.py
-l
-u
"network"
./python
-E
../../lib/test/regrtest.py
-l
-u
"network"
-include
$(OUTBASE)python.dep
-include
$(OUTBASE)python.dep
PC/os2emx/python26.def
View file @
f954c4b9
...
@@ -49,7 +49,6 @@ EXPORTS
...
@@ -49,7 +49,6 @@ EXPORTS
"PyParser_Delete"
"PyParser_Delete"
; From python26_s.lib(parsetok)
; From python26_s.lib(parsetok)
"Py_TabcheckFlag"
"PyParser_ParseString"
"PyParser_ParseString"
"PyParser_ParseStringFlagsFilename"
"PyParser_ParseStringFlagsFilename"
"PyParser_ParseFile"
"PyParser_ParseFile"
...
...
PC/os2vacpp/python.def
View file @
f954c4b9
...
@@ -61,7 +61,6 @@ EXPORTS
...
@@ -61,7 +61,6 @@ EXPORTS
Py_InteractiveFlag
Py_InteractiveFlag
Py_NoSiteFlag
Py_NoSiteFlag
Py_OptimizeFlag
Py_OptimizeFlag
Py_TabcheckFlag
Py_UseClassExceptionsFlag
Py_UseClassExceptionsFlag
Py_VerboseFlag
Py_VerboseFlag
_PyImport_Filetab
_PyImport_Filetab
...
...
PCbuild/rt.bat
View file @
f954c4b9
...
@@ -40,7 +40,7 @@ if "%1"=="-x64" (set prefix=amd64) & (set tcltk=tcltk64) & shift & goto CheckOpt
...
@@ -40,7 +40,7 @@ if "%1"=="-x64" (set prefix=amd64) & (set tcltk=tcltk64) & shift & goto CheckOpt
PATH
%PATH%
;
..\..\
%tcltk%
\bin
PATH
%PATH%
;
..\..\
%tcltk%
\bin
set
exe
=
%prefix%
\python
%suffix%
set
exe
=
%prefix%
\python
%suffix%
set
cmd
=
%exe%
%dashO%
-E
-tt
../lib/test/regrtest.py
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
set
cmd
=
%exe%
%dashO%
-E
../lib/test/regrtest.py
%
1
%
2
%
3
%
4
%
5
%
6
%
7
%
8
%
9
if
defined
qmode
goto
Qmode
if
defined
qmode
goto
Qmode
echo
Deleting
.pyc/.pyo
files
...
echo
Deleting
.pyc/.pyo
files
...
...
...
Parser/parsetok.c
View file @
f954c4b9
...
@@ -10,8 +10,6 @@
...
@@ -10,8 +10,6 @@
#include "errcode.h"
#include "errcode.h"
#include "graminit.h"
#include "graminit.h"
int
Py_TabcheckFlag
;
/* Forward */
/* Forward */
static
node
*
parsetok
(
struct
tok_state
*
,
grammar
*
,
int
,
perrdetail
*
,
int
*
);
static
node
*
parsetok
(
struct
tok_state
*
,
grammar
*
,
int
,
perrdetail
*
,
int
*
);
...
@@ -57,9 +55,6 @@ PyParser_ParseStringFlagsFilenameEx(const char *s, const char *filename,
...
@@ -57,9 +55,6 @@ PyParser_ParseStringFlagsFilenameEx(const char *s, const char *filename,
}
}
tok
->
filename
=
filename
?
filename
:
"<string>"
;
tok
->
filename
=
filename
?
filename
:
"<string>"
;
if
(
Py_TabcheckFlag
>=
3
)
tok
->
alterror
=
0
;
return
parsetok
(
tok
,
g
,
start
,
err_ret
,
flags
);
return
parsetok
(
tok
,
g
,
start
,
err_ret
,
flags
);
}
}
...
@@ -97,9 +92,6 @@ PyParser_ParseFileFlagsEx(FILE *fp, const char *filename,
...
@@ -97,9 +92,6 @@ PyParser_ParseFileFlagsEx(FILE *fp, const char *filename,
return
NULL
;
return
NULL
;
}
}
tok
->
filename
=
filename
;
tok
->
filename
=
filename
;
if
(
Py_TabcheckFlag
>=
3
)
tok
->
alterror
=
0
;
return
parsetok
(
tok
,
g
,
start
,
err_ret
,
flags
);
return
parsetok
(
tok
,
g
,
start
,
err_ret
,
flags
);
}
}
...
...
Python/bltinmodule.c
View file @
f954c4b9
...
@@ -265,6 +265,38 @@ PyDoc_STRVAR(any_doc,
...
@@ -265,6 +265,38 @@ PyDoc_STRVAR(any_doc,
\n
\
\n
\
Return True if bool(x) is True for any x in the iterable."
);
Return True if bool(x) is True for any x in the iterable."
);
static
PyObject
*
builtin_ascii
(
PyObject
*
self
,
PyObject
*
v
)
{
PyObject
*
repr
,
*
bytes
,
*
ascii
;
repr
=
PyObject_Repr
(
v
);
if
(
!
repr
)
return
NULL
;
bytes
=
PyUnicode_EncodeASCII
(
PyUnicode_AS_UNICODE
(
repr
),
PyUnicode_GET_SIZE
(
repr
),
"backslashreplace"
);
Py_DECREF
(
repr
);
if
(
bytes
==
NULL
)
return
NULL
;
ascii
=
PyUnicode_FromEncodedObject
(
bytes
,
"ASCII"
,
NULL
);
Py_DECREF
(
bytes
);
if
(
ascii
==
NULL
)
return
NULL
;
return
ascii
;
}
PyDoc_STRVAR
(
ascii_doc
,
"ascii(object) -> string
\n
\
\n
\
Return the canonical string representation of the object as repr(),
\n
\
but non-ASCII characters in the string are hex-escaped"
);
static
PyObject
*
static
PyObject
*
builtin_bin
(
PyObject
*
self
,
PyObject
*
v
)
builtin_bin
(
PyObject
*
self
,
PyObject
*
v
)
...
@@ -2188,6 +2220,7 @@ static PyMethodDef builtin_methods[] = {
...
@@ -2188,6 +2220,7 @@ static PyMethodDef builtin_methods[] = {
{
"abs"
,
builtin_abs
,
METH_O
,
abs_doc
},
{
"abs"
,
builtin_abs
,
METH_O
,
abs_doc
},
{
"all"
,
builtin_all
,
METH_O
,
all_doc
},
{
"all"
,
builtin_all
,
METH_O
,
all_doc
},
{
"any"
,
builtin_any
,
METH_O
,
any_doc
},
{
"any"
,
builtin_any
,
METH_O
,
any_doc
},
{
"ascii"
,
builtin_ascii
,
METH_O
,
ascii_doc
},
{
"bin"
,
builtin_bin
,
METH_O
,
bin_doc
},
{
"bin"
,
builtin_bin
,
METH_O
,
bin_doc
},
{
"chr"
,
builtin_chr
,
METH_VARARGS
,
chr_doc
},
{
"chr"
,
builtin_chr
,
METH_VARARGS
,
chr_doc
},
{
"cmp"
,
builtin_cmp
,
METH_VARARGS
,
cmp_doc
},
{
"cmp"
,
builtin_cmp
,
METH_VARARGS
,
cmp_doc
},
...
...
Python/sysmodule.c
View file @
f954c4b9
...
@@ -1100,7 +1100,6 @@ static PyStructSequence_Field flags_fields[] = {
...
@@ -1100,7 +1100,6 @@ static PyStructSequence_Field flags_fields[] = {
{
"no_user_site"
,
"-s"
},
{
"no_user_site"
,
"-s"
},
{
"no_site"
,
"-S"
},
{
"no_site"
,
"-S"
},
{
"ignore_environment"
,
"-E"
},
{
"ignore_environment"
,
"-E"
},
{
"tabcheck"
,
"-t or -tt"
},
{
"verbose"
,
"-v"
},
{
"verbose"
,
"-v"
},
#ifdef RISCOS
#ifdef RISCOS
{
"riscos_wimp"
,
"???"
},
{
"riscos_wimp"
,
"???"
},
...
@@ -1116,9 +1115,9 @@ static PyStructSequence_Desc flags_desc = {
...
@@ -1116,9 +1115,9 @@ static PyStructSequence_Desc flags_desc = {
flags__doc__
,
/* doc */
flags__doc__
,
/* doc */
flags_fields
,
/* fields */
flags_fields
,
/* fields */
#ifdef RISCOS
#ifdef RISCOS
12
#else
11
11
#else
10
#endif
#endif
};
};
...
@@ -1144,7 +1143,6 @@ make_flags(void)
...
@@ -1144,7 +1143,6 @@ make_flags(void)
SetFlag
(
Py_NoUserSiteDirectory
);
SetFlag
(
Py_NoUserSiteDirectory
);
SetFlag
(
Py_NoSiteFlag
);
SetFlag
(
Py_NoSiteFlag
);
SetFlag
(
Py_IgnoreEnvironmentFlag
);
SetFlag
(
Py_IgnoreEnvironmentFlag
);
SetFlag
(
Py_TabcheckFlag
);
SetFlag
(
Py_VerboseFlag
);
SetFlag
(
Py_VerboseFlag
);
#ifdef RISCOS
#ifdef RISCOS
SetFlag
(
Py_RISCOSWimpFlag
);
SetFlag
(
Py_RISCOSWimpFlag
);
...
...
Tools/unicode/makeunicodedata.py
View file @
f954c4b9
...
@@ -60,6 +60,7 @@ TITLE_MASK = 0x40
...
@@ -60,6 +60,7 @@ TITLE_MASK = 0x40
UPPER_MASK
=
0x80
UPPER_MASK
=
0x80
XID_START_MASK
=
0x100
XID_START_MASK
=
0x100
XID_CONTINUE_MASK
=
0x200
XID_CONTINUE_MASK
=
0x200
NONPRINTABLE_MASK
=
0x400
def
maketables
(
trace
=
0
):
def
maketables
(
trace
=
0
):
...
@@ -71,7 +72,7 @@ def maketables(trace=0):
...
@@ -71,7 +72,7 @@ def maketables(trace=0):
EASTASIAN_WIDTH
%
version
,
EASTASIAN_WIDTH
%
version
,
DERIVED_CORE_PROPERTIES
%
version
)
DERIVED_CORE_PROPERTIES
%
version
)
print
(
len
(
filter
(
None
,
unicode
.
table
)),
"characters"
)
print
(
len
(
list
(
filter
(
None
,
unicode
.
table
)
)),
"characters"
)
for
version
in
old_versions
:
for
version
in
old_versions
:
print
(
"--- Reading"
,
UNICODE_DATA
%
(
"-"
+
version
),
"..."
)
print
(
"--- Reading"
,
UNICODE_DATA
%
(
"-"
+
version
),
"..."
)
...
@@ -79,7 +80,7 @@ def maketables(trace=0):
...
@@ -79,7 +80,7 @@ def maketables(trace=0):
COMPOSITION_EXCLUSIONS
%
(
"-"
+
version
),
COMPOSITION_EXCLUSIONS
%
(
"-"
+
version
),
EASTASIAN_WIDTH
%
(
"-"
+
version
),
EASTASIAN_WIDTH
%
(
"-"
+
version
),
DERIVED_CORE_PROPERTIES
%
(
"-"
+
version
))
DERIVED_CORE_PROPERTIES
%
(
"-"
+
version
))
print
(
len
(
filter
(
None
,
old_unicode
.
table
)),
"characters"
)
print
(
len
(
list
(
filter
(
None
,
old_unicode
.
table
)
)),
"characters"
)
merge_old_version
(
version
,
unicode
,
old_unicode
)
merge_old_version
(
version
,
unicode
,
old_unicode
)
makeunicodename
(
unicode
,
trace
)
makeunicodename
(
unicode
,
trace
)
...
@@ -371,6 +372,10 @@ def makeunicodetype(unicode, trace):
...
@@ -371,6 +372,10 @@ def makeunicodetype(unicode, trace):
flags
|=
TITLE_MASK
flags
|=
TITLE_MASK
if
category
==
"Lu"
:
if
category
==
"Lu"
:
flags
|=
UPPER_MASK
flags
|=
UPPER_MASK
if
category
[
0
]
==
"C"
:
flags
|=
NONPRINTABLE_MASK
if
category
[
0
]
==
"Z"
and
char
!=
" "
:
flags
|=
NONPRINTABLE_MASK
if
"XID_Start"
in
properties
:
if
"XID_Start"
in
properties
:
flags
|=
XID_START_MASK
flags
|=
XID_START_MASK
if
"XID_Continue"
in
properties
:
if
"XID_Continue"
in
properties
:
...
@@ -465,7 +470,7 @@ def makeunicodename(unicode, trace):
...
@@ -465,7 +470,7 @@ def makeunicodename(unicode, trace):
if
name
and
name
[
0
]
!=
"<"
:
if
name
and
name
[
0
]
!=
"<"
:
names
[
char
]
=
name
+
chr
(
0
)
names
[
char
]
=
name
+
chr
(
0
)
print
(
len
(
n
for
n
in
names
if
n
is
not
None
),
"distinct names"
)
print
(
len
(
list
(
n
for
n
in
names
if
n
is
not
None
)
),
"distinct names"
)
# collect unique words from names (note that we differ between
# collect unique words from names (note that we differ between
# words inside a sentence, and words ending a sentence. the
# words inside a sentence, and words ending a sentence. the
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment