Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cython
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Merge Requests
0
Merge Requests
0
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
nexedi
cython
Commits
7f26ba41
Unverified
Commit
7f26ba41
authored
Jun 10, 2020
by
scoder
Committed by
GitHub
Jun 10, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix many indentation and whitespace issues throughout the code base (GH-3673)
… and enforce them with pycodestyle.
parent
975a43a6
Changes
71
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
71 changed files
with
582 additions
and
588 deletions
+582
-588
BuildExecutable.py
Cython/Build/BuildExecutable.py
+4
-8
Dependencies.py
Cython/Build/Dependencies.py
+2
-2
TestCythonizeArgsParser.py
Cython/Build/Tests/TestCythonizeArgsParser.py
+7
-7
TestStripLiterals.py
Cython/Build/Tests/TestStripLiterals.py
+0
-1
CodeWriter.py
Cython/CodeWriter.py
+1
-1
Annotate.py
Cython/Compiler/Annotate.py
+2
-2
AutoDocTransforms.py
Cython/Compiler/AutoDocTransforms.py
+1
-1
Buffer.py
Cython/Compiler/Buffer.py
+12
-11
Builtin.py
Cython/Compiler/Builtin.py
+1
-1
Code.py
Cython/Compiler/Code.py
+13
-13
Errors.py
Cython/Compiler/Errors.py
+2
-2
ExprNodes.py
Cython/Compiler/ExprNodes.py
+66
-66
FlowControl.py
Cython/Compiler/FlowControl.py
+5
-5
FusedNode.py
Cython/Compiler/FusedNode.py
+1
-1
Interpreter.py
Cython/Compiler/Interpreter.py
+2
-2
Main.py
Cython/Compiler/Main.py
+2
-2
MemoryView.py
Cython/Compiler/MemoryView.py
+5
-5
ModuleNode.py
Cython/Compiler/ModuleNode.py
+53
-53
Naming.py
Cython/Compiler/Naming.py
+6
-7
Nodes.py
Cython/Compiler/Nodes.py
+39
-39
Optimize.py
Cython/Compiler/Optimize.py
+6
-6
Options.py
Cython/Compiler/Options.py
+2
-3
ParseTreeTransforms.py
Cython/Compiler/ParseTreeTransforms.py
+23
-24
Parsing.py
Cython/Compiler/Parsing.py
+14
-14
Pipeline.py
Cython/Compiler/Pipeline.py
+1
-1
PyrexTypes.py
Cython/Compiler/PyrexTypes.py
+36
-37
Scanning.py
Cython/Compiler/Scanning.py
+3
-3
StringEncoding.py
Cython/Compiler/StringEncoding.py
+2
-2
Symtab.py
Cython/Compiler/Symtab.py
+36
-35
TestBuffer.py
Cython/Compiler/Tests/TestBuffer.py
+2
-2
TestCmdLine.py
Cython/Compiler/Tests/TestCmdLine.py
+123
-123
TestMemView.py
Cython/Compiler/Tests/TestMemView.py
+2
-2
TestParseTreeTransforms.py
Cython/Compiler/Tests/TestParseTreeTransforms.py
+1
-1
TestSignatureMatching.py
Cython/Compiler/Tests/TestSignatureMatching.py
+2
-2
Utils.py
Cython/Compiler/Tests/Utils.py
+1
-1
TreeFragment.py
Cython/Compiler/TreeFragment.py
+2
-2
TypeInference.py
Cython/Compiler/TypeInference.py
+5
-5
TypeSlots.py
Cython/Compiler/TypeSlots.py
+11
-11
UtilNodes.py
Cython/Compiler/UtilNodes.py
+3
-3
UtilityCode.py
Cython/Compiler/UtilityCode.py
+1
-1
DebugWriter.py
Cython/Debugger/DebugWriter.py
+2
-2
libcython.py
Cython/Debugger/libcython.py
+5
-5
libpython.py
Cython/Debugger/libpython.py
+3
-3
old_build_ext.py
Cython/Distutils/old_build_ext.py
+12
-11
Shadow.py
Cython/Shadow.py
+3
-3
_tempita.py
Cython/Tempita/_tempita.py
+7
-7
TestUtils.py
Cython/TestUtils.py
+1
-1
TestCodeWriter.py
Cython/Tests/TestCodeWriter.py
+0
-1
xmlrunner.py
Cython/Tests/xmlrunner.py
+5
-7
bpnn3.py
Demos/benchmarks/bpnn3.py
+2
-2
chaos.py
Demos/benchmarks/chaos.py
+1
-1
meteor_contest.py
Demos/benchmarks/meteor_contest.py
+1
-2
richards.py
Demos/benchmarks/richards.py
+4
-4
run_cheese.py
Demos/callback/run_cheese.py
+0
-2
p1.py
docs/examples/not_in_docs/great_circle/p1.py
+1
-1
cython_highlighting.py
docs/sphinxext/cython_highlighting.py
+3
-3
pyxbuild.py
pyximport/pyxbuild.py
+3
-4
pyximport.py
pyximport/pyximport.py
+2
-2
test_pyximport.py
pyximport/test/test_pyximport.py
+1
-1
test_reload.py
pyximport/test/test_reload.py
+2
-2
setup.cfg
setup.cfg
+13
-2
builtinbuffer.py
tests/compile/builtinbuffer.py
+0
-1
e_int_literals_py2.py
tests/errors/e_int_literals_py2.py
+1
-1
e_tuple_args_T692.py
tests/errors/e_tuple_args_T692.py
+0
-1
methodmangling_T5.py
tests/run/methodmangling_T5.py
+2
-2
methodmangling_pure.py
tests/run/methodmangling_pure.py
+1
-1
methodmangling_unknown_names.py
tests/run/methodmangling_unknown_names.py
+3
-3
pep563_annotations.py
tests/run/pep563_annotations.py
+0
-1
pure_py.py
tests/run/pure_py.py
+0
-1
reraise.py
tests/run/reraise.py
+1
-1
test_grammar.py
tests/run/test_grammar.py
+3
-3
No files found.
Cython/Build/BuildExecutable.py
View file @
7f26ba41
...
...
@@ -28,7 +28,7 @@ if PYLIB_DYN == PYLIB:
# no shared library
PYLIB_DYN
=
''
else
:
PYLIB_DYN
=
os
.
path
.
splitext
(
PYLIB_DYN
[
3
:])[
0
]
# 'lib(XYZ).so' -> XYZ
PYLIB_DYN
=
os
.
path
.
splitext
(
PYLIB_DYN
[
3
:])[
0
]
# 'lib(XYZ).so' -> XYZ
CC
=
get_config_var
(
'CC'
,
os
.
environ
.
get
(
'CC'
,
''
))
CFLAGS
=
get_config_var
(
'CFLAGS'
)
+
' '
+
os
.
environ
.
get
(
'CFLAGS'
,
''
)
...
...
@@ -65,12 +65,8 @@ def runcmd(cmd, shell=True):
else
:
_debug
(
' '
.
join
(
cmd
))
try
:
import
subprocess
except
ImportError
:
# Python 2.3 ...
returncode
=
os
.
system
(
cmd
)
else
:
returncode
=
subprocess
.
call
(
cmd
,
shell
=
shell
)
import
subprocess
returncode
=
subprocess
.
call
(
cmd
,
shell
=
shell
)
if
returncode
:
sys
.
exit
(
returncode
)
...
...
@@ -105,7 +101,7 @@ def build(input_file, compiler_args=(), force=False):
if
not
force
and
os
.
path
.
abspath
(
exe_file
)
==
os
.
path
.
abspath
(
input_file
):
raise
ValueError
(
"Input and output file names are the same, refusing to overwrite"
)
if
(
not
force
and
os
.
path
.
exists
(
exe_file
)
and
os
.
path
.
exists
(
input_file
)
and
os
.
path
.
getmtime
(
input_file
)
<=
os
.
path
.
getmtime
(
exe_file
)):
and
os
.
path
.
getmtime
(
input_file
)
<=
os
.
path
.
getmtime
(
exe_file
)):
_debug
(
"File is up to date, not regenerating
%
s"
,
exe_file
)
return
exe_file
cycompile
(
input_file
,
compiler_args
)
...
...
Cython/Build/Dependencies.py
View file @
7f26ba41
...
...
@@ -1028,7 +1028,7 @@ def cythonize(module_list, exclude=None, nthreads=0, aliases=None, quiet=False,
# setup for out of place build directory if enabled
if
build_dir
:
if
os
.
path
.
isabs
(
c_file
):
warnings
.
warn
(
"build_dir has no effect for absolute source paths"
)
warnings
.
warn
(
"build_dir has no effect for absolute source paths"
)
c_file
=
os
.
path
.
join
(
build_dir
,
c_file
)
dir
=
os
.
path
.
dirname
(
c_file
)
safe_makedirs_once
(
dir
)
...
...
@@ -1289,7 +1289,7 @@ def cythonize_one(pyx_file, c_file, fingerprint, quiet, options=None,
else
:
fingerprint_file
=
zip_fingerprint_file
with
contextlib
.
closing
(
zipfile
.
ZipFile
(
fingerprint_file
+
'.tmp'
,
'w'
,
zipfile_compression_mode
))
as
zip
:
fingerprint_file
+
'.tmp'
,
'w'
,
zipfile_compression_mode
))
as
zip
:
for
artifact
in
artifacts
:
zip
.
write
(
artifact
,
os
.
path
.
basename
(
artifact
))
os
.
rename
(
fingerprint_file
+
'.tmp'
,
fingerprint_file
)
...
...
Cython/Build/Tests/TestCythonizeArgsParser.py
View file @
7f26ba41
...
...
@@ -27,14 +27,14 @@ class TestCythonizeArgsParser(TestCase):
empty_containers
=
[
'directives'
,
'compile_time_env'
,
'options'
,
'excludes'
]
are_none
=
[
'language_level'
,
'annotate'
,
'build'
,
'build_inplace'
,
'force'
,
'quiet'
,
'lenient'
,
'keep_going'
,
'no_docstrings'
]
for
opt_name
in
empty_containers
:
if
len
(
getattr
(
options
,
opt_name
))
!=
0
and
(
not
opt_name
in
skip
):
if
len
(
getattr
(
options
,
opt_name
))
!=
0
and
(
opt_name
not
in
skip
):
self
.
assertEqual
(
opt_name
,
""
,
msg
=
"For option "
+
opt_name
)
return
False
for
opt_name
in
are_none
:
if
(
getattr
(
options
,
opt_name
)
is
not
None
)
and
(
not
opt_name
in
skip
):
if
(
getattr
(
options
,
opt_name
)
is
not
None
)
and
(
opt_name
not
in
skip
):
self
.
assertEqual
(
opt_name
,
""
,
msg
=
"For option "
+
opt_name
)
return
False
if
options
.
parallel
!=
parallel_compiles
and
(
not
'parallel'
in
skip
):
if
options
.
parallel
!=
parallel_compiles
and
(
'parallel'
not
in
skip
):
return
False
return
True
...
...
@@ -112,8 +112,8 @@ class TestCythonizeArgsParser(TestCase):
def
test_directives_wrong
(
self
):
directives
=
{
'auto_pickle'
:
42
,
# for bool type
'auto_pickle'
:
'NONONO'
,
# for bool type
'auto_pickle'
:
42
,
# for bool type
'auto_pickle'
:
'NONONO'
,
# for bool type
'c_string_type'
:
'bites'
,
#'c_string_encoding' : 'a',
#'language_level' : 4,
...
...
@@ -167,14 +167,14 @@ class TestCythonizeArgsParser(TestCase):
self
.
assertFalse
(
args
)
self
.
assertTrue
(
self
.
are_default
(
options
,
[
'options'
]))
self
.
assertEqual
(
options
.
options
[
'docstrings'
],
True
)
self
.
assertEqual
(
options
.
options
[
'buffer_max_dims'
],
True
)
# really?
self
.
assertEqual
(
options
.
options
[
'buffer_max_dims'
],
True
)
# really?
def
test_option_multiple_v2
(
self
):
options
,
args
=
self
.
parse_args
([
'-s'
,
'docstrings=True,buffer_max_dims=8'
])
self
.
assertFalse
(
args
)
self
.
assertTrue
(
self
.
are_default
(
options
,
[
'options'
]))
self
.
assertEqual
(
options
.
options
[
'docstrings'
],
True
)
self
.
assertEqual
(
options
.
options
[
'buffer_max_dims'
],
True
)
# really?
self
.
assertEqual
(
options
.
options
[
'buffer_max_dims'
],
True
)
# really?
def
test_option_value_yes
(
self
):
options
,
args
=
self
.
parse_args
([
'-s'
,
'docstrings=YeS'
])
...
...
Cython/Build/Tests/TestStripLiterals.py
View file @
7f26ba41
...
...
@@ -54,4 +54,3 @@ class TestStripLiterals(CythonTest):
def
test_extern
(
self
):
self
.
t
(
"cdef extern from 'a.h': # comment"
,
"cdef extern from '_L1_': #_L2_"
)
Cython/CodeWriter.py
View file @
7f26ba41
...
...
@@ -360,7 +360,7 @@ class StatementWriter(DeclarationWriter):
self
.
dedent
()
def
visit_SequenceNode
(
self
,
node
):
self
.
comma_separated_list
(
node
.
args
)
# Might need to discover whether we need () around tuples...hmm...
self
.
comma_separated_list
(
node
.
args
)
# Might need to discover whether we need () around tuples...hmm...
def
visit_ExprStatNode
(
self
,
node
):
self
.
startline
()
...
...
Cython/Compiler/Annotate.py
View file @
7f26ba41
...
...
@@ -22,7 +22,7 @@ from .. import Utils
class
AnnotationCCodeWriter
(
CCodeWriter
):
# also used as marker for detection of complete code emission in tests
COMPLETE_CODE_TITLE
=
"Complete cythonized code"
...
...
@@ -294,7 +294,7 @@ class AnnotationCCodeWriter(CCodeWriter):
# now the whole c-code if needed:
if
self
.
show_entire_c_code
:
outlist
.
append
(
u'<p><div class="cython">'
)
onclick_title
=
u"<pre class='cython line'{onclick}>+ {title}</pre>
\n
"
;
onclick_title
=
u"<pre class='cython line'{onclick}>+ {title}</pre>
\n
"
outlist
.
append
(
onclick_title
.
format
(
onclick
=
self
.
_onclick_attr
,
title
=
AnnotationCCodeWriter
.
COMPLETE_CODE_TITLE
,
...
...
Cython/Compiler/AutoDocTransforms.py
View file @
7f26ba41
...
...
@@ -201,7 +201,7 @@ class EmbedSignature(CythonTransform):
def
visit_CFuncDefNode
(
self
,
node
):
if
not
self
.
current_directives
[
'embedsignature'
]:
return
node
if
not
node
.
overridable
:
# not cpdef FOO(...):
if
not
node
.
overridable
:
# not cpdef FOO(...):
return
node
signature
=
self
.
_fmt_signature
(
...
...
Cython/Compiler/Buffer.py
View file @
7f26ba41
...
...
@@ -85,7 +85,7 @@ class IntroduceBufferAuxiliaryVars(CythonTransform):
aux_var
=
scope
.
declare_var
(
name
=
None
,
cname
=
cname
,
type
=
type
,
pos
=
node
.
pos
)
if
entry
.
is_arg
:
aux_var
.
used
=
True
# otherwise, NameNode will mark whether it is used
aux_var
.
used
=
True
# otherwise, NameNode will mark whether it is used
return
aux_var
...
...
@@ -111,9 +111,9 @@ class IntroduceBufferAuxiliaryVars(CythonTransform):
#
# Analysis
#
buffer_options
=
(
"dtype"
,
"ndim"
,
"mode"
,
"negative_indices"
,
"cast"
)
# ordered!
buffer_options
=
(
"dtype"
,
"ndim"
,
"mode"
,
"negative_indices"
,
"cast"
)
# ordered!
buffer_defaults
=
{
"ndim"
:
1
,
"mode"
:
"full"
,
"negative_indices"
:
True
,
"cast"
:
False
}
buffer_positional_options_count
=
1
# anything beyond this needs keyword argument
buffer_positional_options_count
=
1
# anything beyond this needs keyword argument
ERR_BUF_OPTION_UNKNOWN
=
'"
%
s" is not a buffer option'
ERR_BUF_TOO_MANY
=
'Too many buffer options'
...
...
@@ -146,12 +146,12 @@ def analyse_buffer_options(globalpos, env, posargs, dictargs, defaults=None, nee
options
=
{}
for
name
,
(
value
,
pos
)
in
dictargs
.
items
():
if
n
ot
name
in
buffer_options
:
if
n
ame
not
in
buffer_options
:
raise
CompileError
(
pos
,
ERR_BUF_OPTION_UNKNOWN
%
name
)
options
[
name
]
=
value
for
name
,
(
value
,
pos
)
in
zip
(
buffer_options
,
posargs
):
if
n
ot
name
in
buffer_options
:
if
n
ame
not
in
buffer_options
:
raise
CompileError
(
pos
,
ERR_BUF_OPTION_UNKNOWN
%
name
)
if
name
in
options
:
raise
CompileError
(
pos
,
ERR_BUF_DUP
%
name
)
...
...
@@ -159,7 +159,7 @@ def analyse_buffer_options(globalpos, env, posargs, dictargs, defaults=None, nee
# Check that they are all there and copy defaults
for
name
in
buffer_options
:
if
n
ot
name
in
options
:
if
n
ame
not
in
options
:
try
:
options
[
name
]
=
defaults
[
name
]
except
KeyError
:
...
...
@@ -298,9 +298,10 @@ def put_unpack_buffer_aux_into_scope(buf_entry, code):
ln
=
[]
for
i
in
range
(
buf_entry
.
type
.
ndim
):
for
fldname
in
fldnames
:
ln
.
append
(
"
%
s.diminfo[
%
d].
%
s =
%
s.rcbuffer->pybuffer.
%
s[
%
d];"
%
\
(
pybuffernd_struct
,
i
,
fldname
,
pybuffernd_struct
,
fldname
,
i
))
ln
.
append
(
"
%
s.diminfo[
%
d].
%
s =
%
s.rcbuffer->pybuffer.
%
s[
%
d];"
%
(
pybuffernd_struct
,
i
,
fldname
,
pybuffernd_struct
,
fldname
,
i
,
))
code
.
putln
(
' '
.
join
(
ln
))
def
put_init_vars
(
entry
,
code
):
...
...
@@ -373,7 +374,7 @@ def put_assign_to_buffer(lhs_cname, rhs_cname, buf_entry,
code
.
putln
(
"{"
)
# Set up necessary stack for getbuffer
code
.
putln
(
"__Pyx_BufFmt_StackElem __pyx_stack[
%
d];"
%
buffer_type
.
dtype
.
struct_nesting_depth
())
getbuffer
=
get_getbuffer_call
(
code
,
"
%
s"
,
buffer_aux
,
buffer_type
)
# fill in object below
getbuffer
=
get_getbuffer_call
(
code
,
"
%
s"
,
buffer_aux
,
buffer_type
)
# fill in object below
if
is_initialized
:
# Release any existing buffer
...
...
@@ -419,7 +420,7 @@ def put_assign_to_buffer(lhs_cname, rhs_cname, buf_entry,
put_unpack_buffer_aux_into_scope
(
buf_entry
,
code
)
code
.
putln
(
'}'
)
code
.
putln
(
"}"
)
# Release stack
code
.
putln
(
"}"
)
# Release stack
def
put_buffer_lookup_code
(
entry
,
index_signeds
,
index_cnames
,
directives
,
...
...
Cython/Compiler/Builtin.py
View file @
7f26ba41
...
...
@@ -56,7 +56,7 @@ class BuiltinAttribute(object):
def
__init__
(
self
,
py_name
,
cname
=
None
,
field_type
=
None
,
field_type_name
=
None
):
self
.
py_name
=
py_name
self
.
cname
=
cname
or
py_name
self
.
field_type_name
=
field_type_name
# can't do the lookup before the type is declared!
self
.
field_type_name
=
field_type_name
# can't do the lookup before the type is declared!
self
.
field_type
=
field_type
def
declare_in_type
(
self
,
self_type
):
...
...
Cython/Compiler/Code.py
View file @
7f26ba41
...
...
@@ -718,9 +718,9 @@ class FunctionState(object):
self
.
can_trace
=
False
self
.
gil_owned
=
True
self
.
temps_allocated
=
[]
# of (name, type, manage_ref, static)
self
.
temps_free
=
{}
# (type, manage_ref) -> list of free vars with same type/managed status
self
.
temps_used_type
=
{}
# name -> (type, manage_ref)
self
.
temps_allocated
=
[]
# of (name, type, manage_ref, static)
self
.
temps_free
=
{}
# (type, manage_ref) -> list of free vars with same type/managed status
self
.
temps_used_type
=
{}
# name -> (type, manage_ref)
self
.
temp_counter
=
0
self
.
closure_temps
=
None
...
...
@@ -891,7 +891,7 @@ class FunctionState(object):
"""
return
[(
name
,
type
)
for
name
,
type
,
manage_ref
in
self
.
temps_in_use
()
if
manage_ref
and
type
.
is_pyobject
]
if
manage_ref
and
type
.
is_pyobject
]
def
all_managed_temps
(
self
):
"""Return a list of (cname, type) tuples of refcount-managed Python objects.
...
...
@@ -1096,10 +1096,10 @@ class GlobalState(object):
'h_code'
,
'filename_table'
,
'utility_code_proto_before_types'
,
'numeric_typedefs'
,
# Let these detailed individual parts stay!,
'complex_type_declarations'
,
# as the proper solution is to make a full DAG...
'type_declarations'
,
# More coarse-grained blocks would simply hide
'utility_code_proto'
,
# the ugliness, not fix it
'numeric_typedefs'
,
# Let these detailed individual parts stay!,
'complex_type_declarations'
,
# as the proper solution is to make a full DAG...
'type_declarations'
,
# More coarse-grained blocks would simply hide
'utility_code_proto'
,
# the ugliness, not fix it
'module_declarations'
,
'typeinfo'
,
'before_global_var'
,
...
...
@@ -1135,8 +1135,8 @@ class GlobalState(object):
self
.
code_config
=
code_config
self
.
common_utility_include_dir
=
common_utility_include_dir
self
.
parts
=
{}
self
.
module_node
=
module_node
# because some utility code generation needs it
# (generating backwards-compatible Get/ReleaseBuffer
self
.
module_node
=
module_node
# because some utility code generation needs it
# (generating backwards-compatible Get/ReleaseBuffer
self
.
const_cnames_used
=
{}
self
.
string_const_index
=
{}
...
...
@@ -2084,7 +2084,7 @@ class CCodeWriter(object):
def
entry_as_pyobject
(
self
,
entry
):
type
=
entry
.
type
if
(
not
entry
.
is_self_arg
and
not
entry
.
type
.
is_complete
()
or
entry
.
type
.
is_extension_type
):
or
entry
.
type
.
is_extension_type
):
return
"(PyObject *)"
+
entry
.
cname
else
:
return
entry
.
cname
...
...
@@ -2386,7 +2386,7 @@ class CCodeWriter(object):
self
.
putln
(
'__Pyx_RefNannyDeclarations'
)
def
put_setup_refcount_context
(
self
,
name
,
acquire_gil
=
False
):
name
=
name
.
as_c_string_literal
()
# handle unicode names
name
=
name
.
as_c_string_literal
()
# handle unicode names
if
acquire_gil
:
self
.
globalstate
.
use_utility_code
(
UtilityCode
.
load_cached
(
"ForceInitThreads"
,
"ModuleSetupCode.c"
))
...
...
@@ -2401,7 +2401,7 @@ class CCodeWriter(object):
qualified_name should be the qualified name of the function.
"""
qualified_name
=
qualified_name
.
as_c_string_literal
()
# handle unicode names
qualified_name
=
qualified_name
.
as_c_string_literal
()
# handle unicode names
format_tuple
=
(
qualified_name
,
Naming
.
clineno_cname
if
include_cline
else
0
,
...
...
Cython/Compiler/Errors.py
View file @
7f26ba41
...
...
@@ -172,12 +172,12 @@ def error(position, message):
if
position
is
None
:
raise
InternalError
(
message
)
err
=
CompileError
(
position
,
message
)
if
DebugFlags
.
debug_exception_on_error
:
raise
Exception
(
err
)
# debug
if
DebugFlags
.
debug_exception_on_error
:
raise
Exception
(
err
)
# debug
report_error
(
err
)
return
err
LEVEL
=
1
# warn about all errors level 1 or higher
LEVEL
=
1
# warn about all errors level 1 or higher
def
_write_file_encode
(
file
,
line
):
try
:
...
...
Cython/Compiler/ExprNodes.py
View file @
7f26ba41
This diff is collapsed.
Click to expand it.
Cython/Compiler/FlowControl.py
View file @
7f26ba41
...
...
@@ -217,7 +217,7 @@ class ControlFlow(object):
visited
.
remove
(
self
.
entry_point
)
for
block
in
visited
:
if
block
.
empty
():
for
parent
in
block
.
parents
:
# Re-parent
for
parent
in
block
.
parents
:
# Re-parent
for
child
in
block
.
children
:
parent
.
add_child
(
child
)
block
.
detach
()
...
...
@@ -455,7 +455,7 @@ class GVContext(object):
start
=
min
(
block
.
positions
)
stop
=
max
(
block
.
positions
)
srcdescr
=
start
[
0
]
if
not
srcdescr
in
self
.
sources
:
if
srcdescr
not
in
self
.
sources
:
self
.
sources
[
srcdescr
]
=
list
(
srcdescr
.
get_lines
())
lines
=
self
.
sources
[
srcdescr
]
return
'
\\
n'
.
join
([
l
.
strip
()
for
l
in
lines
[
start
[
1
]
-
1
:
stop
[
1
]]])
...
...
@@ -621,7 +621,7 @@ def check_definitions(flow, compiler_directives):
# Unused result
for
assmt
in
assignments
:
if
(
not
assmt
.
refs
and
not
assmt
.
entry
.
is_pyclass_attr
and
not
assmt
.
entry
.
in_closure
):
and
not
assmt
.
entry
.
in_closure
):
if
assmt
.
entry
.
cf_references
and
warn_unused_result
:
if
assmt
.
is_arg
:
messages
.
warning
(
assmt
.
pos
,
"Unused argument value '
%
s'"
%
...
...
@@ -774,7 +774,7 @@ class ControlFlowAnalysis(CythonTransform):
entry
=
lhs
.
entry
else
:
entry
=
self
.
env
.
lookup
(
lhs
.
name
)
if
entry
is
None
:
# TODO: This shouldn't happen...
if
entry
is
None
:
# TODO: This shouldn't happen...
return
self
.
flow
.
mark_assignment
(
lhs
,
rhs
,
entry
)
elif
lhs
.
is_sequence_constructor
:
...
...
@@ -1035,7 +1035,7 @@ class ControlFlowAnalysis(CythonTransform):
elif
isinstance
(
node
,
Nodes
.
AsyncForStatNode
):
# not entirely correct, but good enough for now
self
.
mark_assignment
(
node
.
target
,
node
.
item
)
else
:
# Parallel
else
:
# Parallel
self
.
mark_assignment
(
node
.
target
)
# Body block
...
...
Cython/Compiler/FusedNode.py
View file @
7f26ba41
...
...
@@ -658,7 +658,7 @@ class FusedCFuncDefNode(StatListNode):
# instance check body
"""
)
pyx_code
.
indent
()
# indent following code to function body
pyx_code
.
indent
()
# indent following code to function body
pyx_code
.
named_insertion_point
(
"imports"
)
pyx_code
.
named_insertion_point
(
"func_defs"
)
pyx_code
.
named_insertion_point
(
"local_variable_declarations"
)
...
...
Cython/Compiler/Interpreter.py
View file @
7f26ba41
...
...
@@ -47,8 +47,8 @@ def interpret_compiletime_options(optlist, optdict, type_env=None, type_args=())
raise
CompileError
(
node
.
pos
,
"Type not allowed here."
)
else
:
if
(
sys
.
version_info
[
0
]
>=
3
and
isinstance
(
node
,
StringNode
)
and
node
.
unicode_value
is
not
None
):
isinstance
(
node
,
StringNode
)
and
node
.
unicode_value
is
not
None
):
return
(
node
.
unicode_value
,
node
.
pos
)
return
(
node
.
compile_time_value
(
empty_scope
),
node
.
pos
)
...
...
Cython/Compiler/Main.py
View file @
7f26ba41
...
...
@@ -455,7 +455,7 @@ def run_pipeline(source, options, full_module_name=None, context=None):
full_module_name
=
Utils
.
decode_filename
(
full_module_name
)
source_ext
=
os
.
path
.
splitext
(
source
)[
1
]
options
.
configure_language_defaults
(
source_ext
[
1
:])
# py/pyx
options
.
configure_language_defaults
(
source_ext
[
1
:])
# py/pyx
if
context
is
None
:
context
=
Context
.
from_options
(
options
)
...
...
@@ -470,7 +470,7 @@ def run_pipeline(source, options, full_module_name=None, context=None):
if
options
.
relative_path_in_code_position_comments
:
rel_path
=
full_module_name
.
replace
(
'.'
,
os
.
sep
)
+
source_ext
if
not
abs_path
.
endswith
(
rel_path
):
rel_path
=
source
# safety measure to prevent printing incorrect paths
rel_path
=
source
# safety measure to prevent printing incorrect paths
else
:
rel_path
=
abs_path
source_desc
=
FileSourceDescriptor
(
abs_path
,
rel_path
)
...
...
Cython/Compiler/MemoryView.py
View file @
7f26ba41
...
...
@@ -168,7 +168,7 @@ def valid_memslice_dtype(dtype, i=0):
valid_memslice_dtype
(
dtype
.
base_type
,
i
+
1
))
or
dtype
.
is_numeric
or
dtype
.
is_pyobject
or
dtype
.
is_fused
or
# accept this as it will be replaced by specializations later
dtype
.
is_fused
or
# accept this as it will be replaced by specializations later
(
dtype
.
is_typedef
and
valid_memslice_dtype
(
dtype
.
typedef_base_type
))
)
...
...
@@ -655,13 +655,13 @@ def is_cf_contig(specs):
is_c_contig
=
True
elif
(
specs
[
-
1
]
==
(
'direct'
,
'contig'
)
and
all
(
axis
==
(
'direct'
,
'follow'
)
for
axis
in
specs
[:
-
1
])):
all
(
axis
==
(
'direct'
,
'follow'
)
for
axis
in
specs
[:
-
1
])):
# c_contiguous: 'follow', 'follow', ..., 'follow', 'contig'
is_c_contig
=
True
elif
(
len
(
specs
)
>
1
and
specs
[
0
]
==
(
'direct'
,
'contig'
)
and
all
(
axis
==
(
'direct'
,
'follow'
)
for
axis
in
specs
[
1
:])):
specs
[
0
]
==
(
'direct'
,
'contig'
)
and
all
(
axis
==
(
'direct'
,
'follow'
)
for
axis
in
specs
[
1
:])):
# f_contiguous: 'contig', 'follow', 'follow', ..., 'follow'
is_f_contig
=
True
...
...
@@ -836,7 +836,7 @@ overlapping_utility = load_memview_c_utility("OverlappingSlices", context)
copy_contents_new_utility
=
load_memview_c_utility
(
"MemviewSliceCopyTemplate"
,
context
,
requires
=
[],
# require cython_array_utility_code
requires
=
[],
# require cython_array_utility_code
)
view_utility_code
=
load_memview_cy_utility
(
...
...
Cython/Compiler/ModuleNode.py
View file @
7f26ba41
...
...
@@ -155,8 +155,8 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
self
.
create_import_star_conversion_utility_code
(
env
)
for
name
,
entry
in
sorted
(
env
.
entries
.
items
()):
if
(
entry
.
create_wrapper
and
entry
.
scope
is
env
and
entry
.
is_type
and
entry
.
type
.
is_enum
):
entry
.
type
.
create_type_wrapper
(
env
)
and
entry
.
is_type
and
entry
.
type
.
is_enum
):
entry
.
type
.
create_type_wrapper
(
env
)
def
process_implementation
(
self
,
options
,
result
):
env
=
self
.
scope
...
...
@@ -185,7 +185,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
h_vars
=
h_entries
(
env
.
var_entries
)
h_funcs
=
h_entries
(
env
.
cfunc_entries
)
h_extension_types
=
h_entries
(
env
.
c_class_entries
)
if
h_types
or
h_vars
or
h_funcs
or
h_extension_types
:
if
h_types
or
h_vars
or
h_funcs
or
h_extension_types
:
result
.
h_file
=
replace_suffix_encoded
(
result
.
c_file
,
".h"
)
h_code
=
Code
.
CCodeWriter
()
c_code_config
=
generate_c_code_config
(
env
,
options
)
...
...
@@ -330,7 +330,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
for
entry
in
api_vars
:
type
=
CPtrType
(
entry
.
type
)
cname
=
env
.
mangle
(
Naming
.
varptr_prefix_api
,
entry
.
name
)
h_code
.
putln
(
"static
%
s = 0;"
%
type
.
declaration_code
(
cname
))
h_code
.
putln
(
"static
%
s = 0;"
%
type
.
declaration_code
(
cname
))
h_code
.
putln
(
"#define
%
s (*
%
s)"
%
(
entry
.
name
,
cname
))
h_code
.
put
(
UtilityCode
.
load_as_string
(
"PyIdentifierFromString"
,
"ImportExport.c"
)[
0
])
if
api_vars
:
...
...
@@ -865,7 +865,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
if
not
entry
.
in_cinclude
:
#print "generate_type_header_code:", entry.name, repr(entry.type) ###
type
=
entry
.
type
if
type
.
is_typedef
:
# Must test this first!
if
type
.
is_typedef
:
# Must test this first!
pass
elif
type
.
is_struct_or_union
or
type
.
is_cpp_class
:
self
.
generate_struct_union_predeclaration
(
entry
,
code
)
...
...
@@ -878,7 +878,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
if
not
entry
.
in_cinclude
:
#print "generate_type_header_code:", entry.name, repr(entry.type) ###
type
=
entry
.
type
if
type
.
is_typedef
:
# Must test this first!
if
type
.
is_typedef
:
# Must test this first!
self
.
generate_typedef
(
entry
,
code
)
elif
type
.
is_enum
:
self
.
generate_enum_definition
(
entry
,
code
)
...
...
@@ -1019,60 +1019,60 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
arg_decls
=
[
"void"
]
arg_names
=
[]
if
is_implementing
:
code
.
putln
(
"
%
s(
%
s) {"
%
(
type
.
cname
,
", "
.
join
(
arg_decls
)))
if
py_attrs
:
code
.
put_ensure_gil
()
for
attr
in
py_attrs
:
code
.
put_init_var_to_py_none
(
attr
,
nanny
=
False
)
if
constructor
:
code
.
putln
(
"
%
s(
%
s);"
%
(
constructor
.
cname
,
", "
.
join
(
arg_names
)))
if
py_attrs
:
code
.
put_release_ensured_gil
()
code
.
putln
(
"}"
)
code
.
putln
(
"
%
s(
%
s) {"
%
(
type
.
cname
,
", "
.
join
(
arg_decls
)))
if
py_attrs
:
code
.
put_ensure_gil
()
for
attr
in
py_attrs
:
code
.
put_init_var_to_py_none
(
attr
,
nanny
=
False
)
if
constructor
:
code
.
putln
(
"
%
s(
%
s);"
%
(
constructor
.
cname
,
", "
.
join
(
arg_names
)))
if
py_attrs
:
code
.
put_release_ensured_gil
()
code
.
putln
(
"}"
)
else
:
code
.
putln
(
"
%
s(
%
s);"
%
(
type
.
cname
,
", "
.
join
(
arg_decls
)))
code
.
putln
(
"
%
s(
%
s);"
%
(
type
.
cname
,
", "
.
join
(
arg_decls
)))
if
destructor
or
py_attrs
or
has_virtual_methods
:
if
has_virtual_methods
:
code
.
put
(
"virtual "
)
if
is_implementing
:
code
.
putln
(
"~
%
s() {"
%
type
.
cname
)
if
py_attrs
:
code
.
put_ensure_gil
()
if
destructor
:
code
.
putln
(
"
%
s();"
%
destructor
.
cname
)
if
py_attrs
:
for
attr
in
py_attrs
:
code
.
put_var_xdecref
(
attr
,
nanny
=
False
)
code
.
put_release_ensured_gil
()
code
.
putln
(
"}"
)
code
.
putln
(
"~
%
s() {"
%
type
.
cname
)
if
py_attrs
:
code
.
put_ensure_gil
()
if
destructor
:
code
.
putln
(
"
%
s();"
%
destructor
.
cname
)
if
py_attrs
:
for
attr
in
py_attrs
:
code
.
put_var_xdecref
(
attr
,
nanny
=
False
)
code
.
put_release_ensured_gil
()
code
.
putln
(
"}"
)
else
:
code
.
putln
(
"~
%
s();"
%
type
.
cname
)
code
.
putln
(
"~
%
s();"
%
type
.
cname
)
if
py_attrs
:
# Also need copy constructor and assignment operators.
if
is_implementing
:
code
.
putln
(
"
%
s(const
%
s& __Pyx_other) {"
%
(
type
.
cname
,
type
.
cname
))
code
.
put_ensure_gil
()
for
attr
in
scope
.
var_entries
:
if
not
attr
.
type
.
is_cfunction
:
code
.
putln
(
"
%
s = __Pyx_other.
%
s;"
%
(
attr
.
cname
,
attr
.
cname
))
code
.
put_var_incref
(
attr
,
nanny
=
False
)
code
.
put_release_ensured_gil
()
code
.
putln
(
"}"
)
code
.
putln
(
"
%
s& operator=(const
%
s& __Pyx_other) {"
%
(
type
.
cname
,
type
.
cname
))
code
.
putln
(
"if (this != &__Pyx_other) {"
)
code
.
put_ensure_gil
()
for
attr
in
scope
.
var_entries
:
if
not
attr
.
type
.
is_cfunction
:
code
.
put_var_xdecref
(
attr
,
nanny
=
False
)
code
.
putln
(
"
%
s = __Pyx_other.
%
s;"
%
(
attr
.
cname
,
attr
.
cname
))
code
.
put_var_incref
(
attr
,
nanny
=
False
)
code
.
put_release_ensured_gil
()
code
.
putln
(
"}"
)
code
.
putln
(
"return *this;"
)
code
.
putln
(
"}"
)
code
.
putln
(
"
%
s(const
%
s& __Pyx_other) {"
%
(
type
.
cname
,
type
.
cname
))
code
.
put_ensure_gil
()
for
attr
in
scope
.
var_entries
:
if
not
attr
.
type
.
is_cfunction
:
code
.
putln
(
"
%
s = __Pyx_other.
%
s;"
%
(
attr
.
cname
,
attr
.
cname
))
code
.
put_var_incref
(
attr
,
nanny
=
False
)
code
.
put_release_ensured_gil
()
code
.
putln
(
"}"
)
code
.
putln
(
"
%
s& operator=(const
%
s& __Pyx_other) {"
%
(
type
.
cname
,
type
.
cname
))
code
.
putln
(
"if (this != &__Pyx_other) {"
)
code
.
put_ensure_gil
()
for
attr
in
scope
.
var_entries
:
if
not
attr
.
type
.
is_cfunction
:
code
.
put_var_xdecref
(
attr
,
nanny
=
False
)
code
.
putln
(
"
%
s = __Pyx_other.
%
s;"
%
(
attr
.
cname
,
attr
.
cname
))
code
.
put_var_incref
(
attr
,
nanny
=
False
)
code
.
put_release_ensured_gil
()
code
.
putln
(
"}"
)
code
.
putln
(
"return *this;"
)
code
.
putln
(
"}"
)
else
:
code
.
putln
(
"
%
s(const
%
s& __Pyx_other);"
%
(
type
.
cname
,
type
.
cname
))
code
.
putln
(
"
%
s& operator=(const
%
s& __Pyx_other);"
%
(
type
.
cname
,
type
.
cname
))
code
.
putln
(
"
%
s(const
%
s& __Pyx_other);"
%
(
type
.
cname
,
type
.
cname
))
code
.
putln
(
"
%
s& operator=(const
%
s& __Pyx_other);"
%
(
type
.
cname
,
type
.
cname
))
code
.
putln
(
"};"
)
def
generate_enum_definition
(
self
,
entry
,
code
):
...
...
@@ -1183,7 +1183,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
# Generate object struct definition for an
# extension type.
if
not
type
.
scope
:
return
# Forward declared but never defined
return
# Forward declared but never defined
header
,
footer
=
\
self
.
sue_header_footer
(
type
,
"struct"
,
type
.
objstruct_cname
)
code
.
putln
(
header
)
...
...
@@ -1321,7 +1321,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
if
entry
.
visibility
!=
'extern'
:
type
=
entry
.
type
scope
=
type
.
scope
if
scope
:
# could be None if there was an error
if
scope
:
# could be None if there was an error
self
.
generate_exttype_vtable
(
scope
,
code
)
self
.
generate_new_function
(
scope
,
code
,
entry
)
self
.
generate_dealloc_function
(
scope
,
code
)
...
...
@@ -1769,7 +1769,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
slot_func
=
scope
.
mangle_internal
(
"tp_clear"
)
base_type
=
scope
.
parent_type
.
base_type
if
tp_slot
.
slot_code
(
scope
)
!=
slot_func
:
return
# never used
return
# never used
have_entries
,
(
py_attrs
,
py_buffers
,
memoryview_slices
)
=
(
scope
.
get_refcounted_entries
(
include_gc_simple
=
False
))
...
...
Cython/Compiler/Naming.py
View file @
7f26ba41
...
...
@@ -48,12 +48,11 @@ vtable_prefix = pyrex_prefix + "vtable_"
vtabptr_prefix
=
pyrex_prefix
+
"vtabptr_"
vtabstruct_prefix
=
pyrex_prefix
+
"vtabstruct_"
unicode_vtabentry_prefix
=
pyrex_prefix
+
"Uvtabentry_"
# vtab entries aren't normally manged,
# but punycode names sometimes start with numbers leading
# to a C syntax error
# vtab entries aren't normally mangled,
# but punycode names sometimes start with numbers leading to a C syntax error
unicode_structmember_prefix
=
pyrex_prefix
+
"Umember_"
# as above -
# not normally mang
ed but punycode names cause specific problems
# as above -
# not normally mangl
ed but punycode names cause specific problems
opt_arg_prefix
=
pyrex_prefix
+
"opt_args_"
convert_func_prefix
=
pyrex_prefix
+
"convert_"
closure_scope_prefix
=
pyrex_prefix
+
"scope_"
...
...
@@ -110,7 +109,7 @@ gilstate_cname = pyrex_prefix + "state"
skip_dispatch_cname
=
pyrex_prefix
+
"skip_dispatch"
empty_tuple
=
pyrex_prefix
+
"empty_tuple"
empty_bytes
=
pyrex_prefix
+
"empty_bytes"
empty_unicode
=
pyrex_prefix
+
"empty_unicode"
empty_unicode
=
pyrex_prefix
+
"empty_unicode"
print_function
=
pyrex_prefix
+
"print"
print_function_kwargs
=
pyrex_prefix
+
"print_kwargs"
cleanup_cname
=
pyrex_prefix
+
"module_cleanup"
...
...
@@ -129,7 +128,7 @@ frame_cname = pyrex_prefix + "frame"
frame_code_cname
=
pyrex_prefix
+
"frame_code"
binding_cfunc
=
pyrex_prefix
+
"binding_PyCFunctionType"
fused_func_prefix
=
pyrex_prefix
+
'fuse_'
quick_temp_cname
=
pyrex_prefix
+
"temp"
# temp variable for quick'n'dirty temping
quick_temp_cname
=
pyrex_prefix
+
"temp"
# temp variable for quick'n'dirty temping
tp_dict_version_temp
=
pyrex_prefix
+
"tp_dict_version"
obj_dict_version_temp
=
pyrex_prefix
+
"obj_dict_version"
type_dict_guard_temp
=
pyrex_prefix
+
"type_dict_guard"
...
...
Cython/Compiler/Nodes.py
View file @
7f26ba41
This diff is collapsed.
Click to expand it.
Cython/Compiler/Optimize.py
View file @
7f26ba41
...
...
@@ -41,7 +41,7 @@ except ImportError:
try
:
from
__builtin__
import
basestring
except
ImportError
:
basestring
=
str
# Python 3
basestring
=
str
# Python 3
def
load_c_utility
(
name
):
...
...
@@ -1569,7 +1569,7 @@ class EarlyReplaceBuiltinCalls(Visitor.EnvTransform):
utility_code
=
utility_code
)
def
_error_wrong_arg_count
(
self
,
function_name
,
node
,
args
,
expected
=
None
):
if
not
expected
:
# None or 0
if
not
expected
:
# None or 0
arg_str
=
''
elif
isinstance
(
expected
,
basestring
)
or
expected
>
1
:
arg_str
=
'...'
...
...
@@ -1803,7 +1803,7 @@ class EarlyReplaceBuiltinCalls(Visitor.EnvTransform):
if
not
yield_expression
.
is_literal
or
not
yield_expression
.
type
.
is_int
:
return
node
except
AttributeError
:
return
node
# in case we don't have a type yet
return
node
# in case we don't have a type yet
# special case: old Py2 backwards compatible "sum([int_const for ...])"
# can safely be unpacked into a genexpr
...
...
@@ -2236,7 +2236,7 @@ class OptimizeBuiltinCalls(Visitor.NodeRefCleanupMixin,
return
node
def
_error_wrong_arg_count
(
self
,
function_name
,
node
,
args
,
expected
=
None
):
if
not
expected
:
# None or 0
if
not
expected
:
# None or 0
arg_str
=
''
elif
isinstance
(
expected
,
basestring
)
or
expected
>
1
:
arg_str
=
'...'
...
...
@@ -2669,7 +2669,7 @@ class OptimizeBuiltinCalls(Visitor.NodeRefCleanupMixin,