Coverage for tests/conftest.py: 97%
58 statements
« prev ^ index » next coverage.py v7.9.2, created at 2025-07-15 09:31 +0000
« prev ^ index » next coverage.py v7.9.2, created at 2025-07-15 09:31 +0000
1import shutil 1abcdef
2import subprocess 1abcdef
3import sys 1abcdef
4from dataclasses import dataclass, field 1abcdef
5from pathlib import Path 1abcdef
6from typing import Any, Callable, Dict, Generator, List, Union 1abcdef
7from unittest.mock import patch 1abcdef
9import pytest 1abcdef
10from pydantic import BaseModel 1abcdef
11from sqlmodel import SQLModel 1abcdef
12from sqlmodel._compat import IS_PYDANTIC_V2 1abcdef
13from sqlmodel.main import default_registry 1abcdef
15top_level_path = Path(__file__).resolve().parent.parent 1abcdef
16docs_src_path = top_level_path / "docs_src" 1abcdef
19@pytest.fixture(autouse=True) 1abcdef
20def clear_sqlmodel() -> Any: 1abcdef
21 # Clear the tables in the metadata for the default base model
22 SQLModel.metadata.clear() 1abcdef
23 # Clear the Models associated with the registry, to avoid warnings
24 default_registry.dispose() 1abcdef
25 yield 1abcdef
26 SQLModel.metadata.clear() 1abcdef
27 default_registry.dispose() 1abcdef
30@pytest.fixture() 1abcdef
31def cov_tmp_path(tmp_path: Path) -> Generator[Path, None, None]: 1abcdef
32 yield tmp_path 1abcdef
33 for coverage_path in tmp_path.glob(".coverage*"): 1abcdef
34 coverage_destiny_path = top_level_path / coverage_path.name
35 shutil.copy(coverage_path, coverage_destiny_path)
38def coverage_run(*, module: str, cwd: Union[str, Path]) -> subprocess.CompletedProcess: 1abcdef
39 result = subprocess.run( 2bicidieifigihiiijiki
40 [
41 "coverage",
42 "run",
43 "--parallel-mode",
44 "--source=docs_src,tests,sqlmodel",
45 "-m",
46 module,
47 ],
48 cwd=str(cwd),
49 capture_output=True,
50 encoding="utf-8",
51 )
52 return result 2bicidieifigihiiijiki
55def get_testing_print_function( 1abcdef
56 calls: List[List[Union[str, Dict[str, Any]]]],
57) -> Callable[..., Any]:
58 def new_print(*args: Any) -> None: 2a (b)b*b+b,b-b.b/b:b;b=b?b@b[brgsghbibjbkbg h i ]b|f^b_b`b{b|b}b}fj k ~bacbcccdcecfcgcl tguglbmbhcicjckcvgwgxgygzgAgBgCgDgEgFgb lcmcncocpcqcrcsctcucvcwcxcyczcGgHgnbobpbqbm n o p q r Ac~fBcCcDcEcFcGcags t u v HcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcw x IgJgrbsbXcYcZc0cKgLgMgNgOgPgQgRgSgTgUgc 1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]cVgWgXgYgtbubvbwbxbybzbAby z A B C D E F G ^c_cbgcg`c{c|c}c~cadbdcdddedfdgddgegH I J K L M hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdN O P Zg0g1g2gBbCbDbEbFdGdHdIdJdKdLdMd3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gd NdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d=g?g@g[gFbGbHbIbJbKbLbMbQ R S T U V W X Y )d*dfggg+d,d-d.d/d:d;d=d?d@d[d]dhgigZ 0 1 2 3 4 ^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqe5 6 7 ]g^g_g`gNbObPbQbreseteuevewexeye{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhe zeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1eshthuhvhRbSbTbUbVbWbXbYb8 9 ! # $ % ' ( ) 2e3ejgkg4e5e6e7e8e9e!e#e$e%e'e(elgmg* + , - . / )e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcf: ; = whxhyhzhZb0b1b2bdfefffgfhfifjfkfAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhf lfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfWhXhYhZh3b4b5b6b7b8b9b!b? @ [ ] ^ _ ` { | OfPfngogQfRfSfTfUfVfWfXfYfZf0f1fpgqg} ~ abbbcbdb2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=febfbgb0h1h2h3h#b$b%b'b?f@f[f]f^f_f`f{f4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h
59 data: List[Any] = [] 2(b)b*b?h@h+b,b-b.b/b:b;b=b?b@b[brgsghbibjbkbg h i ]b|f^b_b`b{b|b}b}fj k ~bacbcccdcecfcgcl tguglbmbhcicjckcvgwgxgygzgAgBgCgDgEgFglcmcnc[h]hocpcqcrcsctcucvcwcxcyczcGgHgnbobpbqbm n o p q r Ac~fBcCcDcEcFcGcags t u v HcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcw x IgJgrbsbXcYcZc0cKgLgMgNgOgPgQgRgSgTgUg1c2c3c4c5c6c^h_h7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]cVgWgXgYgtbubvbwbxbybzbAby z A B C D E F G ^c_cbgcg`c{c|c}c~cadbdcdddedfdgddgegH I J K L M hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdN O P Zg0g1g2gBbCbDbEbFdGdHdIdJdKdLdMd3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gNdOdPdQdRdSd`h{hTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d=g?g@g[gFbGbHbIbJbKbLbMbQ R S T U V W X Y )d*dfggg+d,d-d.d/d:d;d=d?d@d[d]dhgigZ 0 1 2 3 4 ^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqe5 6 7 ]g^g_g`gNbObPbQbreseteuevewexeye{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhzeAeBeCeDeEe|h}hFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1eshthuhvhRbSbTbUbVbWbXbYb8 9 ! # $ % ' ( ) 2e3ejgkg4e5e6e7e8e9e!e#e$e%e'e(elgmg* + , - . / )e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcf: ; = whxhyhzhZb0b1b2bdfefffgfhfifjfkfAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhlfmfnfofpfqf~hairfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfWhXhYhZh3b4b5b6b7b8b9b!b? @ [ ] ^ _ ` { | OfPfngogQfRfSfTfUfVfWfXfYfZf0f1fpgqg} ~ abbbcbdb2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=febfbgb0h1h2h3h#b$b%b'b?f@f[f]f^f_f`f{f4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h
60 for arg in args: 2(b)b*b?h@h+b,b-b.b/b:b;b=b?b@b[brgsghbibjbkbg h i ]b|f^b_b`b{b|b}b}fj k ~bacbcccdcecfcgcl tguglbmbhcicjckcvgwgxgygzgAgBgCgDgEgFglcmcnc[h]hocpcqcrcsctcucvcwcxcyczcGgHgnbobpbqbm n o p q r Ac~fBcCcDcEcFcGcags t u v HcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcw x IgJgrbsbXcYcZc0cKgLgMgNgOgPgQgRgSgTgUg1c2c3c4c5c6c^h_h7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]cVgWgXgYgtbubvbwbxbybzbAby z A B C D E F G ^c_cbgcg`c{c|c}c~cadbdcdddedfdgddgegH I J K L M hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdN O P Zg0g1g2gBbCbDbEbFdGdHdIdJdKdLdMd3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gNdOdPdQdRdSd`h{hTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d=g?g@g[gFbGbHbIbJbKbLbMbQ R S T U V W X Y )d*dfggg+d,d-d.d/d:d;d=d?d@d[d]dhgigZ 0 1 2 3 4 ^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqe5 6 7 ]g^g_g`gNbObPbQbreseteuevewexeye{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhzeAeBeCeDeEe|h}hFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1eshthuhvhRbSbTbUbVbWbXbYb8 9 ! # $ % ' ( ) 2e3ejgkg4e5e6e7e8e9e!e#e$e%e'e(elgmg* + , - . / )e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcf: ; = whxhyhzhZb0b1b2bdfefffgfhfifjfkfAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhlfmfnfofpfqf~hairfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfWhXhYhZh3b4b5b6b7b8b9b!b? @ [ ] ^ _ ` { | OfPfngogQfRfSfTfUfVfWfXfYfZf0f1fpgqg} ~ abbbcbdb2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=febfbgb0h1h2h3h#b$b%b'b?f@f[f]f^f_f`f{f4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h
61 if isinstance(arg, BaseModel): 2(b)b*b?h@h+b,b-b.b/b:b;b=b?b@b[brgsghbibjbkbg h i ]b|f^b_b`b{b|b}b}fj k ~bacbcccdcecfcgcl tguglbmbhcicjckcvgwgxgygzgAgBgCgDgEgFglcmcnc[h]hocpcqcrcsctcucvcwcxcyczcGgHgnbobpbqbm n o p q r Ac~fBcCcDcEcFcGcags t u v HcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcw x IgJgrbsbXcYcZc0cKgLgMgNgOgPgQgRgSgTgUg1c2c3c4c5c6c^h_h7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]cVgWgXgYgtbubvbwbxbybzbAby z A B C D E F G ^c_cbgcg`c{c|c}c~cadbdcdddedfdgddgegH I J K L M hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdN O P Zg0g1g2gBbCbDbEbFdGdHdIdJdKdLdMd3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gNdOdPdQdRdSd`h{hTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d=g?g@g[gFbGbHbIbJbKbLbMbQ R S T U V W X Y )d*dfggg+d,d-d.d/d:d;d=d?d@d[d]dhgigZ 0 1 2 3 4 ^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqe5 6 7 ]g^g_g`gNbObPbQbreseteuevewexeye{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhzeAeBeCeDeEe|h}hFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1eshthuhvhRbSbTbUbVbWbXbYb8 9 ! # $ % ' ( ) 2e3ejgkg4e5e6e7e8e9e!e#e$e%e'e(elgmg* + , - . / )e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcf: ; = whxhyhzhZb0b1b2bdfefffgfhfifjfkfAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhlfmfnfofpfqf~hairfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfWhXhYhZh3b4b5b6b7b8b9b!b? @ [ ] ^ _ ` { | OfPfngogQfRfSfTfUfVfWfXfYfZf0f1fpgqg} ~ abbbcbdb2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=febfbgb0h1h2h3h#b$b%b'b?f@f[f]f^f_f`f{f4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h
62 data.append(arg.model_dump()) 2(b)b*b?h@h+b,b-b.b/b:b;b=b?b@b[brgsgg h i ]b^b_b`b{b|b}bj k ~bacbcccdcecfcgcl tgughcicjckcvgwgxgygzgAgBgCgDgEgFglcmcnc[h]hocpcqcrcsctcucvcwcxcyczcGgHgm n o p q r AcBcCcDcEcFcGcs t u v HcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcw x IgJgXcYcZc0cKgLgMgNgOgPgQgRgSgTgUg1c2c3c4c5c6c^h_h7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]cVgWgXgYgy z A B C D E F G ^c_c`c{c|c}c~cadbdcdddedfdgdH I J K L M hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdN O P Zg0g1g2gFdGdHdIdJdKdLdMd3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gNdOdPdQdRdSd`h{hTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d=g?g@g[gQ R S T U V W X Y )d*d+d,d-d.d/d:d;d=d?d@d[d]dZ 0 1 2 3 4 ^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqe5 6 7 ]g^g_g`greseteuevewexeye{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhzeAeBeCeDeEe|h}hFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1eshthuhvh8 9 ! # $ % ' ( ) 2e3e4e5e6e7e8e9e!e#e$e%e'e(e* + , - . / )e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcf: ; = whxhyhzhdfefffgfhfifjfkfAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhlfmfnfofpfqf~hairfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfWhXhYhZh? @ [ ] ^ _ ` { | OfPfQfRfSfTfUfVfWfXfYfZf0f1f} ~ abbbcbdb2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=febfbgb0h1h2h3h?f@f[f]f^f_f`f{f4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h
63 elif isinstance(arg, list): 2(b)b*b?h@h+b,b-b.b/b:b;b=b?b@b[bhbibjbkbg h i ]b|f^b_b`b{b|b}b}fj k ~bacbcccdcecfcgcl lbmbhcicjckclcmcnc[h]hocpcqcrcsctcucvcwcxcyczcnbobpbqbm n o p q r Ac~fBcCcDcEcFcGcags t u v HcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcw x rbsbXcYcZc0c1c2c3c4c5c6c^h_h7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]ctbubvbwbxbybzbAby z A B C D E F G ^c_cbgcg`c{c|c}c~cadbdcdddedfdgddgegH I J K L M hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdN O P BbCbDbEbFdGdHdIdJdKdLdMdNdOdPdQdRdSd`h{hTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(dFbGbHbIbJbKbLbMbQ R S T U V W X Y )d*dfggg+d,d-d.d/d:d;d=d?d@d[d]dhgigZ 0 1 2 3 4 ^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqe5 6 7 NbObPbQbreseteuevewexeyezeAeBeCeDeEe|h}hFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1eRbSbTbUbVbWbXbYb8 9 ! # $ % ' ( ) 2e3ejgkg4e5e6e7e8e9e!e#e$e%e'e(elgmg* + , - . / )e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcf: ; = Zb0b1b2bdfefffgfhfifjfkflfmfnfofpfqf~hairfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNf3b4b5b6b7b8b9b!b? @ [ ] ^ _ ` { | OfPfngogQfRfSfTfUfVfWfXfYfZf0f1fpgqg} ~ abbbcbdb2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=febfbgb#b$b%b'b?f@f[f]f^f_f`f{f
64 new_list = [] 2hbibjbkbg h i j k l lbmbnbobpbqbm n o p q r s t u v w x rbsbtbubvbwbxbybzbAby z A B C D E F G H I J K L M N O P BbCbDbEbFbGbHbIbJbKbLbMbQ R S T U V W X Y Z 0 1 2 3 4 5 6 7 NbObPbQbRbSbTbUbVbWbXbYb8 9 ! # $ % ' ( ) * + , - . / : ; = Zb0b1b2b3b4b5b6b7b8b9b!b? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgb#b$b%b'b
65 for item in arg: 2hbibjbkbg h i j k l lbmbnbobpbqbm n o p q r s t u v w x rbsbtbubvbwbxbybzbAby z A B C D E F G H I J K L M N O P BbCbDbEbFbGbHbIbJbKbLbMbQ R S T U V W X Y Z 0 1 2 3 4 5 6 7 NbObPbQbRbSbTbUbVbWbXbYb8 9 ! # $ % ' ( ) * + , - . / : ; = Zb0b1b2b3b4b5b6b7b8b9b!b? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgb#b$b%b'b
66 if isinstance(item, BaseModel): 2hbibjbkbg h i j k l lbmbnbobpbqbm n o p q r s t u v w x rbsbtbubvbwbxbybzbAby z A B C D E F G H I J K L M N O P BbCbDbEbFbGbHbIbJbKbLbMbQ R S T U V W X Y Z 0 1 2 3 4 5 6 7 NbObPbQbRbSbTbUbVbWbXbYb8 9 ! # $ % ' ( ) * + , - . / : ; = Zb0b1b2b3b4b5b6b7b8b9b!b? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgb#b$b%b'b
67 new_list.append(item.model_dump()) 2hbibjbkbg h i j k l lbmbnbobpbqbm n o p q r s t u v w x rbsbtbubvbwbxbybzbAby z A B C D E F G H I J K L M N O P BbCbDbEbFbGbHbIbJbKbLbMbQ R S T U V W X Y Z 0 1 2 3 4 5 6 7 NbObPbQbRbSbTbUbVbWbXbYb8 9 ! # $ % ' ( ) * + , - . / : ; = Zb0b1b2b3b4b5b6b7b8b9b!b? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgb#b$b%b'b
68 data.append(new_list) 2hbibjbkbg h i j k l lbmbnbobpbqbm n o p q r s t u v w x rbsbtbubvbwbxbybzbAby z A B C D E F G H I J K L M N O P BbCbDbEbFbGbHbIbJbKbLbMbQ R S T U V W X Y Z 0 1 2 3 4 5 6 7 NbObPbQbRbSbTbUbVbWbXbYb8 9 ! # $ % ' ( ) * + , - . / : ; = Zb0b1b2b3b4b5b6b7b8b9b!b? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgb#b$b%b'b
69 else:
70 data.append(arg) 2(b)b*b?h@h+b,b-b.b/b:b;b=b?b@b[bg h i ]b|f^b_b`b{b|b}b}fj k ~bacbcccdcecfcgcl hcicjckclcmcnc[h]hocpcqcrcsctcucvcwcxcyczcm n o p q r Ac~fBcCcDcEcFcGcags t u v HcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcw x XcYcZc0c1c2c3c4c5c6c^h_h7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]cy z A B C D E F G ^c_cbgcg`c{c|c}c~cadbdcdddedfdgddgegH I J K L M hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdN O P FdGdHdIdJdKdLdMdNdOdPdQdRdSd`h{hTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(dQ R S T U V W X Y )d*dfggg+d,d-d.d/d:d;d=d?d@d[d]dhgigZ 0 1 2 3 4 ^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqe5 6 7 reseteuevewexeyezeAeBeCeDeEe|h}hFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e8 9 ! # $ % ' ( ) 2e3ejgkg4e5e6e7e8e9e!e#e$e%e'e(elgmg* + , - . / )e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcf: ; = dfefffgfhfifjfkflfmfnfofpfqf~hairfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNf? @ [ ] ^ _ ` { | OfPfngogQfRfSfTfUfVfWfXfYfZf0f1fpgqg} ~ abbbcbdb2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=febfbgb?f@f[f]f^f_f`f{f
71 calls.append(data) 2(b)b*b?h@h+b,b-b.b/b:b;b=b?b@b[brgsghbibjbkbg h i ]b|f^b_b`b{b|b}b}fj k ~bacbcccdcecfcgcl tguglbmbhcicjckcvgwgxgygzgAgBgCgDgEgFglcmcnc[h]hocpcqcrcsctcucvcwcxcyczcGgHgnbobpbqbm n o p q r Ac~fBcCcDcEcFcGcags t u v HcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcw x IgJgrbsbXcYcZc0cKgLgMgNgOgPgQgRgSgTgUg1c2c3c4c5c6c^h_h7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]cVgWgXgYgtbubvbwbxbybzbAby z A B C D E F G ^c_cbgcg`c{c|c}c~cadbdcdddedfdgddgegH I J K L M hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdN O P Zg0g1g2gBbCbDbEbFdGdHdIdJdKdLdMd3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gNdOdPdQdRdSd`h{hTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d=g?g@g[gFbGbHbIbJbKbLbMbQ R S T U V W X Y )d*dfggg+d,d-d.d/d:d;d=d?d@d[d]dhgigZ 0 1 2 3 4 ^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqe5 6 7 ]g^g_g`gNbObPbQbreseteuevewexeye{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhzeAeBeCeDeEe|h}hFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1eshthuhvhRbSbTbUbVbWbXbYb8 9 ! # $ % ' ( ) 2e3ejgkg4e5e6e7e8e9e!e#e$e%e'e(elgmg* + , - . / )e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcf: ; = whxhyhzhZb0b1b2bdfefffgfhfifjfkfAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhlfmfnfofpfqf~hairfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfWhXhYhZh3b4b5b6b7b8b9b!b? @ [ ] ^ _ ` { | OfPfngogQfRfSfTfUfVfWfXfYfZf0f1fpgqg} ~ abbbcbdb2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=febfbgb0h1h2h3h#b$b%b'b?f@f[f]f^f_f`f{f4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h
73 return new_print 2a (b)b*b+b,b-b.b/b:b;b=b?b@b[brgsghbibjbkbg h i ]b|f^b_b`b{b|b}b}fj k ~bacbcccdcecfcgcl tguglbmbhcicjckcvgwgxgygzgAgBgCgDgEgFgb lcmcncocpcqcrcsctcucvcwcxcyczcGgHgnbobpbqbm n o p q r Ac~fBcCcDcEcFcGcags t u v HcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcw x IgJgrbsbXcYcZc0cKgLgMgNgOgPgQgRgSgTgUgc 1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]cVgWgXgYgtbubvbwbxbybzbAby z A B C D E F G ^c_cbgcg`c{c|c}c~cadbdcdddedfdgddgegH I J K L M hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdN O P Zg0g1g2gBbCbDbEbFdGdHdIdJdKdLdMd3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gd NdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d=g?g@g[gFbGbHbIbJbKbLbMbQ R S T U V W X Y )d*dfggg+d,d-d.d/d:d;d=d?d@d[d]dhgigZ 0 1 2 3 4 ^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqe5 6 7 ]g^g_g`gNbObPbQbreseteuevewexeye{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhe zeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1eshthuhvhRbSbTbUbVbWbXbYb8 9 ! # $ % ' ( ) 2e3ejgkg4e5e6e7e8e9e!e#e$e%e'e(elgmg* + , - . / )e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcf: ; = whxhyhzhZb0b1b2bdfefffgfhfifjfkfAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhf lfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfWhXhYhZh3b4b5b6b7b8b9b!b? @ [ ] ^ _ ` { | OfPfngogQfRfSfTfUfVfWfXfYfZf0f1fpgqg} ~ abbbcbdb2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=febfbgb0h1h2h3h#b$b%b'b?f@f[f]f^f_f`f{f4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h
76@dataclass 1abcdef
77class PrintMock: 1abcdef
78 calls: List[Any] = field(default_factory=list) 1abcdef
81@pytest.fixture(name="print_mock") 1abcdef
82def print_mock_fixture() -> Generator[PrintMock, None, None]: 1abcdef
83 print_mock = PrintMock() 1abcdef
84 new_print = get_testing_print_function(print_mock.calls) 1abcdef
85 with patch("builtins.print", new=new_print): 1abcdef
86 yield print_mock 1abcdef
89needs_pydanticv2 = pytest.mark.skipif(not IS_PYDANTIC_V2, reason="requires Pydantic v2") 1abcdef
90needs_pydanticv1 = pytest.mark.skipif(IS_PYDANTIC_V2, reason="requires Pydantic v1") 1abcdef
92needs_py39 = pytest.mark.skipif(sys.version_info < (3, 9), reason="requires python3.9+") 1abcdef
93needs_py310 = pytest.mark.skipif( 1abcdef
94 sys.version_info < (3, 10), reason="requires python3.10+"
95)