summaryrefslogtreecommitdiff
path: root/modules/language/python/dict.scm
diff options
context:
space:
mode:
authorStefan Israelsson Tampe <stefan.itampe@gmail.com>2018-05-14 18:00:15 +0200
committerStefan Israelsson Tampe <stefan.itampe@gmail.com>2018-05-14 18:00:15 +0200
commitba256d9aaabbe71a8c526585e22d455a9d2066fd (patch)
tree56ab56b23140dc134228847182a92cfedee81178 /modules/language/python/dict.scm
parent0a2045050517a2317083bd2ec17bae09e03c4a11 (diff)
parent330ef2953f31dd7a5b64ff72919c4d7d696c7a83 (diff)
Merge branch 'master' of https://gitlab.com/python-on-guile/python-on-guile
Diffstat (limited to 'modules/language/python/dict.scm')
-rw-r--r--modules/language/python/dict.scm25
1 files changed, 20 insertions, 5 deletions
diff --git a/modules/language/python/dict.scm b/modules/language/python/dict.scm
index b564d28..2ce3790 100644
--- a/modules/language/python/dict.scm
+++ b/modules/language/python/dict.scm
@@ -18,7 +18,7 @@
py-popitem py-setdefault py-update py-clear
py-hash-ref dict pyhash-listing
weak-key-dict weak-value-dict
- py-hash-ref py-hash-set!
+ py-hash-ref py-hash-set! dictNs dictRNs
make-py-weak-key-hashtable
make-py-weak-value-hashtable
))
@@ -604,6 +604,11 @@
__init__)))
+(define (renorm k)
+ (if (symbol? k)
+ k
+ (string->symbol k)))
+
(define (norm k)
(if (symbol? k)
(symbol->string k)
@@ -611,6 +616,7 @@
(define fail (list 'fail))
+(define-syntax-rule (mkwrap dictNs norm renorm)
(define-python-class dictNs ()
(define __getitem__
(lambda (self k)
@@ -622,7 +628,10 @@
(define __iter__
(lambda (self)
- (wrap-in (ref self '_dict))))
+ ((make-generator ()
+ (lambda (yield)
+ (for ((k v : (ref self '_dict))) ()
+ (yield (renorm k) v)))))))
(define pop
(lambda (self k . l)
@@ -650,7 +659,9 @@
(define items
(lambda (self)
- (py-items (ref self '_dict))))
+ (for ((k v : (ref self '_dict))) ((l '()))
+ (cons (list (renorm k) v) l)
+ #:final (reverse l))))
(define __repr__
(lambda (self)
@@ -664,9 +675,13 @@
r))))
(define __init__
- (lambda (self d) (set self '_dict d))))
+ (lambda (self d) (set self '_dict d)))))
+
+(mkwrap dictNs norm renorm)
+(mkwrap dictRNs renorm norm)
-(set! (@@ (oop pf-objects) dictNs) dictNs)
+(set! (@@ (oop pf-objects) dictNs) dictNs)
+(set! (@@ (oop pf-objects) dictRNs) dictRNs)
(define-python-class weak-key-dict (<py> <py-hashtable>)
(define __init__