-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP: Add Persian and English mkdocs #30
base: develop
Are you sure you want to change the base?
Conversation
That is not our TOP priority, but we'll work on this branch. |
maintainers: | ||
- login: tiangolo | ||
answers: 1844 | ||
prs: 430 | ||
avatarUrl: https://avatars.githubusercontent.com/u/1326112?u=740f11212a731f56798f558ceddb0bd07642afa7&v=4 | ||
url: https://github.com/tiangolo | ||
experts: | ||
- login: Kludex | ||
count: 434 | ||
avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=62adc405ef418f4b6c8caa93d3eb8ab107bc4927&v=4 | ||
url: https://github.com/Kludex | ||
- login: dmontagu | ||
count: 237 | ||
avatarUrl: https://avatars.githubusercontent.com/u/35119617?u=540f30c937a6450812628b9592a1dfe91bbe148e&v=4 | ||
url: https://github.com/dmontagu | ||
- login: Mause | ||
count: 220 | ||
avatarUrl: https://avatars.githubusercontent.com/u/1405026?v=4 | ||
url: https://github.com/Mause | ||
- login: ycd |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you get rid of these people? they're FastAPI's people not us haha
Maybe you can add us as maintainers :)
sponsors: | ||
- - login: cryptapi | ||
avatarUrl: https://avatars.githubusercontent.com/u/44925437?u=61369138589bc7fee6c417f3fbd50fbd38286cc4&v=4 | ||
url: https://github.com/cryptapi |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We don't have sponsers!
logins: | ||
- jina-ai | ||
- deta | ||
- investsuite | ||
- mikeckennedy | ||
- deepset-ai | ||
- cryptapi | ||
- xoflare | ||
- DropbaseHQ | ||
- VincentParedes | ||
- BLUE-DEVIL1134 | ||
- ObliviousAI | ||
- Doist | ||
- nihpo | ||
- svix | ||
- armand-sauzay | ||
- databento-bot | ||
- nanram22 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We don't have sponsers
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't use FastAPI logo
* **Fast**: Very high performance, on par with **NodeJS** and **Go** (thanks to Starlette and Pydantic). [One of the fastest Python frameworks available](#performance). | ||
* **Fast to code**: Increase the speed to develop features by about 200% to 300%. * | ||
* **Fewer bugs**: Reduce about 40% of human (developer) induced errors. * | ||
* **Intuitive**: Great editor support. <abbr title="also known as auto-complete, autocompletion, IntelliSense">Completion</abbr> everywhere. Less time debugging. | ||
* **Easy**: Designed to be easy to use and learn. Less time reading docs. | ||
* **Short**: Minimize code duplication. Multiple features from each parameter declaration. Fewer bugs. | ||
* **Robust**: Get production-ready code. With automatic interactive documentation. | ||
* **Standards-based**: Based on (and fully compatible with) the open standards for APIs: <a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank">OpenAPI</a> (previously known as Swagger) and <a href="https://json-schema.org/" class="external-link" target="_blank">JSON Schema</a>. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add our own library text
dir_path = Path(config.docs_dir) | ||
lang = dir_path.parent.name | ||
if lang in available_langs: | ||
config.theme["language"] = lang | ||
if not (config.site_url or "").endswith(f"{lang}/") and not lang == "en": | ||
config.site_url = f"{config.site_url}{lang}/" | ||
return config | ||
|
||
|
||
def resolve_file(*, item: str, files: Files, config: MkDocsConfig) -> None: | ||
item_path = Path(config.docs_dir) / item | ||
if not item_path.is_file(): | ||
en_src_dir = (Path(config.docs_dir) / "../../en/docs").resolve() | ||
potential_path = en_src_dir / item | ||
if potential_path.is_file(): | ||
files.append( | ||
EnFile( | ||
path=item, | ||
src_dir=str(en_src_dir), | ||
dest_dir=config.site_dir, | ||
use_directory_urls=config.use_directory_urls, | ||
) | ||
) | ||
|
||
|
||
def resolve_files(*, items: List[Any], files: Files, config: MkDocsConfig) -> None: | ||
for item in items: | ||
if isinstance(item, str): | ||
resolve_file(item=item, files=files, config=config) | ||
elif isinstance(item, dict): | ||
assert len(item) == 1 | ||
values = list(item.values()) | ||
if not values: | ||
continue | ||
if isinstance(values[0], str): | ||
resolve_file(item=values[0], files=files, config=config) | ||
elif isinstance(values[0], list): | ||
resolve_files(items=values[0], files=files, config=config) | ||
else: | ||
raise ValueError(f"Unexpected value: {values}") | ||
|
||
|
||
def on_files(files: Files, *, config: MkDocsConfig) -> Files: | ||
resolve_files(items=config.nav or [], files=files, config=config) | ||
if "logo" in config.theme: | ||
resolve_file(item=config.theme["logo"], files=files, config=config) | ||
if "favicon" in config.theme: | ||
resolve_file(item=config.theme["favicon"], files=files, config=config) | ||
resolve_files(items=config.extra_css, files=files, config=config) | ||
resolve_files(items=config.extra_javascript, files=files, config=config) | ||
return files | ||
|
||
|
||
def generate_renamed_section_items( | ||
items: List[Union[Page, Section, Link]], *, config: MkDocsConfig | ||
) -> List[Union[Page, Section, Link]]: | ||
new_items: List[Union[Page, Section, Link]] = [] | ||
for item in items: | ||
if isinstance(item, Section): | ||
new_title = item.title | ||
new_children = generate_renamed_section_items(item.children, config=config) | ||
first_child = new_children[0] | ||
if isinstance(first_child, Page): | ||
if first_child.file.src_path.endswith("index.md"): | ||
# Read the source so that the title is parsed and available | ||
first_child.read_source(config=config) | ||
new_title = first_child.title or new_title | ||
# Creating a new section makes it render it collapsed by default | ||
# no idea why, so, let's just modify the existing one | ||
# new_section = Section(title=new_title, children=new_children) | ||
item.title = new_title | ||
item.children = new_children | ||
new_items.append(item) | ||
else: | ||
new_items.append(item) | ||
return new_items | ||
|
||
|
||
def on_nav( | ||
nav: Navigation, *, config: MkDocsConfig, files: Files, **kwargs: Any | ||
) -> Navigation: | ||
new_items = generate_renamed_section_items(nav.items, config=config) | ||
return Navigation(items=new_items, pages=nav.pages) | ||
|
||
|
||
def on_pre_page(page: Page, *, config: MkDocsConfig, files: Files) -> Page: | ||
return page | ||
|
||
|
||
def on_page_markdown( | ||
markdown: str, *, page: Page, config: MkDocsConfig, files: Files | ||
) -> str: | ||
if isinstance(page.file, EnFile): | ||
missing_translation_content = get_missing_translation_content(config.docs_dir) | ||
header = "" | ||
body = markdown | ||
if markdown.startswith("#"): | ||
header, _, body = markdown.partition("\n\n") | ||
return f"{header}\n\n{missing_translation_content}\n\n{body}" | ||
return markdown |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Again doc missing
- Add doc string to each function, explaining what it does
- Make sure it's not fastapi related
python3.6 -m pip install --user flit | ||
# Install with Flit | ||
python3.6 -m flit install --user --extras doc | ||
# Finally, run mkdocs | ||
python3.6 -m mkdocs build |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why should we use python 3.6?
|
||
set -e | ||
|
||
flit publish |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i don't think this is how we manage our publish
bash scripts/test.sh ${@} | ||
coverage combine | ||
coverage report --show-missing | ||
coverage html |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
contact with amir bahador regarding this.
#!/usr/bin/env bash | ||
|
||
set -e | ||
set -x | ||
|
||
export PYTHONPATH=./docs_src | ||
coverage run -m pytest tests ${@} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hmm again this is CI/CD
I have added Persian and English mkdocs to the project, but they need to be cleaner and better from now on.