pyDiffTools 0.1.50__tar.gz → 0.1.52__tar.gz

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.
Files changed (130) hide show
  1. {pydifftools-0.1.50 → pydifftools-0.1.52}/MANIFEST.in +1 -0
  2. {pydifftools-0.1.50/pyDiffTools.egg-info → pydifftools-0.1.52}/PKG-INFO +87 -4
  3. {pydifftools-0.1.50 → pydifftools-0.1.52}/README.rst +86 -3
  4. {pydifftools-0.1.50 → pydifftools-0.1.52/pyDiffTools.egg-info}/PKG-INFO +87 -4
  5. {pydifftools-0.1.50 → pydifftools-0.1.52}/pyDiffTools.egg-info/SOURCES.txt +6 -0
  6. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/command_line.py +3 -0
  7. pydifftools-0.1.52/pydifftools/comment_filter_history.json +145 -0
  8. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/continuous.py +343 -126
  9. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/flowchart/comparison.py +13 -1
  10. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/flowchart/graph.py +7 -4
  11. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/flowchart/source_jump.js +24 -9
  12. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/flowchart/watch_graph.py +258 -153
  13. pydifftools-0.1.52/pydifftools/flowchart/wgrph_view.js +445 -0
  14. pydifftools-0.1.52/pydifftools/git_aliases.py +30 -0
  15. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/git_gd.py +19 -13
  16. pydifftools-0.1.52/pydifftools/pdf_diff.py +579 -0
  17. pydifftools-0.1.52/pydifftools/source_jump.py +203 -0
  18. {pydifftools-0.1.50 → pydifftools-0.1.52}/pyproject.toml +2 -1
  19. pydifftools-0.1.52/tests/test_comment_filters.py +441 -0
  20. pydifftools-0.1.52/tests/test_git_pdf_diff.py +424 -0
  21. pydifftools-0.1.52/tests/test_pdf_diff.py +495 -0
  22. pydifftools-0.1.52/tests/test_source_jump.py +424 -0
  23. pydifftools-0.1.50/pydifftools/flowchart/wgrph_view.js +0 -235
  24. pydifftools-0.1.50/pydifftools/source_jump.py +0 -128
  25. pydifftools-0.1.50/tests/test_source_jump.py +0 -85
  26. {pydifftools-0.1.50 → pydifftools-0.1.52}/LICENSE.md +0 -0
  27. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/_quarto.yml +0 -0
  28. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/__version__.txt +0 -0
  29. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/1a724af72b16f5a9e607e12b1c721645/base.ipynb +0 -0
  30. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/1b28fc9daac9081847e5161b2c546f8a/base.ipynb +0 -0
  31. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/231f64eee282fa225d1104935cf80a24/base.ipynb +0 -0
  32. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/26e56f6b0ff54851a45145157f2f0dc4/base.ipynb +0 -0
  33. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/311fabd7029ffd050d056e2f316eb50f/base.ipynb +0 -0
  34. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/57da2021e5b156ac3adf01398201c723/base.ipynb +0 -0
  35. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/62b24ea7da75011d92b0f8924faa208d/base.ipynb +0 -0
  36. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/7f1b20d69d889514ab5d1cc92e3cb14f/base.ipynb +0 -0
  37. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/86f74c8c54a87ff892d9b15dd714e8f0/base.ipynb +0 -0
  38. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/88893b4234eac2945d9d6cb2e277f186/base.ipynb +0 -0
  39. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/9a40046ada6f582ee34af00fbdbfb417/base.ipynb +0 -0
  40. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/a1bf4d270d0641ff41faf1d7cce3439a/base.ipynb +0 -0
  41. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/a3789f7d9585a781f2a1c60ce95ff10d/base.ipynb +0 -0
  42. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/be46ecba858d39ad5f0c46902ddf1c02/base.ipynb +0 -0
  43. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/d0cbc57a12f2ccce710a5afd04cc05e7/base.ipynb +0 -0
  44. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/d3e12d320b14228f701231ae32ddd7dd/base.ipynb +0 -0
  45. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/eb434f61555438d020a6970a5dbf9ee8/base.ipynb +0 -0
  46. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/f6b0e73aa7fa029134665d4dde57e096/base.ipynb +0 -0
  47. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/f719a6e4ff09873cb0ffb06ec9d232f9/base.ipynb +0 -0
  48. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/executed/feeee244a7ce3d60e1a227eb604df823/base.ipynb +0 -0
  49. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/.jupyter_cache/global.db +0 -0
  50. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/example.qmd +0 -0
  51. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/example.tex +0 -0
  52. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/index.qmd +0 -0
  53. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/subproject1/.jupyter_cache/__version__.txt +0 -0
  54. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/subproject1/.jupyter_cache/executed/ca90e4df5f4f0583df6554156a68dc7f/base.ipynb +0 -0
  55. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/subproject1/.jupyter_cache/global.db +0 -0
  56. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/subproject1/end_vs_he_sketch.jpg +0 -0
  57. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/subproject1/independent.qmd +0 -0
  58. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/subproject1/index.qmd +0 -0
  59. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/subproject1/tasks.qmd +0 -0
  60. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/subproject1/test_include.qmd +0 -0
  61. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/subproject1/tryforerror.qmd +0 -0
  62. {pydifftools-0.1.50 → pydifftools-0.1.52}/example_notebook/project1/test_include.qmd +0 -0
  63. {pydifftools-0.1.50 → pydifftools-0.1.52}/pyDiffTools.egg-info/dependency_links.txt +0 -0
  64. {pydifftools-0.1.50 → pydifftools-0.1.52}/pyDiffTools.egg-info/entry_points.txt +0 -0
  65. {pydifftools-0.1.50 → pydifftools-0.1.52}/pyDiffTools.egg-info/requires.txt +0 -0
  66. {pydifftools-0.1.50 → pydifftools-0.1.52}/pyDiffTools.egg-info/top_level.txt +0 -0
  67. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/__init__.py +0 -0
  68. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/bibliography.py +0 -0
  69. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/browser_lifecycle.py +0 -0
  70. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/check_numbers.py +0 -0
  71. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/citation_dialog.py +0 -0
  72. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/command_registry.py +0 -0
  73. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/comment_functions.py +0 -0
  74. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/comment_migration.py +0 -0
  75. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/comment_tags.lua +0 -0
  76. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/comment_tags_margin.lua +0 -0
  77. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/comment_tags_no_comments.lua +0 -0
  78. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/comment_toggle.js +0 -0
  79. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/comments.css +0 -0
  80. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/comments_author_colors.css +0 -0
  81. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/copy_files.py +0 -0
  82. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/diff-doc.js +0 -0
  83. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/doc_contents.py +0 -0
  84. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/flowchart/__init__.py +0 -0
  85. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/flowchart/dot_to_yaml.py +0 -0
  86. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/flowchart/svg-pan-zoom.min.js +0 -0
  87. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/forward_search.py +0 -0
  88. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/git_gd_history.py +0 -0
  89. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/git_gd_image.py +0 -0
  90. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/git_gd_qt.py +0 -0
  91. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/html_comments.py +0 -0
  92. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/html_uncomments.py +0 -0
  93. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/line_alignment.py +0 -0
  94. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/log_example.py +0 -0
  95. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/match_spaces.py +0 -0
  96. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/notebook/__init__.py +0 -0
  97. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/notebook/display.py +0 -0
  98. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/notebook/fast_build.py +0 -0
  99. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/notebook/tex_to_qmd.py +0 -0
  100. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/onewordify.py +0 -0
  101. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/onewordify_undo.py +0 -0
  102. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/outline.py +0 -0
  103. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/rearrange_tex.py +0 -0
  104. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/searchacro.py +0 -0
  105. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/separate_comments.py +0 -0
  106. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/split_conflict.py +0 -0
  107. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/unseparate_comments.py +0 -0
  108. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/update_check.py +0 -0
  109. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/wrap_sentences.py +0 -0
  110. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/wrapping_options.py +0 -0
  111. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/xml2xlsx.vbs +0 -0
  112. {pydifftools-0.1.50 → pydifftools-0.1.52}/pydifftools/zotero.py +0 -0
  113. {pydifftools-0.1.50 → pydifftools-0.1.52}/setup.cfg +0 -0
  114. {pydifftools-0.1.50 → pydifftools-0.1.52}/tests/test_bibliography.py +0 -0
  115. {pydifftools-0.1.50 → pydifftools-0.1.52}/tests/test_browser_lifecycle.py +0 -0
  116. {pydifftools-0.1.50 → pydifftools-0.1.52}/tests/test_check_single_use.py +0 -0
  117. {pydifftools-0.1.50 → pydifftools-0.1.52}/tests/test_command_line_help.py +0 -0
  118. {pydifftools-0.1.50 → pydifftools-0.1.52}/tests/test_comment_migration.py +0 -0
  119. {pydifftools-0.1.50 → pydifftools-0.1.52}/tests/test_continuous_shutdown.py +0 -0
  120. {pydifftools-0.1.50 → pydifftools-0.1.52}/tests/test_forward_search.py +0 -0
  121. {pydifftools-0.1.50 → pydifftools-0.1.52}/tests/test_git_gd_history.py +0 -0
  122. {pydifftools-0.1.50 → pydifftools-0.1.52}/tests/test_git_gd_image.py +0 -0
  123. {pydifftools-0.1.50 → pydifftools-0.1.52}/tests/test_git_gd_qt.py +0 -0
  124. {pydifftools-0.1.50 → pydifftools-0.1.52}/tests/test_line_alignment.py +0 -0
  125. {pydifftools-0.1.50 → pydifftools-0.1.52}/tests/test_rrng.py +0 -0
  126. {pydifftools-0.1.50 → pydifftools-0.1.52}/tests/test_tex_to_qmd.py +0 -0
  127. {pydifftools-0.1.50 → pydifftools-0.1.52}/tests/test_update_check.py +0 -0
  128. {pydifftools-0.1.50 → pydifftools-0.1.52}/tests/test_wrap_check.py +0 -0
  129. {pydifftools-0.1.50 → pydifftools-0.1.52}/tests/test_wrapping.py +0 -0
  130. {pydifftools-0.1.50 → pydifftools-0.1.52}/tests/test_zotero.py +0 -0
