codeplain 0.3.10.dev4__tar.gz → 0.3.10.dev5__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.
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/PKG-INFO +1 -1
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/plain2code.py +15 -0
- codeplain-0.3.10.dev5/tests/test_dry_run_link_validation.py +60 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/.claude/settings.json +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/.flake8 +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/.github/dependabot.yml +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/.github/workflows/e2e.yml +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/.github/workflows/lint-and-test.yml +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/.github/workflows/lint-powershell.yml +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/.github/workflows/nofity-slack-on-main-merge.yml +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/.github/workflows/publish-dev-to-pypi.yml +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/.github/workflows/publish-install-script.yml +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/.github/workflows/publish-to-pypi.yml +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/.gitignore +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/.vscode/launch.json +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/.vscode/settings.json +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/CLAUDE.md +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/CONTRIBUTING.md +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/LICENSE +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/README.md +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/change_detection.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/cli_output/__init__.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/cli_output/dry_run.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/cli_output/render_summary.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/cli_output/status.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/codeplain_REST_api.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/concept_utils.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/config/__init__.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/config/system_config.yaml +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/conformance_fix_journal.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/diff_utils.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/docs/generate_cli.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/docs/plain2code_cli.md +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/docs/starting_a_plain_project_from_scratch.md +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/event_bus.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_golang/config.yaml +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_golang/harness_tests/hello_world_test.go +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_golang/hello_world_golang.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_golang/run.sh +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_python/config.yaml +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_python/harness_tests/hello_world_display/test_hello_world.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_python/hello_world_python.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_python/run.sh +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_react/config.yaml +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_react/harness_tests/hello_world_display/cypress/e2e/hello_world.cy.ts +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_react/harness_tests/hello_world_display/cypress/support/e2e.ts +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_react/harness_tests/hello_world_display/cypress.config.ts +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_react/harness_tests/hello_world_display/package.json +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_react/harness_tests/hello_world_display/tsconfig.json +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_react/hello_world_react.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_react/run.sh +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/run.sh +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/file_utils.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/git_utils.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/install/bash/examples.sh +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/install/bash/install.sh +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/install/bash/walkthrough.sh +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/install/powershell/examples.ps1 +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/install/powershell/install.ps1 +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/install/powershell/walkthrough.ps1 +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/memory_management.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/metadata_utils.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/module_renderer.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/partial_rendering.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/path_resolution.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/plain2code_arguments.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/plain2code_cli.md +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/plain2code_console.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/plain2code_events.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/plain2code_exceptions.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/plain2code_logger.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/plain2code_nodes.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/plain2code_read_config.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/plain2code_state.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/plain2code_telemetry.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/plain2code_utils.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/plain_file.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/plain_modules.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/plain_spec.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/pyproject.toml +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/pytest.ini +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/__init__.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/analyze_specification_ambiguity.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/base_action.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/commit_conformance_tests_changes.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/commit_implementation_code_changes.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/create_dist.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/distill_conformance_test_memory.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/exit_with_error.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/finish_functional_requirement.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/fix_conformance_test.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/fix_unit_tests.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/prepare_repositories.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/prepare_testing_environment.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/refactor_code.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/render_conformance_tests.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/render_functional_requirement.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/run_conformance_tests.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/run_unit_tests.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/summarize_conformance_tests.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/code_renderer.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/conformance_tests.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/implementation_code_helpers.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/render_context.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/render_types.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/render_utils.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/state_machine_config.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/states.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/triggers.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/requirements.txt +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/resources/codeplain_overview.png +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/resources/plain_example.png +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/standard_template_library/golang-console-app-template.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/standard_template_library/python-console-app-template.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/standard_template_library/typescript-react-app-boilerplate.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/standard_template_library/typescript-react-app-template.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/system_config.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_conformance_tests_cypress.ps1 +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_conformance_tests_cypress.sh +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_conformance_tests_golang.ps1 +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_conformance_tests_golang.sh +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_conformance_tests_python.ps1 +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_conformance_tests_python.sh +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_unittests_flutter.ps1 +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_unittests_flutter.sh +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_unittests_golang.ps1 +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_unittests_golang.sh +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_unittests_python.ps1 +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_unittests_python.sh +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_unittests_react.ps1 +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_unittests_react.sh +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/__init__.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/conftest.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/acceptance_tests_warning/main_requiring_acceptance_tests.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/acceptance_tests_warning/required_with_acceptance_tests.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/imports/circular_imports_1.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/imports/circular_imports_2.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/imports/circular_imports_main.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/imports/diamond_import_1.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/imports/diamond_import_2.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/imports/diamond_import_common.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/imports/diamond_imports_main.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/imports/import_with_functionalities.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/imports/imports_module_with_functionalities.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/imports/non_existent_import.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/partial_rendering/pr_code_var.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/partial_rendering/pr_implement.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/partial_rendering/pr_leaf.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/partial_rendering/pr_middle.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/partial_rendering/pr_root.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/partial_rendering/pr_solo.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfile/add_new_task_modal_specification.yaml +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfile/duplicate_specification_heading.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfile/empty_functional_specs_section.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfile/invalid_specification_order.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfile/missing_non_functional_requirements.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfile/no_functional_specs_section.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfile/plain_source_with_absolute_link.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfile/plain_source_with_url_link.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfile/task_list_ui_specification.yaml +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfile/task_manager_with_reference_links.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfile/without_non_functional_requirement.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/concept_validation_acceptance_tests.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/concept_validation_acceptance_tests_nondefined.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/concept_validation_defined_nondefined.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/concept_validation_defined_nondefined_2.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/concept_validation_definition.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/concept_validation_noconcepts.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/concept_validation_nonconcept.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/concept_validation_nondefined.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/concept_validation_redefinition.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/concept_validation_several_concepts.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/concept_validation_valid.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/exported_concepts.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/exported_concepts_base.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/exported_concepts_example.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/exported_concepts_missing.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/exported_concepts_missing_example.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/exported_concepts_nested.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/exported_concepts_nested_example.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/exported_concepts_transitive_example.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/exported_concepts_transitive_l1.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/exported_concepts_transitive_l2.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/plain_file_parser_with_comments.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/plain_file_with_comments_indented.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/regular_plain_source.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/required_concepts.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/required_concepts_defs.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/required_concepts_example.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/required_concepts_l1.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/required_concepts_l2.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/required_concepts_missing.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/required_concepts_module.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/required_concepts_partial.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/required_concepts_partial_duplicate.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/topological_sort.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/topological_sort_not_referenced.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/requires/circular_requires_main.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/requires/circular_requires_sub.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/requires/diamond_requires_1.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/requires/diamond_requires_2.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/requires/diamond_requires_common.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/requires/diamond_requires_main.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/requires/independent_requires_1.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/requires/independent_requires_2.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/requires/independent_requires_main.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/requires/non_existent_require.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/requires/normal_requires_1.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/requires/normal_requires_2.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/requires/normal_requires_common.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/requires/normal_requires_main.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/sample_base64_image.txt +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/simple.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/templates/block_level_include.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/templates/code_variables.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/templates/header.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/templates/implement.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/templates/implement_2.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/templates/template_include.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/templates/test_hardest_problem.plain +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/e2e/Dockerfile +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/e2e/conftest.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/e2e/test_hello_world_python.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/e2e/test_hello_world_python_windows.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_arg_provenance.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_change_detection.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_cli_output.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_conformance_fix_journal.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_console_log_styles.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_distill_conformance_test_memory.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_file_utils.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_folder_path_resolution.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_git_utils.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_headless_logging.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_imports.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_log_file_name_resolution.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_logging_config_path_resolution.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_partial_rendering.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_path_resolution.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_plain2code.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_plain2code_state.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_plain2code_utils.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_plain_modules.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_plainfile.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_plainfileparser.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_plainspec.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_prepare_repositories_layout.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_requires.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_resolve_config_file.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_script_path_resolution.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_system_config.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_telemetry.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_tui_usage.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/test_usage_summary.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tui/__init__.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tui/components.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tui/models.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tui/plain2code_tui.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tui/plain_module_render_choice_tui.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tui/spinner.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tui/state_handlers.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tui/styles.css +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tui/widget_helpers.py +0 -0
- {codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/usage_summary.py +0 -0
|
@@ -203,6 +203,15 @@ def warn_if_acceptance_tests_without_conformance_script(plain_module, args) -> N
|
|
|
203
203
|
)
|
|
204
204
|
|
|
205
205
|
|
|
206
|
+
def validate_linked_resources(plain_module) -> None:
|
|
207
|
+
"""Load every linked resource exactly the way rendering does, so dry-run
|
|
208
|
+
surfaces the same errors (binary file, missing file, oversized base64 blob)."""
|
|
209
|
+
for module in plain_module.all_required_modules + [plain_module]:
|
|
210
|
+
resources_list: list[dict] = []
|
|
211
|
+
plain_spec.collect_linked_resources(module.plain_source, resources_list, None, True)
|
|
212
|
+
file_utils.load_linked_resources(module.template_dirs, resources_list, module.module_name)
|
|
213
|
+
|
|
214
|
+
|
|
206
215
|
def render( # noqa: C901
|
|
207
216
|
plain_module: plain_modules.PlainModule,
|
|
208
217
|
args,
|
|
@@ -393,6 +402,12 @@ def main(): # noqa: C901
|
|
|
393
402
|
return
|
|
394
403
|
|
|
395
404
|
if args.dry_run:
|
|
405
|
+
try:
|
|
406
|
+
validate_linked_resources(plain_module)
|
|
407
|
+
except Exception as e:
|
|
408
|
+
console.error(f"Error: {str(e)}")
|
|
409
|
+
return
|
|
410
|
+
|
|
396
411
|
console.info("Printing dry run output...\n")
|
|
397
412
|
render_range = plain_spec.compute_render_range(args, plain_module.plain_source)
|
|
398
413
|
print_dry_run_output(plain_module.plain_source, render_range)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"""Regression tests for linked-resource validation during --dry-run.
|
|
2
|
+
|
|
3
|
+
A linked resource must be a single text-based file. Rendering rejects binary
|
|
4
|
+
targets in ``file_utils.load_linked_resources`` (a failed UTF-8 decode raises
|
|
5
|
+
``UnsupportedResourceType``); dry-run must surface the same errors through
|
|
6
|
+
``plain2code.validate_linked_resources``, which reuses that exact mechanism.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import pytest
|
|
10
|
+
|
|
11
|
+
from plain2code import validate_linked_resources
|
|
12
|
+
from plain2code_exceptions import UnsupportedResourceType
|
|
13
|
+
from plain_modules import PlainModule
|
|
14
|
+
|
|
15
|
+
PLAIN_TEMPLATE = """***definitions***
|
|
16
|
+
|
|
17
|
+
- :Widget: is an item managed by the application.
|
|
18
|
+
- Its icon is [the widget resource](resources/{resource_name}).
|
|
19
|
+
|
|
20
|
+
***implementation reqs***
|
|
21
|
+
|
|
22
|
+
- Implementation should be in Python.
|
|
23
|
+
|
|
24
|
+
***functional specs***
|
|
25
|
+
|
|
26
|
+
- A :Widget: can be created.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _make_module(tmp_path, monkeypatch, resource_name, resource_bytes):
|
|
31
|
+
resources_dir = tmp_path / "resources"
|
|
32
|
+
resources_dir.mkdir()
|
|
33
|
+
(resources_dir / resource_name).write_bytes(resource_bytes)
|
|
34
|
+
(tmp_path / "binlink.plain").write_text(PLAIN_TEMPLATE.format(resource_name=resource_name))
|
|
35
|
+
|
|
36
|
+
# Link targets are resolved relative to the current working directory at parse time.
|
|
37
|
+
monkeypatch.chdir(tmp_path)
|
|
38
|
+
return PlainModule("binlink.plain", str(tmp_path / "build"), [str(tmp_path)])
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def test_dry_run_validation_rejects_binary_linked_resource(tmp_path, monkeypatch):
|
|
42
|
+
module = _make_module(tmp_path, monkeypatch, "image.png", b"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\xff\xfe\xfd")
|
|
43
|
+
|
|
44
|
+
with pytest.raises(UnsupportedResourceType) as exc_info:
|
|
45
|
+
validate_linked_resources(module)
|
|
46
|
+
|
|
47
|
+
assert "resources/image.png" in str(exc_info.value)
|
|
48
|
+
assert "binary file" in str(exc_info.value)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def test_dry_run_validation_accepts_text_file_with_unusual_extension(tmp_path, monkeypatch):
|
|
52
|
+
module = _make_module(tmp_path, monkeypatch, "notes.xyz123", b"plain text content\n")
|
|
53
|
+
|
|
54
|
+
validate_linked_resources(module)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def test_dry_run_validation_accepts_empty_file(tmp_path, monkeypatch):
|
|
58
|
+
module = _make_module(tmp_path, monkeypatch, "empty.txt", b"")
|
|
59
|
+
|
|
60
|
+
validate_linked_resources(module)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/.github/workflows/nofity-slack-on-main-merge.yml
RENAMED
|
File without changes
|
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/.github/workflows/publish-install-script.yml
RENAMED
|
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
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/docs/starting_a_plain_project_from_scratch.md
RENAMED
|
File without changes
|
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_golang/config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_python/config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/examples/example_hello_world_react/config.yaml
RENAMED
|
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
|
|
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
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/fix_conformance_test.py
RENAMED
|
File without changes
|
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/prepare_repositories.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/render_conformance_tests.py
RENAMED
|
File without changes
|
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/actions/run_conformance_tests.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/render_machine/implementation_code_helpers.py
RENAMED
|
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
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_conformance_tests_cypress.ps1
RENAMED
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_conformance_tests_cypress.sh
RENAMED
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_conformance_tests_golang.ps1
RENAMED
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_conformance_tests_golang.sh
RENAMED
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_conformance_tests_python.ps1
RENAMED
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/test_scripts/run_conformance_tests_python.sh
RENAMED
|
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
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/imports/circular_imports_main.plain
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/imports/diamond_import_common.plain
RENAMED
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/imports/diamond_imports_main.plain
RENAMED
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/imports/import_with_functionalities.plain
RENAMED
|
File without changes
|
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/imports/non_existent_import.plain
RENAMED
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/partial_rendering/pr_code_var.plain
RENAMED
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/partial_rendering/pr_implement.plain
RENAMED
|
File without changes
|
|
File without changes
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/partial_rendering/pr_middle.plain
RENAMED
|
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
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfile/task_list_ui_specification.yaml
RENAMED
|
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
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/exported_concepts.plain
RENAMED
|
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
|
{codeplain-0.3.10.dev4 → codeplain-0.3.10.dev5}/tests/data/plainfileparser/required_concepts.plain
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|