Skip to content

Commit 2b92493

Browse files
committed
Add fields to sdk and category to let authors control display.
1 parent b9678e4 commit 2b92493

File tree

10 files changed

+147
-9
lines changed

10 files changed

+147
-9
lines changed

aws_doc_sdk_examples_tools/categories.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,25 @@ def from_yaml(cls, yaml: Dict[str, str] | None) -> Optional[TitleInfo]:
5656
)
5757

5858

59+
@dataclass
60+
class Prefix:
61+
one: Optional[str]
62+
many: Optional[str]
63+
64+
@classmethod
65+
def from_yaml(cls, yaml: Optional[Dict[str, str]]) -> Optional[Prefix]:
66+
if yaml is None:
67+
return None
68+
69+
one = yaml.get("one")
70+
many = yaml.get("many")
71+
72+
return cls(
73+
one=one,
74+
many=many,
75+
)
76+
77+
5978
@dataclass
6079
class CategoryWithNoDisplayError(metadata_errors.MetadataError):
6180
def message(self):
@@ -72,6 +91,8 @@ class Category:
7291
defaults: Optional[TitleInfo] = field(default=None)
7392
overrides: Optional[TitleInfo] = field(default=None)
7493
description: Optional[str] = field(default=None)
94+
synopsis_prefix: Optional[Prefix] = field(default=None)
95+
more_info: Optional[str] = field(default=None)
7596

7697
def evaluate(
7798
self,
@@ -103,6 +124,8 @@ def from_yaml(
103124
defaults = TitleInfo.from_yaml(yaml.get("defaults"))
104125
overrides = TitleInfo.from_yaml(yaml.get("overrides"))
105126
description = yaml.get("description")
127+
synopsis_prefix = Prefix.from_yaml(yaml.get("synopsis_prefix"))
128+
more_info = yaml.get("more_info")
106129

107130
return (
108131
cls(
@@ -111,6 +134,8 @@ def from_yaml(
111134
defaults=defaults,
112135
overrides=overrides,
113136
description=description,
137+
synopsis_prefix=synopsis_prefix,
138+
more_info=more_info,
114139
),
115140
errors,
116141
)

aws_doc_sdk_examples_tools/categories_test.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
parse,
1212
Category,
1313
TitleInfo,
14+
Prefix,
1415
)
1516

1617

@@ -65,6 +66,8 @@ def test_categories():
6566
key="TributaryLite",
6667
display="Tea light",
6768
description="light your way.",
69+
synopsis_prefix=Prefix(one="Tea light is", many="Tea lights are"),
70+
more_info="This is more tea light info.",
6871
),
6972
}
7073

aws_doc_sdk_examples_tools/config/sdks_schema.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,20 @@
33
map(include('sdk'), key=enum('Bash', 'C++', 'CLI', 'Go', 'Java', 'JavaScript', 'Kotlin', '.NET', 'PHP', 'PowerShell', 'Python', 'Ruby', 'Rust', 'SAP ABAP', 'Swift'))
44
---
55
sdk:
6+
display: str(required=False)
67
property: include('syntax_enum')
78
syntax: include('syntax_enum', required=False)
89
sdk: map(include('version'), key=int(min=1))
910
guide: include('entity_regex')
11+
is_pseudo_sdk: bool(required=False)
1012

1113
version:
1214
long: include('entity_with_version_regex')
1315
short: include('entity_with_version_regex')
1416
expanded:
1517
long: str(upper_start=True, end_punc=False, check_aws=False)
1618
short: str(upper_start=True, end_punc=False, check_aws=False)
19+
suppress_version_heading: bool(required=False)
1720
guide: str()
1821
caveat: str(required=False, upper_start=True, end_punc=True)
1922
bookmark: str(required=False)

aws_doc_sdk_examples_tools/doc_gen_cli_test.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,11 @@ def mock_doc_gen(mock_example):
6060
doc_gen.sdks = {
6161
"JavaScript": Sdk(
6262
name="JavaScript",
63+
display="JavaScript",
6364
versions=[SdkVersion(version=3, long="&JS;", short="&JSlong")],
6465
guide="",
6566
property="javascript",
67+
is_pseudo_sdk=False,
6668
)
6769
}
6870
doc_gen.examples = {"ex": mock_example}

