optparse works
authorStefan Israelsson Tampe <stefan.itampe@gmail.com>
Fri, 17 Aug 2018 20:39:02 +0000 (22:39 +0200)
committerStefan Israelsson Tampe <stefan.itampe@gmail.com>
Fri, 17 Aug 2018 20:39:02 +0000 (22:39 +0200)
modules/language/python/dict.scm
modules/language/python/dir.scm
modules/language/python/format2.scm
modules/language/python/list.scm
modules/language/python/module/optparse.py
modules/language/python/module/sys.scm
modules/oop/pf-objects.scm

index 194da2db26e63e2c918fee69cb6161738e800141..f32b134c1fffac9c7af16341f909600a757a425c 100644 (file)
         (lambda (yield)
           (for ((k v : (ref self '_dict))) ()
                (yield (renorm k) v)))))))
-  
+             
   (define pop
     (lambda (self k . l)
       (apply pylist-pop! (ref self '_dict) (norm k) l)))
   
   (define __repr__
     (lambda (self)
-      (format #f "Ns:~a" (ref (ref self '_dict) '__name__))))
+      (for ((k v : (ref self '_dict))) ((l '()))
+           (cons (format #f "~a:~a" k v) l)
+           #:final
+           (aif it (ref (ref self '_dict) '__name__)
+                (format #f "Ns-~a: ~a" it (reverse l))
+                (format #f "Ns: ~a" (reverse l))))))
+
+  (define __str__ __repr__)
   
   (define __getattr__
     (lambda (self key)
index 457c28fe2d860f6b6a0555ad9ba88f7ac734e651..75c42d7139e6066ff2bbacf01899e9e4152c9315 100644 (file)
       (pylist-sort! ret)
       ret)))
 
-                  
-                          
+  
index 70ee21260b2fb4b40fcd44cd91888f4233f884cf..4a9af31339d9d0f38cd31cb81e206a63f770e3b5 100644 (file)
         (if (and (number? x) (integer? x))
             (list->string (list (integer->char x)))
             x)))
-      ("s"  (lambda (x) (scm-format #f "~a" x)))
+      
+      ("s"  (lambda (x)
+              (if (is-a? x <p>)
+                  (aif it (ref x '__str__)
+                       (scm-format #f "~a" (it))
+                       (scm-format #f "~a" x))
+                  (scm-format #f "~a" x))))
+      
       ("a"  (lambda (x) (scm-format #f "~a" x)))
       ("r"  (lambda (x) (scm-format #f "~a" x)))
       ("%"
index 5cdb3d37ca14b3f7dc3839972c4e4dfbadd24d10..7deda10242aaa615eefe0a3d84af647d9566b4b2 100644 (file)
 
 (define-method (pylist-slice (o <py-list>) n1 n2 n3)
   (define N (slot-ref o 'n))
-  (define (f n) (if (< n 0) (+ N n) n))
+  (define (f n)
+    (let ((x (if (< n 0) (+ N n) n)))
+      (if (< x 0)
+          0
+          (if (> x N)
+              N
+              x))))
   (let* ((n1   (f (if (eq? n1 None) 0                n1)))
          (n2   (f (if (eq? n2 None) (slot-ref o 'n)  n2)))
          (n3   (f (if (eq? n3 None) 1                n3)))
 
 (define-method (pylist-slice (o <string>) n1 n2 n3)
   (define N (string-length o))
-  (define (f n) (if (< n 0) (+ N n) n))
+  (define (f n)
+    (let ((x (if (< n 0) (+ N n) n)))
+      (if (< x 0)
+          0
+          (if (> x N)
+              N
+              x))))
     
   (let* ((n1   (f (if (eq? n1 None) 0                  n1)))
          (n2   (f (if (eq? n2 None) (string-length o)  n2)))
index 903b374e0f0dafbb68fb7d53c3f1bbfe83596998..043ea9a58ddebef5898dd37a4d3b43ddbf5ceb4c 100644 (file)
@@ -1420,6 +1420,7 @@ class OptionParser (OptionContainer):
         """
         while rargs:
             arg = rargs[0]
+
             # We handle bare "--" explicitly, and bare "-" is handled by the
             # standard arg handler since the short arg case ensures that the
             # len of the opt string is greater than 1.
index fe0a4eaa4b96df04d12cc34f01fe126295689ae6..d24b7e2677412345b251fef843dab9272cf50790 100644 (file)
@@ -4,6 +4,7 @@
   #:use-module (language python hash)
   #:use-module (language python module io)
   #:use-module (language python try)
+  #:use-module (language python string)
   #:use-module (language python module python)
   #:use-module (oop pf-objects)
   #:export (argv byteorder copyright implementation
@@ -92,8 +93,9 @@
 (define exec_prefix "/usr/local")
 (define executable "")
 (define exit
-  (lambda arg
-    (apply raise SystemException arg)))
+  (lambda (arg)
+    (raise (SystemException ((@ (guile) format)
+                             #f "exit called with arg ~a" arg)))))
 
 (define flags '())
 (define float_info '())
index eff585363f7e625ed4fcfb0ac034f08d9a59b4ba..4b11202313b5ec8236d934b213b98d681b2d020f 100644 (file)
@@ -1472,7 +1472,7 @@ explicitly tell it to not update etc.
 
 (define attr __getattribute__)
 
-(define (*str* self)
+(define (*str* self . l)
   (scmstr (ref self '__name__)))
 
 (define *setattr* __setattr__)