pyDiffTools 0.1.40__tar.gz → 0.1.41__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.
- {pydifftools-0.1.40/pyDiffTools.egg-info → pydifftools-0.1.41}/PKG-INFO +1 -1
- {pydifftools-0.1.40 → pydifftools-0.1.41/pyDiffTools.egg-info}/PKG-INFO +1 -1
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/continuous.py +1 -1
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/wrap_sentences.py +56 -12
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pyproject.toml +1 -1
- {pydifftools-0.1.40 → pydifftools-0.1.41}/tests/test_wrap_check.py +45 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/LICENSE.md +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/MANIFEST.in +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/README.rst +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/_quarto.yml +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/__version__.txt +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/1a724af72b16f5a9e607e12b1c721645/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/1b28fc9daac9081847e5161b2c546f8a/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/231f64eee282fa225d1104935cf80a24/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/26e56f6b0ff54851a45145157f2f0dc4/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/311fabd7029ffd050d056e2f316eb50f/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/57da2021e5b156ac3adf01398201c723/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/62b24ea7da75011d92b0f8924faa208d/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/7f1b20d69d889514ab5d1cc92e3cb14f/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/86f74c8c54a87ff892d9b15dd714e8f0/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/88893b4234eac2945d9d6cb2e277f186/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/9a40046ada6f582ee34af00fbdbfb417/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/a1bf4d270d0641ff41faf1d7cce3439a/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/a3789f7d9585a781f2a1c60ce95ff10d/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/be46ecba858d39ad5f0c46902ddf1c02/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/d0cbc57a12f2ccce710a5afd04cc05e7/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/d3e12d320b14228f701231ae32ddd7dd/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/eb434f61555438d020a6970a5dbf9ee8/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/f6b0e73aa7fa029134665d4dde57e096/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/f719a6e4ff09873cb0ffb06ec9d232f9/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/executed/feeee244a7ce3d60e1a227eb604df823/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/global.db +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/example.qmd +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/example.tex +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/index.qmd +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/subproject1/.jupyter_cache/__version__.txt +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/subproject1/.jupyter_cache/executed/ca90e4df5f4f0583df6554156a68dc7f/base.ipynb +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/subproject1/.jupyter_cache/global.db +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/subproject1/end_vs_he_sketch.jpg +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/subproject1/independent.qmd +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/subproject1/index.qmd +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/subproject1/tasks.qmd +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/subproject1/test_include.qmd +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/subproject1/tryforerror.qmd +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/test_include.qmd +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pyDiffTools.egg-info/SOURCES.txt +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pyDiffTools.egg-info/dependency_links.txt +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pyDiffTools.egg-info/entry_points.txt +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pyDiffTools.egg-info/requires.txt +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pyDiffTools.egg-info/top_level.txt +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/__init__.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/bibliography.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/browser_lifecycle.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/check_numbers.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/citation_dialog.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/command_line.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/command_registry.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/comment_functions.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/comment_migration.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/comment_tags.lua +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/comment_tags_margin.lua +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/comment_tags_no_comments.lua +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/comment_toggle.js +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/comments.css +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/copy_files.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/diff-doc.js +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/doc_contents.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/flowchart/__init__.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/flowchart/comparison.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/flowchart/dot_to_yaml.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/flowchart/graph.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/flowchart/svg-pan-zoom.min.js +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/flowchart/watch_graph.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/flowchart/wgrph_view.js +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/forward_search.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/git_gd.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/git_gd_history.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/git_gd_image.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/git_gd_qt.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/html_comments.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/html_uncomments.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/log_example.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/match_spaces.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/notebook/__init__.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/notebook/display.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/notebook/fast_build.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/notebook/tex_to_qmd.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/onewordify.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/onewordify_undo.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/outline.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/rearrange_tex.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/searchacro.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/separate_comments.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/split_conflict.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/unseparate_comments.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/update_check.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/xml2xlsx.vbs +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/pydifftools/zotero.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/setup.cfg +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/tests/test_bibliography.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/tests/test_browser_lifecycle.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/tests/test_check_single_use.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/tests/test_command_line_help.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/tests/test_comment_migration.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/tests/test_continuous_shutdown.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/tests/test_forward_search.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/tests/test_git_gd_history.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/tests/test_git_gd_image.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/tests/test_git_gd_qt.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/tests/test_rrng.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/tests/test_tex_to_qmd.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/tests/test_update_check.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/tests/test_wrapping.py +0 -0
- {pydifftools-0.1.40 → pydifftools-0.1.41}/tests/test_zotero.py +0 -0
|
@@ -310,7 +310,7 @@ def run_pandoc(
|
|
|
310
310
|
|
|
311
311
|
automatic_fixes_were_made = False
|
|
312
312
|
while True:
|
|
313
|
-
report = autofix_markdown_file(filename,
|
|
313
|
+
report = autofix_markdown_file(filename, max_line_length=79)
|
|
314
314
|
automatic_fixes_were_made |= bool(report["fixes"])
|
|
315
315
|
if report["fixes"] or report["warnings"]:
|
|
316
316
|
user_says_fixed = show_markdown_fix_dialog(report)
|
|
@@ -1004,9 +1004,13 @@ def _iter_block_spans(blocks, wrapnumber, line_start=1):
|
|
|
1004
1004
|
|
|
1005
1005
|
|
|
1006
1006
|
def markdown_lint_issues_from_text(
|
|
1007
|
-
content, wrapnumber=45, punctuation_slop=20
|
|
1007
|
+
content, wrapnumber=45, punctuation_slop=20, max_line_length=None
|
|
1008
1008
|
):
|
|
1009
|
-
"""Return Markdown writing issues, including unfinished source spans.
|
|
1009
|
+
"""Return Markdown writing issues, including unfinished source spans.
|
|
1010
|
+
|
|
1011
|
+
With `max_line_length`, a prose line is only too long when it holds
|
|
1012
|
+
more than that many characters, instead of wr's greedy line choice.
|
|
1013
|
+
"""
|
|
1010
1014
|
def mask_comment(match):
|
|
1011
1015
|
return "".join("\n" if char == "\n" else " " for char in match[0])
|
|
1012
1016
|
|
|
@@ -1016,13 +1020,30 @@ def markdown_lint_issues_from_text(
|
|
|
1016
1020
|
# trailing spaces are reported separately below, and a double space
|
|
1017
1021
|
# (a hard line break) must not look like a sentence ending mid-line
|
|
1018
1022
|
prose_content = re.sub(r"[ \t]+$", "", prose_content, flags=re.M)
|
|
1019
|
-
issues = [
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
for issue in check_prose(span, width, punctuation_slop, line)
|
|
1025
|
-
|
|
1023
|
+
issues = []
|
|
1024
|
+
prose_lines = prose_content.splitlines()
|
|
1025
|
+
for line, width, span in _iter_block_spans(
|
|
1026
|
+
markdown_blocks(prose_content), wrapnumber
|
|
1027
|
+
):
|
|
1028
|
+
for issue in check_prose(span, width, punctuation_slop, line):
|
|
1029
|
+
if max_line_length is None or not issue[1].startswith(
|
|
1030
|
+
"line too long:"
|
|
1031
|
+
):
|
|
1032
|
+
issues.append(issue)
|
|
1033
|
+
if max_line_length is not None:
|
|
1034
|
+
# {{{ flag prose lines longer than the character limit
|
|
1035
|
+
for number in range(line, line + len(span.splitlines())):
|
|
1036
|
+
text = prose_lines[number - 1]
|
|
1037
|
+
# a single unbreakable word cannot be shortened
|
|
1038
|
+
if len(text) > max_line_length and len(
|
|
1039
|
+
WORD.findall(text)
|
|
1040
|
+
) > 1:
|
|
1041
|
+
issues.append((
|
|
1042
|
+
number,
|
|
1043
|
+
f"line over {max_line_length} characters: break "
|
|
1044
|
+
"it at a word boundary",
|
|
1045
|
+
))
|
|
1046
|
+
# }}}
|
|
1026
1047
|
issues.extend(
|
|
1027
1048
|
(issue["line"], issue["message"])
|
|
1028
1049
|
for issue in unclosed_markdown_spans(content)
|
|
@@ -1208,7 +1229,25 @@ def apply_markdown_issue_fix(content, line_number, message):
|
|
|
1208
1229
|
old_line[:-1],
|
|
1209
1230
|
"A line ended with a single stray space. I removed it.",
|
|
1210
1231
|
)
|
|
1211
|
-
if message.startswith("line
|
|
1232
|
+
if message.startswith("line over "):
|
|
1233
|
+
# {{{ break at the last word boundary that fits the limit
|
|
1234
|
+
limit = int(re.match(r"line over (\d+)", message)[1])
|
|
1235
|
+
gaps = [
|
|
1236
|
+
found.end()
|
|
1237
|
+
for found in WORD.finditer(old_line)
|
|
1238
|
+
if container.end() < found.end() < len(old_line.rstrip())
|
|
1239
|
+
]
|
|
1240
|
+
fitting = [gap for gap in gaps if gap <= limit]
|
|
1241
|
+
# when even the first word is too long, break right after it
|
|
1242
|
+
split_at = fitting[-1] if fitting else gaps[0]
|
|
1243
|
+
first = old_line[:split_at].rstrip()
|
|
1244
|
+
second = old_line[split_at:].lstrip(" \t")
|
|
1245
|
+
reason = (
|
|
1246
|
+
f"This line was longer than {limit} characters. "
|
|
1247
|
+
"I moved the last words onto a new line."
|
|
1248
|
+
)
|
|
1249
|
+
# }}}
|
|
1250
|
+
elif message.startswith("line too long:"):
|
|
1212
1251
|
match = re.search(r"after '(.+?)' \(before '(.+?)'\); move", message)
|
|
1213
1252
|
if match is None:
|
|
1214
1253
|
raise ValueError(
|
|
@@ -1259,7 +1298,9 @@ def apply_markdown_issue_fix(content, line_number, message):
|
|
|
1259
1298
|
return "".join(lines), old_line, after, reason
|
|
1260
1299
|
|
|
1261
1300
|
|
|
1262
|
-
def autofix_markdown_file(
|
|
1301
|
+
def autofix_markdown_file(
|
|
1302
|
+
filename, wrapnumber=55, punctuation_slop=20, max_line_length=None
|
|
1303
|
+
):
|
|
1263
1304
|
"""Apply safe source line breaks and report unfinished source spans."""
|
|
1264
1305
|
with open(filename, encoding="utf-8", newline="") as fp:
|
|
1265
1306
|
content = fp.read()
|
|
@@ -1268,7 +1309,10 @@ def autofix_markdown_file(filename, wrapnumber=55, punctuation_slop=20):
|
|
|
1268
1309
|
# issue at a time re-lints the whole file for every single fix.
|
|
1269
1310
|
for _ in range(100):
|
|
1270
1311
|
issues = markdown_lint_issues_from_text(
|
|
1271
|
-
content,
|
|
1312
|
+
content,
|
|
1313
|
+
wrapnumber=wrapnumber,
|
|
1314
|
+
punctuation_slop=punctuation_slop,
|
|
1315
|
+
max_line_length=max_line_length,
|
|
1272
1316
|
)
|
|
1273
1317
|
fixable = {}
|
|
1274
1318
|
for line_number, message in issues:
|
|
@@ -253,6 +253,51 @@ def test_autofix_fixes_every_line_in_one_pass_from_the_end(tmp_path):
|
|
|
253
253
|
assert markdown_lint_issues_from_text(fixed, wrapnumber=55) == []
|
|
254
254
|
|
|
255
255
|
|
|
256
|
+
def test_character_limit_ignores_lines_wr_would_break_sooner():
|
|
257
|
+
# from RM_ESR: 74 characters, which wr's width-55 rule would break
|
|
258
|
+
source = (
|
|
259
|
+
"temperatures not amenable to other methods, as in "
|
|
260
|
+
"[@Banerjee2009ESREviCoe].\n"
|
|
261
|
+
)
|
|
262
|
+
|
|
263
|
+
assert markdown_lint_issues_from_text(source, 55) != []
|
|
264
|
+
assert markdown_lint_issues_from_text(source, max_line_length=79) == []
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
@pytest.mark.parametrize("prefix", ["", "- ", "> "])
|
|
268
|
+
def test_character_limit_breaks_at_last_fitting_word(tmp_path, prefix):
|
|
269
|
+
# from RM_ESR: a sentence that grew past 79 characters
|
|
270
|
+
line = (
|
|
271
|
+
prefix + "This script determines the field positions and amplitudes "
|
|
272
|
+
"of the spectral lines for an entire variable-temperature "
|
|
273
|
+
"experiment.\n"
|
|
274
|
+
)
|
|
275
|
+
path = tmp_path / "source.md"
|
|
276
|
+
path.write_text(line)
|
|
277
|
+
|
|
278
|
+
issues = markdown_lint_issues_from_text(line, max_line_length=79)
|
|
279
|
+
report = autofix_markdown_file(path, max_line_length=79)
|
|
280
|
+
|
|
281
|
+
fixed = path.read_text()
|
|
282
|
+
assert [message.split(":")[0] for _, message in issues] == [
|
|
283
|
+
"line over 79 characters"
|
|
284
|
+
]
|
|
285
|
+
assert "79 characters" in report["fixes"][0]["reason"]
|
|
286
|
+
assert all(len(text) <= 79 for text in fixed.splitlines())
|
|
287
|
+
assert fixed.replace("\n> ", "\n").split() == line.split()
|
|
288
|
+
# the first line is filled as far as the limit allows
|
|
289
|
+
first = fixed.splitlines()[0]
|
|
290
|
+
next_word = line.split()[len(first.split())]
|
|
291
|
+
assert len(first) + 1 + len(next_word) > 79
|
|
292
|
+
assert markdown_lint_issues_from_text(fixed, max_line_length=79) == []
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
def test_character_limit_skips_a_single_unbreakable_word():
|
|
296
|
+
source = "https://example.org/" + "x" * 90 + "\n"
|
|
297
|
+
|
|
298
|
+
assert markdown_lint_issues_from_text(source, max_line_length=79) == []
|
|
299
|
+
|
|
300
|
+
|
|
256
301
|
def test_unclosed_math_is_reported_after_fifty_lines():
|
|
257
302
|
short_math = "$$\n" + ("x = y\n" * 48)
|
|
258
303
|
long_math = "$$\n" + ("x = y\n" * 49)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/__version__.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/.jupyter_cache/global.db
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/subproject1/end_vs_he_sketch.jpg
RENAMED
|
File without changes
|
{pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/subproject1/independent.qmd
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/subproject1/test_include.qmd
RENAMED
|
File without changes
|
{pydifftools-0.1.40 → pydifftools-0.1.41}/example_notebook/project1/subproject1/tryforerror.qmd
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|