Skip to content

flag page-specific editor overrides as deprecated #1128

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jul 13, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions doc/_themes/sphinx13b/static/sphinx13b.css
Original file line number Diff line number Diff line change
Expand Up @@ -438,6 +438,10 @@ div.viewcode-block:target {
border-bottom: 1px solid #ac9;
}

span.deprecated {
font-weight: bold;
}

.contentstable {
margin-left: 30px;
margin: 0 auto;
Expand Down
5 changes: 5 additions & 0 deletions doc/directives.rst
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,11 @@ Common
.. rst:directive:option:: editor: value
:type: v1, v2

.. deprecated:: 2.14

Support for page-specific editor overrides will be removed in 2026
as Confluence Cloud removes support for the ``v1`` editor.

Pages are publish with the editor type configured through the
:lref:`confluence_editor` option. However, users can override the
editor for a specific page using the ``editor`` metadata option.
Expand Down
9 changes: 9 additions & 0 deletions sphinxcontrib/confluencebuilder/builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -954,6 +954,15 @@ def _extract_metadata(self, docname, doctree):
else:
metadata[k] = v

if k == 'editor':
msg = 'page-specific editor overrides are deprecated'
if node.source:
lpf = f'#{node.line}' if node.line else ''
self.warn(f'{msg}: {node.source}{lpf}',
subtype='deprecated')
else:
self.warn(f'{msg}: {docname}', subtype='deprecated')

node.parent.remove(node)

def _find_title_element(self, doctree):
Expand Down
5 changes: 5 additions & 0 deletions tests/unit-tests/datasets/metadata-legacy/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
confluence metadata
-------------------

.. confluence_metadata::
:editor: v2
1 change: 0 additions & 1 deletion tests/unit-tests/datasets/metadata/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,5 @@ confluence metadata
-------------------

.. confluence_metadata::
:editor: v2
:full-width: true
:labels: tag-a tag-c
22 changes: 17 additions & 5 deletions tests/unit-tests/test_confluence_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,6 @@ def test_confluence_metadata_directive_expected(self):
doc_metadata = builder_metadata['index']
self.assertTrue(doc_metadata)

# verify expected editor override
self.assertTrue('editor' in doc_metadata)
editor = doc_metadata['editor']
self.assertEqual(editor, 'v2')

# verify expected full-width override
self.assertTrue('fullWidth' in doc_metadata)
editor = doc_metadata['fullWidth']
Expand All @@ -40,6 +35,23 @@ def test_confluence_metadata_directive_expected(self):
self.assertIn('tag-a', labels)
self.assertIn('tag-c', labels)

def test_confluence_metadata_directive_legacy(self):
dataset = self.datasets / 'metadata-legacy'
with self.prepare(dataset, relax=True) as app:
app.build()
builder_metadata = app.builder.metadata

self.assertTrue(builder_metadata)
self.assertTrue('index' in builder_metadata)

doc_metadata = builder_metadata['index']
self.assertTrue(doc_metadata)

# verify expected editor override
self.assertTrue('editor' in doc_metadata)
editor = doc_metadata['editor']
self.assertEqual(editor, 'v2')

@setup_builder('html')
def test_html_confluence_metadata_directive_ignore(self):
with self.prepare(self.dataset, relax=True) as app:
Expand Down
2 changes: 1 addition & 1 deletion tests/unit-tests/test_local_toc.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ def setUpClass(cls):

@setup_builder('confluence')
def test_storage_local_toc(self):
out_dir = self.build(self.dataset)
out_dir = self.build(self.dataset, relax=True)

with parse('rst-v1', out_dir) as data:
# for v1, no a-tags
Expand Down
2 changes: 1 addition & 1 deletion tests/unit-tests/test_references_confluence.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def setUpClass(cls):

@setup_builder('confluence')
def test_storage_references_confluence(self):
out_dir = self.build(self.dataset)
out_dir = self.build(self.dataset, relax=True)

# expected page names
rst_v1_first_name = 'reStructuredText v1 First'
Expand Down
Loading