codeplain 0.2.19__tar.gz → 0.2.20__tar.gz

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 (199) hide show
  1. codeplain-0.2.20/.claude/settings.local.json +64 -0
  2. {codeplain-0.2.19 → codeplain-0.2.20}/PKG-INFO +1 -1
  3. codeplain-0.2.20/_version.py +1 -0
  4. {codeplain-0.2.19 → codeplain-0.2.20}/memory_management.py +13 -2
  5. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/actions/exit_with_error.py +7 -1
  6. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/actions/fix_conformance_test.py +3 -0
  7. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/code_renderer.py +0 -2
  8. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/render_context.py +1 -1
  9. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/render_types.py +1 -0
  10. codeplain-0.2.19/.claude/settings.local.json +0 -39
  11. codeplain-0.2.19/_version.py +0 -1
  12. {codeplain-0.2.19 → codeplain-0.2.20}/.flake8 +0 -0
  13. {codeplain-0.2.19 → codeplain-0.2.20}/.github/workflows/lint-and-test.yml +0 -0
  14. {codeplain-0.2.19 → codeplain-0.2.20}/.github/workflows/nofity-slack-on-main-merge.yml +0 -0
  15. {codeplain-0.2.19 → codeplain-0.2.20}/.github/workflows/publish-install-script.yml +0 -0
  16. {codeplain-0.2.19 → codeplain-0.2.20}/.github/workflows/publish-to-pypi.yml +0 -0
  17. {codeplain-0.2.19 → codeplain-0.2.20}/.gitignore +0 -0
  18. {codeplain-0.2.19 → codeplain-0.2.20}/.vscode/launch.json +0 -0
  19. {codeplain-0.2.19 → codeplain-0.2.20}/.vscode/settings.json +0 -0
  20. {codeplain-0.2.19 → codeplain-0.2.20}/LICENSE +0 -0
  21. {codeplain-0.2.19 → codeplain-0.2.20}/README.md +0 -0
  22. {codeplain-0.2.19 → codeplain-0.2.20}/codeplain_REST_api.py +0 -0
  23. {codeplain-0.2.19 → codeplain-0.2.20}/concept_utils.py +0 -0
  24. {codeplain-0.2.19 → codeplain-0.2.20}/config/__init__.py +0 -0
  25. {codeplain-0.2.19 → codeplain-0.2.20}/config/system_config.yaml +0 -0
  26. {codeplain-0.2.19 → codeplain-0.2.20}/diff_utils.py +0 -0
  27. {codeplain-0.2.19 → codeplain-0.2.20}/docs/generate_cli.py +0 -0
  28. {codeplain-0.2.19 → codeplain-0.2.20}/docs/plain2code_cli.md +0 -0
  29. {codeplain-0.2.19 → codeplain-0.2.20}/docs/starting_a_plain_project_from_scratch.md +0 -0
  30. {codeplain-0.2.19 → codeplain-0.2.20}/event_bus.py +0 -0
  31. {codeplain-0.2.19 → codeplain-0.2.20}/examples/example_hello_world_golang/config.yaml +0 -0
  32. {codeplain-0.2.19 → codeplain-0.2.20}/examples/example_hello_world_golang/harness_tests/hello_world_test.go +0 -0
  33. {codeplain-0.2.19 → codeplain-0.2.20}/examples/example_hello_world_golang/hello_world_golang.plain +0 -0
  34. {codeplain-0.2.19 → codeplain-0.2.20}/examples/example_hello_world_golang/run.sh +0 -0
  35. {codeplain-0.2.19 → codeplain-0.2.20}/examples/example_hello_world_python/config.yaml +0 -0
  36. {codeplain-0.2.19 → codeplain-0.2.20}/examples/example_hello_world_python/harness_tests/hello_world_display/test_hello_world.py +0 -0
  37. {codeplain-0.2.19 → codeplain-0.2.20}/examples/example_hello_world_python/hello_world_python.plain +0 -0
  38. {codeplain-0.2.19 → codeplain-0.2.20}/examples/example_hello_world_python/run.sh +0 -0
  39. {codeplain-0.2.19 → codeplain-0.2.20}/examples/example_hello_world_react/config.yaml +0 -0
  40. {codeplain-0.2.19 → codeplain-0.2.20}/examples/example_hello_world_react/harness_tests/hello_world_display/cypress/e2e/hello_world.cy.ts +0 -0
  41. {codeplain-0.2.19 → codeplain-0.2.20}/examples/example_hello_world_react/harness_tests/hello_world_display/cypress/support/e2e.ts +0 -0
  42. {codeplain-0.2.19 → codeplain-0.2.20}/examples/example_hello_world_react/harness_tests/hello_world_display/cypress.config.ts +0 -0
  43. {codeplain-0.2.19 → codeplain-0.2.20}/examples/example_hello_world_react/harness_tests/hello_world_display/package.json +0 -0
  44. {codeplain-0.2.19 → codeplain-0.2.20}/examples/example_hello_world_react/harness_tests/hello_world_display/tsconfig.json +0 -0
  45. {codeplain-0.2.19 → codeplain-0.2.20}/examples/example_hello_world_react/hello_world_react.plain +0 -0
  46. {codeplain-0.2.19 → codeplain-0.2.20}/examples/example_hello_world_react/run.sh +0 -0
  47. {codeplain-0.2.19 → codeplain-0.2.20}/examples/run.sh +0 -0
  48. {codeplain-0.2.19 → codeplain-0.2.20}/file_utils.py +0 -0
  49. {codeplain-0.2.19 → codeplain-0.2.20}/git_utils.py +0 -0
  50. {codeplain-0.2.19 → codeplain-0.2.20}/hash_key.py +0 -0
  51. {codeplain-0.2.19 → codeplain-0.2.20}/install/bash/examples.sh +0 -0
  52. {codeplain-0.2.19 → codeplain-0.2.20}/install/bash/install.sh +0 -0
  53. {codeplain-0.2.19 → codeplain-0.2.20}/install/bash/walkthrough.sh +0 -0
  54. {codeplain-0.2.19 → codeplain-0.2.20}/install/powershell/examples.ps1 +0 -0
  55. {codeplain-0.2.19 → codeplain-0.2.20}/install/powershell/install.ps1 +0 -0
  56. {codeplain-0.2.19 → codeplain-0.2.20}/install/powershell/walkthrough.ps1 +0 -0
  57. {codeplain-0.2.19 → codeplain-0.2.20}/module_renderer.py +0 -0
  58. {codeplain-0.2.19 → codeplain-0.2.20}/plain2code.py +0 -0
  59. {codeplain-0.2.19 → codeplain-0.2.20}/plain2code_arguments.py +0 -0
  60. {codeplain-0.2.19 → codeplain-0.2.20}/plain2code_console.py +0 -0
  61. {codeplain-0.2.19 → codeplain-0.2.20}/plain2code_events.py +0 -0
  62. {codeplain-0.2.19 → codeplain-0.2.20}/plain2code_exceptions.py +0 -0
  63. {codeplain-0.2.19 → codeplain-0.2.20}/plain2code_logger.py +0 -0
  64. {codeplain-0.2.19 → codeplain-0.2.20}/plain2code_nodes.py +0 -0
  65. {codeplain-0.2.19 → codeplain-0.2.20}/plain2code_read_config.py +0 -0
  66. {codeplain-0.2.19 → codeplain-0.2.20}/plain2code_state.py +0 -0
  67. {codeplain-0.2.19 → codeplain-0.2.20}/plain2code_utils.py +0 -0
  68. {codeplain-0.2.19 → codeplain-0.2.20}/plain_file.py +0 -0
  69. {codeplain-0.2.19 → codeplain-0.2.20}/plain_modules.py +0 -0
  70. {codeplain-0.2.19 → codeplain-0.2.20}/plain_spec.py +0 -0
  71. {codeplain-0.2.19 → codeplain-0.2.20}/pyproject.toml +0 -0
  72. {codeplain-0.2.19 → codeplain-0.2.20}/pytest.ini +0 -0
  73. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/__init__.py +0 -0
  74. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/actions/analyze_specification_ambiguity.py +0 -0
  75. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/actions/base_action.py +0 -0
  76. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/actions/commit_conformance_tests_changes.py +0 -0
  77. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/actions/commit_implementation_code_changes.py +0 -0
  78. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/actions/create_dist.py +0 -0
  79. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/actions/finish_functional_requirement.py +0 -0
  80. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/actions/fix_unit_tests.py +0 -0
  81. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/actions/prepare_repositories.py +0 -0
  82. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/actions/prepare_testing_environment.py +0 -0
  83. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/actions/refactor_code.py +0 -0
  84. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/actions/render_conformance_tests.py +0 -0
  85. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/actions/render_functional_requirement.py +0 -0
  86. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/actions/run_conformance_tests.py +0 -0
  87. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/actions/run_unit_tests.py +0 -0
  88. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/actions/summarize_conformance_tests.py +0 -0
  89. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/conformance_test_helpers.py +0 -0
  90. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/conformance_tests.py +0 -0
  91. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/implementation_code_helpers.py +0 -0
  92. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/render_utils.py +0 -0
  93. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/state_machine_config.py +0 -0
  94. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/states.py +0 -0
  95. {codeplain-0.2.19 → codeplain-0.2.20}/render_machine/triggers.py +0 -0
  96. {codeplain-0.2.19 → codeplain-0.2.20}/requirements.txt +0 -0
  97. {codeplain-0.2.19 → codeplain-0.2.20}/resources/codeplain_overview.png +0 -0
  98. {codeplain-0.2.19 → codeplain-0.2.20}/resources/plain_example.png +0 -0
  99. {codeplain-0.2.19 → codeplain-0.2.20}/standard_template_library/__init__.py +0 -0
  100. {codeplain-0.2.19 → codeplain-0.2.20}/standard_template_library/golang-console-app-template.plain +0 -0
  101. {codeplain-0.2.19 → codeplain-0.2.20}/standard_template_library/python-console-app-template.plain +0 -0
  102. {codeplain-0.2.19 → codeplain-0.2.20}/standard_template_library/typescript-react-app-boilerplate.plain +0 -0
  103. {codeplain-0.2.19 → codeplain-0.2.20}/standard_template_library/typescript-react-app-template.plain +0 -0
  104. {codeplain-0.2.19 → codeplain-0.2.20}/system_config.py +0 -0
  105. {codeplain-0.2.19 → codeplain-0.2.20}/test_scripts/run_conformance_tests_cypress.sh +0 -0
  106. {codeplain-0.2.19 → codeplain-0.2.20}/test_scripts/run_conformance_tests_golang.sh +0 -0
  107. {codeplain-0.2.19 → codeplain-0.2.20}/test_scripts/run_conformance_tests_python.sh +0 -0
  108. {codeplain-0.2.19 → codeplain-0.2.20}/test_scripts/run_unittests_golang.sh +0 -0
  109. {codeplain-0.2.19 → codeplain-0.2.20}/test_scripts/run_unittests_python.sh +0 -0
  110. {codeplain-0.2.19 → codeplain-0.2.20}/test_scripts/run_unittests_react.sh +0 -0
  111. {codeplain-0.2.19 → codeplain-0.2.20}/tests/__init__.py +0 -0
  112. {codeplain-0.2.19 → codeplain-0.2.20}/tests/conftest.py +0 -0
  113. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/imports/circular_imports_1.plain +0 -0
  114. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/imports/circular_imports_2.plain +0 -0
  115. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/imports/circular_imports_main.plain +0 -0
  116. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/imports/diamond_import_1.plain +0 -0
  117. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/imports/diamond_import_2.plain +0 -0
  118. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/imports/diamond_import_common.plain +0 -0
  119. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/imports/diamond_imports_main.plain +0 -0
  120. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/imports/non_existent_import.plain +0 -0
  121. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfile/duplicate_specification_heading.plain +0 -0
  122. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfile/invalid_specification_order.plain +0 -0
  123. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfile/missing_non_functional_requirements.plain +0 -0
  124. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfile/plain_source_with_absolute_link.plain +0 -0
  125. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfile/plain_source_with_url_link.plain +0 -0
  126. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfile/task_manager_with_reference_links.plain +0 -0
  127. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfile/without_non_functional_requirement.plain +0 -0
  128. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/concept_validation_acceptance_tests.plain +0 -0
  129. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/concept_validation_acceptance_tests_nondefined.plain +0 -0
  130. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/concept_validation_defined_nondefined.plain +0 -0
  131. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/concept_validation_defined_nondefined_2.plain +0 -0
  132. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/concept_validation_definition.plain +0 -0
  133. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/concept_validation_noconcepts.plain +0 -0
  134. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/concept_validation_nonconcept.plain +0 -0
  135. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/concept_validation_nondefined.plain +0 -0
  136. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/concept_validation_redefinition.plain +0 -0
  137. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/concept_validation_several_concepts.plain +0 -0
  138. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/concept_validation_valid.plain +0 -0
  139. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/exported_concepts.plain +0 -0
  140. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/exported_concepts_base.plain +0 -0
  141. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/exported_concepts_example.plain +0 -0
  142. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/exported_concepts_missing.plain +0 -0
  143. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/exported_concepts_missing_example.plain +0 -0
  144. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/exported_concepts_nested.plain +0 -0
  145. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/exported_concepts_nested_example.plain +0 -0
  146. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/exported_concepts_transitive_example.plain +0 -0
  147. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/exported_concepts_transitive_l1.plain +0 -0
  148. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/exported_concepts_transitive_l2.plain +0 -0
  149. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/plain_file_parser_with_comments.plain +0 -0
  150. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/plain_file_with_comments_indented.plain +0 -0
  151. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/regular_plain_source.plain +0 -0
  152. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/required_concepts.plain +0 -0
  153. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/required_concepts_defs.plain +0 -0
  154. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/required_concepts_example.plain +0 -0
  155. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/required_concepts_l1.plain +0 -0
  156. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/required_concepts_l2.plain +0 -0
  157. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/required_concepts_missing.plain +0 -0
  158. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/required_concepts_module.plain +0 -0
  159. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/required_concepts_partial.plain +0 -0
  160. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/required_concepts_partial_duplicate.plain +0 -0
  161. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/topological_sort.plain +0 -0
  162. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/plainfileparser/topological_sort_not_referenced.plain +0 -0
  163. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/requires/circular_requires_main.plain +0 -0
  164. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/requires/circular_requires_sub.plain +0 -0
  165. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/requires/diamond_requires_1.plain +0 -0
  166. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/requires/diamond_requires_2.plain +0 -0
  167. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/requires/diamond_requires_common.plain +0 -0
  168. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/requires/diamond_requires_main.plain +0 -0
  169. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/requires/independent_requires_1.plain +0 -0
  170. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/requires/independent_requires_2.plain +0 -0
  171. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/requires/independent_requires_main.plain +0 -0
  172. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/requires/non_existent_require.plain +0 -0
  173. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/requires/normal_requires_1.plain +0 -0
  174. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/requires/normal_requires_2.plain +0 -0
  175. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/requires/normal_requires_common.plain +0 -0
  176. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/requires/normal_requires_main.plain +0 -0
  177. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/simple.plain +0 -0
  178. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/templates/block_level_include.plain +0 -0
  179. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/templates/code_variables.plain +0 -0
  180. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/templates/header.plain +0 -0
  181. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/templates/implement.plain +0 -0
  182. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/templates/implement_2.plain +0 -0
  183. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/templates/template_include.plain +0 -0
  184. {codeplain-0.2.19 → codeplain-0.2.20}/tests/data/templates/test_hardest_problem.plain +0 -0
  185. {codeplain-0.2.19 → codeplain-0.2.20}/tests/test_git_utils.py +0 -0
  186. {codeplain-0.2.19 → codeplain-0.2.20}/tests/test_imports.py +0 -0
  187. {codeplain-0.2.19 → codeplain-0.2.20}/tests/test_plainfile.py +0 -0
  188. {codeplain-0.2.19 → codeplain-0.2.20}/tests/test_plainfileparser.py +0 -0
  189. {codeplain-0.2.19 → codeplain-0.2.20}/tests/test_plainspec.py +0 -0
  190. {codeplain-0.2.19 → codeplain-0.2.20}/tests/test_requires.py +0 -0
  191. {codeplain-0.2.19 → codeplain-0.2.20}/tests/test_resolve_config_file.py +0 -0
  192. {codeplain-0.2.19 → codeplain-0.2.20}/tui/__init__.py +0 -0
  193. {codeplain-0.2.19 → codeplain-0.2.20}/tui/components.py +0 -0
  194. {codeplain-0.2.19 → codeplain-0.2.20}/tui/models.py +0 -0
  195. {codeplain-0.2.19 → codeplain-0.2.20}/tui/plain2code_tui.py +0 -0
  196. {codeplain-0.2.19 → codeplain-0.2.20}/tui/spinner.py +0 -0
  197. {codeplain-0.2.19 → codeplain-0.2.20}/tui/state_handlers.py +0 -0
  198. {codeplain-0.2.19 → codeplain-0.2.20}/tui/styles.css +0 -0
  199. {codeplain-0.2.19 → codeplain-0.2.20}/tui/widget_helpers.py +0 -0