@@ -8,6 +8,7 @@ include pydifftools/comments_author_colors.css
8
8
  include pydifftools/comment_tags.lua
9
9
  include pydifftools/comment_tags_margin.lua
10
10
  include pydifftools/comment_tags_no_comments.lua
11
+ include pydifftools/comment_filter_history.json
11
12
  include pydifftools/comment_toggle.js
12
13
  include pydifftools/flowchart/svg-pan-zoom.min.js
13
14
  include pydifftools/flowchart/wgrph_view.js
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyDiffTools
3
- Version: 0.1.50
3
+ Version: 0.1.52
4
4
  Summary: Diff tools
5
5
  Author: J M Franck
6
6
  License: Copyright (c) 2015, jmfranck
@@ -118,6 +118,27 @@ included are (listed in order of fun/utility):
118
118
  matching color. New authors choose a hue in a Qt picker; ``cpb`` adds their
119
119
  ``XXcolor`` field to the header.
120
120
 
121
+ ``cpb`` manages ``comment_tags.lua``, the comment stylesheets and
122
+ ``comment_toggle.js`` beside the Markdown source. A packaged SHA-256
123
+ catalog covers current and historical helpers from Git, including the
124
+ normal, margin and no-comment Lua variants. Known older files trigger an
125
+ update offer; unrecognized files are treated as possible local edits.
126
+ Updating removes generated helpers from Git tracking without deleting
127
+ the working copies, and adds them to ``.gitignore``. Keeping local edits
128
+ or Git tracking requires a second confirmation. An ignored
129
+ ``.pydifft-comment-filter.json`` records the approved file hashes; changing
130
+ any helper causes another prompt. Keeping known older versions applies
131
+ only to the current ``cpb`` session.
132
+
133
+ ``--no-comments`` selects the no-comment Lua variant. Running without
134
+ that flag when the on-disk Lua matches a current or historical no-comment
135
+ version asks whether to show comments. The selection uses the files'
136
+ contents, without active/inactive swapping or remembered mode settings.
137
+ Existing ``.inactive`` copies are migrated, preserving unique local
138
+ edits in ignored recovery files. Maintainers refresh the catalog with
139
+ ``python .github/scripts/update_comment_filter_history.py``; the release
140
+ workflow also refreshes it before building distributions.
141
+
121
142
  Declare a single local ``.bib`` file with ``bibliography: references.bib``
122
143
  in the Markdown YAML header; relative paths are resolved beside the
123
144
  Markdown file. Without that declaration, ``cpb`` uses a single adjacent
@@ -152,11 +173,25 @@ included are (listed in order of fun/utility):
152
173
  ``flowchart/watch_graph.py`` script so all of its functionality is now
153
174
  available through the main ``pydifft`` entry point.
154
175
  Add ``--diff-base HEAD`` (or a branch, tag, commit, or quoted reflog
155
- reference) to compare against that Git snapshot throughout the preview
156
- session. Additions are green, deletions are red and struck through, and
176
+ reference) to open a URL comparing against that Git snapshot.
177
+ Additions are green, deletions are red and struck through, and
157
178
  unchanged content is muted. Renames share one box; date, status, and
158
179
  dependency changes are annotated. Navigation, filters, and reloads retain
159
- the baseline, whose reference and commit appear below the graph.
180
+ the baseline through the ``diff-base`` URL parameter, whose reference and
181
+ commit appear below the graph. All view choices come from the URL:
182
+ ``t`` focuses a task and its ancestors, ``d=1``
183
+ orders dated tasks, and ``p=1`` excludes completed tasks. Command options
184
+ choose the initial URL. Removing ``diff-base`` restores normal rendering;
185
+ clearing the entire query shows the full plan, including completed and
186
+ undated tasks. Each embedded SVG and live refresh uses the same URL mode.
187
+ The search button beside Home and Zoom finds text in the visible graph,
188
+ highlights matches, and centers the containing task at your chosen zoom.
189
+ Tab or Enter advances to the next match; Shift+Tab or Shift+Enter goes
190
+ back. Esc closes search. Phrases can span wrapped lines and formatted
191
+ text. Resizing the window scales the current view with the viewport.
192
+ The ``1:1`` button displays fonts at their declared pixel sizes, including
193
+ correction for GraphViz's SVG scaling. Right-click a task and select
194
+ Jump to source to open its YAML definition in gvim.
160
195
  Comparison uses the same repository-relative YAML path; a file absent
161
196
  from the revision is treated as an empty plan. Historical file renames
162
197
  are not followed, and comparison markup is never written to YAML.
@@ -196,6 +231,10 @@ included are (listed in order of fun/utility):
196
231
  changes, an additional red/blue alpha-difference view is included.
197
232
  Run ``pydifft gd --install`` to add the matching ``git gd`` alias to
198
233
  your global git config.
234
+ ``pydifft gd --add-to-git`` offers the same installation, retaining the
235
+ exact command of an existing global ``gd`` alias. If none is configured,
236
+ it installs ``!f() { pydifft gd "$@"; }; f``. Alias installation is shared
237
+ with ``pd`` and ``tree``.
199
238
  - `pydifft qmdinit [directory]` scaffolds a new Quarto-style project using
200
239
  the bundled templates and example ``project1`` hierarchy, then downloads
201
240
  MathJax into ``_template/mathjax`` so the builder can run immediately.
@@ -231,6 +270,50 @@ included are (listed in order of fun/utility):
231
270
  this rule. The option is shared by ``cpb``, ``wmatch``, ``wr`` and
232
271
  ``wrchk``; ``--punctuation-slop`` remains an alias.
233
272
 
273
+ - ``pydifft pd OLD NEW [--no-compile]`` ("PDF diff") compares two ``.md``
274
+ files or two ``.tex`` files. It writes ``NEW_diff.tex`` beside the newer
275
+ input and, by default, compiles ``NEW_diff.pdf`` there with ``pdflatex``.
276
+ For example, ``pydifft pd old.md paper.md`` produces ``paper_diff.tex``
277
+ and ``paper_diff.pdf``. ``--no-compile`` retains the diff TeX without
278
+ running a compiler and supports TeX fragments as well as full documents.
279
+
280
+ Both formats use ``mylatexdiff-preamble.sty`` and the existing custom
281
+ ``latexdiff`` options and postprocessing. The preamble is searched for
282
+ in the current directory, beside NEW, then through ``kpsewhich``.
283
+ Tools must be available on the caller's PATH, including any TeX Live
284
+ directory configured in your shell. Markdown additionally requires
285
+ Pandoc and pandoc-crossref; conversion honors declared bibliography and
286
+ CSL metadata, renders citations and cross-references, and resolves local
287
+ images beside each source. Converted TeX intermediates are temporary;
288
+ the Markdown sources are unchanged.
289
+
290
+ Markdown code blocks retain Pandoc syntax highlighting. Changed lines
291
+ get a colored background and a ``+`` or ``-`` marker, with each line
292
+ processed independently so highlighted code remains valid TeX.
293
+ Prose keeps the custom preamble styling.
294
+
295
+ Python runs ``pdflatex`` beside NEW until references and the table of
296
+ contents settle (at most six passes), running ``bibtex`` or ``biber``
297
+ when required. ``latexmk`` and its configuration are not used.
298
+ Compilation artifacts and the diff TeX remain available if compilation
299
+ fails. Existing generated outputs can be replaced on a successful rerun.
300
+ The former ``git-latexdiffnocompile.sh`` is a compatibility wrapper for
301
+ ``pydifft pd --no-compile``.
302
+
303
+ Run ``pydifft pd --add-to-git`` to install the global ``git pd`` alias.
304
+ It accepts Git diff arguments: ``git pd 00ffaa -- filename.md`` compares
305
+ that revision with the working file; bare ``git pd`` compares unstaged
306
+ changes; ``git pd --cached`` compares staged changes; and
307
+ ``git pd OLD NEW -- filename.md`` compares two revisions. Ranges and
308
+ Git pathspecs work as usual, including from repository subdirectories.
309
+ Each changed Markdown or TeX file produces its own ``NAME_diff.tex`` and
310
+ PDF beside the document's working-tree path. ``git pd --no-compile``
311
+ generates only TeX. Other file types are skipped, and unchanged files
312
+ produce no output. Additions, deletions, and renames are supported;
313
+ unresolved merge conflicts must be resolved first. Historical document
314
+ snapshots use the current project's bibliography, images, and TeX
315
+ includes. The shared installer edits only the requested global Git alias.
316
+
234
317
  - `pydifft wd` ("word diff"): generate "track changes" word files starting from pandoc markdown in a git history. Assuming that you have copied diff-doc.js (copied + licensed from elsewhere) into your home directory, this will use pandoc to convert the markdown files to MS Word, then use the MS Word comparison tool to generate a document where all relevant changes are shown with "track changes."
