mkdocs2confluence 0.7.17__tar.gz → 0.7.19__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 (72) hide show
  1. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/PKG-INFO +1 -1
  2. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/pyproject.toml +1 -1
  3. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs2confluence.egg-info/PKG-INFO +1 -1
  4. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/publisher/client.py +6 -4
  5. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/publisher/pipeline.py +5 -2
  6. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_publish_client.py +4 -4
  7. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/LICENSE +0 -0
  8. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/README.md +0 -0
  9. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/setup.cfg +0 -0
  10. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs2confluence.egg-info/SOURCES.txt +0 -0
  11. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs2confluence.egg-info/dependency_links.txt +0 -0
  12. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs2confluence.egg-info/entry_points.txt +0 -0
  13. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs2confluence.egg-info/requires.txt +0 -0
  14. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs2confluence.egg-info/top_level.txt +0 -0
  15. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/__init__.py +0 -0
  16. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/cli.py +0 -0
  17. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/emitter/__init__.py +0 -0
  18. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/emitter/xhtml.py +0 -0
  19. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/ir/__init__.py +0 -0
  20. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/ir/document.py +0 -0
  21. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/ir/nodes.py +0 -0
  22. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/ir/treeutil.py +0 -0
  23. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/loader/__init__.py +0 -0
  24. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/loader/config.py +0 -0
  25. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/loader/extra_css.py +0 -0
  26. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/loader/nav.py +0 -0
  27. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/loader/page.py +0 -0
  28. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/parser/__init__.py +0 -0
  29. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/parser/markdown.py +0 -0
  30. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/pdf/__init__.py +0 -0
  31. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/pdf/generator.py +0 -0
  32. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/pdf/render.py +0 -0
  33. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/preprocess/__init__.py +0 -0
  34. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/preprocess/abbrevs.py +0 -0
  35. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/preprocess/fence.py +0 -0
  36. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/preprocess/frontmatter.py +0 -0
  37. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/preprocess/icons.py +0 -0
  38. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/preprocess/includes.py +0 -0
  39. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/preprocess/linkdefs.py +0 -0
  40. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/preview/__init__.py +0 -0
  41. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/preview/render.py +0 -0
  42. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/preview/server.py +0 -0
  43. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/publisher/__init__.py +0 -0
  44. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/transforms/__init__.py +0 -0
  45. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/transforms/abbrevs.py +0 -0
  46. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/transforms/assets.py +0 -0
  47. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/transforms/editlink.py +0 -0
  48. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/transforms/images.py +0 -0
  49. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/transforms/internallinks.py +0 -0
  50. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/src/mkdocs_to_confluence/transforms/mermaid.py +0 -0
  51. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_abbrevs.py +0 -0
  52. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_cli.py +0 -0
  53. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_editlink.py +0 -0
  54. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_emitter.py +0 -0
  55. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_extra_css.py +0 -0
  56. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_frontmatter.py +0 -0
  57. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_icons.py +0 -0
  58. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_images.py +0 -0
  59. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_internallinks.py +0 -0
  60. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_ir.py +0 -0
  61. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_linkdefs.py +0 -0
  62. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_loader.py +0 -0
  63. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_mermaid.py +0 -0
  64. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_page_loader.py +0 -0
  65. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_parser.py +0 -0
  66. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_pdf.py +0 -0
  67. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_preprocess.py +0 -0
  68. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_preview.py +0 -0
  69. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_publish_config.py +0 -0
  70. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_publish_pipeline.py +0 -0
  71. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_server.py +0 -0
  72. {mkdocs2confluence-0.7.17 → mkdocs2confluence-0.7.19}/tests/test_treeutil.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mkdocs2confluence
3
- Version: 0.7.17
3
+ Version: 0.7.19
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.7.17"
3
+ version = "0.7.19"
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.7.17
3
+ Version: 0.7.19
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
@@ -362,13 +362,15 @@ class ConfluenceClient:
362
362
  self._raise_for_status(resp, f"set_page_labels({page_id!r})")
363
363
 
364
364
  def set_page_status(self, page_id: str, status_key: str) -> None:
365
- """Set the Confluence page status (e.g. ``rough-draft``, ``in-progress``).
365
+ """Set the Confluence page content state (e.g. ``rough-draft``, ``in-progress``).
366
366
 
367
- Uses the v1 ``PUT /content/{id}/state`` endpoint. The *status_key*
368
- must match a state key configured in the Confluence space.
367
+ Uses the v1 ``PUT /content/{id}/state`` endpoint. *status_key* is a
368
+ kebab-case alias that is converted to a title-case name matching the
369
+ built-in Confluence space states (e.g. ``in-progress`` → ``In Progress``).
369
370
  """
371
+ name = status_key.replace("-", " ").title()
370
372
  url = self._v1(f"/content/{page_id}/state")
371
- resp = self._http.post(url, json={"state": {"key": status_key}})
373
+ resp = self._http.put(url, json={"name": name})
372
374
  self._raise_for_status(resp, f"set_page_status({page_id!r}, {status_key!r})")
373
375
 
374
376
  def list_attachments(self, page_id: str) -> dict[str, dict[str, Any]]:
@@ -289,6 +289,7 @@ def _plan_nodes(
289
289
  parent_id=parent_id,
290
290
  parent_is_folder=parent_is_folder,
291
291
  page_id=str(existing["id"]),
292
+ confluence_status=confluence_status,
292
293
  ))
293
294
  non_index = [c for c in node.children if c is not index_child]
294
295
  _plan_nodes(
@@ -399,6 +400,7 @@ def _plan_nodes(
399
400
  action="skip",
400
401
  parent_id=parent_id,
401
402
  page_id=str(existing["id"]),
403
+ confluence_status=confluence_status,
402
404
  )
403
405
  )
404
406
  continue
@@ -662,8 +664,9 @@ def _post_process_action(
662
664
  if action.page_id and action.confluence_status and not action.is_folder:
663
665
  try:
664
666
  client.set_page_status(action.page_id, action.confluence_status)
665
- except Exception:
666
- pass
667
+ except Exception as exc:
668
+ if not quiet:
669
+ print(f" [warn] could not set page status '{action.confluence_status}': {exc}", file=sys.stderr)
667
670
 
668
671
  # Upload assets — skip files whose mtime is not newer than Confluence.
669
672
  if action.page_id and action.attachments:
@@ -167,8 +167,8 @@ def test_set_page_labels_skips_post_when_empty() -> None:
167
167
  # ── set_page_status ───────────────────────────────────────────────────────────
168
168
 
169
169
 
170
- def test_set_page_status_sends_post() -> None:
171
- """set_page_status POSTs the state key to the v1 /content/{id}/state endpoint."""
170
+ def test_set_page_status_sends_put() -> None:
171
+ """set_page_status PUTs name-based body to the v1 /content/{id}/state endpoint."""
172
172
  transport = _MockTransport(httpx.Response(200, json={}))
173
173
  config = _make_config()
174
174
  with ConfluenceClient(config) as client:
@@ -176,11 +176,11 @@ def test_set_page_status_sends_post() -> None:
176
176
  client.set_page_status("42", "in-progress")
177
177
  assert len(transport.requests) == 1
178
178
  req = transport.requests[0]
179
- assert req.method == "POST"
179
+ assert req.method == "PUT"
180
180
  assert "/content/42/state" in str(req.url)
181
181
  import json
182
182
  body = json.loads(req.content)
183
- assert body == {"state": {"key": "in-progress"}}
183
+ assert body == {"name": "In Progress"}
184
184
 
185
185
 
186
186
  def test_set_page_full_width_creates_property_when_absent() -> None: