ara-cli 0.1.9.57__tar.gz → 0.1.9.59__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.
- ara_cli-0.1.9.59/PKG-INFO +15 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_creator.py +5 -1
- ara_cli-0.1.9.59/ara_cli/artefact_renamer.py +93 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_file_creator.py +3 -1
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/version.py +1 -1
- ara_cli-0.1.9.59/ara_cli.egg-info/PKG-INFO +15 -0
- ara_cli-0.1.9.57/PKG-INFO +0 -3
- ara_cli-0.1.9.57/ara_cli/artefact_renamer.py +0 -127
- ara_cli-0.1.9.57/ara_cli.egg-info/PKG-INFO +0 -3
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/MANIFEST.in +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/README.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/__init__.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/__main__.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/analyse_artefacts.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/ara_command_action.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/ara_command_parser.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/ara_config.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_deleter.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_fuzzy_search.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_link_updater.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_lister.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_models/artefact_load.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_models/artefact_mapping.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_models/artefact_model.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_models/artefact_templates.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_models/businessgoal_artefact_model.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_models/capability_artefact_model.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_models/epic_artefact_model.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_models/example_artefact_model.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_models/feature_artefact_model.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_models/issue_artefact_model.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_models/keyfeature_artefact_model.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_models/task_artefact_model.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_models/userstory_artefact_model.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_models/vision_artefact_model.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_reader.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_scan.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/chat.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/classifier.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/codefusionretriever.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/codehierachieretriever.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/commandline_completer.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/directory_navigator.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/file_classifier.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/file_lister.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/filename_validator.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/list_filter.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/output_suppressor.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/prompt_chat.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/prompt_extractor.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/prompt_handler.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/prompt_rag.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/run_file_lister.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tag_extractor.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/template_manager.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/agile.artefacts +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/blueprints/complete_pytest_unittest.blueprint.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/blueprints/empty.blueprint.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/blueprints/task_todo_list_C4_architecture_analysis.blueprint.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/blueprints/task_todo_list_implement_feature_BDD_way.blueprint.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/architecture_C4_analysis.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/architecture_radon_cc_score.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/architecture_radon_halstead_v.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/architecture_radon_maintainability_score.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/artefact_classification.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/artefact_extension.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/artefact_formulation.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/behave_step_generation.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/code_generation_complex.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/code_generation_simple.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/empty.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/error_fixing.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/feature_file_update.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/feature_formulation.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/js_code_generation_simple.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/refactoring.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/refactoring_analysis.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/reverse_engineer_feature_file.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/reverse_engineer_program_flow.commands.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/classify_task.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/empty.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/error_fixing.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/feature_fix_steps_for_scenario.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/feature_formulation.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/feature_reverse_formulation_from_code.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/feature_scenario_implementation.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/feature_scenario_implementation_update.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/feature_scenario_outline_extension.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/feature_update_formulation.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/fibonacci_example_implementation.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/js_implementation_from_task_description.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/js_steps_implementation.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/python_cli_implementation_with_test.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/python_code_understanding.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/task_implementation.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/task_prompt_control_by_status.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/task_stepwise_implementation_by_number.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/task_stepwise_implementation_by_status.intention.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/rules/architecture_analyst.rules.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/rules/code_analyst.rules.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/rules/empty.rules.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/rules/error_analyst.rules.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/rules/gherkin_expert.rules.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/rules/js_expert_developer.rules.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/rules/product_owner.rules.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/rules/python_behave.rules.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/rules/python_developer.rules.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/specification_breakdown_files/template.concept.exploration.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/specification_breakdown_files/template.concept.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/specification_breakdown_files/template.customer.exploration.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/specification_breakdown_files/template.customer.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/specification_breakdown_files/template.persona.exploration.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/specification_breakdown_files/template.persona.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/specification_breakdown_files/template.step.exploration.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/specification_breakdown_files/template.step.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/specification_breakdown_files/template.technology.exploration.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/specification_breakdown_files/template.technology.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.businessgoal +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.businessgoal.prompt_log.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.capability +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.capability.prompt_log.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.epic +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.epic.prompt_log.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.example +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.example.prompt_log.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.feature +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.feature.prompt_log.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.issue +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.issue.prompt_log.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.keyfeature +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.keyfeature.prompt_log.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.steps.prompt_log.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.task +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.task.prompt_log.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.userstory +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.userstory.prompt_log.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.vision +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/template.vision.prompt_log.md +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/__init__.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_ara_command_action.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_ara_config.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_artefact_fuzzy_search.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_artefact_link_updater.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_artefact_lister.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_artefact_reader.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_artefact_renamer.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_artefact_scan.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_chat.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_classifier.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_directory_navigator.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_file_classifier.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_file_lister.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_list_filter.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_tag_extractor.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_template_manager.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/tests/test_update_config_prompt.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/update_config_prompt.py +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli.egg-info/SOURCES.txt +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli.egg-info/dependency_links.txt +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli.egg-info/entry_points.txt +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli.egg-info/requires.txt +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli.egg-info/top_level.txt +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/setup.cfg +0 -0
- {ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/setup.py +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ara_cli
|
|
3
|
+
Version: 0.1.9.59
|
|
4
|
+
Requires-Dist: litellm
|
|
5
|
+
Requires-Dist: llama-index
|
|
6
|
+
Requires-Dist: llama-index-llms-openai
|
|
7
|
+
Requires-Dist: llama-index-retrievers-bm25
|
|
8
|
+
Requires-Dist: openai
|
|
9
|
+
Requires-Dist: markdown-it-py
|
|
10
|
+
Requires-Dist: json-repair
|
|
11
|
+
Requires-Dist: argparse
|
|
12
|
+
Requires-Dist: argcomplete
|
|
13
|
+
Requires-Dist: cmd2>=2.5
|
|
14
|
+
Requires-Dist: pydantic
|
|
15
|
+
Dynamic: requires-dist
|
|
@@ -7,7 +7,7 @@ from ara_cli.artefact_models.artefact_model import Artefact
|
|
|
7
7
|
from ara_cli.artefact_models.artefact_templates import template_artefact_of_type
|
|
8
8
|
from ara_cli.artefact_fuzzy_search import suggest_close_name_matches
|
|
9
9
|
from pathlib import Path
|
|
10
|
-
from shutil import copyfile
|
|
10
|
+
from shutil import copyfile, rmtree
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class ArtefactCreator:
|
|
@@ -104,6 +104,9 @@ class ArtefactCreator:
|
|
|
104
104
|
file_exists = self.file_system.path.exists(file_path)
|
|
105
105
|
dir_exists = self.file_system.path.exists(dir_path)
|
|
106
106
|
|
|
107
|
+
if dir_exists and not os.listdir(dir_path):
|
|
108
|
+
dir_exists = False
|
|
109
|
+
|
|
107
110
|
if not self.handle_existing_files(file_exists, dir_exists):
|
|
108
111
|
return
|
|
109
112
|
|
|
@@ -116,6 +119,7 @@ class ArtefactCreator:
|
|
|
116
119
|
)
|
|
117
120
|
|
|
118
121
|
artefact_content = artefact.serialize()
|
|
122
|
+
rmtree(dir_path)
|
|
119
123
|
os.makedirs(dir_path, exist_ok=True)
|
|
120
124
|
with open(file_path, 'w') as artefact_file:
|
|
121
125
|
artefact_file.write(artefact_content)
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from functools import lru_cache
|
|
3
|
+
from ara_cli.classifier import Classifier
|
|
4
|
+
from ara_cli.artefact_link_updater import ArtefactLinkUpdater
|
|
5
|
+
from ara_cli.template_manager import DirectoryNavigator
|
|
6
|
+
import re
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ArtefactRenamer:
|
|
10
|
+
def __init__(self, file_system=None):
|
|
11
|
+
self.file_system = file_system or os
|
|
12
|
+
self.link_updater = ArtefactLinkUpdater()
|
|
13
|
+
|
|
14
|
+
@lru_cache(maxsize=None)
|
|
15
|
+
def navigate_to_target(self) -> str:
|
|
16
|
+
navigator = DirectoryNavigator()
|
|
17
|
+
original_directory = navigator.navigate_to_target()
|
|
18
|
+
return original_directory
|
|
19
|
+
|
|
20
|
+
@lru_cache(maxsize=None)
|
|
21
|
+
def compile_pattern(self, pattern):
|
|
22
|
+
return re.compile(pattern)
|
|
23
|
+
|
|
24
|
+
def rename(self, old_name, new_name, classifier):
|
|
25
|
+
original_directory = self.navigate_to_target()
|
|
26
|
+
|
|
27
|
+
if not new_name:
|
|
28
|
+
raise ValueError("New name must be provided for renaming.")
|
|
29
|
+
|
|
30
|
+
if not Classifier.is_valid_classifier(classifier):
|
|
31
|
+
raise ValueError("Invalid classifier provided. Please provide a valid classifier.")
|
|
32
|
+
|
|
33
|
+
sub_directory = Classifier.get_sub_directory(classifier)
|
|
34
|
+
old_file_path = self.file_system.path.join(sub_directory, f"{old_name}.{classifier}")
|
|
35
|
+
new_file_path = self.file_system.path.join(sub_directory, f"{new_name}.{classifier}")
|
|
36
|
+
|
|
37
|
+
old_dir_path = self.file_system.path.join(sub_directory, f"{old_name}.data")
|
|
38
|
+
new_dir_path = self.file_system.path.join(sub_directory, f"{new_name}.data")
|
|
39
|
+
|
|
40
|
+
old_dir_exists = self.file_system.path.exists(old_dir_path)
|
|
41
|
+
|
|
42
|
+
# Check if the original file exists
|
|
43
|
+
if not self.file_system.path.exists(old_file_path):
|
|
44
|
+
raise FileNotFoundError(f"The file {old_file_path} does not exist.")
|
|
45
|
+
|
|
46
|
+
# Check if the new file name and directory already exist
|
|
47
|
+
if self.file_system.path.exists(new_file_path):
|
|
48
|
+
raise FileExistsError(f"The new file name {new_file_path} already exists.")
|
|
49
|
+
if self.file_system.path.exists(new_dir_path):
|
|
50
|
+
raise FileExistsError(f"The new directory name {new_dir_path} already exists.")
|
|
51
|
+
|
|
52
|
+
# Perform the renaming of the file and directory
|
|
53
|
+
self.file_system.rename(old_file_path, new_file_path)
|
|
54
|
+
print(f"Renamed file: ara/{old_file_path} to ara/{new_file_path}")
|
|
55
|
+
if old_dir_exists:
|
|
56
|
+
self.file_system.rename(old_dir_path, new_dir_path)
|
|
57
|
+
print(f"Renamed directory: ara/{old_dir_path} to ara/{new_dir_path}")
|
|
58
|
+
|
|
59
|
+
# Update the title within the artefact file
|
|
60
|
+
self._update_title_in_artefact(new_file_path, new_name, classifier)
|
|
61
|
+
|
|
62
|
+
# Update links in related artefact files
|
|
63
|
+
self.link_updater.update_links_in_related_artefacts(old_name, new_name)
|
|
64
|
+
|
|
65
|
+
os.chdir(original_directory)
|
|
66
|
+
|
|
67
|
+
def _update_title_in_artefact(self, artefact_path, new_title, classifier):
|
|
68
|
+
# Format the new title: replace underscores with spaces
|
|
69
|
+
formatted_new_title = new_title.replace('_', ' ')
|
|
70
|
+
|
|
71
|
+
# Get the artefact title prefix using the classifier
|
|
72
|
+
title_prefix = Classifier.get_artefact_title(classifier.lower())
|
|
73
|
+
|
|
74
|
+
if not title_prefix:
|
|
75
|
+
raise ValueError(f"Invalid classifier: {classifier}")
|
|
76
|
+
|
|
77
|
+
# Read the file content
|
|
78
|
+
with open(artefact_path, 'r') as file:
|
|
79
|
+
content = file.read()
|
|
80
|
+
|
|
81
|
+
# Find the old title line
|
|
82
|
+
old_title_line = next((line for line in content.split('\n') if self.compile_pattern(f"^{title_prefix}").match(line)), None)
|
|
83
|
+
if old_title_line is None:
|
|
84
|
+
raise ValueError(f"The artefact file does not contain the title prefix '{title_prefix}'.")
|
|
85
|
+
|
|
86
|
+
# Construct the new title line without adding an extra colon
|
|
87
|
+
new_title_line = f"{title_prefix}: {formatted_new_title}"
|
|
88
|
+
# Replace the old title line with the new title line in the content
|
|
89
|
+
new_content = content.replace(old_title_line, new_title_line, 1)
|
|
90
|
+
|
|
91
|
+
# Write the updated content back to the file
|
|
92
|
+
with open(artefact_path, 'w') as file:
|
|
93
|
+
file.write(new_content)
|
|
@@ -25,7 +25,8 @@ def test_run_with_invalid_classifier_prints_error_message(capfd):
|
|
|
25
25
|
|
|
26
26
|
@patch("ara_cli.artefact_creator.input", return_value="n")
|
|
27
27
|
@patch("ara_cli.artefact_creator.os.path.exists", return_value=True)
|
|
28
|
-
|
|
28
|
+
@patch("ara_cli.artefact_creator.os.listdir", return_value=["data_folder_content"])
|
|
29
|
+
def test_run_with_existing_file_does_not_overwrite(mock_input, mock_exists, mock_list, capfd):
|
|
29
30
|
fc = ArtefactCreator()
|
|
30
31
|
fc.run("filename", "vision")
|
|
31
32
|
|
|
@@ -42,6 +43,7 @@ def test_create_artefact_exploration_success():
|
|
|
42
43
|
creator.create_artefact_prompt_files("./dest", "./source", "sample")
|
|
43
44
|
|
|
44
45
|
|
|
46
|
+
|
|
45
47
|
def test_create_artefact_exploration_source_not_found():
|
|
46
48
|
creator = ArtefactCreator()
|
|
47
49
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# version.py
|
|
2
|
-
__version__ = "0.1.9.
|
|
2
|
+
__version__ = "0.1.9.59" # fith parameter like .0 for local install test purposes only. official numbers should be 4 digit numbers
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ara_cli
|
|
3
|
+
Version: 0.1.9.59
|
|
4
|
+
Requires-Dist: litellm
|
|
5
|
+
Requires-Dist: llama-index
|
|
6
|
+
Requires-Dist: llama-index-llms-openai
|
|
7
|
+
Requires-Dist: llama-index-retrievers-bm25
|
|
8
|
+
Requires-Dist: openai
|
|
9
|
+
Requires-Dist: markdown-it-py
|
|
10
|
+
Requires-Dist: json-repair
|
|
11
|
+
Requires-Dist: argparse
|
|
12
|
+
Requires-Dist: argcomplete
|
|
13
|
+
Requires-Dist: cmd2>=2.5
|
|
14
|
+
Requires-Dist: pydantic
|
|
15
|
+
Dynamic: requires-dist
|
ara_cli-0.1.9.57/PKG-INFO
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
from functools import lru_cache
|
|
3
|
-
from ara_cli.classifier import Classifier
|
|
4
|
-
from ara_cli.artefact_link_updater import ArtefactLinkUpdater
|
|
5
|
-
from ara_cli.artefact_reader import ArtefactReader
|
|
6
|
-
from ara_cli.artefact_models.artefact_model import Contribution
|
|
7
|
-
from ara_cli.template_manager import DirectoryNavigator
|
|
8
|
-
from ara_cli.artefact_fuzzy_search import suggest_close_name_matches
|
|
9
|
-
import re
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class ArtefactRenamer:
|
|
13
|
-
def __init__(self, file_system=None):
|
|
14
|
-
self.file_system = file_system or os
|
|
15
|
-
self.link_updater = ArtefactLinkUpdater()
|
|
16
|
-
|
|
17
|
-
@lru_cache(maxsize=None)
|
|
18
|
-
def navigate_to_target(self) -> str:
|
|
19
|
-
navigator = DirectoryNavigator()
|
|
20
|
-
original_directory = navigator.navigate_to_target()
|
|
21
|
-
return original_directory
|
|
22
|
-
|
|
23
|
-
@lru_cache(maxsize=None)
|
|
24
|
-
def compile_pattern(self, pattern):
|
|
25
|
-
return re.compile(pattern)
|
|
26
|
-
|
|
27
|
-
def rename(self, old_name, new_name, classifier):
|
|
28
|
-
if not new_name:
|
|
29
|
-
raise ValueError("New name must be provided for renaming.")
|
|
30
|
-
if not Classifier.is_valid_classifier(classifier):
|
|
31
|
-
raise ValueError("Invalid classifier provided. Please provide a valid classifier.")
|
|
32
|
-
|
|
33
|
-
fs = self.file_system
|
|
34
|
-
original_directory = self.navigate_to_target()
|
|
35
|
-
original_directory = fs.path.abspath(original_directory)
|
|
36
|
-
|
|
37
|
-
classified_artefacts = ArtefactReader.read_artefacts()
|
|
38
|
-
|
|
39
|
-
artefacts_by_current_classifier = classified_artefacts.get(classifier, [])
|
|
40
|
-
matching_artefacts = list(filter(lambda a: a.title == old_name, artefacts_by_current_classifier))
|
|
41
|
-
|
|
42
|
-
if not matching_artefacts:
|
|
43
|
-
all_artefact_names = [artefact.title for artefact in artefacts_by_current_classifier]
|
|
44
|
-
suggest_close_name_matches(old_name, all_artefact_names)
|
|
45
|
-
return
|
|
46
|
-
|
|
47
|
-
matching_artefact = matching_artefacts[0]
|
|
48
|
-
|
|
49
|
-
old_file_path = matching_artefact.file_path
|
|
50
|
-
old_base_path = fs.path.dirname(old_file_path)
|
|
51
|
-
old_dir_path = f"{old_base_path}/{old_name}.data"
|
|
52
|
-
|
|
53
|
-
old_file_path_display = old_file_path.replace('./', 'ara/')
|
|
54
|
-
old_dir_path_display = old_dir_path.replace('./', 'ara/')
|
|
55
|
-
|
|
56
|
-
old_dir_exists = fs.path.exists(old_dir_path)
|
|
57
|
-
|
|
58
|
-
if not fs.path.exists(old_file_path):
|
|
59
|
-
raise FileNotFoundError(f"The file {old_file_path} does not exist.")
|
|
60
|
-
|
|
61
|
-
children_by_classifier = ArtefactReader.find_children(
|
|
62
|
-
artefact_name=old_name,
|
|
63
|
-
classifier=classifier,
|
|
64
|
-
classified_artefacts=classified_artefacts
|
|
65
|
-
)
|
|
66
|
-
|
|
67
|
-
matching_artefact.title = new_name
|
|
68
|
-
new_file_path = matching_artefact.file_path
|
|
69
|
-
new_base_path = fs.path.dirname(new_file_path)
|
|
70
|
-
new_dir_path = f"{new_base_path}/{new_name}.data"
|
|
71
|
-
if fs.path.exists(new_file_path):
|
|
72
|
-
raise FileExistsError(f"The new file name {new_file_path} already exists.")
|
|
73
|
-
if fs.path.exists(new_dir_path):
|
|
74
|
-
raise FileExistsError(f"The new directory name {new_dir_path} already exists.")
|
|
75
|
-
|
|
76
|
-
new_file_path_display = new_file_path.replace('./', 'ara/')
|
|
77
|
-
new_dir_path_display = new_dir_path.replace('./', 'ara/')
|
|
78
|
-
|
|
79
|
-
serialized_artefact = matching_artefact.serialize()
|
|
80
|
-
with open(matching_artefact.file_path, 'w') as file:
|
|
81
|
-
file.write(serialized_artefact)
|
|
82
|
-
fs.remove(old_file_path)
|
|
83
|
-
|
|
84
|
-
print(f"Renamed file: {old_file_path_display} to {new_file_path_display}")
|
|
85
|
-
|
|
86
|
-
if old_dir_exists:
|
|
87
|
-
fs.rename(old_dir_path, new_dir_path)
|
|
88
|
-
print(f"Renamed directory: {old_dir_path_display} to {new_dir_path_display}")
|
|
89
|
-
|
|
90
|
-
for children in children_by_classifier.values():
|
|
91
|
-
for child in children:
|
|
92
|
-
contribution = child.contribution
|
|
93
|
-
contribution.artefact_name = new_name
|
|
94
|
-
child.contribution = contribution
|
|
95
|
-
serialized_artefact = child.serialize()
|
|
96
|
-
with open(child.file_path, 'w') as file:
|
|
97
|
-
file.write(serialized_artefact)
|
|
98
|
-
|
|
99
|
-
fs.chdir(original_directory)
|
|
100
|
-
|
|
101
|
-
def _update_title_in_artefact(self, artefact_path, new_title, classifier):
|
|
102
|
-
# Format the new title: replace underscores with spaces
|
|
103
|
-
formatted_new_title = new_title.replace('_', ' ')
|
|
104
|
-
|
|
105
|
-
# Get the artefact title prefix using the classifier
|
|
106
|
-
title_prefix = Classifier.get_artefact_title(classifier.lower())
|
|
107
|
-
|
|
108
|
-
if not title_prefix:
|
|
109
|
-
raise ValueError(f"Invalid classifier: {classifier}")
|
|
110
|
-
|
|
111
|
-
# Read the file content
|
|
112
|
-
with open(artefact_path, 'r') as file:
|
|
113
|
-
content = file.read()
|
|
114
|
-
|
|
115
|
-
# Find the old title line
|
|
116
|
-
old_title_line = next((line for line in content.split('\n') if self.compile_pattern(f"^{title_prefix}").match(line)), None)
|
|
117
|
-
if old_title_line is None:
|
|
118
|
-
raise ValueError(f"The artefact file does not contain the title prefix '{title_prefix}'.")
|
|
119
|
-
|
|
120
|
-
# Construct the new title line without adding an extra colon
|
|
121
|
-
new_title_line = f"{title_prefix}: {formatted_new_title}"
|
|
122
|
-
# Replace the old title line with the new title line in the content
|
|
123
|
-
new_content = content.replace(old_title_line, new_title_line, 1)
|
|
124
|
-
|
|
125
|
-
# Write the updated content back to the file
|
|
126
|
-
with open(artefact_path, 'w') as file:
|
|
127
|
-
file.write(new_content)
|
|
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
|
{ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/artefact_models/businessgoal_artefact_model.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
|
|
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
|
{ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/blueprints/empty.blueprint.md
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
|
{ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/commands/empty.commands.md
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
|
{ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/intentions/empty.intention.md
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
|
{ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/rules/code_analyst.rules.md
RENAMED
|
File without changes
|
|
File without changes
|
{ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/rules/error_analyst.rules.md
RENAMED
|
File without changes
|
{ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/rules/gherkin_expert.rules.md
RENAMED
|
File without changes
|
|
File without changes
|
{ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/rules/product_owner.rules.md
RENAMED
|
File without changes
|
{ara_cli-0.1.9.57 → ara_cli-0.1.9.59}/ara_cli/templates/prompt-modules/rules/python_behave.rules.md
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
|
|
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
|