235
318
 
236
319
  * by default, this uses the file `template.docx` in the current directory as a pandoc word template
@@ -63,6 +63,27 @@ included are (listed in order of fun/utility):
63
63
  matching color. New authors choose a hue in a Qt picker; ``cpb`` adds their
64
64
  ``XXcolor`` field to the header.
65
65
 
66
+ ``cpb`` manages ``comment_tags.lua``, the comment stylesheets and
67
+ ``comment_toggle.js`` beside the Markdown source. A packaged SHA-256
68
+ catalog covers current and historical helpers from Git, including the
69
+ normal, margin and no-comment Lua variants. Known older files trigger an
70
+ update offer; unrecognized files are treated as possible local edits.
71
+ Updating removes generated helpers from Git tracking without deleting
72
+ the working copies, and adds them to ``.gitignore``. Keeping local edits
73
+ or Git tracking requires a second confirmation. An ignored
74
+ ``.pydifft-comment-filter.json`` records the approved file hashes; changing
75
+ any helper causes another prompt. Keeping known older versions applies
76
+ only to the current ``cpb`` session.
77
+
78
+ ``--no-comments`` selects the no-comment Lua variant. Running without
79
+ that flag when the on-disk Lua matches a current or historical no-comment
80
+ version asks whether to show comments. The selection uses the files'
81
+ contents, without active/inactive swapping or remembered mode settings.
82
+ Existing ``.inactive`` copies are migrated, preserving unique local
83
+ edits in ignored recovery files. Maintainers refresh the catalog with
84
+ ``python .github/scripts/update_comment_filter_history.py``; the release
85
+ workflow also refreshes it before building distributions.
86
+
66
87
  Declare a single local ``.bib`` file with ``bibliography: references.bib``
67
88
  in the Markdown YAML header; relative paths are resolved beside the
68
89
  Markdown file. Without that declaration, ``cpb`` uses a single adjacent
@@ -97,11 +118,25 @@ included are (listed in order of fun/utility):
97
118
  ``flowchart/watch_graph.py`` script so all of its functionality is now
98
119
  available through the main ``pydifft`` entry point.
99
120
  Add ``--diff-base HEAD`` (or a branch, tag, commit, or quoted reflog
100
- reference) to compare against that Git snapshot throughout the preview
101
- session. Additions are green, deletions are red and struck through, and
121
+ reference) to open a URL comparing against that Git snapshot.
122
+ Additions are green, deletions are red and struck through, and
102
123
  unchanged content is muted. Renames share one box; date, status, and
103
124
  dependency changes are annotated. Navigation, filters, and reloads retain
104
- the baseline, whose reference and commit appear below the graph.
125
+ the baseline through the ``diff-base`` URL parameter, whose reference and
126
+ commit appear below the graph. All view choices come from the URL:
127
+ ``t`` focuses a task and its ancestors, ``d=1``
128
+ orders dated tasks, and ``p=1`` excludes completed tasks. Command options
129
+ choose the initial URL. Removing ``diff-base`` restores normal rendering;
130
+ clearing the entire query shows the full plan, including completed and
131
+ undated tasks. Each embedded SVG and live refresh uses the same URL mode.
132
+ The search button beside Home and Zoom finds text in the visible graph,
133
+ highlights matches, and centers the containing task at your chosen zoom.
134
+ Tab or Enter advances to the next match; Shift+Tab or Shift+Enter goes
135
+ back. Esc closes search. Phrases can span wrapped lines and formatted
136
+ text. Resizing the window scales the current view with the viewport.
137
+ The ``1:1`` button displays fonts at their declared pixel sizes, including
138
+ correction for GraphViz's SVG scaling. Right-click a task and select
139
+ Jump to source to open its YAML definition in gvim.
105
140
  Comparison uses the same repository-relative YAML path; a file absent
106
141
  from the revision is treated as an empty plan. Historical file renames
107
142
  are not followed, and comparison markup is never written to YAML.
@@ -141,6 +176,10 @@ included are (listed in order of fun/utility):
141
176
  changes, an additional red/blue alpha-difference view is included.
142
177
  Run ``pydifft gd --install`` to add the matching ``git gd`` alias to
143
178
  your global git config.
179
+ ``pydifft gd --add-to-git`` offers the same installation, retaining the
180
+ exact command of an existing global ``gd`` alias. If none is configured,
181
+ it installs ``!f() { pydifft gd "$@"; }; f``. Alias installation is shared
182
+ with ``pd`` and ``tree``.
144
183
  - `pydifft qmdinit [directory]` scaffolds a new Quarto-style project using
145
184
  the bundled templates and example ``project1`` hierarchy, then downloads
146
185
  MathJax into ``_template/mathjax`` so the builder can run immediately.
@@ -176,6 +215,50 @@ included are (listed in order of fun/utility):
176
215
  this rule. The option is shared by ``cpb``, ``wmatch``, ``wr`` and
177
216
  ``wrchk``; ``--punctuation-slop`` remains an alias.
178
217
 
218
+ - ``pydifft pd OLD NEW [--no-compile]`` ("PDF diff") compares two ``.md``
219
+ files or two ``.tex`` files. It writes ``NEW_diff.tex`` beside the newer
220
+ input and, by default, compiles ``NEW_diff.pdf`` there with ``pdflatex``.
221
+ For example, ``pydifft pd old.md paper.md`` produces ``paper_diff.tex``
222
+ and ``paper_diff.pdf``. ``--no-compile`` retains the diff TeX without
223
+ running a compiler and supports TeX fragments as well as full documents.
224
+
225
+ Both formats use ``mylatexdiff-preamble.sty`` and the existing custom
226
+ ``latexdiff`` options and postprocessing. The preamble is searched for
227
+ in the current directory, beside NEW, then through ``kpsewhich``.
228
+ Tools must be available on the caller's PATH, including any TeX Live
229
+ directory configured in your shell. Markdown additionally requires
230
+ Pandoc and pandoc-crossref; conversion honors declared bibliography and
231
+ CSL metadata, renders citations and cross-references, and resolves local
232
+ images beside each source. Converted TeX intermediates are temporary;
233
+ the Markdown sources are unchanged.
234
+
235
+ Markdown code blocks retain Pandoc syntax highlighting. Changed lines
236
+ get a colored background and a ``+`` or ``-`` marker, with each line
237
+ processed independently so highlighted code remains valid TeX.
238
+ Prose keeps the custom preamble styling.
239
+
240
+ Python runs ``pdflatex`` beside NEW until references and the table of
241
+ contents settle (at most six passes), running ``bibtex`` or ``biber``
242
+ when required. ``latexmk`` and its configuration are not used.
243
+ Compilation artifacts and the diff TeX remain available if compilation
244
+ fails. Existing generated outputs can be replaced on a successful rerun.
245
+ The former ``git-latexdiffnocompile.sh`` is a compatibility wrapper for
246
+ ``pydifft pd --no-compile``.
247
+
248
+ Run ``pydifft pd --add-to-git`` to install the global ``git pd`` alias.
249
+ It accepts Git diff arguments: ``git pd 00ffaa -- filename.md`` compares
250
+ that revision with the working file; bare ``git pd`` compares unstaged
251
+ changes; ``git pd --cached`` compares staged changes; and
252
+ ``git pd OLD NEW -- filename.md`` compares two revisions. Ranges and
253
+ Git pathspecs work as usual, including from repository subdirectories.
254
+ Each changed Markdown or TeX file produces its own ``NAME_diff.tex`` and
255
+ PDF beside the document's working-tree path. ``git pd --no-compile``
256
+ generates only TeX. Other file types are skipped, and unchanged files
257
+ produce no output. Additions, deletions, and renames are supported;
258
+ unresolved merge conflicts must be resolved first. Historical document
259
+ snapshots use the current project's bibliography, images, and TeX
260
+ includes. The shared installer edits only the requested global Git alias.
261
+
179
262
  - `pydifft wd` ("word diff"): generate "track changes" word files starting from pandoc markdown in a git history. Assuming that you have copied diff-doc.js (copied + licensed from elsewhere) into your home directory, this will use pandoc to convert the markdown files to MS Word, then use the MS Word comparison tool to generate a document where all relevant changes are shown with "track changes."
180
263
 
181
264
  * by default, this uses the file `template.docx` in the current directory as a pandoc word template
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyDiffTools
3
- Version: 0.1.50
3
+ Version: 0.1.52
4
4
  Summary: Diff tools
5
5
  Author: J M Franck
6
6
  License: Copyright (c) 2015, jmfranck
@@ -118,6 +118,27 @@ included are (listed in order of fun/utility):
118
118
  matching color. New authors choose a hue in a Qt picker; ``cpb`` adds their
119
119
  ``XXcolor`` field to the header.
120
120
 
121
+ ``cpb`` manages ``comment_tags.lua``, the comment stylesheets and
122
+ ``comment_toggle.js`` beside the Markdown source. A packaged SHA-256
123
+ catalog covers current and historical helpers from Git, including the
124
+ normal, margin and no-comment Lua variants. Known older files trigger an
125
+ update offer; unrecognized files are treated as possible local edits.
126
+ Updating removes generated helpers from Git tracking without deleting
127
+ the working copies, and adds them to ``.gitignore``. Keeping local edits
128
+ or Git tracking requires a second confirmation. An ignored
129
+ ``.pydifft-comment-filter.json`` records the approved file hashes; changing
130
+ any helper causes another prompt. Keeping known older versions applies
131
+ only to the current ``cpb`` session.
132
+
133
+ ``--no-comments`` selects the no-comment Lua variant. Running without
134
+ that flag when the on-disk Lua matches a current or historical no-comment
135
+ version asks whether to show comments. The selection uses the files'
136
+ contents, without active/inactive swapping or remembered mode settings.
137
+ Existing ``.inactive`` copies are migrated, preserving unique local
138
+ edits in ignored recovery files. Maintainers refresh the catalog with
139
+ ``python .github/scripts/update_comment_filter_history.py``; the release
140
+ workflow also refreshes it before building distributions.
141
+
121
142
  Declare a single local ``.bib`` file with ``bibliography: references.bib``
122
143
  in the Markdown YAML header; relative paths are resolved beside the
123
144
  Markdown file. Without that declaration, ``cpb`` uses a single adjacent
@@ -152,11 +173,25 @@ included are (listed in order of fun/utility):
152
173
  ``flowchart/watch_graph.py`` script so all of its functionality is now
153
174
  available through the main ``pydifft`` entry point.
