blueloveTH 1 ano atrás
pai
commit
1c1e898950

+ 0 - 1
include/pocketpy/pocketpy.h

@@ -452,7 +452,6 @@ int py_list_len(py_Ref self);
 void py_list_append(py_Ref self, py_Ref val);
 void py_list_clear(py_Ref self);
 void py_list_insert(py_Ref self, int i, py_Ref val);
-void py_list_reverse(py_Ref self);
 
 py_TmpRef py_dict_getitem(py_Ref self, py_Ref key) PY_RAISE;
 void py_dict_setitem(py_Ref self, py_Ref key, py_Ref val) PY_RAISE;

+ 3 - 37
python/builtins.py

@@ -1,4 +1,4 @@
-from pkpy import next as __builtins_next
+from pkpy import next as __pkpy_next
 
 def all(iterable):
     for i in iterable:
@@ -37,8 +37,8 @@ def zip(a, b):
     a = iter(a)
     b = iter(b)
     while True:
-        ai = __builtins_next(a)
-        bi = __builtins_next(b)
+        ai = __pkpy_next(a)
+        bi = __pkpy_next(b)
         if ai is StopIteration or bi is StopIteration:
             break
         yield ai, bi
@@ -181,37 +181,3 @@ def complex(*args, **kwargs):
 def long(*args, **kwargs):
     import _long
     return _long.long(*args, **kwargs)
-
-
-# builtin exceptions
-class StackOverflowError(Exception): pass
-class IOError(Exception): pass
-class NotImplementedError(Exception): pass
-class TypeError(Exception): pass
-class IndexError(Exception): pass
-class ValueError(Exception): pass
-class RuntimeError(Exception): pass
-class ZeroDivisionError(Exception): pass
-class NameError(Exception): pass
-class UnboundLocalError(Exception): pass
-class AttributeError(Exception): pass
-class ImportError(Exception): pass
-class AssertionError(Exception): pass
-
-class KeyError(Exception):
-    def __init__(self, key=...):
-        self.key = key
-        if key is ...:
-            super().__init__()
-        else:
-            super().__init__(repr(key))
-
-    def __str__(self):
-        if self.key is ...:
-            return ''
-        return str(self.key)
-    
-    def __repr__(self):
-        if self.key is ...:
-            return 'KeyError()'
-        return f'KeyError({self.key!r})'

Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
src/common/_generated.c


+ 9 - 5
src/interpreter/vm.c

@@ -197,11 +197,15 @@ void VM__ctor(VM* self) {
 
     // add python builtins
     do {
-        bool ok = py_exec(kPythonLibs__set, "<builtins>", EXEC_MODE, &self->builtins);
-        if(!ok) {
-            py_printexc();
-            c11__abort("failed to load python builtins!");
-        }
+        bool ok;
+        ok = py_exec(kPythonLibs_builtins, "<builtins>", EXEC_MODE, &self->builtins);
+        if(!ok) goto __ABORT;
+        ok = py_exec(kPythonLibs__set, "<builtins>", EXEC_MODE, &self->builtins);
+        if(!ok) goto __ABORT;
+        break;
+    __ABORT:
+        py_printexc();
+        c11__abort("failed to load python builtins!");
     } while(0);
 
     self->main = *py_newmodule("__main__");

+ 0 - 65
src/public/modules.c

@@ -170,14 +170,6 @@ static bool builtins_len(int argc, py_Ref argv) {
     return py_len(argv);
 }
 
-static bool builtins_reversed(int argc, py_Ref argv) {
-    PY_CHECK_ARGC(1);
-    // convert _0 to list object
-    if(!py_tpcall(tp_list, 1, argv)) return false;
-    py_list_reverse(py_retval());
-    return true;
-}
-
 static bool builtins_hex(int argc, py_Ref argv) {
     PY_CHECK_ARGC(1);
     PY_CHECK_ARG_TYPE(0, tp_int);
@@ -221,23 +213,6 @@ static bool builtins_next(int argc, py_Ref argv) {
     return py_exception(tp_StopIteration, "");
 }
 
-static bool builtins_sorted(int argc, py_Ref argv) {
-    PY_CHECK_ARGC(3);
-    // convert _0 to list object
-    if(!py_tpcall(tp_list, 1, py_arg(0))) return false;
-    py_push(py_retval());                      // duptop
-    py_push(py_retval());                      // [| <list>]
-    bool ok = py_pushmethod(py_name("sort"));  // [| list.sort, <list>]
-    if(!ok) return false;
-    py_push(py_arg(1));        // [| list.sort, <list>, key]
-    py_push(py_arg(2));        // [| list.sort, <list>, key, reverse]
-    ok = py_vectorcall(2, 0);  // [| ]
-    if(!ok) return false;
-    py_assign(py_retval(), py_peek(-1));
-    py_pop();
-    return true;
-}
-
 static bool builtins_hash(int argc, py_Ref argv) {
     PY_CHECK_ARGC(1);
     py_i64 val;
@@ -251,43 +226,6 @@ static bool builtins_abs(int argc, py_Ref argv) {
     return pk_callmagic(__abs__, 1, argv);
 }
 
-static bool builtins_sum(int argc, py_Ref argv) {
-    PY_CHECK_ARGC(1);
-
-    if(!py_iter(py_arg(0))) return false;
-    py_push(py_retval());  // iter
-
-    py_i64 total_i64 = 0;
-    py_f64 total_f64 = 0.0;
-    bool is_float = false;
-    while(true) {
-        int res = py_next(py_peek(-1));
-        if(res == -1) {
-            py_pop();
-            return false;
-        }
-        if(res == 0) break;
-
-        py_Ref item = py_retval();
-        switch(item->type) {
-            case tp_int: total_i64 += item->_i64; break;
-            case tp_float:
-                is_float = true;
-                total_f64 += item->_f64;
-                break;
-            default: return TypeError("sum() expects an iterable of numbers");
-        }
-    }
-
-    if(is_float) {
-        py_newfloat(py_retval(), total_f64 + total_i64);
-    } else {
-        py_newint(py_retval(), total_i64);
-    }
-    py_pop();
-    return true;
-}
-
 static bool builtins_divmod(int argc, py_Ref argv) {
     PY_CHECK_ARGC(2);
     return pk_callmagic(__divmod__, 2, argv);
@@ -439,20 +377,17 @@ py_TValue pk_builtins__register() {
     py_bindfunc(builtins, "repr", builtins_repr);
     py_bindfunc(builtins, "exit", builtins_exit);
     py_bindfunc(builtins, "len", builtins_len);
-    py_bindfunc(builtins, "reversed", builtins_reversed);
     py_bindfunc(builtins, "hex", builtins_hex);
     py_bindfunc(builtins, "iter", builtins_iter);
     py_bindfunc(builtins, "next", builtins_next);
     py_bindfunc(builtins, "hash", builtins_hash);
     py_bindfunc(builtins, "abs", builtins_abs);
-    py_bindfunc(builtins, "sum", builtins_sum);
     py_bindfunc(builtins, "divmod", builtins_divmod);
 
     py_bindfunc(builtins, "exec", builtins_exec);
     py_bindfunc(builtins, "eval", builtins_eval);
 
     py_bind(builtins, "print(*args, sep=' ', end='\\n')", builtins_print);
-    py_bind(builtins, "sorted(iterable, key=None, reverse=False)", builtins_sorted);
 
     py_bindfunc(builtins, "isinstance", builtins_isinstance);
     py_bindfunc(builtins, "issubclass", builtins_issubclass);

+ 0 - 5
src/public/py_list.c

@@ -59,11 +59,6 @@ void py_list_insert(py_Ref self, int i, py_Ref val) {
     c11_vector__insert(py_TValue, userdata, i, *val);
 }
 
-void py_list_reverse(py_Ref self) {
-    List* userdata = py_touserdata(self);
-    c11__reverse(py_TValue, userdata);
-}
-
 ////////////////////////////////
 static bool list__len__(int argc, py_Ref argv) {
     PY_CHECK_ARGC(1);

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff