Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
R
RestrictedPython-3.6.0
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
RestrictedPython-3.6.0
Commits
2ebcf9c5
Commit
2ebcf9c5
authored
Oct 06, 2016
by
Boxiang Sun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Let RestrictedPython become stubs.
parent
1e456686
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
264 additions
and
261 deletions
+264
-261
src/RestrictedPython/MutatingWalker.py
src/RestrictedPython/MutatingWalker.py
+54
-54
src/RestrictedPython/RCompile.py
src/RestrictedPython/RCompile.py
+206
-203
src/RestrictedPython/SelectCompiler.py
src/RestrictedPython/SelectCompiler.py
+4
-4
No files found.
src/RestrictedPython/MutatingWalker.py
View file @
2ebcf9c5
...
@@ -13,62 +13,62 @@
...
@@ -13,62 +13,62 @@
__version__
=
'$Revision: 1.6 $'
[
11
:
-
2
]
__version__
=
'$Revision: 1.6 $'
[
11
:
-
2
]
from
SelectCompiler
import
ast
#
from SelectCompiler import ast
ListType
=
type
([])
ListType
=
type
([])
TupleType
=
type
(())
TupleType
=
type
(())
SequenceTypes
=
(
ListType
,
TupleType
)
SequenceTypes
=
(
ListType
,
TupleType
)
class
MutatingWalker
:
#
class MutatingWalker:
#
def
__init__
(
self
,
visitor
):
#
def __init__(self, visitor):
self
.
visitor
=
visitor
#
self.visitor = visitor
self
.
_cache
=
{}
#
self._cache = {}
#
def
defaultVisitNode
(
self
,
node
,
walker
=
None
,
exclude
=
None
):
#
def defaultVisitNode(self, node, walker=None, exclude=None):
for
name
,
child
in
node
.
__dict__
.
items
():
#
for name, child in node.__dict__.items():
if
exclude
is
not
None
and
name
in
exclude
:
#
if exclude is not None and name in exclude:
continue
#
continue
v
=
self
.
dispatchObject
(
child
)
#
v = self.dispatchObject(child)
if
v
is
not
child
:
#
if v is not child:
# Replace the node.
#
# Replace the node.
node
.
__dict__
[
name
]
=
v
#
node.__dict__[name] = v
return
node
#
return node
#
def
visitSequence
(
self
,
seq
):
#
def visitSequence(self, seq):
res
=
seq
#
res = seq
for
idx
in
range
(
len
(
seq
)):
#
for idx in range(len(seq)):
child
=
seq
[
idx
]
#
child = seq[idx]
v
=
self
.
dispatchObject
(
child
)
#
v = self.dispatchObject(child)
if
v
is
not
child
:
#
if v is not child:
# Change the sequence.
#
# Change the sequence.
if
type
(
res
)
is
ListType
:
#
if type(res) is ListType:
res
[
idx
:
idx
+
1
]
=
[
v
]
#
res[idx : idx + 1] = [v]
else
:
#
else:
res
=
res
[:
idx
]
+
(
v
,)
+
res
[
idx
+
1
:]
#
res = res[:idx] + (v,) + res[idx + 1:]
return
res
#
return res
#
def
dispatchObject
(
self
,
ob
):
#
def dispatchObject(self, ob):
'''
#
'''
Expected to return either ob or something that will take
#
Expected to return either ob or something that will take
its place.
#
its place.
'''
#
'''
if
isinstance
(
ob
,
ast
.
Node
):
#
if isinstance(ob, ast.Node):
return
self
.
dispatchNode
(
ob
)
#
return self.dispatchNode(ob)
elif
type
(
ob
)
in
SequenceTypes
:
#
elif type(ob) in SequenceTypes:
return
self
.
visitSequence
(
ob
)
#
return self.visitSequence(ob)
else
:
#
else:
return
ob
#
return ob
#
def
dispatchNode
(
self
,
node
):
#
def dispatchNode(self, node):
klass
=
node
.
__class__
#
klass = node.__class__
meth
=
self
.
_cache
.
get
(
klass
,
None
)
#
meth = self._cache.get(klass, None)
if
meth
is
None
:
#
if meth is None:
className
=
klass
.
__name__
#
className = klass.__name__
meth
=
getattr
(
self
.
visitor
,
'visit'
+
className
,
#
meth = getattr(self.visitor, 'visit' + className,
self
.
defaultVisitNode
)
#
self.defaultVisitNode)
self
.
_cache
[
klass
]
=
meth
#
self._cache[klass] = meth
return
meth
(
node
,
self
)
#
return meth(node, self)
#
def
walk
(
tree
,
visitor
):
#
def walk(tree, visitor):
return
MutatingWalker
(
visitor
).
dispatchNode
(
tree
)
#
return MutatingWalker(visitor).dispatchNode(tree)
src/RestrictedPython/RCompile.py
View file @
2ebcf9c5
This diff is collapsed.
Click to expand it.
src/RestrictedPython/SelectCompiler.py
View file @
2ebcf9c5
...
@@ -14,10 +14,10 @@
...
@@ -14,10 +14,10 @@
"""
"""
# Use the compiler from the standard library.
# Use the compiler from the standard library.
import
compiler
#
import compiler
from
compiler
import
ast
#
from compiler import ast
from
compiler.transformer
import
parse
#
from compiler.transformer import parse
from
compiler.consts
import
OP_ASSIGN
,
OP_DELETE
,
OP_APPLY
#
from compiler.consts import OP_ASSIGN, OP_DELETE, OP_APPLY
from
RCompile
import
\
from
RCompile
import
\
compile_restricted
,
\
compile_restricted
,
\
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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