154
175
  Add ``--diff-base HEAD`` (or a branch, tag, commit, or quoted reflog
155
- reference) to compare against that Git snapshot throughout the preview
156
- session. Additions are green, deletions are red and struck through, and
176
+ reference) to open a URL comparing against that Git snapshot.
177
+ Additions are green, deletions are red and struck through, and
157
178
  unchanged content is muted. Renames share one box; date, status, and
158
179
  dependency changes are annotated. Navigation, filters, and reloads retain
159
- the baseline, whose reference and commit appear below the graph.
180
+ the baseline through the ``diff-base`` URL parameter, whose reference and
181
+ commit appear below the graph. All view choices come from the URL:
182
+ ``t`` focuses a task and its ancestors, ``d=1``
183
+ orders dated tasks, and ``p=1`` excludes completed tasks. Command options
184
+ choose the initial URL. Removing ``diff-base`` restores normal rendering;
185
+ clearing the entire query shows the full plan, including completed and
186
+ undated tasks. Each embedded SVG and live refresh uses the same URL mode.
187
+ The search button beside Home and Zoom finds text in the visible graph,
188
+ highlights matches, and centers the containing task at your chosen zoom.
189
+ Tab or Enter advances to the next match; Shift+Tab or Shift+Enter goes
190
+ back. Esc closes search. Phrases can span wrapped lines and formatted
191
+ text. Resizing the window scales the current view with the viewport.
192
+ The ``1:1`` button displays fonts at their declared pixel sizes, including
193
+ correction for GraphViz's SVG scaling. Right-click a task and select
194
+ Jump to source to open its YAML definition in gvim.
160
195
  Comparison uses the same repository-relative YAML path; a file absent
161
196
  from the revision is treated as an empty plan. Historical file renames
162
197
  are not followed, and comparison markup is never written to YAML.
@@ -196,6 +231,10 @@ included are (listed in order of fun/utility):
196
231
  changes, an additional red/blue alpha-difference view is included.
197
232
  Run ``pydifft gd --install`` to add the matching ``git gd`` alias to
198
233
  your global git config.
234
+ ``pydifft gd --add-to-git`` offers the same installation, retaining the
235
+ exact command of an existing global ``gd`` alias. If none is configured,
236
+ it installs ``!f() { pydifft gd "$@"; }; f``. Alias installation is shared
237
+ with ``pd`` and ``tree``.
199
238
  - `pydifft qmdinit [directory]` scaffolds a new Quarto-style project using
200
239
  the bundled templates and example ``project1`` hierarchy, then downloads
201
240
  MathJax into ``_template/mathjax`` so the builder can run immediately.
@@ -231,6 +270,50 @@ included are (listed in order of fun/utility):
231
270
  this rule. The option is shared by ``cpb``, ``wmatch``, ``wr`` and
232
271
  ``wrchk``; ``--punctuation-slop`` remains an alias.
233
272
 
273
+ - ``pydifft pd OLD NEW [--no-compile]`` ("PDF diff") compares two ``.md``
274
+ files or two ``.tex`` files. It writes ``NEW_diff.tex`` beside the newer
275
+ input and, by default, compiles ``NEW_diff.pdf`` there with ``pdflatex``.
276
+ For example, ``pydifft pd old.md paper.md`` produces ``paper_diff.tex``
277
+ and ``paper_diff.pdf``. ``--no-compile`` retains the diff TeX without
278
+ running a compiler and supports TeX fragments as well as full documents.
279
+
280
+ Both formats use ``mylatexdiff-preamble.sty`` and the existing custom
281
+ ``latexdiff`` options and postprocessing. The preamble is searched for
282
+ in the current directory, beside NEW, then through ``kpsewhich``.
283
+ Tools must be available on the caller's PATH, including any TeX Live
284
+ directory configured in your shell. Markdown additionally requires
285
+ Pandoc and pandoc-crossref; conversion honors declared bibliography and
286
+ CSL metadata, renders citations and cross-references, and resolves local
287
+ images beside each source. Converted TeX intermediates are temporary;
288
+ the Markdown sources are unchanged.
289
+
290
+ Markdown code blocks retain Pandoc syntax highlighting. Changed lines
291
+ get a colored background and a ``+`` or ``-`` marker, with each line
292
+ processed independently so highlighted code remains valid TeX.
293
+ Prose keeps the custom preamble styling.
294
+
295
+ Python runs ``pdflatex`` beside NEW until references and the table of
296
+ contents settle (at most six passes), running ``bibtex`` or ``biber``
297
+ when required. ``latexmk`` and its configuration are not used.
298
+ Compilation artifacts and the diff TeX remain available if compilation
299
+ fails. Existing generated outputs can be replaced on a successful rerun.
300
+ The former ``git-latexdiffnocompile.sh`` is a compatibility wrapper for
301
+ ``pydifft pd --no-compile``.
302
+
303
+ Run ``pydifft pd --add-to-git`` to install the global ``git pd`` alias.
304
+ It accepts Git diff arguments: ``git pd 00ffaa -- filename.md`` compares
305
+ that revision with the working file; bare ``git pd`` compares unstaged
306
+ changes; ``git pd --cached`` compares staged changes; and
307
+ ``git pd OLD NEW -- filename.md`` compares two revisions. Ranges and
308
+ Git pathspecs work as usual, including from repository subdirectories.
309
+ Each changed Markdown or TeX file produces its own ``NAME_diff.tex`` and
310
+ PDF beside the document's working-tree path. ``git pd --no-compile``
311
+ generates only TeX. Other file types are skipped, and unchanged files
312
+ produce no output. Additions, deletions, and renames are supported;
313
+ unresolved merge conflicts must be resolved first. Historical document
314
+ snapshots use the current project's bibliography, images, and TeX
315
+ includes. The shared installer edits only the requested global Git alias.
316
+
234
317
  - `pydifft wd` ("word diff"): generate "track changes" word files starting from pandoc markdown in a git history. Assuming that you have copied diff-doc.js (copied + licensed from elsewhere) into your home directory, this will use pandoc to convert the markdown files to MS Word, then use the MS Word comparison tool to generate a document where all relevant changes are shown with "track changes."
235
318
 
236
319
  * by default, this uses the file `template.docx` in the current directory as a pandoc word template
@@ -51,6 +51,7 @@ pydifftools/check_numbers.py
51
51
  pydifftools/citation_dialog.py
52
52
  pydifftools/command_line.py
53
53
  pydifftools/command_registry.py
54
+ pydifftools/comment_filter_history.json
54
55
  pydifftools/comment_functions.py
55
56
  pydifftools/comment_migration.py
56
57
  pydifftools/comment_tags.lua
@@ -64,6 +65,7 @@ pydifftools/copy_files.py
64
65
  pydifftools/diff-doc.js
65
66
  pydifftools/doc_contents.py
66
67
  pydifftools/forward_search.py
68
+ pydifftools/git_aliases.py
67
69
  pydifftools/git_gd.py
68
70
  pydifftools/git_gd_history.py
69
71
  pydifftools/git_gd_image.py
@@ -76,6 +78,7 @@ pydifftools/match_spaces.py
76
78
  pydifftools/onewordify.py
77
79
  pydifftools/onewordify_undo.py
78
80
  pydifftools/outline.py
81
+ pydifftools/pdf_diff.py
79
82
  pydifftools/rearrange_tex.py
80
83
  pydifftools/searchacro.py
81
84
  pydifftools/separate_comments.py
@@ -103,13 +106,16 @@ tests/test_bibliography.py
103
106
  tests/test_browser_lifecycle.py
104
107
  tests/test_check_single_use.py
105
108
  tests/test_command_line_help.py
109
+ tests/test_comment_filters.py
106
110
  tests/test_comment_migration.py
107
111
  tests/test_continuous_shutdown.py
108
112
  tests/test_forward_search.py
109
113
  tests/test_git_gd_history.py
110
114
  tests/test_git_gd_image.py
111
115
  tests/test_git_gd_qt.py
116
+ tests/test_git_pdf_diff.py
112
117
  tests/test_line_alignment.py
118
+ tests/test_pdf_diff.py
113
119
  tests/test_rrng.py
114
120
  tests/test_source_jump.py
115
121
  tests/test_tex_to_qmd.py
@@ -36,6 +36,7 @@ from .copy_files import copy_image_files
36
36
  from .searchacro import replace_acros
37
37
  from .rearrange_tex import run as rearrange_tex_run
38
38
  from .git_gd import gd # registers git difftool review command
39
+ from .pdf_diff import pd, git_pd # registers PDF diff command
39
40
  from .flowchart.watch_graph import wgrph
40
41
  from .flowchart.graph import load_graph_yaml
41
42
  from .notebook.tex_to_qmd import tex2qmd
@@ -933,6 +934,8 @@ def build_parser():
933
934
  def main(argv=None):
934
935
  if argv is None:
935
936
  argv = sys.argv[1:]
937
+ if argv[:2] == ["pd", "--git"]:
938
+ return git_pd(argv[2:])
936
939
  if argv and argv[0] in ("--ver", "--version"):
937
940
  build_parser().parse_args(argv)
938
941
  return
@@ -0,0 +1,145 @@
1
+ {
2
+ "comment_tags.lua": {
3
+ "2a0ffaf315c28059d7e8fb67388dd38275f78eb911b640dfb567763bbf63e089": {
4
+ "commit": "73d51e080667e0b4cf8a13146a615e2866207e04",
5
+ "mode": "margin",
6
+ "path": "pydifftools/comment_tags_margin.lua"
7
+ },
8
+ "2c16914eb312e46715316ec896c0952483c0f70c519ef3a3d022f28b3047ca54": {
9
+ "commit": "016080494be7e90d49f94b0f0aeb88c47dc9241a",
10
+ "mode": "margin",
11
+ "path": "pydifftools/comment_tags_margin.lua"
12
+ },
13
+ "380c20c350751b7e9a107b8855d4f3c1c022daf410dadd1842cffbb5d6b20cd6": {
14
+ "commit": "697bbdd00d3215c46216669f419014f0d41da526",
15
+ "mode": "margin",
16
+ "path": "pydifftools/comment_tags_margin.lua"
17
+ },
18
+ "54ab119b5a0868f5349bdf224ec134be59c81b925e7d35b6a1d9173eca2671fa": {
19
+ "commit": "308647bb0cd7dc153c945703862503eea6a3da9b",
20
+ "mode": "margin",
21
+ "path": "pydifftools/comment_tags_margin.lua"
22
+ },
23
+ "5a6a27bfb21a0b674adb10b7dcc5b9bf1b34152256391ed77b354dc666e944cf": {
24
+ "commit": "697bbdd00d3215c46216669f419014f0d41da526",
25
+ "mode": "none",
26
+ "path": "pydifftools/comment_tags_no_comments.lua"
27
+ },
28
+ "5ffa678cca561170bdaa83ae0d06d6197f3781cb4be01033a5d6c03c4dbcedc3": {
29
+ "commit": "268d61dac16384984a395bef0067100ac763cb3d",
30
+ "mode": "none",
31
+ "path": "pydifftools/comment_tags_no_comments.lua"
32
+ },
33
+ "a994853143e845328e43c642b9445202b115ec07762fe85d30763006d71f7389": {
34
+ "commit": "308647bb0cd7dc153c945703862503eea6a3da9b",
35
+ "mode": "default",
36
+ "path": "pydifftools/comment_tags.lua"
37
+ },
38
+ "aecfb5915c837c724b0d9a7c9404166103da912fe2cb99834b48073b8d637ca1": {
39
+ "commit": "e2eb0fba6cb03884889a257f776a3f64c3a3185e",
40
+ "mode": "default",
41
+ "path": "pydifftools/comment_tags.lua"
42
+ },
43
+ "ba2f1e784187a3bb8dc110d1065b23bc3dd9f5993db988542009c105ee3fb925": {
44
+ "commit": "016080494be7e90d49f94b0f0aeb88c47dc9241a",
45
+ "mode": "default",
46
+ "path": "pydifftools/comment_tags.lua"
47
+ },
48
+ "d0f1a6f876382334184f3b0a1341159c827845efcccfb6d5cd06a70207660e1a": {
49
+ "commit": "697bbdd00d3215c46216669f419014f0d41da526",
50
+ "mode": "default",
51
+ "path": "pydifftools/comment_tags.lua"
52
+ },
53
+ "deea0b807c92875c8a450875ac10a7df841ffa76350f320140ee1dcb5c1445fb": {
54
+ "commit": "73d51e080667e0b4cf8a13146a615e2866207e04",
55
+ "mode": "default",
56
+ "path": "pydifftools/comment_tags.lua"
57
+ },
58
+ "fcebc0022c806cec34b467086116428cc1f48e5b23225bf5a9561f273cd7218b": {
59
+ "commit": "308647bb0cd7dc153c945703862503eea6a3da9b",
60
+ "mode": "none",
61
+ "path": "pydifftools/comment_tags_no_comments.lua"
62
+ },
63
+ "ffc14453e371f701d2a49e9a0cc29746b589372d0066c42f0c5c18f8953286f7": {
64
+ "commit": "7d2847f50b5f261c4128a89d858391f8a8c76f0c",
65
+ "mode": "default",
66
+ "path": "pydifftools/comment_tags.lua"
67
+ }
68
+ },
69
+ "comment_toggle.js": {
70
+ "1f19e86fa7bc272b15dfd4feae155ae2cb328d28fe38476306d8200329126de4": {
71
+ "commit": "60e573de785f3ad10043e6ccc7fe14b4c0292019",
72
+ "mode": "shared",
73
+ "path": "pydifftools/comment_toggle.js"
74
+ },
75
+ "34d3a67a4f79aa0711c434a8d315aa74fcb5aad95b6cbc23ba19c4a29e9dd66f": {
76
+ "commit": "9a4a907da65467eecc1595035b215e34be742441",
77
+ "mode": "shared",
78
+ "path": "pydifftools/comment_toggle.js"
79
+ },
80
+ "617107e0c5c58b1b1b15b8a2485860eb1345536974ba76caa625fa2b809516ce": {
81
+ "commit": "7e84fc03bb8daf6e1081a3ec3f93ceb934088687",
82
+ "mode": "shared",
83
+ "path": "pydifftools/comment_toggle.js"
84
+ },
85
+ "c9129af481db475469341bb2a8b6b2ba3739bddd8dc1f8601b43168519d51172": {
86
+ "commit": "e2eb0fba6cb03884889a257f776a3f64c3a3185e",
87
+ "mode": "shared",
88
+ "path": "pydifftools/comment_toggle.js"
89
+ },
90
+ "d3b405f1158b80455c998b375939e7daecbb0b7f33c8406823bc350b20096ecd": {
91
+ "commit": "016080494be7e90d49f94b0f0aeb88c47dc9241a",
92
+ "mode": "shared",
93
+ "path": "pydifftools/comment_toggle.js"
94
+ }
95
+ },
96
+ "comments.css": {
97
+ "0ad0f6ce759b071bf3e5568fb97f327db7678cbb203c2b93550b0ca32f1dd44c": {
98
+ "commit": "7e84fc03bb8daf6e1081a3ec3f93ceb934088687",
99
+ "mode": "shared",
100
+ "path": "pydifftools/comments.css"
101
+ },
102
+ "1ca5a5d10356bdf194fc05f0eab2aa4f1741d0e6d50418caa15b66f9da28c5ec": {
103
+ "commit": "8245633092781d39638f6cbf90c91090a7cccd8f",
104
+ "mode": "shared",
105
+ "path": "pydifftools/comments.css"
106
+ },
107
+ "998852f3328d0c2fb717b441e8804baf9047c1fbe5377a237e162465c37d13e3": {
108
+ "commit": "60e573de785f3ad10043e6ccc7fe14b4c0292019",
109
+ "mode": "shared",
110
+ "path": "pydifftools/comments.css"
111
+ },
112
+ "a1bb5ffd9d5a8d1a1867db36fe179c6f1070378c3719b4c68e3eebfda07a4805": {
113
+ "commit": "e2eb0fba6cb03884889a257f776a3f64c3a3185e",
114
+ "mode": "shared",
115
+ "path": "pydifftools/comments.css"
116
+ },
117
+ "a9a0686877e33d4fd640a8f513af7ff750ace05387e95e3a7fb292a94585e771": {
118
+ "commit": "73d51e080667e0b4cf8a13146a615e2866207e04",
119
+ "mode": "shared",
120
+ "path": "pydifftools/comments.css"
121
+ },
122
+ "ac1c93065a777c4f185293be2baac9011ad5d5014f67e4947b21aa353d6609cc": {
123
+ "commit": "9a4a907da65467eecc1595035b215e34be742441",
124
+ "mode": "shared",
125
+ "path": "pydifftools/comments.css"
126
+ },
127
+ "d730a992c3b6570e0a1c26b2fe351338a1b0ac7d6a8e17ace0a5292b92ba6ff5": {
128
+ "commit": "518379efe37292e5d3d9b5dfa687c0842b5e9c1d",
129
+ "mode": "shared",
130
+ "path": "pydifftools/comments.css"
131
+ },
132
+ "ea39254a85879468c2c47cf30267602afff0328ba9ae3acbe236af6501061502": {
133
+ "commit": "016080494be7e90d49f94b0f0aeb88c47dc9241a",
134
+ "mode": "shared",
135
+ "path": "pydifftools/comments.css"
136
+ }
137
+ },
138
+ "comments_author_colors.css": {
139
+ "a5e409852c32f3e80482b111c96bd6d87b37a0e3750a33d5f4f499bd6af849fe": {
140
+ "commit": "697bbdd00d3215c46216669f419014f0d41da526",
141
+ "mode": "shared",
142
+ "path": "pydifftools/comments_author_colors.css"
143
+ }
144
+ }
145
+ }