Coverage for tests / conftest.py: 96%
53 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-06-10 09:40 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-06-10 09:40 +0000
1import shutil 1abcdefgh
2import subprocess 1abcdefgh
3from collections.abc import Callable, Generator 1abcdefgh
4from dataclasses import dataclass, field 1abcdefgh
5from pathlib import Path 1abcdefgh
6from typing import Any 1abcdefgh
7from unittest.mock import patch 1abcdefgh
9import pytest 1abcdefgh
10from pydantic import BaseModel 1abcdefgh
11from sqlmodel import SQLModel 1abcdefgh
12from sqlmodel.main import default_registry 1abcdefgh
14top_level_path = Path(__file__).resolve().parent.parent 1abcdefgh
15docs_src_path = top_level_path / "docs_src" 1abcdefgh
18@pytest.fixture(autouse=True) 1abcdefgh
19def clear_sqlmodel() -> Any: 1abcdefgh
20 # Clear the tables in the metadata for the default base model
21 SQLModel.metadata.clear() 1abcdefgh
22 # Clear the Models associated with the registry, to avoid warnings
23 default_registry.dispose() 1abcdefgh
24 yield 1abcdefgh
25 SQLModel.metadata.clear() 1abcdefgh
26 default_registry.dispose() 1abcdefgh
29@pytest.fixture() 1abcdefgh
30def cov_tmp_path(tmp_path: Path) -> Generator[Path, None, None]: 1abcdefgh
31 yield tmp_path 1abcdefgh
32 for coverage_path in tmp_path.glob(".coverage*"): 1abcdefgh
33 coverage_destiny_path = top_level_path / "coverage" / coverage_path.name
34 shutil.copy(coverage_path, coverage_destiny_path)
37def coverage_run(*, module: str, cwd: str | Path) -> subprocess.CompletedProcess: 1abcdefgh
38 result = subprocess.run( 2:f;f=f?f@f[f]f^f
39 [
40 "coverage",
41 "run",
42 "--parallel-mode",
43 "--source=docs_src,tests,sqlmodel",
44 "-m",
45 module,
46 ],
47 cwd=str(cwd),
48 capture_output=True,
49 encoding="utf-8",
50 )
51 return result 2:f;f=f?f@f[f]f^f
54def get_testing_print_function( 1abcdefgh
55 calls: list[list[str | dict[str, Any]]],
56) -> Callable[..., Any]:
57 def new_print(*args: Any) -> None: 1abcdefgh
58 data: list[Any] = [] 2pbqbrbsbtbubvbwbxbybzbAbBbCbDbEbSeTe4 5 6 7 i j k FbCeGbHbIbJbKbLbDel m MbNbObPbQbRbSbTbn UeVe8 9 UbVbWbXbWeXeYeZe0e1e2e3e4e5e6eYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b7e8e! # $ % o p q 'bEe(b)b*b+b,b-bFer s .b/b:b;b=b?b@b[bt 9e!e' ( ]b^b_b`b#e$e%e'e(e)e*e+e,e-e.e{b|b}b~bacbcccdcecfcgchcicjckclc/e:e) * + , u v w mcGencocpcqcrcscHex y tcucvcwcxcyczcAcz ;e=e- . BcCcDcEc?e@e[e]e^e_e`e{e|e}e~eFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcafbf/ : ; = A B C VcIeWcXcYcZc0c1cJeD E 2c3c4c5c6c7c8c9cF cfdf? @ !c#c$c%cefffgfhfifjfkflfmfnfof'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]cpfqf[ ] ^ _ G H I ^cKe_c`c{c|c}c~cLeJ K adbdcdddedfdgdhdL rfsf` { idjdkdldtfufvfwfxfyfzfAfBfCfDfmdndodpdqdrdsdtdudvdwdxdydzdAdBdEfFf| } ~ abM N O CdMeDdEdFdGdHdIdNeP Q JdKdLdMdNdOdPdQdR GfHfbbcbRdSdTdUdIfJfKfLfMfNfOfPfQfRfSfVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!dTfUfdbebfbgbS T U #dOe$d%d'd(d)d*dPeV W +d,d-d.d/d:d;d=dX VfWfhbib?d@d[d]dXfYfZf0f1f2f3f4f5f6f7f^d_d`d{d|d}d~daebecedeeefegeheie8f9fjbkblbmbY Z 0 jeQekelemeneoepeRe1 2 qereseteuevewexe3 !f#fnbobyezeAeBe$f%f'f(f)f*f+f,f-f.f/f
59 for arg in args: 2pbqbrbsbtbubvbwbxbybzbAbBbCbDbEbSeTe4 5 6 7 i j k FbCeGbHbIbJbKbLbDel m MbNbObPbQbRbSbTbn UeVe8 9 UbVbWbXbWeXeYeZe0e1e2e3e4e5e6eYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b7e8e! # $ % o p q 'bEe(b)b*b+b,b-bFer s .b/b:b;b=b?b@b[bt 9e!e' ( ]b^b_b`b#e$e%e'e(e)e*e+e,e-e.e{b|b}b~bacbcccdcecfcgchcicjckclc/e:e) * + , u v w mcGencocpcqcrcscHex y tcucvcwcxcyczcAcz ;e=e- . BcCcDcEc?e@e[e]e^e_e`e{e|e}e~eFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcafbf/ : ; = A B C VcIeWcXcYcZc0c1cJeD E 2c3c4c5c6c7c8c9cF cfdf? @ !c#c$c%cefffgfhfifjfkflfmfnfof'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]cpfqf[ ] ^ _ G H I ^cKe_c`c{c|c}c~cLeJ K adbdcdddedfdgdhdL rfsf` { idjdkdldtfufvfwfxfyfzfAfBfCfDfmdndodpdqdrdsdtdudvdwdxdydzdAdBdEfFf| } ~ abM N O CdMeDdEdFdGdHdIdNeP Q JdKdLdMdNdOdPdQdR GfHfbbcbRdSdTdUdIfJfKfLfMfNfOfPfQfRfSfVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!dTfUfdbebfbgbS T U #dOe$d%d'd(d)d*dPeV W +d,d-d.d/d:d;d=dX VfWfhbib?d@d[d]dXfYfZf0f1f2f3f4f5f6f7f^d_d`d{d|d}d~daebecedeeefegeheie8f9fjbkblbmbY Z 0 jeQekelemeneoepeRe1 2 qereseteuevewexe3 !f#fnbobyezeAeBe$f%f'f(f)f*f+f,f-f.f/f
60 if isinstance(arg, BaseModel): 2pbqbrbsbtbubvbwbxbybzbAbBbCbDbEbSeTe4 5 6 7 i j k FbCeGbHbIbJbKbLbDel m MbNbObPbQbRbSbTbn UeVe8 9 UbVbWbXbWeXeYeZe0e1e2e3e4e5e6eYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b7e8e! # $ % o p q 'bEe(b)b*b+b,b-bFer s .b/b:b;b=b?b@b[bt 9e!e' ( ]b^b_b`b#e$e%e'e(e)e*e+e,e-e.e{b|b}b~bacbcccdcecfcgchcicjckclc/e:e) * + , u v w mcGencocpcqcrcscHex y tcucvcwcxcyczcAcz ;e=e- . BcCcDcEc?e@e[e]e^e_e`e{e|e}e~eFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcafbf/ : ; = A B C VcIeWcXcYcZc0c1cJeD E 2c3c4c5c6c7c8c9cF cfdf? @ !c#c$c%cefffgfhfifjfkflfmfnfof'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]cpfqf[ ] ^ _ G H I ^cKe_c`c{c|c}c~cLeJ K adbdcdddedfdgdhdL rfsf` { idjdkdldtfufvfwfxfyfzfAfBfCfDfmdndodpdqdrdsdtdudvdwdxdydzdAdBdEfFf| } ~ abM N O CdMeDdEdFdGdHdIdNeP Q JdKdLdMdNdOdPdQdR GfHfbbcbRdSdTdUdIfJfKfLfMfNfOfPfQfRfSfVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!dTfUfdbebfbgbS T U #dOe$d%d'd(d)d*dPeV W +d,d-d.d/d:d;d=dX VfWfhbib?d@d[d]dXfYfZf0f1f2f3f4f5f6f7f^d_d`d{d|d}d~daebecedeeefegeheie8f9fjbkblbmbY Z 0 jeQekelemeneoepeRe1 2 qereseteuevewexe3 !f#fnbobyezeAeBe$f%f'f(f)f*f+f,f-f.f/f
61 data.append(arg.model_dump()) 2pbqbrbsbtbubvbwbxbybzbAbBbCbDbEbSeTei j k FbGbHbIbJbKbLbl m MbNbObPbQbRbSbTbn UeVeUbVbWbXbWeXeYeZe0e1e2e3e4e5e6eYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b7e8eo p q 'b(b)b*b+b,b-br s .b/b:b;b=b?b@b[bt 9e!e]b^b_b`b#e$e%e'e(e)e*e+e,e-e.e{b|b}b~bacbcccdcecfcgchcicjckclc/e:eu v w mcncocpcqcrcscx y tcucvcwcxcyczcAcz ;e=eBcCcDcEc?e@e[e]e^e_e`e{e|e}e~eFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcafbfA B C VcWcXcYcZc0c1cD E 2c3c4c5c6c7c8c9cF cfdf!c#c$c%cefffgfhfifjfkflfmfnfof'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]cpfqfG H I ^c_c`c{c|c}c~cJ K adbdcdddedfdgdhdL rfsfidjdkdldtfufvfwfxfyfzfAfBfCfDfmdndodpdqdrdsdtdudvdwdxdydzdAdBdEfFfM N O CdDdEdFdGdHdIdP Q JdKdLdMdNdOdPdQdR GfHfRdSdTdUdIfJfKfLfMfNfOfPfQfRfSfVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!dTfUfS T U #d$d%d'd(d)d*dV W +d,d-d.d/d:d;d=dX VfWf?d@d[d]dXfYfZf0f1f2f3f4f5f6f7f^d_d`d{d|d}d~daebecedeeefegeheie8f9fY Z 0 jekelemeneoepe1 2 qereseteuevewexe3 !f#fyezeAeBe$f%f'f(f)f*f+f,f-f.f/f
62 elif isinstance(arg, list): 2pbqbrbsbtbubvbwbxbybzbAbBbCbDbEb4 5 6 7 i j k FbCeGbHbIbJbKbLbDel m MbNbObPbQbRbSbTbn 8 9 UbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b! # $ % o p q 'bEe(b)b*b+b,b-bFer s .b/b:b;b=b?b@b[bt ' ( ]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclc) * + , u v w mcGencocpcqcrcscHex y tcucvcwcxcyczcAcz - . BcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUc/ : ; = A B C VcIeWcXcYcZc0c1cJeD E 2c3c4c5c6c7c8c9cF ? @ !c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c[ ] ^ _ G H I ^cKe_c`c{c|c}c~cLeJ K adbdcdddedfdgdhdL ` { idjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBd| } ~ abM N O CdMeDdEdFdGdHdIdNeP Q JdKdLdMdNdOdPdQdR bbcbRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!ddbebfbgbS T U #dOe$d%d'd(d)d*dPeV W +d,d-d.d/d:d;d=dX hbib?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejbkblbmbY Z 0 jeQekelemeneoepeRe1 2 qereseteuevewexe3 nbobyezeAeBe
63 new_list = [] 24 5 6 7 i j k l m n 8 9 ! # $ % o p q r s t ' ( ) * + , u v w x y z - . / : ; = A B C D E F ? @ [ ] ^ _ G H I J K L ` { | } ~ abM N O P Q R bbcbdbebfbgbS T U V W X hbibjbkblbmbY Z 0 1 2 3 nbob
64 for item in arg: 24 5 6 7 i j k l m n 8 9 ! # $ % o p q r s t ' ( ) * + , u v w x y z - . / : ; = A B C D E F ? @ [ ] ^ _ G H I J K L ` { | } ~ abM N O P Q R bbcbdbebfbgbS T U V W X hbibjbkblbmbY Z 0 1 2 3 nbob
65 if isinstance(item, BaseModel): 24 5 6 7 i j k l m n 8 9 ! # $ % o p q r s t ' ( ) * + , u v w x y z - . / : ; = A B C D E F ? @ [ ] ^ _ G H I J K L ` { | } ~ abM N O P Q R bbcbdbebfbgbS T U V W X hbibjbkblbmbY Z 0 1 2 3 nbob
66 new_list.append(item.model_dump()) 24 5 6 7 i j k l m n 8 9 ! # $ % o p q r s t ' ( ) * + , u v w x y z - . / : ; = A B C D E F ? @ [ ] ^ _ G H I J K L ` { | } ~ abM N O P Q R bbcbdbebfbgbS T U V W X hbibjbkblbmbY Z 0 1 2 3 nbob
67 data.append(new_list) 24 5 6 7 i j k l m n 8 9 ! # $ % o p q r s t ' ( ) * + , u v w x y z - . / : ; = A B C D E F ? @ [ ] ^ _ G H I J K L ` { | } ~ abM N O P Q R bbcbdbebfbgbS T U V W X hbibjbkblbmbY Z 0 1 2 3 nbob
68 else:
69 data.append(arg) 2pbqbrbsbtbubvbwbxbybzbAbBbCbDbEbi j k FbCeGbHbIbJbKbLbDel m MbNbObPbQbRbSbTbn UbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%bo p q 'bEe(b)b*b+b,b-bFer s .b/b:b;b=b?b@b[bt ]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcu v w mcGencocpcqcrcscHex y tcucvcwcxcyczcAcz BcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcA B C VcIeWcXcYcZc0c1cJeD E 2c3c4c5c6c7c8c9cF !c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]cG H I ^cKe_c`c{c|c}c~cLeJ K adbdcdddedfdgdhdL idjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdM N O CdMeDdEdFdGdHdIdNeP Q JdKdLdMdNdOdPdQdR RdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!dS T U #dOe$d%d'd(d)d*dPeV W +d,d-d.d/d:d;d=dX ?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheieY Z 0 jeQekelemeneoepeRe1 2 qereseteuevewexe3 yezeAeBe
70 calls.append(data) 2pbqbrbsbtbubvbwbxbybzbAbBbCbDbEbSeTe4 5 6 7 i j k FbCeGbHbIbJbKbLbDel m MbNbObPbQbRbSbTbn UeVe8 9 UbVbWbXbWeXeYeZe0e1e2e3e4e5e6eYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b7e8e! # $ % o p q 'bEe(b)b*b+b,b-bFer s .b/b:b;b=b?b@b[bt 9e!e' ( ]b^b_b`b#e$e%e'e(e)e*e+e,e-e.e{b|b}b~bacbcccdcecfcgchcicjckclc/e:e) * + , u v w mcGencocpcqcrcscHex y tcucvcwcxcyczcAcz ;e=e- . BcCcDcEc?e@e[e]e^e_e`e{e|e}e~eFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcafbf/ : ; = A B C VcIeWcXcYcZc0c1cJeD E 2c3c4c5c6c7c8c9cF cfdf? @ !c#c$c%cefffgfhfifjfkflfmfnfof'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]cpfqf[ ] ^ _ G H I ^cKe_c`c{c|c}c~cLeJ K adbdcdddedfdgdhdL rfsf` { idjdkdldtfufvfwfxfyfzfAfBfCfDfmdndodpdqdrdsdtdudvdwdxdydzdAdBdEfFf| } ~ abM N O CdMeDdEdFdGdHdIdNeP Q JdKdLdMdNdOdPdQdR GfHfbbcbRdSdTdUdIfJfKfLfMfNfOfPfQfRfSfVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!dTfUfdbebfbgbS T U #dOe$d%d'd(d)d*dPeV W +d,d-d.d/d:d;d=dX VfWfhbib?d@d[d]dXfYfZf0f1f2f3f4f5f6f7f^d_d`d{d|d}d~daebecedeeefegeheie8f9fjbkblbmbY Z 0 jeQekelemeneoepeRe1 2 qereseteuevewexe3 !f#fnbobyezeAeBe$f%f'f(f)f*f+f,f-f.f/f
72 return new_print 1abcdefgh
75@dataclass 1abcdefgh
76class PrintMock: 1abcdefgh
77 calls: list[Any] = field(default_factory=list) 1abcdefgh
80@pytest.fixture(name="print_mock") 1abcdefgh
81def print_mock_fixture() -> Generator[PrintMock, None, None]: 1abcdefgh
82 print_mock = PrintMock() 1abcdefgh
83 new_print = get_testing_print_function(print_mock.calls) 1abcdefgh
84 with patch("builtins.print", new=new_print): 1abcdefgh
85 yield print_mock 1abcdefgh