mumuki-python-runner 1.5.1 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/base/query_hook.rb +22 -7
- data/lib/base/test_hook.rb +1 -1
- data/lib/base/version.rb +2 -1
- data/lib/python3/try_hook.rb +48 -0
- data/lib/python3_runner.rb +1 -0
- metadata +7 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e7ac08925c7c447effe33a7cdadc6d8135d2a3d412586c546550630afe76e5db
|
4
|
+
data.tar.gz: 8b64922903b757f02e1df5714ee78c7dad8dfa5556d32a351396aab73e03c044
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb86a2680d68c97a33028bf367b07918b8b64b41e85b8a588819bffe69afa621e033fcd2501ffe5fa0651c15de01e4851e31cc9e3d4084df80f820977f1dc6c1
|
7
|
+
data.tar.gz: c189e9eb01ea000eac2a8f24f8c4bd4b68e57cf4701f49e4984bd3b9be8f17eef47e4108be03ebd5124aa655138038adeb8c5442ca75f472d8a95b2dd12502c6
|
data/lib/base/query_hook.rb
CHANGED
@@ -7,6 +7,10 @@ class BasePythonQueryHook < Mumukit::Templates::FileHook
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def compile_file_content(req)
|
10
|
+
"#{compile_file_header(req)}\n#{compile_query(req.query)}"
|
11
|
+
end
|
12
|
+
|
13
|
+
def compile_file_header(req)
|
10
14
|
<<python
|
11
15
|
# -*- coding: UTF-8 -*-
|
12
16
|
import string, sys, os
|
@@ -16,19 +20,30 @@ import string, sys, os
|
|
16
20
|
sys.stdout = open(os.devnull, 'w')
|
17
21
|
#{compile_cookie(req.cookie)}
|
18
22
|
sys.stdout = sys.__stdout__
|
19
|
-
#{build_query req.query}
|
20
23
|
python
|
21
24
|
end
|
22
25
|
|
23
|
-
def
|
24
|
-
if query.match /print *(\(| )
|
26
|
+
def compile_query(query, output_prefix = "=> ")
|
27
|
+
if query.match /print *(\(| ).*|.*[^=]=[^=].*|^raise\b/
|
25
28
|
query
|
26
29
|
else
|
27
|
-
|
30
|
+
<<~python
|
31
|
+
__mumuki_error__ = None
|
32
|
+
try:
|
33
|
+
__mumuki_args__ = {'mumuki_query_result': eval("""#{query.gsub('"', '\"')}""")}
|
34
|
+
print(string.Template(\"#{output_prefix}\${mumuki_query_result}\").safe_substitute(**__mumuki_args__))
|
35
|
+
except SyntaxError as e:
|
36
|
+
__mumuki_error__ = SyntaxError(e.msg, ('<console>', e.lineno, e.offset, e.text))
|
37
|
+
if __mumuki_error__:
|
38
|
+
print(__mumuki_error__.text)
|
39
|
+
print(" "*(__mumuki_error__.offset - 1) + "^")
|
40
|
+
print('SyntheticMumukiSyntaxError: SyntaxError: ' + str(__mumuki_error__))
|
41
|
+
exit(1)
|
42
|
+
python
|
28
43
|
end
|
29
44
|
end
|
30
45
|
|
31
|
-
def
|
46
|
+
def compile_state(cookie)
|
32
47
|
(cookie||[]).map do |statement|
|
33
48
|
<<~python
|
34
49
|
try:
|
@@ -40,7 +55,7 @@ python
|
|
40
55
|
end
|
41
56
|
|
42
57
|
def compile_cookie(cookie)
|
43
|
-
|
58
|
+
compile_state(cookie).join("\n")
|
44
59
|
end
|
45
60
|
|
46
61
|
def error_patterns
|
@@ -50,7 +65,7 @@ python
|
|
50
65
|
end
|
51
66
|
|
52
67
|
def syntax_error_regexp
|
53
|
-
|
68
|
+
/(SyntheticMumukiSyntaxError: )|(\A File .*\n(?m)(?=.*(SyntaxError|IndentationError)))/
|
54
69
|
end
|
55
70
|
end
|
56
71
|
|
data/lib/base/test_hook.rb
CHANGED
data/lib/base/version.rb
CHANGED
@@ -0,0 +1,48 @@
|
|
1
|
+
class Python3TryHook < Mumukit::Templates::TryHook
|
2
|
+
isolated true
|
3
|
+
attr_reader :query_hook
|
4
|
+
|
5
|
+
def initialize(config = nil)
|
6
|
+
super config
|
7
|
+
@query_hook = Python3QueryHook.new
|
8
|
+
end
|
9
|
+
|
10
|
+
def compile_file_content(r)
|
11
|
+
<<python
|
12
|
+
#{query_hook.compile_file_header(r)}
|
13
|
+
print("#{query_separator}");
|
14
|
+
#{query_hook.compile_query(r.query, '')}
|
15
|
+
print("#{goal_separator}");
|
16
|
+
#{query_hook.compile_query(r.goal.indifferent_get(:query) || 'None', '')}
|
17
|
+
python
|
18
|
+
end
|
19
|
+
|
20
|
+
delegate :tempfile_extension, to: :query_hook
|
21
|
+
delegate :command_line, to: :query_hook
|
22
|
+
|
23
|
+
def query_separator
|
24
|
+
'!!!MUMUKI-QUERY-START!!!'
|
25
|
+
end
|
26
|
+
|
27
|
+
def goal_separator
|
28
|
+
'!!!MUMUKI-GOAL-START!!!'
|
29
|
+
end
|
30
|
+
|
31
|
+
def to_structured_results(_file, result, status)
|
32
|
+
/#{query_separator}
|
33
|
+
?(.*)
|
34
|
+
#{goal_separator}
|
35
|
+
?(.*)
|
36
|
+
/m =~ result
|
37
|
+
|
38
|
+
{
|
39
|
+
query: to_query_result($1, status),
|
40
|
+
goal: $2,
|
41
|
+
status: status
|
42
|
+
}
|
43
|
+
end
|
44
|
+
|
45
|
+
def to_query_result(result, status)
|
46
|
+
{ result: result, status: status }
|
47
|
+
end
|
48
|
+
end
|
data/lib/python3_runner.rb
CHANGED
@@ -16,5 +16,6 @@ reload_python3_runner!
|
|
16
16
|
require_relative './python3/version'
|
17
17
|
require_relative './python3/test_hook'
|
18
18
|
require_relative './python3/query_hook'
|
19
|
+
require_relative './python3/try_hook'
|
19
20
|
require_relative './python3/expectations_hook'
|
20
21
|
require_relative './python3/metadata_hook'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mumuki-python-runner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Franco Leonardo Bulgarelli
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mumukit
|
@@ -24,48 +24,34 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.30'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: mulang
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '4.5'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '4.5'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: bundler
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
31
|
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
33
|
+
version: '2.0'
|
48
34
|
type: :development
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
38
|
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
40
|
+
version: '2.0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: rake
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
45
|
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
47
|
+
version: '12.3'
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
52
|
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
54
|
+
version: '12.3'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: rspec
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -147,6 +133,7 @@ files:
|
|
147
133
|
- lib/python3/metadata_hook.rb
|
148
134
|
- lib/python3/query_hook.rb
|
149
135
|
- lib/python3/test_hook.rb
|
136
|
+
- lib/python3/try_hook.rb
|
150
137
|
- lib/python3/version.rb
|
151
138
|
- lib/python3_runner.rb
|
152
139
|
- lib/python_runner.rb
|