Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
nexedi
cython
Commits
d36f3b8a
Commit
d36f3b8a
authored
Sep 26, 2009
by
Robert Bradshaw
Browse files
Options
Browse Files
Download
Plain Diff
-devel mergeback
parents
749cc80e
6b86bb18
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
98 additions
and
46 deletions
+98
-46
.hgtags
.hgtags
+2
-0
Cython/Compiler/Errors.py
Cython/Compiler/Errors.py
+14
-0
Cython/Compiler/ExprNodes.py
Cython/Compiler/ExprNodes.py
+2
-1
Cython/Compiler/Nodes.py
Cython/Compiler/Nodes.py
+18
-21
Cython/Compiler/Options.py
Cython/Compiler/Options.py
+2
-2
Cython/Compiler/Version.py
Cython/Compiler/Version.py
+1
-1
Cython/Includes/numpy.pxd
Cython/Includes/numpy.pxd
+5
-4
Cython/Mac/DarwinSystem.py
Cython/Mac/DarwinSystem.py
+4
-1
Cython/Mac/Makefile
Cython/Mac/Makefile
+1
-1
Cython/Runtime/refnanny.pyx
Cython/Runtime/refnanny.pyx
+1
-1
MANIFEST.in
MANIFEST.in
+3
-2
pyximport/pyxbuild.py
pyximport/pyxbuild.py
+5
-0
pyximport/pyximport.py
pyximport/pyximport.py
+5
-5
tests/bugs.txt
tests/bugs.txt
+0
-3
tests/run/numpy_test.pyx
tests/run/numpy_test.pyx
+32
-1
tests/run/profile_test.pyx
tests/run/profile_test.pyx
+3
-3
No files found.
.hgtags
View file @
d36f3b8a
...
...
@@ -15,3 +15,5 @@ a4abf0156540db4d3ebaa95712b65811c43c5acb 0.11-beta
6454db601984145f38e28d34176fca8a3a22329c 0.11.1
af6f1bed8cd40a2edefb57d3eacbc9274a8788b4 0.11.2.rc1
15ad532e2127840ae09dfbe46ccc80ac8c562f99 0.11.2
eb00d00a73c13b6aa8b440fe07cd7acb52a060e8 0.11.3.rc0
7c695fe49fd6912f52d995fe512d66baacf90ee6 0.11.3
Cython/Compiler/Errors.py
View file @
d36f3b8a
...
...
@@ -150,6 +150,20 @@ def warning(position, message, level=0):
echo_file
.
write
(
line
)
return
warn
_warn_once_seen
=
{}
def
warn_once
(
position
,
message
,
level
=
0
):
if
level
<
LEVEL
or
message
in
_warn_once_seen
:
return
warn
=
CompileWarning
(
position
,
message
)
line
=
"warning: %s
\
n
"
%
warn
if
listing_file
:
listing_file
.
write
(
line
)
if
echo_file
:
echo_file
.
write
(
line
)
_warn_once_seen
[
message
]
=
True
return
warn
# These functions can be used to momentarily suppress errors.
error_stack
=
[]
...
...
Cython/Compiler/ExprNodes.py
View file @
d36f3b8a
...
...
@@ -4,7 +4,7 @@
import
operator
from
Errors
import
error
,
warning
,
InternalError
from
Errors
import
error
,
warning
,
warn_once
,
InternalError
from
Errors
import
hold_errors
,
release_errors
,
held_errors
,
report_error
from
Code
import
UtilityCode
import
StringEncoding
...
...
@@ -781,6 +781,7 @@ class StringNode(ConstNode):
# Arrange for a Python version of the string to be pre-allocated
# when coercing to a Python type.
if
dst_type
.
is_pyobject
and
not
self
.
type
.
is_pyobject
:
warn_once
(
self
.
pos
,
"String literals will no longer be Py3 bytes in Cython 0.12."
,
1
)
node
=
self
.
as_py_string_node
(
env
)
else
:
node
=
self
...
...
Cython/Compiler/Nodes.py
View file @
d36f3b8a
...
...
@@ -1029,14 +1029,11 @@ class FuncDefNode(StatNode, BlockNode):
is_getbuffer_slot
=
(
self
.
entry
.
name
==
"__getbuffer__"
and
self
.
entry
.
scope
.
is_c_class_scope
)
if
code
.
globalstate
.
directives
[
'profile'
]
is
None
:
profile
=
'inline'
not
in
self
.
modifiers
and
not
lenv
.
nogil
else
:
profile
=
code
.
globalstate
.
directives
[
'profile'
]
if
profile
and
lenv
.
nogil
:
error
(
self
.
pos
,
"Cannot profile nogil function."
)
profile
=
code
.
globalstate
.
directives
[
'profile'
]
if
profile
:
code
.
globalstate
.
use_utility_code
(
trace_utility_code
)
if
lenv
.
nogil
:
error
(
self
.
pos
,
"Cannot profile nogil function."
)
code
.
globalstate
.
use_utility_code
(
profile_utility_code
)
# Generate C code for header and body of function
code
.
enter_cfunc_scope
()
...
...
@@ -5655,22 +5652,22 @@ proto="""
# Note that cPython ignores PyTrace_EXCEPTION,
# but maybe some other profilers don't.
trac
e_utility_code
=
UtilityCode
(
proto
=
"""
#ifndef CYTHON_
TRACING
#define CYTHON_
TRACING
1
profil
e_utility_code
=
UtilityCode
(
proto
=
"""
#ifndef CYTHON_
PROFILE
#define CYTHON_
PROFILE
1
#endif
#ifndef CYTHON_
TRACING
_REUSE_FRAME
#define CYTHON_
TRACING
_REUSE_FRAME 0
#ifndef CYTHON_
PROFILE
_REUSE_FRAME
#define CYTHON_
PROFILE
_REUSE_FRAME 0
#endif
#if CYTHON_
TRACING
#if CYTHON_
PROFILE
#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
#if CYTHON_
TRACING
_REUSE_FRAME
#if CYTHON_
PROFILE
_REUSE_FRAME
#define CYTHON_FRAME_MODIFIER static
#define CYTHON_FRAME_DEL
#else
...
...
@@ -5682,12 +5679,12 @@ trace_utility_code = UtilityCode(proto="""
static PyCodeObject *%(FRAME_CODE)s = NULL;
\
\
CYTHON_FRAME_MODIFIER PyFrameObject *%(FRAME)s = NULL;
\
\
int __Pyx_use_tracing = 0;
\
\
if (
PyThreadState_GET()->use_tracing && PyThreadState_GET()->c_profilefunc
) {
\
\
if (
unlikely(PyThreadState_GET()->use_tracing && PyThreadState_GET()->c_profilefunc)
) {
\
\
__Pyx_use_tracing = __Pyx_TraceSetupAndCall(&%(FRAME_CODE)s, &%(FRAME)s, funcname, srcfile, firstlineno);
\
\
}
#define __Pyx_TraceException()
\
\
if (
__Pyx_use_tracing
&& PyThreadState_GET()->use_tracing && PyThreadState_GET()->c_profilefunc) {
\
\
if (
unlikely(__Pyx_use_tracing(
&& PyThreadState_GET()->use_tracing && PyThreadState_GET()->c_profilefunc) {
\
\
PyObject *exc_info = __Pyx_GetExceptionTuple();
\
\
if (exc_info) {
\
\
PyThreadState_GET()->c_profilefunc(
\
\
...
...
@@ -5697,7 +5694,7 @@ if (__Pyx_use_tracing && PyThreadState_GET()->use_tracing && PyThreadState_GET()
}
#define __Pyx_TraceReturn(result)
\
\
if (
__Pyx_use_tracing
&& PyThreadState_GET()->use_tracing && PyThreadState_GET()->c_profilefunc) {
\
\
if (
unlikely(__Pyx_use_tracing)
&& PyThreadState_GET()->use_tracing && PyThreadState_GET()->c_profilefunc) {
\
\
PyThreadState_GET()->c_profilefunc(
\
\
PyThreadState_GET()->c_profileobj, %(FRAME)s, PyTrace_RETURN, (PyObject*)result);
\
\
CYTHON_FRAME_DEL;
\
\
...
...
@@ -5710,7 +5707,7 @@ static int __Pyx_TraceSetupAndCall(PyCodeObject** code, PyFrameObject** frame, c
#define __Pyx_TraceCall(funcname, srcfile, firstlineno)
#define __Pyx_TraceException()
#define __Pyx_TraceReturn(result)
#endif /* CYTHON_
TRACING
*/
#endif /* CYTHON_
PROFILE
*/
"""
%
{
"FRAME"
:
Naming
.
frame_cname
,
...
...
@@ -5718,14 +5715,14 @@ static int __Pyx_TraceSetupAndCall(PyCodeObject** code, PyFrameObject** frame, c
},
impl
=
"""
#if CYTHON_
TRACING
#if CYTHON_
PROFILE
static int __Pyx_TraceSetupAndCall(PyCodeObject** code,
PyFrameObject** frame,
const char *funcname,
const char *srcfile,
int firstlineno) {
if (*frame == NULL || !CYTHON_
TRACING
_REUSE_FRAME) {
if (*frame == NULL || !CYTHON_
PROFILE
_REUSE_FRAME) {
if (*code == NULL) {
*code = __Pyx_createFrameCodeObject(funcname, srcfile, firstlineno);
if (*code == NULL) return 0;
...
...
@@ -5785,7 +5782,7 @@ bad:
return py_code;
}
#endif /* CYTHON_
TRACING
*/
#endif /* CYTHON_
PROFILE
*/
"""
%
{
'EMPTY_TUPLE'
:
Naming
.
empty_tuple
,
'EMPTY_BYTES'
:
Naming
.
empty_bytes
,
...
...
Cython/Compiler/Options.py
View file @
d36f3b8a
...
...
@@ -67,11 +67,11 @@ option_defaults = {
'wraparound'
:
True
,
'c99_complex'
:
False
,
# Don't use macro wrappers for complex arith, not sure what to name this...
'callspec'
:
""
,
'profile'
:
Non
e
,
'profile'
:
Fals
e
,
}
# Override types possibilities above, if needed
option_types
=
{
'profile'
:
bool
}
option_types
=
{}
for
key
,
val
in
option_defaults
.
items
():
if
key
not
in
option_types
:
...
...
Cython/Compiler/Version.py
View file @
d36f3b8a
version
=
'0.11.
2
'
version
=
'0.11.
3
'
Cython/Includes/numpy.pxd
View file @
d36f3b8a
...
...
@@ -124,7 +124,7 @@ cdef extern from "numpy/arrayobject.h":
cdef
int
itemsize
"elsize"
cdef
char
byteorder
cdef
object
fields
cdef
object
names
cdef
tuple
names
ctypedef
extern
class
numpy
.
flatiter
[
object
PyArrayIterObject
]:
# Use through macros
...
...
@@ -696,10 +696,11 @@ cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset
cdef
tuple
i
cdef
int
endian_detector
=
1
cdef
bint
little_endian
=
((
<
char
*>&
endian_detector
)[
0
]
!=
0
)
cdef
tuple
fields
for
i
in
descr
.
fields
.
itervalues
()
:
child
=
i
[
0
]
new_offset
=
i
[
1
]
for
childname
in
descr
.
names
:
fields
=
descr
.
fields
[
childname
]
child
,
new_offset
=
fields
if
(
end
-
f
)
-
(
new_offset
-
offset
[
0
])
<
15
:
raise
RuntimeError
(
"Format string allocated too short, see comment in numpy.pxd"
)
...
...
Cython/Mac/DarwinSystem.py
View file @
d36f3b8a
...
...
@@ -18,6 +18,7 @@ py_include_dirs = [
"/Library/Frameworks/Python.framework/Versions/%s/Headers"
%
version_string
]
osx_version
=
os
.
popen
(
'sw_vers | grep ProductVersion'
).
read
().
split
()[
1
]
# MACOSX_DEPLOYMENT_TARGET can be set to 10.3 in most cases.
# But for the built-in Python 2.5.1 on Leopard, it needs to be set for 10.5.
# This looks like a bug that will be fixed in 2.5.2. If Apple updates their
...
...
@@ -28,12 +29,14 @@ leopard_python_prefix = '/System/Library/Frameworks/Python.framework/Versions/2.
full_version
=
"%s.%s.%s"
%
sys
.
version_info
[:
3
]
if
python_prefix
==
leopard_python_prefix
and
full_version
==
'2.5.1'
:
os
.
environ
[
"MACOSX_DEPLOYMENT_TARGET"
]
=
"10.5"
elif
osx_version
>=
"10.6"
:
os
.
environ
[
"MACOSX_DEPLOYMENT_TARGET"
]
=
"10.4"
else
:
os
.
environ
[
"MACOSX_DEPLOYMENT_TARGET"
]
=
"10.3"
compilers
=
[
"gcc"
,
"g++"
]
compiler_options
=
\
"-g -c -fno-strict-aliasing -
Wno-long-double -
no-cpp-precomp "
\
"-g -c -fno-strict-aliasing -no-cpp-precomp "
\
"-mno-fused-madd -fno-common -dynamic "
\
.
split
()
if
gcc_pendantic
:
...
...
Cython/Mac/Makefile
View file @
d36f3b8a
...
...
@@ -5,7 +5,7 @@ PYTHON := /Local/Build/Pythonic/python/2.3
INCLUDE
:=
-I
$(PYTHON)
-I
$(PYTHON)
/Include
-I
$(PYTHON)
/Mac/Include
CCOPTS
:=
-fno-strict-aliasing
-
Wno-long-double
-
no-cpp-precomp
\
CCOPTS
:=
-fno-strict-aliasing
-no-cpp-precomp
\
-mno-fused-madd
-fno-common
-dynamic
LDOPTS
:=
-Wl
,-F.,-w
-bundle
-framework
Python
-framework
Carbon
...
...
Cython/Runtime/refnanny.pyx
View file @
d36f3b8a
...
...
@@ -61,7 +61,7 @@ class Context(object):
cdef
void
report_unraisable
(
object
e
):
try
:
print
"refnanny raised an exception: %s"
%
e
print
u
"refnanny raised an exception: %s"
%
e
except
:
pass
# We absolutely cannot exit with an exception
...
...
MANIFEST.in
View file @
d36f3b8a
...
...
@@ -3,7 +3,7 @@ include COPYING.txt LICENSE.txt Makefile
recursive-include .hg *
include .hgignore .hgtags
include setup.py
include bin/
cython
include bin/
*
include cython.py
include Cython/Compiler/Lexicon.pickle
recursive-include Cython *.pyx *.pxd
...
...
@@ -13,10 +13,11 @@ include Demos/*.pyx
include Demos/*.py
include Demos/callback/*
include Demos/embed/*
include Demos/freeze/*
include Demos/Setup.py
include Demos/Makefile*
include Tools/*
recursive-include tests *.pyx *.pxd *.pxi *.
h *.BROKEN
recursive-include tests *.pyx *.pxd *.pxi *.
py *.h *.BROKEN bugs.txt
include runtests.py
include Cython/Mac/Makefile
...
...
pyximport/pyxbuild.py
View file @
d36f3b8a
...
...
@@ -55,6 +55,11 @@ def pyx_to_dll(filename, ext = None, force_rebuild = 0,
build
=
dist
.
get_command_obj
(
'build'
)
build
.
build_base
=
pyxbuild_dir
config_files
=
dist
.
find_config_files
()
try
:
config_files
.
remove
(
'setup.cfg'
)
except
ValueError
:
pass
dist
.
parse_config_files
(
config_files
)
try
:
ok
=
dist
.
parse_command_line
()
except
DistutilsArgError
:
...
...
pyximport/pyximport.py
View file @
d36f3b8a
...
...
@@ -117,7 +117,7 @@ def handle_dependencies(pyxfilename):
# be tricked into rebuilding it.
for
file
in
files
:
if
newer
(
file
,
pyxfilename
):
print
"Rebuilding because of "
,
file
print
(
"Rebuilding because of "
,
file
)
filetime
=
os
.
path
.
getmtime
(
file
)
os
.
utime
(
pyxfilename
,
(
filetime
,
filetime
))
_test_files
.
append
(
file
)
...
...
@@ -141,7 +141,7 @@ def build_module(name, pyxfilename, pyxbuild_dir=None):
try
:
os
.
remove
(
path
)
except
IOError
:
print
"Couldn't remove "
,
path
print
(
"Couldn't remove "
,
path
)
return
so_path
...
...
@@ -168,7 +168,7 @@ class PyxImporter(object):
if
fullname
in
sys
.
modules
:
return
None
if
DEBUG_IMPORT
:
print
"SEARCHING"
,
fullname
,
package_path
print
(
"SEARCHING"
,
fullname
,
package_path
)
if
'.'
in
fullname
:
mod_parts
=
fullname
.
split
(
'.'
)
package
=
'.'
.
join
(
mod_parts
[:
-
1
])
...
...
@@ -226,7 +226,7 @@ class PyImporter(PyxImporter):
# prevent infinite recursion
return
None
if
DEBUG_IMPORT
:
print
"trying import of module %s"
%
fullname
print
(
"trying import of module"
,
fullname
)
if
fullname
in
self
.
uncompilable_modules
:
path
,
last_modified
=
self
.
uncompilable_modules
[
fullname
]
try
:
...
...
@@ -243,7 +243,7 @@ class PyImporter(PyxImporter):
importer
=
self
.
super
.
find_module
(
fullname
,
package_path
)
if
importer
is
not
None
:
if
DEBUG_IMPORT
:
print
"importer found"
print
(
"importer found"
)
try
:
if
importer
.
init_path
:
path
=
importer
.
init_path
...
...
tests/bugs.txt
View file @
d36f3b8a
...
...
@@ -8,6 +8,3 @@ unsignedbehaviour_T184
funcexc_iter_T228
bad_c_struct_T252
missing_baseclass_in_predecl_T262
# Not yet enabled
profile_test
tests/run/numpy_test.pyx
View file @
d36f3b8a
...
...
@@ -17,6 +17,8 @@ try:
import
numpy
as
np
__doc__
=
u"""
>>> assert_dtype_sizes()
>>> basic()
[[0 1 2 3 4]
[5 6 7 8 9]]
...
...
@@ -199,12 +201,30 @@ try:
1,1
1,1
8,16
>>> test_point_record()
array([(0.0, 0.0), (1.0, -1.0), (2.0, -2.0)],
dtype=[('x', '!f8'), ('y', '!f8')])
"""
except
:
__doc__
=
u""
def
assert_dtype_sizes
():
assert
sizeof
(
np
.
int8_t
)
==
1
assert
sizeof
(
np
.
int16_t
)
==
2
assert
sizeof
(
np
.
int32_t
)
==
4
assert
sizeof
(
np
.
int64_t
)
==
8
assert
sizeof
(
np
.
uint8_t
)
==
1
assert
sizeof
(
np
.
uint16_t
)
==
2
assert
sizeof
(
np
.
uint32_t
)
==
4
assert
sizeof
(
np
.
uint64_t
)
==
8
assert
sizeof
(
np
.
float32_t
)
==
4
assert
sizeof
(
np
.
float64_t
)
==
8
assert
sizeof
(
np
.
complex64_t
)
==
8
assert
sizeof
(
np
.
complex128_t
)
==
16
def
ndarray_str
(
arr
):
u"""
Since Py2.3 doctest don't support <BLANKLINE>, manually replace blank lines
...
...
@@ -392,4 +412,15 @@ def test_complextypes():
print
"%d,%d"
%
(
sizeof
(
x64
),
sizeof
(
x128
))
cdef
struct
Point
:
np
.
float64_t
x
,
y
def
test_point_record
():
cdef
np
.
ndarray
[
Point
]
test
Point_dtype
=
np
.
dtype
([(
'x'
,
np
.
float64
),
(
'y'
,
np
.
float64
)])
test
=
np
.
zeros
(
3
,
Point_dtype
)
cdef
int
i
for
i
in
range
(
3
):
test
[
i
].
x
=
i
test
[
i
].
y
=
-
i
print
repr
(
test
).
replace
(
'<'
,
'!'
).
replace
(
'>'
,
'!'
)
tests/run/profile_test.pyx
View file @
d36f3b8a
# cython: profile = True
__doc__
=
u"""
>>> import os, tempfile, cProfile as profile, pstats
>>> statsfile = tempfile.mkstemp()[1]
...
...
@@ -9,9 +11,7 @@ __doc__ = u"""
>>> short_stats['f_cdef']
100
>>> short_stats['f_inline']
Traceback (most recent call last):
...
KeyError: 'f_inline'
100
>>> short_stats['f_inline_prof']
100
>>> short_stats['f_noprof']
...
...
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