mortar 0.15.39 → 0.15.40

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- N2RjODE0YjhlMmJjNDAyMjAxNmZhM2MxM2M2YTI1MjZlMjY2YWU4Yg==
4
+ YTVjMGVkNTRjZGJjMjQyODI3Yjg3ZDkzMjE5NzU3ZThjZDE4NGNlZA==
5
5
  data.tar.gz: !binary |-
6
- MzI0Y2NiMWEwNTI2MWRjNGIxYjRiMDhhZGJiNTZjNzY5ZDZkMDAwOQ==
6
+ YTRkN2M3MDQ3YTA4MDY1MDMyOWRmY2YzYjc5NGRjZjYzM2IyNjk5Nw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MjQ0MWRiMWUxZGJlNTQ2YjI5ODljNzJkZjg3ZjUwZDAyYjVhZmY4OGU5NzUy
10
- OWZkMzQ5MWEzYWMxZDg2ZmZkN2VhNmFjZjgyYWI3MGE5YzM3Nzg1MDY2ZmEy
11
- NDdmZjljYzMwNjI1YTAyZTUxYWUxYjM3M2FmMzk0MTg2MzEzZWQ=
9
+ MTk1ZTZmNGZlMjRmYWU3OGM4OTUzYmI0NTg1M2RlM2Q1Mjk2MmFlY2U1MWRh
10
+ MjVkZWZlZjhkYjE5MWMzYzFmNDhlN2QyZjZhNDhiYzIyMjM4NzliNTczZjUy
11
+ YjM0MzQ3NDI1NzRiZjAyY2I2YmZkYWFmNzdkNGQxMGI2NWFkN2U=
12
12
  data.tar.gz: !binary |-
13
- N2NhNjE5MThkNDQ2MjVmZTc1ZWEwMWNmYTJjZmM2OWE3NzdjMWI0NGYyODFk
14
- NmZmYjgzYjNkMzAxNmI4MjliMDM0MzMzYTM3NTk3NmFjMGJiZjI5ZWNmYjkw
15
- ZDc1MjI1YzQ5NmU5NzdlM2ZjMDU0ZmFjMmM0MzFmM2I5ZmY4MzY=
13
+ YzExMTA1YjgxMzU5NjQ3NTBlYjdlYzgyZTJlMzEyOGZhYWFmNjc3MjcyZTU5
14
+ OTVlZTA2NDc4ODA0ZWM5NDk4MGEwM2EyY2JkMDFhNzJmNDVmYTk2Nzg4NmQ0
15
+ MTU1ZDQ0NmZiNTZhYTEwM2U2YzUwYjIwYzNmNjYyNDk1M2ZhMjk=
@@ -36,6 +36,7 @@ class Mortar::Local::Python
36
36
 
37
37
  @candidate_pythons = nil
38
38
 
39
+
39
40
  # Execute either an installation of python or an inspection
40
41
  # of the local system to see if a usable python is available
41
42
  def check_or_install
@@ -330,7 +331,7 @@ class Mortar::Local::Python
330
331
  parameters = merge_parameters(auto_params, project_config_parameters)
331
332
  stillson_template_params = {
332
333
  :parameters => parameters,
333
- :luigi_script => luigi_script.executable_path()
334
+ :luigiscripts_path => File.join(project_root, 'luigiscripts')
334
335
  }
335
336
  run_templated_script(stillson_command_script_template_path, stillson_template_params)
336
337
  end
@@ -358,7 +359,8 @@ class Mortar::Local::Python
358
359
  return {
359
360
  :python_arugments => "",
360
361
  :python_script => luigi_script.executable_path(),
361
- :script_arguments => script_args.join(" ")
362
+ :script_arguments => script_args.join(" "),
363
+ :python_path => File.join(project_root, 'luigiscripts')
362
364
  }
363
365
  end
364
366
 
@@ -20,22 +20,22 @@ require 'pathname'
20
20
  module Mortar
21
21
  module Project
22
22
  class ProjectError < RuntimeError; end
23
-
23
+
24
24
  class Project
25
25
  def self.required_directories
26
26
  ["macros", "pigscripts", "udfs"]
27
27
  end
28
-
28
+
29
29
  attr_accessor :name
30
30
  attr_accessor :remote
31
31
  attr_accessor :root_path
32
-
32
+
33
33
  def initialize(name, root_path, remote)
34
34
  @name = name
35
35
  @root_path = root_path
36
36
  @remote = remote
37
37
  end
38
-
38
+
39
39
  def python_udfs_path
40
40
  File.join(@root_path, "udfs/python")
