Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
1b182a30
Commit
1b182a30
authored
Feb 19, 2014
by
Damien George
Browse files
Merge branch 'master' of github.com:micropython/micropython
parents
30264662
fb7f9439
Changes
2
Hide whitespace changes
Inline
Side-by-side
py/builtinimport.c
View file @
1b182a30
...
...
@@ -132,13 +132,18 @@ void do_load(mp_obj_t module_obj, vstr_t *file) {
mp_obj_t
mp_builtin___import__
(
int
n_args
,
mp_obj_t
*
args
)
{
/*
printf("import:\n");
for (int i = 0; i < n; i++) {
for (int i = 0; i < n
_args
; i++) {
printf(" ");
mp_obj_print(args[i]);
mp_obj_print(args[i]
, PRINT_REPR
);
printf("\n");
}
*/
mp_obj_t
fromtuple
=
mp_const_none
;
if
(
n_args
>=
4
)
{
fromtuple
=
args
[
3
];
}
uint
mod_len
;
const
char
*
mod_str
=
(
const
char
*
)
mp_obj_str_get_data
(
args
[
0
],
&
mod_len
);
...
...
@@ -150,8 +155,11 @@ mp_obj_t mp_builtin___import__(int n_args, mp_obj_t *args) {
if
(
p
==
NULL
)
{
return
module_obj
;
}
// If fromlist is not empty, return leaf module
if
(
fromtuple
!=
mp_const_none
)
{
return
module_obj
;
}
// Otherwise, we need to return top-level package
// TODO: subject to fromlist arg
qstr
pkg_name
=
qstr_from_strn
(
mod_str
,
p
-
mod_str
);
return
mp_obj_module_get
(
pkg_name
);
}
...
...
@@ -227,6 +235,11 @@ mp_obj_t mp_builtin___import__(int n_args, mp_obj_t *args) {
assert
(
0
);
}
// If fromlist is not empty, return leaf module
if
(
fromtuple
!=
mp_const_none
)
{
return
module_obj
;
}
// Otherwise, we need to return top-level package
return
top_module_obj
;
}
...
...
tests/basics/import-pkg2.py
0 → 100644
View file @
1b182a30
from
pkg.mod
import
foo
try
:
pkg
except
NameError
:
print
(
"NameError"
)
try
:
pkg
.
mod
except
NameError
:
print
(
"NameError"
)
print
(
foo
())
# Import few times, must be same module objects
mod_1
=
__import__
(
"pkg.mod"
,
None
,
None
,
(
"foo"
,))
mod_2
=
__import__
(
"pkg.mod"
,
None
,
None
,
(
"foo"
,))
print
(
mod_1
is
mod_2
)
print
(
mod_1
.
foo
is
mod_2
.
foo
)
print
(
foo
is
mod_1
.
foo
)
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment