Skip to content

Commit fdebf31

Browse files
authored
Services sdk_id updates. (#166)
Adds an sdk_id value for services, and includes that value in the example_meta.json file. The sdk_id is used to map a service to its Smithy model, for use when auto-generating links to code examples within API Ref documentation.
1 parent 19dd103 commit fdebf31

File tree

11 files changed

+282
-6
lines changed

11 files changed

+282
-6
lines changed

aws_doc_sdk_examples_tools/config/services.yaml

Lines changed: 236 additions & 0 deletions
Large diffs are not rendered by default.

aws_doc_sdk_examples_tools/config/services_schema.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ service:
66
long: str()
77
short: str()
88
sort: regex('^[^&]\\w', name='non-entity')
9+
sdk_id: str()
910
chapter_override: include('chapter_override', required=False)
1011
expanded:
1112
long: str(upper_start=True, end_punc=False, check_aws=False)

aws_doc_sdk_examples_tools/doc_gen.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,7 @@ def safe_split_id(ex_id: str) -> Tuple[str, str]:
288288
action = id_action
289289
if service_id in self.services:
290290
service_name = self.services[service_id].short
291+
example.service_sdk_id = self.services[service_id].sdk_id
291292
else:
292293
service_name = service_id
293294
example.fill_display_fields(self.categories, service_name, action)

aws_doc_sdk_examples_tools/doc_gen_cli_test.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ def mock_doc_gen(mock_example):
5555
short="&AHI;",
5656
sort="HealthImaging",
5757
version="medical-imaging-2023-07-19",
58+
sdk_id="Medical Imaging",
5859
)
5960
}
6061
doc_gen.sdks = {

aws_doc_sdk_examples_tools/doc_gen_test.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636
),
3737
},
3838
services={
39-
"x": Service(long="AWS X", short="X", sort="aws x", version=1)
39+
"x": Service(
40+
long="AWS X", short="X", sort="aws x", version=1, sdk_id="AWSx"
41+
)
4042
},
4143
),
4244
DocGen(
@@ -53,7 +55,9 @@
5355
),
5456
},
5557
services={
56-
"y": Service(long="AWS Y", short="Y", sort="aws y", version=1)
58+
"y": Service(
59+
long="AWS Y", short="Y", sort="aws y", version=1, sdk_id="AWSy"
60+
)
5761
},
5862
),
5963
DocGen(
@@ -78,8 +82,12 @@
7882
),
7983
},
8084
services={
81-
"x": Service(long="AWS X", short="X", sort="aws x", version=1),
82-
"y": Service(long="AWS Y", short="Y", sort="aws y", version=1),
85+
"x": Service(
86+
long="AWS X", short="X", sort="aws x", version=1, sdk_id="AWSx"
87+
),
88+
"y": Service(
89+
long="AWS Y", short="Y", sort="aws y", version=1, sdk_id="AWSy"
90+
),
8391
},
8492
),
8593
)
@@ -135,6 +143,7 @@ def sample_doc_gen() -> DocGen:
135143
),
136144
sort="Amazon S3",
137145
version="2006-03-01",
146+
sdk_id="S3",
138147
)
139148
},
140149
snippets={
@@ -152,6 +161,7 @@ def sample_doc_gen() -> DocGen:
152161
"s3_PutObject",
153162
file=Path("filea.txt"),
154163
languages={},
164+
service_sdk_id="S3",
155165
services={"s3": set(["PutObject"])},
156166
)
157167
},
@@ -244,6 +254,7 @@ def test_doc_gen_encoder(sample_doc_gen: DocGen):
244254
"id": "s3_PutObject",
245255
"languages": {},
246256
"service_main": None,
257+
"service_sdk_id": "S3",
247258
"services": {
248259
"s3": {
249260
"__set__": [

aws_doc_sdk_examples_tools/metadata.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,8 @@ class Example:
154154
# TODO document service_main and services. Not to be used by tributaries. Part of Cross Service.
155155
# List of services used by the examples. Lines up with those in services.yaml.
156156
service_main: Optional[str] = field(default=None)
157+
# Main service sdk_id. Matches Smithy model svc_id in services.yaml.
158+
service_sdk_id: Optional[str] = field(default="")
157159
services: Dict[str, Set[str]] = field(default_factory=dict)
158160
# HTML file names corresponding to the documentation pages in the Code Library
159161
doc_filenames: Optional[DocFilenames] = field(default=None)

aws_doc_sdk_examples_tools/metadata_test.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ def load(
5252
),
5353
sort="api-gateway",
5454
version=1,
55+
sdk_id="apigateway",
5556
),
5657
"medical-imaging": Service(
5758
long="&AHIlong;",
@@ -61,6 +62,7 @@ def load(
6162
),
6263
sort="HealthImaging",
6364
version=1,
65+
sdk_id="Medical Imaging",
6466
),
6567
"sqs": Service(
6668
long="&SQSlong;",
@@ -70,6 +72,7 @@ def load(
7072
),
7173
sort="sqs",
7274
version=1,
75+
sdk_id="SQS",
7376
),
7477
"s3": Service(
7578
long="&S3long;",
@@ -79,13 +82,15 @@ def load(
7982
),
8083
sort="s3",
8184
version=1,
85+
sdk_id="S3",
8286
),
8387
"autogluon": Service(
8488
long="AutoGluon Test",
8589
short="AG Test",
8690
expanded=ServiceExpanded(long="AutoGluon Test", short="AutoGluon Test"),
8791
sort="autogluon",
8892
version=1,
93+
sdk_id="",
8994
),
9095
}
9196
SDKS = {
@@ -1025,8 +1030,12 @@ def test_no_duplicate_title_abbrev():
10251030
),
10261031
},
10271032
services={
1028-
"svc": Service(long="Service", short="svc", version="1", sort="svc"),
1029-
"cvs": Service(long="CVS", short="cvs", version="2", sort="cvs"),
1033+
"svc": Service(
1034+
long="Service", short="svc", version="1", sort="svc", sdk_id="SVC"
1035+
),
1036+
"cvs": Service(
1037+
long="CVS", short="cvs", version="2", sort="cvs", sdk_id="CVS"
1038+
),
10301039
},
10311040
)
10321041
doc_gen.validate()

aws_doc_sdk_examples_tools/services.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class Service:
2626
long: str
2727
short: str
2828
sort: str
29+
sdk_id: str
2930
version: Union[int, str]
3031
expanded: Optional[ServiceExpanded] = field(default=None)
3132
api_ref: Optional[str] = field(default=None)
@@ -50,6 +51,7 @@ def from_yaml(
5051
sort = yaml.get("sort")
5152
version = yaml.get("version")
5253
api_ref = yaml.get("api_ref")
54+
sdk_id = yaml.get("sdk_id")
5355

5456
if isinstance(long, metadata_errors.MetadataParseError):
5557
errors.append(long)
@@ -75,6 +77,9 @@ def from_yaml(
7577
version = "0"
7678
if api_ref is None:
7779
errors.append(metadata_errors.MissingField(field="api_ref"))
80+
if sdk_id is None:
81+
errors.append(metadata_errors.MissingField(field="sdk_id"))
82+
sdk_id = ""
7883

7984
blurb = yaml.get("blurb")
8085
caveat = yaml.get("caveat")
@@ -101,6 +106,7 @@ def from_yaml(
101106
cls(
102107
long=long,
103108
short=short,
109+
sdk_id=sdk_id,
104110
expanded=expanded,
105111
sort=sort,
106112
api_ref=api_ref,

aws_doc_sdk_examples_tools/services_test.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ def test_services():
6666
assert examples == {
6767
"s3": Service(
6868
short="&S3;",
69+
sdk_id="S3",
6970
expanded=ServiceExpanded(
7071
long="Amazon Simple Storage Service (Amazon S3)", short="Amazon S3"
7172
),
@@ -83,6 +84,7 @@ def test_services():
8384
"medical-imaging": Service(
8485
short="&AHI;",
8586
long="&AHIlong;",
87+
sdk_id="Medical Imaging",
8688
expanded=ServiceExpanded(
8789
long="AWS HealthImaging",
8890
short="HealthImaging",
@@ -93,6 +95,7 @@ def test_services():
9395
"sqs": Service(
9496
short="&SQS;",
9597
long="&SQSlong;",
98+
sdk_id="SQS",
9699
expanded=ServiceExpanded(
97100
long="Amazon Simple Queue Service (Amazon SQS)", short="Amazon SQS"
98101
),
@@ -106,6 +109,7 @@ def test_services():
106109
"textract": Service(
107110
short="&TEXTRACT;",
108111
long="&TEXTRACTlong;",
112+
sdk_id="Textract",
109113
expanded=ServiceExpanded(long="Amazon Textract", short="Amazon Textract"),
110114
sort="Textract",
111115
tags={"product_categories": set(["Category 1"])},

aws_doc_sdk_examples_tools/test_resources/entityusage_services.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ medical-imaging:
44
expanded:
55
long: AWS HealthImaging
66
short: HealthImaging
7+
sdk_id: Medical Imaging
78
sort: HealthImaging

0 commit comments

Comments
 (0)