mirror of
https://github.com/deepset-ai/haystack.git
synced 2026-01-05 11:38:20 +00:00
chore: Rework docs generation (#5481)
* Change docs generation to use id for parent doc instead of slug * Rename step
This commit is contained in:
parent
a51ca19fe4
commit
9a359101fd
2
.github/workflows/readme_sync.yml
vendored
2
.github/workflows/readme_sync.yml
vendored
@ -17,7 +17,7 @@ jobs:
|
||||
- name: Checkout this repo
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up Python 3.8.10
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: "3.10"
|
||||
|
||||
@ -18,7 +18,7 @@ title: {title}
|
||||
excerpt: {excerpt}
|
||||
category: {category}
|
||||
slug: {slug}
|
||||
parentDocSlug: {parent_doc_slug}
|
||||
parentDoc: {parent_doc}
|
||||
order: {order}
|
||||
hidden: false
|
||||
---
|
||||
@ -26,6 +26,15 @@ hidden: false
|
||||
"""
|
||||
|
||||
|
||||
def create_headers(version: str):
|
||||
# Utility function to create Readme.io headers.
|
||||
# We assume the README_API_KEY env var is set since we check outside
|
||||
# to show clearer error messages.
|
||||
README_API_KEY = os.getenv("README_API_KEY")
|
||||
token = base64.b64encode(f"{README_API_KEY}:".encode()).decode()
|
||||
return {"authorization": f"Basic {token}", "x-readme-version": version}
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class ReadmeRenderer(Renderer):
|
||||
"""
|
||||
@ -49,8 +58,8 @@ class ReadmeRenderer(Renderer):
|
||||
|
||||
def init(self, context: Context) -> None:
|
||||
self.markdown.init(context)
|
||||
version = self._doc_version()
|
||||
self.categories = self._readme_categories(version)
|
||||
self.version = self._doc_version()
|
||||
self.categories = self._readme_categories(self.version)
|
||||
|
||||
def _doc_version(self) -> str:
|
||||
"""
|
||||
@ -74,8 +83,7 @@ class ReadmeRenderer(Renderer):
|
||||
warnings.warn("README_API_KEY env var is not set, using a placeholder category ID")
|
||||
return {"haystack-classes": "ID"}
|
||||
|
||||
token = base64.b64encode(f"{README_API_KEY}:".encode()).decode()
|
||||
headers = {"authorization": f"Basic {token}", "x-readme-version": version}
|
||||
headers = create_headers(version)
|
||||
|
||||
res = requests.get("https://dash.readme.com/api/v1/categories", headers=headers, timeout=60)
|
||||
|
||||
@ -84,6 +92,29 @@ class ReadmeRenderer(Renderer):
|
||||
|
||||
return {c["slug"]: c["id"] for c in res.json()}
|
||||
|
||||
def _doc_id(self, doc_slug: str, version: str) -> str:
|
||||
"""
|
||||
Fetch the doc id of the given doc slug and version from Readme.io.
|
||||
README_API_KEY env var must be set to correctly get the id.
|
||||
If doc_slug is an empty string return an empty string.
|
||||
"""
|
||||
if not doc_slug:
|
||||
# Not all docs have a parent doc, in case we get no slug
|
||||
# we just return an empty string.
|
||||
return ""
|
||||
|
||||
README_API_KEY = os.getenv("README_API_KEY")
|
||||
if not README_API_KEY:
|
||||
warnings.warn("README_API_KEY env var is not set, using a placeholder doc ID")
|
||||
return "fake-doc-id"
|
||||
|
||||
headers = create_headers(version)
|
||||
res = requests.get(f"https://dash.readme.com/api/v1/docs/{doc_slug}", headers=headers, timeout=60)
|
||||
if not res.ok:
|
||||
sys.exit(f"Error requesting {doc_slug} doc for version {version}")
|
||||
|
||||
return res.json()["id"]
|
||||
|
||||
def render(self, modules: t.List[docspec.Module]) -> None:
|
||||
if self.markdown.filename is None:
|
||||
sys.stdout.write(self._frontmatter())
|
||||
@ -97,7 +128,7 @@ class ReadmeRenderer(Renderer):
|
||||
return README_FRONTMATTER.format(
|
||||
title=self.title,
|
||||
category=self.categories[self.category_slug],
|
||||
parent_doc_slug=self.parent_doc_slug,
|
||||
parent_doc=self._doc_id(self.parent_doc_slug, self.version),
|
||||
excerpt=self.excerpt,
|
||||
slug=self.slug,
|
||||
order=self.order,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user