aws_doc_sdk_examples_tools/doc_gen_test.py

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,14 @@
2626
root=Path("/a"),
2727
errors=MetadataErrors(),
2828
sdks={
29-
"a": Sdk(name="a", guide="guide_a", property="a_prop", versions=[])
29+
"a": Sdk(
30+
name="a",
31+
display="aa",
32+
guide="guide_a",
33+
property="a_prop",
34+
versions=[],
35+
is_pseudo_sdk=False,
36+
),
3037
},
3138
services={
3239
"x": Service(long="AWS X", short="X", sort="aws x", version=1)
@@ -36,7 +43,14 @@
3643
root=Path("/b"),
3744
errors=MetadataErrors(),
3845
sdks={
39-
"b": Sdk(name="b", guide="guide_b", property="b_prop", versions=[])
46+
"b": Sdk(
47+
name="b",
48+
display="bb",
49+
guide="guide_b",
50+
property="b_prop",
51+
versions=[],
52+
is_pseudo_sdk=False,
53+
),
4054
},
4155
services={
4256
"y": Service(long="AWS Y", short="Y", sort="aws y", version=1)
@@ -46,8 +60,22 @@
4660
root=Path("/a"),
4761
errors=MetadataErrors(),
4862
sdks={
49-
"a": Sdk(name="a", guide="guide_a", property="a_prop", versions=[]),
50-
"b": Sdk(name="b", guide="guide_b", property="b_prop", versions=[]),
63+
"a": Sdk(
64+
name="a",
65+
display="aa",
66+
guide="guide_a",
67+
property="a_prop",
68+
versions=[],
69+
is_pseudo_sdk=False,
70+
),
71+
"b": Sdk(
72+
name="b",
73+
display="bb",
74+
guide="guide_b",
75+
property="b_prop",
76+
versions=[],
77+
is_pseudo_sdk=False,
78+
),
5179
},
5280
services={
5381
"x": Service(long="AWS X", short="X", sort="aws x", version=1),
@@ -91,9 +119,11 @@ def sample_doc_gen() -> DocGen:
91119
sdks={
92120
"python": Sdk(
93121
name="python",
122+
display="Python",
94123
versions=[SdkVersion(version=1, long="&PYLong;", short="&PYShort;")],
95124
guide="Python Guide",
96125
property="python",
126+
is_pseudo_sdk=False,
97127
)
98128
},
99129
services={
@@ -167,7 +197,9 @@ def test_doc_gen_encoder(sample_doc_gen: DocGen):
167197
assert "sdks" in decoded
168198
assert "python" in decoded["sdks"]
169199
assert decoded["sdks"]["python"]["name"] == "python"
200+
assert decoded["sdks"]["python"]["display"] == "Python"
170201
assert decoded["sdks"]["python"]["guide"] == "Python Guide"
202+
assert decoded["sdks"]["python"]["is_pseudo_sdk"] == False
171203
assert decoded["sdks"]["python"]["versions"][0]["version"] == 1
172204
assert decoded["sdks"]["python"]["versions"][0]["long"] == "&PYLong;"
173205

aws_doc_sdk_examples_tools/metadata_test.py

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,38 @@ def load(
8989
),
9090
}
9191
SDKS = {
92-
"C++": Sdk(name="C++", versions=[], guide="", property="cpp"),
93-
"Java": Sdk(name="Java", versions=[], guide="", property="java"),
94-
"JavaScript": Sdk(name="JavaScript", versions=[], guide="", property="javascript"),
95-
"PHP": Sdk(name="PHP", versions=[], guide="", property="php"),
92+
"C++": Sdk(
93+
name="C++",
94+
display="C++",
95+
versions=[],
96+
guide="",
97+
property="cpp",
98+
is_pseudo_sdk=False,
99+
),
100+
"Java": Sdk(
101+
name="Java",
102+
display="Java",
103+
versions=[],
104+
guide="",
105+
property="java",
106+
is_pseudo_sdk=False,
107+
),
108+
"JavaScript": Sdk(
109+
name="JavaScript",
110+
display="JavaScript",
111+
versions=[],
112+
guide="",
113+
property="javascript",
114+
is_pseudo_sdk=False,
115+
),
116+
"PHP": Sdk(
117+
name="PHP",
118+
display="PHP",
119+
versions=[],
120+
guide="",
121+
property="php",
122+
is_pseudo_sdk=False,
123+
),
96124
}
97125
STANDARD_CATS = ["Api"]
98126
DOC_GEN = DocGen(

aws_doc_sdk_examples_tools/sdks.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ class SdkVersion:
5858
long: str
5959
short: str
6060
expanded: Optional[SdkVersionExpanded] = field(default=None)
61+
suppress_version_heading: bool = field(default=False)
6162
guide: Optional[str] = field(default=None)
6263
api_ref: Optional[SdkApiRef] = field(default=None)
6364
caveat: Optional[str] = field(default=None)
@@ -71,6 +72,7 @@ def from_yaml(
7172
errors = MetadataErrors()
7273
long = check_mapping(yaml.get("long"), "long", strict)
7374
short = check_mapping(yaml.get("short"), "short", strict)
75+
suppress_version_heading = yaml.get("suppress_version_heading", False)
7476
guide = yaml.get("guide")
7577
caveat = yaml.get("caveat")
7678
bookmark = yaml.get("bookmark")
@@ -113,6 +115,7 @@ def from_yaml(
113115
long=long,
114116
short=short,
115117
expanded=expanded,
118+
suppress_version_heading=suppress_version_heading,
116119
guide=guide,
117120
api_ref=api_ref,
118121
caveat=caveat,
@@ -132,9 +135,11 @@ def message(self):
132135
@dataclass
133136
class Sdk:
134137
name: str
138+
display: str
135139
versions: List[SdkVersion]
136140
guide: str
137141
property: str
142+
is_pseudo_sdk: bool
138143

139144
def validate(self, errors: MetadataErrors):
140145
if len(self.versions) == 0:
@@ -145,8 +150,10 @@ def from_yaml(
145150
cls, name: str, yaml: Dict[str, Any], strict: bool
146151
) -> tuple[Sdk, MetadataErrors]:
147152
errors = MetadataErrors()
153+
display = yaml.get("display", name)
148154
property = yaml.get("property", "")
149155
guide = check_mapping(yaml.get("guide"), "guide")
156+
is_pseudo_sdk = yaml.get("is_pseudo_sdk", False)
150157
if isinstance(guide, MetadataParseError):
151158
errors.append(guide)
152159
guide = ""
@@ -161,7 +168,17 @@ def from_yaml(
161168
versions.append(sdk_version)
162169
errors.extend(errs)
163170

164-
return cls(name=name, versions=versions, guide=guide, property=property), errors
171+
return (
172+
cls(
173+
name=name,
174+
display=display,
175+
versions=versions,
176+
guide=guide,
177+
property=property,
178+
is_pseudo_sdk=is_pseudo_sdk,
179+
),
180+
errors,
181+
)
165182

166183

167184
def parse(

0 commit comments

Comments
 (0)