ipynbdiff 0.4.6 → 0.4.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +6 -7
- data/lib/ipynbdiff.rb +4 -4
- data/lib/output_transformer.rb +8 -0
- data/lib/transformer.rb +3 -2
- data/lib/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '09eee5bd0bb92f76cdabc67bd9b4ac1050756f952f9b5a3b91aaef984f860b87'
|
4
|
+
data.tar.gz: d89a1289023f1c44af159847a91f9139746a9c0846de169494f6438917754ca4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24b0b3fa46237a5b2fff8ef253b1dc2b90d5c8650c406097dd86e525e3e8bd5d89568b9280897d85c88444eb993ce3f490b15b0c741dd57dbea6e227dce2abea
|
7
|
+
data.tar.gz: a61bedd1f3b227f1b06dc97ed40ba19136fe4b157b9c0767887bbf22ee036bbbdfb21db3311c4b07a0e7ba39310f4cf8abd37dc8e7973c2035462478428bdd75
|
data/README.md
CHANGED
@@ -1,19 +1,18 @@
|
|
1
1
|
# IpynbDiff: Better diff for Jupyter Notebooks
|
2
2
|
|
3
|
-
This is a simple diff tool that cleans up
|
3
|
+
This is a simple diff tool that cleans up Jupyter notebooks, transforming each [notebook](example/1/from.ipynb)
|
4
4
|
into a [readable markdown file](example/1/from_html.md), keeping the output of cells, and running the
|
5
5
|
diff after. Markdowns are generated using an opinionated Jupyter to Markdown conversion. This means
|
6
6
|
that the entire file is readable on the diff.
|
7
7
|
|
8
8
|
The result are diffs that are much easier to read:
|
9
9
|
|
10
|
-
| Diff
|
11
|
-
|
|
12
|
-
| [
|
13
|
-
| ![](example/img/diff.png) |
|
10
|
+
| Diff | IpynbDiff |
|
11
|
+
| ----------------------------------- | ----------------------------------------------------- |
|
12
|
+
| [Diff text](example/diff.txt) | [IpynbDiff text](example/ipynbdiff_percent.txt) |
|
13
|
+
| ![Diff image](example/img/diff.png) | ![IpynbDiff image](example/img/ipynbdiff_percent.png) |
|
14
14
|
|
15
|
-
|
16
|
-
This started as a port of This is a port of [ipynbdiff](https://gitlab.com/gitlab-org/incubation-engineering/mlops/ipynbdiff),
|
15
|
+
This started as a port of [ipynbdiff](https://gitlab.com/gitlab-org/incubation-engineering/mlops/poc/ipynbdiff),
|
17
16
|
but now has extended functionality although not working as git driver.
|
18
17
|
|
19
18
|
## Usage
|
data/lib/ipynbdiff.rb
CHANGED
@@ -5,18 +5,18 @@ module IpynbDiff
|
|
5
5
|
require 'transformer'
|
6
6
|
require 'diff'
|
7
7
|
|
8
|
-
def self.diff(from, to, raise_if_invalid_nb: false, include_frontmatter: false, diffy_opts: {})
|
9
|
-
transformer = Transformer.new(include_frontmatter: include_frontmatter)
|
8
|
+
def self.diff(from, to, raise_if_invalid_nb: false, include_frontmatter: false, hide_images: false, diffy_opts: {})
|
9
|
+
transformer = Transformer.new(include_frontmatter: include_frontmatter, hide_images: hide_images)
|
10
10
|
|
11
11
|
Diff.new(transformer.transform(from), transformer.transform(to), diffy_opts)
|
12
12
|
rescue InvalidNotebookError
|
13
13
|
raise if raise_if_invalid_nb
|
14
14
|
end
|
15
15
|
|
16
|
-
def self.transform(notebook, raise_errors: false, include_frontmatter: true)
|
16
|
+
def self.transform(notebook, raise_errors: false, include_frontmatter: true, hide_images: false)
|
17
17
|
return unless notebook
|
18
18
|
|
19
|
-
Transformer.new(include_frontmatter: include_frontmatter).transform(notebook).as_text
|
19
|
+
Transformer.new(include_frontmatter: include_frontmatter, hide_images: hide_images).transform(notebook).as_text
|
20
20
|
rescue InvalidNotebookError
|
21
21
|
raise if raise_errors
|
22
22
|
end
|
data/lib/output_transformer.rb
CHANGED
@@ -6,12 +6,18 @@ module IpynbDiff
|
|
6
6
|
require 'symbolized_markdown_helper'
|
7
7
|
include SymbolizedMarkdownHelper
|
8
8
|
|
9
|
+
HIDDEN_IMAGE_OUTPUT = ' [Hidden Image Output]'
|
10
|
+
|
9
11
|
ORDERED_KEYS = {
|
10
12
|
'execute_result' => %w[image/png image/svg+xml image/jpeg text/markdown text/latex text/plain],
|
11
13
|
'display_data' => %w[image/png image/svg+xml image/jpeg text/markdown text/latex],
|
12
14
|
'stream' => %w[text]
|
13
15
|
}.freeze
|
14
16
|
|
17
|
+
def initialize(hide_images: false)
|
18
|
+
@hide_images = hide_images
|
19
|
+
end
|
20
|
+
|
15
21
|
def transform(output, symbol)
|
16
22
|
transformed = case (output_type = output['output_type'])
|
17
23
|
when 'error'
|
@@ -61,6 +67,8 @@ module IpynbDiff
|
|
61
67
|
end
|
62
68
|
|
63
69
|
def transform_image(image_type, image_content, symbol)
|
70
|
+
return _(nil, HIDDEN_IMAGE_OUTPUT) if @hide_images
|
71
|
+
|
64
72
|
lines = image_content.is_a?(Array) ? image_content : [image_content]
|
65
73
|
|
66
74
|
single_line = lines.map(&:strip).join.gsub(/\s+/, ' ')
|
data/lib/transformer.rb
CHANGED
@@ -17,9 +17,10 @@ module IpynbDiff
|
|
17
17
|
@include_frontmatter = true
|
18
18
|
@objects_to_ignore = ['application/javascript', 'application/vnd.holoviews_load.v0+json']
|
19
19
|
|
20
|
-
def initialize(include_frontmatter: true)
|
20
|
+
def initialize(include_frontmatter: true, hide_images: false)
|
21
21
|
@include_frontmatter = include_frontmatter
|
22
|
-
@
|
22
|
+
@hide_images = hide_images
|
23
|
+
@output_transformer = OutputTransformer.new(hide_images: hide_images)
|
23
24
|
end
|
24
25
|
|
25
26
|
def validate_notebook(notebook)
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ipynbdiff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eduardo Bonet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: diffy
|