diff --git a/spec/lib/gitlab/diff/rendered/notebook/diff_file_spec.rb b/spec/lib/gitlab/diff/rendered/notebook/diff_file_spec.rb index c38684a6dc3dc07e5de7435b419057da3912105c..b5137f9db6b7077f9feac5f69aecd8ce3a5cca99 100644 --- a/spec/lib/gitlab/diff/rendered/notebook/diff_file_spec.rb +++ b/spec/lib/gitlab/diff/rendered/notebook/diff_file_spec.rb @@ -144,7 +144,7 @@ context 'has image' do it 'replaces rich text with img to the embedded image' do - expect(nb_file.highlighted_diff_lines[58].rich_text).to include('<img') + expect(nb_file.highlighted_diff_lines[56].rich_text).to include('<img') end it 'adds image to src' do @@ -159,11 +159,11 @@ let(:commit) { project.commit("4963fefc990451a8ad34289ce266b757456fc88c") } it 'prevents injected html to be rendered as html' do - expect(nb_file.highlighted_diff_lines[45].rich_text).not_to include('<div>Hello') + expect(nb_file.highlighted_diff_lines[43].rich_text).not_to include('<div>Hello') end it 'keeps the injected html as part of the string' do - expect(nb_file.highlighted_diff_lines[45].rich_text).to end_with('/div>">') + expect(nb_file.highlighted_diff_lines[43].rich_text).to end_with('/div>">') end end end diff --git a/vendor/gems/ipynbdiff/lib/output_transformer.rb b/vendor/gems/ipynbdiff/lib/output_transformer.rb index 88728df2f173e3f188ede525986dbc073f809636..e7adfbd8c3e9fd1d8e5c92fde46040f08ae96f09 100644 --- a/vendor/gems/ipynbdiff/lib/output_transformer.rb +++ b/vendor/gems/ipynbdiff/lib/output_transformer.rb @@ -19,25 +19,14 @@ def initialize(hide_images: false) end def transform(output, symbol) - transformed = case (output_type = output['output_type']) - when 'error' - transform_error(output['traceback'], symbol / 'traceback') - when 'execute_result', 'display_data' - transform_non_error(ORDERED_KEYS[output_type], output['data'], symbol / 'data') - when 'stream' - transform_element('text', output['text'], symbol) - end - - transformed ? decorate_output(transformed, output, symbol) : [] - end - - def decorate_output(output_rows, output, symbol) - [ - _, - _(symbol, %(%%%% Output: #{output['output_type']})), - _, - *output_rows - ] + case (output_type = output['output_type']) + when 'error' + transform_error(output['traceback'], symbol / 'traceback') + when 'execute_result', 'display_data' + transform_non_error(ORDERED_KEYS[output_type], output['data'], symbol / 'data') + when 'stream' + transform_element('text', output['text'], symbol) + end end def transform_error(traceback, symbol) diff --git a/vendor/gems/ipynbdiff/lib/transformer.rb b/vendor/gems/ipynbdiff/lib/transformer.rb index 153d821db2797df57858210eb8d820744ff8ca99..64d59eeaea8d69c1890094fc36aba14cc8971411 100644 --- a/vendor/gems/ipynbdiff/lib/transformer.rb +++ b/vendor/gems/ipynbdiff/lib/transformer.rb @@ -20,7 +20,7 @@ class Transformer def initialize(include_frontmatter: true, hide_images: false) @include_frontmatter = include_frontmatter @hide_images = hide_images - @output_transformer = OutputTransformer.new(hide_images: hide_images) + @out_transformer = OutputTransformer.new(hide_images: hide_images) end def validate_notebook(notebook) @@ -75,9 +75,19 @@ def transform_code_cell(cell, notebook, symbol) _(symbol / 'source', %(``` #{notebook.dig('metadata', 'kernelspec', 'language') || ''})), symbolize_array(symbol / 'source', cell['source'], &:rstrip), _(nil, '```'), - cell['outputs'].map.with_index do |output, idx| - @output_transformer.transform(output, symbol / ['outputs', idx]) - end + transform_outputs(cell['outputs'], symbol) + ] + end + + def transform_outputs(outputs, symbol) + transformed = outputs.map + .with_index { |output, i| @out_transformer.transform(output, symbol / ['outputs', i]) } + .compact + .map { |el| [_, el] } + + [ + transformed.empty? ? [] : [_, _(symbol / 'outputs', '%% Output')], + transformed ] end diff --git a/vendor/gems/ipynbdiff/spec/testdata/error_output/expected.md b/vendor/gems/ipynbdiff/spec/testdata/error_output/expected.md index 5be645de9c9718b055de5f93cc709c37a9f8063c..e6e8a0755988dbbb9734a95726fca79b0114e095 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/error_output/expected.md +++ b/vendor/gems/ipynbdiff/spec/testdata/error_output/expected.md @@ -5,7 +5,7 @@ y = sin(x) ``` -%%%% Output: error +%% Output --------------------------------------------------------------------------- NameError Traceback (most recent call last) diff --git a/vendor/gems/ipynbdiff/spec/testdata/error_output/expected_symbols.txt b/vendor/gems/ipynbdiff/spec/testdata/error_output/expected_symbols.txt index 75e35d123d058bd14291150fefd1b198c9216653..5d2f248135df1bc8bcdde924de6dbb225e7d6394 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/error_output/expected_symbols.txt +++ b/vendor/gems/ipynbdiff/spec/testdata/error_output/expected_symbols.txt @@ -5,7 +5,7 @@ .cells.0.source.1 -.cells.0.outputs.0 +.cells.0.outputs .cells.0.outputs.0.traceback.0 .cells.0.outputs.0.traceback.1 diff --git a/vendor/gems/ipynbdiff/spec/testdata/hide_images/expected.md b/vendor/gems/ipynbdiff/spec/testdata/hide_images/expected.md index 89a812740a6d46d283ed415b166a631aa404e0c3..ff63d351a3b72721e15bbdbd0a4f70c7f831f29b 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/hide_images/expected.md +++ b/vendor/gems/ipynbdiff/spec/testdata/hide_images/expected.md @@ -3,10 +3,8 @@ ``` python ``` -%%%% Output: display_data +%% Output [Hidden Image Output] -%%%% Output: display_data - [Hidden Image Output] diff --git a/vendor/gems/ipynbdiff/spec/testdata/hide_images/expected_symbols.txt b/vendor/gems/ipynbdiff/spec/testdata/hide_images/expected_symbols.txt index b94e9538f58d879f6d90fd5e8e77e1cd79c06f0d..b8f24f9fba537b603ae848cef0b2ef8d5213b286 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/hide_images/expected_symbols.txt +++ b/vendor/gems/ipynbdiff/spec/testdata/hide_images/expected_symbols.txt @@ -3,10 +3,8 @@ .cells.0.source -.cells.0.outputs.0 +.cells.0.outputs -.cells.0.outputs.1 - diff --git a/vendor/gems/ipynbdiff/spec/testdata/ignore_html_output/expected.md b/vendor/gems/ipynbdiff/spec/testdata/ignore_html_output/expected.md index 456224f3afff830d605dba31ed72436ba02ac685..3085da739ed7f956ff8eb12e6836f5bceb08ba7b 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/ignore_html_output/expected.md +++ b/vendor/gems/ipynbdiff/spec/testdata/ignore_html_output/expected.md @@ -4,7 +4,7 @@ df[:2] ``` -%%%% Output: execute_result +%% Output x y 0 0.000000 0.000000 diff --git a/vendor/gems/ipynbdiff/spec/testdata/ignore_html_output/expected_symbols.txt b/vendor/gems/ipynbdiff/spec/testdata/ignore_html_output/expected_symbols.txt index fa9d412c6dce5812ce27bd3df909625538b34d6a..3bf319d1fa659f0355b316368fd5110cff8c44ec 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/ignore_html_output/expected_symbols.txt +++ b/vendor/gems/ipynbdiff/spec/testdata/ignore_html_output/expected_symbols.txt @@ -4,7 +4,7 @@ .cells.0.source.0 -.cells.0.outputs.0 +.cells.0.outputs .cells.0.outputs.0.data.text/plain.0 .cells.0.outputs.0.data.text/plain.1 diff --git a/vendor/gems/ipynbdiff/spec/testdata/latex_output/expected.md b/vendor/gems/ipynbdiff/spec/testdata/latex_output/expected.md index add84ed26a03a089e69fdf16ce6552caf818d9f6..194c1f43c42908707c8303a9a01133eef0ee71c5 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/latex_output/expected.md +++ b/vendor/gems/ipynbdiff/spec/testdata/latex_output/expected.md @@ -5,6 +5,6 @@ from IPython.display import display, Math display(Math(r'Dims: {}x{}m \\ Area: {}m^2 \\ Volume: {}m^3'.format(1, round(2,2), 3, 4))) ``` -%%%% Output: display_data +%% Output $\displaystyle Dims: 1x2m \\ Area: 3m^2 \\ Volume: 4m^3$ diff --git a/vendor/gems/ipynbdiff/spec/testdata/latex_output/expected_symbols.txt b/vendor/gems/ipynbdiff/spec/testdata/latex_output/expected_symbols.txt index 9407e6db7025d0f37d77bd6a910ea28827888a19..868adca2712841937e7af5cf43532b1685a2c94b 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/latex_output/expected_symbols.txt +++ b/vendor/gems/ipynbdiff/spec/testdata/latex_output/expected_symbols.txt @@ -5,6 +5,6 @@ .cells.0.source.1 -.cells.0.outputs.0 +.cells.0.outputs .cells.0.outputs.0.data.text/latex.0 diff --git a/vendor/gems/ipynbdiff/spec/testdata/multiline_png_output/expected.md b/vendor/gems/ipynbdiff/spec/testdata/multiline_png_output/expected.md index 4a880d8ce18e672c787ca7070fe9d8aa5813d952..0a69c8370e7baf50ceba745df8263c6132228507 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/multiline_png_output/expected.md +++ b/vendor/gems/ipynbdiff/spec/testdata/multiline_png_output/expected.md @@ -4,6 +4,6 @@ Some Image ``` -%%%% Output: display_data +%% Output  diff --git a/vendor/gems/ipynbdiff/spec/testdata/multiline_png_output/expected_symbols.txt b/vendor/gems/ipynbdiff/spec/testdata/multiline_png_output/expected_symbols.txt index 26e11781ec11a3d64fa8963a39e1665296f5912b..1b66012ef2050cecc1cf557de61acba416b1a792 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/multiline_png_output/expected_symbols.txt +++ b/vendor/gems/ipynbdiff/spec/testdata/multiline_png_output/expected_symbols.txt @@ -4,6 +4,6 @@ .cells.0.source.0 -.cells.0.outputs.0 +.cells.0.outputs .cells.0.outputs.0.data.image/png diff --git a/vendor/gems/ipynbdiff/spec/testdata/percent_decorator/expected.md b/vendor/gems/ipynbdiff/spec/testdata/percent_decorator/expected.md index ecb0029f256065491ef3c7b8b767837f1e87a59f..1ece1f2fd06a301d7c86a5bf6eb20e8cf10b3800 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/percent_decorator/expected.md +++ b/vendor/gems/ipynbdiff/spec/testdata/percent_decorator/expected.md @@ -38,12 +38,10 @@ y = np.sin(x) plt.plot(x, y) ``` -%%%% Output: execute_result +%% Output [<matplotlib.lines.Line2D at 0x123e39370>] -%%%% Output: display_data -  %% Cell type:code id:dc1178cd-c46d-4da3-9ab5-08f000699884 tags: @@ -58,7 +56,7 @@ df = pd.DataFrame({"x": x, "y": y}) df[:2] ``` -%%%% Output: execute_result +%% Output x y 0 0.000000 0.000000 diff --git a/vendor/gems/ipynbdiff/spec/testdata/percent_decorator/expected_symbols.txt b/vendor/gems/ipynbdiff/spec/testdata/percent_decorator/expected_symbols.txt index ab70e7bc908b702cb2983aa4f8430ff615065716..c95665d1903961e9e32e456a6caf391c9647b3f8 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/percent_decorator/expected_symbols.txt +++ b/vendor/gems/ipynbdiff/spec/testdata/percent_decorator/expected_symbols.txt @@ -38,12 +38,10 @@ .cells.4.source.3 -.cells.4.outputs.0 +.cells.4.outputs .cells.4.outputs.0.data.text/plain.0 -.cells.4.outputs.1 - .cells.4.outputs.1.data.image/png .cells.5 @@ -58,7 +56,7 @@ .cells.6.source.0 -.cells.6.outputs.0 +.cells.6.outputs .cells.6.outputs.0.data.text/plain.0 .cells.6.outputs.0.data.text/plain.1 diff --git a/vendor/gems/ipynbdiff/spec/testdata/stream_text/expected.md b/vendor/gems/ipynbdiff/spec/testdata/stream_text/expected.md index fb862cbb6364e387cbdddc37a1457406bb3ff5e2..0448bf211112d7515d5a4ed199f4cbd73f685f88 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/stream_text/expected.md +++ b/vendor/gems/ipynbdiff/spec/testdata/stream_text/expected.md @@ -4,6 +4,6 @@ print("G'bye") ``` -%%%% Output: stream +%% Output G'bye diff --git a/vendor/gems/ipynbdiff/spec/testdata/stream_text/expected_symbols.txt b/vendor/gems/ipynbdiff/spec/testdata/stream_text/expected_symbols.txt index ed4a8a075d3bdf51a675456e08098168d6fe80e1..be4e2861ea90931548c73067d6931066a97a7104 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/stream_text/expected_symbols.txt +++ b/vendor/gems/ipynbdiff/spec/testdata/stream_text/expected_symbols.txt @@ -4,6 +4,6 @@ .cells.0.source.0 -.cells.0.outputs.0 +.cells.0.outputs .cells.0.outputs.0.text.0 diff --git a/vendor/gems/ipynbdiff/spec/testdata/svg/expected.md b/vendor/gems/ipynbdiff/spec/testdata/svg/expected.md index 37269446f5a899f5e47c4d7f077e24177bb3fe22..a5a167d31c50d50e49798b41607dd0d052f1fc4c 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/svg/expected.md +++ b/vendor/gems/ipynbdiff/spec/testdata/svg/expected.md @@ -10,10 +10,8 @@ svg = """<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> display(SVG(svg)) ``` -%%%% Output: display_data +%% Output  -%%%% Output: display_data -  diff --git a/vendor/gems/ipynbdiff/spec/testdata/svg/expected_symbols.txt b/vendor/gems/ipynbdiff/spec/testdata/svg/expected_symbols.txt index dd2e412302d8d3f6730b447aa3a0b0739994e534..861198a8c926f0442a805d90f9d94afb81f81aa8 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/svg/expected_symbols.txt +++ b/vendor/gems/ipynbdiff/spec/testdata/svg/expected_symbols.txt @@ -10,10 +10,8 @@ .cells.0.source.6 -.cells.0.outputs.0 +.cells.0.outputs .cells.0.outputs.0.data.image/svg+xml -.cells.0.outputs.1 - .cells.0.outputs.1.data.image/svg+xml diff --git a/vendor/gems/ipynbdiff/spec/testdata/text_output/expected.md b/vendor/gems/ipynbdiff/spec/testdata/text_output/expected.md index 924f4939f54022e82ddeebcdcf6ac365918cac8d..1b6c086ecd57fcbb064262d186288de99c6ac382 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/text_output/expected.md +++ b/vendor/gems/ipynbdiff/spec/testdata/text_output/expected.md @@ -4,6 +4,6 @@ plt.plot(x, y) ``` -%%%% Output: execute_result +%% Output [<matplotlib.lines.Line2D at 0x12a4e43d0>] diff --git a/vendor/gems/ipynbdiff/spec/testdata/text_output/expected_symbols.txt b/vendor/gems/ipynbdiff/spec/testdata/text_output/expected_symbols.txt index 179b30098a13c13e45b6055ab3987e20d90615d1..a004d852ba424cee98c27b7f1c05c2396e16fc5c 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/text_output/expected_symbols.txt +++ b/vendor/gems/ipynbdiff/spec/testdata/text_output/expected_symbols.txt @@ -4,6 +4,6 @@ .cells.0.source.0 -.cells.0.outputs.0 +.cells.0.outputs .cells.0.outputs.0.data.text/plain.0 diff --git a/vendor/gems/ipynbdiff/spec/testdata/text_png_output/expected.md b/vendor/gems/ipynbdiff/spec/testdata/text_png_output/expected.md index b1dda235951666d7925f5807b85044185af42f69..c77f109378ccdcc53e5df086b8d616a127487469 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/text_png_output/expected.md +++ b/vendor/gems/ipynbdiff/spec/testdata/text_png_output/expected.md @@ -7,10 +7,8 @@ y = 2 * np.sin(x) plt.plot(x, y) ``` -%%%% Output: execute_result +%% Output [<matplotlib.lines.Line2D at 0x12a4e43d0>] -%%%% Output: display_data -  diff --git a/vendor/gems/ipynbdiff/spec/testdata/text_png_output/expected_symbols.txt b/vendor/gems/ipynbdiff/spec/testdata/text_png_output/expected_symbols.txt index 5a86e4daa675cf5523fbacbc21e922a048095e41..49f2d7149d84d6ed897f28836d6a4c6161af565d 100644 --- a/vendor/gems/ipynbdiff/spec/testdata/text_png_output/expected_symbols.txt +++ b/vendor/gems/ipynbdiff/spec/testdata/text_png_output/expected_symbols.txt @@ -7,10 +7,8 @@ .cells.0.source.3 -.cells.0.outputs.0 +.cells.0.outputs .cells.0.outputs.0.data.text/plain.0 -.cells.0.outputs.1 - .cells.0.outputs.1.data.image/png