diff --git a/.copier-answers.yml b/.copier-answers.yml index 76531124..d2a2b345 100644 --- a/.copier-answers.yml +++ b/.copier-answers.yml @@ -1,5 +1,5 @@ # Changes here will be overwritten by Copier. -_commit: 1.4.5 +_commit: 1.6.1 _src_path: gh:mkdocstrings/handler-template author_email: dev@pawamoy.fr author_fullname: Timothée Mazzucotelli @@ -8,13 +8,9 @@ copyright_date: '2021' copyright_holder: Timothée Mazzucotelli copyright_holder_email: dev@pawamoy.fr copyright_license: ISC -insiders: true -insiders_email: insiders@pawamoy.fr -insiders_repository_name: mkdocstrings-python language: Python project_description: A Python handler for mkdocstrings. project_name: mkdocstrings-python -public_release: true python_package_distribution_name: mkdocstrings-python python_package_import_name: python repository_name: python diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..6f0f2faf --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,15 @@ +### For reviewers + + +- [ ] I did not use AI +- [ ] I used AI and thoroughly reviewed every code/docs change + +### Description of the change + + +### Relevant resources + + +- +- +- diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cf37ef60..cde0a41b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,10 +2,17 @@ name: ci on: push: + branches: + - main + - test-me-* pull_request: branches: - main +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + defaults: run: shell: bash @@ -14,13 +21,30 @@ env: LANG: en_US.utf-8 LC_ALL: en_US.utf-8 PYTHONIOENCODING: UTF-8 + PYTHONWARNDEFAULTENCODING: "1" PYTHON_VERSIONS: "" jobs: quality: + strategy: + matrix: + os: + - ubuntu-latest + - macos-latest + - windows-latest + python-version: + - "3.10" + - "3.14" + include: + - os: ubuntu-latest + python-version: "3.11" + - os: ubuntu-latest + python-version: "3.12" + - os: ubuntu-latest + python-version: "3.13" - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} steps: - name: Checkout @@ -30,9 +54,9 @@ jobs: fetch-tags: true - name: Setup Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: - python-version: "3.13" + python-version: ${{ matrix.python-version }} - name: Setup uv uses: astral-sh/setup-uv@v5 @@ -57,39 +81,15 @@ jobs: - name: Store objects inventory for tests uses: actions/upload-artifact@v4 + if: ${{ matrix.os == 'ubuntu-latest' && matrix.python-version == '3.13' }} with: name: objects.inv path: site/objects.inv - exclude-test-jobs: - runs-on: ubuntu-latest - outputs: - jobs: ${{ steps.exclude-jobs.outputs.jobs }} - steps: - - id: exclude-jobs - run: | - if ${{ github.repository_owner == 'pawamoy-insiders' }}; then - echo 'jobs=[ - {"os": "macos-latest"}, - {"os": "windows-latest"}, - {"python-version": "3.10"}, - {"python-version": "3.11"}, - {"python-version": "3.12"}, - {"python-version": "3.13"}, - {"python-version": "3.14"} - ]' | tr -d '[:space:]' >> $GITHUB_OUTPUT - else - echo 'jobs=[ - {"os": "macos-latest", "resolution": "lowest-direct"}, - {"os": "windows-latest", "resolution": "lowest-direct"} - ]' | tr -d '[:space:]' >> $GITHUB_OUTPUT - fi - tests: needs: - quality - - exclude-test-jobs strategy: max-parallel: 4 matrix: @@ -98,18 +98,22 @@ jobs: - macos-latest - windows-latest python-version: - - "3.9" - "3.10" - "3.11" - "3.12" - "3.13" - "3.14" + - "3.15" resolution: - highest - lowest-direct - exclude: ${{ fromJSON(needs.exclude-test-jobs.outputs.jobs) }} + exclude: + - os: macos-latest + resolution: lowest-direct + - os: windows-latest + resolution: lowest-direct runs-on: ${{ matrix.os }} - continue-on-error: ${{ matrix.python-version == '3.14' }} + continue-on-error: true steps: - name: Checkout @@ -119,7 +123,7 @@ jobs: fetch-tags: true - name: Setup Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} allow-prereleases: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3ef68f27..1c7cda36 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,30 +15,15 @@ jobs: fetch-depth: 0 fetch-tags: true - name: Setup Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: - python-version: "3.12" + python-version: "3.13" - name: Setup uv uses: astral-sh/setup-uv@v5 - - name: Build dists - if: github.repository_owner == 'pawamoy-insiders' - run: uv tool run --from build pyproject-build - - name: Upload dists artifact - uses: actions/upload-artifact@v4 - if: github.repository_owner == 'pawamoy-insiders' - with: - name: python-insiders - path: ./dist/* - name: Prepare release notes - if: github.repository_owner != 'pawamoy-insiders' run: uv tool run git-changelog --release-notes > release-notes.md - - name: Create release with assets - uses: softprops/action-gh-release@v2 - if: github.repository_owner == 'pawamoy-insiders' - with: - files: ./dist/* - name: Create release uses: softprops/action-gh-release@v2 - if: github.repository_owner != 'pawamoy-insiders' with: body_path: release-notes.md + diff --git a/.github/workflows/sponsors.yml b/.github/workflows/sponsors.yml new file mode 100644 index 00000000..8dd9150f --- /dev/null +++ b/.github/workflows/sponsors.yml @@ -0,0 +1,26 @@ +name: Update sponsors + +on: + schedule: + - cron: '0 0 * * *' + workflow_dispatch: + +permissions: + contents: write + pull-requests: write + +jobs: + update-readme: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Update README and create PR + uses: pawamoy/readme-insert@main + with: + markup-url: https://pawamoy.github.io/sponsors.txt + start-marker: '' + end-marker: '' + commit-message: 'chore: Update sponsors section in README' + pr-title: 'chore: Update sponsors section in README' + pr-body: 'This PR updates the sponsors section in the README file.' diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ac6e8ec..5120a58a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,61 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [2.0.3](https://github.com/mkdocstrings/python/releases/tag/2.0.3) - 2026-02-20 + +[Compare with 2.0.2](https://github.com/mkdocstrings/python/compare/2.0.2...2.0.3) + +### Build + +- Depend on griffelib instead of griffe ([770a5f6](https://github.com/mkdocstrings/python/commit/770a5f69d801f24f0b36d1e671a540196e06f710) by Timothée Mazzucotelli). + +## [2.0.2](https://github.com/mkdocstrings/python/releases/tag/2.0.2) - 2026-02-09 + +[Compare with 2.0.1](https://github.com/mkdocstrings/python/compare/2.0.1...2.0.2) + +### Bug Fixes + +- Fix aliases for parameters ([0ae77a3](https://github.com/mkdocstrings/python/commit/0ae77a3454d47e873be38637ea30d043004ee981) by Timothée Mazzucotelli). [Issue-mkdocstrings-813](https://github.com/mkdocstrings/mkdocstrings/issues/813) + +## [2.0.1](https://github.com/mkdocstrings/python/releases/tag/2.0.1) - 2025-12-03 + +[Compare with 2.0.0](https://github.com/mkdocstrings/python/compare/2.0.0...2.0.1) + +### Bug Fixes + +- Don't ignore filters when category grouping is disabled ([63aa1b0](https://github.com/mkdocstrings/python/commit/63aa1b0af0d14912ebf83a4e3c2cd0c7f2a19dae) by Timothée Mazzucotelli). [Issue-324](https://github.com/mkdocstrings/python/issues/324) + +### Code Refactoring + +- Localize more contents in templates ([854b6a6](https://github.com/mkdocstrings/python/commit/854b6a601bd334fe544285aa9eae11482388a583) by Zhikang Yan). [PR-321](https://github.com/mkdocstrings/python/pull/321) +- Improve ja/zh translations ([b83107c](https://github.com/mkdocstrings/python/commit/b83107c8e86d9650fe4544e569f6da16a46b8472) by Zhikang Yan). [PR-322](https://github.com/mkdocstrings/python/pull/322) + +## [2.0.0](https://github.com/mkdocstrings/python/releases/tag/2.0.0) - 2025-11-27 + +[Compare with 1.19.0](https://github.com/mkdocstrings/python/compare/1.19.0...2.0.0) + +### Code Refactoring + +- Remove deprecated code for v2 ([c10afdb](https://github.com/mkdocstrings/python/commit/c10afdb98d590a23c8840c7c0cdd6c358094dc2c) by Timothée Mazzucotelli). + +## [1.19.0](https://github.com/mkdocstrings/python/releases/tag/1.19.0) - 2025-11-10 + +[Compare with 1.18.2](https://github.com/mkdocstrings/python/compare/1.18.2...1.19.0) + +### Features + +- Release scoped and relative cross-references ([872afc5](https://github.com/mkdocstrings/python/commit/872afc584f33f50a133472afdc9355734a5e51ec) by Timothée Mazzucotelli). +- Release `__all__` ordering feature ([84aaebc](https://github.com/mkdocstrings/python/commit/84aaebcb4991c0245bf7ca8d7024c9d04942b0c1) by Timothée Mazzucotelli). +- Release public filter feature ([3be14cc](https://github.com/mkdocstrings/python/commit/3be14cc07bc9429d7ce01c748d825e2db1559212) by Timothée Mazzucotelli). +- Release backlinks feature ([ae7cc2d](https://github.com/mkdocstrings/python/commit/ae7cc2d7d8ea5711d8ce06620edd534a3e2b47aa) by Timothée Mazzucotelli). +- Release expression modernization feature ([dbadd1e](https://github.com/mkdocstrings/python/commit/dbadd1e898bb2e67515077d152890bdbbf0b3eb1) by Timothée Mazzucotelli). +- Release visually-lighter admonitions for source code blocks ([fdaeb48](https://github.com/mkdocstrings/python/commit/fdaeb48a0f2208bafd14f2f7ead42bca37bea665) by Timothée Mazzucotelli). +- Release inheritance diagram features ([669b42e](https://github.com/mkdocstrings/python/commit/669b42ebd7c154c81764fa98c052cf857f7aa406) by Timothée Mazzucotelli). + +### Code Refactoring + +- Update code base for Python 3.10 ([b696ed2](https://github.com/mkdocstrings/python/commit/b696ed2224756472a3617fa3cc18b69d0418ed71) by Timothée Mazzucotelli). + ## [1.18.2](https://github.com/mkdocstrings/python/releases/tag/1.18.2) - 2025-08-28 [Compare with 1.18.1](https://github.com/mkdocstrings/python/compare/1.18.1...1.18.2) @@ -487,9 +542,6 @@ Importing from submodules is now deprecated: the public API is fully exposed und - [`griffe-inherited-docstrings`](https://mkdocstrings.github.io/griffe-inherited-docstrings/), a Griffe extension for inheriting docstrings - [`griffe2md`](https://mkdocstrings.github.io/griffe2md/), a tool to output API docs to Markdown using Griffe - See the complete list of features and projects here: - https://pawamoy.github.io/insiders/#500-plasmavac-user-guide. - ## [1.7.5](https://github.com/mkdocstrings/python/releases/tag/1.7.5) - 2023-11-21 [Compare with 1.7.4](https://github.com/mkdocstrings/python/compare/1.7.4...1.7.5) diff --git a/Makefile b/Makefile index 5e88121d..1b3391da 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,13 @@ # the `make` command will point at the `scripts/make` shell script. # This Makefile is just here to allow auto-completion in the terminal. +default: help + @echo + @echo 'Enable direnv in your shell to use the `make` command: `direnv allow`' + @echo 'Or use `python scripts/make ARGS` to run the commands/tasks directly.' + +.DEFAULT_GOAL: default + actions = \ allrun \ changelog \ diff --git a/README.md b/README.md index 937a3a84..2d559588 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![ci](https://github.com/mkdocstrings/python/workflows/ci/badge.svg)](https://github.com/mkdocstrings/python/actions?query=workflow%3Aci) [![documentation](https://img.shields.io/badge/docs-mkdocs-708FCC.svg?style=flat)](https://mkdocstrings.github.io/python/) [![pypi version](https://img.shields.io/pypi/v/mkdocstrings-python.svg)](https://pypi.org/project/mkdocstrings-python/) -[![gitter](https://badges.gitter.im/join%20chat.svg)](https://app.gitter.im/#/room/#python:gitter.im) +[![gitter](https://img.shields.io/badge/matrix-chat-4DB798.svg?style=flat)](https://app.gitter.im/#/room/#mkdocstrings_python:gitter.im) --- @@ -77,3 +77,60 @@ dependencies = [ - **Source code display:** *mkdocstrings* can add a collapsible div containing the highlighted source code of the Python object. + +## Sponsors + + + +
+ +
Silver sponsors

+FastAPI
+

+ +
Bronze sponsors

+Nixtla
+

+
+ +--- + +

+ofek +samuelcolvin +tlambert03 +ssbarnea +femtomc +cmarqu +kolenaIO +ramnes +machow +BenHammersley +trevorWieland +MarcoGorelli +analog-cbarber +OdinManiac +rstudio-sponsorship +schlich +butterlyn +livingbio +NemetschekAllplan +EricJayHartman +15r10nk +activeloopai +roboflow +cmclaughlin +blaisep +RapidataAI +rodolphebarbanneau +theSymbolSyndicate +blakeNaccarato +ChargeStorm +Alphadelta14 +Cusp-AI +

