Skip to content

Commit

Permalink
Add fields to sdk and category to let authors control display.
Browse files Browse the repository at this point in the history
  • Loading branch information
Laren-AWS committed Mar 5, 2025
1 parent b9678e4 commit 2b92493
Show file tree
Hide file tree
Showing 10 changed files with 147 additions and 9 deletions.
25 changes: 25 additions & 0 deletions aws_doc_sdk_examples_tools/categories.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,25 @@ def from_yaml(cls, yaml: Dict[str, str] | None) -> Optional[TitleInfo]:
)


@dataclass
class Prefix:
one: Optional[str]
many: Optional[str]

@classmethod
def from_yaml(cls, yaml: Optional[Dict[str, str]]) -> Optional[Prefix]:
if yaml is None:
return None

one = yaml.get("one")
many = yaml.get("many")

return cls(
one=one,
many=many,
)


@dataclass
class CategoryWithNoDisplayError(metadata_errors.MetadataError):
def message(self):
Expand All @@ -72,6 +91,8 @@ class Category:
defaults: Optional[TitleInfo] = field(default=None)
overrides: Optional[TitleInfo] = field(default=None)
description: Optional[str] = field(default=None)
synopsis_prefix: Optional[Prefix] = field(default=None)
more_info: Optional[str] = field(default=None)

def evaluate(
self,
Expand Down Expand Up @@ -103,6 +124,8 @@ def from_yaml(
defaults = TitleInfo.from_yaml(yaml.get("defaults"))
overrides = TitleInfo.from_yaml(yaml.get("overrides"))
description = yaml.get("description")
synopsis_prefix = Prefix.from_yaml(yaml.get("synopsis_prefix"))
more_info = yaml.get("more_info")

return (
cls(
Expand All @@ -111,6 +134,8 @@ def from_yaml(
defaults=defaults,
overrides=overrides,
description=description,
synopsis_prefix=synopsis_prefix,
more_info=more_info,
),
errors,
)
Expand Down
3 changes: 3 additions & 0 deletions aws_doc_sdk_examples_tools/categories_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
parse,
Category,
TitleInfo,
Prefix,
)


Expand Down Expand Up @@ -65,6 +66,8 @@ def test_categories():
key="TributaryLite",
display="Tea light",
description="light your way.",
synopsis_prefix=Prefix(one="Tea light is", many="Tea lights are"),
more_info="This is more tea light info.",
),
}

Expand Down
3 changes: 3 additions & 0 deletions aws_doc_sdk_examples_tools/config/sdks_schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,20 @@
map(include('sdk'), key=enum('Bash', 'C++', 'CLI', 'Go', 'Java', 'JavaScript', 'Kotlin', '.NET', 'PHP', 'PowerShell', 'Python', 'Ruby', 'Rust', 'SAP ABAP', 'Swift'))
---
sdk:
display: str(required=False)
property: include('syntax_enum')
syntax: include('syntax_enum', required=False)
sdk: map(include('version'), key=int(min=1))
guide: include('entity_regex')
is_pseudo_sdk: bool(required=False)

version:
long: include('entity_with_version_regex')
short: include('entity_with_version_regex')
expanded:
long: str(upper_start=True, end_punc=False, check_aws=False)
short: str(upper_start=True, end_punc=False, check_aws=False)
suppress_version_heading: bool(required=False)
guide: str()
caveat: str(required=False, upper_start=True, end_punc=True)
bookmark: str(required=False)
Expand Down
2 changes: 2 additions & 0 deletions aws_doc_sdk_examples_tools/doc_gen_cli_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,11 @@ def mock_doc_gen(mock_example):
doc_gen.sdks = {
"JavaScript": Sdk(
name="JavaScript",
display="JavaScript",
versions=[SdkVersion(version=3, long="&JS;", short="&JSlong")],
guide="",
property="javascript",
is_pseudo_sdk=False,
)
}
doc_gen.examples = {"ex": mock_example}
Expand Down
40 changes: 36 additions & 4 deletions aws_doc_sdk_examples_tools/doc_gen_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,14 @@
root=Path("/a"),
errors=MetadataErrors(),
sdks={
"a": Sdk(name="a", guide="guide_a", property="a_prop", versions=[])
"a": Sdk(
name="a",
display="aa",
guide="guide_a",
property="a_prop",
versions=[],
is_pseudo_sdk=False,
),
},
services={
"x": Service(long="AWS X", short="X", sort="aws x", version=1)
Expand All @@ -36,7 +43,14 @@
root=Path("/b"),
errors=MetadataErrors(),
sdks={
"b": Sdk(name="b", guide="guide_b", property="b_prop", versions=[])
"b": Sdk(
name="b",
display="bb",
guide="guide_b",
property="b_prop",
versions=[],
is_pseudo_sdk=False,
),
},
services={
"y": Service(long="AWS Y", short="Y", sort="aws y", version=1)
Expand All @@ -46,8 +60,22 @@
root=Path("/a"),
errors=MetadataErrors(),
sdks={
"a": Sdk(name="a", guide="guide_a", property="a_prop", versions=[]),
"b": Sdk(name="b", guide="guide_b", property="b_prop", versions=[]),
"a": Sdk(
name="a",
display="aa",
guide="guide_a",
property="a_prop",
versions=[],
is_pseudo_sdk=False,
),
"b": Sdk(
name="b",
display="bb",
guide="guide_b",
property="b_prop",
versions=[],
is_pseudo_sdk=False,
),
},
services={
"x": Service(long="AWS X", short="X", sort="aws x", version=1),
Expand Down Expand Up @@ -91,9 +119,11 @@ def sample_doc_gen() -> DocGen:
sdks={
"python": Sdk(
name="python",
display="Python",
versions=[SdkVersion(version=1, long="&PYLong;", short="&PYShort;")],
guide="Python Guide",
property="python",
is_pseudo_sdk=False,
)
},
services={
Expand Down Expand Up @@ -167,7 +197,9 @@ def test_doc_gen_encoder(sample_doc_gen: DocGen):
assert "sdks" in decoded
assert "python" in decoded["sdks"]
assert decoded["sdks"]["python"]["name"] == "python"
assert decoded["sdks"]["python"]["display"] == "Python"
assert decoded["sdks"]["python"]["guide"] == "Python Guide"
assert decoded["sdks"]["python"]["is_pseudo_sdk"] == False
assert decoded["sdks"]["python"]["versions"][0]["version"] == 1
assert decoded["sdks"]["python"]["versions"][0]["long"] == "&PYLong;"

Expand Down
36 changes: 32 additions & 4 deletions aws_doc_sdk_examples_tools/metadata_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,38 @@ def load(
),
}
SDKS = {
"C++": Sdk(name="C++", versions=[], guide="", property="cpp"),
"Java": Sdk(name="Java", versions=[], guide="", property="java"),
"JavaScript": Sdk(name="JavaScript", versions=[], guide="", property="javascript"),
"PHP": Sdk(name="PHP", versions=[], guide="", property="php"),
"C++": Sdk(
name="C++",
display="C++",
versions=[],
guide="",
property="cpp",
is_pseudo_sdk=False,
),
"Java": Sdk(
name="Java",
display="Java",
versions=[],
guide="",
property="java",
is_pseudo_sdk=False,
),
"JavaScript": Sdk(
name="JavaScript",
display="JavaScript",
versions=[],
guide="",
property="javascript",
is_pseudo_sdk=False,
),
"PHP": Sdk(
name="PHP",
display="PHP",
versions=[],
guide="",
property="php",
is_pseudo_sdk=False,
),
}
STANDARD_CATS = ["Api"]
DOC_GEN = DocGen(
Expand Down
19 changes: 18 additions & 1 deletion aws_doc_sdk_examples_tools/sdks.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ class SdkVersion:
long: str
short: str
expanded: Optional[SdkVersionExpanded] = field(default=None)
suppress_version_heading: bool = field(default=False)
guide: Optional[str] = field(default=None)
api_ref: Optional[SdkApiRef] = field(default=None)
caveat: Optional[str] = field(default=None)
Expand All @@ -71,6 +72,7 @@ def from_yaml(
errors = MetadataErrors()
long = check_mapping(yaml.get("long"), "long", strict)
short = check_mapping(yaml.get("short"), "short", strict)
suppress_version_heading = yaml.get("suppress_version_heading", False)
guide = yaml.get("guide")
caveat = yaml.get("caveat")
bookmark = yaml.get("bookmark")
Expand Down Expand Up @@ -113,6 +115,7 @@ def from_yaml(
long=long,
short=short,
expanded=expanded,
suppress_version_heading=suppress_version_heading,
guide=guide,
api_ref=api_ref,
caveat=caveat,
Expand All @@ -132,9 +135,11 @@ def message(self):
@dataclass
class Sdk:
name: str
display: str
versions: List[SdkVersion]
guide: str
property: str
is_pseudo_sdk: bool

def validate(self, errors: MetadataErrors):
if len(self.versions) == 0:
Expand All @@ -145,8 +150,10 @@ def from_yaml(
cls, name: str, yaml: Dict[str, Any], strict: bool
) -> tuple[Sdk, MetadataErrors]:
errors = MetadataErrors()
display = yaml.get("display", name)
property = yaml.get("property", "")
guide = check_mapping(yaml.get("guide"), "guide")
is_pseudo_sdk = yaml.get("is_pseudo_sdk", False)
if isinstance(guide, MetadataParseError):
errors.append(guide)
guide = ""
Expand All @@ -161,7 +168,17 @@ def from_yaml(
versions.append(sdk_version)
errors.extend(errs)

return cls(name=name, versions=versions, guide=guide, property=property), errors
return (
cls(
name=name,
display=display,
versions=versions,
guide=guide,
property=property,
is_pseudo_sdk=is_pseudo_sdk,
),
errors,
)


def parse(
Expand Down
Loading

0 comments on commit 2b92493

Please sign in to comment.