mkdocs2confluence 0.6.4__tar.gz → 0.6.6__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 (66) hide show
  1. {mkdocs2confluence-0.6.4/src/mkdocs2confluence.egg-info → mkdocs2confluence-0.6.6}/PKG-INFO +1 -1
  2. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/pyproject.toml +1 -1
  3. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6/src/mkdocs2confluence.egg-info}/PKG-INFO +1 -1
  4. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/emitter/xhtml.py +8 -4
  5. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/loader/config.py +7 -2
  6. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_publish_pipeline.py +1 -1
  7. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/LICENSE +0 -0
  8. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/README.md +0 -0
  9. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/setup.cfg +0 -0
  10. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs2confluence.egg-info/SOURCES.txt +0 -0
  11. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs2confluence.egg-info/dependency_links.txt +0 -0
  12. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs2confluence.egg-info/entry_points.txt +0 -0
  13. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs2confluence.egg-info/requires.txt +0 -0
  14. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs2confluence.egg-info/top_level.txt +0 -0
  15. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/__init__.py +0 -0
  16. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/cli.py +0 -0
  17. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/emitter/__init__.py +0 -0
  18. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/ir/__init__.py +0 -0
  19. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/ir/document.py +0 -0
  20. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/ir/nodes.py +0 -0
  21. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/ir/treeutil.py +0 -0
  22. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/loader/__init__.py +0 -0
  23. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/loader/extra_css.py +0 -0
  24. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/loader/nav.py +0 -0
  25. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/loader/page.py +0 -0
  26. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/parser/__init__.py +0 -0
  27. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/parser/markdown.py +0 -0
  28. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/preprocess/__init__.py +0 -0
  29. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/preprocess/abbrevs.py +0 -0
  30. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/preprocess/fence.py +0 -0
  31. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/preprocess/frontmatter.py +0 -0
  32. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/preprocess/icons.py +0 -0
  33. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/preprocess/includes.py +0 -0
  34. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/preprocess/linkdefs.py +0 -0
  35. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/preview/__init__.py +0 -0
  36. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/preview/render.py +0 -0
  37. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/publisher/__init__.py +0 -0
  38. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/publisher/client.py +0 -0
  39. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/publisher/pipeline.py +0 -0
  40. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/transforms/__init__.py +0 -0
  41. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/transforms/abbrevs.py +0 -0
  42. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/transforms/assets.py +0 -0
  43. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/transforms/editlink.py +0 -0
  44. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/transforms/images.py +0 -0
  45. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/transforms/internallinks.py +0 -0
  46. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/src/mkdocs_to_confluence/transforms/mermaid.py +0 -0
  47. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_abbrevs.py +0 -0
  48. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_cli.py +0 -0
  49. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_editlink.py +0 -0
  50. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_emitter.py +0 -0
  51. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_extra_css.py +0 -0
  52. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_frontmatter.py +0 -0
  53. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_icons.py +0 -0
  54. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_images.py +0 -0
  55. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_internallinks.py +0 -0
  56. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_ir.py +0 -0
  57. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_linkdefs.py +0 -0
  58. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_loader.py +0 -0
  59. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_mermaid.py +0 -0
  60. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_page_loader.py +0 -0
  61. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_parser.py +0 -0
  62. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_preprocess.py +0 -0
  63. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_preview.py +0 -0
  64. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_publish_client.py +0 -0
  65. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_publish_config.py +0 -0
  66. {mkdocs2confluence-0.6.4 → mkdocs2confluence-0.6.6}/tests/test_treeutil.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mkdocs2confluence
3
- Version: 0.6.4
3
+ Version: 0.6.6
4
4
  Summary: Publish MkDocs Material pages to Confluence Cloud — admonitions, Mermaid diagrams, tabs, page properties and more
5
5
  Author: Anders Hybertz
6
6
  License: GPL-3.0-or-later
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mkdocs2confluence"
3
- version = "0.6.4"
3
+ version = "0.6.6"
4
4
  description = "Publish MkDocs Material pages to Confluence Cloud — admonitions, Mermaid diagrams, tabs, page properties and more"
5
5
  readme = "README.md"
6
6
  license = { text = "GPL-3.0-or-later" }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mkdocs2confluence
3
- Version: 0.6.4
3
+ Version: 0.6.6
4
4
  Summary: Publish MkDocs Material pages to Confluence Cloud — admonitions, Mermaid diagrams, tabs, page properties and more
5
5
  Author: Anders Hybertz
6
6
  License: GPL-3.0-or-later
@@ -19,6 +19,7 @@ from __future__ import annotations
19
19
  import html
20
20
  from pathlib import Path
21
21
  from typing import Sequence
22
+ from urllib.parse import urlparse
22
23
 
23
24
  from mkdocs_to_confluence.ir.nodes import (
24
25
  Admonition,
@@ -214,12 +215,15 @@ def _source_link_label(url: str) -> str:
214
215
  Only the proven-safe ↗ arrow is used — no emoji that may render as ??? on
215
216
  Confluence Cloud.
216
217
  """
217
- lurl = url.lower()
218
- if "github.com" in lurl:
218
+ try:
219
+ hostname = urlparse(url).hostname or ""
220
+ except ValueError:
221
+ hostname = ""
222
+ if hostname == "github.com" or hostname.endswith(".github.com"):
219
223
  platform = "GitHub"
220
- elif "gitlab.com" in lurl or "gitlab." in lurl:
224
+ elif hostname == "gitlab.com" or hostname.endswith(".gitlab.com") or "gitlab" in hostname:
221
225
  platform = "GitLab"
222
- elif "bitbucket.org" in lurl:
226
+ elif hostname == "bitbucket.org" or hostname.endswith(".bitbucket.org"):
223
227
  platform = "Bitbucket"
224
228
  else:
225
229
  return "Edit source \u2197"
@@ -7,6 +7,7 @@ import re
7
7
  from dataclasses import dataclass
8
8
  from pathlib import Path
9
9
  from typing import Any
10
+ from urllib.parse import urlparse
10
11
 
11
12
  import yaml
12
13
 
@@ -118,9 +119,13 @@ def _default_edit_uri(repo_url: str | None) -> str | None:
118
119
  """Return a sensible default ``edit_uri`` based on the hosting platform."""
119
120
  if not repo_url:
120
121
  return None
121
- if "github.com" in repo_url:
122
+ try:
123
+ hostname = urlparse(repo_url).hostname or ""
124
+ except ValueError:
125
+ return None
126
+ if hostname == "github.com" or hostname.endswith(".github.com"):
122
127
  return "edit/main/docs/"
123
- if "gitlab.com" in repo_url or "gitlab." in repo_url:
128
+ if hostname == "gitlab.com" or hostname.endswith(".gitlab.com") or "gitlab" in hostname:
124
129
  return "-/edit/master/docs/"
125
130
  return None
126
131
 
@@ -332,7 +332,7 @@ def test_dry_run_prints_page_list(tmp_path: Path, capsys: pytest.CaptureFixture)
332
332
 
333
333
  captured = capsys.readouterr()
334
334
  assert "Dry run" in captured.out
335
- assert "example.atlassian.net" in captured.out
335
+ assert "example.atlassian.net" in captured.out # codeql[py/incomplete-url-substring-sanitization]
336
336
 
337
337
 
338
338
  def test_dry_run_no_api_calls(tmp_path: Path, capsys: pytest.CaptureFixture) -> None: