Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
Pyston
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
Boxiang Sun
Pyston
Commits
c8f55421
Commit
c8f55421
authored
Oct 27, 2015
by
Boxiang Sun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add doc to existed builtin function or method
parent
fd85b564
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
522 additions
and
109 deletions
+522
-109
src/runtime/builtin_modules/builtins.cpp
src/runtime/builtin_modules/builtins.cpp
+412
-80
src/runtime/builtin_modules/gc.cpp
src/runtime/builtin_modules/gc.cpp
+24
-6
src/runtime/builtin_modules/sys.cpp
src/runtime/builtin_modules/sys.cpp
+49
-12
src/runtime/float.cpp
src/runtime/float.cpp
+3
-4
src/runtime/import.cpp
src/runtime/import.cpp
+34
-7
No files found.
src/runtime/builtin_modules/builtins.cpp
View file @
c8f55421
...
...
@@ -1528,6 +1528,322 @@ extern "C" {
BoxedClass
*
ellipsis_cls
;
}
PyDoc_STRVAR
(
print_doc
,
"print(value, ..., sep=' ', end='
\\
n', file=sys.stdout)
\n
\
\n
\
Prints the values to a stream, or to sys.stdout by default.
\n
\
Optional keyword arguments:
\n
\
file: a file-like object (stream); defaults to the current sys.stdout.
\n
\
sep: string inserted between values, default a space.
\n
\
end: string appended after the last value, default a newline."
);
PyDoc_STRVAR
(
range_doc
,
"range(stop) -> list of integers
\n
\
range(start, stop[, step]) -> list of integers
\n
\
\n
\
Return a list containing an arithmetic progression of integers.
\n
\
range(i, j) returns [i, i+1, i+2, ..., j-1]; start (!) defaults to 0.
\n
\
When step is given, it specifies the increment (or decrement).
\n
\
For example, range(4) returns [0, 1, 2, 3]. The end point is omitted!
\n
\
These are exactly the valid indices for a list of 4 elements."
);
PyDoc_STRVAR
(
raw_input_doc
,
"raw_input([prompt]) -> string
\n
\
\n
\
Read a string from standard input. The trailing newline is stripped.
\n
\
If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError.
\n
\
On Unix, GNU readline is used if enabled. The prompt string, if given,
\n
\
is printed without a trailing newline before reading."
);
PyDoc_STRVAR
(
reduce_doc
,
"reduce(function, sequence[, initial]) -> value
\n
\
\n
\
Apply a function of two arguments cumulatively to the items of a sequence,
\n
\
from left to right, so as to reduce the sequence to a single value.
\n
\
For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates
\n
\
((((1+2)+3)+4)+5). If initial is present, it is placed before the items
\n
\
of the sequence in the calculation, and serves as a default when the
\n
\
sequence is empty."
);
PyDoc_STRVAR
(
reload_doc
,
"reload(module) -> module
\n
\
\n
\
Reload the module. The module must have been successfully imported before."
);
PyDoc_STRVAR
(
repr_doc
,
"repr(object) -> string
\n
\
\n
\
Return the canonical string representation of the object.
\n
\
For most object types, eval(repr(object)) == object."
);
PyDoc_STRVAR
(
round_doc
,
"round(number[, ndigits]) -> floating point number
\n
\
\n
\
Round a number to a given precision in decimal digits (default 0 digits).
\n
\
This always returns a floating point number. Precision may be negative."
);
PyDoc_STRVAR
(
sorted_doc
,
"sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list"
);
PyDoc_STRVAR
(
vars_doc
,
"vars([object]) -> dictionary
\n
\
\n
\
Without arguments, equivalent to locals().
\n
\
With an argument, equivalent to object.__dict__."
);
PyDoc_STRVAR
(
sum_doc
,
"sum(sequence[, start]) -> value
\n
\
\n
\
Return the sum of a sequence of numbers (NOT strings) plus the value
\n
\
of parameter 'start' (which defaults to 0). When the sequence is
\n
\
empty, return start."
);
PyDoc_STRVAR
(
isinstance_doc
,
"isinstance(object, class-or-type-or-tuple) -> bool
\n
\
\n
\
Return whether an object is an instance of a class or of a subclass thereof.
\n
\
With a type as second argument, return whether that is the object's type.
\n
\
The form using a tuple, isinstance(x, (A, B, ...)), is a shortcut for
\n
\
isinstance(x, A) or isinstance(x, B) or ... (etc.)."
);
PyDoc_STRVAR
(
issubclass_doc
,
"issubclass(C, B) -> bool
\n
\
\n
\
Return whether class C is a subclass (i.e., a derived class) of class B.
\n
\
When using a tuple as the second argument issubclass(X, (A, B, ...)),
\n
\
is a shortcut for issubclass(X, A) or issubclass(X, B) or ... (etc.)."
);
PyDoc_STRVAR
(
zip_doc
,
"zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
\n
\
\n
\
Return a list of tuples, where each tuple contains the i-th element
\n
\
from each of the argument sequences. The returned list is truncated
\n
\
in length to the length of the shortest argument sequence."
);
PyDoc_STRVAR
(
builtin_doc
,
"Built-in functions, exceptions, and other objects.
\n
\
\n
\
Noteworthy: None is the `nil' object; Ellipsis represents `...' in slices."
);
PyDoc_STRVAR
(
import_doc
,
"__import__(name, globals={}, locals={}, fromlist=[], level=-1) -> module
\n
\
\n
\
Import a module. Because this function is meant for use by the Python
\n
\
interpreter and not for general use it is better to use
\n
\
importlib.import_module() to programmatically import a module.
\n
\
\n
\
The globals argument is only used to determine the context;
\n
\
they are not modified. The locals argument is unused. The fromlist
\n
\
should be a list of names to emulate ``from name import ...'', or an
\n
\
empty list to emulate ``import name''.
\n
\
When importing a module from a package, note that __import__('A.B', ...)
\n
\
returns package A when fromlist is empty, but its submodule B when
\n
\
fromlist is not empty. Level is used to determine whether to perform
\n
\
absolute or relative imports. -1 is the original strategy of attempting
\n
\
both absolute and relative imports, 0 is absolute, a positive number
\n
\
is the number of parent directories to search relative to the current module."
);
PyDoc_STRVAR
(
abs_doc
,
"abs(number) -> number
\n
\
\n
\
Return the absolute value of the argument."
);
PyDoc_STRVAR
(
all_doc
,
"all(iterable) -> bool
\n
\
\n
\
Return True if bool(x) is True for all values x in the iterable.
\n
\
If the iterable is empty, return True."
);
PyDoc_STRVAR
(
any_doc
,
"any(iterable) -> bool
\n
\
\n
\
Return True if bool(x) is True for any x in the iterable.
\n
\
If the iterable is empty, return False."
);
PyDoc_STRVAR
(
apply_doc
,
"apply(object[, args[, kwargs]]) -> value
\n
\
\n
\
Call a callable object with positional arguments taken from the tuple args,
\n
\
and keyword arguments taken from the optional dictionary kwargs.
\n
\
Note that classes are callable, as are instances with a __call__() method.
\n
\
\n
\
Deprecated since release 2.3. Instead, use the extended call syntax:
\n
\
function(*args, **keywords)."
);
PyDoc_STRVAR
(
bin_doc
,
"bin(number) -> string
\n
\
\n
\
Return the binary representation of an integer or long integer."
);
PyDoc_STRVAR
(
callable_doc
,
"callable(object) -> bool
\n
\
\n
\
Return whether the object is callable (i.e., some kind of function).
\n
\
Note that classes are callable, as are instances with a __call__() method."
);
PyDoc_STRVAR
(
filter_doc
,
"filter(function or None, sequence) -> list, tuple, or string
\n
"
"
\n
"
"Return those items of sequence for which function(item) is true. If
\n
"
"function is None, return the items that are true. If sequence is a tuple
\n
"
"or string, return the same type, else return a list."
);
PyDoc_STRVAR
(
format_doc
,
"format(value[, format_spec]) -> string
\n
\
\n
\
Returns value.__format__(format_spec)
\n
\
format_spec defaults to
\"\"
"
);
PyDoc_STRVAR
(
chr_doc
,
"chr(i) -> character
\n
\
\n
\
Return a string of one character with ordinal i; 0 <= i < 256."
);
PyDoc_STRVAR
(
unichr_doc
,
"unichr(i) -> Unicode character
\n
\
\n
\
Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff."
);
PyDoc_STRVAR
(
cmp_doc
,
"cmp(x, y) -> integer
\n
\
\n
\
Return negative if x<y, zero if x==y, positive if x>y."
);
PyDoc_STRVAR
(
coerce_doc
,
"coerce(x, y) -> (x1, y1)
\n
\
\n
\
Return a tuple consisting of the two numeric arguments converted to
\n
\
a common type, using the same rules as used by arithmetic operations.
\n
\
If coercion is not possible, raise TypeError."
);
PyDoc_STRVAR
(
compile_doc
,
"compile(source, filename, mode[, flags[, dont_inherit]]) -> code object
\n
\
\n
\
Compile the source string (a Python module, statement or expression)
\n
\
into a code object that can be executed by the exec statement or eval().
\n
\
The filename will be used for run-time error messages.
\n
\
The mode must be 'exec' to compile a module, 'single' to compile a
\n
\
single (interactive) statement, or 'eval' to compile an expression.
\n
\
The flags argument, if present, controls which future statements influence
\n
\
the compilation of the code.
\n
\
The dont_inherit argument, if non-zero, stops the compilation inheriting
\n
\
the effects of any future statements in effect in the code calling
\n
\
compile; if absent or zero these statements do influence the compilation,
\n
\
in addition to any features explicitly specified."
);
PyDoc_STRVAR
(
dir_doc
,
"dir([object]) -> list of strings
\n
"
"
\n
"
"If called without an argument, return the names in the current scope.
\n
"
"Else, return an alphabetized list of names comprising (some of) the attributes
\n
"
"of the given object, and of attributes reachable from it.
\n
"
"If the object supplies a method named __dir__, it will be used; otherwise
\n
"
"the default dir() logic is used and returns:
\n
"
" for a module object: the module's attributes.
\n
"
" for a class object: its attributes, and recursively the attributes
\n
"
" of its bases.
\n
"
" for any other object: its attributes, its class's attributes, and
\n
"
" recursively the attributes of its class's base classes."
);
PyDoc_STRVAR
(
divmod_doc
,
"divmod(x, y) -> (quotient, remainder)
\n
\
\n
\
Return the tuple ((x-x%y)/y, x%y). Invariant: div*y + mod == x."
);
PyDoc_STRVAR
(
eval_doc
,
"eval(source[, globals[, locals]]) -> value
\n
\
\n
\
Evaluate the source in the context of globals and locals.
\n
\
The source may be a string representing a Python expression
\n
\
or a code object as returned by compile().
\n
\
The globals must be a dictionary and locals can be any mapping,
\n
\
defaulting to the current globals and locals.
\n
\
If only globals is given, locals defaults to it.
\n
"
);
PyDoc_STRVAR
(
execfile_doc
,
"execfile(filename[, globals[, locals]])
\n
\
\n
\
Read and execute a Python script from a file.
\n
\
The globals and locals are dictionaries, defaulting to the current
\n
\
globals and locals. If only globals is given, locals defaults to it."
);
PyDoc_STRVAR
(
getattr_doc
,
"getattr(object, name[, default]) -> value
\n
\
\n
\
Get a named attribute from an object; getattr(x, 'y') is equivalent to x.y.
\n
\
When a default argument is given, it is returned when the attribute doesn't
\n
\
exist; without it, an exception is raised in that case."
);
PyDoc_STRVAR
(
globals_doc
,
"globals() -> dictionary
\n
\
\n
\
Return the dictionary containing the current scope's global variables."
);
PyDoc_STRVAR
(
hasattr_doc
,
"hasattr(object, name) -> bool
\n
\
\n
\
Return whether the object has an attribute with the given name.
\n
\
(This is done by calling getattr(object, name) and catching exceptions.)"
);
PyDoc_STRVAR
(
id_doc
,
"id(object) -> integer
\n
\
\n
\
Return the identity of an object. This is guaranteed to be unique among
\n
\
simultaneously existing objects. (Hint: it's the object's memory address.)"
);
PyDoc_STRVAR
(
map_doc
,
"map(function, sequence[, sequence, ...]) -> list
\n
\
\n
\
Return a list of the results of applying the function to the items of
\n
\
the argument sequence(s). If more than one sequence is given, the
\n
\
function is called with an argument list consisting of the corresponding
\n
\
item of each sequence, substituting None for missing values when not all
\n
\
sequences have the same length. If the function is None, return a list of
\n
\
the items of the sequence (or a list of tuples if more than one sequence)."
);
PyDoc_STRVAR
(
next_doc
,
"next(iterator[, default])
\n
\
\n
\
Return the next item from the iterator. If default is given and the iterator
\n
\
is exhausted, it is returned instead of raising StopIteration."
);
PyDoc_STRVAR
(
setattr_doc
,
"setattr(object, name, value)
\n
\
\n
\
Set a named attribute on an object; setattr(x, 'y', v) is equivalent to
\n
\
``x.y = v''."
);
PyDoc_STRVAR
(
delattr_doc
,
"delattr(object, name)
\n
\
\n
\
Delete a named attribute on an object; delattr(x, 'y') is equivalent to
\n
\
``del x.y''."
);
PyDoc_STRVAR
(
hash_doc
,
"hash(object) -> integer
\n
\
\n
\
Return a hash value for the object. Two objects with the same value have
\n
\
the same hash value. The reverse is not necessarily true, but likely."
);
PyDoc_STRVAR
(
hex_doc
,
"hex(number) -> string
\n
\
\n
\
Return the hexadecimal representation of an integer or long integer."
);
PyDoc_STRVAR
(
input_doc
,
"input([prompt]) -> value
\n
\
\n
\
Equivalent to eval(raw_input(prompt))."
);
PyDoc_STRVAR
(
intern_doc
,
"intern(string) -> string
\n
\
\n
\
``Intern'' the given string. This enters the string in the (global)
\n
\
table of interned strings whose purpose is to speed up dictionary lookups.
\n
\
Return the string itself or the previously interned string object with the
\n
\
same value."
);
PyDoc_STRVAR
(
iter_doc
,
"iter(collection) -> iterator
\n
\
iter(callable, sentinel) -> iterator
\n
\
\n
\
Get an iterator from an object. In the first form, the argument must
\n
\
supply its own iterator, or be a sequence.
\n
\
In the second form, the callable is called until it returns the sentinel."
);
PyDoc_STRVAR
(
len_doc
,
"len(object) -> integer
\n
\
\n
\
Return the number of items of a sequence or mapping."
);
PyDoc_STRVAR
(
locals_doc
,
"locals() -> dictionary
\n
\
\n
\
Update and return a dictionary containing the current scope's local variables."
);
PyDoc_STRVAR
(
min_doc
,
"min(iterable[, key=func]) -> value
\n
\
min(a, b, c, ...[, key=func]) -> value
\n
\
\n
\
With a single iterable argument, return its smallest item.
\n
\
With two or more arguments, return the smallest argument."
);
PyDoc_STRVAR
(
max_doc
,
"max(iterable[, key=func]) -> value
\n
\
max(a, b, c, ...[, key=func]) -> value
\n
\
\n
\
With a single iterable argument, return its largest item.
\n
\
With two or more arguments, return the largest argument."
);
PyDoc_STRVAR
(
oct_doc
,
"oct(number) -> string
\n
\
\n
\
Return the octal representation of an integer or long integer."
);
PyDoc_STRVAR
(
open_doc
,
"open(name[, mode[, buffering]]) -> file object
\n
\
\n
\
Open a file using the file() type, returns a file object. This is the
\n
\
preferred way to open a file. See file.__doc__ for further information."
);
PyDoc_STRVAR
(
ord_doc
,
"ord(c) -> integer
\n
\
\n
\
Return the integer ordinal of a one-character string."
);
PyDoc_STRVAR
(
pow_doc
,
"pow(x, y[, z]) -> number
\n
\
\n
\
With two arguments, equivalent to x**y. With three arguments,
\n
\
equivalent to (x**y) % z, but may be more efficient (e.g. for longs)."
);
void
setupBuiltins
()
{
builtins_module
=
createModule
(
boxString
(
"__builtin__"
),
NULL
,
"Built-in functions, exceptions, and other objects.
\n\n
Noteworthy: None is "
...
...
@@ -1544,8 +1860,8 @@ void setupBuiltins() {
builtins_module
->
giveAttr
(
"__debug__"
,
False
);
builtins_module
->
giveAttr
(
"print"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
print
,
NONE
,
0
,
true
,
true
),
"print"
));
builtins_module
->
giveAttr
(
"print"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
print
,
NONE
,
0
,
true
,
true
),
"print"
,
print_doc
));
notimplemented_cls
=
BoxedClass
::
create
(
type_cls
,
object_cls
,
NULL
,
0
,
0
,
sizeof
(
Box
),
false
,
"NotImplementedType"
);
notimplemented_cls
->
giveAttr
(
"__repr__"
,
new
BoxedFunction
(
boxRTFunction
((
void
*
)
notimplementedRepr
,
STR
,
1
)));
...
...
@@ -1555,52 +1871,57 @@ void setupBuiltins() {
builtins_module
->
giveAttr
(
"NotImplemented"
,
NotImplemented
);
builtins_module
->
giveAttr
(
"all"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
all
,
BOXED_BOOL
,
1
),
"all"
));
builtins_module
->
giveAttr
(
"any"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
any
,
BOXED_BOOL
,
1
),
"any"
));
builtins_module
->
giveAttr
(
"all"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
all
,
BOXED_BOOL
,
1
),
"all"
,
all_doc
));
builtins_module
->
giveAttr
(
"any"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
any
,
BOXED_BOOL
,
1
),
"any"
,
any_doc
));
builtins_module
->
giveAttr
(
"apply"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
builtinApply
,
UNKNOWN
,
3
,
false
,
false
),
"apply"
,
{
NULL
}));
{
NULL
}
,
NULL
,
apply_doc
));
repr_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
repr
,
UNKNOWN
,
1
),
"repr"
);
repr_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
repr
,
UNKNOWN
,
1
),
"repr"
,
repr_doc
);
builtins_module
->
giveAttr
(
"repr"
,
repr_obj
);
auto
len_func
=
boxRTFunction
((
void
*
)
len
,
UNKNOWN
,
1
);
len_func
->
internal_callable
.
cxx_val
=
lenCallInternal
;
len_obj
=
new
BoxedBuiltinFunctionOrMethod
(
len_func
,
"len"
);
len_obj
=
new
BoxedBuiltinFunctionOrMethod
(
len_func
,
"len"
,
len_doc
);
builtins_module
->
giveAttr
(
"len"
,
len_obj
);
hash_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
hash
,
UNKNOWN
,
1
),
"hash"
);
hash_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
hash
,
UNKNOWN
,
1
),
"hash"
,
hash_doc
);
builtins_module
->
giveAttr
(
"hash"
,
hash_obj
);
abs_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
abs_
,
UNKNOWN
,
1
),
"abs"
);
abs_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
abs_
,
UNKNOWN
,
1
),
"abs"
,
abs_doc
);
builtins_module
->
giveAttr
(
"abs"
,
abs_obj
);
builtins_module
->
giveAttr
(
"bin"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
binFunc
,
UNKNOWN
,
1
),
"bin"
));
builtins_module
->
giveAttr
(
"hex"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
hexFunc
,
UNKNOWN
,
1
),
"hex"
));
builtins_module
->
giveAttr
(
"oct"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
octFunc
,
UNKNOWN
,
1
),
"oct"
));
min_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
min
,
UNKNOWN
,
1
,
true
,
true
),
"min"
,
{
None
});
builtins_module
->
giveAttr
(
"bin"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
binFunc
,
UNKNOWN
,
1
),
"bin"
,
bin_doc
));
builtins_module
->
giveAttr
(
"hex"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
hexFunc
,
UNKNOWN
,
1
),
"hex"
,
hex_doc
));
builtins_module
->
giveAttr
(
"oct"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
octFunc
,
UNKNOWN
,
1
),
"oct"
,
oct_doc
));
min_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
min
,
UNKNOWN
,
1
,
true
,
true
),
"min"
,
{
None
},
NULL
,
min_doc
);
builtins_module
->
giveAttr
(
"min"
,
min_obj
);
max_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
max
,
UNKNOWN
,
1
,
true
,
true
),
"max"
,
{
None
});
max_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
max
,
UNKNOWN
,
1
,
true
,
true
),
"max"
,
{
None
},
NULL
,
max_doc
);
builtins_module
->
giveAttr
(
"max"
,
max_obj
);
builtins_module
->
giveAttr
(
"next"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
next
,
UNKNOWN
,
2
,
false
,
false
,
ParamNames
::
empty
(),
CAPI
),
"next"
,
{
NULL
}
));
builtins_module
->
giveAttr
(
"next"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
next
,
UNKNOWN
,
2
,
false
,
false
,
ParamNames
::
empty
(),
CAPI
),
"next"
,
{
NULL
},
NULL
,
next_doc
));
builtins_module
->
giveAttr
(
"sum"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
sum
,
UNKNOWN
,
2
,
false
,
false
),
"sum"
,
{
boxInt
(
0
)
}));
builtins_module
->
giveAttr
(
"sum"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
sum
,
UNKNOWN
,
2
,
false
,
false
),
"sum"
,
{
boxInt
(
0
)
},
NULL
,
sum_doc
));
id_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
id
,
BOXED_INT
,
1
),
"id"
);
id_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
id
,
BOXED_INT
,
1
),
"id"
,
id_doc
);
builtins_module
->
giveAttr
(
"id"
,
id_obj
);
chr_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
chr
,
STR
,
1
),
"chr"
);
chr_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
chr
,
STR
,
1
),
"chr"
,
chr_doc
);
builtins_module
->
giveAttr
(
"chr"
,
chr_obj
);
builtins_module
->
giveAttr
(
"unichr"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
unichr
,
UNKNOWN
,
1
),
"unichr"
));
ord_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
ord
,
BOXED_INT
,
1
),
"ord"
);
builtins_module
->
giveAttr
(
"unichr"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
unichr
,
UNKNOWN
,
1
),
"unichr"
,
unichr_doc
));
ord_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
ord
,
BOXED_INT
,
1
),
"ord"
,
ord_doc
);
builtins_module
->
giveAttr
(
"ord"
,
ord_obj
);
trap_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
trap
,
UNKNOWN
,
0
),
"trap"
);
builtins_module
->
giveAttr
(
"trap"
,
trap_obj
);
...
...
@@ -1609,40 +1930,45 @@ void setupBuiltins() {
builtins_module
->
giveAttr
(
"dumpAddr"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
pydumpAddr
,
UNKNOWN
,
1
),
"dumpAddr"
));
builtins_module
->
giveAttr
(
"delattr"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
delattrFunc
,
NONE
,
2
),
"delattr"
));
builtins_module
->
giveAttr
(
"delattr"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
delattrFunc
,
NONE
,
2
),
"delattr"
,
delattr_doc
));
auto
getattr_func
=
createRTFunction
(
3
,
true
,
true
,
ParamNames
::
empty
());
getattr_func
->
internal_callable
.
capi_val
=
&
getattrFuncInternal
<
CAPI
>
;
getattr_func
->
internal_callable
.
cxx_val
=
&
getattrFuncInternal
<
CXX
>
;
builtins_module
->
giveAttr
(
"getattr"
,
new
BoxedBuiltinFunctionOrMethod
(
getattr_func
,
"getattr"
,
{
NULL
}));
builtins_module
->
giveAttr
(
"getattr"
,
new
BoxedBuiltinFunctionOrMethod
(
getattr_func
,
"getattr"
,
{
NULL
},
NULL
,
getattr_doc
));
builtins_module
->
giveAttr
(
"setattr"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
setattrFunc
,
UNKNOWN
,
3
,
false
,
false
),
"setattr"
));
builtins_module
->
giveAttr
(
"setattr"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
setattrFunc
,
UNKNOWN
,
3
,
false
,
false
),
"setattr"
,
setattr_doc
));
auto
hasattr_func
=
createRTFunction
(
2
,
false
,
false
);
hasattr_func
->
internal_callable
.
capi_val
=
&
hasattrFuncInternal
<
CAPI
>
;
hasattr_func
->
internal_callable
.
cxx_val
=
&
hasattrFuncInternal
<
CXX
>
;
builtins_module
->
giveAttr
(
"hasattr"
,
new
BoxedBuiltinFunctionOrMethod
(
hasattr_func
,
"hasattr"
));
builtins_module
->
giveAttr
(
"hasattr"
,
new
BoxedBuiltinFunctionOrMethod
(
hasattr_func
,
"hasattr"
,
hasattr_doc
));
builtins_module
->
giveAttr
(
"pow"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
powFunc
,
UNKNOWN
,
3
,
false
,
false
),
"pow"
,
{
None
}));
builtins_module
->
giveAttr
(
"pow"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
powFunc
,
UNKNOWN
,
3
,
false
,
false
),
"pow"
,
{
None
},
NULL
,
pow_doc
));
Box
*
isinstance_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
isinstance_func
,
BOXED_BOOL
,
2
),
"isinstance"
);
Box
*
isinstance_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
isinstance_func
,
BOXED_BOOL
,
2
),
"isinstance"
,
isinstance_doc
);
builtins_module
->
giveAttr
(
"isinstance"
,
isinstance_obj
);
Box
*
issubclass_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
issubclass_func
,
BOXED_BOOL
,
2
),
"issubclass"
);
Box
*
issubclass_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
issubclass_func
,
BOXED_BOOL
,
2
),
"issubclass"
,
issubclass_doc
);
builtins_module
->
giveAttr
(
"issubclass"
,
issubclass_obj
);
Box
*
intern_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
intern_func
,
UNKNOWN
,
1
),
"intern"
);
Box
*
intern_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
intern_func
,
UNKNOWN
,
1
),
"intern"
,
intern_doc
);
builtins_module
->
giveAttr
(
"intern"
,
intern_obj
);
CLFunction
*
import_func
=
boxRTFunction
((
void
*
)
bltinImport
,
UNKNOWN
,
5
,
false
,
false
,
ParamNames
({
"name"
,
"globals"
,
"locals"
,
"fromlist"
,
"level"
},
""
,
""
));
builtins_module
->
giveAttr
(
"__import__"
,
new
BoxedBuiltinFunctionOrMethod
(
import_func
,
"__import__"
,
{
None
,
None
,
None
,
new
BoxedInt
(
-
1
)
}));
{
None
,
None
,
None
,
new
BoxedInt
(
-
1
)
},
NULL
,
import_doc
));
enumerate_cls
=
BoxedClass
::
create
(
type_cls
,
object_cls
,
&
BoxedEnumerate
::
gcHandler
,
0
,
0
,
sizeof
(
BoxedEnumerate
),
false
,
"enumerate"
);
...
...
@@ -1661,17 +1987,18 @@ void setupBuiltins() {
CLFunction
*
sorted_func
=
createRTFunction
(
4
,
false
,
false
,
ParamNames
({
""
,
"cmp"
,
"key"
,
"reverse"
},
""
,
""
));
addRTFunction
(
sorted_func
,
(
void
*
)
sorted
,
LIST
,
{
UNKNOWN
,
UNKNOWN
,
UNKNOWN
,
UNKNOWN
});
builtins_module
->
giveAttr
(
"sorted"
,
new
BoxedBuiltinFunctionOrMethod
(
sorted_func
,
"sorted"
,
{
None
,
None
,
False
}));
builtins_module
->
giveAttr
(
"sorted"
,
new
BoxedBuiltinFunctionOrMethod
(
sorted_func
,
"sorted"
,
{
None
,
None
,
False
},
NULL
,
sorted_doc
));
builtins_module
->
giveAttr
(
"True"
,
True
);
builtins_module
->
giveAttr
(
"False"
,
False
);
range_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
range
,
LIST
,
3
,
false
,
false
),
"range"
,
{
NULL
,
NULL
}
);
range_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
range
,
LIST
,
3
,
false
,
false
),
"range"
,
{
NULL
,
NULL
},
NULL
,
range_doc
);
builtins_module
->
giveAttr
(
"range"
,
range_obj
);
auto
*
round_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
builtinRound
,
BOXED_FLOAT
,
2
,
false
,
false
),
"round"
,
{
boxInt
(
0
)
});
"round"
,
{
boxInt
(
0
)
}
,
NULL
,
round_doc
);
builtins_module
->
giveAttr
(
"round"
,
round_obj
);
setupXrange
();
...
...
@@ -1679,47 +2006,51 @@ void setupBuiltins() {
open_obj
=
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
open
,
typeFromClass
(
file_cls
),
3
,
false
,
false
,
ParamNames
({
"name"
,
"mode"
,
"buffering"
},
""
,
""
)),
"open"
,
{
boxString
(
"r"
),
boxInt
(
-
1
)
});
"open"
,
{
boxString
(
"r"
),
boxInt
(
-
1
)
}
,
NULL
,
open_doc
);
builtins_module
->
giveAttr
(
"open"
,
open_obj
);
builtins_module
->
giveAttr
(
"globals"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
globals
,
UNKNOWN
,
0
,
false
,
false
),
"globals"
));
builtins_module
->
giveAttr
(
"globals"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
globals
,
UNKNOWN
,
0
,
false
,
false
),
"globals"
,
globals_doc
));
builtins_module
->
giveAttr
(
"locals"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
locals
,
UNKNOWN
,
0
,
false
,
false
),
"locals"
));
"locals"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
locals
,
UNKNOWN
,
0
,
false
,
false
),
"locals"
,
locals_doc
));
builtins_module
->
giveAttr
(
"iter"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
builtinIter
,
UNKNOWN
,
2
,
false
,
false
),
"iter"
,
{
NULL
}));
{
NULL
}
,
NULL
,
iter_doc
));
builtins_module
->
giveAttr
(
"reversed"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
getreversed
,
UNKNOWN
,
1
,
false
,
false
),
"reversed"
));
builtins_module
->
giveAttr
(
"coerce"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
coerceFunc
,
UNKNOWN
,
2
,
false
,
false
),
"coerce"
));
builtins_module
->
giveAttr
(
"divmod"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
divmod
,
UNKNOWN
,
2
),
"divmod"
));
builtins_module
->
giveAttr
(
"coerce"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
coerceFunc
,
UNKNOWN
,
2
,
false
,
false
),
"coerce"
,
coerce_doc
));
builtins_module
->
giveAttr
(
"divmod"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
divmod
,
UNKNOWN
,
2
),
"divmod"
,
divmod_doc
));
builtins_module
->
giveAttr
(
"execfile"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
execfile
,
UNKNOWN
,
3
,
false
,
false
),
"execfile"
,
{
NULL
,
NULL
}));
"execfile"
,
{
NULL
,
NULL
}
,
NULL
,
execfile_doc
));
CLFunction
*
compile_func
=
createRTFunction
(
5
,
false
,
false
,
ParamNames
({
"source"
,
"filename"
,
"mode"
,
"flags"
,
"dont_inherit"
},
""
,
""
));
addRTFunction
(
compile_func
,
(
void
*
)
compile
,
UNKNOWN
,
{
UNKNOWN
,
UNKNOWN
,
UNKNOWN
,
UNKNOWN
,
UNKNOWN
});
builtins_module
->
giveAttr
(
"compile"
,
new
BoxedBuiltinFunctionOrMethod
(
compile_func
,
"compile"
,
{
boxInt
(
0
),
boxInt
(
0
)
}
));
builtins_module
->
giveAttr
(
"compile"
,
new
BoxedBuiltinFunctionOrMethod
(
compile_func
,
"compile"
,
{
boxInt
(
0
),
boxInt
(
0
)
},
NULL
,
compile_doc
));
builtins_module
->
giveAttr
(
"map"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
map
,
LIST
,
1
,
true
,
false
),
"map"
));
builtins_module
->
giveAttr
(
"reduce"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
reduce
,
UNKNOWN
,
3
,
false
,
false
),
"reduce"
,
{
NULL
}));
builtins_module
->
giveAttr
(
"filter"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
filter2
,
UNKNOWN
,
2
),
"filter"
));
builtins_module
->
giveAttr
(
"zip"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
zip
,
LIST
,
0
,
true
,
false
),
"zip"
));
"map"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
map
,
LIST
,
1
,
true
,
false
),
"map"
,
map_doc
));
builtins_module
->
giveAttr
(
"reduce"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
reduce
,
UNKNOWN
,
3
,
false
,
false
),
"reduce"
,
{
NULL
},
NULL
,
reduce_doc
));
builtins_module
->
giveAttr
(
"dir"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
dir
,
LIST
,
1
,
false
,
false
),
"dir"
,
{
NULL
}));
builtins_module
->
giveAttr
(
"vars"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
vars
,
UNKNOWN
,
1
,
false
,
false
),
"vars"
,
{
NULL
}));
"filter"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
filter2
,
UNKNOWN
,
2
),
"filter"
,
filter_doc
));
builtins_module
->
giveAttr
(
"zip"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
zip
,
LIST
,
0
,
true
,
false
),
"zip"
,
zip_doc
));
builtins_module
->
giveAttr
(
"dir"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
dir
,
LIST
,
1
,
false
,
false
),
"dir"
,
{
NULL
},
NULL
,
dir_doc
));
builtins_module
->
giveAttr
(
"vars"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
vars
,
UNKNOWN
,
1
,
false
,
false
),
"vars"
,
{
NULL
},
NULL
,
vars_doc
));
builtins_module
->
giveAttr
(
"object"
,
object_cls
);
builtins_module
->
giveAttr
(
"str"
,
str_cls
);
builtins_module
->
giveAttr
(
"bytes"
,
str_cls
);
...
...
@@ -1755,20 +2086,21 @@ void setupBuiltins() {
PyType_Ready
(
&
PyBuffer_Type
);
builtins_module
->
giveAttr
(
"buffer"
,
&
PyBuffer_Type
);
builtins_module
->
giveAttr
(
"eval"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
eval
,
UNKNOWN
,
3
,
false
,
false
),
"eval"
,
{
NULL
,
NULL
}
));
builtins_module
->
giveAttr
(
"callable"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
callable
,
UNKNOWN
,
1
),
"callable"
));
builtins_module
->
giveAttr
(
"eval"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
eval
,
UNKNOWN
,
3
,
false
,
false
)
,
"eval"
,
{
NULL
,
NULL
},
NULL
,
eval_doc
));
builtins_module
->
giveAttr
(
"callable"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
callable
,
UNKNOWN
,
1
),
"callable"
,
callable_doc
));
builtins_module
->
giveAttr
(
"raw_input"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
rawInput
,
UNKNOWN
,
1
,
false
,
false
),
"raw_input"
,
{
NULL
}));
builtins_module
->
giveAttr
(
"input"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
input
,
UNKNOWN
,
1
,
false
,
false
),
"input"
,
{
NULL
}));
builtins_module
->
giveAttr
(
"cmp"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
builtinCmp
,
UNKNOWN
,
2
),
"cmp"
));
"raw_input"
,
{
NULL
},
NULL
,
raw_input_doc
));
builtins_module
->
giveAttr
(
"input"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
input
,
UNKNOWN
,
1
,
false
,
false
),
"input"
,
{
NULL
},
NULL
,
input_doc
));
builtins_module
->
giveAttr
(
"format"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
builtinFormat
,
UNKNOWN
,
2
),
"format"
));
"cmp"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
builtinCmp
,
UNKNOWN
,
2
),
"cmp"
,
cmp_doc
));
builtins_module
->
giveAttr
(
"format"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
builtinFormat
,
UNKNOWN
,
2
),
"format"
,
format_doc
));
}
}
src/runtime/builtin_modules/gc.cpp
View file @
c8f55421
...
...
@@ -42,14 +42,32 @@ static Box* enable() {
return
None
;
}
PyDoc_STRVAR
(
gc_enable_doc
,
"enable() -> None
\n
"
"
\n
"
"Enable automatic garbage collection.
\n
"
);
PyDoc_STRVAR
(
gc_disable_doc
,
"disable() -> None
\n
"
"
\n
"
"Disable automatic garbage collection.
\n
"
);
PyDoc_STRVAR
(
gc_isenabled_doc
,
"isenabled() -> status
\n
"
"
\n
"
"Returns true if automatic garbage collection is enabled.
\n
"
);
PyDoc_STRVAR
(
gc_collect_doc
,
"collect() -> n
\n
"
"
\n
"
"Run a full collection.
\n
"
);
void
setupGC
()
{
BoxedModule
*
gc_module
=
createModule
(
boxString
(
"gc"
));
gc_module
->
giveAttr
(
"collect"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
gcCollect
,
NONE
,
0
),
"collect"
));
gc_module
->
giveAttr
(
"isenabled"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
isEnabled
,
BOXED_BOOL
,
0
),
"isenabled"
));
gc_module
->
giveAttr
(
"disable"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
disable
,
NONE
,
0
),
"disable"
));
gc_module
->
giveAttr
(
"enable"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
enable
,
NONE
,
0
),
"enable"
));
gc_module
->
giveAttr
(
"collect"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
gcCollect
,
NONE
,
0
),
"collect"
,
gc_collect_doc
));
gc_module
->
giveAttr
(
"isenabled"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
isEnabled
,
BOXED_BOOL
,
0
),
"isenabled"
,
gc_isenabled_doc
));
gc_module
->
giveAttr
(
"disable"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
disable
,
NONE
,
0
),
"disable"
,
gc_disable_doc
));
gc_module
->
giveAttr
(
"enable"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
enable
,
NONE
,
0
),
"enable"
,
gc_enable_doc
));
}
}
src/runtime/builtin_modules/sys.cpp
View file @
c8f55421
...
...
@@ -590,6 +590,43 @@ PyObject* PyFloat_GetInfo(void) {
return
floatinfo
;
}
PyDoc_STRVAR
(
exc_info_doc
,
"exc_info() -> (type, value, traceback)
\n
\
\n
\
Return information about the most recent exception caught by an except
\n
\
clause in the current stack frame or in an older stack frame."
);
PyDoc_STRVAR
(
exc_clear_doc
,
"exc_clear() -> None
\n
\
\n
\
Clear global information on the current exception. Subsequent calls to
\n
\
exc_info() will return (None,None,None) until another exception is raised
\n
\
in the current thread or the execution stack returns to a frame where
\n
\
another exception is being handled."
);
PyDoc_STRVAR
(
exit_doc
,
"exit([status])
\n
\
\n
\
Exit the interpreter by raising SystemExit(status).
\n
\
If the status is omitted or None, it defaults to zero (i.e., success).
\n
\
If the status is an integer, it will be used as the system exit status.
\n
\
If it is another kind of object, it will be printed and the system
\n
\
exit status will be one (i.e., failure)."
);
PyDoc_STRVAR
(
getdefaultencoding_doc
,
"getdefaultencoding() -> string
\n
\
\n
\
Return the current default string encoding used by the Unicode
\n
\
implementation."
);
PyDoc_STRVAR
(
getfilesystemencoding_doc
,
"getfilesystemencoding() -> string
\n
\
\n
\
Return the encoding used to convert Unicode filenames in
\n
\
operating system filenames."
);
PyDoc_STRVAR
(
getrecursionlimit_doc
,
"getrecursionlimit()
\n
\
\n
\
Return the current value of the recursion limit, the maximum depth
\n
\
of the Python interpreter stack. This limit prevents infinite
\n
\
recursion from causing an overflow of the C stack and crashing Python."
);
void
setupSys
()
{
sys_modules_dict
=
new
BoxedDict
();
gc
::
registerPermanentRoot
(
sys_modules_dict
);
...
...
@@ -611,12 +648,12 @@ void setupSys() {
sys_module
->
giveAttr
(
"__stdin__"
,
sys_module
->
getattr
(
internStringMortal
(
"stdin"
)));
sys_module
->
giveAttr
(
"__stderr__"
,
sys_module
->
getattr
(
internStringMortal
(
"stderr"
)));
sys_module
->
giveAttr
(
"exc_info"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
sysExcInfo
,
BOXED_TUPLE
,
0
),
"exc_info"
));
sys_module
->
giveAttr
(
"exc_clear"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
sysExcClear
,
NONE
,
0
),
"exc_clear"
));
sys_module
->
giveAttr
(
"exc_info"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
sysExcInfo
,
BOXED_TUPLE
,
0
),
"exc_info"
,
exc_info_doc
));
sys_module
->
giveAttr
(
"exc_clear"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
sysExcClear
,
NONE
,
0
),
"exc_clear"
,
exc_clear_doc
));
sys_module
->
giveAttr
(
"exit"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
sysExit
,
NONE
,
1
,
false
,
false
),
"exit"
,
{
None
}));
"exit"
,
{
None
}
,
NULL
,
exit_doc
));
sys_module
->
giveAttr
(
"warnoptions"
,
new
BoxedList
());
sys_module
->
giveAttr
(
"py3kwarning"
,
False
);
...
...
@@ -628,17 +665,17 @@ void setupSys() {
sys_module
->
giveAttr
(
"_getframe"
,
new
BoxedFunction
(
boxRTFunction
((
void
*
)
sysGetFrame
,
UNKNOWN
,
1
,
false
,
false
),
{
NULL
}));
sys_module
->
giveAttr
(
"getdefaultencoding"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
sysGetDefaultEncoding
,
STR
,
0
),
"getdefaultencoding"
));
sys_module
->
giveAttr
(
"getdefaultencoding"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
sysGetDefaultEncoding
,
STR
,
0
)
,
"getdefaultencoding"
,
getdefaultencoding_doc
));
sys_module
->
giveAttr
(
"getfilesystemencoding"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
sysGetFilesystemEncoding
,
STR
,
0
),
"getfilesystemencoding"
));
"getfilesystemencoding"
,
getfilesystemencoding_doc
));
sys_module
->
giveAttr
(
"getrecursionlimit"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
sysGetRecursionLimit
,
UNKNOWN
,
0
),
"getrecursionlimit"
));
sys_module
->
giveAttr
(
"getrecursionlimit"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
sysGetRecursionLimit
,
UNKNOWN
,
0
)
,
"getrecursionlimit"
,
getrecursionlimit_doc
));
sys_module
->
giveAttr
(
"meta_path"
,
new
BoxedList
());
sys_module
->
giveAttr
(
"path_hooks"
,
new
BoxedList
());
...
...
src/runtime/float.cpp
View file @
c8f55421
...
...
@@ -1027,7 +1027,7 @@ static void floatFormatInit() {
}
// ported pretty directly from cpython
Box
*
floatGetFormat
(
Box
edClass
*
v
,
Box
*
arg
)
{
Box
*
floatGetFormat
(
Box
*
arg
)
{
char
*
s
;
float_format_type
r
;
...
...
@@ -1692,9 +1692,8 @@ void setupFloat() {
float_cls
->
giveAttr
(
"imag"
,
new
(
pyston_getset_cls
)
BoxedGetsetDescriptor
(
float0
,
NULL
,
NULL
));
float_cls
->
giveAttr
(
"conjugate"
,
new
BoxedFunction
(
boxRTFunction
((
void
*
)
floatConjugate
,
BOXED_FLOAT
,
1
)));
float_cls
->
giveAttr
(
"__getformat__"
,
new
BoxedClassmethod
(
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
floatGetFormat
,
STR
,
2
),
"__getformat__"
,
floatGetFormatDoc
)));
float_cls
->
giveAttr
(
"__getformat__"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
floatGetFormat
,
STR
,
1
),
"__getformat__"
,
floatGetFormatDoc
));
for
(
auto
&
md
:
float_methods
)
{
float_cls
->
giveAttr
(
md
.
ml_name
,
new
BoxedMethodDescriptor
(
&
md
,
float_cls
));
...
...
src/runtime/import.cpp
View file @
c8f55421
...
...
@@ -963,6 +963,30 @@ Box* impIsFrozen(Box* name) {
return
False
;
}
PyDoc_STRVAR
(
find_module_doc
,
"find_module(name, [path]) -> (file, filename, (suffix, mode, type))
\n
\
Search for a module. If path is omitted or None, search for a
\n
\
built-in, frozen or special module and continue search in sys.path.
\n
\
The module name cannot contain '.'; to search for a submodule of a
\n
\
package, pass the submodule name and the package's __path__."
);
PyDoc_STRVAR
(
load_module_doc
,
"load_module(name, file, filename, (suffix, mode, type)) -> module
\n
\
Load a module, given information returned by find_module().
\n
\
The module name must include the full package name, if any."
);
PyDoc_STRVAR
(
get_suffixes_doc
,
"get_suffixes() -> [(suffix, mode, type), ...]
\n
\
Return a list of (suffix, mode, type) tuples describing the files
\n
\
that find_module() looks for."
);
PyDoc_STRVAR
(
acquire_lock_doc
,
"acquire_lock() -> None
\n
\
Acquires the interpreter's import lock for the current thread.
\n
\
This lock should be used by import hooks to ensure thread-safety
\n
\
when importing modules.
\n
\
On platforms without threads, this function does nothing."
);
PyDoc_STRVAR
(
release_lock_doc
,
"release_lock() -> None
\n
\
Release the interpreter's import lock.
\n
\
On platforms without threads, this function does nothing."
);
void
setupImport
()
{
BoxedModule
*
imp_module
=
createModule
(
boxString
(
"imp"
),
NULL
,
"'This module provides the components needed to build your own
\n
"
...
...
@@ -980,17 +1004,19 @@ void setupImport() {
"__init__"
,
new
BoxedFunction
(
boxRTFunction
((
void
*
)
nullImporterInit
,
NONE
,
2
,
false
,
false
),
{
None
}));
null_importer_cls
->
giveAttr
(
"find_module"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
nullImporterFindModule
,
NONE
,
2
,
false
,
false
),
"find_module"
,
{
None
}));
"find_module"
,
{
None
}
,
NULL
,
find_module_doc
));
null_importer_cls
->
freeze
();
imp_module
->
giveAttr
(
"NullImporter"
,
null_importer_cls
);
CLFunction
*
find_module_func
=
boxRTFunction
((
void
*
)
impFindModule
,
UNKNOWN
,
2
,
false
,
false
,
ParamNames
({
"name"
,
"path"
},
""
,
""
));
imp_module
->
giveAttr
(
"find_module"
,
new
BoxedBuiltinFunctionOrMethod
(
find_module_func
,
"find_module"
,
{
None
}));
imp_module
->
giveAttr
(
"find_module"
,
new
BoxedBuiltinFunctionOrMethod
(
find_module_func
,
"find_module"
,
{
None
},
NULL
,
find_module_doc
));
CLFunction
*
load_module_func
=
boxRTFunction
((
void
*
)
impLoadModule
,
UNKNOWN
,
4
,
ParamNames
({
"name"
,
"file"
,
"pathname"
,
"description"
},
""
,
""
));
imp_module
->
giveAttr
(
"load_module"
,
new
BoxedBuiltinFunctionOrMethod
(
load_module_func
,
"load_module"
));
imp_module
->
giveAttr
(
"load_module"
,
new
BoxedBuiltinFunctionOrMethod
(
load_module_func
,
"load_module"
,
load_module_doc
));
imp_module
->
giveAttr
(
"load_source"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
impLoadSource
,
UNKNOWN
,
3
,
false
,
false
),
"load_source"
,
{
NULL
}));
...
...
@@ -999,12 +1025,13 @@ void setupImport() {
ParamNames
({
"name"
,
"pathname"
,
"file"
},
""
,
""
));
imp_module
->
giveAttr
(
"load_dynamic"
,
new
BoxedBuiltinFunctionOrMethod
(
load_dynamic_func
,
"load_dynamic"
,
{
None
}));
imp_module
->
giveAttr
(
"get_suffixes"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
impGetSuffixes
,
UNKNOWN
,
0
),
"get_suffixes"
));
imp_module
->
giveAttr
(
"get_suffixes"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
impGetSuffixes
,
UNKNOWN
,
0
),
"get_suffixes"
,
get_suffixes_doc
));
imp_module
->
giveAttr
(
"acquire_lock"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
impAcquireLock
,
NONE
,
0
),
"acquire_lock"
));
"acquire_lock"
,
acquire_lock_doc
));
imp_module
->
giveAttr
(
"release_lock"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
impReleaseLock
,
NONE
,
0
),
"release_lock"
));
"release_lock"
,
release_lock_doc
));
imp_module
->
giveAttr
(
"new_module"
,
new
BoxedBuiltinFunctionOrMethod
(
boxRTFunction
((
void
*
)
impNewModule
,
MODULE
,
1
),
"new_module"
));
...
...
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