+ + +*And 7 more private sponsor(s).* + + diff --git a/config/pytest.ini b/config/pytest.ini index 4f43c18e..39ee3a3c 100644 --- a/config/pytest.ini +++ b/config/pytest.ini @@ -10,6 +10,8 @@ testpaths = # action:message_regex:warning_class:module_regex:line filterwarnings = error + default::EncodingWarning + error::EncodingWarning:python # TODO: Remove once pytest-xdist 4 is released. ignore:.*rsyncdir:DeprecationWarning:xdist # TODO: Remove once mkdocstrings stops setting fallback function. diff --git a/docs/.overrides/main.html b/docs/.overrides/main.html deleted file mode 100644 index 5bedfd03..00000000 --- a/docs/.overrides/main.html +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "base.html" %} - -{% block announce %} - - Fund this project through - sponsorship - - {% include ".icons/octicons/heart-fill-16.svg" %} - — - - Follow - @pawamoy on - - - {% include ".icons/fontawesome/brands/mastodon.svg" %} - - Fosstodon - - for updates -{% endblock %} diff --git a/docs/css/insiders.css b/docs/css/insiders.css deleted file mode 100644 index e7b9c74f..00000000 --- a/docs/css/insiders.css +++ /dev/null @@ -1,124 +0,0 @@ -@keyframes heart { - - 0%, - 40%, - 80%, - 100% { - transform: scale(1); - } - - 20%, - 60% { - transform: scale(1.15); - } -} - -@keyframes vibrate { - 0%, 2%, 4%, 6%, 8%, 10%, 12%, 14%, 16%, 18% { - -webkit-transform: translate3d(-2px, 0, 0); - transform: translate3d(-2px, 0, 0); - } - 1%, 3%, 5%, 7%, 9%, 11%, 13%, 15%, 17%, 19% { - -webkit-transform: translate3d(2px, 0, 0); - transform: translate3d(2px, 0, 0); - } - 20%, 100% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.heart { - color: #e91e63; -} - -.pulse { - animation: heart 1000ms infinite; -} - -.vibrate { - animation: vibrate 2000ms infinite; -} - -.new-feature svg { - fill: var(--md-accent-fg-color) !important; -} - -a.insiders { - color: #e91e63; -} - -.sponsorship-list { - width: 100%; -} - -.sponsorship-item { - border-radius: 100%; - display: inline-block; - height: 1.6rem; - margin: 0.1rem; - overflow: hidden; - width: 1.6rem; -} - -.sponsorship-item:focus, .sponsorship-item:hover { - transform: scale(1.1); -} - -.sponsorship-item img { - filter: grayscale(100%) opacity(75%); - height: auto; - width: 100%; -} - -.sponsorship-item:focus img, .sponsorship-item:hover img { - filter: grayscale(0); -} - -.sponsorship-item.private { - background: var(--md-default-fg-color--lightest); - color: var(--md-default-fg-color); - font-size: .6rem; - font-weight: 700; - line-height: 1.6rem; - text-align: center; -} - -.mastodon { - color: #897ff8; - border-radius: 100%; - box-shadow: inset 0 0 0 .05rem currentcolor; - display: inline-block; - height: 1.2rem !important; - padding: .25rem; - transition: all .25s; - vertical-align: bottom !important; - width: 1.2rem; -} - -.premium-sponsors { - text-align: center; -} - -#silver-sponsors img { - height: 140px; -} - -#bronze-sponsors img { - height: 140px; -} - -#bronze-sponsors p { - display: flex; - flex-wrap: wrap; - justify-content: center; -} - -#bronze-sponsors a { - display: block; - flex-shrink: 0; -} - -.sponsors-total { - font-weight: bold; -} \ No newline at end of file diff --git a/docs/insiders/changelog.md b/docs/insiders/changelog.md deleted file mode 100644 index b5717892..00000000 --- a/docs/insiders/changelog.md +++ /dev/null @@ -1,94 +0,0 @@ -# Changelog - -## mkdocstrings-python Insiders - -### 1.12.0 March 22, 2025 { id="1.12.0" } - -- [Ordering method: `__all__`][option-members_order] - -### 1.11.0 March 20, 2025 { id="1.11.0" } - -- [Filtering method: `public`][option-filters-public] - -### 1.10.0 March 10, 2025 { id="1.10.0" } - -- [Backlinks][backlinks] - -### 1.9.0 September 03, 2024 { id="1.9.0" } - -- [Relative cross-references][relative_crossrefs] -- [Scoped cross-references][scoped_crossrefs] - -### 1.8.3 June 19, 2024 { id="1.8.3" } - -- Update code for Griffe 0.46+ to avoid deprecation warnings - -### 1.8.2 May 09, 2024 { id="1.8.2" } - -- Don't render cross-refs for default values when signatures aren't separated - -### 1.8.1 April 19, 2024 { id="1.8.1" } - -- Render enumeration instance name instead of just "value", allowing proper cross-reference - -### 1.8.0 March 24, 2024 { id="1.8.0" } - -- [Annotations modernization][modernize_annotations] - -### 1.7.0 March 24, 2024 { id="1.7.0" } - -- [Class inheritance diagrams with Mermaid][show_inheritance_diagram] - -### 1.6.0 January 30, 2024 { id="1.6.0" } - -- Render cross-references to parameters documentation in signatures and attribute values. -- Add [`parameter_headings`][parameter_headings] option to render headings for parameters (enabling permalinks and ToC/inventory entries). -- Render cross-references for default parameter values in signatures. - -### 1.5.1 September 12, 2023 { id="1.5.1" } - -- Prevent empty auto-summarized Methods section. - -### 1.5.0 September 05, 2023 { id="1.5.0" } - -- Render function signature overloads. - -### 1.4.0 August 27, 2023 { id="1.4.0" } - -- Render cross-references in attribute signatures. - -### 1.3.0 August 24, 2023 { id="1.3.0" } - -- Add "method" symbol type. - -### 1.2.0 August 20, 2023 { id="1.2.0" } - -- Add [member auto-summaries](../usage/configuration/members.md#summary). - -### 1.1.4 July 17, 2023 { id="1.1.4" } - -- Fix heading level increment for class members. - -### 1.1.3 July 17, 2023 { id="1.1.3" } - -- Fix heading level (avoid with clause preventing to decrease it). - -### 1.1.2 July 15, 2023 { id="1.1.2" } - -- Use non-breaking spaces after symbol types. - -### 1.1.1 June 27, 2023 { id="1.1.1" } - -- Correctly escape expressions in signatures and other rendered types. - -### 1.1.0 June 4, 2023 { id="1.1.0" } - -- Add [Symbol types in headings and table of contents](../usage/configuration/headings.md#show_symbol_type_toc). - -### 1.0.0 May 10, 2023 { id="1.0.0" } - -- Add [cross-references for type annotations in signatures](../usage/configuration/signatures.md#signature_crossrefs). - Make sure to update your local templates as the signature of the - [`format_signature` filter][mkdocstrings_handlers.python.do_format_signature] - has changed. The templates that must be updated: - `class.html`, `expression.html`, `function.html` and `signature.html`. diff --git a/docs/insiders/goals.yml b/docs/insiders/goals.yml deleted file mode 100644 index 71128361..00000000 --- a/docs/insiders/goals.yml +++ /dev/null @@ -1,53 +0,0 @@ -goals: - 500: - name: PlasmaVac User Guide - features: - - name: Cross-references for type annotations in signatures - ref: /usage/configuration/signatures/#signature_crossrefs - since: 2023/05/10 - - name: Symbol types in headings and table of contents - ref: /usage/configuration/headings/#show_symbol_type_toc - since: 2023/06/04 - 1000: - name: GraviFridge Fluid Renewal - features: - - name: Auto-summary of object members - ref: /usage/configuration/members/#summary - since: 2023/08/20 - - name: Automatic rendering of function signature overloads - since: 2023/09/05 - - name: Parameter headings - ref: /usage/configuration/headings/#parameter_headings - since: 2024/01/30 - - name: Automatic cross-references to parameters - ref: /usage/configuration/headings/#parameter_headings - since: 2024/01/30 - - name: Automatic cross-references for default parameter values in signatures - since: 2024/01/30 - 1500: - name: HyperLamp Navigation Tips - features: - - name: Class inheritance diagrams with Mermaid - ref: /usage/configuration/general/#show_inheritance_diagram - since: 2024/03/24 - - name: Annotations modernization - ref: /usage/configuration/signatures/#modernize_annotations - since: 2024/03/24 - 2000: - name: FusionDrive Ejection Configuration - features: - - name: Relative cross-references - ref: /usage/configuration/docstrings/#relative_crossrefs - since: 2024/09/03 - - name: Scoped cross-references - ref: /usage/configuration/docstrings/#scoped_crossrefs - since: 2024/09/03 - - name: Backlinks - ref: /usage/configuration/general/#backlinks - since: 2025/03/10 - - name: "Filtering method: `public`" - ref: /usage/configuration/members/#option-filters-public - since: 2025/03/20 - - name: "Ordering method: `__all__`" - ref: /usage/configuration/members/#option-members_order - since: 2025/03/22 \ No newline at end of file diff --git a/docs/insiders/index.md b/docs/insiders/index.md deleted file mode 100644 index f184961f..00000000 --- a/docs/insiders/index.md +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: Insiders ---- - -# Insiders - -*mkdocstrings-python* follows the **sponsorware** release strategy, which means that new features are first exclusively released to sponsors as part of [Insiders][]. Read on to learn [what sponsorships achieve][sponsorship], [how to become a sponsor][sponsors] to get access to Insiders, and [what's in it for you][features]! - -## What is Insiders? - -*mkdocstrings-python Insiders* is a private fork of *mkdocstrings-python*, hosted as a private GitHub repository. Almost[^1] [all new features][features] are developed as part of this fork, which means that they are immediately available to all eligible sponsors, as they are granted access to this private repository. - -[^1]: In general, every new feature is first exclusively released to sponsors, but sometimes upstream dependencies enhance existing features that must be supported by *mkdocstrings-python*. - -Every feature is tied to a [funding goal][funding] in monthly subscriptions. When a funding goal is hit, the features that are tied to it are merged back into *mkdocstrings-python* and released for general availability, making them available to all users. Bugfixes are always released in tandem. - -Sponsorships start as low as [**$10 a month**][sponsors].[^2] - -[^2]: Note that $10 a month is the minimum amount to become eligible for Insiders. While GitHub Sponsors also allows to sponsor lower amounts or one-time amounts, those can't be granted access to Insiders due to technical reasons. Such contributions are still very much welcome as they help ensuring the project's sustainability. - -## What sponsorships achieve - -Sponsorships make this project sustainable, as they buy the maintainers of this project time – a very scarce resource – which is spent on the development of new features, bug fixing, stability improvement, issue triage and general support. The biggest bottleneck in Open Source is time.[^3] - -[^3]: Making an Open Source project sustainable is exceptionally hard: maintainers burn out, projects are abandoned. That's not great and very unpredictable. The sponsorware model ensures that if you decide to use *mkdocstrings-python*, you can be sure that bugs are fixed quickly and new features are added regularly. - -If you're unsure if you should sponsor this project, check out the list of [completed funding goals][goals completed] to learn whether you're already using features that were developed with the help of sponsorships. You're most likely using at least a handful of them, [thanks to our awesome sponsors][sponsors]! - -## What's in it for me? - -```python exec="1" session="insiders" -data_source = [ - "docs/insiders/goals.yml", - ("griffe-inherited-docstrings", "https://mkdocstrings.github.io/griffe-inherited-docstrings/", "insiders/goals.yml"), - ("griffe-pydantic", "https://mkdocstrings.github.io/griffe-pydantic/", "insiders/goals.yml"), - ("griffe-warnings-deprecated", "https://mkdocstrings.github.io/griffe-warnings-deprecated/", "insiders/goals.yml"), -] -``` - - -```python exec="1" session="insiders" idprefix="" ---8<-- "scripts/insiders.py" - -if unreleased_features: - print( - "The moment you [become a sponsor](#how-to-become-a-sponsor), you'll get **immediate " - f"access to {len(unreleased_features)} additional features** that you can start using right away, and " - "which are currently exclusively available to sponsors:\n" - ) - - for feature in unreleased_features: - feature.render(badge=True) - - print( - "\n\nThese are just the features related to this project. " - "[See the complete feature list on the author's main Insiders page](https://pawamoy.github.io/insiders/#whats-in-it-for-me)." - ) -else: - print( - "The moment you [become a sponsor](#how-to-become-a-sponsor), you'll get immediate " - "access to all released features that you can start using right away, and " - "which are exclusively available to sponsors. At this moment, there are no " - "Insiders features for this project, but checkout the [next funding goals](#goals) " - "to see what's coming, as well as **[the feature list for all Insiders projects](https://pawamoy.github.io/insiders/#whats-in-it-for-me).**" - ) -``` - - -Additionally, your sponsorship will give more weight to your upvotes on issues, helping us prioritize work items in our backlog. For more information on how we prioritize work, see this page: [Backlog management][backlog]. - -## How to become a sponsor - -Thanks for your interest in sponsoring! In order to become an eligible sponsor with your GitHub account, visit [pawamoy's sponsor profile][github sponsor profile], and complete a sponsorship of **$10 a month or more**. You can use your individual or organization GitHub account for sponsoring. - -Sponsorships lower than $10 a month are also very much appreciated, and useful. They won't grant you access to Insiders, but they will be counted towards reaching sponsorship goals. Every sponsorship helps us implementing new features and releasing them to the public. - -**Important:** By default, when you're sponsoring **[@pawamoy][github sponsor profile]** through a GitHub organization, all the publicly visible members of the organization will be invited to join our private repositories. If you wish to only grant access to a subset of users, please send a short email to insiders@pawamoy.fr with the name of your organization and the GitHub accounts of the users that should be granted access. - -**Tip:** to ensure that access is not tied to a particular individual GitHub account, you can create a bot account (i.e. a GitHub account that is not tied to a specific individual), and use this account for the sponsoring. After being granted access to our private repositories, the bot account can create private forks of our private repositories into your own organization, which all members of your organization will have access to. - -You can cancel your sponsorship anytime.[^5] - -[^5]: If you cancel your sponsorship, GitHub schedules a cancellation request which will become effective at the end of the billing cycle. This means that even though you cancel your sponsorship, you will keep your access to Insiders as long as your cancellation isn't effective. All charges are processed by GitHub through Stripe. As we don't receive any information regarding your payment, and GitHub doesn't offer refunds, sponsorships are non-refundable. - -[:octicons-heart-fill-24:{ .pulse }   Join our awesome sponsors][github sponsor profile]{ .md-button .md-button--primary } - -
-
-
-
-
-
-
- -
- - - If you sponsor publicly, you're automatically added here with a link to your profile and avatar to show your support for *mkdocstrings-python*. Alternatively, if you wish to keep your sponsorship private, you'll be a silent +1. You can select visibility during checkout and change it afterwards. - - -## Funding - -### Goals - -The following section lists all funding goals. Each goal contains a list of features prefixed with a checkmark symbol, denoting whether a feature is :octicons-check-circle-fill-24:{ style="color: #00e676" } already available or :octicons-check-circle-fill-24:{ style="color: var(--md-default-fg-color--lightest)" } planned, but not yet implemented. When the funding goal is hit, the features are released for general availability. - -```python exec="1" session="insiders" idprefix="" -for goal in goals.values(): - if not goal.complete: - goal.render() -``` - -### Goals completed - -This section lists all funding goals that were previously completed, which means that those features were part of Insiders, but are now generally available and can be used by all users. - -```python exec="1" session="insiders" idprefix="" -for goal in goals.values(): - if goal.complete: - goal.render() -``` - -## Frequently asked questions - -### Compatibility - -> We're building an open source project and want to allow outside collaborators to use *mkdocstrings-python* locally without having access to Insiders. Is this still possible? - -Yes. Insiders is compatible with *mkdocstrings-python*. Almost all new features and configuration options are either backward-compatible or implemented behind feature flags. Most Insiders features enhance the overall experience, though while these features add value for the users of your project, they shouldn't be necessary for previewing when making changes to content. - -### Payment - -> We don't want to pay for sponsorship every month. Are there any other options? - -Yes. You can sponsor on a yearly basis by [switching your GitHub account to a yearly billing cycle][billing cycle]. If for some reason you cannot do that, you could also create a dedicated GitHub account with a yearly billing cycle, which you only use for sponsoring (some sponsors already do that). - -If you have any problems or further questions, please reach out to insiders@pawamoy.fr. - -### Terms - -> Are we allowed to use Insiders under the same terms and conditions as *mkdocstrings-python*? - -Yes. Whether you're an individual or a company, you may use *mkdocstrings-python Insiders* precisely under the same terms as *mkdocstrings-python*, which are given by the [ISC license][license]. However, we kindly ask you to respect our **fair use policy**: - -- Please **don't distribute the source code** of Insiders. You may freely use it for public, private or commercial projects, privately fork or mirror it, but please don't make the source code public, as it would counteract the sponsorware strategy. -- If you cancel your subscription, your access to the private repository is revoked, and you will miss out on all future updates of Insiders. However, you may **use the latest version** that's available to you **as long as you like**. Just remember that [GitHub deletes private forks][private forks]. - -[backlog]: https://pawamoy.github.io/backlog/ -[insiders]: #what-is-insiders -[sponsorship]: #what-sponsorships-achieve -[sponsors]: #how-to-become-a-sponsor -[features]: #whats-in-it-for-me -[funding]: #funding -[goals completed]: #goals-completed -[github sponsor profile]: https://github.com/sponsors/pawamoy -[billing cycle]: https://docs.github.com/en/github/setting-up-and-managing-billing-and-payments-on-github/changing-the-duration-of-your-billing-cycle -[license]: ../license.md -[private forks]: https://docs.github.com/en/github/setting-up-and-managing-your-github-user-account/removing-a-collaborator-from-a-personal-repository - - - diff --git a/docs/insiders/installation.md b/docs/insiders/installation.md deleted file mode 100644 index 3e20e5d7..00000000 --- a/docs/insiders/installation.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Getting started with Insiders ---- - -# Getting started with Insiders - -*mkdocstrings-python Insiders* is a compatible drop-in replacement for *mkdocstrings-python*, and can be installed similarly using `pip` or `git`. Note that in order to access the Insiders repository, you need to [become an eligible sponsor][] of @pawamoy on GitHub. - -## Installation - -### with the `insiders` tool - -[`insiders`][insiders-tool] is a tool that helps you keep up-to-date versions of Insiders projects in the PyPI index of your choice (self-hosted, Google registry, Artifactory, etc.). - -**We kindly ask that you do not upload the distributions to public registries, as it is against our [Terms of use][].** - -### with pip (ssh/https) - -*mkdocstrings-python Insiders* can be installed with `pip` [using SSH][install-pip-ssh]: - -```bash -pip install git+ssh://git@github.com/pawamoy-insiders/mkdocstrings-python.git -``` - -Or using HTTPS: - -```bash -pip install git+https://${GH_TOKEN}@github.com/pawamoy-insiders/mkdocstrings-python.git -``` - ->? NOTE: **How to get a GitHub personal access token?** The `GH_TOKEN` environment variable is a GitHub token. It can be obtained by creating a [personal access token][github-pat] for your GitHub account. It will give you access to the Insiders repository, programmatically, from the command line or GitHub Actions workflows: -> -> 1. Go to https://github.com/settings/tokens -> 2. Click on [Generate a new token][github-pat-new] -> 3. Enter a name and select the [`repo`][scopes] scope -> 4. Generate the token and store it in a safe place -> -> Note that the personal access token must be kept secret at all times, as it allows the owner to access your private repositories. - -### with Git - -Of course, you can use *mkdocstrings-python Insiders* directly using Git: - -``` -git clone git@github.com:pawamoy-insiders/mkdocstrings-python -``` - -When cloning with Git, the package must be installed: - -``` -pip install -e mkdocstrings-python -``` - -## Upgrading - -When upgrading Insiders, you should always check the version of *mkdocstrings-python* which makes up the first part of the version qualifier. For example, a version like `8.x.x.4.x.x` means that Insiders `4.x.x` is currently based on `8.x.x`. - -If the major version increased, it's a good idea to consult the [changelog][] and go through the steps to ensure your configuration is up to date and all necessary changes have been made. - -[become an eligible sponsor]: ./index.md#how-to-become-a-sponsor -[changelog]: ./changelog.md -[github-pat]: https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token -[github-pat-new]: https://github.com/settings/tokens/new -[insiders-tool]: https://pawamoy.github.io/insiders-project/ -[install-pip-ssh]: https://docs.github.com/en/authentication/connecting-to-github-with-ssh -[scopes]: https://docs.github.com/en/developers/apps/scopes-for-oauth-apps#available-scopes -[terms of use]: ./index.md#terms diff --git a/docs/js/insiders.js b/docs/js/insiders.js deleted file mode 100644 index 8bb68485..00000000 --- a/docs/js/insiders.js +++ /dev/null @@ -1,74 +0,0 @@ -function humanReadableAmount(amount) { - const strAmount = String(amount); - if (strAmount.length >= 4) { - return `${strAmount.slice(0, strAmount.length - 3)},${strAmount.slice(-3)}`; - } - return strAmount; -} - -function getJSON(url, callback) { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'json'; - xhr.onload = function () { - var status = xhr.status; - if (status === 200) { - callback(null, xhr.response); - } else { - callback(status, xhr.response); - } - }; - xhr.send(); -} - -function updatePremiumSponsors(dataURL, rank) { - let capRank = rank.charAt(0).toUpperCase() + rank.slice(1); - getJSON(dataURL + `/sponsors${capRank}.json`, function (err, sponsors) { - const sponsorsDiv = document.getElementById(`${rank}-sponsors`); - if (sponsors.length > 0) { - let html = ''; - html += `${capRank} sponsors

` - sponsors.forEach(function (sponsor) { - html += ` - - ${sponsor.name} - - ` - }); - html += '

' - sponsorsDiv.innerHTML = html; - } - }); -} - -function updateInsidersPage(author_username) { - const sponsorURL = `https://github.com/sponsors/${author_username}` - const dataURL = `https://raw.githubusercontent.com/${author_username}/sponsors/main`; - getJSON(dataURL + '/numbers.json', function (err, numbers) { - document.getElementById('sponsors-count').innerHTML = numbers.count; - Array.from(document.getElementsByClassName('sponsors-total')).forEach(function (element) { - element.innerHTML = '$ ' + humanReadableAmount(numbers.total); - }); - getJSON(dataURL + '/sponsors.json', function (err, sponsors) { - const sponsorsElem = document.getElementById('sponsors'); - const privateSponsors = numbers.count - sponsors.length; - sponsors.forEach(function (sponsor) { - sponsorsElem.innerHTML += ` - - - - `; - }); - if (privateSponsors > 0) { - sponsorsElem.innerHTML += ` - - +${privateSponsors} - - `; - } - }); - }); - updatePremiumSponsors(dataURL, "gold"); - updatePremiumSponsors(dataURL, "silver"); - updatePremiumSponsors(dataURL, "bronze"); -} diff --git a/docs/usage/configuration/docstrings.md b/docs/usage/configuration/docstrings.md index f864d102..95f9032f 100644 --- a/docs/usage/configuration/docstrings.md +++ b/docs/usage/configuration/docstrings.md @@ -327,9 +327,6 @@ class Thing: [](){#option-relative_crossrefs} ## `relative_crossrefs` -[:octicons-heart-fill-24:{ .pulse } Sponsors only](../../insiders/index.md){ .insiders } — -[:octicons-tag-24: Insiders 1.9.0](../../insiders/changelog.md#1.9.0) - - **:octicons-package-24: Type [`bool`][] :material-equal: `False`{ title="default value" }** @@ -440,9 +437,6 @@ INFO: **There is an alternative, third-party Python handler that handles relativ [](){#option-scoped_crossrefs} ## `scoped_crossrefs` -[:octicons-heart-fill-24:{ .pulse } Sponsors only](../../insiders/index.md){ .insiders } — -[:octicons-tag-24: Insiders 1.9.0](../../insiders/changelog.md#1.9.0) - - **:octicons-package-24: Type [`bool`][] :material-equal: `False`{ title="default value" }** diff --git a/docs/usage/configuration/general.md b/docs/usage/configuration/general.md index 68899890..921f3b27 100644 --- a/docs/usage/configuration/general.md +++ b/docs/usage/configuration/general.md @@ -63,9 +63,6 @@ plugins: [](){#option-backlinks} ## `backlinks` -[:octicons-heart-fill-24:{ .pulse } Sponsors only](../../insiders/index.md){ .insiders } — -[:octicons-tag-24: Insiders 1.10.0](../../insiders/changelog.md#1.10.0) - - **:octicons-package-24: Type Literal["flat", "tree", False] :material-equal: `False`{ title="default value" }** The `backlinks` option enables rendering of backlinks within your API documentation. @@ -269,6 +266,143 @@ plugins: WARNING: **Packages are loaded only once.** When mkdocstrings-python collects data from a Python package (thanks to [Griffe](https://mkdocstrings.github.io/griffe/)), it collects *the entire package* and *caches it*. Next time an object from the same package is rendered, the package is retrieved from the cache and not collected again. The `force_inspection` option will therefore only have an effect the first time a package is collected, and will do nothing for objects rendered afterwards. +[](){#option-inheritance_diagram_direction} +## `inheritance_diagram_direction` + +The direction of the Mermaid chart presenting the inheritance diagram of a class, `TD` by default. + +```yaml title="mkdocs.yml" +extra_javascript: +- https://unpkg.com/mermaid@10.9.0/dist/mermaid.min.js +``` + +```yaml title="in mkdocs.yml (global configuration)" +plugins: +- mkdocstrings: + handlers: + python: + options: + inheritance_diagram_direction: TD +``` + +```md title="or in docs/some_page.md (local configuration)" +::: path.to.object + options: + inheritance_diagram_direction: TD +``` + +/// admonition | Preview + type: preview + + +With the following classes: + +```python +class SuperAbstract: + """Super abstract class.""" +class Mixin1: + """Mixin 1.""" +class Abstract(SuperAbstract, Mixin1): + """Abstract class.""" +class Mixin2A: + """Mixin 2A.""" +class Mixin2B(Mixin2A): + """Mixin 2B.""" +class Concrete(Abstract, Mixin2B): + """Concrete class.""" +class SuperConcrete(Concrete): + """Super concrete class.""" +``` + +//// tab | `TD` (or `TB`) + +```mermaid +flowchart TD +SuperConcrete[SuperConcrete] +Concrete[Concrete] +Abstract[Abstract] +SuperAbstract[SuperAbstract] +Mixin1[Mixin1] +Mixin2B[Mixin2B] +Mixin2A[Mixin2A] + +Concrete --> SuperConcrete +Abstract --> Concrete +SuperAbstract --> Abstract +Mixin1 --> Abstract +Mixin2B --> Concrete +Mixin2A --> Mixin2B +``` + +//// + +//// tab | `BT` + +```mermaid +flowchart BT +SuperConcrete[SuperConcrete] +Concrete[Concrete] +Abstract[Abstract] +SuperAbstract[SuperAbstract] +Mixin1[Mixin1] +Mixin2B[Mixin2B] +Mixin2A[Mixin2A] + +Concrete --> SuperConcrete +Abstract --> Concrete +SuperAbstract --> Abstract +Mixin1 --> Abstract +Mixin2B --> Concrete +Mixin2A --> Mixin2B +``` + +//// + +//// tab | `RL` + +```mermaid +flowchart RL +SuperConcrete[SuperConcrete] +Concrete[Concrete] +Abstract[Abstract] +SuperAbstract[SuperAbstract] +Mixin1[Mixin1] +Mixin2B[Mixin2B] +Mixin2A[Mixin2A] + +Concrete --> SuperConcrete +Abstract --> Concrete +SuperAbstract --> Abstract +Mixin1 --> Abstract +Mixin2B --> Concrete +Mixin2A --> Mixin2B +``` + +//// + +//// tab | `LR` + +```mermaid +flowchart LR +SuperConcrete[SuperConcrete] +Concrete[Concrete] +Abstract[Abstract] +SuperAbstract[SuperAbstract] +Mixin1[Mixin1] +Mixin2B[Mixin2B] +Mixin2A[Mixin2A] + +Concrete --> SuperConcrete +Abstract --> Concrete +SuperAbstract --> Abstract +Mixin1 --> Abstract +Mixin2B --> Concrete +Mixin2A --> Mixin2B +``` + +//// +/// + [](){#option-preload_modules} ## `preload_modules` @@ -366,9 +500,6 @@ plugins: [](){#option-show_inheritance_diagram} ## `show_inheritance_diagram` -[:octicons-heart-fill-24:{ .pulse } Sponsors only](../../insiders/index.md){ .insiders } — -[:octicons-tag-24: Insiders 1.7.0](../../insiders/changelog.md#1.7.0) - - **:octicons-package-24: Type [`bool`][] :material-equal: `False`{ title="default value" }** diff --git a/docs/usage/configuration/headings.md b/docs/usage/configuration/headings.md index 8e904e5f..593b6fb0 100644 --- a/docs/usage/configuration/headings.md +++ b/docs/usage/configuration/headings.md @@ -77,8 +77,6 @@ plugins: [](){#option-parameter_headings} ## `parameter_headings` -[:octicons-tag-24: Insiders 1.6.0](../../insiders/changelog.md#1.6.0) - - **:octicons-package-24: Type [`bool`][] :material-equal: `False`{ title="default value" }** @@ -537,8 +535,6 @@ plugins: [](){#option-show_symbol_type_heading} ## `show_symbol_type_heading` -[:octicons-tag-24: Insiders 1.1.0](../../insiders/changelog.md#1.1.0) - - **:octicons-package-24: Type [`bool`][] :material-equal: `False`{ title="default value" }** @@ -602,8 +598,6 @@ plugins: [](){#option-show_symbol_type_toc} ## `show_symbol_type_toc` -[:octicons-tag-24: Insiders 1.1.0](../../insiders/changelog.md#1.1.0) - - **:octicons-package-24: Type [`bool`][] :material-equal: `False`{ title="default value" }** diff --git a/docs/usage/configuration/members.md b/docs/usage/configuration/members.md index 3c344221..53d955fa 100644 --- a/docs/usage/configuration/members.md +++ b/docs/usage/configuration/members.md @@ -269,7 +269,7 @@ class Main(Base): The members ordering to use. Possible values: -- `__all__` ([:octicons-heart-fill-24:{ .pulse } Sponsors only](../../insiders/index.md){ .insiders } — [:octicons-tag-24: Insiders 1.12.0](../../insiders/changelog.md#1.12.0)): Order according to `__all__` attributes. Since classes do not define `__all__` attributes, you can specify a second ordering method by using a list. +- `__all__`: Order according to `__all__` attributes. Since classes do not define `__all__` attributes, you can specify a second ordering method by using a list. - `alphabetical`: Order by the members names. - `source`: Order members as they appear in the source file. @@ -351,9 +351,6 @@ A list of filters, or `"public"`. [](){#option-filters-public} -[:octicons-heart-fill-24:{ .pulse } Sponsors only](../../insiders/index.md){ .insiders } — -[:octicons-tag-24: Insiders 1.11.0](../../insiders/changelog.md#1.11.0) - The `public` filtering method will include only public objects: those added to the `__all__` attribute of modules, or not starting with a single underscore. Special methods and attributes ("dunder" methods/attributes, starting and ending with two underscores), like `__init__`, `__call__`, `__mult__`, etc., are always considered public. **List of filters** @@ -577,8 +574,6 @@ package [](){#option-summary} ## `summary` -[:octicons-tag-24: Insiders 1.2.0](../../insiders/changelog.md#1.2.0) - - **:octicons-package-24: Type bool | dict[str, bool] :material-equal: `False`{ title="default value" }** diff --git a/docs/usage/configuration/signatures.md b/docs/usage/configuration/signatures.md index 0dabf74f..109362e3 100644 --- a/docs/usage/configuration/signatures.md +++ b/docs/usage/configuration/signatures.md @@ -203,12 +203,6 @@ plugins: [](){#option-modernize_annotations} ## `modernize_annotations` -[:octicons-heart-fill-24:{ .pulse } Sponsors only](../../insiders/index.md){ .insiders } — -[:octicons-tag-24: Insiders 1.8.0](../../insiders/changelog.md#1.8.0) — -**This feature also requires -[Griffe Insiders](https://mkdocstrings.github.io/griffe/insiders/) -to be installed.** - - **:octicons-package-24: Type [`bool`][] :material-equal: `False`{ title="default value" }** @@ -289,6 +283,8 @@ plugins: [](){#option-overloads_only} ## `overloads_only` +- **:octicons-package-24: Type [`bool`][] :material-equal: `False`{ title="default value" }** + Whether to hide the implementation signature if the overloads are shown with [`show_overloads`][]. ```yaml title="in mkdocs.yml (global configuration)" @@ -297,7 +293,7 @@ plugins: handlers: python: options: - overloads_only: true + overloads_only: false ``` ```md title="or in docs/some_page.md (local configuration)" @@ -584,6 +580,8 @@ class SomeClass: [](){#option-show_overloads} ## `show_overloads` +- **:octicons-package-24: Type [`bool`][] :material-equal: `True`{ title="default value" }** + Whether to render function / method overloads. ```yaml title="in mkdocs.yml (global configuration)" @@ -633,8 +631,6 @@ Function docstring. [](){#option-signature_crossrefs} ## `signature_crossrefs` -[:octicons-tag-24: Insiders 1.0.0](../../insiders/changelog.md#1.0.0) - Whether to render cross-references for type annotations in signatures. When signatures are separated from headings with the [`separate_signature`][] option diff --git a/docs/usage/index.md b/docs/usage/index.md index e1fa457f..3348a627 100644 --- a/docs/usage/index.md +++ b/docs/usage/index.md @@ -380,3 +380,107 @@ poetry install poetry run mkdocs build ``` /// + +## Recommended settings + +If you're in a hurry, here is the configuration we recommend for the Python handler. + +```yaml +- mkdocstrings: + handlers: + python: + + # Where to find your sources, see "Finding modules". + paths: [src] + + # Load object inventories to enable cross-references to other projects. + inventories: + - https://docs.python.org/3/objects.inv + # Also load inventories of your dependencies, generally served at + # https://docs-url-for-your-dependency/objects.inv. + + options: + + # DOCSTRINGS ------------------------------------------------------------- + docstring_options: + # Discard first line of `__init__` method docstrings, + # useful when merging such docstrings into their parent class'. + ignore_init_summary: true + + # Tables are generally too large, lists will fix this. + docstring_section_style: list + + # CROSS-REFERENCES ------------------------------------------------------- + # Enable relative crossrefs and scoped crossrefs, see Docstrings options. + relative_crossrefs: true # Sponsors only! + scoped_crossrefs: true # Sponsors only! + + # Enable cross-references in signatures. + signature_crossrefs: true + + # Unwrap actual types from `Annotated` type annotations. + unwrap_annotated: true + + # MEMBERS ---------------------------------------------------------------- + # Only render pulic symbols. + filters: public # Sponsors only! + # Comment the option otherwise to get the default filters. + + # Show class inherited members. + inherited_members: true + + # Render auto-generated summaries of attributes, functions, etc. + # at the start of each symbol's documentation. + summary: true + + # HEADINGS --------------------------------------------------------------- + # For auto-generated pages, one module per page, + # make the module heading be the H1 heading of the page. + heading_level: 1 + + # Render headings for parameters, making them linkable. + parameter_headings: true + + # Render headings for type parameters too. + type_parameter_headings: true + + # Always show the heading for the symbol you render with `::: id`. + show_root_heading: true + + # Only show the name of the symbols you inject render `::: id`. + show_root_full_path: false + + # Show the type of symbol (class, function, etc.) in the heading. + show_symbol_type_heading: true + + # Show the type of symbol (class, function, etc.) in the table of contents. + show_symbol_type_toc: true + + # SIGNATURES ------------------------------------------------------------- + # Format code to 80 + 10% margin (Black and Ruff defaults) + # in signatures and attribute value code blocks. + # Needs Black/Ruff installed. + line_length: 88 + + # Merge signature and docstring of `__init__` methods + # into their parent class signature and docstring. + merge_init_into_class: true + + # Render signatures and attribute values in a separate code block, + # below the symbol heading. + separate_signature: true + + # Show type annotations in signatures. + show_signature_annotations: true + + # Show type parameters in signatures. + show_signature_type_parameters: true + + # OTHER ------------------------------------------------------------------ + # Show backlinks to other documentation sections within each symbol. + backlinks: tree # Sponsors only! + + # Show base classes OR inheritance diagram. + show_bases: false + show_inheritance_diagram: true # Sponsors only! +``` diff --git a/duties.py b/duties.py index 0fa73ea0..3aa9b662 100644 --- a/duties.py +++ b/duties.py @@ -5,17 +5,12 @@ import os import re import sys -from contextlib import contextmanager -from functools import wraps -from importlib.metadata import version as pkgversion from pathlib import Path -from typing import TYPE_CHECKING, Any, Callable +from typing import TYPE_CHECKING from duty import duty, tools if TYPE_CHECKING: - from collections.abc import Iterator - from duty.context import Context @@ -26,6 +21,8 @@ WINDOWS = os.name == "nt" PTY = not WINDOWS and not CI MULTIRUN = os.environ.get("MULTIRUN", "0") == "1" +PY_VERSION = f"{sys.version_info.major}{sys.version_info.minor}" +PY_DEV = "314" def pyprefix(title: str) -> str: @@ -35,33 +32,6 @@ def pyprefix(title: str) -> str: return title -def not_from_insiders(func: Callable) -> Callable: - @wraps(func) - def wrapper(ctx: Context, *args: Any, **kwargs: Any) -> None: - origin = ctx.run("git config --get remote.origin.url", silent=True) - if "pawamoy-insiders/griffe" in origin: - ctx.run( - lambda: False, - title="Not running this task from insiders repository (do that from public repo instead!)", - ) - return - func(ctx, *args, **kwargs) - - return wrapper - - -@contextmanager -def material_insiders() -> Iterator[bool]: - if "+insiders" in pkgversion("mkdocs-material"): - os.environ["MATERIAL_INSIDERS"] = "true" - try: - yield True - finally: - os.environ.pop("MATERIAL_INSIDERS") - else: - yield False - - def _get_changelog_version() -> str: changelog_version_re = re.compile(r"^## \[(\d+\.\d+\.\d+)\].*$") with Path(__file__).parent.joinpath("CHANGELOG.md").open("r", encoding="utf8") as file: @@ -84,7 +54,7 @@ def check(ctx: Context) -> None: """Check it all!""" -@duty +@duty(nofail=PY_VERSION == PY_DEV) def check_quality(ctx: Context) -> None: """Check the code quality.""" ctx.run( @@ -93,19 +63,22 @@ def check_quality(ctx: Context) -> None: ) -@duty(skip_if=sys.version_info < (3, 13), skip_reason=pyprefix("Skipped: docs require modern generics syntax")) +@duty( + nofail=PY_VERSION == PY_DEV, + skip_if=sys.version_info < (3, 13), + skip_reason=pyprefix("Skipped: docs require modern generics syntax"), +) def check_docs(ctx: Context) -> None: """Check if the documentation builds correctly.""" Path("htmlcov").mkdir(parents=True, exist_ok=True) Path("htmlcov/index.html").touch(exist_ok=True) - with material_insiders(): - ctx.run( - tools.mkdocs.build(strict=True, verbose=True), - title=pyprefix("Building documentation"), - ) + ctx.run( + tools.mkdocs.build(strict=True, verbose=True), + title=pyprefix("Building documentation"), + ) -@duty +@duty(nofail=PY_VERSION == PY_DEV) def check_types(ctx: Context) -> None: """Check that the code is correctly typed.""" os.environ["MYPYPATH"] = "src" @@ -118,7 +91,7 @@ def check_types(ctx: Context) -> None: ) -@duty +@duty(nofail=PY_VERSION == PY_DEV) def check_api(ctx: Context, *cli_args: str) -> None: """Check for API breaking changes.""" ctx.run( @@ -136,48 +109,18 @@ def docs(ctx: Context, *cli_args: str, host: str = "127.0.0.1", port: int = 8000 host: The host to serve the docs from. port: The port to serve the docs on. """ - with material_insiders(): - ctx.run( - tools.mkdocs.serve(dev_addr=f"{host}:{port}").add_args(*cli_args), - title="Serving documentation", - capture=False, - ) + ctx.run( + tools.mkdocs.serve(dev_addr=f"{host}:{port}").add_args(*cli_args), + title="Serving documentation", + capture=False, + ) @duty(skip_if=sys.version_info < (3, 13), skip_reason=pyprefix("Skipped: docs require modern generics syntax")) -def docs_deploy(ctx: Context, *, force: bool = False) -> None: - """Deploy the documentation to GitHub pages. - - Parameters: - force: Whether to force deployment, even from non-Insiders version. - """ +def docs_deploy(ctx: Context) -> None: + """Deploy the documentation to GitHub pages.""" os.environ["DEPLOY"] = "true" - with material_insiders() as insiders: - if not insiders: - ctx.run(lambda: False, title="Not deploying docs without Material for MkDocs Insiders!") - origin = ctx.run("git config --get remote.origin.url", silent=True, allow_overrides=False) - if "pawamoy-insiders/mkdocstrings-python" in origin: - ctx.run( - "git remote add upstream git@github.com:mkdocstrings/python", - silent=True, - nofail=True, - allow_overrides=False, - ) - ctx.run( - tools.mkdocs.gh_deploy(remote_name="upstream", force=True), - title="Deploying documentation", - ) - elif force: - ctx.run( - tools.mkdocs.gh_deploy(force=True), - title="Deploying documentation", - ) - else: - ctx.run( - lambda: False, - title="Not deploying docs from public repository (do that from insiders instead!)", - nofail=True, - ) + ctx.run(tools.mkdocs.gh_deploy(force=True), title="Deploying documentation") @duty @@ -201,7 +144,6 @@ def build(ctx: Context) -> None: @duty -@not_from_insiders def publish(ctx: Context) -> None: """Publish source and wheel distributions to PyPI.""" if not Path("dist").exists(): @@ -215,7 +157,6 @@ def publish(ctx: Context) -> None: @duty(post=["build", "publish", "docs-deploy"]) -@not_from_insiders def release(ctx: Context, version: str = "") -> None: """Release a new Python package. @@ -226,7 +167,7 @@ def release(ctx: Context, version: str = "") -> None: ctx.run("false", title="A version must be provided") ctx.run("git add pyproject.toml CHANGELOG.md", title="Staging files", pty=PTY) ctx.run(["git", "commit", "-m", f"chore: Prepare release {version}"], title="Committing changes", pty=PTY) - ctx.run(f"git tag {version}", title="Tagging commit", pty=PTY) + ctx.run(f"git tag -m '' -a {version}", title="Tagging commit", pty=PTY) ctx.run("git push", title="Pushing commits", pty=False) ctx.run("git push --tags", title="Pushing tags", pty=False) @@ -239,16 +180,11 @@ def coverage(ctx: Context) -> None: ctx.run(tools.coverage.html(rcfile="config/coverage.ini")) -@duty -def test(ctx: Context, *cli_args: str, match: str = "", snapshot: str = "report") -> None: # noqa: PT028 - """Run the test suite. - - Parameters: - match: A pytest expression to filter selected tests. - snapshot: Whether to "create", "fix", "trim", or "update" snapshots. - """ - py_version = f"{sys.version_info.major}{sys.version_info.minor}" - os.environ["COVERAGE_FILE"] = f".coverage.{py_version}" +@duty(nofail=PY_VERSION == PY_DEV) +def test(ctx: Context, *cli_args: str, snapshot: str = "report") -> None: # noqa: PT028 + """Run the test suite.""" + os.environ["COVERAGE_FILE"] = f".coverage.{PY_VERSION}" + os.environ["PYTHONWARNDEFAULTENCODING"] = "1" args = list(cli_args) if snapshot == "disable" or not snapshot: args = ["-n", "auto", "--inline-snapshot=disable"] @@ -258,7 +194,6 @@ def test(ctx: Context, *cli_args: str, match: str = "", snapshot: str = "report" tools.pytest( "tests", config_file="config/pytest.ini", - select=match, color="yes", ).add_args(*args), title=pyprefix("Running tests"), diff --git a/mkdocs.yml b/mkdocs.yml index 0796e003..64d0de3a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -41,13 +41,8 @@ nav: - Development: - Contributing: contributing.md - Code of Conduct: code_of_conduct.md - # - Coverage report: coverage.md -- Insiders: - - insiders/index.md - - Getting started: - - Installation: insiders/installation.md - - Changelog: insiders/changelog.md -- mkdocstrings: https://mkdocstrings.github.io/ + - Coverage report: coverage.md + - mkdocstrings: https://mkdocstrings.github.io/ theme: name: material @@ -93,7 +88,6 @@ theme: extra_css: - css/material.css - css/mkdocstrings.css -- css/insiders.css extra_javascript: - js/feedback.js @@ -143,7 +137,7 @@ plugins: - autorefs - markdown-exec - section-index -# - coverage +- coverage - mkdocstrings: handlers: python: @@ -177,7 +171,7 @@ plugins: show_root_full_path: false show_signature_annotations: true show_signature_type_parameters: true - show_source: false + show_source: true show_symbol_type_heading: true show_symbol_type_toc: true signature_crossrefs: true @@ -203,11 +197,7 @@ plugins: reference/mkdocstrings_handlers/python/debug.md: reference/api.md#mkdocstrings_handlers.python.debug reference/mkdocstrings_handlers/python/handler.md: reference/api.md#mkdocstrings_handlers.python.handler reference/mkdocstrings_handlers/python/rendering.md: reference/api.md#mkdocstrings_handlers.python.rendering - -- group: - enabled: !ENV [MATERIAL_INSIDERS, false] - plugins: - - typeset +- typeset extra: social: diff --git a/pyproject.toml b/pyproject.toml index ad0c852c..96d3c713 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ authors = [{name = "Timothée Mazzucotelli", email = "dev@pawamoy.fr"}] license = "ISC" license-files = ["LICENSE"] readme = "README.md" -requires-python = ">=3.9" +requires-python = ">=3.10" keywords = [] dynamic = ["version"] classifiers = [ @@ -18,7 +18,6 @@ classifiers = [ "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", @@ -33,7 +32,7 @@ classifiers = [ dependencies = [ "mkdocstrings>=0.30", "mkdocs-autorefs>=1.4", - "griffe>=1.13", + "griffelib>=2.0", "typing-extensions>=4.0; python_version < '3.11'", ] diff --git a/scripts/gen_credits.py b/scripts/gen_credits.py index 6a81e239..0eab7685 100644 --- a/scripts/gen_credits.py +++ b/scripts/gen_credits.py @@ -55,7 +55,7 @@ def _extra_marker(req: Requirement) -> str | None: if not req.marker: return None try: - return next(marker[2].value for marker in req.marker._markers if getattr(marker[0], "value", None) == "extra") + return next(marker[2].value for marker in req.marker._markers if getattr(marker[0], "value", None) == "extra") # type: ignore[union-attr] except StopIteration: return None diff --git a/scripts/get_version.py b/scripts/get_version.py index 6734e5b6..3c425a73 100644 --- a/scripts/get_version.py +++ b/scripts/get_version.py @@ -4,7 +4,12 @@ from contextlib import suppress from pathlib import Path -from pdm.backend.hooks.version import SCMVersion, Version, default_version_formatter, get_version_from_scm +from pdm.backend.hooks.version import ( # ty: ignore[unresolved-import] + SCMVersion, + Version, + default_version_formatter, + get_version_from_scm, +) _root = Path(__file__).parent.parent _changelog = _root / "CHANGELOG.md" diff --git a/scripts/griffe_extensions.py b/scripts/griffe_extensions.py index eb50f5f2..5a4447ca 100644 --- a/scripts/griffe_extensions.py +++ b/scripts/griffe_extensions.py @@ -24,7 +24,7 @@ def on_attribute_instance( if attr.docstring: return try: - field: griffe.ExprCall = attr.annotation.slice.elements[1] # type: ignore[union-attr] + field: griffe.ExprCall = attr.annotation.slice.elements[1] except AttributeError: return diff --git a/scripts/insiders.py b/scripts/insiders.py deleted file mode 100644 index 4cd438d4..00000000 --- a/scripts/insiders.py +++ /dev/null @@ -1,173 +0,0 @@ -# Functions related to Insiders funding goals. - -from __future__ import annotations - -import json -import logging -import os -import posixpath -from dataclasses import dataclass -from datetime import date, datetime, timedelta -from itertools import chain -from pathlib import Path -from typing import TYPE_CHECKING, cast -from urllib.error import HTTPError -from urllib.parse import urljoin -from urllib.request import urlopen - -import yaml - -if TYPE_CHECKING: - from collections.abc import Iterable - -logger = logging.getLogger(f"mkdocs.logs.{__name__}") - - -def human_readable_amount(amount: int) -> str: - str_amount = str(amount) - if len(str_amount) >= 4: # noqa: PLR2004 - return f"{str_amount[: len(str_amount) - 3]},{str_amount[-3:]}" - return str_amount - - -@dataclass -class Project: - name: str - url: str - - -@dataclass -class Feature: - name: str - ref: str | None - since: date | None - project: Project | None - - def url(self, rel_base: str = "..") -> str | None: # noqa: D102 - if not self.ref: - return None - if self.project: - rel_base = self.project.url - return posixpath.join(rel_base, self.ref.lstrip("/")) - - def render(self, rel_base: str = "..", *, badge: bool = False) -> None: # noqa: D102 - new = "" - if badge: - recent = self.since and date.today() - self.since <= timedelta(days=60) # noqa: DTZ011 - if recent: - ft_date = self.since.strftime("%B %d, %Y") # type: ignore[union-attr] - new = f' :material-alert-decagram:{{ .new-feature .vibrate title="Added on {ft_date}" }}' - project = f"[{self.project.name}]({self.project.url}) — " if self.project else "" - feature = f"[{self.name}]({self.url(rel_base)})" if self.ref else self.name - print(f"- [{'x' if self.since else ' '}] {project}{feature}{new}") - - -@dataclass -class Goal: - name: str - amount: int - features: list[Feature] - complete: bool = False - - @property - def human_readable_amount(self) -> str: # noqa: D102 - return human_readable_amount(self.amount) - - def render(self, rel_base: str = "..") -> None: # noqa: D102 - print(f"#### $ {self.human_readable_amount} — {self.name}\n") - if self.features: - for feature in self.features: - feature.render(rel_base) - print("") - else: - print("There are no features in this goal for this project. ") - print( - "[See the features in this goal **for all Insiders projects.**]" - f"(https://pawamoy.github.io/insiders/#{self.amount}-{self.name.lower().replace(' ', '-')})", - ) - - -def load_goals(data: str, funding: int = 0, project: Project | None = None) -> dict[int, Goal]: - goals_data = yaml.safe_load(data)["goals"] - return { - amount: Goal( - name=goal_data["name"], - amount=amount, - complete=funding >= amount, - features=[ - Feature( - name=feature_data["name"], - ref=feature_data.get("ref"), - since=feature_data.get("since") and datetime.strptime(feature_data["since"], "%Y/%m/%d").date(), # noqa: DTZ007 - project=project, - ) - for feature_data in goal_data["features"] - ], - ) - for amount, goal_data in goals_data.items() - } - - -def _load_goals_from_disk(path: str, funding: int = 0) -> dict[int, Goal]: - project_dir = os.getenv("MKDOCS_CONFIG_DIR", ".") - try: - data = Path(project_dir, path).read_text() - except OSError as error: - raise RuntimeError(f"Could not load data from disk: {path}") from error - return load_goals(data, funding) - - -def _load_goals_from_url(source_data: tuple[str, str, str], funding: int = 0) -> dict[int, Goal]: - project_name, project_url, data_fragment = source_data - data_url = urljoin(project_url, data_fragment) - try: - with urlopen(data_url) as response: # noqa: S310 - data = response.read() - except HTTPError as error: - raise RuntimeError(f"Could not load data from network: {data_url}") from error - return load_goals(data, funding, project=Project(name=project_name, url=project_url)) - - -def _load_goals(source: str | tuple[str, str, str], funding: int = 0) -> dict[int, Goal]: - if isinstance(source, str): - return _load_goals_from_disk(source, funding) - return _load_goals_from_url(source, funding) - - -def funding_goals(source: str | list[str | tuple[str, str, str]], funding: int = 0) -> dict[int, Goal]: - if isinstance(source, str): - return _load_goals_from_disk(source, funding) - goals = {} - for src in source: - source_goals = _load_goals(src, funding) - for amount, goal in source_goals.items(): - if amount not in goals: - goals[amount] = goal - else: - goals[amount].features.extend(goal.features) - return {amount: goals[amount] for amount in sorted(goals)} - - -def feature_list(goals: Iterable[Goal]) -> list[Feature]: - return list(chain.from_iterable(goal.features for goal in goals)) - - -def load_json(url: str) -> str | list | dict: - with urlopen(url) as response: # noqa: S310 - return json.loads(response.read().decode()) - - -data_source = globals()["data_source"] -sponsor_url = "https://github.com/sponsors/pawamoy" -data_url = "https://raw.githubusercontent.com/pawamoy/sponsors/main" -numbers: dict[str, int] = load_json(f"{data_url}/numbers.json") # type: ignore[assignment] -sponsors: list[dict] = load_json(f"{data_url}/sponsors.json") # type: ignore[assignment] -current_funding = numbers["total"] -sponsors_count = numbers["count"] -goals = funding_goals(data_source, funding=current_funding) -ongoing_goals = [goal for goal in goals.values() if not goal.complete] -unreleased_features = sorted( - (ft for ft in feature_list(ongoing_goals) if ft.since), - key=lambda ft: cast("date", ft.since), - reverse=True, -) diff --git a/scripts/make.py b/scripts/make.py index 5a7fb4c2..b741a366 100755 --- a/scripts/make.py +++ b/scripts/make.py @@ -14,7 +14,8 @@ from collections.abc import Iterator -PYTHON_VERSIONS = os.getenv("PYTHON_VERSIONS", "3.9 3.10 3.11 3.12 3.13").split() +PYTHON_VERSIONS = os.getenv("PYTHON_VERSIONS", "3.10 3.11 3.12 3.13 3.14 3.15").split() +PYTHON_DEV = "3.15" def shell(cmd: str, *, capture_output: bool = False, **kwargs: Any) -> str | None: @@ -67,16 +68,31 @@ def setup() -> None: uv_install(venv_path) +class _RunError(subprocess.CalledProcessError): + def __init__(self, *args: Any, python_version: str, **kwargs: Any): + super().__init__(*args, **kwargs) + self.python_version = python_version + + def run(version: str, cmd: str, *args: str, **kwargs: Any) -> None: """Run a command in a virtual environment.""" kwargs = {"check": True, **kwargs} uv_run = ["uv", "run", "--no-sync"] - if version == "default": - with environ(UV_PROJECT_ENVIRONMENT=".venv"): - subprocess.run([*uv_run, cmd, *args], **kwargs) # noqa: S603, PLW1510 - else: - with environ(UV_PROJECT_ENVIRONMENT=f".venvs/{version}", MULTIRUN="1"): - subprocess.run([*uv_run, cmd, *args], **kwargs) # noqa: S603, PLW1510 + try: + if version == "default": + with environ(UV_PROJECT_ENVIRONMENT=".venv"): + subprocess.run([*uv_run, cmd, *args], **kwargs) # noqa: S603, PLW1510 + else: + with environ(UV_PROJECT_ENVIRONMENT=f".venvs/{version}", MULTIRUN="1"): + subprocess.run([*uv_run, cmd, *args], **kwargs) # noqa: S603, PLW1510 + except subprocess.CalledProcessError as process: + raise _RunError( + returncode=process.returncode, + python_version=version, + cmd=process.cmd, + output=process.output, + stderr=process.stderr, + ) from process def multirun(cmd: str, *args: str, **kwargs: Any) -> None: @@ -144,19 +160,31 @@ def main() -> int: cmd = args.pop(0) if cmd == "run": - run("default", *args) + if not args: + print("make: run: missing command", file=sys.stderr) + return 1 + run("default", *args) # ty: ignore[missing-argument] return 0 if cmd == "multirun": - multirun(*args) + if not args: + print("make: run: missing command", file=sys.stderr) + return 1 + multirun(*args) # ty: ignore[missing-argument] return 0 if cmd == "allrun": - allrun(*args) + if not args: + print("make: run: missing command", file=sys.stderr) + return 1 + allrun(*args) # ty: ignore[missing-argument] return 0 if cmd.startswith("3."): - run(cmd, *args) + if not args: + print("make: run: missing command", file=sys.stderr) + return 1 + run(cmd, *args) # ty: ignore[missing-argument] return 0 opts = [] @@ -183,7 +211,14 @@ def main() -> int: if __name__ == "__main__": try: sys.exit(main()) - except subprocess.CalledProcessError as process: + except _RunError as process: if process.output: print(process.output, file=sys.stderr) - sys.exit(process.returncode) + if (code := process.returncode) == 139: # noqa: PLR2004 + print( + f"✗ (python{process.python_version}) '{' '.join(process.cmd)}' failed with return code {code} (segfault)", + file=sys.stderr, + ) + if process.python_version == PYTHON_DEV: + code = 0 + sys.exit(code) diff --git a/src/mkdocstrings_handlers/python/__init__.py b/src/mkdocstrings_handlers/python/__init__.py index 7e12fa73..dbad0355 100644 --- a/src/mkdocstrings_handlers/python/__init__.py +++ b/src/mkdocstrings_handlers/python/__init__.py @@ -24,14 +24,12 @@ do_as_modules_section, do_as_type_aliases_section, do_backlink_tree, - do_crossref, do_filter_objects, do_format_attribute, do_format_code, do_format_signature, do_format_type_alias, do_get_template, - do_multi_crossref, do_order_members, do_split_path, do_stash_crossref, @@ -59,14 +57,12 @@ "do_as_modules_section", "do_as_type_aliases_section", "do_backlink_tree", - "do_crossref", "do_filter_objects", "do_format_attribute", "do_format_code", "do_format_signature", "do_format_type_alias", "do_get_template", - "do_multi_crossref", "do_order_members", "do_split_path", "do_stash_crossref", diff --git a/src/mkdocstrings_handlers/python/_internal/config.py b/src/mkdocstrings_handlers/python/_internal/config.py index 62c124ba..f9f8963b 100644 --- a/src/mkdocstrings_handlers/python/_internal/config.py +++ b/src/mkdocstrings_handlers/python/_internal/config.py @@ -39,18 +39,6 @@ if getattr(pydantic, "__version__", "1.").startswith("1."): raise ImportError # noqa: TRY301 - # YORE: EOL 3.9: Remove block. - if sys.version_info < (3, 10): - try: - import eval_type_backport # noqa: F401 - except ImportError: - _logger.debug( - "Pydantic needs the `eval-type-backport` package to be installed " - "for modern type syntax to work on Python 3.9. " - "Deactivating Pydantic validation for Python handler options.", - ) - raise - from inspect import cleandoc from pydantic import Field as BaseField @@ -87,14 +75,7 @@ def _Field(*args: Any, **kwargs: Any) -> None: # type: ignore[misc] # noqa: N8 from collections.abc import MutableMapping -# YORE: EOL 3.9: Remove block. -_dataclass_options = {"frozen": True} -if sys.version_info >= (3, 10): - _dataclass_options["kw_only"] = True - - -# YORE: EOL 3.9: Replace `**_dataclass_options` with `frozen=True, kw_only=True` within line. -@dataclass(**_dataclass_options) # type: ignore[call-overload] +@dataclass(frozen=True, kw_only=True) class GoogleStyleOptions: """Google style docstring options.""" @@ -205,8 +186,7 @@ class GoogleStyleOptions: ] = True -# YORE: EOL 3.9: Replace `**_dataclass_options` with `frozen=True, kw_only=True` within line. -@dataclass(**_dataclass_options) # type: ignore[call-overload] +@dataclass(frozen=True, kw_only=True) class NumpyStyleOptions: """Numpy style docstring options.""" @@ -256,8 +236,7 @@ class NumpyStyleOptions: ] = True -# YORE: EOL 3.9: Replace `**_dataclass_options` with `frozen=True, kw_only=True` within line. -@dataclass(**_dataclass_options) # type: ignore[call-overload] +@dataclass(frozen=True, kw_only=True) class SphinxStyleOptions: """Sphinx style docstring options.""" @@ -289,8 +268,7 @@ class SphinxStyleOptions: ] = True -# YORE: EOL 3.9: Replace `**_dataclass_options` with `frozen=True, kw_only=True` within line. -@dataclass(**_dataclass_options) # type: ignore[call-overload] +@dataclass(frozen=True, kw_only=True) class PerStyleOptions: """Per style options.""" @@ -333,8 +311,7 @@ def from_data(cls, **data: Any) -> Self: return cls(**data) -# YORE: EOL 3.9: Replace `**_dataclass_options` with `frozen=True, kw_only=True` within line. -@dataclass(**_dataclass_options) # type: ignore[call-overload] +@dataclass(frozen=True, kw_only=True) class AutoStyleOptions: """Auto style docstring options.""" @@ -382,8 +359,7 @@ def from_data(cls, **data: Any) -> Self: return cls(**data) -# YORE: EOL 3.9: Replace `**_dataclass_options` with `frozen=True, kw_only=True` within line. -@dataclass(**_dataclass_options) # type: ignore[call-overload] +@dataclass(frozen=True, kw_only=True) class SummaryOption: """Summary option.""" @@ -433,8 +409,7 @@ class SummaryOption: ] = False -# YORE: EOL 3.9: Replace `**_dataclass_options` with `frozen=True, kw_only=True` within line. -@dataclass(**_dataclass_options) # type: ignore[call-overload] +@dataclass(frozen=True, kw_only=True) class PythonInputOptions: """Accepted input options.""" @@ -519,14 +494,11 @@ class PythonInputOptions: **Filtering methods** - [:octicons-heart-fill-24:{ .pulse } Sponsors only](../insiders/index.md){ .insiders } — - [:octicons-tag-24: Insiders 1.11.0](../insiders/changelog.md#1.11.0) - The `public` method will include only public objects: those added to `__all__` or not starting with an underscore (except for special methods/attributes). """, ), - ] = field(default_factory=lambda: _DEFAULT_FILTERS.copy()) + ] = field(default_factory=_DEFAULT_FILTERS.copy) find_stubs_package: Annotated[ bool, @@ -560,6 +532,14 @@ class PythonInputOptions: ), ] = 2 + inheritance_diagram_direction: Annotated[ + Literal["TB", "TD", "BT", "RL", "LR"], + _Field( + group="docstrings", + description="The direction of the Mermaid chart presenting the inheritance diagram of a class.", + ), + ] = "TD" + inherited_members: Annotated[ bool | list[str], _Field( @@ -1062,8 +1042,7 @@ def from_data(cls, **data: Any) -> Self: return cls(**cls.coerce(**data)) -# YORE: EOL 3.9: Replace `**_dataclass_options` with `frozen=True, kw_only=True` within line. -@dataclass(**_dataclass_options) # type: ignore[call-overload] +@dataclass(frozen=True, kw_only=True) class PythonOptions(PythonInputOptions): # type: ignore[override,unused-ignore] """Final options passed as template context.""" @@ -1080,11 +1059,7 @@ class PythonOptions(PythonInputOptions): # type: ignore[override,unused-ignore] @classmethod def coerce(cls, **data: Any) -> MutableMapping[str, Any]: """Create an instance from a dictionary.""" - if "filters" in data: - # Non-insiders: transform back to default filters. - # Next: `if "filters" in data and not isinstance(data["filters"], str):`. - if data["filters"] == "public": - data["filters"] = _DEFAULT_FILTERS + if "filters" in data and not isinstance(data["filters"], str): # Filters are `None` or a sequence of strings (tests use tuples). data["filters"] = [ (re.compile(filtr.removeprefix("!")), filtr.startswith("!")) for filtr in data["filters"] or () @@ -1092,8 +1067,7 @@ def coerce(cls, **data: Any) -> MutableMapping[str, Any]: return super().coerce(**data) -# YORE: EOL 3.9: Replace `**_dataclass_options` with `frozen=True, kw_only=True` within line. -@dataclass(**_dataclass_options) # type: ignore[call-overload] +@dataclass(frozen=True, kw_only=True) class Inventory: """An inventory.""" @@ -1126,8 +1100,7 @@ def _config(self) -> dict[str, Any]: return {"base_url": self.base_url, "domains": self.domains} -# YORE: EOL 3.9: Replace `**_dataclass_options` with `frozen=True, kw_only=True` within line. -@dataclass(**_dataclass_options) # type: ignore[call-overload] +@dataclass(frozen=True, kw_only=True) class PythonInputConfig: """Python handler configuration.""" @@ -1169,8 +1142,7 @@ def from_data(cls, **data: Any) -> Self: return cls(**cls.coerce(**data)) -# YORE: EOL 3.9: Replace `**_dataclass_options` with `frozen=True, kw_only=True` within line. -@dataclass(**_dataclass_options) # type: ignore[call-overload] +@dataclass(frozen=True, kw_only=True) class PythonConfig(PythonInputConfig): # type: ignore[override,unused-ignore] """Python handler configuration.""" diff --git a/src/mkdocstrings_handlers/python/_internal/debug.py b/src/mkdocstrings_handlers/python/_internal/debug.py index 5fff669f..a3c99d75 100644 --- a/src/mkdocstrings_handlers/python/_internal/debug.py +++ b/src/mkdocstrings_handlers/python/_internal/debug.py @@ -85,7 +85,7 @@ def _get_debug_info() -> _Environment: interpreter_version=py_version, interpreter_path=sys.executable, platform=platform.platform(), - variables=[_Variable(var, val) for var in variables if (val := os.getenv(var))], + variables=[_Variable(var, val) for var in variables if (val := os.getenv(var))], # ty: ignore[invalid-argument-type] packages=[_Package(pkg, _get_version(pkg)) for pkg in packages], ) diff --git a/src/mkdocstrings_handlers/python/_internal/handler.py b/src/mkdocstrings_handlers/python/_internal/handler.py index fbed2b8e..b84cd8ba 100644 --- a/src/mkdocstrings_handlers/python/_internal/handler.py +++ b/src/mkdocstrings_handlers/python/_internal/handler.py @@ -10,7 +10,6 @@ from dataclasses import asdict from pathlib import Path from typing import TYPE_CHECKING, Any, BinaryIO, ClassVar -from warnings import warn from griffe import ( AliasResolutionError, @@ -22,15 +21,17 @@ patch_loggers, ) from mkdocs.exceptions import PluginError +from mkdocs_autorefs import BacklinkCrumb from mkdocstrings import BaseHandler, CollectionError, CollectorItem, HandlerOptions, Inventory, get_logger from mkdocstrings_handlers.python._internal import rendering from mkdocstrings_handlers.python._internal.config import PythonConfig, PythonOptions if TYPE_CHECKING: - from collections.abc import Iterator, Mapping, MutableMapping, Sequence + from collections.abc import Iterable, Iterator, Mapping, MutableMapping, Sequence from mkdocs.config.defaults import MkDocsConfig + from mkdocs_autorefs import Backlink # YORE: EOL 3.10: Replace block with line 2. @@ -54,17 +55,6 @@ def chdir(path: str) -> Iterator[None]: patch_loggers(get_logger) -# YORE: Bump 2: Remove block. -def _warn_extra_options(names: Sequence[str]) -> None: - warn( - "Passing extra options directly under `options` is deprecated. " - "Instead, pass them under `options.extra`, and update your templates. " - f"Current extra (unrecognized) options: {', '.join(sorted(names))}", - DeprecationWarning, - stacklevel=3, - ) - - class PythonHandler(BaseHandler): """The Python handler class.""" @@ -95,18 +85,9 @@ def __init__(self, config: PythonConfig, base_dir: Path, **kwargs: Any) -> None: self.base_dir = base_dir """The base directory of the project.""" - # YORE: Bump 2: Remove block. - global_extra, global_options = PythonOptions._extract_extra(config.options) - if global_extra: - _warn_extra_options(global_extra.keys()) # type: ignore[arg-type] - self._global_extra = global_extra - self.global_options = global_options + self.global_options = config.options """The global configuration options (in `mkdocs.yml`).""" - # YORE: Bump 2: Replace `# ` with `` within block. - # self.global_options = config.options - # """The global configuration options (in `mkdocs.yml`).""" - # Warn if user overrides base templates. if self.custom_templates: for theme_dir in base_dir.joinpath(self.custom_templates, "python").iterdir(): @@ -158,7 +139,7 @@ def load_inventory( ) -> Iterator[tuple[str, str]]: """Yield items and their URLs from an inventory file streamed from `in_file`. - This implements mkdocstrings' `load_inventory` "protocol" (see [`mkdocstrings.plugin`][]). + This implements mkdocstrings' `load_inventory` "protocol" (see [`mkdocstrings.BaseHandler.load_inventory`][]). Arguments: in_file: The binary file-like object to read the inventory from. @@ -186,25 +167,13 @@ def get_options(self, local_options: Mapping[str, Any]) -> HandlerOptions: Returns: The combined options. """ - # YORE: Bump 2: Remove block. - local_extra, local_options = PythonOptions._extract_extra(local_options) # type: ignore[arg-type] - if local_extra: - _warn_extra_options(local_extra.keys()) # type: ignore[arg-type] - unknown_extra = self._global_extra | local_extra - extra = {**self.global_options.get("extra", {}), **local_options.get("extra", {})} options = {**self.global_options, **local_options, "extra": extra} try: - # YORE: Bump 2: Replace `opts =` with `return` within line. - opts = PythonOptions.from_data(**options) + return PythonOptions.from_data(**options) except Exception as error: raise PluginError(f"Invalid options: {error}") from error - # YORE: Bump 2: Remove block. - for key, value in unknown_extra.items(): - object.__setattr__(opts, key, value) - return opts - def collect(self, identifier: str, options: PythonOptions) -> CollectorItem: """Collect the documentation for the given identifier. @@ -234,7 +203,7 @@ def collect(self, identifier: str, options: PythonOptions) -> CollectorItem: extensions=load_extensions(*extensions), search_paths=self._paths, docstring_parser=parser, - docstring_options=parser_options, # type: ignore[arg-type] + docstring_options=parser_options, modules_collection=self._modules_collection, lines_collection=self._lines_collection, allow_inspection=options.allow_inspection, @@ -289,7 +258,7 @@ def render(self, data: CollectorItem, options: PythonOptions, locale: str | None Returns: The rendered data (HTML). """ - template_name = rendering.do_get_template(self.env, data) + template_name = rendering.do_get_template(data) template = self.env.get_template(template_name) return template.render( @@ -301,11 +270,28 @@ def render(self, data: CollectorItem, options: PythonOptions, locale: str | None # than as an item in a dictionary. "heading_level": options.heading_level, "root": True, - # YORE: Bump 2: Regex-replace ` or .+` with ` or "en",` within line. - "locale": locale or self.config.locale, + "locale": locale or "en", }, ) + def render_backlinks(self, backlinks: Mapping[str, Iterable[Backlink]], *, locale: str | None = None) -> str: # noqa: ARG002 + """Render the backlinks. + + Parameters: + backlinks: The backlinks to render. + + Returns: + The rendered backlinks (HTML). + """ + template = self.env.get_template("backlinks.html.jinja") + verbose_type = {key: key.capitalize().replace("-by", " by") for key in backlinks.keys()} # noqa: SIM118 + return template.render( + backlinks=backlinks, + config=self.get_options({}), + verbose_type=verbose_type, + default_crumb=BacklinkCrumb(title="", url=""), + ) + def update_env(self, config: Any) -> None: # noqa: ARG002 """Update the Jinja environment with custom filters and tests. @@ -316,8 +302,6 @@ def update_env(self, config: Any) -> None: # noqa: ARG002 self.env.lstrip_blocks = True self.env.keep_trailing_newline = False self.env.filters["split_path"] = rendering.do_split_path - self.env.filters["crossref"] = rendering.do_crossref - self.env.filters["multi_crossref"] = rendering.do_multi_crossref self.env.filters["order_members"] = rendering.do_order_members self.env.filters["format_code"] = rendering.do_format_code self.env.filters["format_signature"] = rendering.do_format_signature @@ -346,7 +330,7 @@ def get_aliases(self, identifier: str) -> tuple[str, ...]: """ if "(" in identifier: identifier, parameter = identifier.split("(", 1) - parameter.removesuffix(")") + parameter = parameter.removesuffix(")") else: parameter = "" try: @@ -414,10 +398,7 @@ def get_handler( # We therefore increase the limit here, once, before Griffe is used to collect or render stuff. sys.setrecursionlimit(max(sys.getrecursionlimit(), 2000)) - base_dir = Path(tool_config.config_file_path or "./mkdocs.yml").parent - if "inventories" not in handler_config and "import" in handler_config: - warn("The 'import' key is renamed 'inventories' for the Python handler", FutureWarning, stacklevel=1) - handler_config["inventories"] = handler_config.pop("import", []) + base_dir = Path(getattr(tool_config, "config_file_path", None) or "./mkdocs.yml").parent return PythonHandler( config=PythonConfig.from_data(**handler_config), base_dir=base_dir, diff --git a/src/mkdocstrings_handlers/python/_internal/rendering.py b/src/mkdocstrings_handlers/python/_internal/rendering.py index 99aeb014..a906b465 100644 --- a/src/mkdocstrings_handlers/python/_internal/rendering.py +++ b/src/mkdocstrings_handlers/python/_internal/rendering.py @@ -7,13 +7,11 @@ import string import subprocess import sys -import warnings from collections import defaultdict from contextlib import suppress from dataclasses import replace from functools import lru_cache -from pathlib import Path -from re import Match, Pattern +from re import Pattern from typing import TYPE_CHECKING, Any, Callable, ClassVar, Literal, TypeVar from griffe import ( @@ -33,7 +31,7 @@ Object, TypeAlias, ) -from jinja2 import TemplateNotFound, pass_context, pass_environment +from jinja2 import pass_context from markupsafe import Markup from mkdocs_autorefs import AutorefsHookInterface, Backlink, BacklinkCrumb from mkdocstrings import get_logger @@ -42,7 +40,6 @@ from collections.abc import Iterable, Iterator, Sequence from griffe import Attribute, Class, Function, Module - from jinja2 import Environment from jinja2.runtime import Context from mkdocstrings import CollectorItem @@ -62,8 +59,15 @@ def _sort_key_source(item: CollectorItem) -> float: return item.lineno if item.lineno is not None else float("inf") -def _sort__all__(item: CollectorItem) -> float: # noqa: ARG001 - raise ValueError("Not implemented in public version of mkdocstrings-python") +def _sort__all__(item: CollectorItem) -> float: + if item.parent.exports is not None: + try: + return item.parent.exports.index(item.name) + except ValueError: + # If the item is not in `__all__`, it will go to the end of the list. + return float("inf") + # No exports declared, refuse to sort (try other methods or return members as they are). + raise ValueError(f"Parent object {item.parent.path} doesn't declare exports") Order = Literal["__all__", "alphabetical", "source"] @@ -163,10 +167,8 @@ def do_format_signature( The same code, formatted. """ env = context.environment - # YORE: Bump 2: Replace `do_get_template(env, "type_parameters")` with `"type_parameters.html.jinja"` within line. - type_params_template = env.get_template(do_get_template(env, "type_parameters")) - # YORE: Bump 2: Replace `do_get_template(env, "signature")` with `"signature.html.jinja"` within line. - signature_template = env.get_template(do_get_template(env, "signature")) + type_params_template = env.get_template("type_parameters.html.jinja") + signature_template = env.get_template("signature.html.jinja") if annotations is None: new_context = context.parent @@ -230,8 +232,7 @@ def do_format_attribute( The same code, formatted. """ env = context.environment - # YORE: Bump 2: Replace `do_get_template(env, "expression")` with `"expression.html.jinja"` within line. - template = env.get_template(do_get_template(env, "expression")) + template = env.get_template("expression.html.jinja") annotations = context.parent["config"].show_signature_annotations signature = str(attribute_path).strip() @@ -288,10 +289,8 @@ def do_format_type_alias( The same code, formatted. """ env = context.environment - # YORE: Bump 2: Replace `do_get_template(env, "type_parameters")` with `"type_parameters.html.jinja"` within line. - type_params_template = env.get_template(do_get_template(env, "type_parameters")) - # YORE: Bump 2: Replace `do_get_template(env, "expression")` with `"expression.html.jinja"` within line. - expr_template = env.get_template(do_get_template(env, "expression")) + type_params_template = env.get_template("type_parameters.html.jinja") + expr_template = env.get_template("expression.html.jinja") signature = str(type_alias_path).strip() signature += type_params_template.render(context.parent, obj=type_alias, signature=True) @@ -357,76 +356,6 @@ def do_order_members( return members -# YORE: Bump 2: Remove block. -@lru_cache -def _warn_crossref() -> None: - warnings.warn( - "The `crossref` filter is deprecated and will be removed in a future version", - DeprecationWarning, - stacklevel=1, - ) - - -# YORE: Bump 2: Remove block. -def do_crossref(path: str, *, brief: bool = True) -> Markup: - """Deprecated. Filter to create cross-references. - - Parameters: - path: The path to link to. - brief: Show only the last part of the path, add full path as hover. - - Returns: - Markup text. - """ - _warn_crossref() - full_path = path - if brief: - path = full_path.split(".")[-1] - return Markup("{path}").format( - full_path=full_path, - path=path, - ) - - -# YORE: Bump 2: Remove block. -@lru_cache -def _warn_multi_crossref() -> None: - warnings.warn( - "The `multi_crossref` filter is deprecated and will be removed in a future version", - DeprecationWarning, - stacklevel=1, - ) - - -# YORE: Bump 2: Remove block. -def do_multi_crossref(text: str, *, code: bool = True) -> Markup: - """Deprecated. Filter to create cross-references. - - Parameters: - text: The text to scan. - code: Whether to wrap the result in a code tag. - - Returns: - Markup text. - """ - _warn_multi_crossref() - group_number = 0 - variables = {} - - def repl(match: Match) -> str: - nonlocal group_number - group_number += 1 - path = match.group() - path_var = f"path{group_number}" - variables[path_var] = path - return f"{{{path_var}}}" - - text = re.sub(r"([\w.]+)", repl, text) - if code: - text = f"{text}" - return Markup(text).format(**variables) # noqa: S704 - - _split_path_re = re.compile(r"([.(]?)([\w]+)(\))?") _splitable_re = re.compile(r"[().]") @@ -485,15 +414,15 @@ def _keep_object(name: str, filters: Sequence[tuple[Pattern, bool]]) -> bool: def _parents(obj: Alias) -> set[str]: - parent: Object | Alias = obj.parent # type: ignore[assignment] + parent: Object | Alias = obj.parent parents = {obj.path, parent.path} if parent.is_alias: - parents.add(parent.final_target.path) # type: ignore[union-attr] + parents.add(parent.final_target.path) while parent.parent: parent = parent.parent parents.add(parent.path) if parent.is_alias: - parents.add(parent.final_target.path) # type: ignore[union-attr] + parents.add(parent.final_target.path) return parents @@ -502,7 +431,7 @@ def _remove_cycles(objects: list[Object | Alias]) -> Iterator[Object | Alias]: for obj in objects: if obj.is_alias: with suppress_errors: - if obj.final_target.path in _parents(obj): # type: ignore[arg-type,union-attr] + if obj.final_target.path in _parents(obj): continue yield obj @@ -641,39 +570,20 @@ def formatter(code: str, line_length: int) -> str: return formatter -# YORE: Bump 2: Remove line. -@pass_environment -# YORE: Bump 2: Replace `env: Environment, ` with `` within line. -# YORE: Bump 2: Replace `str | ` with `` within line. -def do_get_template(env: Environment, obj: str | Object) -> str: +def do_get_template(obj: Object | Alias) -> str: """Get the template name used to render an object. Parameters: - env: The Jinja environment, passed automatically. - obj: A Griffe object, or a template name. + obj: A Griffe object. Returns: A template name. """ - name = obj - if isinstance(obj, (Alias, Object)): - extra_data = getattr(obj, "extra", {}).get("mkdocstrings", {}) - if name := extra_data.get("template", ""): - return name - name = obj.kind.value.replace(" ", "_") - # YORE: Bump 2: Replace block with `return f"{name}.html.jinja"`. - try: - template = env.get_template(f"{name}.html") - except TemplateNotFound: - return f"{name}.html.jinja" - our_template = Path(template.filename).is_relative_to(Path(__file__).parent.parent) # type: ignore[arg-type] - if our_template: - return f"{name}.html.jinja" - _logger.warning( - f"DeprecationWarning: Overriding '{name}.html' is deprecated, override '{name}.html.jinja' instead. ", - once=True, - ) - return f"{name}.html" + extra_data = getattr(obj, "extra", {}).get("mkdocstrings", {}) + if name := extra_data.get("template", ""): + return name + name = obj.kind.value.replace(" ", "_") + return f"{name}.html.jinja" @pass_context @@ -856,6 +766,33 @@ def expand_identifier(self, identifier: str) -> str: Returns: The expanded identifier. """ + # Handle leading dots in the identifier: + # - `.name` is a reference to the current object's `name` member. + # - `..name` is a reference to the parent object's `name` member. + # - etc. + # TODO: We should update the protocol to allow modifying the title too. + # In this case it would likely be better to strip dots from the title, + # when it's not explicitly specified. + if self.config.relative_crossrefs and identifier.startswith("."): # type: ignore[attr-defined] + identifier = identifier[1:] + obj = self.current_object + while identifier and identifier[0] == ".": + identifier = identifier[1:] + obj = obj.parent + identifier = f"{obj.path}.{identifier}" if identifier else obj.path + + # We resolve the identifier to its full path. + # For this we take out the first name, resolve it, and then append the rest. + if self.config.scoped_crossrefs: # type: ignore[attr-defined] + if "." in identifier: + identifier, remaining = identifier.split(".", 1) + else: + remaining = "" + with suppress(Exception): + identifier = self.current_object.resolve(identifier) + if remaining: + identifier = f"{identifier}.{remaining}" + return identifier def get_context(self) -> AutorefsHookInterface.Context: @@ -872,8 +809,8 @@ def get_context(self) -> AutorefsHookInterface.Context: }.get(self.current_object.kind.value.lower(), "obj") origin = self.current_object.path try: - filepath = self.current_object.docstring.parent.filepath # type: ignore[union-attr] - lineno = self.current_object.docstring.lineno or 0 # type: ignore[union-attr] + filepath = self.current_object.docstring.parent.filepath + lineno = self.current_object.docstring.lineno or 0 except AttributeError: filepath = self.current_object.filepath lineno = 0 diff --git a/src/mkdocstrings_handlers/python/config.py b/src/mkdocstrings_handlers/python/config.py deleted file mode 100644 index 5edab089..00000000 --- a/src/mkdocstrings_handlers/python/config.py +++ /dev/null @@ -1,17 +0,0 @@ -"""Deprecated. Import from `mkdocstrings_handlers.python` directly.""" - -# YORE: Bump 2: Remove file. - -import warnings -from typing import Any - -from mkdocstrings_handlers.python._internal import config - - -def __getattr__(name: str) -> Any: - warnings.warn( - "Importing from `mkdocstrings_handlers.python.config` is deprecated. Import from `mkdocstrings_handlers.python` directly.", - DeprecationWarning, - stacklevel=2, - ) - return getattr(config, name) diff --git a/src/mkdocstrings_handlers/python/handler.py b/src/mkdocstrings_handlers/python/handler.py deleted file mode 100644 index 5b334860..00000000 --- a/src/mkdocstrings_handlers/python/handler.py +++ /dev/null @@ -1,17 +0,0 @@ -"""Deprecated. Import from `mkdocstrings_handlers.python` directly.""" - -# YORE: Bump 2: Remove file. - -import warnings -from typing import Any - -from mkdocstrings_handlers.python._internal import handler - - -def __getattr__(name: str) -> Any: - warnings.warn( - "Importing from `mkdocstrings_handlers.python.handler` is deprecated. Import from `mkdocstrings_handlers.python` directly.", - DeprecationWarning, - stacklevel=2, - ) - return getattr(handler, name) diff --git a/src/mkdocstrings_handlers/python/rendering.py b/src/mkdocstrings_handlers/python/rendering.py deleted file mode 100644 index 5cd4d200..00000000 --- a/src/mkdocstrings_handlers/python/rendering.py +++ /dev/null @@ -1,17 +0,0 @@ -"""Deprecated. Import from `mkdocstrings_handlers.python` directly.""" - -# YORE: Bump 2: Remove file. - -import warnings -from typing import Any - -from mkdocstrings_handlers.python._internal import rendering - - -def __getattr__(name: str) -> Any: - warnings.warn( - "Importing from `mkdocstrings_handlers.python.rendering` is deprecated. Import from `mkdocstrings_handlers.python` directly.", - DeprecationWarning, - stacklevel=2, - ) - return getattr(rendering, name) diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/attribute.html b/src/mkdocstrings_handlers/python/templates/material/_base/attribute.html deleted file mode 100644 index 37c8702c..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/attribute.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/attribute.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/attribute.html' is deprecated, extend '_base/attribute.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/attribute.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/attribute.html.jinja index bad9ad54..65054689 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/attribute.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/attribute.html.jinja @@ -67,8 +67,7 @@ Context: This block renders the labels for the attribute. -#} {% with labels = attribute.labels %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "labels"|get_template with context %} + {% include "labels.html.jinja" with context %} {% endwith %} {% endblock labels %} @@ -115,8 +114,7 @@ Context: This block renders the docstring for the attribute. -#} {% with docstring_sections = attribute.docstring.parsed %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring"|get_template with context %} + {% include "docstring.html.jinja" with context %} {% endwith %} {% endblock docstring %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/backlinks.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/backlinks.html.jinja index 2ab16038..930da3e8 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/backlinks.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/backlinks.html.jinja @@ -15,3 +15,52 @@ Context: This block can be used to log debug messages, deprecation messages, warnings, etc. -#} {% endblock logs %} + +{% macro render_crumb(crumb, last=false) %} + + {% if crumb.url and crumb.title %} + {{ crumb.title | safe }} + {% elif crumb.title %} + {{ crumb.title | safe }} + {% endif %} + +{% endmacro %} + +{% macro render_tree(tree) %} + +{% endmacro %} + +{% if config.backlinks %} + +{% endif %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/children.html b/src/mkdocstrings_handlers/python/templates/material/_base/children.html deleted file mode 100644 index eada68e8..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/children.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/children.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/children.html' is deprecated, extend '_base/children.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/children.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/children.html.jinja index 3be0a33a..63f3b1a6 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/children.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/children.html.jinja @@ -19,6 +19,9 @@ Context: {{ log.debug("Rendering children of " + obj.path) }} {% endblock logs %} + {% import "language.html.jinja" as lang with context %} + {#- Language module providing the `t` translation method. -#} +
{% if root_members %} @@ -45,7 +48,7 @@ Context: ) %} {% if attributes %} {% if config.show_category_heading %} - {% filter heading(heading_level, id=html_id ~ "-attributes", skip_inventory=config.skip_local_inventory) %}Attributes{% endfilter %} + {% filter heading(heading_level, id=html_id ~ "-attributes", skip_inventory=config.skip_local_inventory) %}{{ lang.t("Attributes") }}{% endfilter %} {% endif %} {% with heading_level = heading_level + extra_level %} {% for attribute in attributes|order_members(config.members_order, members_list) %} @@ -65,7 +68,7 @@ Context: ) %} {% if type_aliases %} {% if config.show_category_heading %} - {% filter heading(heading_level, id=html_id ~ "-type_aliases") %}Type Aliases{% endfilter %} + {% filter heading(heading_level, id=html_id ~ "-type_aliases") %}{{ lang.t("Type Aliases") }}{% endfilter %} {% endif %} {% with heading_level = heading_level + extra_level %} {% for type_alias in type_aliases|order_members(config.members_order, members_list) %} @@ -85,7 +88,7 @@ Context: ) %} {% if classes %} {% if config.show_category_heading %} - {% filter heading(heading_level, id=html_id ~ "-classes", skip_inventory=config.skip_local_inventory) %}Classes{% endfilter %} + {% filter heading(heading_level, id=html_id ~ "-classes", skip_inventory=config.skip_local_inventory) %}{{ lang.t("Classes") }}{% endfilter %} {% endif %} {% with heading_level = heading_level + extra_level %} {% for class in classes|order_members(config.members_order, members_list) %} @@ -105,7 +108,7 @@ Context: ) %} {% if functions %} {% if config.show_category_heading %} - {% filter heading(heading_level, id=html_id ~ "-functions", skip_inventory=config.skip_local_inventory) %}Functions{% endfilter %} + {% filter heading(heading_level, id=html_id ~ "-functions", skip_inventory=config.skip_local_inventory) %}{{ lang.t("Functions") }}{% endfilter %} {% endif %} {% with heading_level = heading_level + extra_level %} {% for function in functions|order_members(config.members_order, members_list) %} @@ -128,7 +131,7 @@ Context: ) %} {% if modules %} {% if config.show_category_heading %} - {% filter heading(heading_level, id=html_id ~ "-modules", skip_inventory=config.skip_local_inventory) %}Modules{% endfilter %} + {% filter heading(heading_level, id=html_id ~ "-modules", skip_inventory=config.skip_local_inventory) %}{{ lang.t("Modules") }}{% endfilter %} {% endif %} {% with heading_level = heading_level + extra_level %} {% for module in modules|order_members("alphabetical", members_list) %} @@ -157,7 +160,7 @@ Context: {% if not (obj.is_class and child.name == "__init__" and config.merge_init_into_class) %} - {% if config.filters == "public" or members_list is not none or child.is_public %} + {% if config.filters == "public" or members_list is not none or (not child.is_imported or child.is_public) %} {% if child.is_attribute %} {% with attribute = child %} {% include attribute|get_template with context %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/class.html b/src/mkdocstrings_handlers/python/templates/material/_base/class.html deleted file mode 100644 index 0fb87f5b..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/class.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/class.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/class.html' is deprecated, extend '_base/class.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/class.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/class.html.jinja index 23b3f458..57f9fd5a 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/class.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/class.html.jinja @@ -17,6 +17,9 @@ Context: {{ log.debug("Rendering " + class.path) }} {% endblock logs %} +{% import "language.html.jinja" as lang with context %} +{#- Language module providing the `t` translation method. -#} +
{% with obj = class, html_id = class.path, all_members = class.all_members %} @@ -57,11 +60,9 @@ Context: {%+ filter highlight(language="python", inline=True) %} {{ class_name -}} {%- with obj = function -%} - {#- YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. -#} - {%- include "type_parameters"|get_template with context -%} + {%- include "type_parameters.html.jinja" with context -%} {%- endwith -%} - {#- YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. -#} - {%- include "signature"|get_template with context -%} + {%- include "signature.html.jinja" with context -%} {% endfilter %} {% endwith %} {% else %} @@ -76,8 +77,7 @@ Context: This block renders the labels for the class. -#} {% with labels = class.labels %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "labels"|get_template with context %} + {% include "labels.html.jinja" with context %} {% endwith %} {% endblock labels %} @@ -148,8 +148,7 @@ Context: Bases: {% for expression in class.bases -%} {%- with backlink_type = "subclassed-by" -%} - {#- YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. -#} - {%- include "expression"|get_template with context -%} + {%- include "expression.html.jinja" with context -%} {%- endwith -%} {% if not loop.last %}, {% endif %} {% endfor -%} @@ -157,14 +156,61 @@ Context: {% endif %} {% endblock bases %} + {% block inheritance_diagram scoped %} + {#- Inheritance diagram block. + + This block renders the inheritance diagram for the class, + using Mermaid syntax and a bit of JavaScript to make the nodes clickable, + linking to the corresponding class documentation. + -#} + {% if config.show_inheritance_diagram and class.bases %} + {% macro edges(class) %} + {% for base in class.resolved_bases %} + {{ base.path }} --> {{ class.path }} + {{ edges(base) }} + {% endfor %} + {% endmacro %} +
+ + {% for base in class.mro() %} + + {% endfor %} +
+

+              flowchart {{ config.inheritance_diagram_direction }}
+              {{ class.path }}[{{ class.name }}]
+              {% for base in class.mro() %}
+              {{ base.path }}[{{ base.name }}]
+              {% endfor %}
+
+              {{ edges(class) | safe }}
+
+              click {{ class.path }} href "" "{{ class.path }}"
+              {% for base in class.mro() %}
+              click {{ base.path }} href "" "{{ base.path }}"
+              {% endfor %}
+            
+ + {% endif %} + {% endblock inheritance_diagram %} + {% block docstring scoped %} {#- Docstring block. This block renders the docstring for the class. -#} {% with docstring_sections = class.docstring.parsed %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring"|get_template with context %} + {% include "docstring.html.jinja" with context %} {% endwith %} {% if config.merge_init_into_class %} {# We don't want to merge the inherited `__init__` method docstring into the class docstring #} @@ -173,8 +219,7 @@ Context: {% if "__init__" in check_members and check_members["__init__"].has_docstring %} {% with function = check_members["__init__"] %} {% with obj = function, docstring_sections = function.docstring.parsed %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring"|get_template with context %} + {% include "docstring.html.jinja" with context %} {% endwith %} {% endwith %} {% endif %} @@ -191,8 +236,7 @@ Context: This block renders auto-summaries for classes, methods, and attributes. -#} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "summary"|get_template with context %} + {% include "summary.html.jinja" with context %} {% endblock summary %} {% block source scoped %} @@ -204,8 +248,8 @@ Context: {% if config.merge_init_into_class %} {% if "__init__" in all_members and all_members["__init__"].source %} {% with init = all_members["__init__"] %} -
- Source code in +
+ {{ lang.t("Source code in") }} {%- if init.relative_filepath.is_absolute() -%} {{ init.relative_package_filepath }} {%- else -%} @@ -217,8 +261,8 @@ Context: {% endwith %} {% endif %} {% elif class.source %} -
- Source code in +
+ {{ lang.t("Source code in") }} {%- if class.relative_filepath.is_absolute() -%} {{ class.relative_package_filepath }} {%- else -%} @@ -238,8 +282,7 @@ Context: -#} {% set root = False %} {% set heading_level = heading_level + 1 %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "children"|get_template with context %} + {% include "children.html.jinja" with context %} {% endblock children %} {% endblock contents %}
diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring.html b/src/mkdocstrings_handlers/python/templates/material/_base/docstring.html deleted file mode 100644 index c487550b..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring.html' is deprecated, extend '_base/docstring.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring.html.jinja index cae4f50f..a00a0249 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring.html.jinja @@ -24,50 +24,35 @@ Context: {% if config.show_docstring_description and section.kind.value == "text" %} {{ section.value|convert_markdown(heading_level, html_id, autoref_hook=autoref_hook) }} {% elif config.show_docstring_attributes and section.kind.value == "attributes" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring/attributes"|get_template with context %} + {% include "docstring/attributes.html.jinja" with context %} {% elif config.show_docstring_functions and section.kind.value == "functions" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring/functions"|get_template with context %} + {% include "docstring/functions.html.jinja" with context %} {% elif config.show_docstring_classes and section.kind.value == "classes" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring/classes"|get_template with context %} + {% include "docstring/classes.html.jinja" with context %} {% elif config.show_docstring_type_aliases and section.kind.value == "type aliases" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring/type_aliases"|get_template with context %} + {% include "docstring/type_aliases.html.jinja" with context %} {% elif config.show_docstring_modules and section.kind.value == "modules" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring/modules"|get_template with context %} + {% include "docstring/modules.html.jinja" with context %} {% elif config.show_docstring_type_parameters and section.kind.value == "type parameters" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring/type_parameters"|get_template with context %} + {% include "docstring/type_parameters.html.jinja" with context %} {% elif config.show_docstring_parameters and section.kind.value == "parameters" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring/parameters"|get_template with context %} + {% include "docstring/parameters.html.jinja" with context %} {% elif config.show_docstring_other_parameters and section.kind.value == "other parameters" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring/other_parameters"|get_template with context %} + {% include "docstring/other_parameters.html.jinja" with context %} {% elif config.show_docstring_raises and section.kind.value == "raises" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring/raises"|get_template with context %} + {% include "docstring/raises.html.jinja" with context %} {% elif config.show_docstring_warns and section.kind.value == "warns" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring/warns"|get_template with context %} + {% include "docstring/warns.html.jinja" with context %} {% elif config.show_docstring_yields and section.kind.value == "yields" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring/yields"|get_template with context %} + {% include "docstring/yields.html.jinja" with context %} {% elif config.show_docstring_receives and section.kind.value == "receives" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring/receives"|get_template with context %} + {% include "docstring/receives.html.jinja" with context %} {% elif config.show_docstring_returns and section.kind.value == "returns" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring/returns"|get_template with context %} + {% include "docstring/returns.html.jinja" with context %} {% elif config.show_docstring_examples and section.kind.value == "examples" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring/examples"|get_template with context %} + {% include "docstring/examples.html.jinja" with context %} {% elif config.show_docstring_description and section.kind.value == "admonition" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring/admonition"|get_template with context %} + {% include "docstring/admonition.html.jinja" with context %} {% endif %} {% endfor %} {% endwith %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/admonition.html b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/admonition.html deleted file mode 100644 index e94d6e61..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/admonition.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/admonition.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/admonition.html' is deprecated, extend '_base/docstring/admonition.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/attributes.html b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/attributes.html deleted file mode 100644 index 9f2abcd1..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/attributes.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/attributes.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/attributes.html' is deprecated, extend '_base/docstring/attributes.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/attributes.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/attributes.html.jinja index 03104333..894639a7 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/attributes.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/attributes.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug("Rendering attributes section") }} {% endblock logs %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#} {% if config.docstring_section_style == "table" %} @@ -38,8 +37,7 @@ Context: {% if attribute.annotation %} {% with expression = attribute.annotation %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} @@ -63,8 +61,7 @@ Context: {{ attribute.name }} {% if attribute.annotation %} {% with expression = attribute.annotation %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - ({% include "expression"|get_template with context %}) + ({% include "expression.html.jinja" with context %}) {% endwith %} {% endif %} – @@ -96,10 +93,9 @@ Context:

{% if attribute.annotation %} - TYPE: + {{ lang.t("TYPE:") }} {% with expression = attribute.annotation %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/classes.html b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/classes.html deleted file mode 100644 index 9c04b145..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/classes.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/classes.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/classes.html' is deprecated, extend '_base/docstring/classes.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/classes.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/classes.html.jinja index 09a5b758..b139a761 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/classes.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/classes.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug("Rendering classes section") }} {% endblock logs %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#} {% if config.docstring_section_style == "table" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/examples.html b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/examples.html deleted file mode 100644 index 4f66600f..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/examples.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/examples.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/examples.html' is deprecated, extend '_base/docstring/examples.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/examples.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/examples.html.jinja index 09293cfb..32360f7d 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/examples.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/examples.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug("Rendering examples section") }} {% endblock logs %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#}

{{ section.title or lang.t("Examples:") }}

diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/functions.html b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/functions.html deleted file mode 100644 index 906658b4..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/functions.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/functions.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/functions.html' is deprecated, extend '_base/docstring/functions.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/functions.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/functions.html.jinja index dd33984f..afec8f60 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/functions.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/functions.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug("Rendering functions section") }} {% endblock logs %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#} {% if config.docstring_section_style == "table" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/modules.html b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/modules.html deleted file mode 100644 index 7b0dcc51..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/modules.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/modules.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/modules.html' is deprecated, extend '_base/docstring/modules.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/modules.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/modules.html.jinja index 106e6bf6..5556cf15 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/modules.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/modules.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug("Rendering modules section") }} {% endblock logs %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#} {% if config.docstring_section_style == "table" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/other_parameters.html b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/other_parameters.html deleted file mode 100644 index 02261331..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/other_parameters.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/other_parameters.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/other_parameters.html' is deprecated, extend '_base/docstring/other_parameters.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/other_parameters.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/other_parameters.html.jinja index 66940069..5e0a75f5 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/other_parameters.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/other_parameters.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug("Rendering other parameters section") }} {% endblock logs %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#} {% if config.docstring_section_style == "table" %} @@ -38,8 +37,7 @@ Context: {% if parameter.annotation %} {% with expression = parameter.annotation, backlink_type = "used-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} @@ -63,8 +61,7 @@ Context: {{ parameter.name }} {% if parameter.annotation %} {% with expression = parameter.annotation, backlink_type = "used-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - ({% include "expression"|get_template with context %}) + ({% include "expression.html.jinja" with context %}) {% endwith %} {% endif %} – @@ -98,8 +95,7 @@ Context: {{ lang.t("TYPE:") }} {% with expression = parameter.annotation, backlink_type = "used-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/parameters.html b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/parameters.html deleted file mode 100644 index f5292150..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/parameters.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/parameters.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/parameters.html' is deprecated, extend '_base/docstring/parameters.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/parameters.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/parameters.html.jinja index a3ea5f7f..a67113fa 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/parameters.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/parameters.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug("Rendering parameters section") }} {% endblock logs %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#} {% if config.docstring_section_style == "table" %} @@ -54,8 +53,7 @@ Context: {% if parameter.annotation %} {% with expression = parameter.annotation, backlink_type = "used-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} @@ -67,8 +65,7 @@ Context: {% if parameter.default %} {% with expression = parameter.default, backlink_type = "used-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% else %} {{ lang.t("required") }} @@ -102,12 +99,10 @@ Context: {% endif %} {% if parameter.annotation %} {% with expression = parameter.annotation, backlink_type = "used-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - ({% include "expression"|get_template with context %} + ({% include "expression.html.jinja" with context %} {%- if parameter.default %}, {{ lang.t("default:") }} {% with expression = parameter.default, backlink_type = "used-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %}) {% endwith %} @@ -158,8 +153,7 @@ Context: {{ lang.t("TYPE:") }} {% with expression = parameter.annotation, backlink_type = "used-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} @@ -167,8 +161,7 @@ Context: {{ lang.t("DEFAULT:") }} {% with expression = parameter.default, backlink_type = "used-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/raises.html b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/raises.html deleted file mode 100644 index 38a21e89..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/raises.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/raises.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/raises.html' is deprecated, extend '_base/docstring/raises.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/raises.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/raises.html.jinja index cd034c0e..7d548035 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/raises.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/raises.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug("Rendering raises section") }} {% endblock logs %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#} {% if config.docstring_section_style == "table" %} @@ -36,8 +35,7 @@ Context: {% if raises.annotation %} {% with expression = raises.annotation, backlink_type = "raised-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} @@ -60,8 +58,7 @@ Context:
  • {% if raises.annotation %} {% with expression = raises.annotation, backlink_type = "raised-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} – {% endif %} @@ -88,8 +85,7 @@ Context: {% with expression = raises.annotation, backlink_type = "raised-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/receives.html b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/receives.html deleted file mode 100644 index d9c404b6..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/receives.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/receives.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/receives.html' is deprecated, extend '_base/docstring/receives.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/receives.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/receives.html.jinja index 3ecc5b41..6830d434 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/receives.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/receives.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug("Rendering receives section") }} {% endblock logs %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#} {% if config.docstring_section_style == "table" %} @@ -39,8 +38,7 @@ Context: {% if receives.annotation %} {% with expression = receives.annotation, backlink_type = "received-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} @@ -65,8 +63,7 @@ Context: {% if receives.annotation %} {% with expression = receives.annotation, backlink_type = "received-by" %} {% if receives.name %} ({% endif %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% if receives.name %}){% endif %} {% endwith %} {% endif %} @@ -97,8 +94,7 @@ Context: {% elif receives.annotation %} {% with expression = receives.annotation, backlink_type = "received-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} @@ -112,8 +108,7 @@ Context: {{ lang.t("TYPE:") }} {% with expression = receives.annotation, backlink_type = "received-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %}

    diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/returns.html b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/returns.html deleted file mode 100644 index b608af5f..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/returns.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/returns.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/returns.html' is deprecated, extend '_base/docstring/returns.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/returns.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/returns.html.jinja index bc8ee4ff..da693da7 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/returns.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/returns.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug("Rendering returns section") }} {% endblock logs %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#} {% if config.docstring_section_style == "table" %} @@ -39,8 +38,7 @@ Context: {% if returns.annotation %} {% with expression = returns.annotation, backlink_type = "returned-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} @@ -65,8 +63,7 @@ Context: {% if returns.annotation %} {% with expression = returns.annotation, backlink_type = "returned-by" %} {% if returns.name %} ({% endif %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% if returns.name %}){% endif %} {% endwith %} {% endif %} @@ -97,8 +94,7 @@ Context: {% elif returns.annotation %} {% with expression = returns.annotation, backlink_type = "returned-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} @@ -112,8 +108,7 @@ Context: {{ lang.t("TYPE:") }} {% with expression = returns.annotation, backlink_type = "returned-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %}

    diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/type_aliases.html b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/type_aliases.html deleted file mode 100644 index e9a99d1b..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/type_aliases.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/type_aliases.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/type_aliases.html' is deprecated, extend '_base/docstring/type_aliases.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/type_aliases.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/type_aliases.html.jinja index ceaa520c..e1c87754 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/type_aliases.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/type_aliases.html.jinja @@ -15,7 +15,7 @@ Context: {{ log.debug("Rendering type aliases section") }} {% endblock logs %} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#} {% if config.docstring_section_style == "table" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/type_parameters.html b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/type_parameters.html deleted file mode 100644 index 90a1af38..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/type_parameters.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/type_parameters.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/type_parameters.html' is deprecated, extend '_base/docstring/type_parameters.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/type_parameters.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/type_parameters.html.jinja index 8e83e8be..6fe8bb4e 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/type_parameters.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/type_parameters.html.jinja @@ -15,7 +15,7 @@ Context: {{ log.debug("Rendering type parameters section") }} {% endblock logs %} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#} {% if config.docstring_section_style == "table" %} @@ -56,7 +56,7 @@ Context: {% if type_parameter.annotation %} {% with expression = type_parameter.annotation %} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} @@ -68,7 +68,7 @@ Context: {% if type_parameter.default %} {% with expression = type_parameter.default %} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% else %} {{ lang.t("required") }} @@ -108,12 +108,12 @@ Context: {%- endif -%} {%- if type_parameter.bound -%} {%- with expression = type_parameter.bound -%} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {%- endwith -%} {%- if type_parameter.default %}, {% endif -%} {%- elif type_parameter.constraints -%} {%- for expression in type_parameter.constraints -%} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {%- if not loop.last %}, {% endif -%} {%- endfor -%} {%- if type_parameter.default %}, {% endif -%} @@ -121,7 +121,7 @@ Context: {%- if type_parameter.default -%} {{ lang.t("default:") }} {% with expression = type_parameter.default %} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {%- endwith -%} {%- endif -%} {%- if type_parameter.constraints or type_parameter.default -%} @@ -177,7 +177,7 @@ Context: {{ lang.t("CONSTRAINTS:") }} {% for constraint in type_parameter.constraints -%} {%- with expression = constraint -%} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {%- endwith -%} {%- if not loop.last %}, {% endif -%} {% endfor %} @@ -186,7 +186,7 @@ Context: {{ lang.t("BOUND:") }} {% with expression = type_parameter.bound %} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} @@ -194,7 +194,7 @@ Context: {{ lang.t("DEFAULT:") }} {% with expression = type_parameter.default %} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/warns.html b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/warns.html deleted file mode 100644 index 9eba72ab..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/warns.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/warns.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/warns.html' is deprecated, extend '_base/docstring/warns.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/warns.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/warns.html.jinja index d5a24262..6f7e69de 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/warns.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/warns.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug("Rendering warns section") }} {% endblock logs %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#} {% if config.docstring_section_style == "table" %} @@ -36,8 +35,7 @@ Context: {% if warns.annotation %} {% with expression = warns.annotation, backlink_type = "emitted-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} @@ -60,8 +58,7 @@ Context:
  • {% if warns.annotation %} {% with expression = warns.annotation, backlink_type = "emitted-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} – {% endif %} @@ -88,8 +85,7 @@ Context: {% with expression = warns.annotation, backlink_type = "emitted-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/yields.html b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/yields.html deleted file mode 100644 index 6ec31dd0..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/yields.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/yields.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/yields.html' is deprecated, extend '_base/docstring/yields.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/yields.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/yields.html.jinja index 154d0202..69e5ea6d 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/yields.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/yields.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug("Rendering yields section") }} {% endblock logs %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#} {% if config.docstring_section_style == "table" %} @@ -39,8 +38,7 @@ Context: {% if yields.annotation %} {% with expression = yields.annotation, backlink_type = "yielded-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} @@ -65,8 +63,7 @@ Context: {% if yields.annotation %} {% with expression = yields.annotation, backlink_type = "yielded-by" %} {% if yields.name %} ({% endif %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% if yields.name %}){% endif %} {% endwith %} {% endif %} @@ -97,8 +94,7 @@ Context: {% elif yields.annotation %} {% with expression = yields.annotation, backlink_type = "yielded-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} @@ -112,8 +108,7 @@ Context: {{ lang.t("TYPE:") }}: {% with expression = yields.annotation, backlink_type = "yielded-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %}

    diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/expression.html b/src/mkdocstrings_handlers/python/templates/material/_base/expression.html deleted file mode 100644 index 8c84928c..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/expression.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/expression.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/expression.html' is deprecated, extend '_base/expression.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/expression.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/expression.html.jinja index 54781739..4f44ae00 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/expression.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/expression.html.jinja @@ -166,4 +166,7 @@ Context: {%- endif -%} {%- endmacro -%} +{%- if config.modernize_annotations and expression is not string -%} + {%- set expression = expression.modernize() -%} +{%- endif -%} {{ render(expression, config.annotations_path, backlink_type|default("")) }} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/function.html b/src/mkdocstrings_handlers/python/templates/material/_base/function.html deleted file mode 100644 index 4afd930b..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/function.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/function.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/function.html' is deprecated, extend '_base/function.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/function.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/function.html.jinja index 708fde68..3cfc7f30 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/function.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/function.html.jinja @@ -17,8 +17,7 @@ Context: {{ log.debug("Rendering " + function.path) }} {% endblock logs %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#}
    @@ -62,9 +61,8 @@ Context: {% else %} {%+ filter highlight(language="python", inline=True) -%} {{ function_name }} - {#- YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within block. -#} - {%- include "type_parameters"|get_template with context -%} - {%- include "signature"|get_template with context -%} + {%- include "type_parameters.html.jinja" with context -%} + {%- include "signature.html.jinja" with context -%} {%- endfilter %} {% endif %} {% endblock heading %} @@ -75,8 +73,7 @@ Context: This block renders the labels for the function. -#} {% with labels = function.labels %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "labels"|get_template with context %} + {% include "labels.html.jinja" with context %} {% endwith %} {% endblock labels %} @@ -134,8 +131,7 @@ Context: This block renders the docstring for the function. -#} {% with docstring_sections = function.docstring.parsed %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring"|get_template with context %} + {% include "docstring.html.jinja" with context %} {% endwith %} {% endblock docstring %} @@ -149,7 +145,7 @@ Context: This block renders the source code for the function. -#} {% if config.show_source and function.source %} -
    +
    {{ lang.t("Source code in") }} {%- if function.relative_filepath.is_absolute() -%} {{ function.relative_package_filepath }} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/labels.html b/src/mkdocstrings_handlers/python/templates/material/_base/labels.html deleted file mode 100644 index cda79114..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/labels.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/labels.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/labels.html' is deprecated, extend '_base/labels.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/language.html b/src/mkdocstrings_handlers/python/templates/material/_base/language.html deleted file mode 100644 index a5a86545..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/language.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/language.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/language.html' is deprecated, extend '_base/language.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/language.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/language.html.jinja index 5a4b773e..31ecfdd6 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/language.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/language.html.jinja @@ -7,15 +7,12 @@ -#} {% endblock logs %} -{# YORE: Bump 2: Replace `| get_template` with `~ ".html.jinja"` within line. #} -{% set lang_pth = "languages/" ~ locale | get_template %} +{% set lang_pth = "languages/" ~ locale ~ ".html.jinja" %} {% if lang_pth is existing_template %} {% import lang_pth as lang %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% import "languages/en"|get_template as fallback %} + {% import "languages/en.html.jinja" as fallback %} {% macro t(key) %}{{ lang.t(key) or fallback.t(key) }}{% endmacro %} {% else %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% import "languages/en"|get_template as lang %} + {% import "languages/en.html.jinja" as lang %} {% macro t(key) %}{{ lang.t(key) }}{% endmacro %} {% endif %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/languages/en.html b/src/mkdocstrings_handlers/python/templates/material/_base/languages/en.html deleted file mode 100644 index 2f050a32..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/languages/en.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/languages/en.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/languages/en.html' is deprecated, extend '_base/languages/en.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/languages/en.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/languages/en.html.jinja index a2e38b7c..d2bbba03 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/languages/en.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/languages/en.html.jinja @@ -9,9 +9,11 @@ {% macro t(key) %}{{ { "ATTRIBUTE": "ATTRIBUTE", + "Attributes": "Attributes", "Attributes:": "Attributes:", "BOUND:": "BOUND:", "Bound or Constraints": "Bound or Constraints", + "Classes": "Classes", "Classes:": "Classes:", "Class Type Parameters:": "Class Type Parameters:", "CLASS TYPE PARAMETER": "CLASS TYPE PARAMETER", @@ -23,12 +25,14 @@ "DESCRIPTION": "DESCRIPTION", "Description": "Description", "Examples:": "Examples:", + "Functions": "Functions", "Functions:": "Functions:", "FUNCTION": "FUNCTION", "Init Type Parameters:": "Init Type Parameters:", "INIT TYPE PARAMETER": "INIT TYPE PARAMETER", "Methods:": "Methods:", "METHOD": "METHOD", + "Modules": "Modules", "Modules:": "Modules:", "MODULE": "MODULE", "Name": "Name", @@ -45,6 +49,7 @@ "Source code in": "Source code in", "TYPE:": "TYPE:", "Type": "Type", + "Type Aliases": "Type Aliases", "Type Aliases:": "Type Aliases:", "TYPE ALIAS": "TYPE ALIAS", "Type Parameters:": "Type Parameters:", diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/languages/ja.html b/src/mkdocstrings_handlers/python/templates/material/_base/languages/ja.html deleted file mode 100644 index 1f3095f4..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/languages/ja.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/languages/ja.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/languages/ja.html' is deprecated, extend '_base/languages/ja.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/languages/ja.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/languages/ja.html.jinja index be0dd62b..840da89c 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/languages/ja.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/languages/ja.html.jinja @@ -9,26 +9,30 @@ {% macro t(key) %}{{ { "ATTRIBUTE": "属性", + "Attributes": "属性", "Attributes:": "属性:", - "BOUND:": "BOUND:", - "Bound or Constraints": "Bound or Constraints", + "BOUND:": "境界:", + "Bound or Constraints": "境界や制約", + "Classes": "クラス", "Classes:": "クラス:", "Class Type Parameters:": "Class Type Parameters:", "CLASS TYPE PARAMETER": "CLASS TYPE PARAMETER", - "CLASS": "CLASS", - "CONSTRAINTS:": "CONSTRAINTS:", + "CLASS": "クラス", + "CONSTRAINTS:": "制約:", "DEFAULT:": "デフォルト:", "Default": "デフォルト", "default:": "デフォルト:", "DESCRIPTION": "デスクリプション", "Description": "デスクリプション", "Examples:": "例:", + "Functions": "関数", "Functions:": "関数:", "FUNCTION": "関数", "Init Type Parameters:": "Init Type Parameters:", "INIT TYPE PARAMETER": "INIT TYPE PARAMETER", "Methods:": "メソッド:", "METHOD": "メソッド", + "Modules": "モジュール", "Modules:": "モジュール:", "MODULE": "モジュール", "Name": "名前", @@ -45,10 +49,11 @@ "Source code in": "ソースコード位置:", "TYPE:": "タイプ:", "Type": "タイプ", - "Type Aliases:": "Type Aliases:", - "TYPE ALIAS": "TYPE ALIAS", - "Type Parameters:": "Type Parameters:", - "TYPE PARAMETER": "TYPE PARAMETER", + "Type Aliases": "型エイリアス", + "Type Aliases:": "型エイリアス:", + "TYPE ALIAS": "型エイリアス", + "Type Parameters:": "型パラメータ:", + "TYPE PARAMETER": "型パラメータ", "WARNS": "警告", "Warns:": "警告:", "YIELDS": "返す", diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/languages/zh.html b/src/mkdocstrings_handlers/python/templates/material/_base/languages/zh.html deleted file mode 100644 index b58b0479..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/languages/zh.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/languages/zh.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/languages/zh.html' is deprecated, extend '_base/languages/zh.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/languages/zh.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/languages/zh.html.jinja index 3f1e3481..53888779 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/languages/zh.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/languages/zh.html.jinja @@ -9,26 +9,30 @@ {% macro t(key) %}{{ { "ATTRIBUTE": "属性", + "Attributes": "属性", "Attributes:": "属性:", - "BOUND:": "BOUND:", - "Bound or Constraints": "Bound or Constraints", + "BOUND:": "边界:", + "Bound or Constraints": "边界或约束", + "Classes": "类", "Classes:": "类:", "Class Type Parameters:": "Class Type Parameters:", "CLASS TYPE PARAMETER": "CLASS TYPE PARAMETER", - "CLASS": "CLASS", - "CONSTRAINTS:": "CONSTRAINTS:", + "CLASS": "类", + "CONSTRAINTS:": "约束:", "DEFAULT:": "默认:", "Default": "默认", "default:": "默认:", "DESCRIPTION": "描述", "Description": "描述", "Examples:": "示例:", + "Functions": "函数", "Functions:": "函数:", "FUNCTION": "函数", "Init Type Parameters:": "Init Type Parameters:", "INIT TYPE PARAMETER": "INIT TYPE PARAMETER", "Methods:": "方法:", "METHOD": "方法", + "Modules": "模块", "Modules:": "模块:", "MODULE": "模块", "Name": "名称", @@ -45,10 +49,11 @@ "Source code in": "源代码位于:", "TYPE:": "类型:", "Type": "类型", - "Type Aliases:": "Type Aliases:", - "TYPE ALIAS": "TYPE ALIAS", - "Type Parameters:": "Type Parameters:", - "TYPE PARAMETER": "TYPE PARAMETER", + "Type Aliases": "类型别名", + "Type Aliases:": "类型别名:", + "TYPE ALIAS": "类型别名", + "Type Parameters:": "类型形参:", + "TYPE PARAMETER": "类型形参", "Warns:": "警告:", "WARNS": "警告", "YIELDS": "产生", diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/module.html b/src/mkdocstrings_handlers/python/templates/material/_base/module.html deleted file mode 100644 index dcda15ea..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/module.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/module.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/module.html' is deprecated, extend '_base/module.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/module.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/module.html.jinja index c5e4a400..c0f4a7cb 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/module.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/module.html.jinja @@ -63,8 +63,7 @@ Context: This block renders the labels for the module. -#} {% with labels = module.labels %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "labels"|get_template with context %} + {% include "labels.html.jinja" with context %} {% endwith %} {% endblock labels %} @@ -98,8 +97,7 @@ Context: This block renders the docstring for the module. -#} {% with docstring_sections = module.docstring.parsed %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring"|get_template with context %} + {% include "docstring.html.jinja" with context %} {% endwith %} {% endblock docstring %} @@ -112,8 +110,7 @@ Context: This block renders auto-summaries for classes, methods, and attributes. -#} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "summary"|get_template with context %} + {% include "summary.html.jinja" with context %} {% endblock summary %} {% block children scoped %} @@ -123,8 +120,7 @@ Context: -#} {% set root = False %} {% set heading_level = heading_level + 1 %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "children"|get_template with context %} + {% include "children.html.jinja" with context %} {% endblock children %} {% endblock contents %}
    diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/signature.html b/src/mkdocstrings_handlers/python/templates/material/_base/signature.html deleted file mode 100644 index 6f05fed7..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/signature.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/signature.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/signature.html' is deprecated, extend '_base/signature.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/signature.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/signature.html.jinja index 0e0678a1..7167f1d7 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/signature.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/signature.html.jinja @@ -50,8 +50,7 @@ Context: {%- if config.separate_signature -%} {%- with expression = parameter.annotation -%} {%- set ns.annotation -%}: {% with backlink_type = "used-by" -%} - {#- YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. -#} - {%- include "expression"|get_template with context -%} + {%- include "expression.html.jinja" with context -%} {%- endwith -%}{%- endset -%} {%- endwith -%} {%- else -%} @@ -106,8 +105,7 @@ Context: {{ ns.equal }} {%- if config.signature_crossrefs and config.separate_signature -%} {%- with expression = parameter.default, backlink_type = "used-by" -%} - {#- YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. -#} - {%- include "expression"|get_template with context -%} + {%- include "expression.html.jinja" with context -%} {%- endwith -%} {%- else -%} {{ parameter.default|safe }} @@ -126,8 +124,7 @@ Context: and not (config.merge_init_into_class and function.name == "__init__" ) %} -> {% if config.separate_signature and config.signature_crossrefs -%} {%- with expression = function.annotation, backlink_type = "returned-by" -%} - {#- YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. -#} - {%- include "expression"|get_template with context -%} + {%- include "expression.html.jinja" with context -%} {%- endwith -%} {%- else -%} {{ function.annotation|safe }} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/summary.html b/src/mkdocstrings_handlers/python/templates/material/_base/summary.html deleted file mode 100644 index b970164d..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/summary.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/summary.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/summary.html' is deprecated, extend '_base/summary.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/summary.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/summary.html.jinja index 477d0b0d..852af437 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/summary.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/summary.html.jinja @@ -9,27 +9,22 @@ {% with members_list = config.members if root_members else None %} {% if config.summary.modules %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "summary/modules"|get_template with context %} + {% include "summary/modules.html.jinja" with context %} {% endif %} {% if config.summary.type_aliases %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "summary/type_aliases"|get_template with context %} + {% include "summary/type_aliases.html.jinja" with context %} {% endif %} {% if config.summary.classes %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "summary/classes"|get_template with context %} + {% include "summary/classes.html.jinja" with context %} {% endif %} {% if config.summary.functions %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "summary/functions"|get_template with context %} + {% include "summary/functions.html.jinja" with context %} {% endif %} {% if config.summary.attributes %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "summary/attributes"|get_template with context %} + {% include "summary/attributes.html.jinja" with context %} {% endif %} {% endwith %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/summary/attributes.html b/src/mkdocstrings_handlers/python/templates/material/_base/summary/attributes.html deleted file mode 100644 index 8e575a44..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/summary/attributes.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/summary/attributes.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/summary/attributes.html' is deprecated, extend '_base/summary/attributes.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/summary/attributes.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/summary/attributes.html.jinja index 52f9a43a..be42ed0f 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/summary/attributes.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/summary/attributes.html.jinja @@ -18,7 +18,6 @@ |order_members(config.members_order, members_list) |as_attributes_section(check_public=not members_list) %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% if section %}{% include "docstring/attributes"|get_template with context %}{% endif %} + {% if section %}{% include "docstring/attributes.html.jinja" with context %}{% endif %} {% endwith %} {% endif %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/summary/classes.html b/src/mkdocstrings_handlers/python/templates/material/_base/summary/classes.html deleted file mode 100644 index a74eff99..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/summary/classes.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/summary/classes.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/summary/classes.html' is deprecated, extend '_base/summary/classes.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/summary/classes.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/summary/classes.html.jinja index 628d4133..3c0406dd 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/summary/classes.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/summary/classes.html.jinja @@ -18,7 +18,6 @@ |order_members(config.members_order, members_list) |as_classes_section(check_public=not members_list) %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% if section %}{% include "docstring/classes"|get_template with context %}{% endif %} + {% if section %}{% include "docstring/classes.html.jinja" with context %}{% endif %} {% endwith %} {% endif %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/summary/functions.html b/src/mkdocstrings_handlers/python/templates/material/_base/summary/functions.html deleted file mode 100644 index ff95f246..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/summary/functions.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/summary/functions.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/summary/functions.html' is deprecated, extend '_base/summary/functions.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/summary/functions.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/summary/functions.html.jinja index a82f2f87..9fc6ea87 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/summary/functions.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/summary/functions.html.jinja @@ -18,7 +18,6 @@ |order_members(config.members_order, members_list) |as_functions_section(check_public=not members_list) %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% if section %}{% include "docstring/functions"|get_template with context %}{% endif %} + {% if section %}{% include "docstring/functions.html.jinja" with context %}{% endif %} {% endwith %} {% endif %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/summary/modules.html b/src/mkdocstrings_handlers/python/templates/material/_base/summary/modules.html deleted file mode 100644 index 51e964c1..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/summary/modules.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/summary/modules.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/summary/modules.html' is deprecated, extend '_base/summary/modules.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/summary/modules.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/summary/modules.html.jinja index 109b34a9..6206c6d1 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/summary/modules.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/summary/modules.html.jinja @@ -18,7 +18,6 @@ |order_members("alphabetical", members_list) |as_modules_section(check_public=not members_list) %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% if section %}{% include "docstring/modules"|get_template with context %}{% endif %} + {% if section %}{% include "docstring/modules.html.jinja" with context %}{% endif %} {% endwith %} {% endif %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/summary/type_aliases.html b/src/mkdocstrings_handlers/python/templates/material/_base/summary/type_aliases.html deleted file mode 100644 index 68554b8c..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/summary/type_aliases.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/summary/type_aliases.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/type_aliases/classes.html' is deprecated, extend '_base/type_aliases/classes.html.jinja' instead.", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/summary/type_aliases.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/summary/type_aliases.html.jinja index 9ebc2b23..ed0d2ef5 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/summary/type_aliases.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/summary/type_aliases.html.jinja @@ -18,7 +18,6 @@ |order_members("alphabetical", members_list) |as_type_aliases_section(check_public=not members_list) %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% if section %}{% include "docstring/type_aliases"|get_template with context %}{% endif %} + {% if section %}{% include "docstring/type_aliases.html.jinja" with context %}{% endif %} {% endwith %} {% endif %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/type_alias.html b/src/mkdocstrings_handlers/python/templates/material/_base/type_alias.html deleted file mode 100644 index d811f7f3..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/type_alias.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/type_alias.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/type_alias.html' is deprecated, extend '_base/type_alias.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/type_alias.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/type_alias.html.jinja index bb7d4d71..ff1e8464 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/type_alias.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/type_alias.html.jinja @@ -51,8 +51,7 @@ Context: {{ type_alias_name }} {% else %} {%+ filter highlight(language="python", inline=True) %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {{ type_alias_name }}{% include "type_parameters"|get_template with context %} = {{ type_alias.value }} + {{ type_alias_name }}{% include "type_parameters.html.jinja" with context %} = {{ type_alias.value }} {% endfilter %} {% endif %} {% endblock heading %} @@ -63,8 +62,7 @@ Context: This block renders the labels for the type alias. -#} {% with labels = type_alias.labels %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "labels"|get_template with context %} + {% include "labels.html.jinja" with context %} {% endwith %} {% endblock labels %} @@ -109,8 +107,7 @@ Context: This block renders the docstring for the type alias. -#} {% with docstring_sections = type_alias.docstring.parsed %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "docstring"|get_template with context %} + {% include "docstring.html.jinja" with context %} {% endwith %} {% endblock docstring %} {% endblock contents %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/type_parameters.html b/src/mkdocstrings_handlers/python/templates/material/_base/type_parameters.html deleted file mode 100644 index 782b1e8b..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/_base/type_parameters.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/type_parameters.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/type_parameters.html' is deprecated, extend '_base/type_parameters.html.jinja' instead.", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/type_parameters.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/type_parameters.html.jinja index 59fad354..47100924 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/type_parameters.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/type_parameters.html.jinja @@ -27,8 +27,7 @@ Context: {%- set ns.equal = " = " -%} {%- if config.separate_signature and config.signature_crossrefs -%} {%- with expression = type_parameter.annotation -%} - {#- YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. -#} - {%- set ns.annotation -%}: {% include "expression"|get_template with context %}{%- endset -%} + {%- set ns.annotation -%}: {% include "expression.html.jinja" with context %}{%- endset -%} {%- endwith -%} {%- else -%} {%- set ns.annotation = ": " + type_parameter.annotation|safe -%} @@ -72,8 +71,7 @@ Context: {{ ns.equal }} {%- if config.signature_crossrefs and config.separate_signature -%} {%- with expression = type_parameter.default -%} - {#- YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. -#} - {%- include "expression"|get_template with context -%} + {%- include "expression.html.jinja" with context -%} {%- endwith -%} {%- else -%} {{ type_parameter.default|safe }} diff --git a/src/mkdocstrings_handlers/python/templates/material/attribute.html b/src/mkdocstrings_handlers/python/templates/material/attribute.html deleted file mode 100644 index aaf56880..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/attribute.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/attribute.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/children.html b/src/mkdocstrings_handlers/python/templates/material/children.html deleted file mode 100644 index 312346ec..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/children.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/children.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/docstring.html b/src/mkdocstrings_handlers/python/templates/material/docstring.html deleted file mode 100644 index cb91e77a..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/docstring.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/docstring/admonition.html b/src/mkdocstrings_handlers/python/templates/material/docstring/admonition.html deleted file mode 100644 index 943c883f..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/docstring/admonition.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/admonition.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/docstring/attributes.html b/src/mkdocstrings_handlers/python/templates/material/docstring/attributes.html deleted file mode 100644 index 6a67cafb..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/docstring/attributes.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/attributes.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/docstring/classes.html b/src/mkdocstrings_handlers/python/templates/material/docstring/classes.html deleted file mode 100644 index fce82b60..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/docstring/classes.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/classes.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/docstring/examples.html b/src/mkdocstrings_handlers/python/templates/material/docstring/examples.html deleted file mode 100644 index 334796a6..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/docstring/examples.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/examples.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/docstring/functions.html b/src/mkdocstrings_handlers/python/templates/material/docstring/functions.html deleted file mode 100644 index 9f07107e..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/docstring/functions.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/functions.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/docstring/modules.html b/src/mkdocstrings_handlers/python/templates/material/docstring/modules.html deleted file mode 100644 index 23a9965e..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/docstring/modules.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/modules.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/docstring/other_parameters.html b/src/mkdocstrings_handlers/python/templates/material/docstring/other_parameters.html deleted file mode 100644 index a7024661..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/docstring/other_parameters.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/other_parameters.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/docstring/parameters.html b/src/mkdocstrings_handlers/python/templates/material/docstring/parameters.html deleted file mode 100644 index fb49b54d..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/docstring/parameters.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/parameters.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/docstring/raises.html b/src/mkdocstrings_handlers/python/templates/material/docstring/raises.html deleted file mode 100644 index 1365fc5e..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/docstring/raises.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/raises.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/docstring/receives.html b/src/mkdocstrings_handlers/python/templates/material/docstring/receives.html deleted file mode 100644 index 9521ee68..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/docstring/receives.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/receives.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/docstring/returns.html b/src/mkdocstrings_handlers/python/templates/material/docstring/returns.html deleted file mode 100644 index 93413ed8..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/docstring/returns.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/returns.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/docstring/warns.html b/src/mkdocstrings_handlers/python/templates/material/docstring/warns.html deleted file mode 100644 index 95523fde..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/docstring/warns.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/warns.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/docstring/yields.html b/src/mkdocstrings_handlers/python/templates/material/docstring/yields.html deleted file mode 100644 index 58bccc7b..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/docstring/yields.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/yields.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/expression.html b/src/mkdocstrings_handlers/python/templates/material/expression.html deleted file mode 100644 index 5edd5520..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/expression.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/expression.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/function.html b/src/mkdocstrings_handlers/python/templates/material/function.html deleted file mode 100644 index c90df9b5..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/function.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/function.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/labels.html b/src/mkdocstrings_handlers/python/templates/material/labels.html deleted file mode 100644 index 124caf19..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/labels.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/labels.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/language.html b/src/mkdocstrings_handlers/python/templates/material/language.html deleted file mode 100644 index 6da4f8df..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/language.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/language.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/languages/en.html b/src/mkdocstrings_handlers/python/templates/material/languages/en.html deleted file mode 100644 index bcc4121e..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/languages/en.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/languages/en.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/languages/ja.html b/src/mkdocstrings_handlers/python/templates/material/languages/ja.html deleted file mode 100644 index 87827f60..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/languages/ja.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/languages/ja.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/languages/zh.html b/src/mkdocstrings_handlers/python/templates/material/languages/zh.html deleted file mode 100644 index 37c36ff0..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/languages/zh.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/languages/zh.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/module.html b/src/mkdocstrings_handlers/python/templates/material/module.html deleted file mode 100644 index ea043657..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/module.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/module.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/signature.html b/src/mkdocstrings_handlers/python/templates/material/signature.html deleted file mode 100644 index e6573985..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/signature.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/signature.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/style.css b/src/mkdocstrings_handlers/python/templates/material/style.css index 7475f5cd..7bb97041 100644 --- a/src/mkdocstrings_handlers/python/templates/material/style.css +++ b/src/mkdocstrings_handlers/python/templates/material/style.css @@ -210,3 +210,27 @@ code.doc-symbol-module::after { color: inherit; border-bottom: 1px dotted currentcolor; } + +/* Source code blocks (admonitions). */ +:root { + --md-admonition-icon--mkdocstrings-source: url('data:image/svg+xml;charset=utf-8,') +} +.md-typeset .admonition.mkdocstrings-source, +.md-typeset details.mkdocstrings-source { + border: none; + padding: 0; +} +.md-typeset .admonition.mkdocstrings-source:focus-within, +.md-typeset details.mkdocstrings-source:focus-within { + box-shadow: none; +} +.md-typeset .mkdocstrings-source > .admonition-title, +.md-typeset .mkdocstrings-source > summary { + background-color: inherit; +} +.md-typeset .mkdocstrings-source > .admonition-title::before, +.md-typeset .mkdocstrings-source > summary::before { + background-color: var(--md-default-fg-color); + -webkit-mask-image: var(--md-admonition-icon--mkdocstrings-source); + mask-image: var(--md-admonition-icon--mkdocstrings-source); +} diff --git a/src/mkdocstrings_handlers/python/templates/material/summary.html b/src/mkdocstrings_handlers/python/templates/material/summary.html deleted file mode 100644 index 604624e7..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/summary.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/summary.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/summary/attributes.html b/src/mkdocstrings_handlers/python/templates/material/summary/attributes.html deleted file mode 100644 index a0fdbb04..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/summary/attributes.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/summary/attributes.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/summary/classes.html b/src/mkdocstrings_handlers/python/templates/material/summary/classes.html deleted file mode 100644 index c01b2094..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/summary/classes.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/summary/classes.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/summary/functions.html b/src/mkdocstrings_handlers/python/templates/material/summary/functions.html deleted file mode 100644 index 90ca63e0..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/summary/functions.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/summary/functions.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/material/summary/modules.html b/src/mkdocstrings_handlers/python/templates/material/summary/modules.html deleted file mode 100644 index 1f69b3dc..00000000 --- a/src/mkdocstrings_handlers/python/templates/material/summary/modules.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/summary/modules.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/class.html b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/class.html new file mode 100644 index 00000000..ac3e421e --- /dev/null +++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/class.html @@ -0,0 +1,11 @@ +{% extends "_base/class.html.jinja" %} + +{% block logs scoped %} + {{ super() }} + {# TODO: Switch to a warning after some time. #} + {{ log.info( + "DeprecationWarning: Extending '_base/class.html' is deprecated, extend '_base/class.html.jinja' instead. " ~ + "After some time, this message will be logged as a warning, causing strict builds to fail.", + once=True, + ) }} +{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/class.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/class.html.jinja new file mode 100644 index 00000000..64b41ea6 --- /dev/null +++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/class.html.jinja @@ -0,0 +1,251 @@ +{#- Template for Python classes. + +This template renders a Python class. + +Context: + class (griffe.Class): The class to render. + root (bool): Whether this is the root object, injected with `:::` in a Markdown page. + heading_level (int): The HTML heading level to use. + config (dict): The configuration options. +-#} + +{% block logs scoped %} + {#- Logging block. + + This block can be used to log debug messages, deprecation messages, warnings, etc. + -#} + {{ log.debug("Rendering " + class.path) }} +{% endblock logs %} + +
    + {% with obj = class, html_id = class.path %} + + {% if root %} + {% set show_full_path = config.show_root_full_path %} + {% set root_members = True %} + {% elif root_members %} + {% set show_full_path = config.show_root_members_full_path or config.show_object_full_path %} + {% set root_members = False %} + {% else %} + {% set show_full_path = config.show_object_full_path %} + {% endif %} + + {% set class_name = class.path if show_full_path else class.name %} + + {% if not root or config.show_root_heading %} + {% filter heading( + heading_level, + role="class", + id=html_id, + class="doc doc-heading", + toc_label=(' '|safe if config.show_symbol_type_toc else '') + class.name, + ) %} + + {% block heading scoped %} + {#- Heading block. + + This block renders the heading for the class. + -#} + {% if config.show_symbol_type_heading %}{% endif %} + {% if config.separate_signature %} + {{ class_name }} + {% elif config.merge_init_into_class and "__init__" in class.all_members %} + {% with function = class.all_members["__init__"] %} + {%+ filter highlight(language="python", inline=True) %} + {{ class_name }}{% include "signature.html.jinja" with context %} + {% endfilter %} + {% endwith %} + {% else %} + {{ class_name }} + {% endif %} + {% endblock heading %} + + {% block labels scoped %} + {#- Labels block. + + This block renders the labels for the class. + -#} + {% with labels = class.labels %} + {% include "labels.html.jinja" with context %} + {% endwith %} + {% endblock labels %} + + {% endfilter %} + + {% block signature scoped %} + {#- Signature block. + + This block renders the signature for the class. + -#} + {% if config.separate_signature and config.merge_init_into_class %} + {% if "__init__" in class.all_members %} + {% with function = class.all_members["__init__"] %} + {% filter format_signature(function, config.line_length, crossrefs=config.signature_crossrefs) %} + {{ class.name }} + {% endfilter %} + {% endwith %} + {% endif %} + {% endif %} + {% endblock signature %} + + {% else %} + {% if config.show_root_toc_entry %} + {% filter heading(heading_level, + role="class", + id=html_id, + toc_label=(' '|safe if config.show_symbol_type_toc else '') + class.name, + hidden=True, + ) %} + {% endfilter %} + {% endif %} + {% set heading_level = heading_level - 1 %} + {% endif %} + +
    + {% block contents scoped %} + {#- Contents block. + + This block renders the contents of the class. + It contains other blocks that users can override. + Overriding the contents block allows to rearrange the order of the blocks. + -#} + {% block bases scoped %} + {#- Class bases block. + + This block renders the bases for the class. + -#} + {% if config.show_bases and class.bases %} +

    + Bases: {% for expression in class.bases -%} + {% include "expression.html.jinja" with context %}{% if not loop.last %}, {% endif %} + {% endfor -%} +

    + {% endif %} + {% endblock bases %} + + {% block inheritance_diagram scoped %} + {#- Inheritance diagram block. + + This block renders the inheritance diagram for the class, + using Mermaid syntax and a bit of JavaScript to make the nodes clickable, + linking to the corresponding class documentation. + -#} + {% if config.show_inheritance_diagram and class.bases %} + {% macro edges(class) %} + {% for base in class.resolved_bases %} + {{ base.path }} --> {{ class.path }} + {{ edges(base) }} + {% endfor %} + {% endmacro %} +
    + + {% for base in class.mro() %} + + {% endfor %} +
    +
    + flowchart {{ config.inheritance_diagram_direction }} + {{ class.path }}[{{ class.name }}] + {% for base in class.mro() %} + {{ base.path }}[{{ base.name }}] + {% endfor %} + + {{ edges(class) | safe }} + + click {{ class.path }} href "" "{{ class.path }}" + {% for base in class.mro() %} + click {{ base.path }} href "" "{{ base.path }}" + {% endfor %} +
    + + {% endif %} + {% endblock inheritance_diagram %} + + {% block docstring scoped %} + {#- Docstring block. + + This block renders the docstring for the class. + -#} + {% with docstring_sections = class.docstring.parsed %} + {% include "docstring.html.jinja" with context %} + {% endwith %} + {% if config.merge_init_into_class %} + {% if "__init__" in class.all_members and class.all_members["__init__"].has_docstring %} + {% with function = class.all_members["__init__"] %} + {% with obj = function, docstring_sections = function.docstring.parsed %} + {% include "docstring.html.jinja" with context %} + {% endwith %} + {% endwith %} + {% endif %} + {% endif %} + {% endblock docstring %} + + {% block summary scoped %} + {#- Summary block. + + This block renders auto-summaries for classes, methods, and attributes. + -#} + {% include "summary.html.jinja" with context %} + {% endblock summary %} + + {% block source scoped %} + {#- Source block. + + This block renders the source code for the class. + -#} + {% if config.show_source %} + {% if config.merge_init_into_class %} + {% if "__init__" in class.all_members and class.all_members["__init__"].source %} + {% with init = class.all_members["__init__"] %} +
    + Source code in + {%- if init.relative_filepath.is_absolute() -%} + {{ init.relative_package_filepath }} + {%- else -%} + {{ init.relative_filepath }} + {%- endif -%} + + {{ init.source|highlight(language="python", linestart=init.lineno or 0, linenums=True) }} +
    + {% endwith %} + {% endif %} + {% elif class.source %} +
    + Source code in + {%- if class.relative_filepath.is_absolute() -%} + {{ class.relative_package_filepath }} + {%- else -%} + {{ class.relative_filepath }} + {%- endif -%} + + {{ class.source|highlight(language="python", linestart=class.lineno or 0, linenums=True) }} +
    + {% endif %} + {% endif %} + {% endblock source %} + + {% block children scoped %} + {#- Children block. + + This block renders the children (members) of the class. + -#} + {% set root = False %} + {% set heading_level = heading_level + 1 %} + {% include "children.html.jinja" with context %} + {% endblock children %} + {% endblock contents %} +
    + + {% endwith %} + +
    diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/attributes.html b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/attributes.html deleted file mode 100644 index 9f2abcd1..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/attributes.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/attributes.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/attributes.html' is deprecated, extend '_base/docstring/attributes.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/attributes.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/attributes.html.jinja index e8804310..a3817449 100644 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/attributes.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/attributes.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug() }} {% endblock %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#} @@ -34,8 +33,7 @@ Context: {{ attribute.name }} {% if attribute.annotation %} {% with expression = attribute.annotation %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - ({% include "expression"|get_template with context %}) + ({% include "expression.html.jinja" with context %}) {% endwith %} {% endif %} – diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/other_parameters.html b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/other_parameters.html deleted file mode 100644 index 02261331..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/other_parameters.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/other_parameters.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/other_parameters.html' is deprecated, extend '_base/docstring/other_parameters.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/other_parameters.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/other_parameters.html.jinja index 6605e48d..f7af2121 100644 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/other_parameters.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/other_parameters.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug() }} {% endblock %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#}
    @@ -34,8 +33,7 @@ Context: {{ parameter.name }} {% if parameter.annotation %} {% with expression = parameter.annotation, backlink_type = "used-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - ({% include "expression"|get_template with context %}) + ({% include "expression.html.jinja" with context %}) {% endwith %} {% endif %} – diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/parameters.html b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/parameters.html deleted file mode 100644 index f5292150..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/parameters.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/parameters.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/parameters.html' is deprecated, extend '_base/docstring/parameters.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/parameters.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/parameters.html.jinja index de01dcbe..95c480fa 100644 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/parameters.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/parameters.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug() }} {% endblock %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#}
    @@ -34,12 +33,10 @@ Context: {{ parameter.name }} {% if parameter.annotation %} {% with expression = parameter.annotation, backlink_type = "used-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - ({% include "expression"|get_template with context %} + ({% include "expression.html.jinja" with context %} {%- if parameter.default %}, {{ lang.t("default:") }} {% with expression = parameter.default, backlink_type = "used-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %}) {% endwith %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/raises.html b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/raises.html deleted file mode 100644 index 38a21e89..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/raises.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/raises.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/raises.html' is deprecated, extend '_base/docstring/raises.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/raises.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/raises.html.jinja index cf7d0b01..71beb34c 100644 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/raises.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/raises.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug() }} {% endblock %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#}
    @@ -33,8 +32,7 @@ Context:
  • {% if raises.annotation %} {% with expression = raises.annotation, backlink_type = "raised-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} – diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/receives.html b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/receives.html deleted file mode 100644 index d9c404b6..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/receives.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/receives.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/receives.html' is deprecated, extend '_base/docstring/receives.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/receives.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/receives.html.jinja index 84d6c1bc..8ad9cae3 100644 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/receives.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/receives.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug() }} {% endblock %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#}
  • @@ -35,8 +34,7 @@ Context: {% if receives.annotation %} {% with expression = receives.annotation, backlink_type = "received-by" %} {% if receives.name %}({% endif %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% if receives.name %}){% endif %} {% endwith %} {% endif %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/returns.html b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/returns.html deleted file mode 100644 index b608af5f..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/returns.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/returns.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/returns.html' is deprecated, extend '_base/docstring/returns.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/returns.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/returns.html.jinja index c1171c7e..2201f545 100644 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/returns.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/returns.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug() }} {% endblock %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#}
    @@ -35,8 +34,7 @@ Context: {% if returns.annotation %} {% with expression = returns.annotation, backlink_type = "returned-by" %} {% if returns.name %}({% endif %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% if returns.name %}){% endif %} {% endwith %} {% endif %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/warns.html b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/warns.html deleted file mode 100644 index 9eba72ab..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/warns.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/warns.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/warns.html' is deprecated, extend '_base/docstring/warns.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/warns.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/warns.html.jinja index 5570ca37..97cbc1de 100644 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/warns.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/warns.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug() }} {% endblock %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#}
    @@ -33,8 +32,7 @@ Context:
  • {% if warns.annotation %} {% with expression = warns.annotation, backlink_type = "emitted-by" %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% endwith %} {% endif %} – diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/yields.html b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/yields.html deleted file mode 100644 index 6ec31dd0..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/yields.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/yields.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/docstring/yields.html' is deprecated, extend '_base/docstring/yields.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/yields.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/yields.html.jinja index 712776fe..8298421f 100644 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/yields.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/yields.html.jinja @@ -15,8 +15,7 @@ Context: {{ log.debug() }} {% endblock %} -{# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} -{% import "language"|get_template as lang with context %} +{% import "language.html.jinja" as lang with context %} {#- Language module providing the `t` translation method. -#}
  • @@ -35,8 +34,7 @@ Context: {% if yields.annotation %} {% with expression = yields.annotation, backlink_type = "yielded-by" %} {% if yields.name %}({% endif %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% include "expression"|get_template with context %} + {% include "expression.html.jinja" with context %} {% if yields.name %}){% endif %} {% endwith %} {% endif %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/language.html b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/language.html deleted file mode 100644 index a5a86545..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/language.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/language.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/language.html' is deprecated, extend '_base/language.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/language.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/language.html.jinja index 5a4b773e..31ecfdd6 100644 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/language.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/language.html.jinja @@ -7,15 +7,12 @@ -#} {% endblock logs %} -{# YORE: Bump 2: Replace `| get_template` with `~ ".html.jinja"` within line. #} -{% set lang_pth = "languages/" ~ locale | get_template %} +{% set lang_pth = "languages/" ~ locale ~ ".html.jinja" %} {% if lang_pth is existing_template %} {% import lang_pth as lang %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% import "languages/en"|get_template as fallback %} + {% import "languages/en.html.jinja" as fallback %} {% macro t(key) %}{{ lang.t(key) or fallback.t(key) }}{% endmacro %} {% else %} - {# YORE: Bump 2: Replace `"|get_template` with `.html.jinja"` within line. #} - {% import "languages/en"|get_template as lang %} + {% import "languages/en.html.jinja" as lang %} {% macro t(key) %}{{ lang.t(key) }}{% endmacro %} {% endif %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/languages/en.html b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/languages/en.html deleted file mode 100644 index 2f050a32..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/languages/en.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/languages/en.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/languages/en.html' is deprecated, extend '_base/languages/en.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/languages/ja.html b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/languages/ja.html deleted file mode 100644 index 1f3095f4..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/languages/ja.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/languages/ja.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/languages/ja.html' is deprecated, extend '_base/languages/ja.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/languages/zh.html b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/languages/zh.html deleted file mode 100644 index b58b0479..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/languages/zh.html +++ /dev/null @@ -1,10 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/languages/zh.html.jinja" %} - -{% block logs scoped %} - {{ super() }} - {{ log.warning( - "DeprecationWarning: Extending '_base/languages/zh.html' is deprecated, extend '_base/languages/zh.html.jinja' instead. ", - once=True, - ) }} -{% endblock logs %} diff --git a/src/mkdocstrings_handlers/python/templates/material/class.html b/src/mkdocstrings_handlers/python/templates/readthedocs/class.html similarity index 54% rename from src/mkdocstrings_handlers/python/templates/material/class.html rename to src/mkdocstrings_handlers/python/templates/readthedocs/class.html index 7ee0f690..5e7329df 100644 --- a/src/mkdocstrings_handlers/python/templates/material/class.html +++ b/src/mkdocstrings_handlers/python/templates/readthedocs/class.html @@ -1,2 +1 @@ -{# YORE: Bump 2: Remove file. #} {% extends "_base/class.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/class.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/class.html.jinja new file mode 100644 index 00000000..5e7329df --- /dev/null +++ b/src/mkdocstrings_handlers/python/templates/readthedocs/class.html.jinja @@ -0,0 +1 @@ +{% extends "_base/class.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/attributes.html b/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/attributes.html deleted file mode 100644 index 6a67cafb..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/attributes.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/attributes.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/other_parameters.html b/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/other_parameters.html deleted file mode 100644 index a7024661..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/other_parameters.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/other_parameters.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/parameters.html b/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/parameters.html deleted file mode 100644 index fb49b54d..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/parameters.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/parameters.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/raises.html b/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/raises.html deleted file mode 100644 index 1365fc5e..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/raises.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/raises.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/receives.html b/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/receives.html deleted file mode 100644 index 9521ee68..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/receives.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/receives.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/returns.html b/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/returns.html deleted file mode 100644 index 93413ed8..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/returns.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/returns.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/warns.html b/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/warns.html deleted file mode 100644 index 95523fde..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/warns.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/warns.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/yields.html b/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/yields.html deleted file mode 100644 index 58bccc7b..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/docstring/yields.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/docstring/yields.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/language.html b/src/mkdocstrings_handlers/python/templates/readthedocs/language.html deleted file mode 100644 index 6da4f8df..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/language.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/language.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/languages/en.html b/src/mkdocstrings_handlers/python/templates/readthedocs/languages/en.html deleted file mode 100644 index bcc4121e..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/languages/en.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/languages/en.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/languages/ja.html b/src/mkdocstrings_handlers/python/templates/readthedocs/languages/ja.html deleted file mode 100644 index 87827f60..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/languages/ja.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/languages/ja.html.jinja" %} diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/languages/zh.html b/src/mkdocstrings_handlers/python/templates/readthedocs/languages/zh.html deleted file mode 100644 index 37c36ff0..00000000 --- a/src/mkdocstrings_handlers/python/templates/readthedocs/languages/zh.html +++ /dev/null @@ -1,2 +0,0 @@ -{# YORE: Bump 2: Remove file. #} -{% extends "_base/languages/zh.html.jinja" %} diff --git a/tests/test_api.py b/tests/test_api.py index 6d0b8738..85432b54 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -51,7 +51,7 @@ def _yield_public_objects( if modules: yield member yield from _yield_public_objects( - member, # type: ignore[arg-type] + member, modules=modules, modulelevel=modulelevel, inherited=inherited, @@ -63,7 +63,7 @@ def _yield_public_objects( continue if member.is_class and not modulelevel: yield from _yield_public_objects( - member, # type: ignore[arg-type] + member, modules=modules, modulelevel=False, inherited=inherited, @@ -92,7 +92,7 @@ def _fixture_public_objects(public_api: griffe.Module) -> list[griffe.Object | g def _fixture_inventory() -> Inventory: inventory_file = Path(__file__).parent.parent / "site" / "objects.inv" if not inventory_file.exists(): - raise pytest.skip("The objects inventory is not available.") + pytest.skip("The objects inventory is not available.") # ty: ignore[call-non-callable] with inventory_file.open("rb") as file: return Inventory.parse_sphinx(file) @@ -138,7 +138,9 @@ def test_api_matches_inventory(inventory: Inventory, public_objects: list[griffe """All public objects are added to the inventory.""" ignore_names = {"__getattr__", "__init__", "__repr__", "__str__", "__post_init__"} not_in_inventory = [ - obj.path for obj in public_objects if obj.name not in ignore_names and obj.path not in inventory + f"{obj.relative_filepath}:{obj.lineno}: {obj.path}" + for obj in public_objects + if obj.name not in ignore_names and obj.path not in inventory ] msg = "Objects not in the inventory (try running `make run mkdocs build`):\n{paths}" assert not not_in_inventory, msg.format(paths="\n".join(sorted(not_in_inventory))) @@ -160,10 +162,6 @@ def test_inventory_matches_api( public_api_paths = {obj.path for obj in public_objects} public_api_paths.add("mkdocstrings_handlers") public_api_paths.add("mkdocstrings_handlers.python") - # YORE: Bump 2: Remove block. - public_api_paths.add("mkdocstrings_handlers.python.config") - public_api_paths.add("mkdocstrings_handlers.python.handler") - public_api_paths.add("mkdocstrings_handlers.python.rendering") for item in inventory.values(): if item.domain == "py" and "(" not in item.name and _module_or_child("mkdocstrings_handlers.python", item.name): diff --git a/tests/test_handler.py b/tests/test_handler.py index f98ce545..1cccd6c6 100644 --- a/tests/test_handler.py +++ b/tests/test_handler.py @@ -180,6 +180,8 @@ def test_give_precedence_to_user_paths() -> None: """Assert user paths take precedence over default paths.""" last_sys_path = sys.path[-1] handler = PythonHandler( + theme="material", + custom_templates=None, base_dir=Path("."), config=PythonConfig.from_data(paths=[last_sys_path]), mdx=[], diff --git a/tests/test_rendering.py b/tests/test_rendering.py index 2616610f..91f945a8 100644 --- a/tests/test_rendering.py +++ b/tests/test_rendering.py @@ -78,7 +78,7 @@ def test_filter_objects(names: list[str], filter_params: dict[str, Any], expecte expected_names: Names expected to be kept. """ objects = {name: _FakeObject(name) for name in names} - filtered = rendering.do_filter_objects(objects, **filter_params) # type: ignore[arg-type] + filtered = rendering.do_filter_objects(objects, **filter_params) filtered_names = {obj.name for obj in filtered} assert set(filtered_names) == set(expected_names) diff --git a/tests/test_themes.py b/tests/test_themes.py index bf7401d6..5a7e9038 100644 --- a/tests/test_themes.py +++ b/tests/test_themes.py @@ -22,13 +22,9 @@ @pytest.mark.parametrize( "identifier", [ - "mkdocstrings.extension", - "mkdocstrings.inventory", - "mkdocstrings.loggers", - "mkdocstrings.plugin", - "mkdocstrings.handlers.base", - "mkdocstrings.handlers.rendering", - "mkdocstrings_handlers.python", + "mkdocstrings_handlers.python._internal.config", + "mkdocstrings_handlers.python._internal.handler", + "mkdocstrings_handlers.python._internal.rendering", ], ) def test_render_themes_templates_python(identifier: str, handler: PythonHandler) -> None: