👷 Upgrade build docs configs (#1047)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
Sebastián Ramírez 2024-08-08 19:13:10 -05:00 committed by GitHub
parent 0678615de5
commit 970492487a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 148 additions and 37 deletions

View File

@ -28,9 +28,12 @@ jobs:
- docs/** - docs/**
- docs_src/** - docs_src/**
- requirements-docs.txt - requirements-docs.txt
- requirements-docs-insiders.txt
- pyproject.toml - pyproject.toml
- mkdocs.yml - mkdocs.yml
- mkdocs.insiders.yml - mkdocs.insiders.yml
- mkdocs.maybe-insiders.yml
- mkdocs.no-insiders.yml
- .github/workflows/build-docs.yml - .github/workflows/build-docs.yml
- .github/workflows/deploy-docs.yml - .github/workflows/deploy-docs.yml
@ -53,16 +56,15 @@ jobs:
id: cache id: cache
with: with:
path: ${{ env.pythonLocation }} path: ${{ env.pythonLocation }}
key: ${{ runner.os }}-python-docs-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml', 'requirements-docs.txt') }}-v01 key: ${{ runner.os }}-python-docs-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml', 'requirements-docs.txt', 'requirements-docs-insiders.txt', 'requirements-docs-tests.txt') }}-v02
- name: Install docs extras - name: Install docs extras
if: steps.cache.outputs.cache-hit != 'true' if: steps.cache.outputs.cache-hit != 'true'
run: pip install -r requirements-docs.txt run: pip install -r requirements-docs.txt
- name: Install Material for MkDocs Insiders - name: Install Material for MkDocs Insiders
if: ( github.event_name != 'pull_request' || github.secret_source == 'Actions' ) && steps.cache.outputs.cache-hit != 'true' if: ( github.event_name != 'pull_request' || github.secret_source == 'Actions' ) && steps.cache.outputs.cache-hit != 'true'
run: | run: pip install -r requirements-docs-insiders.txt
pip install git+https://${{ secrets.SQLMODEL_MKDOCS_MATERIAL_INSIDERS }}@github.com/squidfunk/mkdocs-material-insiders.git env:
pip install git+https://${{ secrets.SQLMODEL_MKDOCS_MATERIAL_INSIDERS }}@github.com/pawamoy-insiders/griffe-typing-deprecated.git TOKEN: ${{ secrets.SQLMODEL_MKDOCS_MATERIAL_INSIDERS }}
pip install git+https://${{ secrets.SQLMODEL_MKDOCS_MATERIAL_INSIDERS }}@github.com/pawamoy-insiders/mkdocstrings-python.git
- uses: actions/cache@v4 - uses: actions/cache@v4
with: with:
key: mkdocs-cards-${{ github.ref }} key: mkdocs-cards-${{ github.ref }}

View File

@ -110,4 +110,6 @@ async function main() {
setupTermynal() setupTermynal()
} }
main() document$.subscribe(() => {
main()
})

View File

@ -1,5 +1,7 @@
# Intro, Installation, and First Steps # Intro, Installation, and First Steps
Before we start playing with **SQLModel**, let's prepare everything else we need. A bit of type annotations, setting up the environment to install everything, and installing DB Browser for SQLite. 🤓
## Type hints ## Type hints
If you need a refresher about how to use Python type hints (type annotations), check <a href="https://fastapi.tiangolo.com/python-types/" class="external-link" target="_blank">FastAPI's Python types intro</a>. If you need a refresher about how to use Python type hints (type annotations), check <a href="https://fastapi.tiangolo.com/python-types/" class="external-link" target="_blank">FastAPI's Python types intro</a>.

View File

@ -1,3 +1,7 @@
plugins: plugins:
social:
typeset: typeset:
markdown_extensions:
material.extensions.preview:
targets:
include:
- ./*

View File

@ -25,16 +25,28 @@ theme:
icon: material/lightbulb-outline icon: material/lightbulb-outline
name: Switch to system preference name: Switch to system preference
features: features:
- search.suggest
- search.highlight
- content.tabs.link
- navigation.indexes
- content.tooltips
- navigation.path
- content.code.annotate - content.code.annotate
- content.code.copy - content.code.copy
- content.code.select # - content.code.select
- content.footnote.tooltips
- content.tabs.link
- content.tooltips
- navigation.footer
- navigation.indexes
- navigation.instant
- navigation.instant.prefetch
- navigation.instant.preview
- navigation.instant.progress
- navigation.path
# - navigation.tabs # - navigation.tabs
# - navigation.tabs.sticky
- navigation.top
- navigation.tracking
- search.highlight
- search.share
- search.suggest
- toc.follow
icon: icon:
repo: fontawesome/brands/github-alt repo: fontawesome/brands/github-alt
logo: img/icon-white.svg logo: img/icon-white.svg
@ -42,11 +54,14 @@ theme:
language: en language: en
repo_name: tiangolo/sqlmodel repo_name: tiangolo/sqlmodel
repo_url: https://github.com/tiangolo/sqlmodel repo_url: https://github.com/tiangolo/sqlmodel
edit_uri: ''
plugins: plugins:
search: null # Material for MkDocs
markdownextradata: search:
data: ./data social:
# Other plugins
macros:
include_yaml:
- sponsors: data/sponsors.yml
nav: nav:
- SQLModel: index.md - SQLModel: index.md
@ -113,33 +128,68 @@ nav:
- release-notes.md - release-notes.md
markdown_extensions: markdown_extensions:
markdown.extensions.attr_list: # Python Markdown
markdown.extensions.tables: abbr:
markdown.extensions.md_in_html: attr_list:
footnotes:
md_in_html:
tables:
toc: toc:
permalink: true permalink: true
# Python Markdown Extensions
pymdownx.betterem:
smart_enable: all
pymdownx.caret:
pymdownx.highlight:
line_spans: __span
pymdownx.inlinehilite:
pymdownx.keys:
pymdownx.mark:
pymdownx.superfences: pymdownx.superfences:
custom_fences: custom_fences:
- name: mermaid - name: mermaid
class: mermaid class: mermaid
format: !!python/name:pymdownx.superfences.fence_code_format '' format: !!python/name:pymdownx.superfences.fence_code_format
pymdownx.betterem: pymdownx.tilde:
pymdownx.blocks.details:
# pymdownx blocks
pymdownx.blocks.admonition: pymdownx.blocks.admonition:
types: types:
- note - note
- info - attention
- tip - caution
- warning
- danger - danger
- error
- tip
- hint
- warning
# Custom types
- info
pymdownx.blocks.details:
pymdownx.blocks.tab: pymdownx.blocks.tab:
alternate_style: True alternate_style: True
# Other extensions
mdx_include: mdx_include:
extra: extra:
analytics: analytics:
provider: google provider: google
property: G-J8HVTT936W property: G-J8HVTT936W
feedback:
title: Was this page helpful?
ratings:
- icon: material/emoticon-happy-outline
name: This page was helpful
data: 1
note: >-
Thanks for your feedback!
- icon: material/emoticon-sad-outline
name: This page could be improved
data: 0
note: >-
Thanks for your feedback!
social: social:
- icon: fontawesome/brands/github-alt - icon: fontawesome/brands/github-alt
link: https://github.com/tiangolo/sqlmodel link: https://github.com/tiangolo/sqlmodel
@ -161,3 +211,6 @@ extra_css:
extra_javascript: extra_javascript:
- js/termynal.js - js/termynal.js
- js/custom.js - js/custom.js
hooks:
- scripts/mkdocs_hooks.py

View File

@ -0,0 +1,3 @@
git+https://${TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git@9.5.30-insiders-4.53.11
git+https://${TOKEN}@github.com/pawamoy-insiders/griffe-typing-deprecated.git
git+https://${TOKEN}@github.com/pawamoy-insiders/mkdocstrings-python.git

View File

@ -1,18 +1,18 @@
-e . -e .
-r requirements-docs-tests.txt -r requirements-docs-tests.txt
mkdocs-material==9.4.7 mkdocs-material==9.5.18
mdx-include >=1.4.1,<2.0.0 mdx-include >=1.4.1,<2.0.0
mkdocs-markdownextradata-plugin >=0.1.7,<0.3.0
mkdocs-redirects>=1.2.1,<1.3.0 mkdocs-redirects>=1.2.1,<1.3.0
pyyaml >=5.3.1,<7.0.0 pyyaml >=5.3.1,<7.0.0
# For Material for MkDocs, Chinese search # For Material for MkDocs, Chinese search
jieba==0.42.1 # jieba==0.42.1
# For image processing by Material for MkDocs # For image processing by Material for MkDocs
pillow==10.1.0 pillow==10.3.0
# For image processing by Material for MkDocs # For image processing by Material for MkDocs
cairosvg==2.7.1 cairosvg==2.7.1
mkdocstrings[python]==0.25.1 # mkdocstrings[python]==0.25.1
# Enable griffe-typingdoc once dropping Python 3.7 and upgrading typing-extensions # Enable griffe-typingdoc once dropping Python 3.7 and upgrading typing-extensions
# griffe-typingdoc==0.2.5 # griffe-typingdoc==0.2.5
# For griffe, it formats with black # For griffe, it formats with black
typer == 0.12.3 typer == 0.12.3
mkdocs-macros-plugin==1.0.5

View File

@ -7,9 +7,6 @@ from http.server import HTTPServer, SimpleHTTPRequestHandler
from importlib import metadata from importlib import metadata
from pathlib import Path from pathlib import Path
import mkdocs.commands.build
import mkdocs.commands.serve
import mkdocs.config
import mkdocs.utils import mkdocs.utils
import typer import typer
from jinja2 import Template from jinja2 import Template
@ -68,6 +65,13 @@ def generate_readme_content() -> str:
pre_content = content[frontmatter_end:pre_end] pre_content = content[frontmatter_end:pre_end]
post_content = content[post_start:] post_content = content[post_start:]
new_content = pre_content + message + post_content new_content = pre_content + message + post_content
# Remove content between <!-- only-mkdocs --> and <!-- /only-mkdocs -->
new_content = re.sub(
r"<!-- only-mkdocs -->.*?<!-- /only-mkdocs -->",
"",
new_content,
flags=re.DOTALL,
)
return new_content return new_content
@ -111,8 +115,11 @@ def live() -> None:
en. en.
""" """
# Enable line numbers during local development to make it easier to highlight # Enable line numbers during local development to make it easier to highlight
os.environ["LINENUMS"] = "true" subprocess.run(
mkdocs.commands.serve.serve(dev_addr="127.0.0.1:8008") ["mkdocs", "serve", "--dev-addr", "127.0.0.1:8008", "--dirty"],
env={**os.environ, "LINENUMS": "true"},
check=True,
)
@app.command() @app.command()

38
scripts/mkdocs_hooks.py Normal file
View File

@ -0,0 +1,38 @@
from typing import Any, List, Union
from mkdocs.config.defaults import MkDocsConfig
from mkdocs.structure.files import Files
from mkdocs.structure.nav import Link, Navigation, Section
from mkdocs.structure.pages import Page
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)