Skip to content

Commit

Permalink
Merge pull request #202 from spacemanspiff2007/patch-1
Browse files Browse the repository at this point in the history
ignore model_computed_fields
mansenfranzen authored Mar 11, 2024
2 parents 1d14f12 + 824ab2a commit bd45dbf
Showing 7 changed files with 57 additions and 5 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -45,6 +45,9 @@ jobs:
- python_version: "3.12"
pydantic_version: "25"
sphinx_version: "72"
- python_version: "3.12"
pydantic_version: "26"
sphinx_version: "72"
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
5 changes: 5 additions & 0 deletions sphinxcontrib/autodoc_pydantic/directives/autodocumenters.py
Original file line number Diff line number Diff line change
@@ -212,6 +212,7 @@ def __init__(self, *args: Any) -> None:
exclude_members = self.options.setdefault("exclude-members", set())
exclude_members.add("model_fields")
exclude_members.add("model_config")
exclude_members.add("model_computed_fields")
self.pydantic = PydanticAutoDoc(self, is_child=False)

def document_members(self, *args, **kwargs):
@@ -571,6 +572,10 @@ class PydanticSettingsDocumenter(PydanticModelDocumenter):

pyautodoc_prefix = "settings"

def __init__(self, *args: Any) -> None:
super().__init__(*args)
self.options["exclude-members"].add("settings_customise_sources")

@classmethod
def can_document_member(cls,
member: Any,
1 change: 0 additions & 1 deletion tests/compatibility.py
Original file line number Diff line number Diff line change
@@ -6,7 +6,6 @@
from typing import Tuple, List
import re

import pydantic
import sphinx
from sphinx.addnodes import desc_sig_punctuation, desc_annotation, pending_xref

15 changes: 15 additions & 0 deletions tests/roots/test-base/target/configuration.py
Original file line number Diff line number Diff line change
@@ -273,6 +273,21 @@ class SettingsSignaturePrefix(BaseSettings):
"""SettingsSignaturePrefix."""


class SettingsHideCustomiseSources(BaseSettings):
"""SettingsHideCustomiseSources"""

@classmethod
def settings_customise_sources(
cls,
settings_cls,
init_settings,
env_settings,
dotenv_settings,
file_secret_settings,
):
return env_settings, init_settings, file_secret_settings


class ConfigMembers(BaseModel):
"""ConfigUndocMembers."""

29 changes: 29 additions & 0 deletions tests/test_configuration_settings.py
Original file line number Diff line number Diff line change
@@ -1146,3 +1146,32 @@ def test_autodoc_pydantic_settings_hide_reused_validator_false(autodocument):
"undoc-members": None},
**kwargs)
assert result == actual


def test_autodoc_pydantic_settings_hide_settings_customise_sources(autodocument):
"""Ensure that `settings_customise_sources` is hidden if provided.
This relates to #201.
"""

kwargs = dict(
object_path='target.configuration.SettingsHideCustomiseSources',
**KWARGS)

result = [
'',
'.. py:pydantic_settings:: SettingsHideCustomiseSources',
' :module: target.configuration',
'',
' SettingsHideCustomiseSources',
''
]

# explict global
actual = autodocument(
options_app={"autodoc_pydantic_settings_show_validator_members": True},
options_doc={"members": None,
"undoc-members": None},
**kwargs)
assert result == actual
6 changes: 3 additions & 3 deletions tests/test_edgecases.py
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@

from sphinxcontrib.autodoc_pydantic import PydanticModelDocumenter
from tests.compatibility import rst_alias_class_directive, \
TYPEHINTS_PREFIX, TYPING_MODULE_PREFIX_V1, module_doc_string_tab
TYPEHINTS_PREFIX, TYPING_MODULE_PREFIX_V2, module_doc_string_tab


def test_not_json_compliant(autodocument):
@@ -589,7 +589,7 @@ def test_non_field_attributes(autodocument):
'',
' .. py:attribute:: ClassAttribute.class_attribute',
' :module: target.edgecase_non_field_attribute',
f' :type: {TYPING_MODULE_PREFIX_V1}ClassVar[str]',
f' :type: {TYPING_MODULE_PREFIX_V2}ClassVar[str]',
' :value: None',
'',
' Dummy',
@@ -604,7 +604,7 @@ def test_non_field_attributes(autodocument):
assert result == actual


def test_non_field_attributes(autodocument):
def test_nested_pydantic_model_as_class_attribute(autodocument):
"""Ensure that pydantic models can be documented as class attributes.
This relates to #129.
3 changes: 2 additions & 1 deletion tox.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[tox]
envlist = py{37,38,39,310,311,312}-pydantic{20,21,22,23,24,25,latest}-sphinx{40,45,53,62,70,71,72,latest}, latest, development, no_erdantic, linter
envlist = py{37,38,39,310,311,312}-pydantic{20,21,22,23,24,25,26,latest}-sphinx{40,45,53,62,70,71,72,latest}, latest, development, no_erdantic, linter
isolated_build = True

[testenv]
@@ -21,6 +21,7 @@ deps =
pydantic23: pydantic~=2.3.0
pydantic24: pydantic~=2.4.0
pydantic25: pydantic~=2.5.0
pydantic26: pydantic~=2.6.0
pydanticlatest: pydantic
sphinx40: sphinx~=4.0.0
sphinx45: sphinx~=4.5.0

0 comments on commit bd45dbf

Please sign in to comment.