41
41
  end
@@ -46,7 +46,7 @@ module Mortar
46
46
  "python",
47
47
  ".py")
48
48
  end
49
-
49
+
50
50
  def pigscripts_path
51
51
  File.join(@root_path, "pigscripts")
52
52
  end
@@ -88,7 +88,7 @@ module Mortar
88
88
  def sparkjobs_path
89
89
  File.join(@root_path, "src/main/scala")
90
90
  end
91
-
91
+
92
92
  def sparkscripts_path
93
93
  File.join(@root_path, "sparkscripts")
94
94
  end
@@ -114,11 +114,11 @@ module Mortar
114
114
  File.exists?(File.join(@root_path, ".mortar-project-remote"))
115
115
  end
116
116
  end
117
-
117
+
118
118
  class ProjectEntity
119
-
119
+
120
120
  include Enumerable
121
-
121
+
122
122
  def initialize(path, name, filename_extension, optional=false)
123
123
  @path = path
124
124
  @name = name
@@ -126,27 +126,27 @@ module Mortar
126
126
  @optional = optional
127
127
  @elements = elements
128
128
  end
129
-
129
+
130
130
  def method_missing(method, *args)
131
131
  method_name = method.to_s
132
132
  return @elements[method_name] if @elements[method_name]
133
133
  super
134
134
  end
135
-
135
+
136
136
  def each
137
137
  @elements.each {|key, value| yield [key, value]}
138
138
  end
139
-
139
+
140
140
  def [](key)
141
141
  @elements[key]
142
142
  end
143
-
143
+
144
144
  def keys
145
145
  @elements.keys
146
146
  end
147
-
147
+
148
148
  protected
149
-
149
+
150
150
  def element_name(element_path)
151
151
  File.basename(element_path, @filename_extension)
152
152
  end
@@ -163,7 +163,7 @@ module Mortar
163
163
  if duplicates.length > 0
164
164
  raise ProjectError, "Multiple scripts found with the same name. Each script must have a unique name regardless of what directory it is in. Duplicate script names found: #{duplicates.collect{|d| d[0]}}"
165
165
  end
166
-
166
+
167
167
  file_paths_hsh = scripts.flatten
168
168
  return Hash[*file_paths_hsh]
169
169
  else
@@ -171,12 +171,12 @@ module Mortar
171
171
  end
172
172
  return Hash[]
173
173
  end
174
-
174
+
175
175
  def element(path)
176
176
  raise NotImplementedError, "Implement in subclass"
177
177
  end
178
178
  end
179
-
179
+
180
180
  class PigScripts < ProjectEntity
181
181
  def element(name, path)
182
182
  PigScript.new(name, path)
@@ -206,12 +206,12 @@ module Mortar
206
206
  Script.new(name, path)
207
207
  end
208
208
  end
209
-
209
+
210
210
  class Script
211
-
211
+
212
212
  attr_reader :name
213
213
  attr_reader :path
214
-
214
+
215
215
  def initialize(name, path)
216
216
  @name = name
217
217
  @path = path
@@ -228,43 +228,43 @@ module Mortar
228
228
  p = Pathname.new(@path).dirname
229
229
  rel_path = p.relative_path_from(Pathname.pwd).to_s
230
230
  end
231
-
231
+
232
232
  def to_s
233
233
  code
234
234
  end
235
235
  end
236
236
 
237
237
  class LuigiScript < Script
238
-
238
+
239
239
  def executable_path
240
- "luigiscripts/#{self.name}.py"
240
+ "#{self.rel_path}/#{self.name}.py"
241
241
  end
242
-
242
+
243
243
  end
244
244
 
245
245
  class SparkScript < Script
246
-
246
+
247
247
  def executable_path
248
248
  "sparkscripts/#{self.name}"
249
249
  end
250
-
250
+
251
251
  end
252
-
252
+
253
253
  class ControlScript < Script
254
-
254
+
255
255
  def executable_path
256
256
  "#{self.rel_path}/#{self.name}.pig"
257
257
  end
258
-
258
+
259
259
  end
260
-
260
+
261
261
  class PigScript < Script
262
-
262
+
263
263
  def executable_path
264
264
  "#{self.rel_path}/#{self.name}.pig"
265
265
  end
266
-
266
+
267
267
  end
268
-
268
+
269
269
  end
270
270
  end
@@ -4,11 +4,12 @@ set -e
4
4
 
5
5
  # Setup python environment
6
6
  source <%= @local_install_dir %>/pythonenv/bin/activate
