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

1from typing import List 1abcdef

2 

3from fastapi import FastAPI 1abcdef

4 

5from . import modelsv1, modelsv2, modelsv2b 1abcdef

6 

7app = FastAPI() 1abcdef

8 

9 

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 ) 

19 

20 

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 ) 

30 

31 

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

42 

43 

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

58 

59 

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 ) 

74 

75 

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

86 

87 

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

102 

103 

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

116 

117 

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 ) 

129 

130 

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