Class: RubyPyMill::Runner
- Inherits:
-
Object
- Object
- RubyPyMill::Runner
- Defined in:
- lib/ruby_pymill.rb
Instance Method Summary collapse
-
#initialize(kernel: "rpymill", cwd: nil, logger: $stdout, cell_tags: []) ⇒ Runner
constructor
A new instance of Runner.
-
#run(input_ipynb:, output_ipynb:, params_json: nil, kernel: nil, dry_run: false, cell_tags: nil) ⇒ Object
params_json: path to json file or JSON string cell_tags : initialize の指定を上書き可能(カンマ/空白区切り文字列 or 配列).
Constructor Details
#initialize(kernel: "rpymill", cwd: nil, logger: $stdout, cell_tags: []) ⇒ Runner
11 12 13 14 15 16 |
# File 'lib/ruby_pymill.rb', line 11 def initialize(kernel: "rpymill", cwd: nil, logger: $stdout, cell_tags: []) @kernel = kernel @cwd = cwd @logger = logger = () # ← 文字列/配列どちらでもOKに end |
Instance Method Details
#run(input_ipynb:, output_ipynb:, params_json: nil, kernel: nil, dry_run: false, cell_tags: nil) ⇒ Object
params_json: path to json file or JSON string cell_tags : initialize の指定を上書き可能(カンマ/空白区切り文字列 or 配列)
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/ruby_pymill.rb', line 20 def run(input_ipynb:, output_ipynb:, params_json: nil, kernel: nil, dry_run: false, cell_tags: nil) k = kernel || @kernel = (.nil? ? : ) # ← 正規化して複数タグ対応 # 1) タグ指定があればノートを事前フィルタ filtered_input = .empty? ? input_ipynb : (input_ipynb, ) # 2) papermill コマンドを組み立て args = ["papermill", filtered_input, output_ipynb, "-k", k] if params_json if File.exist?(params_json) args += ["-f", params_json] else tmpdir = Dir.mktmpdir("rpymill_params") tmp = File.join(tmpdir, "params.json") File.write(tmp, params_json) args += ["-f", tmp] end end cmd = args.join(" ") @logger.puts "[RubyPyMill] #{dry_run ? 'DRY' : 'RUN'}: #{cmd}" return true if dry_run stdout_str, stderr_str, status = Open3.capture3(cmd, chdir: @cwd || Dir.pwd) @logger.puts stdout_str unless stdout_str.empty? @logger.puts stderr_str unless stderr_str.empty? status.success? end |