@@ -0,0 +1,64 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(gh pr:*)",
5
+ "Bash(git diff *)",
6
+ "Bash(mypy . --check-untyped-defs)",
7
+ "Bash(flake8 .)",
8
+ "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key pytest tests/test_git_utils.py -v --no-header)",
9
+ "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key python *)",
10
+ "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key pytest tests/_sandbox_check.py -v -s)",
11
+ "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key pytest tests/test_partial_rendering.py -v)",
12
+ "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key pytest tests/test_plain_modules.py -v)",
13
+ "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key pytest tests/ -v)",
14
+ "Bash(flake8 tests/)",
15
+ "Bash(git stash *)",
16
+ "Bash(flake8 tests/test_git_utils.py)",
17
+ "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key coverage run -m pytest tests/ -v)",
18
+ "Bash(.venv/bin/coverage run *)",
19
+ "Bash(.venv/bin/coverage report *)",
20
+ "Bash(.venv/bin/python -m coverage run -m pytest tests/)",
21
+ "Bash(.venv/bin/python -m coverage report)",
22
+ "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key pytest tests/)",
23
+ "Bash(flake8 tests/test_partial_rendering.py tests/test_plain_modules.py)",
24
+ "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key pytest tests/test_partial_rendering.py tests/test_plain_modules.py tests/test_git_utils.py)",
25
+ "Bash(pytest tests *)",
26
+ "Bash(pytest tests/test_git_utils.py::test_diff_without_previous_frid_and_no_base_folder -x -v)",
27
+ "Bash(git checkout *)",
28
+ "Bash(python -c ' *)",
29
+ "Bash(python3 -c ' *)",
30
+ "Bash(/opt/homebrew/opt/python@3.11/bin/python3.11 -c ' *)",
31
+ "Bash(pytest tests/test_git_utils.py -x -v)",
32
+ "Bash(pytest tests/test_git_utils.py -v)",
33
+ "Bash(pytest -x -v)",
34
+ "Bash(pytest tests/test_partial_rendering.py -v)",
35
+ "Bash(pytest -v)",
36
+ "Bash(pytest)",
37
+ "Bash(python -m pytest tests/test_partial_rendering.py -x -v)",
38
+ "Bash(python -m pytest -x -v)",
39
+ "Bash(python -m pytest tests/test_partial_rendering.py -v)",
40
+ "Bash(python -m pytest)",
41
+ "Bash(python -m pytest tests/test_plain_modules.py -q)",
42
+ "Bash(python3 -m pytest tests/test_plain_modules.py -q)",
43
+ "Bash(.venv/bin/pytest tests/test_plain_modules.py -q)",
44
+ "Bash(git -C /Users/zanjonke/Work/codeplain/codeplain log --oneline -5)",
45
+ "Bash(git -C /Users/zanjonke/Work/codeplain/codeplain branch --show-current)",
46
+ "Bash(python -m pytest tests/test_git_utils.py::test_get_last_finished_frid_empty_repo -x)",
47
+ "Bash(python3 -m pytest tests/test_git_utils.py::test_get_last_finished_frid_empty_repo -x)",
48
+ "Bash(.venv/bin/python -m pytest tests/test_git_utils.py::test_get_last_finished_frid_empty_repo -x)",
49
+ "Bash(.venv/bin/python -m pytest tests/test_git_utils.py::test_get_last_finished_frid_without_module_name tests/test_git_utils.py::test_get_last_finished_frid_empty_repo -x)",
50
+ "Bash(.venv/bin/python -m pytest tests/test_git_utils.py)",
51
+ "Bash(python -m pytest tests/test_partial_rendering.py -x)",
52
+ "Bash(python3 -m pytest tests/test_partial_rendering.py)",
53
+ "Bash(/Users/zanjonke/Work/codeplain/codeplain/.venv/bin/python -m pytest tests/test_partial_rendering.py)",
54
+ "Bash(/Users/zanjonke/Work/codeplain/codeplain/.venv/bin/python -m pytest tests/test_plain_modules.py tests/test_partial_rendering.py)",
55
+ "Bash(git *)",
56
+ "Bash(python -m pytest tests/test_plain_modules.py -x --tb=short)",
57
+ "Bash(python3 -m pytest tests/test_plain_modules.py -x --tb=short)",
58
+ "Bash(/Users/zanjonke/Work/codeplain/codeplain/venv/bin/python -m pytest tests/test_plain_modules.py --tb=short)",
59
+ "Bash(/Users/zanjonke/Work/codeplain/codeplain/.venv/bin/python -m pytest tests/test_plain_modules.py --tb=short)",
60
+ "Bash(/Users/zanjonke/Work/codeplain/codeplain/.venv/bin/python -m pytest tests/test_partial_rendering.py tests/test_git_utils.py --tb=short)",
61
+ "Bash(.venv/bin/python *)"
62
+ ]
63
+ }
64
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codeplain
3
- Version: 0.2.19
3
+ Version: 0.2.20
4
4
  Summary: Transform plain language specifications into working code
