Skip to content

Commit 5c24a48

Browse files
committed
Convert 80% of existing metadata to labels
1 parent fc20c1a commit 5c24a48

File tree

6 files changed

+480
-23
lines changed

6 files changed

+480
-23
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from . import from_doc_gen as from_doc_gen_module
2+
3+
from_doc_gen = from_doc_gen_module.from_doc_gen
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
from typing import Dict, Iterable, List, Set
2+
3+
from aws_doc_sdk_examples_tools.doc_gen import DocGen
4+
from aws_doc_sdk_examples_tools.metadata import Example as DocGenExample
5+
from aws_doc_sdk_examples_tools.snippets import Snippet as DocGenSnippet
6+
from aws_doc_sdk_examples_tools.sdks import Sdk as DocGenSdk
7+
from aws_doc_sdk_examples_tools.services import Service as DocGenService
8+
9+
from .labels import Sdk, Service, Example, Snippet, Expanded, Label, Excerpt
10+
from . import known_labels
11+
12+
13+
def from_doc_gen(doc_gen: DocGen):
14+
sdks: Set[Sdk] = _sdks(doc_gen.sdks)
15+
services: Set[Service] = _services(doc_gen.services)
16+
snippets: Set[Snippet] = _snippets(doc_gen.examples.values(), doc_gen.snippets)
17+
examples: Set[Example] = _examples(doc_gen.examples)
18+
19+
return dict(
20+
sdks=frozenset(sdks),
21+
services=frozenset(services),
22+
snippets=frozenset(snippets),
23+
examples=frozenset(examples),
24+
)
25+
26+
27+
def _sdks(doc_gen_sdks: Dict[str, DocGenSdk]) -> Set[Sdk]:
28+
sdks: Set[Sdk] = set()
29+
for id, sdk in doc_gen_sdks.items():
30+
for v in _sdk(id, sdk):
31+
sdks.add(v)
32+
return sdks
33+
34+
35+
def _sdk(id: str, doc_gen_sdk: DocGenSdk) -> Iterable[Sdk]:
36+
for v in doc_gen_sdk.versions:
37+
labels: List[Label] = []
38+
if v.caveat:
39+
labels.append(Label(name="caveat", value=v.caveat))
40+
sdk = Sdk(
41+
language=doc_gen_sdk.property,
42+
version=str(v.version),
43+
name=Expanded(long=v.long, short=v.short),
44+
labels=labels
45+
)
46+
yield sdk
47+
48+
49+
def _services(doc_gen_services: Dict[str, DocGenService]) -> Set[Service]:
50+
return set([_service(id, service) for id, service in doc_gen_services.items()])
51+
52+
53+
def _service(id: str, doc_gen_service: DocGenService) -> Service :
54+
labels: List[Label] = []
55+
if doc_gen_service.caveat:
56+
labels.append(Label(name=known_labels.CAVEAT, value=doc_gen_service.caveat))
57+
58+
expanded = Expanded(long="", short="")
59+
if doc_gen_service.expanded:
60+
expanded = Expanded(long=doc_gen_service.expanded.long, short=doc_gen_service.expanded.short)
61+
62+
service = Service(
63+
id=id,
64+
sort=doc_gen_service.sort,
65+
name=Expanded(long=doc_gen_service.long, short=doc_gen_service.short),
66+
expanded=expanded,
67+
version=str(doc_gen_service.version),
68+
labels=labels,
69+
)
70+
return service
71+
72+
73+
def _examples(examples: Dict[str, DocGenExample]) -> Set[Example]:
74+
return set([_example(id, example) for id, example in examples.items()])
75+
76+
77+
def _example(id: str, doc_gen_example: DocGenExample) -> Example:
78+
labels = doc_gen_example_labels(doc_gen_example)
79+
80+
example = Example(
81+
id=id,
82+
title=doc_gen_example.title,
83+
title_abbrev=doc_gen_example.title_abbrev,
84+
synopsis=doc_gen_example.synopsis or "",
85+
synopsis_list=doc_gen_example.synopsis_list,
86+
labels=labels,
87+
)
88+
89+
return example
90+
91+
92+
def doc_gen_example_labels(doc_gen_example):
93+
labels: List[Label] = []
94+
if doc_gen_example.category:
95+
labels.append(Label(name=known_labels.CATEGORY, value=doc_gen_example.category))
96+
if doc_gen_example.service_main:
97+
labels.append(Label(name=known_labels.SERVICE, value=doc_gen_example.service_main))
98+
for service, actions in doc_gen_example.services.items():
99+
labels.append(Label(name=known_labels.SERVICE, value=service))
100+
for action in actions:
101+
labels.append(Label(name=known_labels.ACTION, value=action))
102+
return labels
103+
104+
105+
def _snippets(doc_gen_examples: Iterable[DocGenExample], doc_gen_snippets: Dict[str, DocGenSnippet]) -> Set[Snippet]:
106+
snippets = set()
107+
for example in doc_gen_examples:
108+
example_labels = doc_gen_example_labels(example)
109+
for lang, language in example.languages.items():
110+
lang = lang.lower()
111+
for version in language.versions:
112+
excerpts: List[Excerpt] = []
113+
if version.block_content:
114+
excerpts.append(Excerpt(description=version.block_content))
115+
for excerpt in version.excerpts:
116+
if excerpt.description:
117+
excerpts.append(Excerpt(description=excerpt.description))
118+
for tag in [*excerpt.snippet_tags, *excerpt.snippet_files]:
119+
doc_gen_snippet = doc_gen_snippets.get(tag, None)
120+
if doc_gen_snippet:
121+
excerpts.append(Excerpt(path=doc_gen_snippet.file, range=(doc_gen_snippet.line_start, doc_gen_snippet.line_end), content=doc_gen_snippet.code))
122+
labels: List[Label] = [
123+
*example_labels,
124+
Label(name=known_labels.SDK, value=f"{lang}:{version.sdk_version}"),
125+
]
126+
for service in version.add_services:
127+
labels.append(Label(name=known_labels.SERVICE, value=service))
128+
snippet = Snippet(
129+
id=f"{example.id}:{lang}:{version.sdk_version}",
130+
labels=labels,
131+
excerpts=excerpts
132+
)
133+
snippets.add(snippet)
134+
135+
return snippets

0 commit comments

Comments
 (0)