diff options
Diffstat (limited to 'modules/language/python/module/os.scm')
-rw-r--r-- | modules/language/python/module/os.scm | 21 |
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) |