5
5
  License-File: LICENSE
6
6
  Classifier: Environment :: Console
@@ -0,0 +1 @@
1
+ __version__ = "0.2.20"
@@ -33,18 +33,29 @@ class MemoryManager:
33
33
  ):
34
34
 
35
35
  current_conformance_tests_issue_frid = render_context.conformance_tests_running_context.current_testing_frid
36
+ current_conformance_tests_issue_module = (
37
+ render_context.conformance_tests_running_context.current_testing_module_name
38
+ )
36
39
  old_conformance_tests_issue_frid = (
37
40
  render_context.conformance_tests_running_context.previous_conformance_tests_issue_frid
38
41
  )
42
+ old_conformance_tests_issue_module = (
43
+ render_context.conformance_tests_running_context.previous_conformance_tests_issue_module
44
+ )
39
45
 
40
46
  old_conformance_tests_issue = (
41
47
  render_context.conformance_tests_running_context.previous_conformance_tests_issue_old
42
48
  )
43
49
 
44
50
  is_first_time_running_conformance_tests = (
45
- old_conformance_tests_issue_frid is None or old_conformance_tests_issue_frid == ""
51
+ old_conformance_tests_issue_frid is None
52
+ or old_conformance_tests_issue_frid == ""
53
+ or old_conformance_tests_issue_module != current_conformance_tests_issue_module
54
+ )
55
+ is_same_frid_as_previous_failing_test = (
56
+ current_conformance_tests_issue_frid == old_conformance_tests_issue_frid
57
+ and current_conformance_tests_issue_module == old_conformance_tests_issue_module
46
58
  )
47
- is_same_frid_as_previous_failing_test = current_conformance_tests_issue_frid == old_conformance_tests_issue_frid
48
59
  is_conformance_test_failed = exit_code != CONFORMANCE_TESTS_SUCCESS_EXIT_CODE
49
60
 
50
61
  should_create_memory = not is_first_time_running_conformance_tests and (
@@ -3,6 +3,7 @@ from typing import Any
3
3
  from plain2code_console import console
4
4
  from render_machine.actions.base_action import BaseAction
5
5
  from render_machine.render_context import RenderContext
6
+ from render_machine.render_types import RenderError
6
7
 
7
8
 
8
9
  class ExitWithError(BaseAction):
@@ -25,4 +26,9 @@ class ExitWithError(BaseAction):
25
26
  if render_context.run_state.render_id is not None:
26
27
  console.info(f"Render ID: {render_context.run_state.render_id}")
27
28
 
28
- return self.SUCCESSFUL_OUTCOME, previous_action_payload
29
+ return (
30
+ self.SUCCESSFUL_OUTCOME,
31
+ RenderError.encode(
32
+ message=render_context.last_error_message or "Unknown error",
33
+ ).to_payload(),
34
+ )
@@ -30,6 +30,9 @@ class FixConformanceTest(BaseAction):
30
30
  render_context.conformance_tests_running_context.previous_conformance_tests_issue_frid = (
31
31
  render_context.conformance_tests_running_context.current_testing_frid
32
32
  )
33
+ render_context.conformance_tests_running_context.previous_conformance_tests_issue_module = (
34
+ render_context.conformance_tests_running_context.current_testing_module_name
35
+ )
33
36
 
34
37
  if render_context.conformance_tests_running_context.current_testing_frid == render_context.frid_context.frid:
35
38
  console_message = f"Fixing conformance test for functionality {render_context.conformance_tests_running_context.current_testing_frid} in module {render_context.conformance_tests_running_context.current_testing_module_name}."
@@ -58,8 +58,6 @@ class CodeRenderer:
58
58
  )
