@@ -36,6 +36,7 @@ def render_pyproject(project: dict[str, Any], package_name: str) -> str:
3636 "dependencies_block" : render_toml_string_list ("dependencies" , runtime_dependencies ),
3737 "package_name" : package_name ,
3838 "autotest_start_class" : f"{ package_name } .{ client_class_name } " ,
39+ "mypy_block" : render_mypy_block (),
3940 "ruff_block" : render_ruff_block (),
4041 },
4142 )
@@ -91,6 +92,44 @@ def render_ruff_block() -> str:
9192 )
9293
9394
95+ def render_mypy_block () -> str :
96+ mypy_config = config_section ("mypy" )
97+ if not isinstance (mypy_config , dict ):
98+ raise RuntimeError ("mypy must be a table." )
99+
100+ items : list [str ] = []
101+ for key , value in mypy_config .items ():
102+ if isinstance (value , bool ):
103+ rendered_value = "true" if value else "false"
104+ elif isinstance (value , (int , float )) and not isinstance (value , bool ):
105+ rendered_value = str (value )
106+ elif isinstance (value , str ):
107+ rendered_value = json .dumps (value )
108+ elif isinstance (value , list ):
109+ rendered_items : list [str ] = []
110+ for item in value :
111+ if isinstance (item , bool ):
112+ rendered_items .append ("true" if item else "false" )
113+ elif isinstance (item , (int , float )) and not isinstance (item , bool ):
114+ rendered_items .append (str (item ))
115+ elif isinstance (item , str ):
116+ rendered_items .append (json .dumps (item ))
117+ else :
118+ raise RuntimeError (f"mypy.{ key } contains an unsupported value type." )
119+ rendered_value = "["
120+ if rendered_items :
121+ rendered_value += ", " .join (rendered_items )
122+ rendered_value += "]"
123+ else :
124+ raise RuntimeError (f"mypy.{ key } contains an unsupported value type." )
125+ items .append (f"{ key } = { rendered_value } " )
126+
127+ if not items :
128+ raise RuntimeError ("mypy must not be empty." )
129+
130+ return "\n " .join (["[tool.mypy]" , * items ])
131+
132+
94133@lru_cache (maxsize = 1 )
95134def latest_supported_python_minor () -> int :
96135 families = load_python_release_families ()
0 commit comments