Skip to content

Commit

Permalink
Fix tests to cope with inspect.getsource
Browse files Browse the repository at this point in the history
  • Loading branch information
Viicos committed Jul 13, 2023
1 parent 26cf8da commit df17772
Showing 1 changed file with 27 additions and 27 deletions.
54 changes: 27 additions & 27 deletions tests/test_docs_extraction.py
Expand Up @@ -5,20 +5,20 @@


def test_model_no_docs_extraction():
class Model(BaseModel):
class ModelNoDocs(BaseModel):
a: int = 1
"""A docs"""

b: str = '1'

"""B docs"""

assert Model.model_fields['a'].description is None
assert Model.model_fields['b'].description is None
assert ModelNoDocs.model_fields['a'].description is None
assert ModelNoDocs.model_fields['b'].description is None


def test_model_docs_extraction():
class Model(BaseModel):
class ModelDocs(BaseModel):
a: int
"""A docs"""
b: int = 1
Expand All @@ -33,7 +33,7 @@ def dummy_method(self) -> None:
"""Docs for dummy that wont be used for d"""

e: Annotated[int, Field(description='Real description')]
"""Won't be used"""
"""Wont be used"""

f: int
"""F docs"""
Expand All @@ -47,31 +47,31 @@ def dummy_method(self) -> None:
use_attributes_docstring=True,
)

assert Model.model_fields['a'].description == 'A docs'
assert Model.model_fields['b'].description == 'B docs'
assert Model.model_fields['c'].description is None
assert Model.model_fields['d'].description is None
assert Model.model_fields['e'].description == 'Real description'
assert Model.model_fields['g'].description == 'G docs'
assert ModelDocs.model_fields['a'].description == 'A docs'
assert ModelDocs.model_fields['b'].description == 'B docs'
assert ModelDocs.model_fields['c'].description is None
assert ModelDocs.model_fields['d'].description is None
assert ModelDocs.model_fields['e'].description == 'Real description'
assert ModelDocs.model_fields['g'].description == 'G docs'


def test_dataclass_no_docs_extraction():
@pydantic_dataclass
class Model:
class ModelDCNoDocs:
a: int = 1
"""A docs"""

b: str = '1'

"""B docs"""

assert Model.__pydantic_fields__['a'].description is None
assert Model.__pydantic_fields__['b'].description is None
assert ModelDCNoDocs.__pydantic_fields__['a'].description is None
assert ModelDCNoDocs.__pydantic_fields__['b'].description is None


def test_dataclass_docs_extraction():
@pydantic_dataclass(config=ConfigDict(use_attributes_docstring=True))
class Model:
class ModelDCDocs:
a: int
"""A docs"""
b: int = 1
Expand All @@ -86,7 +86,7 @@ def dummy_method(self) -> None:
"""Docs for dummy that wont be used for d"""

e: int = Field(1, description='Real description')
"""Won't be used"""
"""Wont be used"""

f: int
"""F docs"""
Expand All @@ -100,24 +100,24 @@ def dummy_method(self) -> None:
"""H docs"""

i: Annotated[int, Field(description='Real description')]
"""Won't be used"""

assert Model.__pydantic_fields__['a'].description == 'A docs'
assert Model.__pydantic_fields__['b'].description == 'B docs'
assert Model.__pydantic_fields__['c'].description is None
assert Model.__pydantic_fields__['d'].description is None
assert Model.__pydantic_fields__['e'].description == 'Real description'
assert Model.__pydantic_fields__['g'].description == 'G docs'
assert Model.__pydantic_fields__['i'].description == 'Real description' # TODO What is happening here?
"""Wont be used"""

assert ModelDCDocs.__pydantic_fields__['a'].description == 'A docs'
assert ModelDCDocs.__pydantic_fields__['b'].description == 'B docs'
assert ModelDCDocs.__pydantic_fields__['c'].description is None
assert ModelDCDocs.__pydantic_fields__['d'].description is None
assert ModelDCDocs.__pydantic_fields__['e'].description == 'Real description'
assert ModelDCDocs.__pydantic_fields__['g'].description == 'G docs'
assert ModelDCDocs.__pydantic_fields__['i'].description == 'Real description' # TODO What is happening here?
# Annotated[..., Field(...)] doesn't seem to work for dataclasses


def test_typeddict():
class Model(TypedDict):
class ModelTD(TypedDict):
a: int
"""A docs"""

ta = TypeAdapter(Model)
ta = TypeAdapter(ModelTD)
assert ta.json_schema() == {
'properties': {'a': {'title': 'A', 'type': 'integer'}},
'required': ['a'],
Expand Down

0 comments on commit df17772

Please sign in to comment.