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
e10da77a
Commit
e10da77a
authored
Apr 14, 2014
by
Damien George
Browse files
Merge branch 'master' of github.com:micropython/micropython
parents
8341725b
a5854d2b
Changes
3
Hide whitespace changes
Inline
Side-by-side
py/builtinimport.c
View file @
e10da77a
...
...
@@ -292,11 +292,10 @@ mp_obj_t mp_builtin___import__(uint n_args, mp_obj_t *args) {
vstr_add_str
(
&
path
,
"__init__.py"
);
if
(
mp_import_stat
(
vstr_str
(
&
path
))
!=
MP_IMPORT_STAT_FILE
)
{
vstr_cut_tail_bytes
(
&
path
,
sizeof
(
"/__init__.py"
)
-
1
);
// cut off /__init__.py
nlr_raise
(
mp_obj_new_exception_msg_varg
(
&
mp_type_ImportError
,
"Per PEP-420 a dir without __init__.py (%s) is a namespace package; "
"namespace packages are not supported"
,
vstr_str
(
&
path
)
))
;
printf
(
"Notice: %s is imported as namespace package
\n
"
,
vstr_str
(
&
path
));
}
else
{
do_load
(
module_obj
,
&
path
);
}
do_load
(
module_obj
,
&
path
);
vstr_cut_tail_bytes
(
&
path
,
sizeof
(
"/__init__.py"
)
-
1
);
// cut off /__init__.py
// https://docs.python.org/3.3/reference/import.html
// "Specifically, any module that contains a __path__ attribute is considered a package."
...
...
py/objtype.c
View file @
e10da77a
...
...
@@ -309,16 +309,20 @@ STATIC bool class_store_attr(mp_obj_t self_in, qstr attr, mp_obj_t value) {
}
bool
class_store_item
(
mp_obj_t
self_in
,
mp_obj_t
index
,
mp_obj_t
value
)
{
mp_obj_class_t
*
self
=
self_in
;
mp_obj_t
member
;
uint
meth_args
;
if
(
value
==
MP_OBJ_NULL
)
{
// delete item
// TODO implement me!
return
false
;
member
=
mp_obj_class_lookup
(
self
->
base
.
type
,
MP_QSTR___delitem__
);
meth_args
=
2
;
}
else
{
member
=
mp_obj_class_lookup
(
self
->
base
.
type
,
MP_QSTR___setitem__
);
meth_args
=
3
;
}
mp_obj_class_t
*
self
=
self_in
;
mp_obj_t
member
=
mp_obj_class_lookup
(
self
->
base
.
type
,
MP_QSTR___setitem__
);
if
(
member
!=
MP_OBJ_NULL
)
{
mp_obj_t
args
[
3
]
=
{
self_in
,
index
,
value
};
mp_call_function_n_kw
(
member
,
3
,
0
,
args
);
mp_call_function_n_kw
(
member
,
meth_args
,
0
,
args
);
return
true
;
}
else
{
return
false
;
...
...
tests/basics/class_item.py
View file @
e10da77a
# test class with __getitem__
and
__setitem__ methods
# test class with __getitem__
,
__setitem__
, __delitem__
methods
class
C
:
def
__getitem__
(
self
,
item
):
...
...
@@ -8,6 +8,10 @@ class C:
def
__setitem__
(
self
,
item
,
value
):
print
(
'set'
,
item
,
value
)
def
__delitem__
(
self
,
item
):
print
(
'del'
,
item
)
c
=
C
()
print
(
c
[
1
])
c
[
1
]
=
2
del
c
[
3
]
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