59
59
  previous_state = deepcopy(self.render_context.state)
60
60
  self.render_context.script_execution_history.should_update_script_outputs = False
61
- # Reset error message at start of each iteration to prevent stale data
62
- self.render_context.last_error_message = None
63
61
 
64
62
  outcome, previous_action_payload = self.action_map[self.render_context.state].execute(
65
63
  self.render_context, previous_action_payload
@@ -436,7 +436,7 @@ class RenderContext:
436
436
  self.conformance_tests_running_context.conformance_tests_render_attempts
437
437
  >= MAX_CONFORMANCE_TEST_RERENDER_ATTEMPTS
438
438
  ):
439
- error_msg = f"We've already tried to fix the issue by recreating the conformance tests but tests still fail. Please fix the issues manually. FRID: {self.frid_context.frid}, Render ID: {self.run_state.render_id}"
439
+ error_msg = f"The renderer was unable to produce an implementation that passes conformance tests for functionality '{self.frid_context.frid}' after many attempts. Please review and rewrite the specification. (Render ID: {self.run_state.render_id})"
440
440
  self.dispatch_error(error_msg)
441
441
  else:
442
442
  self.conformance_tests_running_context.regenerating_conformance_tests = True
@@ -49,6 +49,7 @@ class ConformanceTestsRunningContext:
49
49
  self.current_testing_frid_high_level_implementation_plan: Optional[str] = None
50
50
  self.previous_conformance_tests_issue_old: Optional[str] = None
51
51
  self.previous_conformance_tests_issue_frid: Optional[str] = None
52
+ self.previous_conformance_tests_issue_module: Optional[str] = None
52
53
  self.code_diff_files: Optional[dict[str, str]] = None
53
54
 
54
55
  def get_conformance_tests_json(self, module_name: str) -> dict:
@@ -1,39 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Bash(gh pr:*)",
5
- "Bash(git diff *)",
6
- "Bash(mypy . --check-untyped-defs)",
7
- "Bash(flake8 .)",
8
- "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key pytest tests/test_git_utils.py -v --no-header)",
9
- "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key python *)",
10
- "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key pytest tests/_sandbox_check.py -v -s)",
11
- "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key pytest tests/test_partial_rendering.py -v)",
12
- "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key pytest tests/test_plain_modules.py -v)",
13
- "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key pytest tests/ -v)",
14
- "Bash(flake8 tests/)",
15
- "Bash(git stash *)",
16
- "Bash(flake8 tests/test_git_utils.py)",
17
- "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key coverage run -m pytest tests/ -v)",
18
- "Bash(.venv/bin/coverage run *)",
19
- "Bash(.venv/bin/coverage report *)",
20
- "Bash(.venv/bin/python -m coverage run -m pytest tests/)",
21
- "Bash(.venv/bin/python -m coverage report)",
22
- "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key pytest tests/)",
23
- "Bash(flake8 tests/test_partial_rendering.py tests/test_plain_modules.py)",
24
- "Bash(MASTER_KEY=test-master-key GOOGLE_API_KEY=test-google-api-key pytest tests/test_partial_rendering.py tests/test_plain_modules.py tests/test_git_utils.py)",
25
- "Bash(pytest tests *)",
26
- "Bash(pytest tests/test_git_utils.py::test_diff_without_previous_frid_and_no_base_folder -x -v)",
27
- "Bash(git checkout *)",
28
- "Bash(python -c ' *)",
29
- "Bash(python3 -c ' *)",
30
- "Bash(/opt/homebrew/opt/python@3.11/bin/python3.11 -c ' *)",
31
- "Bash(pytest tests/test_git_utils.py -x -v)",
32
- "Bash(pytest tests/test_git_utils.py -v)",
33
- "Bash(pytest -x -v)",
34
- "Bash(pytest tests/test_partial_rendering.py -v)",
35
- "Bash(pytest -v)",
36
- "Bash(pytest)"
37
- ]
38
- }
39
- }
@@ -1 +0,0 @@
1
- __version__ = "0.2.19"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes