ipynbdiff 0.4.6 → 0.4.7
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/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
|
-
|  |
|
10
|
+
| Diff | IpynbDiff |
|
11
|
+
| ----------------------------------- | ----------------------------------------------------- |
|
12
|
+
| [Diff text](example/diff.txt) | [IpynbDiff text](example/ipynbdiff_percent.txt) |
|
13
|
+
|  |  |
|
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
|