7
+ export PYTHONPATH=$PYTHONPATH:<%= @python_path %>
7
8
 
8
- export LUIGI_CONFIG_PATH=`pwd`/`dirname <%= @python_script %>`/client.cfg
9
+ export LUIGI_CONFIG_PATH=<%= @python_path %>/client.cfg
9
10
 
10
11
  # Run Python
11
12
  <%= @local_install_dir %>/pythonenv/bin/python \
12
13
  <%= @python_arugments %> \
13
14
  <%= @python_script %> \
14
- <%= @script_arguments %>
15
+ <%= @script_arguments %>
@@ -6,10 +6,10 @@ set -e
6
6
  source <%= @local_install_dir %>/pythonenv/bin/activate
7
7
 
8
8
  # template config file
9
- export LUIGI_CONFIG_TEMPLATE_PATH=`pwd`/`dirname <%= @luigi_script %>`/client.cfg.template
9
+ export LUIGI_CONFIG_TEMPLATE_PATH=<%= @luigiscripts_path %>/client.cfg.template
10
10
 
11
11
  # expanded config file
12
- export LUIGI_CONFIG_PATH=`pwd`/`dirname <%= @luigi_script %>`/client.cfg
12
+ export LUIGI_CONFIG_PATH=<%= @luigiscripts_path %>/client.cfg
13
13
 
14
14
  # Setup parameters in environment variables
15
15
  <% @parameters.each do |p| %>
@@ -17,8 +17,8 @@ export <%= p['name'] %>="<%= p['value'] %>";
17
17
  <% end %>
18
18
 
19
19
  # Run stillson to expand the configuration template
20
- if [ -f "$LUIGI_CONFIG_TEMPLATE_PATH" ]
21
- then
20
+ if [ -f "$LUIGI_CONFIG_TEMPLATE_PATH" ]
21
+ then
22
22
  stillson "$LUIGI_CONFIG_TEMPLATE_PATH" -o $LUIGI_CONFIG_PATH
23
23
  else
24
24
  echo "No luigi client configuration template found in expected location $LUIGI_CONFIG_TEMPLATE_PATH. Not expanding."
@@ -16,5 +16,5 @@
16
16
 
17
17
  module Mortar
18
18
  # see http://semver.org/
19
- VERSION = "0.15.39"
19
+ VERSION = "0.15.40"
20
20
  end
@@ -131,19 +131,27 @@ module Mortar::Local
131
131
  context "running python commands" do
132
132
 
133
133
  it "Generates the appropriate tempate variables" do
134
- with_git_initialized_project do |p|
135
- script_name = "some_luigi_script"
136
- script_path = File.join(p.luigiscripts_path, "#{script_name}.py")
137
- write_file(script_path)
138
- luigi_script = Mortar::Project::LuigiScript.new(script_name, script_path)
139
- args = %W{--myoption 2 --myotheroption 3}
140
- py = Mortar::Local::Python.new
141
- expected_hash = {
142
- :python_arugments => "",
143
- :python_script => "luigiscripts/#{script_name}.py",
144
- :script_arguments => "--local-scheduler --logging-conf-file #{py.luigi_logging_config_file_path} --myoption 2 --myotheroption 3",
145
- }
146
- expect(py.luigi_command_template_parameters(luigi_script, args)).to eq(expected_hash)
134
+ FakeFS do
135
+ with_git_initialized_project do |p|
136
+ script_name = "some_luigi_script"
137
+ script_path = File.join(p.luigiscripts_path, "#{script_name}.py")
138
+ write_file(script_path)
139
+ luigi_script = Mortar::Project::LuigiScript.new(script_name, script_path)
140
+ args = %W{--myoption 2 --myotheroption 3}
141
+ py = Mortar::Local::Python.new
142
+
143
+ dir = Pathname.new(script_path).dirname
144
+ rel_path = dir.relative_path_from(Pathname.pwd).to_s + '/' + script_name + '.py'
145
+
146
+ expected_hash = {
147
+ :python_arugments => "",
148
+ :python_script => rel_path,
149
+ :script_arguments => "--local-scheduler --logging-conf-file #{py.luigi_logging_config_file_path} --myoption 2 --myotheroption 3",
150
+ :python_path => p.luigiscripts_path
151
+ }
152
+
153
+ expect(py.luigi_command_template_parameters(luigi_script, args)).to eq(expected_hash)
154
+ end
147
155
  end
148
156
  end
149
157
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mortar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.39
4
+ version: 0.15.40
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mortar Data
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-28 00:00:00.000000000 Z
11
+ date: 2016-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rdoc