Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
7
Merge Requests
7
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
Jérome Perrin
erp5
Commits
17c9307c
Commit
17c9307c
authored
Nov 12, 2019
by
Jérome Perrin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
jedi wip
parent
feeeffdd
Changes
3
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
175 additions
and
111 deletions
+175
-111
bt5/erp5_monaco_editor/ExtensionTemplateItem/portal_components/extension.erp5.Jedi.py
...sionTemplateItem/portal_components/extension.erp5.Jedi.py
+88
-102
bt5/erp5_monaco_editor/ExtensionTemplateItem/portal_components/extension.erp5.Jedi.xml
...ionTemplateItem/portal_components/extension.erp5.Jedi.xml
+1
-8
product/ERP5/bootstrap/erp5_core/ExtensionTemplateItem/portal_components/extension.erp5.PythonCodeUtils.py
...eItem/portal_components/extension.erp5.PythonCodeUtils.py
+86
-1
No files found.
bt5/erp5_monaco_editor/ExtensionTemplateItem/portal_components/extension.erp5.Jedi.py
View file @
17c9307c
This diff is collapsed.
Click to expand it.
bt5/erp5_monaco_editor/ExtensionTemplateItem/portal_components/extension.erp5.Jedi.xml
View file @
17c9307c
...
@@ -45,14 +45,7 @@
...
@@ -45,14 +45,7 @@
<item>
<item>
<key>
<string>
text_content_warning_message
</string>
</key>
<key>
<string>
text_content_warning_message
</string>
</key>
<value>
<value>
<tuple>
<tuple/>
<string>
W: 61, 2: Reimport \'ContextSet\' (imported line 52) (reimported)
</string>
<string>
W: 79, 8: Unused variable \'annotation_classes\' (unused-variable)
</string>
<string>
W:156, 8: Unreachable code (unreachable)
</string>
<string>
W:184, 16: Unused variable \'filtered\' (unused-variable)
</string>
<string>
W:132, 2: Unused variable \'get_cached_code_lines\' (unused-variable)
</string>
<string>
W:133, 2: Unused variable \'StringIO\' (unused-variable)
</string>
</tuple>
</value>
</value>
</item>
</item>
<item>
<item>
...
...
product/ERP5/bootstrap/erp5_core/ExtensionTemplateItem/portal_components/extension.erp5.PythonCodeUtils.py
View file @
17c9307c
import
time
import
json
import
json
import
logging
from
Products.ERP5Type.Utils
import
checkPythonSourceCode
from
Products.ERP5Type.Utils
import
checkPythonSourceCode
logger
=
logging
.
getLogger
(
'extension.erp5.PythonCodeUtils'
)
def
checkPythonSourceCodeAsJSON
(
self
,
data
,
REQUEST
=
None
):
def
checkPythonSourceCodeAsJSON
(
self
,
data
,
REQUEST
=
None
):
"""
"""
Check Python source suitable for Source Code Editor and return a JSON object
Check Python source suitable for Source Code Editor and return a JSON object
"""
"""
import
json
# XXX data is encoded as json, because jQuery serialize lists as []
# XXX data is encoded as json, because jQuery serialize lists as []
if
isinstance
(
data
,
basestring
):
if
isinstance
(
data
,
basestring
):
...
@@ -16,6 +22,7 @@ def checkPythonSourceCodeAsJSON(self, data, REQUEST=None):
...
@@ -16,6 +22,7 @@ def checkPythonSourceCodeAsJSON(self, data, REQUEST=None):
return
''
.
join
((
" "
+
line
)
for
line
in
text
.
splitlines
(
True
))
return
''
.
join
((
" "
+
line
)
for
line
in
text
.
splitlines
(
True
))
# don't show 'undefined-variable' errors for {Python,Workflow} Script parameters
# don't show 'undefined-variable' errors for {Python,Workflow} Script parameters
script_name
=
data
.
get
(
'script_name'
)
or
'unknown.py'
is_script
=
'bound_names'
in
data
is_script
=
'bound_names'
in
data
if
is_script
:
if
is_script
:
signature_parts
=
data
[
'bound_names'
]
signature_parts
=
data
[
'bound_names'
]
...
@@ -30,7 +37,85 @@ def checkPythonSourceCodeAsJSON(self, data, REQUEST=None):
...
@@ -30,7 +37,85 @@ def checkPythonSourceCodeAsJSON(self, data, REQUEST=None):
else
:
else
:
body
=
data
[
'code'
]
body
=
data
[
'code'
]
message_list
=
checkPythonSourceCode
(
body
.
encode
(
'utf8'
),
data
.
get
(
'portal_type'
))
start
=
time
.
time
()
code
=
body
.
encode
(
'utf8'
)
import
pyflakes.api
import
pyflakes.reporter
import
pyflakes.messages
class
Reporter
(
pyflakes
.
reporter
.
Reporter
):
def
__init__
(
self
):
# pylint: disable=super-init-not-called
self
.
message_list
=
[]
def
addMessage
(
self
,
row
,
column
,
level
,
text
):
self
.
message_list
.
append
(
dict
(
row
=
row
,
column
=
column
,
type
=
level
,
text
=
text
))
def
flake
(
self
,
message
):
# type: (pyflakes.messages.Message,) -> None
self
.
addMessage
(
row
=
message
.
lineno
,
column
=
message
.
col
,
text
=
message
.
message
%
(
message
.
message_args
),
level
=
'W'
)
def
syntaxError
(
self
,
filename
,
msg
,
lineno
,
offset
,
text
):
self
.
addMessage
(
row
=
lineno
,
column
=
offset
,
text
=
'SyntaxError: {}'
.
format
(
text
),
level
=
'E'
)
def
unexpectedError
(
self
,
filename
,
msg
):
# TODO: extend interface to have range and in this case whole range is wrong ?
# or use parse with python in that case ?
# repro: function(a="b", c)
self
.
addMessage
(
row
=
0
,
column
=
0
,
text
=
'Unexpected Error: {}'
.
format
(
msg
),
level
=
'E'
)
start
=
time
.
time
()
reporter
=
Reporter
()
pyflakes
.
api
.
check
(
code
,
script_name
,
reporter
)
logger
.
info
(
'pyflake checked %d lines in %.2f'
,
len
(
code
.
splitlines
()),
time
.
time
()
-
start
)
message_list
=
reporter
.
message_list
import
lib2to3.refactor
import
lib2to3.pgen2.parse
refactoring_tool
=
lib2to3
.
refactor
.
RefactoringTool
(
fixer_names
=
(
'lib2to3.fixes.fix_except'
,
))
old_code
=
code
.
decode
(
'utf-8'
)
try
:
new_code
=
unicode
(
refactoring_tool
.
refactor_string
(
old_code
,
script_name
))
except
lib2to3
.
pgen2
.
parse
.
ParseError
as
e
:
message
,
(
row
,
column
)
=
e
.
context
message_list
.
append
(
dict
(
row
=
row
,
column
=
column
,
type
=
'E'
,
text
=
message
))
else
:
if
new_code
!=
old_code
:
i
=
0
for
new_line
,
old_line
in
zip
(
new_code
.
splitlines
(),
old_code
.
splitlines
()):
i
+=
1
#print ('new_line', new_line, 'old_line', old_line)
if
new_line
!=
old_line
:
message_list
.
append
(
dict
(
row
=
i
,
column
=
0
,
type
=
'W'
,
text
=
u'-{}
\
n
+{}'
.
format
(
old_line
,
new_line
)))
# import pdb; pdb.set_trace()
pylint_message_list
=
[]
if
0
:
start
=
time
.
time
()
pylint_message_list
=
checkPythonSourceCode
(
code
,
data
.
get
(
'portal_type'
))
logger
.
info
(
'pylint checked %d lines in %.2f'
,
len
(
code
.
splitlines
()),
time
.
time
()
-
start
)
for
message_dict
in
message_list
:
for
message_dict
in
message_list
:
if
is_script
:
if
is_script
:
message_dict
[
'row'
]
=
message_dict
[
'row'
]
-
2
message_dict
[
'row'
]
=
message_dict
[
'row'
]
-
2
...
...
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