Skip to content

Commit 4ca4b9a

Browse files
authored
DOP-908: Parser support for deprecated versions (#141)
* DOP-908: Parser support for deprecated versions * DOP-908: Correct deprecated_versions table name * DOP-908: Address PR feedback * DOP-908: Address PR feedback * DOP-908: Add test for missing deprecated versions
1 parent 877df4e commit 4ca4b9a

File tree

8 files changed

+28
-1
lines changed

8 files changed

+28
-1
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Added
11+
12+
- Support for deprecated versions (DOP-908).
13+
1014
## [v0.4.3] - 2020-04-15
1115

1216
### Added

snooty/postprocess.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,8 @@ def run(
170170
def generate_metadata(self) -> n.SerializedNode:
171171
document: Dict[str, SerializableType] = {}
172172
document["title"] = self.project_config.title
173+
if self.project_config.deprecated_versions:
174+
document["deprecated_versions"] = self.project_config.deprecated_versions
173175
# Update metadata document with key-value pairs defined in event parser
174176
document["slugToTitle"] = {
175177
k: [node.serialize() for node in v]

snooty/rstspec.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ options.stub-columns = "nonnegative_integer"
4949

5050
[directive."ecosystem:landing-page-tiles"]
5151

52+
[directive."landing:deprecated-version-selector"]
53+
5254
[directive.admonition]
5355
content_type = "block"
5456
argument_type = "string"
@@ -542,7 +544,6 @@ options.title = "string"
542544
options.image = ["path", "uri"]
543545
options.type = "string"
544546

545-
546547
[directive.youtube]
547548
help = "Embed a video from YouTube in your article"
548549
argument_type = "string"

snooty/test_postprocess.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,13 @@ def test_slug_title_mapping(backend: Backend) -> None:
4040
assert slugToTitle["page4"][0]["value"] == "Skip includes"
4141

4242

43+
def test_deprecated_versions(backend: Backend) -> None:
44+
assert backend.metadata["deprecated_versions"] == {
45+
"manual": ["v2.2", "v2.4", "v2.6", "v3.0", "v3.2", "v3.4"],
46+
"mms": ["v1.1", "v1.2", "v1.3"],
47+
}
48+
49+
4350
def test_expand_includes(backend: Backend) -> None:
4451
page4_id = FileId("page4.txt")
4552
ast = backend.pages[page4_id].ast

snooty/test_project.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,13 @@ def test_bad_project() -> None:
173173
assert isinstance(diagnostics[0], ConstantNotDeclared)
174174

175175

176+
def test_missing_deprecated_versions() -> None:
177+
backend = Backend()
178+
project = Project(Path("test_data/test_project"), backend, build_identifiers)
179+
project.build()
180+
assert "deprecated_versions" not in backend.metadata
181+
182+
176183
def test_not_a_project() -> None:
177184
backend = Backend()
178185
project = Project(Path("test_data/not_a_project"), backend, build_identifiers)

snooty/test_types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ def test_project() -> None:
2323
project_config, project_diagnostics = ProjectConfig.open(Path(".").resolve())
2424
assert project_config.name == "unnamed"
2525
assert project_config.title == "untitled"
26+
assert project_config.deprecated_versions == None
2627
assert len(project_diagnostics) == 0
2728

2829

snooty/types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,7 @@ class ProjectConfig:
377377
title: str = field(default="untitled")
378378
source: str = field(default="source")
379379
constants: Dict[str, object] = field(default_factory=dict)
380+
deprecated_versions: Optional[Dict[str, List[str]]] = field(default=None)
380381
intersphinx: List[str] = field(default_factory=list)
381382
substitutions: Dict[str, str] = field(default_factory=dict)
382383
# substitution_nodes contains a parsed representation of the substitutions member, and is populated on Project initialization.

test_data/test_postprocessor/snooty.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,7 @@ global-write = "Global Writes"
88
global-write-clusters = "Global *Clusters*"
99
service = "Atlas"
1010
blank = ""
11+
12+
[deprecated_versions]
13+
manual = ["v2.2", "v2.4", "v2.6", "v3.0", "v3.2", "v3.4"]
14+
mms = ["v1.1", "v1.2", "v1.3"]

0 commit comments

Comments
 (0)