From 156b6be8d37f491a12600d68893ce29debc0caa1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 28 Apr 2024 19:04:15 +0200 Subject: [PATCH] Add Docs build to Ultralytics CI (#10388) Signed-off-by: Glenn Jocher --- .github/workflows/ci.yaml | 15 +++++++++++++++ docs/build_docs.py | 2 +- docs/build_reference.py | 3 ++- tests/test_python.py | 1 + 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a2270fce..15366b7d 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -43,6 +43,21 @@ on: type: boolean jobs: + Docs: + runs-on: macos-14 + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.x" + cache: "pip" # caching pip dependencies + - name: Install Dependencies + run: pip install tqdm mkdocs-material "mkdocstrings[python]" mkdocs-jupyter mkdocs-redirects mkdocs-ultralytics-plugin + - name: Build Docs and Check for Warnings + run: python docs/build_docs.py + HUB: if: github.repository == 'ultralytics/ultralytics' && (github.event_name == 'schedule' || github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.hub == 'true')) runs-on: ${{ matrix.os }} diff --git a/docs/build_docs.py b/docs/build_docs.py index 3d4eadb6..d7e8d4e2 100644 --- a/docs/build_docs.py +++ b/docs/build_docs.py @@ -58,7 +58,7 @@ def build_docs(clone_repos=True): # Build the main documentation print(f"Building docs from {DOCS}") - subprocess.run(f"mkdocs build -f {DOCS.parent}/mkdocs.yml", check=True, shell=True) + subprocess.run(f"mkdocs build -f {DOCS.parent}/mkdocs.yml --strict", check=True, shell=True) print(f"Site built at {SITE}") diff --git a/docs/build_reference.py b/docs/build_reference.py index a9ddd070..7dcb6dba 100644 --- a/docs/build_reference.py +++ b/docs/build_reference.py @@ -50,7 +50,8 @@ def create_markdown(py_filepath: Path, module_path: str, classes: list, function title_content = ( f"# Reference for `{module_path}.py`\n\n" f"!!! Note\n\n" - f" This file is available at [{url}]({url}). If you spot a problem please help fix it by [contributing](https://docs.ultralytics.com/help/contributing/) a [Pull Request]({edit}) 🛠️. Thank you 🙏!\n\n" + f" This file is available at [{url}]({url}). If you spot a problem please help fix it by [contributing]" + f"(https://docs.ultralytics.com/help/contributing/) a [Pull Request]({edit}) 🛠️. Thank you 🙏!\n\n" ) md_content = ["

\n"] + [f"## ::: {module_name}.{class_name}\n\n

\n" for class_name in classes] md_content.extend(f"## ::: {module_name}.{func_name}\n\n

\n" for func_name in functions) diff --git a/tests/test_python.py b/tests/test_python.py index d83bbaab..257ea730 100644 --- a/tests/test_python.py +++ b/tests/test_python.py @@ -637,6 +637,7 @@ def test_model_embeddings(): @pytest.mark.skipif(checks.IS_PYTHON_3_12, reason="YOLOWorld with CLIP is not supported in Python 3.12") def test_yolo_world(): + """Tests YOLO world models with different configurations, including classes, detection, and training scenarios.""" model = YOLO("yolov8s-world.pt") # no YOLOv8n-world model yet model.set_classes(["tree", "window"]) model(ASSETS / "bus.jpg", conf=0.01)