Coverage for tests/test_pydantic_v1_v2_multifile/main.py: 100%
52 statements
« prev ^ index » next coverage.py v7.6.1, created at 2025-12-04 08:29 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2025-12-04 08:29 +0000
1from typing import List 1abcdef
3from fastapi import FastAPI 1abcdef
5from . import modelsv1, modelsv2, modelsv2b 1abcdef
7app = FastAPI() 1abcdef
10@app.post("/v1-to-v2/item") 1abcdef
11def handle_v1_item_to_v2(data: modelsv1.Item) -> modelsv2.Item: 1abcdef
12 return modelsv2.Item( 189!#$%
13 new_title=data.title,
14 new_size=data.size,
15 new_description=data.description,
16 new_sub=modelsv2.SubItem(new_sub_name=data.sub.name),
17 new_multi=[modelsv2.SubItem(new_sub_name=s.name) for s in data.multi],
18 )
21@app.post("/v2-to-v1/item") 1abcdef
22def handle_v2_item_to_v1(data: modelsv2.Item) -> modelsv1.Item: 1abcdef
23 return modelsv1.Item( 1'()*+,
24 title=data.new_title,
25 size=data.new_size,
26 description=data.new_description,
27 sub=modelsv1.SubItem(name=data.new_sub.new_sub_name),
28 multi=[modelsv1.SubItem(name=s.new_sub_name) for s in data.new_multi],
29 )
32@app.post("/v1-to-v2/item-to-list") 1abcdef
33def handle_v1_item_to_v2_list(data: modelsv1.Item) -> List[modelsv2.Item]: 1abcdef
34 converted = modelsv2.Item( 1KLMNOP
35 new_title=data.title,
36 new_size=data.size,
37 new_description=data.description,
38 new_sub=modelsv2.SubItem(new_sub_name=data.sub.name),
39 new_multi=[modelsv2.SubItem(new_sub_name=s.name) for s in data.multi],
40 )
41 return [converted, converted] 1KLMNOP
44@app.post("/v1-to-v2/list-to-list") 1abcdef
45def handle_v1_list_to_v2_list(data: List[modelsv1.Item]) -> List[modelsv2.Item]: 1abcdef
46 result = [] 1mnopqr
47 for item in data: 1mnopqr
48 result.append( 1mnopqr
49 modelsv2.Item(
50 new_title=item.title,
51 new_size=item.size,
52 new_description=item.description,
53 new_sub=modelsv2.SubItem(new_sub_name=item.sub.name),
54 new_multi=[modelsv2.SubItem(new_sub_name=s.name) for s in item.multi],
55 )
56 )
57 return result 1mnopqr
60@app.post("/v1-to-v2/list-to-item") 1abcdef
61def handle_v1_list_to_v2_item(data: List[modelsv1.Item]) -> modelsv2.Item: 1abcdef
62 if data: 1yQzRASBTCUDV
63 item = data[0] 1yzABCD
64 return modelsv2.Item( 1yzABCD
65 new_title=item.title,
66 new_size=item.size,
67 new_description=item.description,
68 new_sub=modelsv2.SubItem(new_sub_name=item.sub.name),
69 new_multi=[modelsv2.SubItem(new_sub_name=s.name) for s in item.multi],
70 )
71 return modelsv2.Item( 1QRSTUV
72 new_title="", new_size=0, new_sub=modelsv2.SubItem(new_sub_name="")
73 )
76@app.post("/v2-to-v1/item-to-list") 1abcdef
77def handle_v2_item_to_v1_list(data: modelsv2.Item) -> List[modelsv1.Item]: 1abcdef
78 converted = modelsv1.Item( 1WXYZ01
79 title=data.new_title,
80 size=data.new_size,
81 description=data.new_description,
82 sub=modelsv1.SubItem(name=data.new_sub.new_sub_name),
83 multi=[modelsv1.SubItem(name=s.new_sub_name) for s in data.new_multi],
84 )
85 return [converted, converted] 1WXYZ01
88@app.post("/v2-to-v1/list-to-list") 1abcdef
89def handle_v2_list_to_v1_list(data: List[modelsv2.Item]) -> List[modelsv1.Item]: 1abcdef
90 result = [] 1stuvwx
91 for item in data: 1stuvwx
92 result.append( 1stuvwx
93 modelsv1.Item(
94 title=item.new_title,
95 size=item.new_size,
96 description=item.new_description,
97 sub=modelsv1.SubItem(name=item.new_sub.new_sub_name),
98 multi=[modelsv1.SubItem(name=s.new_sub_name) for s in item.new_multi],
99 )
100 )
101 return result 1stuvwx
104@app.post("/v2-to-v1/list-to-item") 1abcdef
105def handle_v2_list_to_v1_item(data: List[modelsv2.Item]) -> modelsv1.Item: 1abcdef
106 if data: 1E2F3G4H5I6J7
107 item = data[0] 1EFGHIJ
108 return modelsv1.Item( 1EFGHIJ
109 title=item.new_title,
110 size=item.new_size,
111 description=item.new_description,
112 sub=modelsv1.SubItem(name=item.new_sub.new_sub_name),
113 multi=[modelsv1.SubItem(name=s.new_sub_name) for s in item.new_multi],
114 )
115 return modelsv1.Item(title="", size=0, sub=modelsv1.SubItem(name="")) 1234567
118@app.post("/v2-to-v1/same-name") 1abcdef
119def handle_v2_same_name_to_v1( 1abcdef
120 item1: modelsv2.Item, item2: modelsv2b.Item
121) -> modelsv1.Item:
122 return modelsv1.Item( 1-./:;=
123 title=item1.new_title,
124 size=item2.dup_size,
125 description=item1.new_description,
126 sub=modelsv1.SubItem(name=item1.new_sub.new_sub_name),
127 multi=[modelsv1.SubItem(name=s.dup_sub_name) for s in item2.dup_multi],
128 )
131@app.post("/v2-to-v1/list-of-items-to-list-of-items") 1abcdef
132def handle_v2_items_in_list_to_v1_item_in_list( 1abcdef
133 data1: List[modelsv2.ItemInList], data2: List[modelsv2b.ItemInList]
134) -> List[modelsv1.ItemInList]:
135 result = [] 1ghijkl
136 item1 = data1[0] 1ghijkl
137 item2 = data2[0] 1ghijkl
138 result = [ 1ghijkl
139 modelsv1.ItemInList(name1=item1.name2),
140 modelsv1.ItemInList(name1=item2.dup_name2),
141 ]
142 return result 1ghijkl