summaryrefslogtreecommitdiff
path: root/modules/language/python/module/os.scm
diff options
context:
space:
mode:
Diffstat (limited to 'modules/language/python/module/os.scm')
-rw-r--r--modules/language/python/module/os.scm21
1 files changed, 17 insertions, 4 deletions
diff --git a/modules/language/python/module/os.scm b/modules/language/python/module/os.scm
index afed9d1..16ee6e6 100644
--- a/modules/language/python/module/os.scm
+++ b/modules/language/python/module/os.scm
@@ -212,16 +212,29 @@
(define __getitem__
(lambda (self k)
- (let ((r ((@ (guile) getenv) (slot-ref (pystring k) 'str))))
+ (let ((r ((@ (guile) getenv)
+ (catch #t
+ (lambda ()
+ (pystring k))
+ (lambda x
+ (raise (ValueError "cant stringify k in env[x]")))))))
(if r r (raise IndexError)))))
(define __setitem__
- (lambda (self k v)
- ((@ (guile) putenv) (slot-ref (pystring (+ k "=" v)) 'str))))
+ (lambda (self k v)
+ (call-with-values
+ (lambda ()
+ (catch #t
+ (lambda ()
+ (values (pystring k) (pystring v)))
+ (lambda x
+ (raise (ValueError "not stringable in environ")))))
+ (lambda (k v)
+ ((@ (guile) putenv) (pystring (+ k "=" v)))))))
(define __delitem__
(lambda (self k)
- ((@ (guile) putenv) (slot-ref (pystring k) 'str))))
+ ((@ (guile) putenv) (pystring k))))
(define __iter__
(lambda (self)