mumuki-python-runner 1.4.0 → 1.6.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.rb +10 -0
- data/lib/base/expectations_hook.rb +15 -0
- data/lib/{metadata_hook.rb → base/metadata_hook.rb} +5 -3
- data/lib/{query_hook.rb → base/query_hook.rb} +11 -7
- data/lib/{test_hook.rb → base/test_hook.rb} +6 -4
- data/lib/base/version.rb +4 -0
- data/lib/python2/expectations_hook.rb +7 -0
- data/lib/python2/metadata_hook.rb +8 -0
- data/lib/python2/query_hook.rb +4 -0
- data/lib/python2/test_hook.rb +4 -0
- data/lib/python2/version.rb +3 -0
- data/lib/python2_runner.rb +21 -0
- data/lib/python3/expectations_hook.rb +5 -0
- data/lib/python3/metadata_hook.rb +6 -0
- data/lib/python3/query_hook.rb +2 -0
- data/lib/python3/test_hook.rb +2 -0
- data/lib/python3/try_hook.rb +48 -0
- data/lib/python3/version.rb +1 -0
- data/lib/python3_runner.rb +21 -0
- data/lib/python_runner.rb +1 -15
- metadata +39 -10
- data/lib/version.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0275bf8b0f0c205ce0e5ceda01999f39a417013d9490750b91cf3b88ca57e437
|
4
|
+
data.tar.gz: d1ca4344541694ca5ed8ef244943f5e4fb1f8df94fac3d7cefc271c79db9608c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46f823c0f7034521637dd08853948ef34e114fd11be5fbd6293ad264a4318a42a764b3709f237a45b8b5ad90755ff28b9c3cbcd14af480320ffb71c60c76fa72
|
7
|
+
data.tar.gz: 78517e84935997c70ab4c8ff24728caf909c9f4e1109b031f33f5ec80ecb6165557d6150bcb9dd8f399f7642bcfc4c33f8f1d6e1ea8ecc4e252b388e7953676e
|
data/lib/base.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'mumukit'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
I18n.load_translations_path File.join(__dir__, 'locales', '*.yml')
|
5
|
+
|
6
|
+
require_relative './base/version'
|
7
|
+
require_relative './base/test_hook'
|
8
|
+
require_relative './base/query_hook'
|
9
|
+
require_relative './base/expectations_hook'
|
10
|
+
require_relative './base/metadata_hook'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class BasePythonExpectationsHook < Mumukit::Templates::MulangExpectationsHook
|
2
|
+
include_smells true
|
3
|
+
|
4
|
+
def default_smell_exceptions
|
5
|
+
LOGIC_SMELLS + FUNCTIONAL_SMELLS
|
6
|
+
end
|
7
|
+
|
8
|
+
def domain_language
|
9
|
+
{
|
10
|
+
caseStyle: 'RubyCase',
|
11
|
+
minimumIdentifierSize: 3,
|
12
|
+
jargon: []
|
13
|
+
}
|
14
|
+
end
|
15
|
+
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
class
|
1
|
+
class BasePythonMetadataHook < Mumukit::Hook
|
2
2
|
def metadata
|
3
3
|
{language: {
|
4
4
|
name: 'python',
|
5
5
|
icon: {type: 'devicon', name: 'python'},
|
6
|
-
version:
|
6
|
+
version: version,
|
7
7
|
extension: 'py',
|
8
8
|
ace_mode: 'python'
|
9
9
|
},
|
@@ -18,4 +18,6 @@ class Test(unittest.TestCase):
|
|
18
18
|
python
|
19
19
|
}}
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
|
+
required :version
|
23
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class
|
1
|
+
class BasePythonQueryHook < Mumukit::Templates::FileHook
|
2
2
|
with_error_patterns
|
3
3
|
isolated true
|
4
4
|
|
@@ -7,7 +7,12 @@ class PythonQueryHook < 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
|
15
|
+
# -*- coding: UTF-8 -*-
|
11
16
|
import string, sys, os
|
12
17
|
|
13
18
|
#{req.extra}
|
@@ -15,19 +20,18 @@ import string, sys, os
|
|
15
20
|
sys.stdout = open(os.devnull, 'w')
|
16
21
|
#{compile_cookie(req.cookie)}
|
17
22
|
sys.stdout = sys.__stdout__
|
18
|
-
#{build_query req.query}
|
19
23
|
python
|
20
24
|
end
|
21
25
|
|
22
|
-
def
|
23
|
-
if query.match /print *(\(| ).*|^[a-zA-Z_]\w*\s
|
26
|
+
def compile_query(query, output_prefix = "=> ")
|
27
|
+
if query.match /print *(\(| ).*|^[a-zA-Z_]\w*\s*=[^=].*|^raise\b/
|
24
28
|
query
|
25
29
|
else
|
26
|
-
"print(string.Template(\"
|
30
|
+
"print(string.Template(\"#{output_prefix}\${mumuki_query_result}\").safe_substitute(mumuki_query_result = #{query}))"
|
27
31
|
end
|
28
32
|
end
|
29
33
|
|
30
|
-
def
|
34
|
+
def compile_state(cookie)
|
31
35
|
(cookie||[]).map do |statement|
|
32
36
|
<<~python
|
33
37
|
try:
|
@@ -39,7 +43,7 @@ python
|
|
39
43
|
end
|
40
44
|
|
41
45
|
def compile_cookie(cookie)
|
42
|
-
|
46
|
+
compile_state(cookie).join("\n")
|
43
47
|
end
|
44
48
|
|
45
49
|
def error_patterns
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class
|
1
|
+
class BasePythonTestHook < Mumukit::Templates::FileHook
|
2
2
|
isolated true
|
3
3
|
|
4
4
|
def tempfile_extension
|
@@ -6,21 +6,23 @@ class PythonTestHook < Mumukit::Templates::FileHook
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def command_line(filename)
|
9
|
-
"
|
9
|
+
"rununittest #{filename}"
|
10
10
|
end
|
11
11
|
|
12
12
|
def compile_file_content(request)
|
13
13
|
<<python
|
14
|
+
# -*- coding: UTF-8 -*-
|
15
|
+
|
14
16
|
import unittest
|
15
17
|
import xmlrunner
|
16
18
|
import sys
|
17
19
|
|
18
|
-
#{request.content}
|
19
20
|
#{request.extra}
|
21
|
+
#{request.content}
|
20
22
|
#{test_class(request.test)}
|
21
23
|
|
22
24
|
unittest.main(
|
23
|
-
testRunner=xmlrunner.XMLTestRunner(output=
|
25
|
+
testRunner=xmlrunner.XMLTestRunner(output='./xml-unittest-output'),
|
24
26
|
failfast=False,
|
25
27
|
buffer=False,
|
26
28
|
catchbreak=False
|
data/lib/base/version.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative './base'
|
2
|
+
|
3
|
+
def reload_python2_runner!
|
4
|
+
Mumukit.runner_name = 'python'
|
5
|
+
Mumukit.configure do |config|
|
6
|
+
config.docker_image = 'mumuki/mumuki-python2-worker:0.1'
|
7
|
+
# comment type should be Mumukit::Directives::CommentType::Ruby, but it is
|
8
|
+
# Mumukit::Directives::CommentType::Cpp for backward compatibility
|
9
|
+
config.stateful = true
|
10
|
+
config.structured = true
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# for testing only
|
15
|
+
reload_python2_runner!
|
16
|
+
|
17
|
+
require_relative './python2/version'
|
18
|
+
require_relative './python2/test_hook'
|
19
|
+
require_relative './python2/query_hook'
|
20
|
+
require_relative './python2/expectations_hook'
|
21
|
+
require_relative './python2/metadata_hook'
|
@@ -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
|
@@ -0,0 +1 @@
|
|
1
|
+
Python3VersionHook = BasePythonVersionHook
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative './base'
|
2
|
+
|
3
|
+
def reload_python3_runner!
|
4
|
+
Mumukit.runner_name = 'python3'
|
5
|
+
Mumukit.configure do |config|
|
6
|
+
config.docker_image = 'mumuki/mumuki-python3-worker:0.1'
|
7
|
+
config.comment_type = Mumukit::Directives::CommentType::Ruby
|
8
|
+
config.structured = true
|
9
|
+
config.stateful = true
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
# for testing only
|
14
|
+
reload_python3_runner!
|
15
|
+
|
16
|
+
require_relative './python3/version'
|
17
|
+
require_relative './python3/test_hook'
|
18
|
+
require_relative './python3/query_hook'
|
19
|
+
require_relative './python3/try_hook'
|
20
|
+
require_relative './python3/expectations_hook'
|
21
|
+
require_relative './python3/metadata_hook'
|
data/lib/python_runner.rb
CHANGED
@@ -1,15 +1 @@
|
|
1
|
-
|
2
|
-
require 'nokogiri'
|
3
|
-
|
4
|
-
I18n.load_translations_path File.join(__dir__, 'locales', '*.yml')
|
5
|
-
|
6
|
-
Mumukit.runner_name = 'python'
|
7
|
-
Mumukit.configure do |config|
|
8
|
-
config.docker_image = 'mumuki/mumuki-python-worker:1.1'
|
9
|
-
config.stateful = true
|
10
|
-
end
|
11
|
-
|
12
|
-
require_relative 'version'
|
13
|
-
require_relative 'test_hook'
|
14
|
-
require_relative 'query_hook'
|
15
|
-
require_relative 'metadata_hook'
|
1
|
+
require_relative './python2_runner'
|
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.6.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: 2020-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mumukit
|
@@ -24,6 +24,20 @@ 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'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +58,14 @@ dependencies:
|
|
44
58
|
requirements:
|
45
59
|
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
61
|
+
version: '12.3'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
68
|
+
version: '12.3'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rspec
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -115,14 +129,29 @@ executables: []
|
|
115
129
|
extensions: []
|
116
130
|
extra_rdoc_files: []
|
117
131
|
files:
|
132
|
+
- lib/base.rb
|
133
|
+
- lib/base/expectations_hook.rb
|
134
|
+
- lib/base/metadata_hook.rb
|
135
|
+
- lib/base/query_hook.rb
|
136
|
+
- lib/base/test_hook.rb
|
137
|
+
- lib/base/version.rb
|
118
138
|
- lib/locales/en.yml
|
119
139
|
- lib/locales/es.yml
|
120
|
-
- lib/
|
140
|
+
- lib/python2/expectations_hook.rb
|
141
|
+
- lib/python2/metadata_hook.rb
|
142
|
+
- lib/python2/query_hook.rb
|
143
|
+
- lib/python2/test_hook.rb
|
144
|
+
- lib/python2/version.rb
|
145
|
+
- lib/python2_runner.rb
|
146
|
+
- lib/python3/expectations_hook.rb
|
147
|
+
- lib/python3/metadata_hook.rb
|
148
|
+
- lib/python3/query_hook.rb
|
149
|
+
- lib/python3/test_hook.rb
|
150
|
+
- lib/python3/try_hook.rb
|
151
|
+
- lib/python3/version.rb
|
152
|
+
- lib/python3_runner.rb
|
121
153
|
- lib/python_runner.rb
|
122
|
-
|
123
|
-
- lib/test_hook.rb
|
124
|
-
- lib/version.rb
|
125
|
-
homepage: http://github.com/mumuki/mumuki-python-server
|
154
|
+
homepage: http://github.com/mumuki/mumuki-python-runner
|
126
155
|
licenses:
|
127
156
|
- MIT
|
128
157
|
metadata: {}
|
@@ -141,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
141
170
|
- !ruby/object:Gem::Version
|
142
171
|
version: '0'
|
143
172
|
requirements: []
|
144
|
-
rubygems_version: 3.0.
|
173
|
+
rubygems_version: 3.0.8
|
145
174
|
signing_key:
|
146
175
|
specification_version: 4
|
147
176
|
summary: Python Runner for Mumuki
|
data/lib/version.rb
DELETED