summaryrefslogtreecommitdiff
path: root/modules/language/python/module.scm
diff options
context:
space:
mode:
Diffstat (limited to 'modules/language/python/module.scm')
-rw-r--r--modules/language/python/module.scm22
1 files changed, 14 insertions, 8 deletions
diff --git a/modules/language/python/module.scm b/modules/language/python/module.scm
index 2940a9a..53aa1c2 100644
--- a/modules/language/python/module.scm
+++ b/modules/language/python/module.scm
@@ -44,14 +44,14 @@
(rawset self '_isprivate p)))
(define _cont
- (lambda (self id pre l nm)
+ (lambda (self id pre l nm skip-error?)
(if id
(aif it (rawref self id)
((ref it '__init__) pre l nm)
(begin
(rawset self id (Module pre l nm))
- (_make self pre nm)))
- (_make self pre nm))))
+ (_make self pre nm skip-error?)))
+ (_make self pre nm skip-error?))))
(define _contupdate
(lambda (self id pre l nm)
@@ -67,15 +67,15 @@
(match l
((name)
(set self '_path (reverse (cons name pre)))
- (_cont self #f (cons name pre) #f (cons name nm)))
+ (_cont self #f (cons name pre) #f (cons name nm) #f))
((name . (and l (name2 . _)))
(set self '_path (reverse (cons name pre)))
- (_cont self name2 (cons name pre) l (cons name nm)))))
+ (_cont self name2 (cons name pre) l (cons name nm) #t))))
((self l nm)
- (_cont self #f l #f nm))
+ (_cont self #f l #f nm #f))
((self l)
(if (pair? l)
@@ -117,14 +117,20 @@
(string-split l #\.)))))))
(define _make
- (lambda (self l nm)
+ (lambda (self l nm skip-error?)
(rawset self '_private #f)
(if (not (rawref self '_module))
(begin
(set self '__dict__ self)
(set self '__name__ (string-join
(map symbol->string (reverse nm)) "."))
- (let ((_module (in-scheme (resolve-module (reverse l)))))
+ (let* ((_module (in-scheme (resolve-module (reverse l))))
+ (public-i (and _module (module-public-interface _module))))
+ (if (and (not skip-error?) (not public-i))
+ (raise (ModuleNotFoundError
+ (format #f "No module named ~a"
+ (ref self '__name__)))))
+
(set self '_export (module-public-interface _module))
(set self '_module _module)
(hash-set! _modules l self))))))