aas-core-codegen 0.0.16__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (604) hide show
  1. aas_core_codegen/__init__.py +6 -0
  2. aas_core_codegen/__main__.py +8 -0
  3. aas_core_codegen/common.py +500 -0
  4. aas_core_codegen/cpp/__init__.py +1 -0
  5. aas_core_codegen/cpp/aas_common/__init__.py +6 -0
  6. aas_core_codegen/cpp/aas_common/_generate.py +713 -0
  7. aas_core_codegen/cpp/common.py +681 -0
  8. aas_core_codegen/cpp/constants/__init__.py +6 -0
  9. aas_core_codegen/cpp/constants/_generate.py +568 -0
  10. aas_core_codegen/cpp/description.py +654 -0
  11. aas_core_codegen/cpp/enhancing/__init__.py +4 -0
  12. aas_core_codegen/cpp/enhancing/_generate.py +993 -0
  13. aas_core_codegen/cpp/iteration/__init__.py +6 -0
  14. aas_core_codegen/cpp/iteration/_generate.py +2332 -0
  15. aas_core_codegen/cpp/jsonization/__init__.py +6 -0
  16. aas_core_codegen/cpp/jsonization/_generate.py +2619 -0
  17. aas_core_codegen/cpp/main.py +694 -0
  18. aas_core_codegen/cpp/naming.py +170 -0
  19. aas_core_codegen/cpp/optionaling.py +557 -0
  20. aas_core_codegen/cpp/pattern/__init__.py +6 -0
  21. aas_core_codegen/cpp/pattern/_generate.py +508 -0
  22. aas_core_codegen/cpp/revm/__init__.py +6 -0
  23. aas_core_codegen/cpp/revm/_generate.py +1149 -0
  24. aas_core_codegen/cpp/stringification/__init__.py +5 -0
  25. aas_core_codegen/cpp/stringification/_generate.py +955 -0
  26. aas_core_codegen/cpp/structure/__init__.py +7 -0
  27. aas_core_codegen/cpp/structure/_generate.py +1503 -0
  28. aas_core_codegen/cpp/transpilation.py +1383 -0
  29. aas_core_codegen/cpp/unrolling.py +159 -0
  30. aas_core_codegen/cpp/verification/__init__.py +6 -0
  31. aas_core_codegen/cpp/verification/_generate.py +3073 -0
  32. aas_core_codegen/cpp/visitation/__init__.py +6 -0
  33. aas_core_codegen/cpp/visitation/_generate.py +521 -0
  34. aas_core_codegen/cpp/wstringification/__init__.py +5 -0
  35. aas_core_codegen/cpp/wstringification/_generate.py +586 -0
  36. aas_core_codegen/cpp/xmlization/__init__.py +6 -0
  37. aas_core_codegen/cpp/xmlization/_generate.py +5373 -0
  38. aas_core_codegen/cpp/yielding.py +201 -0
  39. aas_core_codegen/csharp/__init__.py +1 -0
  40. aas_core_codegen/csharp/common.py +224 -0
  41. aas_core_codegen/csharp/constants/__init__.py +5 -0
  42. aas_core_codegen/csharp/constants/_generate.py +409 -0
  43. aas_core_codegen/csharp/copying/__init__.py +4 -0
  44. aas_core_codegen/csharp/copying/_generate.py +498 -0
  45. aas_core_codegen/csharp/description.py +1103 -0
  46. aas_core_codegen/csharp/enhancing/__init__.py +4 -0
  47. aas_core_codegen/csharp/enhancing/_generate.py +667 -0
  48. aas_core_codegen/csharp/jsonization/__init__.py +4 -0
  49. aas_core_codegen/csharp/jsonization/_generate.py +1630 -0
  50. aas_core_codegen/csharp/main.py +421 -0
  51. aas_core_codegen/csharp/naming.py +157 -0
  52. aas_core_codegen/csharp/reporting/__init__.py +4 -0
  53. aas_core_codegen/csharp/reporting/_generate.py +266 -0
  54. aas_core_codegen/csharp/stringification/__init__.py +4 -0
  55. aas_core_codegen/csharp/stringification/_generate.py +243 -0
  56. aas_core_codegen/csharp/structure/__init__.py +6 -0
  57. aas_core_codegen/csharp/structure/_generate.py +1341 -0
  58. aas_core_codegen/csharp/transpilation.py +990 -0
  59. aas_core_codegen/csharp/unrolling.py +211 -0
  60. aas_core_codegen/csharp/verification/__init__.py +6 -0
  61. aas_core_codegen/csharp/verification/_generate.py +1457 -0
  62. aas_core_codegen/csharp/visitation/__init__.py +5 -0
  63. aas_core_codegen/csharp/visitation/_generate.py +579 -0
  64. aas_core_codegen/csharp/xmlization/__init__.py +4 -0
  65. aas_core_codegen/csharp/xmlization/_generate.py +1980 -0
  66. aas_core_codegen/golang/__init__.py +1 -0
  67. aas_core_codegen/golang/aas_common/__init__.py +4 -0
  68. aas_core_codegen/golang/aas_common/_generate.py +152 -0
  69. aas_core_codegen/golang/common.py +303 -0
  70. aas_core_codegen/golang/constants/__init__.py +5 -0
  71. aas_core_codegen/golang/constants/_generate.py +339 -0
  72. aas_core_codegen/golang/description.py +501 -0
  73. aas_core_codegen/golang/enhancing/__init__.py +4 -0
  74. aas_core_codegen/golang/enhancing/_generate.py +527 -0
  75. aas_core_codegen/golang/jsonization/__init__.py +4 -0
  76. aas_core_codegen/golang/jsonization/_generate.py +1740 -0
  77. aas_core_codegen/golang/main.py +368 -0
  78. aas_core_codegen/golang/naming.py +412 -0
  79. aas_core_codegen/golang/pointering.py +631 -0
  80. aas_core_codegen/golang/reporting/__init__.py +4 -0
  81. aas_core_codegen/golang/reporting/_generate.py +218 -0
  82. aas_core_codegen/golang/stringification/__init__.py +4 -0
  83. aas_core_codegen/golang/stringification/_generate.py +394 -0
  84. aas_core_codegen/golang/structure/__init__.py +6 -0
  85. aas_core_codegen/golang/structure/_generate.py +1493 -0
  86. aas_core_codegen/golang/transpilation.py +1191 -0
  87. aas_core_codegen/golang/unrolling.py +159 -0
  88. aas_core_codegen/golang/verification/__init__.py +6 -0
  89. aas_core_codegen/golang/verification/_generate.py +1513 -0
  90. aas_core_codegen/golang/xmlization/__init__.py +4 -0
  91. aas_core_codegen/golang/xmlization/_generate.py +2507 -0
  92. aas_core_codegen/infer_for_schema/__init__.py +21 -0
  93. aas_core_codegen/infer_for_schema/_inline.py +693 -0
  94. aas_core_codegen/infer_for_schema/_len.py +527 -0
  95. aas_core_codegen/infer_for_schema/_pattern.py +311 -0
  96. aas_core_codegen/infer_for_schema/_set.py +394 -0
  97. aas_core_codegen/infer_for_schema/_stringify.py +201 -0
  98. aas_core_codegen/infer_for_schema/_types.py +135 -0
  99. aas_core_codegen/infer_for_schema/match.py +122 -0
  100. aas_core_codegen/intermediate/__init__.py +78 -0
  101. aas_core_codegen/intermediate/_hierarchy.py +397 -0
  102. aas_core_codegen/intermediate/_stringify.py +989 -0
  103. aas_core_codegen/intermediate/_translate.py +5128 -0
  104. aas_core_codegen/intermediate/_types.py +2901 -0
  105. aas_core_codegen/intermediate/construction.py +750 -0
  106. aas_core_codegen/intermediate/doc.py +344 -0
  107. aas_core_codegen/intermediate/pattern_verification.py +428 -0
  108. aas_core_codegen/intermediate/revm.py +985 -0
  109. aas_core_codegen/intermediate/type_inference.py +2266 -0
  110. aas_core_codegen/java/__init__.py +1 -0
  111. aas_core_codegen/java/common.py +197 -0
  112. aas_core_codegen/java/constants/__init__.py +5 -0
  113. aas_core_codegen/java/constants/_generate.py +334 -0
  114. aas_core_codegen/java/copying/__init__.py +4 -0
  115. aas_core_codegen/java/copying/_generate.py +502 -0
  116. aas_core_codegen/java/description.py +774 -0
  117. aas_core_codegen/java/enhancing/__init__.py +4 -0
  118. aas_core_codegen/java/enhancing/_generate.py +820 -0
  119. aas_core_codegen/java/generation/__init__.py +5 -0
  120. aas_core_codegen/java/generation/_generate.py +285 -0
  121. aas_core_codegen/java/jsonization/__init__.py +4 -0
  122. aas_core_codegen/java/jsonization/_generate.py +1472 -0
  123. aas_core_codegen/java/main.py +438 -0
  124. aas_core_codegen/java/naming.py +187 -0
  125. aas_core_codegen/java/optional.py +514 -0
  126. aas_core_codegen/java/reporting/__init__.py +4 -0
  127. aas_core_codegen/java/reporting/_generate.py +248 -0
  128. aas_core_codegen/java/stringification/__init__.py +4 -0
  129. aas_core_codegen/java/stringification/_generate.py +212 -0
  130. aas_core_codegen/java/structure/__init__.py +6 -0
  131. aas_core_codegen/java/structure/_generate.py +1767 -0
  132. aas_core_codegen/java/transpilation.py +1111 -0
  133. aas_core_codegen/java/verification/__init__.py +6 -0
  134. aas_core_codegen/java/verification/_generate.py +1536 -0
  135. aas_core_codegen/java/visitation/__init__.py +5 -0
  136. aas_core_codegen/java/visitation/_generate.py +689 -0
  137. aas_core_codegen/java/xmlization/__init__.py +4 -0
  138. aas_core_codegen/java/xmlization/_generate.py +2274 -0
  139. aas_core_codegen/jsonld/__init__.py +1 -0
  140. aas_core_codegen/jsonld/main.py +455 -0
  141. aas_core_codegen/jsonschema/__init__.py +1 -0
  142. aas_core_codegen/jsonschema/main.py +982 -0
  143. aas_core_codegen/main.py +245 -0
  144. aas_core_codegen/naming.py +133 -0
  145. aas_core_codegen/opcua/__init__.py +1 -0
  146. aas_core_codegen/opcua/main.py +1525 -0
  147. aas_core_codegen/opcua/naming.py +126 -0
  148. aas_core_codegen/parse/__init__.py +46 -0
  149. aas_core_codegen/parse/_rules.py +796 -0
  150. aas_core_codegen/parse/_stringify.py +532 -0
  151. aas_core_codegen/parse/_translate.py +3940 -0
  152. aas_core_codegen/parse/_types.py +973 -0
  153. aas_core_codegen/parse/retree/__init__.py +46 -0
  154. aas_core_codegen/parse/retree/_fix.py +434 -0
  155. aas_core_codegen/parse/retree/_parse.py +1143 -0
  156. aas_core_codegen/parse/retree/_render.py +298 -0
  157. aas_core_codegen/parse/retree/_stringify.py +199 -0
  158. aas_core_codegen/parse/retree/_types.py +362 -0
  159. aas_core_codegen/parse/retree/_visitor.py +70 -0
  160. aas_core_codegen/parse/tree.py +1303 -0
  161. aas_core_codegen/protobuf/__init__.py +1 -0
  162. aas_core_codegen/protobuf/common.py +225 -0
  163. aas_core_codegen/protobuf/description.py +1102 -0
  164. aas_core_codegen/protobuf/main.py +115 -0
  165. aas_core_codegen/protobuf/naming.py +143 -0
  166. aas_core_codegen/protobuf/structure/__init__.py +6 -0
  167. aas_core_codegen/protobuf/structure/_generate.py +502 -0
  168. aas_core_codegen/py.typed +1 -0
  169. aas_core_codegen/python/__init__.py +1 -0
  170. aas_core_codegen/python/aas_common/__init__.py +4 -0
  171. aas_core_codegen/python/aas_common/_generate.py +63 -0
  172. aas_core_codegen/python/common.py +406 -0
  173. aas_core_codegen/python/constants/__init__.py +5 -0
  174. aas_core_codegen/python/constants/_generate.py +377 -0
  175. aas_core_codegen/python/description.py +508 -0
  176. aas_core_codegen/python/jsonization/__init__.py +4 -0
  177. aas_core_codegen/python/jsonization/_generate.py +1391 -0
  178. aas_core_codegen/python/main.py +323 -0
  179. aas_core_codegen/python/naming.py +255 -0
  180. aas_core_codegen/python/stringification/__init__.py +4 -0
  181. aas_core_codegen/python/stringification/_generate.py +129 -0
  182. aas_core_codegen/python/structure/__init__.py +6 -0
  183. aas_core_codegen/python/structure/_generate.py +1801 -0
  184. aas_core_codegen/python/transpilation.py +958 -0
  185. aas_core_codegen/python/unrolling.py +156 -0
  186. aas_core_codegen/python/verification/__init__.py +6 -0
  187. aas_core_codegen/python/verification/_generate.py +1471 -0
  188. aas_core_codegen/python/xmlization/__init__.py +4 -0
  189. aas_core_codegen/python/xmlization/_generate.py +3003 -0
  190. aas_core_codegen/python_protobuf/__init__.py +1 -0
  191. aas_core_codegen/python_protobuf/main.py +1424 -0
  192. aas_core_codegen/python_protobuf/naming.py +85 -0
  193. aas_core_codegen/rdf_shacl/__init__.py +1 -0
  194. aas_core_codegen/rdf_shacl/_description.py +351 -0
  195. aas_core_codegen/rdf_shacl/common.py +206 -0
  196. aas_core_codegen/rdf_shacl/main.py +114 -0
  197. aas_core_codegen/rdf_shacl/naming.py +145 -0
  198. aas_core_codegen/rdf_shacl/rdf.py +435 -0
  199. aas_core_codegen/rdf_shacl/shacl.py +453 -0
  200. aas_core_codegen/run.py +124 -0
  201. aas_core_codegen/smoke/__init__.py +1 -0
  202. aas_core_codegen/smoke/main.py +219 -0
  203. aas_core_codegen/specific_implementations.py +72 -0
  204. aas_core_codegen/stringify.py +333 -0
  205. aas_core_codegen/typescript/__init__.py +1 -0
  206. aas_core_codegen/typescript/aas_common/__init__.py +4 -0
  207. aas_core_codegen/typescript/aas_common/_generate.py +472 -0
  208. aas_core_codegen/typescript/common.py +340 -0
  209. aas_core_codegen/typescript/constants/__init__.py +5 -0
  210. aas_core_codegen/typescript/constants/_generate.py +347 -0
  211. aas_core_codegen/typescript/description.py +530 -0
  212. aas_core_codegen/typescript/jsonization/__init__.py +4 -0
  213. aas_core_codegen/typescript/jsonization/_generate.py +1510 -0
  214. aas_core_codegen/typescript/main.py +258 -0
  215. aas_core_codegen/typescript/naming.py +189 -0
  216. aas_core_codegen/typescript/stringification/__init__.py +4 -0
  217. aas_core_codegen/typescript/stringification/_generate.py +367 -0
  218. aas_core_codegen/typescript/structure/__init__.py +6 -0
  219. aas_core_codegen/typescript/structure/_generate.py +2500 -0
  220. aas_core_codegen/typescript/transpilation.py +1051 -0
  221. aas_core_codegen/typescript/unrolling.py +159 -0
  222. aas_core_codegen/typescript/verification/__init__.py +6 -0
  223. aas_core_codegen/typescript/verification/_generate.py +1578 -0
  224. aas_core_codegen/xsd/__init__.py +1 -0
  225. aas_core_codegen/xsd/main.py +1187 -0
  226. aas_core_codegen/xsd/naming.py +83 -0
  227. aas_core_codegen/yielding/__init__.py +1 -0
  228. aas_core_codegen/yielding/flow.py +139 -0
  229. aas_core_codegen/yielding/linear.py +754 -0
  230. aas_core_codegen-0.0.16.dist-info/METADATA +211 -0
  231. aas_core_codegen-0.0.16.dist-info/RECORD +604 -0
  232. aas_core_codegen-0.0.16.dist-info/WHEEL +5 -0
  233. aas_core_codegen-0.0.16.dist-info/entry_points.txt +3 -0
  234. aas_core_codegen-0.0.16.dist-info/licenses/AUTHORS +9 -0
  235. aas_core_codegen-0.0.16.dist-info/licenses/LICENSE +23 -0
  236. aas_core_codegen-0.0.16.dist-info/top_level.txt +2 -0
  237. dev/continuous_integration/__init__.py +1 -0
  238. dev/continuous_integration/check_help_in_readme.py +208 -0
  239. dev/continuous_integration/check_init_and_pyproject_consistent.py +154 -0
  240. dev/continuous_integration/precommit.py +400 -0
  241. dev/dev_scripts/__init__.py +1 -0
  242. dev/dev_scripts/compare_rendered_regexes_against_source_py.py +42 -0
  243. dev/dev_scripts/copy_to_aas_core3_cpp.py +100 -0
  244. dev/dev_scripts/copy_to_aas_core3_java.py +90 -0
  245. dev/dev_scripts/download_latest_aas_core_meta_v3.py +114 -0
  246. dev/dev_scripts/draw_bipartite_graph_based_on_lines.py +37 -0
  247. dev/dev_scripts/run_tests_with_rerecord.py +69 -0
  248. dev/dev_scripts/update_to_aas_core_meta.py +174 -0
  249. dev/integration_tests/input/jsonschema/boilerplate/main.py +55 -0
  250. dev/integration_tests/input/meta_model.py +38 -0
  251. dev/integration_tests/input/python/boilerplate/main.py +153 -0
  252. dev/integration_tests/main.py +258 -0
  253. dev/test_data/csharp/test_structure/concrete_class_with_descendants/meta_model.py +15 -0
  254. dev/test_data/csharp/test_structure/constructor_without_arguments/all_properties_optional/meta_model.py +9 -0
  255. dev/test_data/csharp/test_structure/constructor_without_arguments/no_properties/meta_model.py +6 -0
  256. dev/test_data/csharp/test_verification/builtin_functions/len/on_list/meta_model.py +20 -0
  257. dev/test_data/csharp/test_verification/builtin_functions/len/on_str/meta_model.py +16 -0
  258. dev/test_data/csharp/test_verification/pattern_verification/utf32_as_literal/as_prefix/meta_model.py +8 -0
  259. dev/test_data/csharp/test_verification/pattern_verification/utf32_as_literal/as_suffix/meta_model.py +8 -0
  260. dev/test_data/csharp/test_verification/pattern_verification/utf32_as_literal/in_group_with_quantifier/meta_model.py +8 -0
  261. dev/test_data/csharp/test_verification/pattern_verification/utf32_as_literal/in_the_middle/meta_model.py +8 -0
  262. dev/test_data/csharp/test_verification/pattern_verification/utf32_as_literal/in_union/meta_model.py +8 -0
  263. dev/test_data/csharp/test_verification/pattern_verification/utf32_as_literal/single_utf32_literal/meta_model.py +8 -0
  264. dev/test_data/csharp/test_verification/pattern_verification/utf32_as_literal/with_quantifier_within_group/meta_model.py +8 -0
  265. dev/test_data/csharp/test_verification/pattern_verification/utf32_as_literal/with_quantifier_without_group/meta_model.py +8 -0
  266. dev/test_data/csharp/test_verification/pattern_verification/utf32_in_character_set/literal/at_the_beginning/meta_model.py +8 -0
  267. dev/test_data/csharp/test_verification/pattern_verification/utf32_in_character_set/literal/at_the_end/meta_model.py +8 -0
  268. dev/test_data/csharp/test_verification/pattern_verification/utf32_in_character_set/literal/in_the_middle/meta_model.py +8 -0
  269. dev/test_data/csharp/test_verification/pattern_verification/utf32_in_character_set/literal/multiple/meta_model.py +8 -0
  270. dev/test_data/csharp/test_verification/pattern_verification/utf32_in_character_set/literal/single/meta_model.py +8 -0
  271. dev/test_data/csharp/test_verification/pattern_verification/utf32_in_character_set/literal/single_with_quantifier/meta_model.py +8 -0
  272. dev/test_data/csharp/test_verification/pattern_verification/utf32_in_character_set/range/mixed_with_non_utf32/meta_model.py +8 -0
  273. dev/test_data/csharp/test_verification/pattern_verification/utf32_in_character_set/range/more_than_two_high_surrogates/meta_model.py +8 -0
  274. dev/test_data/csharp/test_verification/pattern_verification/utf32_in_character_set/range/multiple_utf32_ranges/meta_model.py +8 -0
  275. dev/test_data/csharp/test_verification/pattern_verification/utf32_in_character_set/range/multiple_utf32_ranges_mixed_with_non_utf32/meta_model.py +8 -0
  276. dev/test_data/csharp/test_verification/pattern_verification/utf32_in_character_set/range/same_high_surrogate/meta_model.py +8 -0
  277. dev/test_data/csharp/test_verification/pattern_verification/utf32_in_character_set/range/same_high_surrogate_with_quantifier/meta_model.py +8 -0
  278. dev/test_data/csharp/test_verification/pattern_verification/utf32_in_character_set/range/two_high_surrogates/meta_model.py +8 -0
  279. dev/test_data/intermediate/expected/class/empty/meta_model.py +6 -0
  280. dev/test_data/intermediate/expected/class/implementation_specific_method/meta_model.py +8 -0
  281. dev/test_data/intermediate/expected/class/inheritance/meta_model.py +41 -0
  282. dev/test_data/intermediate/expected/class/methods_with_contracts/meta_model.py +15 -0
  283. dev/test_data/intermediate/expected/class/only_method_no_property/meta_model.py +7 -0
  284. dev/test_data/intermediate/expected/class/only_property_no_method/meta_model.py +9 -0
  285. dev/test_data/intermediate/expected/constant/constant_set/of_enum/meta_model.py +12 -0
  286. dev/test_data/intermediate/expected/constant/constant_set/of_str/meta_model.py +4 -0
  287. dev/test_data/intermediate/expected/constant/constant_set/with_description/meta_model.py +6 -0
  288. dev/test_data/intermediate/expected/constant/constant_set/with_superset_of/meta_model.py +14 -0
  289. dev/test_data/intermediate/expected/constant/constant_str/only_value/meta_model.py +7 -0
  290. dev/test_data/intermediate/expected/constant/constant_str/with_description/meta_model.py +5 -0
  291. dev/test_data/intermediate/expected/documentation/docstring_with_special_characters_in_literal/meta_model.py +20 -0
  292. dev/test_data/intermediate/expected/documentation/docstring_with_special_characters_outside_literal/meta_model.py +20 -0
  293. dev/test_data/intermediate/expected/empty/meta_model.py +2 -0
  294. dev/test_data/intermediate/expected/enumeration/meta_model.py +9 -0
  295. dev/test_data/intermediate/expected/interface/basic/meta_model.py +14 -0
  296. dev/test_data/intermediate/expected/interface/empty/meta_model.py +7 -0
  297. dev/test_data/intermediate/expected/interface/inheritance/meta_model.py +27 -0
  298. dev/test_data/intermediate/expected/interface/method_signature/meta_model.py +10 -0
  299. dev/test_data/intermediate/expected/interface/only_constructor/meta_model.py +11 -0
  300. dev/test_data/intermediate/expected/method/non_mutating/implementation_specific/meta_model.py +12 -0
  301. dev/test_data/intermediate/expected/method/non_mutating/understood/meta_model.py +11 -0
  302. dev/test_data/intermediate/expected/type_annotation/atomic/meta_model.py +9 -0
  303. dev/test_data/intermediate/expected/type_annotation/subscripted/class/meta_model.py +13 -0
  304. dev/test_data/intermediate/expected/type_annotation/subscripted/primitive/meta_model.py +9 -0
  305. dev/test_data/intermediate/unexpected/constant_set/of_enum/enumeration_literals_in_subset_outside_of_superset/meta_model.py +20 -0
  306. dev/test_data/intermediate/unexpected/constant_set/of_enum/invalid_literal/meta_model.py +11 -0
  307. dev/test_data/intermediate/unexpected/constant_set/of_enum/mismatch_between_enumeration_and_literal/meta_model.py +30 -0
  308. dev/test_data/intermediate/unexpected/constant_set/of_enum/mismatch_in_enumerations_between_subset_and_superset/meta_model.py +21 -0
  309. dev/test_data/intermediate/unexpected/constant_set/of_str/literals_in_subset_outside_of_superset/meta_model.py +18 -0
  310. dev/test_data/intermediate/unexpected/constant_set/of_str/mismatch_between_type_annotation_and_literals/meta_model.py +10 -0
  311. dev/test_data/intermediate/unexpected/constant_set/of_str/superset_and_subset_mismatch_in_type/meta_model.py +12 -0
  312. dev/test_data/intermediate/unexpected/constraints/dangling_constraintref/meta_model.py +18 -0
  313. dev/test_data/intermediate/unexpected/constraints/duplicate_constraints/meta_model.py +20 -0
  314. dev/test_data/intermediate/unexpected/documentation/unexpected_documentation_elements/meta_model.py +34 -0
  315. dev/test_data/intermediate/unexpected/invariant/class_invariant_uses_re/meta_model.py +10 -0
  316. dev/test_data/intermediate/unexpected/invariant/invariant_of_constrained_primitive_uses_re/meta_model.py +7 -0
  317. dev/test_data/intermediate/unexpected/invariant/unexpected_argument_count_to_len/meta_model.py +20 -0
  318. dev/test_data/intermediate/unexpected/invariant/unhandled_built_in_function/meta_model.py +16 -0
  319. dev/test_data/intermediate/unexpected/method_definitions/non_constant_default/meta_model.py +7 -0
  320. dev/test_data/intermediate/unexpected/optional_constructor_arguments_wo_default/default_non_none/meta_model.py +16 -0
  321. dev/test_data/intermediate/unexpected/optional_constructor_arguments_wo_default/no_default/meta_model.py +16 -0
  322. dev/test_data/intermediate/unexpected/properties_and_constructor_arguments_do_not_match/after_inheritance/meta_model.py +58 -0
  323. dev/test_data/intermediate/unexpected/properties_and_constructor_arguments_do_not_match/type_missmatch/meta_model.py +9 -0
  324. dev/test_data/intermediate/unexpected/properties_and_constructor_arguments_do_not_match/within_class/meta_model.py +22 -0
  325. dev/test_data/jsonschema/test_main/regression_when_len_constraints_on_inherited_property/meta_model.py +28 -0
  326. dev/test_data/opcua/test_main/abstract_and_concrete_classes/meta_model.py +37 -0
  327. dev/test_data/opcua/test_main/classes_with_invariants/meta_model.py +21 -0
  328. dev/test_data/opcua/test_main/concrete_class_with_descendant/meta_model.py +27 -0
  329. dev/test_data/opcua/test_main/concrete_class_with_enum/meta_model.py +21 -0
  330. dev/test_data/opcua/test_main/concrete_class_with_list_of_instances/meta_model.py +21 -0
  331. dev/test_data/opcua/test_main/concrete_class_with_primitive_attributes/meta_model.py +41 -0
  332. dev/test_data/opcua/test_main/concrete_class_with_string/meta_model.py +13 -0
  333. dev/test_data/opcua/test_main/constrained_primitive/meta_model.py +20 -0
  334. dev/test_data/opcua/test_main/multiple_inheritance/meta_model.py +25 -0
  335. dev/test_data/parse/expected/constant/constant_set/of_enum/meta_model.py +12 -0
  336. dev/test_data/parse/expected/constant/constant_set/of_str/meta_model.py +4 -0
  337. dev/test_data/parse/expected/constant/constant_set/with_description/meta_model.py +6 -0
  338. dev/test_data/parse/expected/constant/constant_set/with_superset_of/meta_model.py +14 -0
  339. dev/test_data/parse/expected/constant/constant_str/only_value/meta_model.py +7 -0
  340. dev/test_data/parse/expected/constant/constant_str/with_description/meta_model.py +5 -0
  341. dev/test_data/parse/expected/enum/ok/meta_model.py +15 -0
  342. dev/test_data/parse/expected/implementation_specific_class/properties_and_methods_in_implementation_specific_class/meta_model.py +17 -0
  343. dev/test_data/parse/expected/inheritance/basic/meta_model.py +11 -0
  344. dev/test_data/parse/expected/inheritance/diamond/meta_model.py +26 -0
  345. dev/test_data/parse/expected/inheritance/inheritance_from_concrete_class/meta_model.py +10 -0
  346. dev/test_data/parse/expected/invariants/in_relation/meta_model.py +16 -0
  347. dev/test_data/parse/expected/method/arguments/meta_model.py +7 -0
  348. dev/test_data/parse/expected/method/basic/meta_model.py +7 -0
  349. dev/test_data/parse/expected/method/contracts/condition_as_keyword_argument/meta_model.py +8 -0
  350. dev/test_data/parse/expected/method/contracts/condition_as_positional_argument/meta_model.py +8 -0
  351. dev/test_data/parse/expected/method/contracts/description_as_keyword_argument/meta_model.py +8 -0
  352. dev/test_data/parse/expected/method/contracts/description_as_positional_argument/meta_model.py +8 -0
  353. dev/test_data/parse/expected/method/contracts/multiple_contracts_in_order/meta_model.py +17 -0
  354. dev/test_data/parse/expected/method/contracts/postcondition/basic/meta_model.py +10 -0
  355. dev/test_data/parse/expected/method/contracts/postcondition/snapshot/with_keyword_arguments/meta_model.py +9 -0
  356. dev/test_data/parse/expected/method/contracts/postcondition/snapshot/with_positional_arguments/meta_model.py +9 -0
  357. dev/test_data/parse/expected/method/default/meta_model.py +9 -0
  358. dev/test_data/parse/expected/method/description/meta_model.py +8 -0
  359. dev/test_data/parse/expected/method/is_implementation_specific/meta_model.py +8 -0
  360. dev/test_data/parse/expected/method/non_mutating/meta_model.py +11 -0
  361. dev/test_data/parse/expected/method/returns_none/meta_model.py +7 -0
  362. dev/test_data/parse/expected/method/returns_something/meta_model.py +7 -0
  363. dev/test_data/parse/expected/single_class/description/meta_model.py +12 -0
  364. dev/test_data/parse/expected/single_class/empty/meta_model.py +6 -0
  365. dev/test_data/parse/expected/single_class/property/description/meta_model.py +14 -0
  366. dev/test_data/parse/expected/single_class/property/mandatory/meta_model.py +6 -0
  367. dev/test_data/parse/expected/single_class/property/optional/meta_model.py +6 -0
  368. dev/test_data/parse/expected/single_class/property/recursion_to_entity/meta_model.py +6 -0
  369. dev/test_data/parse/unexpected/class_decorators/non_name_decorator/meta_model.py +7 -0
  370. dev/test_data/parse/unexpected/class_decorators/unknown_decorator/meta_model.py +7 -0
  371. dev/test_data/parse/unexpected/class_definitions/is_abstract_and_implementation_specific/meta_model.py +8 -0
  372. dev/test_data/parse/unexpected/class_definitions/unexpected_docstring_before_a_method/meta_model.py +11 -0
  373. dev/test_data/parse/unexpected/class_definitions/unexpected_docstring_for_a_pass/meta_model.py +9 -0
  374. dev/test_data/parse/unexpected/class_definitions/unexpected_double_description_for_a_property/meta_model.py +10 -0
  375. dev/test_data/parse/unexpected/class_inheritances/inheriting_from_implementation_specific_parent/meta_model.py +20 -0
  376. dev/test_data/parse/unexpected/class_inheritances/non_name_super_class/meta_model.py +6 -0
  377. dev/test_data/parse/unexpected/enum/expression_as_assignment_value/meta_model.py +6 -0
  378. dev/test_data/parse/unexpected/enum/non_assignment/meta_model.py +8 -0
  379. dev/test_data/parse/unexpected/enum/non_string_literal/meta_model.py +6 -0
  380. dev/test_data/parse/unexpected/enum/unexpected_inheritance/meta_model.py +6 -0
  381. dev/test_data/parse/unexpected/method_contracts/contract/non_lambda_condition/meta_model.py +8 -0
  382. dev/test_data/parse/unexpected/method_contracts/contract/non_string_literal_description/meta_model.py +8 -0
  383. dev/test_data/parse/unexpected/method_contracts/contract/without_any_arguments/meta_model.py +8 -0
  384. dev/test_data/parse/unexpected/method_contracts/contract/without_condition/meta_model.py +8 -0
  385. dev/test_data/parse/unexpected/method_contracts/postcondition/OLD_in_postcondition_without_snapshot/meta_model.py +8 -0
  386. dev/test_data/parse/unexpected/method_contracts/postcondition/argument_missing_in_function/meta_model.py +8 -0
  387. dev/test_data/parse/unexpected/method_contracts/precondition/argument_missing_in_function/meta_model.py +8 -0
  388. dev/test_data/parse/unexpected/method_contracts/snapshot/argument_missing_in_function/meta_model.py +8 -0
  389. dev/test_data/parse/unexpected/method_contracts/snapshot/capture_not_a_lambda/meta_model.py +8 -0
  390. dev/test_data/parse/unexpected/method_contracts/snapshot/invalid_name/meta_model.py +8 -0
  391. dev/test_data/parse/unexpected/method_contracts/snapshot/name_not_a_string_literal/meta_model.py +8 -0
  392. dev/test_data/parse/unexpected/method_contracts/snapshot/without_a_capture/meta_model.py +8 -0
  393. dev/test_data/parse/unexpected/method_contracts/snapshot/without_a_name/meta_model.py +8 -0
  394. dev/test_data/parse/unexpected/method_decorators/non_mutating/non_mutating_constructor/meta_model.py +8 -0
  395. dev/test_data/parse/unexpected/method_decorators/non_mutating/non_mutating_verification_function/meta_model.py +8 -0
  396. dev/test_data/parse/unexpected/method_decorators/non_name_decorator/meta_model.py +8 -0
  397. dev/test_data/parse/unexpected/method_decorators/unknown_call_decorator/meta_model.py +8 -0
  398. dev/test_data/parse/unexpected/method_decorators/unknown_name_decorator/meta_model.py +8 -0
  399. dev/test_data/parse/unexpected/method_definitions/argument_with_final/meta_model.py +7 -0
  400. dev/test_data/parse/unexpected/method_definitions/argument_without_a_type_annotation/meta_model.py +7 -0
  401. dev/test_data/parse/unexpected/method_definitions/default_for_self/meta_model.py +7 -0
  402. dev/test_data/parse/unexpected/method_definitions/dunder/meta_model.py +7 -0
  403. dev/test_data/parse/unexpected/method_definitions/init_with_return_type/meta_model.py +7 -0
  404. dev/test_data/parse/unexpected/method_definitions/with_keyword_only_arguments/meta_model.py +7 -0
  405. dev/test_data/parse/unexpected/method_definitions/with_positional_arguments/meta_model.py +7 -0
  406. dev/test_data/parse/unexpected/method_definitions/with_type_annotation_for_self/meta_model.py +7 -0
  407. dev/test_data/parse/unexpected/method_definitions/with_variable_arguments/meta_model.py +7 -0
  408. dev/test_data/parse/unexpected/method_definitions/with_variable_keyword_arguments/meta_model.py +7 -0
  409. dev/test_data/parse/unexpected/method_definitions/without_arguments/meta_model.py +7 -0
  410. dev/test_data/parse/unexpected/method_definitions/without_self/meta_model.py +7 -0
  411. dev/test_data/parse/unexpected/method_definitions/without_type_annotation_for_result/meta_model.py +7 -0
  412. dev/test_data/parse/unexpected/property_definitions/final_without_subscript/meta_model.py +6 -0
  413. dev/test_data/parse/unexpected/property_definitions/nested_final/meta_model.py +6 -0
  414. dev/test_data/parse/unexpected/property_definitions/non_simple/meta_model.py +6 -0
  415. dev/test_data/parse/unexpected/property_definitions/unexpected_assignment/meta_model.py +6 -0
  416. dev/test_data/parse/unexpected/property_definitions/unexpected_non_name_property/meta_model.py +6 -0
  417. dev/test_data/parse/unexpected/property_definitions/without_type_annotation/meta_model.py +6 -0
  418. dev/test_data/parse/unexpected/symbol_table/constant_set_with_a_non_set_subset/meta_model.py +6 -0
  419. dev/test_data/parse/unexpected/symbol_table/dangling_inheritance/meta_model.py +6 -0
  420. dev/test_data/parse/unexpected/symbol_table/dangling_reference_in_type_annotation_of_a_property/meta_model.py +6 -0
  421. dev/test_data/parse/unexpected/symbol_table/dangling_reference_in_type_annotation_of_an_argument/meta_model.py +7 -0
  422. dev/test_data/parse/unexpected/symbol_table/dangling_reference_in_type_annotation_of_constant_set/meta_model.py +6 -0
  423. dev/test_data/parse/unexpected/symbol_table/dangling_subset_in_constant_set/meta_model.py +4 -0
  424. dev/test_data/parse/unexpected/symbol_table/inheritance_from_non_class/meta_model.py +10 -0
  425. dev/test_data/parse_retree/expected/character_set/common_escaping/source.py +1 -0
  426. dev/test_data/parse_retree/expected/character_set/complementing/double_caret/source.py +1 -0
  427. dev/test_data/parse_retree/expected/character_set/complementing/multiple_ranges/source.py +1 -0
  428. dev/test_data/parse_retree/expected/character_set/complementing/suffix_dash/source.py +1 -0
  429. dev/test_data/parse_retree/expected/character_set/escape_first_caret/source.py +1 -0
  430. dev/test_data/parse_retree/expected/character_set/literals_which_need_no_escaping_in_characters_set_but_need_escaping_outside/source.py +1 -0
  431. dev/test_data/parse_retree/expected/character_set/multiple_ranges/source.py +1 -0
  432. dev/test_data/parse_retree/expected/character_set/single_literal/source.py +1 -0
  433. dev/test_data/parse_retree/expected/character_set/single_range/source.py +1 -0
  434. dev/test_data/parse_retree/expected/character_set/unescaped_dash/only_dash/source.py +1 -0
  435. dev/test_data/parse_retree/expected/character_set/unescaped_dash/prefix_dash/source.py +1 -0
  436. dev/test_data/parse_retree/expected/character_set/unescaped_dash/suffix_dash/source.py +1 -0
  437. dev/test_data/parse_retree/expected/dot/source.py +1 -0
  438. dev/test_data/parse_retree/expected/empty/group/source.py +1 -0
  439. dev/test_data/parse_retree/expected/empty/group_in_a_group/source.py +1 -0
  440. dev/test_data/parse_retree/expected/empty/group_of_union_of_empty_concatenations/source.py +1 -0
  441. dev/test_data/parse_retree/expected/empty/regex/source.py +1 -0
  442. dev/test_data/parse_retree/expected/empty/union_of_empty_concatenations/source.py +1 -0
  443. dev/test_data/parse_retree/expected/escaped_literals/source.py +1 -0
  444. dev/test_data/parse_retree/expected/formatted_value/at_the_beginning/source.py +1 -0
  445. dev/test_data/parse_retree/expected/formatted_value/at_the_end/source.py +1 -0
  446. dev/test_data/parse_retree/expected/formatted_value/in_the_middle/source.py +1 -0
  447. dev/test_data/parse_retree/expected/formatted_value/single_formatted_value/source.py +1 -0
  448. dev/test_data/parse_retree/expected/literal/source.py +1 -0
  449. dev/test_data/parse_retree/expected/quantifier/greedy/at_least_3/source.py +1 -0
  450. dev/test_data/parse_retree/expected/quantifier/greedy/at_least_one/source.py +1 -0
  451. dev/test_data/parse_retree/expected/quantifier/greedy/at_most_3/source.py +1 -0
  452. dev/test_data/parse_retree/expected/quantifier/greedy/exactly_3/source.py +1 -0
  453. dev/test_data/parse_retree/expected/quantifier/greedy/maybe/source.py +1 -0
  454. dev/test_data/parse_retree/expected/quantifier/greedy/zero_or_more/source.py +1 -0
  455. dev/test_data/parse_retree/expected/quantifier/non_greedy/at_least_3/source.py +1 -0
  456. dev/test_data/parse_retree/expected/quantifier/non_greedy/at_least_one/source.py +1 -0
  457. dev/test_data/parse_retree/expected/quantifier/non_greedy/at_most_3/source.py +1 -0
  458. dev/test_data/parse_retree/expected/quantifier/non_greedy/exactly_3/source.py +1 -0
  459. dev/test_data/parse_retree/expected/quantifier/non_greedy/maybe/source.py +1 -0
  460. dev/test_data/parse_retree/expected/quantifier/non_greedy/zero_or_more/source.py +1 -0
  461. dev/test_data/parse_retree/expected/quantifier/on_a_character_set/source.py +1 -0
  462. dev/test_data/parse_retree/expected/quantifier/on_a_formatted_value/source.py +1 -0
  463. dev/test_data/parse_retree/expected/quantifier/on_a_group/source.py +1 -0
  464. dev/test_data/parse_retree/expected/quantifier/on_a_literal/source.py +1 -0
  465. dev/test_data/parse_retree/expected/start_and_stop_symbols/double_end_symbol/source.py +1 -0
  466. dev/test_data/parse_retree/expected/start_and_stop_symbols/double_start_symbol/source.py +1 -0
  467. dev/test_data/parse_retree/expected/start_and_stop_symbols/end_symbol_in_the_middle/source.py +1 -0
  468. dev/test_data/parse_retree/expected/start_and_stop_symbols/only_start_symbol/source.py +1 -0
  469. dev/test_data/parse_retree/expected/start_and_stop_symbols/only_stop_symbol/source.py +1 -0
  470. dev/test_data/parse_retree/expected/start_and_stop_symbols/start_symbol_at_the_beginning/source.py +1 -0
  471. dev/test_data/parse_retree/expected/start_and_stop_symbols/start_symbol_in_the_middle/source.py +1 -0
  472. dev/test_data/parse_retree/expected/start_and_stop_symbols/stop_symbol_at_the_end/source.py +1 -0
  473. dev/test_data/parse_retree/expected/union/of_character_sets/source.py +1 -0
  474. dev/test_data/parse_retree/expected/union/of_groups/source.py +1 -0
  475. dev/test_data/parse_retree/expected/union/of_string_literals/source.py +1 -0
  476. dev/test_data/parse_retree/expected/union/within_group/source.py +1 -0
  477. dev/test_data/parse_retree/expected/whitespace/source.py +1 -0
  478. dev/test_data/parse_retree/unexpected/improper_escaping/character_literal/Uxxxxxxxx_out_of_range/source.py +1 -0
  479. dev/test_data/parse_retree/unexpected/improper_escaping/character_literal/only_backslash/source.py +1 -0
  480. dev/test_data/parse_retree/unexpected/improper_escaping/character_literal/short_Uxxxxxxxx/source.py +1 -0
  481. dev/test_data/parse_retree/unexpected/improper_escaping/character_literal/short_uxxxx/source.py +1 -0
  482. dev/test_data/parse_retree/unexpected/improper_escaping/character_literal/short_x/source.py +1 -0
  483. dev/test_data/parse_retree/unexpected/improper_escaping/character_literal/unexpected_escaping/source.py +1 -0
  484. dev/test_data/parse_retree/unexpected/improper_escaping/character_literal/unhandled/digit/source.py +1 -0
  485. dev/test_data/parse_retree/unexpected/improper_escaping/character_literal/unhandled/not_digit/source.py +1 -0
  486. dev/test_data/parse_retree/unexpected/improper_escaping/character_literal/unhandled/not_whitespace/source.py +1 -0
  487. dev/test_data/parse_retree/unexpected/improper_escaping/character_literal/unhandled/not_word/source.py +1 -0
  488. dev/test_data/parse_retree/unexpected/improper_escaping/character_literal/unhandled/whitespace/source.py +1 -0
  489. dev/test_data/parse_retree/unexpected/improper_escaping/character_literal/unhandled/word/source.py +1 -0
  490. dev/test_data/parse_retree/unexpected/improper_escaping/range_character/Uxxxxxxxx_out_of_range/source.py +1 -0
  491. dev/test_data/parse_retree/unexpected/improper_escaping/range_character/only_backslash/source.py +1 -0
  492. dev/test_data/parse_retree/unexpected/improper_escaping/range_character/short_Uxxxxxxxx/source.py +1 -0
  493. dev/test_data/parse_retree/unexpected/improper_escaping/range_character/short_uxxxx/source.py +1 -0
  494. dev/test_data/parse_retree/unexpected/improper_escaping/range_character/short_x/source.py +1 -0
  495. dev/test_data/parse_retree/unexpected/improper_escaping/range_character/unexpected_escaping/source.py +1 -0
  496. dev/test_data/parse_retree/unexpected/improper_escaping/range_character/unhandled/digit/source.py +1 -0
  497. dev/test_data/parse_retree/unexpected/improper_escaping/range_character/unhandled/not_digit/source.py +1 -0
  498. dev/test_data/parse_retree/unexpected/improper_escaping/range_character/unhandled/not_whitespace/source.py +1 -0
  499. dev/test_data/parse_retree/unexpected/improper_escaping/range_character/unhandled/not_word/source.py +1 -0
  500. dev/test_data/parse_retree/unexpected/improper_escaping/range_character/unhandled/whitespace/source.py +1 -0
  501. dev/test_data/parse_retree/unexpected/improper_escaping/range_character/unhandled/word/source.py +1 -0
  502. dev/test_data/parse_retree/unexpected/invalid_character_range/source.py +1 -0
  503. dev/test_data/parse_retree/unexpected/invalid_quantifier/at_least_x/source.py +1 -0
  504. dev/test_data/parse_retree/unexpected/invalid_quantifier/between_3_and_x/source.py +1 -0
  505. dev/test_data/parse_retree/unexpected/invalid_quantifier/exactly_x/source.py +1 -0
  506. dev/test_data/parse_retree/unexpected/unhandled_group_directives/source.py +1 -0
  507. dev/test_data/parse_retree/unexpected/unterminated/character_set/source.py +1 -0
  508. dev/test_data/parse_retree/unexpected/unterminated/group/source.py +1 -0
  509. dev/test_data/parse_retree/unexpected/unterminated/group_of_union_of_empty_concatenations/source.py +1 -0
  510. dev/test_data/parse_retree/unexpected/unterminated/quantifier/source.py +1 -0
  511. dev/test_data/parse_retree/unexpected/unterminated/quantifier_with_comma/source.py +1 -0
  512. dev/test_data/parse_retree/unexpected/unterminated/quantifier_with_number_and_comma/source.py +1 -0
  513. dev/test_data/proto/test_main/expected/abstract_and_concrete_classes/meta_model.py +37 -0
  514. dev/test_data/proto/test_main/expected/concrete_class_with_descendants/meta_model.py +30 -0
  515. dev/test_data/proto/test_main/expected/concrete_class_with_enum/meta_model.py +21 -0
  516. dev/test_data/proto/test_main/expected/concrete_class_with_list_of_instances/meta_model.py +21 -0
  517. dev/test_data/proto/test_main/expected/concrete_class_with_primitive_attributes/meta_model.py +41 -0
  518. dev/test_data/python_protobuf/test_main/abstract_and_concrete_classes/expected_output/pbization.py +532 -0
  519. dev/test_data/python_protobuf/test_main/abstract_and_concrete_classes/meta_model.py +37 -0
  520. dev/test_data/python_protobuf/test_main/concrete_class_with_descendant/expected_output/pbization.py +527 -0
  521. dev/test_data/python_protobuf/test_main/concrete_class_with_descendant/meta_model.py +27 -0
  522. dev/test_data/python_protobuf/test_main/concrete_class_with_enum/expected_output/pbization.py +290 -0
  523. dev/test_data/python_protobuf/test_main/concrete_class_with_enum/meta_model.py +21 -0
  524. dev/test_data/python_protobuf/test_main/concrete_class_with_list_of_instances/expected_output/pbization.py +328 -0
  525. dev/test_data/python_protobuf/test_main/concrete_class_with_list_of_instances/meta_model.py +23 -0
  526. dev/test_data/python_protobuf/test_main/concrete_class_with_primitive_attributes/expected_output/pbization.py +274 -0
  527. dev/test_data/python_protobuf/test_main/concrete_class_with_primitive_attributes/meta_model.py +41 -0
  528. dev/test_data/rdf_shacl/test_main/expected/regression_when_lang_string_class_is_missing/meta_model.py +29 -0
  529. dev/test_data/rdf_shacl/test_main/expected/regression_when_len_constraints_on_inherited_property/meta_model.py +27 -0
  530. dev/test_data/rdf_shacl/test_main/unexpected/regression_len_constraint_on_class_property/meta_model.py +61 -0
  531. dev/test_data/real_meta_models/aas_core_meta.v3.py +5721 -0
  532. dev/test_data/smoke/test_main/unexpected/infer_for_schema_error/meta_model.py +12 -0
  533. dev/test_data/smoke/test_main/unexpected/intermediate_error/meta_model.py +18 -0
  534. dev/test_data/smoke/test_main/unexpected/parse_error/meta_model.py +5 -0
  535. dev/test_data/smoke/test_main/unexpected/pattern_verification_unparsable_regex/direct_match/meta_model.py +8 -0
  536. dev/test_data/smoke/test_main/unexpected/type_error/meta_model.py +18 -0
  537. dev/tests/__init__.py +1 -0
  538. dev/tests/common.py +197 -0
  539. dev/tests/cpp/__init__.py +0 -0
  540. dev/tests/cpp/test_common.py +32 -0
  541. dev/tests/cpp/test_main.py +144 -0
  542. dev/tests/cpp/test_pattern.py +188 -0
  543. dev/tests/cpp/test_verification.py +189 -0
  544. dev/tests/cpp/test_yielding.py +225 -0
  545. dev/tests/csharp/__init__.py +0 -0
  546. dev/tests/csharp/live_test_main.py +109 -0
  547. dev/tests/csharp/test_common.py +28 -0
  548. dev/tests/csharp/test_description.py +684 -0
  549. dev/tests/csharp/test_main.py +129 -0
  550. dev/tests/csharp/test_structure.py +93 -0
  551. dev/tests/csharp/test_verification.py +82 -0
  552. dev/tests/description.py +29 -0
  553. dev/tests/golang/__init__.py +0 -0
  554. dev/tests/golang/test_common.py +78 -0
  555. dev/tests/golang/test_main.py +128 -0
  556. dev/tests/infer_for_schema/__init__.py +0 -0
  557. dev/tests/infer_for_schema/common.py +47 -0
  558. dev/tests/infer_for_schema/test_len_on_properties.py +955 -0
  559. dev/tests/infer_for_schema/test_len_on_self.py +580 -0
  560. dev/tests/infer_for_schema/test_patterns_on_properties.py +686 -0
  561. dev/tests/infer_for_schema/test_patterns_on_self.py +258 -0
  562. dev/tests/infer_for_schema/test_property_in_set_of_enumeration_literals.py +600 -0
  563. dev/tests/infer_for_schema/test_property_in_set_of_primitives.py +549 -0
  564. dev/tests/intermediate/__init__.py +0 -0
  565. dev/tests/intermediate/test_constructor.py +719 -0
  566. dev/tests/intermediate/test_hierarchy.py +221 -0
  567. dev/tests/intermediate/test_revm.py +134 -0
  568. dev/tests/intermediate/test_translate.py +337 -0
  569. dev/tests/intermediate/test_type_inference.py +333 -0
  570. dev/tests/intermediate/test_types.py +169 -0
  571. dev/tests/java/__init__.py +0 -0
  572. dev/tests/java/test_common.py +20 -0
  573. dev/tests/java/test_description.py +128 -0
  574. dev/tests/java/test_main.py +234 -0
  575. dev/tests/jsonld_context/test_main.py +79 -0
  576. dev/tests/opcua/__init__.py +3 -0
  577. dev/tests/opcua/test_main.py +110 -0
  578. dev/tests/our_jsonschema/__init__.py +3 -0
  579. dev/tests/our_jsonschema/test_main.py +232 -0
  580. dev/tests/parse/__init__.py +0 -0
  581. dev/tests/parse/test_parse.py +503 -0
  582. dev/tests/parse/test_retree.py +272 -0
  583. dev/tests/proto/__init__.py +0 -0
  584. dev/tests/proto/test_main.py +112 -0
  585. dev/tests/python/__init__.py +0 -0
  586. dev/tests/python/test_common.py +124 -0
  587. dev/tests/python/test_main.py +126 -0
  588. dev/tests/python/test_xml_playground.py +254 -0
  589. dev/tests/python_protobuf/__init__.py +0 -0
  590. dev/tests/python_protobuf/test_main.py +111 -0
  591. dev/tests/rdf_shacl/__init__.py +0 -0
  592. dev/tests/rdf_shacl/test_common.py +32 -0
  593. dev/tests/rdf_shacl/test_description.py +223 -0
  594. dev/tests/rdf_shacl/test_main.py +194 -0
  595. dev/tests/smoke/__init__.py +0 -0
  596. dev/tests/smoke/test_main.py +83 -0
  597. dev/tests/test_common.py +94 -0
  598. dev/tests/typescript/__init__.py +0 -0
  599. dev/tests/typescript/test_common.py +108 -0
  600. dev/tests/typescript/test_main.py +125 -0
  601. dev/tests/xsd/__init__.py +0 -0
  602. dev/tests/xsd/test_main.py +227 -0
  603. dev/tests/yielding/__init__.py +0 -0
  604. dev/tests/yielding/test_linear.py +558 -0
@@ -0,0 +1,989 @@
1
+ """Stringify the intermediate representation."""
2
+
3
+ from typing import Union, Optional
4
+
5
+ from aas_core_codegen import stringify as stringify_mod
6
+ from aas_core_codegen.intermediate import _types, construction
7
+ from aas_core_codegen.intermediate._types import (
8
+ AbstractClass,
9
+ Argument,
10
+ Class,
11
+ ConcreteClass,
12
+ ConstrainedPrimitive,
13
+ Constructor,
14
+ Contract,
15
+ Contracts,
16
+ Default,
17
+ DefaultPrimitive,
18
+ DefaultEnumerationLiteral,
19
+ Enumeration,
20
+ EnumerationLiteral,
21
+ ImplementationSpecificMethod,
22
+ ImplementationSpecificVerification,
23
+ Interface,
24
+ Invariant,
25
+ ListTypeAnnotation,
26
+ MetaModel,
27
+ OptionalTypeAnnotation,
28
+ OurTypeAnnotation,
29
+ PatternVerification,
30
+ PrimitiveTypeAnnotation,
31
+ Property,
32
+ Serialization,
33
+ Signature,
34
+ Snapshot,
35
+ OurType,
36
+ SymbolTable,
37
+ UnderstoodMethod,
38
+ DescriptionOfMetaModel,
39
+ DescriptionOfOurType,
40
+ DescriptionOfSignature,
41
+ DescriptionOfProperty,
42
+ DescriptionOfEnumerationLiteral,
43
+ SignatureLike,
44
+ ConstantPrimitive,
45
+ ConstantSetOfPrimitives,
46
+ ConstantSetOfEnumerationLiterals,
47
+ PrimitiveSetLiteral,
48
+ DescriptionOfConstant,
49
+ TranspilableVerification,
50
+ )
51
+ from aas_core_codegen.parse import tree as parse_tree
52
+
53
+
54
+ def _stringify_primitive_type_annotation(
55
+ that: PrimitiveTypeAnnotation,
56
+ ) -> stringify_mod.Entity:
57
+ result = stringify_mod.Entity(
58
+ name=that.__class__.__name__,
59
+ properties=[
60
+ stringify_mod.Property("a_type", that.a_type.name),
61
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
62
+ ],
63
+ )
64
+
65
+ return result
66
+
67
+
68
+ def _stringify_our_type_annotation(
69
+ that: OurTypeAnnotation,
70
+ ) -> stringify_mod.Entity:
71
+ result = stringify_mod.Entity(
72
+ name=that.__class__.__name__,
73
+ properties=[
74
+ stringify_mod.Property(
75
+ "our_type", f"Reference to our type {that.our_type.name}"
76
+ ),
77
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
78
+ ],
79
+ )
80
+
81
+ return result
82
+
83
+
84
+ def _stringify_list_type_annotation(
85
+ that: ListTypeAnnotation,
86
+ ) -> stringify_mod.Entity:
87
+ result = stringify_mod.Entity(
88
+ name=that.__class__.__name__,
89
+ properties=[
90
+ stringify_mod.Property("items", stringify(that.items)),
91
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
92
+ ],
93
+ )
94
+
95
+ return result
96
+
97
+
98
+ def _stringify_optional_type_annotation(
99
+ that: OptionalTypeAnnotation,
100
+ ) -> stringify_mod.Entity:
101
+ result = stringify_mod.Entity(
102
+ name=that.__class__.__name__,
103
+ properties=[
104
+ stringify_mod.Property("value", stringify(that.value)),
105
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
106
+ ],
107
+ )
108
+
109
+ return result
110
+
111
+
112
+ def _stringify_description_of_meta_model(
113
+ that: DescriptionOfMetaModel,
114
+ ) -> stringify_mod.Entity:
115
+ result = stringify_mod.Entity(
116
+ name=that.__class__.__name__,
117
+ properties=[
118
+ stringify_mod.Property("summary", str(that.summary)),
119
+ stringify_mod.Property("remarks", list(map(str, that.remarks))),
120
+ stringify_mod.Property(
121
+ "constraints_by_identifier",
122
+ [
123
+ [identifier, str(body)]
124
+ for identifier, body in that.constraints_by_identifier.items()
125
+ ],
126
+ ),
127
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
128
+ ],
129
+ )
130
+
131
+ return result
132
+
133
+
134
+ def _stringify_description_of_our_type(
135
+ that: DescriptionOfOurType,
136
+ ) -> stringify_mod.Entity:
137
+ result = stringify_mod.Entity(
138
+ name=that.__class__.__name__,
139
+ properties=[
140
+ stringify_mod.Property("summary", str(that.summary)),
141
+ stringify_mod.Property("remarks", list(map(str, that.remarks))),
142
+ stringify_mod.Property(
143
+ "constraints_by_identifier",
144
+ [
145
+ [identifier, str(body)]
146
+ for identifier, body in that.constraints_by_identifier.items()
147
+ ],
148
+ ),
149
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
150
+ ],
151
+ )
152
+
153
+ return result
154
+
155
+
156
+ def _stringify_description_of_property(
157
+ that: DescriptionOfProperty,
158
+ ) -> stringify_mod.Entity:
159
+ result = stringify_mod.Entity(
160
+ name=that.__class__.__name__,
161
+ properties=[
162
+ stringify_mod.Property("summary", str(that.summary)),
163
+ stringify_mod.Property("remarks", list(map(str, that.remarks))),
164
+ stringify_mod.Property(
165
+ "constraints_by_identifier",
166
+ [
167
+ [identifier, str(body)]
168
+ for identifier, body in that.constraints_by_identifier.items()
169
+ ],
170
+ ),
171
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
172
+ ],
173
+ )
174
+
175
+ return result
176
+
177
+
178
+ def _stringify_description_of_enumeration_literal(
179
+ that: DescriptionOfEnumerationLiteral,
180
+ ) -> stringify_mod.Entity:
181
+ result = stringify_mod.Entity(
182
+ name=that.__class__.__name__,
183
+ properties=[
184
+ stringify_mod.Property("summary", str(that.summary)),
185
+ stringify_mod.Property("remarks", list(map(str, that.remarks))),
186
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
187
+ ],
188
+ )
189
+
190
+ return result
191
+
192
+
193
+ def _stringify_description_of_signature(
194
+ that: DescriptionOfSignature,
195
+ ) -> stringify_mod.Entity:
196
+ result = stringify_mod.Entity(
197
+ name=that.__class__.__name__,
198
+ properties=[
199
+ stringify_mod.Property("summary", str(that.summary)),
200
+ stringify_mod.Property("remarks", list(map(str, that.remarks))),
201
+ stringify_mod.Property(
202
+ "arguments_by_name",
203
+ [[name, str(body)] for name, body in that.arguments_by_name.items()],
204
+ ),
205
+ stringify_mod.Property(
206
+ "returns", None if that.returns is None else str(that.returns)
207
+ ),
208
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
209
+ ],
210
+ )
211
+
212
+ return result
213
+
214
+
215
+ def _stringify_description_of_constant(
216
+ that: DescriptionOfConstant,
217
+ ) -> stringify_mod.Entity:
218
+ result = stringify_mod.Entity(
219
+ name=that.__class__.__name__,
220
+ properties=[
221
+ stringify_mod.Property("summary", str(that.summary)),
222
+ stringify_mod.Property("remarks", list(map(str, that.remarks))),
223
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
224
+ ],
225
+ )
226
+
227
+ return result
228
+
229
+
230
+ def _stringify_property(
231
+ that: Property,
232
+ ) -> stringify_mod.Entity:
233
+ result = stringify_mod.Entity(
234
+ name=that.__class__.__name__,
235
+ properties=[
236
+ stringify_mod.Property("name", that.name),
237
+ stringify_mod.Property("type_annotation", stringify(that.type_annotation)),
238
+ stringify_mod.Property("description", stringify(that.description)),
239
+ stringify_mod.Property(
240
+ "specified_for",
241
+ f"Reference to {that.specified_for.__class__.__name__} "
242
+ f"{that.specified_for.name}",
243
+ ),
244
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
245
+ ],
246
+ )
247
+
248
+ return result
249
+
250
+
251
+ def _stringify_default_primitive(
252
+ that: DefaultPrimitive,
253
+ ) -> stringify_mod.Entity:
254
+ result = stringify_mod.Entity(
255
+ name=that.__class__.__name__,
256
+ properties=[
257
+ stringify_mod.Property("value", that.value),
258
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
259
+ ],
260
+ )
261
+
262
+ return result
263
+
264
+
265
+ def _stringify_default_enumeration_literal(
266
+ that: DefaultEnumerationLiteral,
267
+ ) -> stringify_mod.Entity:
268
+ result = stringify_mod.Entity(
269
+ name=that.__class__.__name__,
270
+ properties=[
271
+ stringify_mod.Property(
272
+ "enumeration",
273
+ f"Reference to {that.enumeration.__class__.__name__} "
274
+ f"{that.enumeration.name}",
275
+ ),
276
+ stringify_mod.Property(
277
+ "literal",
278
+ f"Reference to {that.literal.__class__.__name__} "
279
+ f"{that.literal.name}",
280
+ ),
281
+ ],
282
+ )
283
+
284
+ return result
285
+
286
+
287
+ def _stringify_argument(
288
+ that: Argument,
289
+ ) -> stringify_mod.Entity:
290
+ result = stringify_mod.Entity(
291
+ name=that.__class__.__name__,
292
+ properties=[
293
+ stringify_mod.Property("name", that.name),
294
+ stringify_mod.Property("type_annotation", stringify(that.type_annotation)),
295
+ stringify_mod.Property("default", stringify(that.default)),
296
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
297
+ ],
298
+ )
299
+
300
+ return result
301
+
302
+
303
+ def _stringify_serialization(
304
+ that: Serialization,
305
+ ) -> stringify_mod.Entity:
306
+ result = stringify_mod.Entity(
307
+ name=that.__class__.__name__,
308
+ properties=[
309
+ stringify_mod.Property("with_model_type", that.with_model_type),
310
+ ],
311
+ )
312
+
313
+ return result
314
+
315
+
316
+ def _stringify_invariant(
317
+ that: Invariant,
318
+ ) -> stringify_mod.Entity:
319
+ result = stringify_mod.Entity(
320
+ name=that.__class__.__name__,
321
+ properties=[
322
+ stringify_mod.Property("description", that.description),
323
+ stringify_mod.Property("body", parse_tree.dump(that.body)),
324
+ stringify_mod.Property(
325
+ "specified_for",
326
+ f"Reference to {that.specified_for.__class__.__name__} "
327
+ f"{that.specified_for.name}",
328
+ ),
329
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
330
+ ],
331
+ )
332
+
333
+ return result
334
+
335
+
336
+ def _stringify_contract(
337
+ that: Contract,
338
+ ) -> stringify_mod.Entity:
339
+ result = stringify_mod.Entity(
340
+ name=that.__class__.__name__,
341
+ properties=[
342
+ stringify_mod.Property("args", that.args),
343
+ stringify_mod.Property("description", that.description),
344
+ stringify_mod.Property("body", parse_tree.dump(that.body)),
345
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
346
+ ],
347
+ )
348
+
349
+ return result
350
+
351
+
352
+ def _stringify_snapshot(
353
+ that: Snapshot,
354
+ ) -> stringify_mod.Entity:
355
+ result = stringify_mod.Entity(
356
+ name=that.__class__.__name__,
357
+ properties=[
358
+ stringify_mod.Property("args", that.args),
359
+ stringify_mod.Property("body", parse_tree.dump(that.body)),
360
+ stringify_mod.Property("name", that.name),
361
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
362
+ ],
363
+ )
364
+
365
+ return result
366
+
367
+
368
+ def _stringify_contracts(that: Contracts) -> stringify_mod.Entity:
369
+ result = stringify_mod.Entity(
370
+ name=that.__class__.__name__,
371
+ properties=[
372
+ stringify_mod.Property(
373
+ "preconditions", list(map(stringify, that.preconditions))
374
+ ),
375
+ stringify_mod.Property("snapshots", list(map(stringify, that.snapshots))),
376
+ stringify_mod.Property(
377
+ "postconditions",
378
+ list(map(stringify, that.postconditions)),
379
+ ),
380
+ ],
381
+ )
382
+
383
+ return result
384
+
385
+
386
+ def _stringify_a_signature_like(that: SignatureLike) -> stringify_mod.Entity:
387
+ result = stringify_mod.Entity(
388
+ name=that.__class__.__name__,
389
+ properties=[
390
+ stringify_mod.Property("name", that.name),
391
+ stringify_mod.Property("arguments", list(map(stringify, that.arguments))),
392
+ stringify_mod.Property("returns", stringify(that.returns)),
393
+ stringify_mod.Property("description", stringify(that.description)),
394
+ stringify_mod.Property("contracts", stringify(that.contracts)),
395
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
396
+ stringify_mod.PropertyEllipsis("arguments_by_name", that.arguments_by_name),
397
+ ],
398
+ )
399
+
400
+ return result
401
+
402
+
403
+ def _stringify_implementation_specific_method(
404
+ that: ImplementationSpecificMethod,
405
+ ) -> stringify_mod.Entity:
406
+ result = stringify_mod.Entity(
407
+ name=that.__class__.__name__,
408
+ properties=[
409
+ stringify_mod.Property("name", that.name),
410
+ stringify_mod.Property("arguments", list(map(stringify, that.arguments))),
411
+ stringify_mod.Property("returns", stringify(that.returns)),
412
+ stringify_mod.Property("description", stringify(that.description)),
413
+ stringify_mod.Property(
414
+ "specified_for",
415
+ f"Reference to {that.specified_for.__class__.__name__} "
416
+ f"{that.specified_for.name}",
417
+ ),
418
+ stringify_mod.Property("contracts", stringify(that.contracts)),
419
+ stringify_mod.Property("non_mutating", that.non_mutating),
420
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
421
+ stringify_mod.PropertyEllipsis("arguments_by_name", that.arguments_by_name),
422
+ ],
423
+ )
424
+
425
+ return result
426
+
427
+
428
+ def _stringify_understood_method(
429
+ that: UnderstoodMethod,
430
+ ) -> stringify_mod.Entity:
431
+ result = stringify_mod.Entity(
432
+ name=that.__class__.__name__,
433
+ properties=[
434
+ stringify_mod.Property("name", that.name),
435
+ stringify_mod.Property("arguments", list(map(stringify, that.arguments))),
436
+ stringify_mod.Property("returns", stringify(that.returns)),
437
+ stringify_mod.Property("description", stringify(that.description)),
438
+ stringify_mod.Property(
439
+ "specified_for",
440
+ f"Reference to {that.specified_for.__class__.__name__} "
441
+ f"{that.specified_for.name}",
442
+ ),
443
+ stringify_mod.Property("contracts", stringify(that.contracts)),
444
+ stringify_mod.Property("non_mutating", that.non_mutating),
445
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
446
+ stringify_mod.Property(
447
+ "body", [parse_tree.dump(stmt) for stmt in that.body]
448
+ ),
449
+ stringify_mod.PropertyEllipsis("arguments_by_name", that.arguments_by_name),
450
+ ],
451
+ )
452
+
453
+ return result
454
+
455
+
456
+ def _stringify_constructor(
457
+ that: Constructor,
458
+ ) -> stringify_mod.Entity:
459
+ result = stringify_mod.Entity(
460
+ name=that.__class__.__name__,
461
+ properties=[
462
+ stringify_mod.Property("name", that.name),
463
+ stringify_mod.Property("arguments", list(map(stringify, that.arguments))),
464
+ stringify_mod.Property("returns", stringify(that.returns)),
465
+ stringify_mod.Property("description", stringify(that.description)),
466
+ stringify_mod.Property("contracts", stringify(that.contracts)),
467
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
468
+ stringify_mod.PropertyEllipsis("arguments_by_name", that.arguments_by_name),
469
+ stringify_mod.Property(
470
+ "is_implementation_specific", that.is_implementation_specific
471
+ ),
472
+ stringify_mod.Property(
473
+ "statements", list(map(construction.dump, that.statements))
474
+ ),
475
+ stringify_mod.Property(
476
+ "inlined_statements",
477
+ list(map(construction.dump, that.inlined_statements)),
478
+ ),
479
+ ],
480
+ )
481
+
482
+ return result
483
+
484
+
485
+ def _stringify_enumeration_literal(
486
+ that: EnumerationLiteral,
487
+ ) -> stringify_mod.Entity:
488
+ result = stringify_mod.Entity(
489
+ name=that.__class__.__name__,
490
+ properties=[
491
+ stringify_mod.Property("name", that.name),
492
+ stringify_mod.Property("value", that.value),
493
+ stringify_mod.Property("description", stringify(that.description)),
494
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
495
+ ],
496
+ )
497
+
498
+ return result
499
+
500
+
501
+ def _stringify_enumeration(
502
+ that: Enumeration,
503
+ ) -> stringify_mod.Entity:
504
+ result = stringify_mod.Entity(
505
+ name=that.__class__.__name__,
506
+ properties=[
507
+ stringify_mod.Property("name", that.name),
508
+ stringify_mod.Property("literals", list(map(stringify, that.literals))),
509
+ stringify_mod.Property("description", stringify(that.description)),
510
+ stringify_mod.PropertyEllipsis("literals_by_name", that.literals_by_name),
511
+ stringify_mod.PropertyEllipsis("literals_by_value", that.literals_by_value),
512
+ stringify_mod.PropertyEllipsis("literal_id_set", that.literal_id_set),
513
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
514
+ ],
515
+ )
516
+
517
+ return result
518
+
519
+
520
+ def _stringify_constrained_primitive(
521
+ that: ConstrainedPrimitive,
522
+ ) -> stringify_mod.Entity:
523
+ result = stringify_mod.Entity(
524
+ name=that.__class__.__name__,
525
+ properties=[
526
+ stringify_mod.Property("name", that.name),
527
+ stringify_mod.Property(
528
+ "inheritances",
529
+ [
530
+ f"Reference to {inheritance.__class__.__name__} {inheritance.name}"
531
+ for inheritance in that.inheritances
532
+ ],
533
+ ),
534
+ stringify_mod.PropertyEllipsis(
535
+ "inheritance_id_set", that.inheritance_id_set
536
+ ),
537
+ stringify_mod.Property(
538
+ "ancestors",
539
+ [
540
+ f"Reference to {ancestor.__class__.__name__} {ancestor.name}"
541
+ for ancestor in that.ancestors
542
+ ],
543
+ ),
544
+ stringify_mod.PropertyEllipsis("ancestor_id_set", that.ancestor_id_set),
545
+ stringify_mod.PropertyEllipsis("descendant_id_set", that.descendant_id_set),
546
+ stringify_mod.Property("constrainee", that.constrainee.name),
547
+ stringify_mod.Property(
548
+ "is_implementation_specific", that.is_implementation_specific
549
+ ),
550
+ stringify_mod.Property("invariants", list(map(stringify, that.invariants))),
551
+ stringify_mod.PropertyEllipsis("invariant_id_set", that.invariant_id_set),
552
+ stringify_mod.Property("description", stringify(that.description)),
553
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
554
+ ],
555
+ )
556
+
557
+ return result
558
+
559
+
560
+ def _stringify_a_class(that: Class) -> stringify_mod.Entity:
561
+ # NOTE (mristin, 2021-12-26):
562
+ # Concrete and abstract class share all the attributes, so we provide a single
563
+ # stringification function.
564
+
565
+ result = stringify_mod.Entity(
566
+ name=that.__class__.__name__,
567
+ properties=[
568
+ stringify_mod.Property("name", that.name),
569
+ stringify_mod.Property(
570
+ "inheritances",
571
+ [
572
+ f"Reference to {inheritance.__class__.__name__} {inheritance.name}"
573
+ for inheritance in that.inheritances
574
+ ],
575
+ ),
576
+ stringify_mod.PropertyEllipsis(
577
+ "inheritance_id_set", that.inheritance_id_set
578
+ ),
579
+ stringify_mod.Property(
580
+ "ancestors",
581
+ [
582
+ f"Reference to {ancestor.__class__.__name__} {ancestor.name}"
583
+ for ancestor in that.ancestors
584
+ ],
585
+ ),
586
+ stringify_mod.PropertyEllipsis("ancestor_id_set", that.ancestor_id_set),
587
+ stringify_mod.Property(
588
+ "is_implementation_specific", that.is_implementation_specific
589
+ ),
590
+ stringify_mod.Property("interface", stringify(that.interface)),
591
+ stringify_mod.PropertyEllipsis("descendant_id_set", that.descendant_id_set),
592
+ stringify_mod.Property(
593
+ "descendants",
594
+ [
595
+ f"Reference to {descendant.__class__.__name__} {descendant.name}"
596
+ for descendant in that.descendants
597
+ ],
598
+ ),
599
+ stringify_mod.PropertyEllipsis(
600
+ "concrete_descendant_id_set", that.concrete_descendant_id_set
601
+ ),
602
+ stringify_mod.Property(
603
+ "concrete_descendants",
604
+ [
605
+ f"Reference to {descendant.__class__.__name__} {descendant.name}"
606
+ for descendant in that.concrete_descendants
607
+ ],
608
+ ),
609
+ stringify_mod.Property("properties", list(map(stringify, that.properties))),
610
+ stringify_mod.Property("methods", list(map(stringify, that.methods))),
611
+ stringify_mod.Property("constructor", stringify(that.constructor)),
612
+ stringify_mod.Property("invariants", list(map(stringify, that.invariants))),
613
+ stringify_mod.Property("serialization", stringify(that.serialization)),
614
+ stringify_mod.Property("description", stringify(that.description)),
615
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
616
+ stringify_mod.PropertyEllipsis(
617
+ "properties_by_name", that.properties_by_name
618
+ ),
619
+ stringify_mod.PropertyEllipsis("property_id_set", that.property_id_set),
620
+ stringify_mod.PropertyEllipsis("methods_by_name", that.methods_by_name),
621
+ stringify_mod.PropertyEllipsis("method_id_set", that.method_id_set),
622
+ stringify_mod.PropertyEllipsis("invariant_id_set", that.invariant_id_set),
623
+ ],
624
+ )
625
+
626
+ return result
627
+
628
+
629
+ def _stringify_concrete_class(that: ConcreteClass) -> stringify_mod.Entity:
630
+ return _stringify_a_class(that)
631
+
632
+
633
+ def _stringify_abstract_class(that: AbstractClass) -> stringify_mod.Entity:
634
+ return _stringify_a_class(that)
635
+
636
+
637
+ def _stringify_constant_primitive(
638
+ that: ConstantPrimitive,
639
+ ) -> stringify_mod.Entity:
640
+ result = stringify_mod.Entity(
641
+ name=that.__class__.__name__,
642
+ properties=[
643
+ stringify_mod.Property("name", that.name),
644
+ stringify_mod.Property("value", that.value),
645
+ stringify_mod.Property("a_type", that.a_type.name),
646
+ stringify_mod.Property("description", stringify(that.description)),
647
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
648
+ ],
649
+ )
650
+
651
+ return result
652
+
653
+
654
+ def _stringify_primitive_set_literal(
655
+ that: PrimitiveSetLiteral,
656
+ ) -> stringify_mod.Entity:
657
+ result = stringify_mod.Entity(
658
+ name=that.__class__.__name__,
659
+ properties=[
660
+ stringify_mod.Property("value", that.value),
661
+ stringify_mod.Property("a_type", that.a_type.name),
662
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
663
+ ],
664
+ )
665
+
666
+ return result
667
+
668
+
669
+ def _stringify_constant_set_of_primitives(
670
+ that: ConstantSetOfPrimitives,
671
+ ) -> stringify_mod.Entity:
672
+ result = stringify_mod.Entity(
673
+ name=that.__class__.__name__,
674
+ properties=[
675
+ stringify_mod.Property("name", that.name),
676
+ stringify_mod.Property("a_type", that.a_type.name),
677
+ stringify_mod.Property("literals", list(map(stringify, that.literals))),
678
+ stringify_mod.PropertyEllipsis("literal_value_set", that.literal_value_set),
679
+ stringify_mod.Property(
680
+ "subsets",
681
+ [
682
+ f"Reference to {subset.__class__.__name__} {subset.name}"
683
+ for subset in that.subsets
684
+ ],
685
+ ),
686
+ stringify_mod.Property("description", stringify(that.description)),
687
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
688
+ ],
689
+ )
690
+
691
+ return result
692
+
693
+
694
+ def _stringify_constant_set_of_enumeration_literals(
695
+ that: ConstantSetOfEnumerationLiterals,
696
+ ) -> stringify_mod.Entity:
697
+ result = stringify_mod.Entity(
698
+ name=that.__class__.__name__,
699
+ properties=[
700
+ stringify_mod.Property("name", that.name),
701
+ stringify_mod.Property(
702
+ "enumeration",
703
+ f"Reference to {that.enumeration.__class__.__name__} "
704
+ f"{that.enumeration.name}",
705
+ ),
706
+ stringify_mod.Property(
707
+ "literals",
708
+ [
709
+ f"Reference to {literal.__class__.__name__} {literal.name}"
710
+ for literal in that.literals
711
+ ],
712
+ ),
713
+ stringify_mod.PropertyEllipsis("literal_id_set", that.literal_id_set),
714
+ stringify_mod.Property(
715
+ "subsets",
716
+ [
717
+ f"Reference to {subset.__class__.__name__} {subset.name}"
718
+ for subset in that.subsets
719
+ ],
720
+ ),
721
+ stringify_mod.Property("description", stringify(that.description)),
722
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
723
+ ],
724
+ )
725
+
726
+ return result
727
+
728
+
729
+ def _stringify_implementation_specific_verification(
730
+ that: ImplementationSpecificVerification,
731
+ ) -> stringify_mod.Entity:
732
+ return _stringify_a_signature_like(that)
733
+
734
+
735
+ def _stringify_pattern_verification(
736
+ that: PatternVerification,
737
+ ) -> stringify_mod.Entity:
738
+ signature_like = _stringify_a_signature_like(that)
739
+
740
+ result = stringify_mod.Entity(
741
+ name=that.__class__.__name__,
742
+ properties=list(signature_like.properties)
743
+ + [stringify_mod.Property("pattern", that.pattern)]
744
+ + [stringify_mod.Property("pattern_expr", parse_tree.dump(that.pattern_expr))],
745
+ )
746
+
747
+ return result
748
+
749
+
750
+ def _stringify_transpilable_verification(
751
+ that: TranspilableVerification,
752
+ ) -> stringify_mod.Entity:
753
+ signature_like = _stringify_a_signature_like(that)
754
+
755
+ result = stringify_mod.Entity(
756
+ name=that.__class__.__name__, properties=list(signature_like.properties)
757
+ )
758
+
759
+ return result
760
+
761
+
762
+ def _stringify_signature(
763
+ that: Signature,
764
+ ) -> stringify_mod.Entity:
765
+ return _stringify_a_signature_like(that)
766
+
767
+
768
+ def _stringify_interface(
769
+ that: Interface,
770
+ ) -> stringify_mod.Entity:
771
+ result = stringify_mod.Entity(
772
+ name=that.__class__.__name__,
773
+ properties=[
774
+ stringify_mod.Property(
775
+ "base",
776
+ f"Reference to {that.base.__class__.__name__} {that.base.name}",
777
+ ),
778
+ stringify_mod.Property("name", that.name),
779
+ stringify_mod.Property(
780
+ "inheritances",
781
+ [
782
+ f"Reference to {inheritance.__class__.__name__} {inheritance.name}"
783
+ for inheritance in that.inheritances
784
+ ],
785
+ ),
786
+ stringify_mod.Property(
787
+ "implementers",
788
+ [
789
+ f"Reference to {implementer.__class__.__name__} {implementer.name}"
790
+ for implementer in that.implementers
791
+ ],
792
+ ),
793
+ stringify_mod.Property("properties", list(map(stringify, that.properties))),
794
+ stringify_mod.Property("signatures", list(map(stringify, that.signatures))),
795
+ stringify_mod.Property("description", stringify(that.description)),
796
+ stringify_mod.PropertyEllipsis("parsed", that.parsed),
797
+ stringify_mod.PropertyEllipsis(
798
+ "properties_by_name", that.properties_by_name
799
+ ),
800
+ stringify_mod.PropertyEllipsis("property_id_set", that.property_id_set),
801
+ ],
802
+ )
803
+
804
+ return result
805
+
806
+
807
+ def _stringify_meta_model(
808
+ that: MetaModel,
809
+ ) -> stringify_mod.Entity:
810
+ result = stringify_mod.Entity(
811
+ name=that.__class__.__name__,
812
+ properties=[
813
+ stringify_mod.Property("description", stringify(that.description)),
814
+ stringify_mod.Property("version", that.version),
815
+ stringify_mod.Property("xml_namespace", that.xml_namespace),
816
+ ],
817
+ )
818
+
819
+ return result
820
+
821
+
822
+ def _stringify_symbol_table(
823
+ that: SymbolTable,
824
+ ) -> stringify_mod.Entity:
825
+ result = stringify_mod.Entity(
826
+ name=that.__class__.__name__,
827
+ properties=[
828
+ stringify_mod.Property("our_types", list(map(stringify, that.our_types))),
829
+ stringify_mod.Property(
830
+ "our_types_topologically_sorted",
831
+ [
832
+ f"Reference to our type {our_type.name}"
833
+ for our_type in that.our_types_topologically_sorted
834
+ ],
835
+ ),
836
+ stringify_mod.Property(
837
+ "enumerations",
838
+ [
839
+ f"Reference to our type {our_type.name}"
840
+ for our_type in that.enumerations
841
+ ],
842
+ ),
843
+ stringify_mod.Property(
844
+ "constrained_primitives",
845
+ [
846
+ f"Reference to our type {our_type.name}"
847
+ for our_type in that.constrained_primitives
848
+ ],
849
+ ),
850
+ stringify_mod.Property(
851
+ "classes",
852
+ [f"Reference to our type {our_type.name}" for our_type in that.classes],
853
+ ),
854
+ stringify_mod.Property(
855
+ "concrete_classes",
856
+ [
857
+ f"Reference to our type {our_type.name}"
858
+ for our_type in that.concrete_classes
859
+ ],
860
+ ),
861
+ stringify_mod.Property("constants", list(map(stringify, that.constants))),
862
+ stringify_mod.PropertyEllipsis("constants_by_name", that.constants_by_name),
863
+ stringify_mod.Property(
864
+ "verification_functions",
865
+ list(map(stringify, that.verification_functions)),
866
+ ),
867
+ stringify_mod.PropertyEllipsis(
868
+ "verification_functions_by_name", that.verification_functions_by_name
869
+ ),
870
+ stringify_mod.Property("meta_model", stringify(that.meta_model)),
871
+ ],
872
+ )
873
+
874
+ return result
875
+
876
+
877
+ Dumpable = Union[
878
+ AbstractClass,
879
+ Argument,
880
+ ConcreteClass,
881
+ ConstantPrimitive,
882
+ ConstantSetOfEnumerationLiterals,
883
+ ConstantSetOfPrimitives,
884
+ Constructor,
885
+ Contract,
886
+ Contracts,
887
+ Default,
888
+ DescriptionOfMetaModel,
889
+ DescriptionOfOurType,
890
+ DescriptionOfProperty,
891
+ DescriptionOfEnumerationLiteral,
892
+ DescriptionOfSignature,
893
+ DescriptionOfConstant,
894
+ Enumeration,
895
+ EnumerationLiteral,
896
+ ImplementationSpecificMethod,
897
+ ImplementationSpecificVerification,
898
+ Interface,
899
+ Invariant,
900
+ ListTypeAnnotation,
901
+ MetaModel,
902
+ OptionalTypeAnnotation,
903
+ OurTypeAnnotation,
904
+ PatternVerification,
905
+ TranspilableVerification,
906
+ PrimitiveSetLiteral,
907
+ PrimitiveTypeAnnotation,
908
+ Property,
909
+ Serialization,
910
+ Signature,
911
+ Snapshot,
912
+ OurType,
913
+ SymbolTable,
914
+ UnderstoodMethod,
915
+ ]
916
+
917
+ stringify_mod.assert_all_public_types_listed_as_dumpables(
918
+ dumpable=Dumpable, types_module=_types
919
+ )
920
+
921
+ _DISPATCH = {
922
+ AbstractClass: _stringify_abstract_class,
923
+ Argument: _stringify_argument,
924
+ ConcreteClass: _stringify_concrete_class,
925
+ ConstantPrimitive: _stringify_constant_primitive,
926
+ ConstantSetOfEnumerationLiterals: _stringify_constant_set_of_enumeration_literals,
927
+ ConstantSetOfPrimitives: _stringify_constant_set_of_primitives,
928
+ ConstrainedPrimitive: _stringify_constrained_primitive,
929
+ Constructor: _stringify_constructor,
930
+ Contract: _stringify_contract,
931
+ Contracts: _stringify_contracts,
932
+ DefaultPrimitive: _stringify_default_primitive,
933
+ DefaultEnumerationLiteral: _stringify_default_enumeration_literal,
934
+ DescriptionOfConstant: _stringify_description_of_constant,
935
+ DescriptionOfMetaModel: _stringify_description_of_meta_model,
936
+ DescriptionOfOurType: _stringify_description_of_our_type,
937
+ DescriptionOfProperty: _stringify_description_of_property,
938
+ DescriptionOfEnumerationLiteral: _stringify_description_of_enumeration_literal,
939
+ DescriptionOfSignature: _stringify_description_of_signature,
940
+ Enumeration: _stringify_enumeration,
941
+ EnumerationLiteral: _stringify_enumeration_literal,
942
+ ImplementationSpecificMethod: _stringify_implementation_specific_method,
943
+ ImplementationSpecificVerification: _stringify_implementation_specific_verification,
944
+ Interface: _stringify_interface,
945
+ Invariant: _stringify_invariant,
946
+ ListTypeAnnotation: _stringify_list_type_annotation,
947
+ MetaModel: _stringify_meta_model,
948
+ OptionalTypeAnnotation: _stringify_optional_type_annotation,
949
+ OurTypeAnnotation: _stringify_our_type_annotation,
950
+ PatternVerification: _stringify_pattern_verification,
951
+ PrimitiveSetLiteral: _stringify_primitive_set_literal,
952
+ PrimitiveTypeAnnotation: _stringify_primitive_type_annotation,
953
+ Property: _stringify_property,
954
+ Serialization: _stringify_serialization,
955
+ Signature: _stringify_signature,
956
+ Snapshot: _stringify_snapshot,
957
+ SymbolTable: _stringify_symbol_table,
958
+ TranspilableVerification: _stringify_transpilable_verification,
959
+ UnderstoodMethod: _stringify_understood_method,
960
+ }
961
+
962
+ stringify_mod.assert_dispatch_exhaustive(dispatch=_DISPATCH, dumpable=Dumpable)
963
+
964
+
965
+ def stringify(that: Optional[Dumpable]) -> Optional[stringify_mod.Entity]:
966
+ """Dispatch to the correct ``_stringify_*`` method."""
967
+ if that is None:
968
+ return None
969
+
970
+ stringify_func = _DISPATCH.get(that.__class__, None)
971
+ if stringify_func is None:
972
+ raise AssertionError(
973
+ f"No stringify function could be found for the class {that.__class__}"
974
+ )
975
+
976
+ stringified = stringify_func(that) # type: ignore
977
+ assert isinstance(stringified, stringify_mod.Entity)
978
+ stringify_mod.assert_compares_against_dict(stringified, that)
979
+
980
+ return stringified
981
+
982
+
983
+ def dump(that: Optional[Dumpable]) -> str:
984
+ """Produce a string representation of the ``dumpable`` for testing or debugging."""
985
+ if that is None:
986
+ return repr(None)
987
+
988
+ stringified = stringify(that)
989
+ return stringify_mod.dump(stringified)