osa_tool 0.3.0__tar.gz → 0.3.2__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.
- {osa_tool-0.3.0 → osa_tool-0.3.2}/PKG-INFO +73 -58
- {osa_tool-0.3.0 → osa_tool-0.3.2}/README.md +67 -49
- osa_tool-0.3.2/osa_tool/assets/notosans-sc-black.ttf +0 -0
- osa_tool-0.3.2/osa_tool/assets/notosans-sc-bold.ttf +0 -0
- osa_tool-0.3.2/osa_tool/assets/notosans-sc.ttf +0 -0
- osa_tool-0.3.2/osa_tool/config/locales/english.toml +168 -0
- osa_tool-0.3.2/osa_tool/config/locales/russian.toml +168 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/prompts/about_section.toml +2 -2
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/prompts/analysis.toml +4 -1
- osa_tool-0.3.2/osa_tool/config/prompts/paper_analysis.toml +10 -0
- osa_tool-0.3.0/osa_tool/config/prompts/vkr_scoring.toml → osa_tool-0.3.2/osa_tool/config/prompts/repository_quality.toml +0 -48
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/settings/arguments.yaml +137 -17
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/settings/config.toml +40 -7
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/settings.py +135 -8
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/templates/workflow/github_gitverse/pep8.yml +2 -1
- osa_tool-0.3.2/osa_tool/config/templates/workflow/github_gitverse/ruff.yml +18 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/templates/workflow/github_gitverse/unit_test.yml +4 -3
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/templates/workflow/gitlab/autopep8.yml +2 -1
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/templates/workflow/gitlab/black.yml +2 -1
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/templates/workflow/gitlab/fix_pep8.yml +2 -1
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/templates/workflow/gitlab/pep8.yml +2 -1
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/templates/workflow/gitlab/unit_test.yml +2 -1
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/core/git/git_agent.py +162 -7
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/core/git/metadata.py +3 -1
- osa_tool-0.3.2/osa_tool/core/llm/host.py +667 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/core/llm/llm.py +131 -4
- osa_tool-0.3.2/osa_tool/operations/analysis/artifacts.py +61 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/notebook_report/analyzer.py +6 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/notebook_report/models.py +5 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/notebook_report/report_maker.py +79 -41
- osa_tool-0.3.2/osa_tool/operations/analysis/paper_analysis/__init__.py +25 -0
- osa_tool-0.3.2/osa_tool/operations/analysis/paper_analysis/data_context.py +126 -0
- osa_tool-0.3.2/osa_tool/operations/analysis/paper_analysis/models.py +113 -0
- osa_tool-0.3.2/osa_tool/operations/analysis/paper_analysis/pipeline.py +415 -0
- osa_tool-0.3.2/osa_tool/operations/analysis/paper_analysis/verifier.py +366 -0
- osa_tool-0.3.2/osa_tool/operations/analysis/paper_claims/__init__.py +73 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/paper_claims/claim_deduplicator.py +7 -4
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/paper_claims/claim_extractor.py +9 -1
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/paper_claims/claim_validation.py +1 -1
- osa_tool-0.3.2/osa_tool/operations/analysis/paper_claims/io.py +162 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/paper_claims/marker_converter.py +16 -4
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/paper_claims/models.py +30 -5
- osa_tool-0.3.2/osa_tool/operations/analysis/paper_claims/openrouter_converter.py +251 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/paper_claims/pdf_splitter.py +24 -2
- osa_tool-0.3.2/osa_tool/operations/analysis/paper_claims/pipeline.py +249 -0
- osa_tool-0.3.2/osa_tool/operations/analysis/paper_claims/section_extractor.py +68 -0
- osa_tool-0.3.2/osa_tool/operations/analysis/repository_quality/__init__.py +3 -0
- {osa_tool-0.3.0/osa_tool/operations/analysis/vkr_scoring → osa_tool-0.3.2/osa_tool/operations/analysis/repository_quality}/checks.py +16 -16
- osa_tool-0.3.2/osa_tool/operations/analysis/repository_quality/repository_quality_scorer.py +116 -0
- {osa_tool-0.3.0/osa_tool/operations/analysis/vkr_scoring → osa_tool-0.3.2/osa_tool/operations/analysis/repository_quality}/scoring_engine.py +4 -15
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/repository_report/report_generator.py +9 -1
- osa_tool-0.3.2/osa_tool/operations/analysis/repository_report/report_localization.py +80 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/repository_report/report_maker.py +165 -59
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/docstring_generation/adapters/python_adapter.py +7 -1
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/docstring_generation/adapters/typescript_adapter.py +8 -3
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/docstring_generation/core/osa_parser.py +20 -2
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/docstring_generation/docgen.py +2 -2
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/docstring_generation/docstring_generation.py +0 -3
- osa_tool-0.3.2/osa_tool/operations/codebase/docstring_generation/insert/ts_js_augmentor.py +360 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/workflow_generation/workflow_executor.py +6 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/workflow_generation/workflow_generator.py +207 -16
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/about_generation/about_generator.py +1 -1
- osa_tool-0.3.2/osa_tool/operations/docs/community_docs_generation/codemeta_generator.py +212 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/community_docs_generation/docs_run.py +10 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/operations_catalog.py +2 -46
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/run.py +86 -34
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/run_chat.py +5 -3
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/scheduler/plan.py +7 -5
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/scheduler/scheduler.py +3 -1
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/scheduler/workflow_manager.py +8 -1
- osa_tool-0.3.2/osa_tool/tools/focused_cli.py +14 -0
- osa_tool-0.3.2/osa_tool/tools/paper_analysis/__init__.py +1 -0
- osa_tool-0.3.2/osa_tool/tools/paper_analysis/__main__.py +29 -0
- osa_tool-0.3.2/osa_tool/tools/paper_analysis/cli.py +203 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/tools/paper_claims/README.md +19 -6
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/tools/paper_claims/batch.py +32 -8
- osa_tool-0.3.2/osa_tool/tools/progress.py +39 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/tools/repository_analysis/scorecard.py +55 -26
- osa_tool-0.3.2/osa_tool/tools/repository_quality/__init__.py +1 -0
- osa_tool-0.3.2/osa_tool/tools/repository_quality/__main__.py +100 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/ui/plan_editor.py +181 -35
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/utils/arguments_parser.py +64 -1
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/utils/prompts_builder.py +33 -14
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/utils/utils.py +84 -1
- {osa_tool-0.3.0 → osa_tool-0.3.2}/pyproject.toml +7 -11
- osa_tool-0.3.0/osa_tool/config/prompts/validation.toml +0 -301
- osa_tool-0.3.0/osa_tool/operations/analysis/paper_claims/__init__.py +0 -26
- osa_tool-0.3.0/osa_tool/operations/analysis/paper_claims/pipeline.py +0 -91
- osa_tool-0.3.0/osa_tool/operations/analysis/repository_validation/analyze/code_analyzer.py +0 -134
- osa_tool-0.3.0/osa_tool/operations/analysis/repository_validation/analyze/paper_analyzer.py +0 -116
- osa_tool-0.3.0/osa_tool/operations/analysis/repository_validation/doc_validator.py +0 -133
- osa_tool-0.3.0/osa_tool/operations/analysis/repository_validation/experiment.py +0 -9
- osa_tool-0.3.0/osa_tool/operations/analysis/repository_validation/models.py +0 -26
- osa_tool-0.3.0/osa_tool/operations/analysis/repository_validation/optional_dependencies.py +0 -29
- osa_tool-0.3.0/osa_tool/operations/analysis/repository_validation/paper_validator.py +0 -303
- osa_tool-0.3.0/osa_tool/operations/analysis/repository_validation/report_generator.py +0 -471
- osa_tool-0.3.0/osa_tool/operations/analysis/vkr_scoring/__init__.py +0 -3
- osa_tool-0.3.0/osa_tool/operations/analysis/vkr_scoring/claims.py +0 -378
- osa_tool-0.3.0/osa_tool/operations/analysis/vkr_scoring/csv_analyzer.py +0 -178
- osa_tool-0.3.0/osa_tool/operations/analysis/vkr_scoring/pdf_parser.py +0 -171
- osa_tool-0.3.0/osa_tool/operations/analysis/vkr_scoring/vkr_scorer.py +0 -138
- osa_tool-0.3.0/osa_tool/operations/codebase/docstring_generation/insert/ts_js_augmentor.py +0 -217
- osa_tool-0.3.0/osa_tool/operations/codebase/docstring_generation/osa_treesitter.py +0 -808
- osa_tool-0.3.0/osa_tool/ui/__init__.py +0 -0
- osa_tool-0.3.0/osa_tool/utils/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/LICENSE +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/osa_config.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/prompts/docstring_generation.toml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/prompts/osa_agent.toml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/prompts/paper_claims.toml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/prompts/readme/prompts.toml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/prompts/readme/system_messages.toml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/prompts/readme.toml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/prompts/repo_organization.toml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/prompts/requirements.toml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/prompts/scheduler.toml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/prompts/system_messages.toml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/templates/template.toml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/templates/workflow/github_gitverse/autopep8.yml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/templates/workflow/github_gitverse/black.yml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/templates/workflow/github_gitverse/fix_pep8.yml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/templates/workflow/github_gitverse/pypi_publish.yml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/templates/workflow/github_gitverse/slash_command_dispatch.yml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/templates/workflow/gitlab/pypi_publish.yml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/config/templates/workflow/gitlab/slash_command_dispatch.yml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/core/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/core/git/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/core/git/request_utils.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/core/llm/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/core/models/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/core/models/agent_status.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/core/models/event.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/core/models/llm_output_models.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/core/models/task.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/docs/images/osa_logo.PNG +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/docs/images/osa_logo_transparent.PNG +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/docs/templates/ci_config.toml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/docs/templates/community.toml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/docs/templates/contributing.toml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/docs/templates/licenses.toml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/docs/templates/mkdocs.yml +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/notebook_report/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/paper_claims/claim_input_planner.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/paper_claims/claim_schemas.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/paper_claims/exceptions.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/paper_claims/section_parser.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/repository_report/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/analysis/repository_report/response_validation.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/analysis/repository_validation → osa_tool-0.3.2/osa_tool/operations/codebase}/__init__.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/analysis/repository_validation/analyze → osa_tool-0.3.2/osa_tool/operations/codebase/directory_translation}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/directory_translation/dirs_and_files_translator.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/codebase → osa_tool-0.3.2/osa_tool/operations/codebase/docstring_generation}/__init__.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/codebase/directory_translation → osa_tool-0.3.2/osa_tool/operations/codebase/docstring_generation/adapters}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/docstring_generation/adapters/base.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/docstring_generation/adapters/javascript_adapter.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/codebase/docstring_generation → osa_tool-0.3.2/osa_tool/operations/codebase/docstring_generation/core}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/docstring_generation/core/source_view.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/docstring_generation/docstring_transformer.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/codebase/docstring_generation/adapters → osa_tool-0.3.2/osa_tool/operations/codebase/docstring_generation/insert}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/docstring_generation/insert/base_augmentor.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/docstring_generation/insert/factory.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/docstring_generation/insert/python_augmentor.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/docstring_generation/topology.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/codebase/docstring_generation/core → osa_tool-0.3.2/osa_tool/operations/codebase/notebook_conversion}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/notebook_conversion/notebook_converter.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/__init__.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/codebase/docstring_generation/insert → osa_tool-0.3.2/osa_tool/operations/codebase/organization/core}/__init__.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/codebase/notebook_conversion → osa_tool-0.3.2/osa_tool/operations/codebase/organization/core/analyzers}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/analyzers/base.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/analyzers/cpp.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/analyzers/csharp.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/analyzers/factory.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/analyzers/generic.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/analyzers/go.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/analyzers/java.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/analyzers/javascript.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/analyzers/kotlin.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/analyzers/latex.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/analyzers/python.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/analyzers/ruby.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/analyzers/rust.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/analyzers/swift.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/executor/action_executor.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/executor/batch_updater.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/health_checker.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/planning_manager.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/snapshot_manager.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/core/utils.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/organization/organize.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/codebase/organization/core → osa_tool-0.3.2/osa_tool/operations/codebase/requirements_generation}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/requirements_generation/requirements_generation.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/codebase/workflow_generation/README.md +0 -0
- {osa_tool-0.3.0/osa_tool/operations/codebase/organization/core/analyzers → osa_tool-0.3.2/osa_tool/operations/codebase/workflow_generation}/__init__.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/codebase/requirements_generation → osa_tool-0.3.2/osa_tool/operations/docs}/__init__.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/codebase/workflow_generation → osa_tool-0.3.2/osa_tool/operations/docs/about_generation}/__init__.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/docs → osa_tool-0.3.2/osa_tool/operations/docs/community_docs_generation}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/community_docs_generation/community.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/community_docs_generation/contributing.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/community_docs_generation/license_generation.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/docs/about_generation → osa_tool-0.3.2/osa_tool/operations/docs/readme_generation}/__init__.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/docs/community_docs_generation → osa_tool-0.3.2/osa_tool/operations/docs/readme_generation/inputs}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/inputs/article_content.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/inputs/article_path.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/inputs/pypi_status_checker.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/pipeline/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/pipeline/graph.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/pipeline/llm_schemas.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/pipeline/models.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/docs/readme_generation → osa_tool-0.3.2/osa_tool/operations/docs/readme_generation/pipeline/nodes}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/pipeline/nodes/assembler.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/pipeline/nodes/context_collector.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/pipeline/nodes/deterministic_builder.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/pipeline/nodes/intent_analyzer.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/pipeline/nodes/readme_patch.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/pipeline/nodes/section_generator.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/pipeline/nodes/section_planner.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/pipeline/nodes/self_eval.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/pipeline/nodes/writer.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/pipeline/runtime_context.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/pipeline/section_catalog.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/pipeline/section_catalog_entries.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/pipeline/state.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/readme_agent.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/readme_utils.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/docs/readme_generation/inputs → osa_tool-0.3.2/osa_tool/operations/docs/readme_generation/sections}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/sections/header.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/sections/icons/shieldsio_icons.json +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_generation/sections/installation.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/docs/readme_generation/pipeline/nodes → osa_tool-0.3.2/osa_tool/operations/docs/readme_translation}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/docs/readme_translation/readme_translator.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/operations/registry.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/docs/readme_generation/sections → osa_tool-0.3.2/osa_tool/osa_agent}/__init__.py +0 -0
- {osa_tool-0.3.0/osa_tool/operations/docs/readme_translation → osa_tool-0.3.2/osa_tool/osa_agent/agents}/__init__.py +0 -0
- {osa_tool-0.3.0/osa_tool/osa_agent → osa_tool-0.3.2/osa_tool/osa_agent/agents/executor}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/osa_agent/agents/executor/agent.py +0 -0
- {osa_tool-0.3.0/osa_tool/osa_agent/agents → osa_tool-0.3.2/osa_tool/osa_agent/agents/finalizer}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/osa_agent/agents/finalizer/agent.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/osa_agent/agents/finalizer/models.py +0 -0
- {osa_tool-0.3.0/osa_tool/osa_agent/agents/executor → osa_tool-0.3.2/osa_tool/osa_agent/agents/intent_router}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/osa_agent/agents/intent_router/agent.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/osa_agent/agents/intent_router/models.py +0 -0
- {osa_tool-0.3.0/osa_tool/osa_agent/agents/finalizer → osa_tool-0.3.2/osa_tool/osa_agent/agents/planner}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/osa_agent/agents/planner/agent.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/osa_agent/agents/planner/models.py +0 -0
- {osa_tool-0.3.0/osa_tool/osa_agent/agents/intent_router → osa_tool-0.3.2/osa_tool/osa_agent/agents/repo_analysis}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/osa_agent/agents/repo_analysis/agent.py +0 -0
- {osa_tool-0.3.0/osa_tool/osa_agent/agents/planner → osa_tool-0.3.2/osa_tool/osa_agent/agents/reviewer}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/osa_agent/agents/reviewer/agent.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/osa_agent/agents/reviewer/models.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/osa_agent/base.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/osa_agent/context.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/osa_agent/graph.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/osa_agent/state.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/run_multi_process.py +0 -0
- {osa_tool-0.3.0/osa_tool/osa_agent/agents/repo_analysis → osa_tool-0.3.2/osa_tool/scheduler}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/scheduler/response_validation.py +0 -0
- {osa_tool-0.3.0/osa_tool/osa_agent/agents/reviewer → osa_tool-0.3.2/osa_tool/tools}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/tools/paper_claims/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/tools/paper_claims/aggregate.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/tools/paper_claims/evaluate.py +0 -0
- {osa_tool-0.3.0/osa_tool/scheduler → osa_tool-0.3.2/osa_tool/tools/repository_analysis}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/tools/repository_analysis/dependencies.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/tools/repository_analysis/documentation.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/tools/repository_analysis/models.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/tools/repository_analysis/repo_analyzer.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/tools/repository_analysis/repo_graph.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/tools/repository_analysis/sourcerank.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/tools/repository_analysis/testing.py +0 -0
- {osa_tool-0.3.0/osa_tool/tools → osa_tool-0.3.2/osa_tool/ui}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/ui/input_for_chat.py +0 -0
- {osa_tool-0.3.0/osa_tool/tools/repository_analysis → osa_tool-0.3.2/osa_tool/utils}/__init__.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/utils/logger.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/utils/response_cleaner.py +0 -0
- {osa_tool-0.3.0 → osa_tool-0.3.2}/osa_tool/utils/token_counter.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: osa_tool
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: Tool that just makes your open source project better!
|
|
5
5
|
License-Expression: BSD-3-Clause
|
|
6
6
|
License-File: LICENSE
|
|
@@ -12,8 +12,10 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.12
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.13
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.14
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
15
16
|
Provides-Extra: paper-claims
|
|
16
|
-
Provides-Extra:
|
|
17
|
+
Provides-Extra: paper-claims-lite
|
|
18
|
+
Provides-Extra: paper-claims-marker
|
|
17
19
|
Requires-Dist: GitPython (>=3.1.40)
|
|
18
20
|
Requires-Dist: Pygments (>=2.18.0)
|
|
19
21
|
Requires-Dist: aiofiles (>=24.1.0)
|
|
@@ -23,16 +25,13 @@ Requires-Dist: docx2txt (>=0.9)
|
|
|
23
25
|
Requires-Dist: json-repair[schema] (>=0.60.0,<0.61.0)
|
|
24
26
|
Requires-Dist: libcst (>=1.8.6)
|
|
25
27
|
Requires-Dist: markdown-it-py (>=3.0.0) ; extra == "paper-claims"
|
|
26
|
-
Requires-Dist: marker-pdf (>=1.10.2,<2.0.0) ; (python_version < "3.15") and (extra == "paper-claims")
|
|
27
|
-
Requires-Dist: matplotlib (>=3.10.9) ; extra == "repository-validation"
|
|
28
|
+
Requires-Dist: marker-pdf (>=1.10.2,<2.0.0) ; (python_version < "3.15") and (extra == "paper-claims-marker")
|
|
28
29
|
Requires-Dist: mkdocs (>=1.6.0)
|
|
29
30
|
Requires-Dist: mkdocs-material (>=9.6.0)
|
|
30
31
|
Requires-Dist: mkdocstrings-python (>=1.16.0)
|
|
31
32
|
Requires-Dist: mkdocstrings[python] (>=0.29.0)
|
|
32
33
|
Requires-Dist: nbconvert (>=6.0)
|
|
33
34
|
Requires-Dist: nbformat (>=5.0)
|
|
34
|
-
Requires-Dist: networkx (>=3.6,<3.6.1) ; (python_full_version == "3.14.1") and (extra == "repository-validation")
|
|
35
|
-
Requires-Dist: networkx (>=3.6.1) ; (python_full_version != "3.14.1") and (extra == "repository-validation")
|
|
36
35
|
Requires-Dist: numpy (>=1.26.0,<3.0.0) ; extra == "paper-claims"
|
|
37
36
|
Requires-Dist: packaging (>=25.0)
|
|
38
37
|
Requires-Dist: pandas (>=2.2.0,<3.0.0)
|
|
@@ -44,15 +43,13 @@ Requires-Dist: pydantic (>=2.9.0,<3.0.0)
|
|
|
44
43
|
Requires-Dist: pypdf (>=5.0.0) ; extra == "paper-claims"
|
|
45
44
|
Requires-Dist: qrcode (>=7.4.0)
|
|
46
45
|
Requires-Dist: rapidfuzz (>=3.14.0) ; extra == "paper-claims"
|
|
46
|
+
Requires-Dist: rapidfuzz (>=3.14.0) ; extra == "paper-claims-lite"
|
|
47
47
|
Requires-Dist: reportlab (>=4.2.0,<5.0.0)
|
|
48
48
|
Requires-Dist: scipy (>=1.13.0,<2.0.0) ; extra == "paper-claims"
|
|
49
49
|
Requires-Dist: sentence-transformers (>=3.0.0,<6.0.0) ; extra == "paper-claims"
|
|
50
50
|
Requires-Dist: structlog (>=24.4.0)
|
|
51
51
|
Requires-Dist: tiktoken (>=0.8.0)
|
|
52
52
|
Requires-Dist: tomli (>=2.0.0)
|
|
53
|
-
Requires-Dist: torch (>=2.11.0) ; (python_version < "3.15") and (extra == "repository-validation")
|
|
54
|
-
Requires-Dist: torch-geometric (>=2.7.0) ; extra == "repository-validation"
|
|
55
|
-
Requires-Dist: transformers (>=4.45.2,<5.0.0) ; extra == "repository-validation"
|
|
56
53
|
Requires-Dist: tree-sitter (>=0.23.0)
|
|
57
54
|
Requires-Dist: tree-sitter-javascript (>=0.25.0)
|
|
58
55
|
Requires-Dist: tree-sitter-python (>=0.23.0)
|
|
@@ -141,14 +138,14 @@ Here is a short video:
|
|
|
141
138
|
5. **Workflow Generator**: Automatically generates customizable CI/CD workflows for Python repositories,
|
|
142
139
|
including unit tests, code formatting, PEP 8 compliance checks, and PyPI publication.
|
|
143
140
|
|
|
144
|
-
6. **
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
141
|
+
6. **Repository-quality score**: Evaluates a repository against formal criteria such as a non-empty README and
|
|
142
|
+
license file. The score is available as part of paper analysis with `--include-repository-quality`.
|
|
143
|
+
|
|
144
|
+
7. **Paper repository analysis**: The canonical `osa-tool --paper-analysis` mode extracts or resumes typed paper
|
|
145
|
+
claims and verifies them against a repository. Formal repository-quality scoring is optional through
|
|
146
|
+
`--include-repository-quality`. With `--delete-dir`, the command removes only a remote clone created by that
|
|
147
|
+
invocation, never a user-supplied local repository.
|
|
148
|
+
|
|
152
149
|
---
|
|
153
150
|
|
|
154
151
|
## Installation
|
|
@@ -167,12 +164,12 @@ Install optional features when needed:
|
|
|
167
164
|
# PDF-to-claims extraction and evaluation utilities
|
|
168
165
|
pip install "osa_tool[paper-claims]"
|
|
169
166
|
|
|
170
|
-
#
|
|
171
|
-
pip install "osa_tool[
|
|
167
|
+
# Add the optional local Marker parser
|
|
168
|
+
pip install "osa_tool[paper-claims,paper-claims-marker]"
|
|
172
169
|
```
|
|
173
170
|
|
|
174
|
-
The core package
|
|
175
|
-
|
|
171
|
+
The core package and remote PDF parsers support Python 3.11 and later. The optional Marker parser requires Python
|
|
172
|
+
3.11--3.14 because its dependency stack is not available for Python 3.15+.
|
|
176
173
|
|
|
177
174
|
**Build from source:**
|
|
178
175
|
|
|
@@ -225,31 +222,29 @@ docker build --build-arg GIT_USER_NAME="your-user-name" --build-arg GIT_USER_EMA
|
|
|
225
222
|
|
|
226
223
|
OSA requires Python 3.11 or higher.
|
|
227
224
|
|
|
228
|
-
|
|
229
|
-
The Git token (GIT_TOKEN) may be omitted if you plan to work with a public repository without creating a fork (using the
|
|
230
|
-
--no-fork option).
|
|
231
|
-
|
|
232
|
-
Alternatively, instead of GIT_TOKEN, you can use GITHUB_TOKEN, GITLAB_TOKEN, or GITVERSE_TOKEN for GitHub, GitLab, and
|
|
233
|
-
Gitverse respectively.
|
|
234
|
-
|
|
235
|
-
When running `osa-tool` from CLI, you need to set the GIT_TOKEN and API key first:
|
|
225
|
+
OSA can be configured in two common ways:
|
|
236
226
|
|
|
237
227
|
```sh
|
|
238
|
-
#
|
|
239
|
-
export
|
|
228
|
+
# Subscription-backed Host LLM provider (api = "host")
|
|
229
|
+
export HOST_LLM_COMMAND=codex
|
|
240
230
|
export GIT_TOKEN=<your_git_token>
|
|
241
231
|
|
|
242
|
-
#
|
|
243
|
-
|
|
244
|
-
|
|
232
|
+
# OpenAI-compatible API provider (--api openai)
|
|
233
|
+
export OPENAI_API_KEY=<your_api_key>
|
|
234
|
+
export GIT_TOKEN=<your_git_token>
|
|
245
235
|
```
|
|
246
236
|
|
|
237
|
+
The Git token (GIT_TOKEN) may be omitted if you plan to work with a public repository without creating a fork (using the
|
|
238
|
+
--no-fork option). Instead of GIT_TOKEN, you can use GITHUB_TOKEN, GITLAB_TOKEN, or GITVERSE_TOKEN for GitHub, GitLab,
|
|
239
|
+
and Gitverse respectively. `AUTHORIZATION_KEY` is only needed when using Gigachat.
|
|
240
|
+
|
|
247
241
|
### Tokens
|
|
248
242
|
|
|
249
243
|
| Token name | Description | Mandatory |
|
|
250
244
|
|---------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------|
|
|
251
245
|
| `GIT_TOKEN` | Personal GitHub/GitLab/Gitverse token used to clone private repositories, access metadata, and interact with its API. | Yes |
|
|
252
|
-
| `
|
|
246
|
+
| `HOST_LLM_COMMAND` | Logged-in Codex CLI command used by the subscription-backed `api = "host"` provider (`codex`). | No |
|
|
247
|
+
| `OPENAI_API_KEY` | API key for accessing [OpenAI](https://platform.openai.com/docs/api-reference/introduction), [vsegpt](https://vsegpt.ru/Docs/API), and [openrouter](https://openrouter.ai/) providers through `--api openai`. | No |
|
|
253
248
|
| `AUTHORIZATION_KEY` | API key for [gigachat](https://developers.sber.ru/portal/products/gigachat-api) provider | No |
|
|
254
249
|
| `X-API-Key` | API key for the [pepy.tech](https://pepy.tech/pepy-api) REST API, used to fetch Python package download statistics | No |
|
|
255
250
|
|
|
@@ -271,6 +266,8 @@ python -m osa_tool.run -r {repository} [--api {api}] [--base-url {base_url}] [--
|
|
|
271
266
|
docker run --env-file .env {image-name} -r {repository} [--api {api}] [--base-url {base_url}] [--model {model_name}] [--attachment {article}] [--convert-notebooks {notebook_paths}]
|
|
272
267
|
```
|
|
273
268
|
|
|
269
|
+
Docker runs default to the OpenAI-compatible API-key provider because the container cannot inherit a logged-in host command from the user's machine. Pass `--api host` only when the container has access to a host command or bridge.
|
|
270
|
+
|
|
274
271
|
The --attachment option enables you to choose a README template for a repository based on an article. You can provide
|
|
275
272
|
either a link to a PDF file of the article or a path to a local PDF file after the --attachment option. If you are using
|
|
276
273
|
Docker, ensure that you upload the PDF file to the OSA folder before building the image, then, specify the path as
|
|
@@ -281,30 +278,34 @@ documentation, see the [Workflow Generator README](./osa_tool/operations/codebas
|
|
|
281
278
|
|
|
282
279
|
### Configuration
|
|
283
280
|
|
|
284
|
-
| Flag
|
|
285
|
-
|
|
286
|
-
| `-r`, `--repository`
|
|
287
|
-
| `-b`, `--branch`
|
|
288
|
-
|
|
|
289
|
-
| `--
|
|
290
|
-
| `--
|
|
291
|
-
| `--
|
|
292
|
-
| `--
|
|
293
|
-
| `--
|
|
294
|
-
| `--
|
|
295
|
-
| `--
|
|
296
|
-
| `--
|
|
297
|
-
|
|
|
298
|
-
| `--
|
|
299
|
-
| `--
|
|
300
|
-
| `--no-
|
|
281
|
+
| Flag | Description | Default |
|
|
282
|
+
|------------------------|-------------------------------------------------------------------------------------|--------------------------------|
|
|
283
|
+
| `-r`, `--repository` | URL of the GitHub/GitLab/Gitverse repository (**Mandatory**) | |
|
|
284
|
+
| `-b`, `--branch` | Branch name of the repository | Default branch |
|
|
285
|
+
| `--based-on-date` | Analyse the repository version closest to the given date (forces no fork / no PR) | `None` |
|
|
286
|
+
| `-o`, `--output` | Path to the output directory | Current working directory |
|
|
287
|
+
| `--api` | LLM API service provider | `openai` |
|
|
288
|
+
| `--base-url` | URL of the provider compatible with API OpenAI | `https://openrouter.ai/api/v1` |
|
|
289
|
+
| `--model` | Specific LLM model to use | `gpt-3.5-turbo` |
|
|
290
|
+
| `--top-p` | Nucleus sampling probability | `0.95` |
|
|
291
|
+
| `--temperature` | Sampling temperature to use for the LLM output (0 = deterministic, 1 = creative). | `0.05` |
|
|
292
|
+
| `--max-tokens` | Maximum number of output tokens the model can generate in a single response | `4096` |
|
|
293
|
+
| `--context-window` | Total number of model context (Input + Output) | `16385` |
|
|
294
|
+
| `--attachment` | Path to a local PDF or .docx file, or a URL to a PDF resource | `None` |
|
|
295
|
+
| `-m`, `--mode` | Operation mode for repository processing: `basic`, `auto` (default), or `advanced`. | `auto` |
|
|
296
|
+
| `--delete-dir` | Enable deleting the downloaded repository after processing | `disabled` |
|
|
297
|
+
| `--no-fork` | Avoid create fork for target repository | `False` |
|
|
298
|
+
| `--no-pull-request` | Avoid create pull request for target repository | `False` |
|
|
299
|
+
| `--artefacts-language` | Language for report generation | `English` |
|
|
301
300
|
|
|
302
301
|
Also OSA supports custom configuration via TOML files. Use the `--config-file` option to specify a path to custom
|
|
303
302
|
configuration file. If no custom configuration file is provided, OSA will use the default configuration.
|
|
304
303
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
304
|
+
OSA uses the shared `[llm]` model settings unless a task-specific profile is configured. Task profiles fall back to the
|
|
305
|
+
shared settings when they do not override a value. The `--use-single-model` flag forces all tasks to use the shared
|
|
306
|
+
`[llm]` settings; omit it to allow task-specific profiles and model flags. Supported task model flags include
|
|
307
|
+
`--model-docstring`, `--model-readme`, `--model-general`, `--model-repository-quality`, `--model-paper-claims`, and
|
|
308
|
+
`--model-paper-verification`. There is no `--model-validation` option in the current CLI.
|
|
308
309
|
|
|
309
310
|
To learn how to work with the interactive CLI and view descriptions of all available keys, visit
|
|
310
311
|
the [CLI usage guide](./docs/scheduler/index.md).
|
|
@@ -318,9 +319,23 @@ Examples of generated README files are available in [examples](./examples).
|
|
|
318
319
|
URL of the GitHub/GitLab/Gitverse repository, LLM API service provider (*optional*) and Specific LLM model to use
|
|
319
320
|
(*optional*) are required to use the generator.
|
|
320
321
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
full list.
|
|
322
|
+
OSA supports the subscription-backed Host LLM provider directly. `HOST_LLM_COMMAND` currently expects the Codex CLI protocol; use the bridge or an API-backed provider when custom generation controls are required. Other LLM providers are available as part of the
|
|
323
|
+
[ProtoLLM](https://github.com/aimclub/ProtoLLM/) ecosystem. See the
|
|
324
|
+
[connectors directory](https://github.com/aimclub/ProtoLLM/tree/main/protollm/connectors) for the full list.
|
|
325
|
+
|
|
326
|
+
Subscription-backed Host LLM:
|
|
327
|
+
|
|
328
|
+
```sh
|
|
329
|
+
export HOST_LLM_COMMAND=codex
|
|
330
|
+
python -m osa_tool.run -r https://github.com/aimclub/OSA --api host
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
OpenAI-compatible API key:
|
|
334
|
+
|
|
335
|
+
```sh
|
|
336
|
+
export OPENAI_API_KEY=<your_api_key>
|
|
337
|
+
python -m osa_tool.run -r https://github.com/aimclub/OSA --api openai --base-url https://api.openai.com/v1 --model gpt-4o
|
|
338
|
+
```
|
|
324
339
|
|
|
325
340
|
Local ITMO model:
|
|
326
341
|
|
|
@@ -77,14 +77,14 @@ Here is a short video:
|
|
|
77
77
|
5. **Workflow Generator**: Automatically generates customizable CI/CD workflows for Python repositories,
|
|
78
78
|
including unit tests, code formatting, PEP 8 compliance checks, and PyPI publication.
|
|
79
79
|
|
|
80
|
-
6. **
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
80
|
+
6. **Repository-quality score**: Evaluates a repository against formal criteria such as a non-empty README and
|
|
81
|
+
license file. The score is available as part of paper analysis with `--include-repository-quality`.
|
|
82
|
+
|
|
83
|
+
7. **Paper repository analysis**: The canonical `osa-tool --paper-analysis` mode extracts or resumes typed paper
|
|
84
|
+
claims and verifies them against a repository. Formal repository-quality scoring is optional through
|
|
85
|
+
`--include-repository-quality`. With `--delete-dir`, the command removes only a remote clone created by that
|
|
86
|
+
invocation, never a user-supplied local repository.
|
|
87
|
+
|
|
88
88
|
---
|
|
89
89
|
|
|
90
90
|
## Installation
|
|
@@ -103,12 +103,12 @@ Install optional features when needed:
|
|
|
103
103
|
# PDF-to-claims extraction and evaluation utilities
|
|
104
104
|
pip install "osa_tool[paper-claims]"
|
|
105
105
|
|
|
106
|
-
#
|
|
107
|
-
pip install "osa_tool[
|
|
106
|
+
# Add the optional local Marker parser
|
|
107
|
+
pip install "osa_tool[paper-claims,paper-claims-marker]"
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
-
The core package
|
|
111
|
-
|
|
110
|
+
The core package and remote PDF parsers support Python 3.11 and later. The optional Marker parser requires Python
|
|
111
|
+
3.11--3.14 because its dependency stack is not available for Python 3.15+.
|
|
112
112
|
|
|
113
113
|
**Build from source:**
|
|
114
114
|
|
|
@@ -161,31 +161,29 @@ docker build --build-arg GIT_USER_NAME="your-user-name" --build-arg GIT_USER_EMA
|
|
|
161
161
|
|
|
162
162
|
OSA requires Python 3.11 or higher.
|
|
163
163
|
|
|
164
|
-
|
|
165
|
-
The Git token (GIT_TOKEN) may be omitted if you plan to work with a public repository without creating a fork (using the
|
|
166
|
-
--no-fork option).
|
|
167
|
-
|
|
168
|
-
Alternatively, instead of GIT_TOKEN, you can use GITHUB_TOKEN, GITLAB_TOKEN, or GITVERSE_TOKEN for GitHub, GitLab, and
|
|
169
|
-
Gitverse respectively.
|
|
170
|
-
|
|
171
|
-
When running `osa-tool` from CLI, you need to set the GIT_TOKEN and API key first:
|
|
164
|
+
OSA can be configured in two common ways:
|
|
172
165
|
|
|
173
166
|
```sh
|
|
174
|
-
#
|
|
175
|
-
export
|
|
167
|
+
# Subscription-backed Host LLM provider (api = "host")
|
|
168
|
+
export HOST_LLM_COMMAND=codex
|
|
176
169
|
export GIT_TOKEN=<your_git_token>
|
|
177
170
|
|
|
178
|
-
#
|
|
179
|
-
|
|
180
|
-
|
|
171
|
+
# OpenAI-compatible API provider (--api openai)
|
|
172
|
+
export OPENAI_API_KEY=<your_api_key>
|
|
173
|
+
export GIT_TOKEN=<your_git_token>
|
|
181
174
|
```
|
|
182
175
|
|
|
176
|
+
The Git token (GIT_TOKEN) may be omitted if you plan to work with a public repository without creating a fork (using the
|
|
177
|
+
--no-fork option). Instead of GIT_TOKEN, you can use GITHUB_TOKEN, GITLAB_TOKEN, or GITVERSE_TOKEN for GitHub, GitLab,
|
|
178
|
+
and Gitverse respectively. `AUTHORIZATION_KEY` is only needed when using Gigachat.
|
|
179
|
+
|
|
183
180
|
### Tokens
|
|
184
181
|
|
|
185
182
|
| Token name | Description | Mandatory |
|
|
186
183
|
|---------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------|
|
|
187
184
|
| `GIT_TOKEN` | Personal GitHub/GitLab/Gitverse token used to clone private repositories, access metadata, and interact with its API. | Yes |
|
|
188
|
-
| `
|
|
185
|
+
| `HOST_LLM_COMMAND` | Logged-in Codex CLI command used by the subscription-backed `api = "host"` provider (`codex`). | No |
|
|
186
|
+
| `OPENAI_API_KEY` | API key for accessing [OpenAI](https://platform.openai.com/docs/api-reference/introduction), [vsegpt](https://vsegpt.ru/Docs/API), and [openrouter](https://openrouter.ai/) providers through `--api openai`. | No |
|
|
189
187
|
| `AUTHORIZATION_KEY` | API key for [gigachat](https://developers.sber.ru/portal/products/gigachat-api) provider | No |
|
|
190
188
|
| `X-API-Key` | API key for the [pepy.tech](https://pepy.tech/pepy-api) REST API, used to fetch Python package download statistics | No |
|
|
191
189
|
|
|
@@ -207,6 +205,8 @@ python -m osa_tool.run -r {repository} [--api {api}] [--base-url {base_url}] [--
|
|
|
207
205
|
docker run --env-file .env {image-name} -r {repository} [--api {api}] [--base-url {base_url}] [--model {model_name}] [--attachment {article}] [--convert-notebooks {notebook_paths}]
|
|
208
206
|
```
|
|
209
207
|
|
|
208
|
+
Docker runs default to the OpenAI-compatible API-key provider because the container cannot inherit a logged-in host command from the user's machine. Pass `--api host` only when the container has access to a host command or bridge.
|
|
209
|
+
|
|
210
210
|
The --attachment option enables you to choose a README template for a repository based on an article. You can provide
|
|
211
211
|
either a link to a PDF file of the article or a path to a local PDF file after the --attachment option. If you are using
|
|
212
212
|
Docker, ensure that you upload the PDF file to the OSA folder before building the image, then, specify the path as
|
|
@@ -217,30 +217,34 @@ documentation, see the [Workflow Generator README](./osa_tool/operations/codebas
|
|
|
217
217
|
|
|
218
218
|
### Configuration
|
|
219
219
|
|
|
220
|
-
| Flag
|
|
221
|
-
|
|
222
|
-
| `-r`, `--repository`
|
|
223
|
-
| `-b`, `--branch`
|
|
224
|
-
|
|
|
225
|
-
| `--
|
|
226
|
-
| `--
|
|
227
|
-
| `--
|
|
228
|
-
| `--
|
|
229
|
-
| `--
|
|
230
|
-
| `--
|
|
231
|
-
| `--
|
|
232
|
-
| `--
|
|
233
|
-
|
|
|
234
|
-
| `--
|
|
235
|
-
| `--
|
|
236
|
-
| `--no-
|
|
220
|
+
| Flag | Description | Default |
|
|
221
|
+
|------------------------|-------------------------------------------------------------------------------------|--------------------------------|
|
|
222
|
+
| `-r`, `--repository` | URL of the GitHub/GitLab/Gitverse repository (**Mandatory**) | |
|
|
223
|
+
| `-b`, `--branch` | Branch name of the repository | Default branch |
|
|
224
|
+
| `--based-on-date` | Analyse the repository version closest to the given date (forces no fork / no PR) | `None` |
|
|
225
|
+
| `-o`, `--output` | Path to the output directory | Current working directory |
|
|
226
|
+
| `--api` | LLM API service provider | `openai` |
|
|
227
|
+
| `--base-url` | URL of the provider compatible with API OpenAI | `https://openrouter.ai/api/v1` |
|
|
228
|
+
| `--model` | Specific LLM model to use | `gpt-3.5-turbo` |
|
|
229
|
+
| `--top-p` | Nucleus sampling probability | `0.95` |
|
|
230
|
+
| `--temperature` | Sampling temperature to use for the LLM output (0 = deterministic, 1 = creative). | `0.05` |
|
|
231
|
+
| `--max-tokens` | Maximum number of output tokens the model can generate in a single response | `4096` |
|
|
232
|
+
| `--context-window` | Total number of model context (Input + Output) | `16385` |
|
|
233
|
+
| `--attachment` | Path to a local PDF or .docx file, or a URL to a PDF resource | `None` |
|
|
234
|
+
| `-m`, `--mode` | Operation mode for repository processing: `basic`, `auto` (default), or `advanced`. | `auto` |
|
|
235
|
+
| `--delete-dir` | Enable deleting the downloaded repository after processing | `disabled` |
|
|
236
|
+
| `--no-fork` | Avoid create fork for target repository | `False` |
|
|
237
|
+
| `--no-pull-request` | Avoid create pull request for target repository | `False` |
|
|
238
|
+
| `--artefacts-language` | Language for report generation | `English` |
|
|
237
239
|
|
|
238
240
|
Also OSA supports custom configuration via TOML files. Use the `--config-file` option to specify a path to custom
|
|
239
241
|
configuration file. If no custom configuration file is provided, OSA will use the default configuration.
|
|
240
242
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
243
|
+
OSA uses the shared `[llm]` model settings unless a task-specific profile is configured. Task profiles fall back to the
|
|
244
|
+
shared settings when they do not override a value. The `--use-single-model` flag forces all tasks to use the shared
|
|
245
|
+
`[llm]` settings; omit it to allow task-specific profiles and model flags. Supported task model flags include
|
|
246
|
+
`--model-docstring`, `--model-readme`, `--model-general`, `--model-repository-quality`, `--model-paper-claims`, and
|
|
247
|
+
`--model-paper-verification`. There is no `--model-validation` option in the current CLI.
|
|
244
248
|
|
|
245
249
|
To learn how to work with the interactive CLI and view descriptions of all available keys, visit
|
|
246
250
|
the [CLI usage guide](./docs/scheduler/index.md).
|
|
@@ -254,9 +258,23 @@ Examples of generated README files are available in [examples](./examples).
|
|
|
254
258
|
URL of the GitHub/GitLab/Gitverse repository, LLM API service provider (*optional*) and Specific LLM model to use
|
|
255
259
|
(*optional*) are required to use the generator.
|
|
256
260
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
full list.
|
|
261
|
+
OSA supports the subscription-backed Host LLM provider directly. `HOST_LLM_COMMAND` currently expects the Codex CLI protocol; use the bridge or an API-backed provider when custom generation controls are required. Other LLM providers are available as part of the
|
|
262
|
+
[ProtoLLM](https://github.com/aimclub/ProtoLLM/) ecosystem. See the
|
|
263
|
+
[connectors directory](https://github.com/aimclub/ProtoLLM/tree/main/protollm/connectors) for the full list.
|
|
264
|
+
|
|
265
|
+
Subscription-backed Host LLM:
|
|
266
|
+
|
|
267
|
+
```sh
|
|
268
|
+
export HOST_LLM_COMMAND=codex
|
|
269
|
+
python -m osa_tool.run -r https://github.com/aimclub/OSA --api host
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
OpenAI-compatible API key:
|
|
273
|
+
|
|
274
|
+
```sh
|
|
275
|
+
export OPENAI_API_KEY=<your_api_key>
|
|
276
|
+
python -m osa_tool.run -r https://github.com/aimclub/OSA --api openai --base-url https://api.openai.com/v1 --model gpt-4o
|
|
277
|
+
```
|
|
260
278
|
|
|
261
279
|
Local ITMO model:
|
|
262
280
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
language = "English"
|
|
2
|
+
|
|
3
|
+
[translations]
|
|
4
|
+
report_header = "Repository Analysis Report"
|
|
5
|
+
statistics = "Statistics"
|
|
6
|
+
values = "Values"
|
|
7
|
+
stars_count = "Stars Count"
|
|
8
|
+
forks_count = "Forks Count"
|
|
9
|
+
issues_count = "Issues Count"
|
|
10
|
+
metric = "Metric"
|
|
11
|
+
readme_presence = "README Presence"
|
|
12
|
+
license_presence = "License Presence"
|
|
13
|
+
documentation_presence = "Documentation Presence"
|
|
14
|
+
examples_presence = "Examples Presence"
|
|
15
|
+
requirements_presence = "Requirements Presence"
|
|
16
|
+
tests_presence = "Tests Presence"
|
|
17
|
+
description_presence = "Description Presence"
|
|
18
|
+
repository_name = "Repository Name"
|
|
19
|
+
owner = "Owner"
|
|
20
|
+
created_at = "Created at"
|
|
21
|
+
repository_structure = "Repository Structure"
|
|
22
|
+
compliance = "Compliance"
|
|
23
|
+
missing_files = "Missing Files"
|
|
24
|
+
organization = "Organization"
|
|
25
|
+
readme_analysis = "README Analysis"
|
|
26
|
+
quality = "Quality"
|
|
27
|
+
documentation = "Documentation"
|
|
28
|
+
test_present = "Test present"
|
|
29
|
+
documentation_quality = "Document quality"
|
|
30
|
+
outdated_content = "Outdated content"
|
|
31
|
+
key_shortcomings = "Key Shortcomings"
|
|
32
|
+
recommendations = "Recommendations"
|
|
33
|
+
readme_quality = "text"
|
|
34
|
+
project_description = "Project description"
|
|
35
|
+
installation = "Installation"
|
|
36
|
+
usage_examples = "Usage examples"
|
|
37
|
+
contribution_guidelines = "Contribution guidelines"
|
|
38
|
+
license_specified = "License specified"
|
|
39
|
+
badges_present = "Badges present"
|
|
40
|
+
summary_header = "OSA Work Summary"
|
|
41
|
+
what_have_been_done = "What have been done"
|
|
42
|
+
report_by_tasks = "Report by tasks"
|
|
43
|
+
yes = "Yes"
|
|
44
|
+
no = "No"
|
|
45
|
+
partial = "Partial"
|
|
46
|
+
report = "Report"
|
|
47
|
+
translate_dirs = "Translate dirs"
|
|
48
|
+
convert_notebooks = "Convert notebooks"
|
|
49
|
+
translate_readme = "Translate readme"
|
|
50
|
+
ensure_license = "Ensure license"
|
|
51
|
+
community_docs = "Community docs"
|
|
52
|
+
docstring = "Docstring"
|
|
53
|
+
ignore_list = "Ignore list"
|
|
54
|
+
incremental = "Incremental"
|
|
55
|
+
target_files = "Target files"
|
|
56
|
+
readme = "Readme"
|
|
57
|
+
refine_readme = "Refine readme"
|
|
58
|
+
requirements = "Requirements"
|
|
59
|
+
organize = "Organize"
|
|
60
|
+
about = "About"
|
|
61
|
+
validate_paper = "Validate paper"
|
|
62
|
+
validate_doc = "Validate doc"
|
|
63
|
+
author = "Author"
|
|
64
|
+
generate_workflows = "Generate workflows"
|
|
65
|
+
include_tests = "Include tests"
|
|
66
|
+
include_black = "Include black"
|
|
67
|
+
include_pep8 = "Include pep8"
|
|
68
|
+
include_autopep8 = "Include autopep8"
|
|
69
|
+
include_fix_pep8 = "Include fix pep8"
|
|
70
|
+
include_pypi = "Include pypi"
|
|
71
|
+
python_versions = "Python versions"
|
|
72
|
+
pep8_tool = "Pep8 tool"
|
|
73
|
+
use_poetry = "Use poetry"
|
|
74
|
+
include_codecov = "Include codecov"
|
|
75
|
+
unknown = "Unknown"
|
|
76
|
+
for = "for"
|
|
77
|
+
|
|
78
|
+
# Notebook Analysis Report
|
|
79
|
+
notebook_report_header = "Notebook Analysis Report"
|
|
80
|
+
notebook_summary = "Notebook Summary"
|
|
81
|
+
value = "Value"
|
|
82
|
+
quality_signals = "Quality Signals"
|
|
83
|
+
total_notebooks_scanned = "Total notebooks scanned"
|
|
84
|
+
total_findings = "Total findings"
|
|
85
|
+
successfully_analyzed = "Successfully analyzed"
|
|
86
|
+
invalid_syntax_notebooks = "Invalid syntax notebooks"
|
|
87
|
+
read_or_parse_failures = "Read or parse failures"
|
|
88
|
+
fully_non_executed_notebooks = "Fully non-executed notebooks"
|
|
89
|
+
notebooks_with_findings = "Notebooks with findings"
|
|
90
|
+
analysis_scope = "Analysis scope"
|
|
91
|
+
repository_wide = "Repository-wide"
|
|
92
|
+
overview = "Overview"
|
|
93
|
+
notebook_overview_text = "This report reviewed <b>{total_notebooks}</b> notebook(s) and recorded <b>{total_issues}</b> finding(s) across structure, execution, and readability."
|
|
94
|
+
notebook_explicit_targets = "Selected targets were provided explicitly: <b>{count}</b> path(s)."
|
|
95
|
+
notebook_full_scan = "Scope: full repository notebook scan."
|
|
96
|
+
most_frequent_findings = "Most Frequent Findings"
|
|
97
|
+
notebook_details = "Notebook Details"
|
|
98
|
+
status_label = "Status"
|
|
99
|
+
analysis_errors_present = "analysis errors present"
|
|
100
|
+
finding_count = "{count} finding(s)"
|
|
101
|
+
no_findings_detected = "no findings detected"
|
|
102
|
+
cells_line = "Cells: total <b>{total}</b>, code {code}, markdown {markdown}, raw {raw}"
|
|
103
|
+
markdown_line = "Markdown lines {lines}, titles {titles}, functions {functions}, classes {classes}"
|
|
104
|
+
analysis_error_line = "Analysis error: {error}"
|
|
105
|
+
no_notebook_issues = "No notebook issues detected."
|
|
106
|
+
recommendation_label = "Recommendation"
|
|
107
|
+
|
|
108
|
+
# Notebook issue catalog (keyed by NotebookReportAnalyzer's slug).
|
|
109
|
+
# NOTE: the "notebook-too-long" text below bakes in the current _MAX_CELLS_IN_NOTEBOOK
|
|
110
|
+
# threshold (50); update both locales together if that constant ever changes.
|
|
111
|
+
"notebook_issue_non-linear-execution_description" = "Notebook cells were executed in a non-linear order."
|
|
112
|
+
"notebook_issue_non-linear-execution_recommendation" = "Re-run your notebook top to bottom to ensure it is reproducible."
|
|
113
|
+
"notebook_issue_notebook-too-long_description" = "Notebook contains more than 50 cells."
|
|
114
|
+
"notebook_issue_notebook-too-long_recommendation" = "Split this notebook into two or more notebooks."
|
|
115
|
+
"notebook_issue_imports-beyond-first-cell_description" = "Import statements were found beyond the first code cell."
|
|
116
|
+
"notebook_issue_imports-beyond-first-cell_recommendation" = "Move import statements to the first code cell to make your notebook dependencies more explicit."
|
|
117
|
+
"notebook_issue_missing-h1-heading_description" = "Initial cells do not contain an H1 markdown heading."
|
|
118
|
+
"notebook_issue_missing-h1-heading_recommendation" = "Clarify the notebook subject by writing an H1 Markdown heading in one of the initial cells of your notebook."
|
|
119
|
+
"notebook_issue_missing-opening-markdown_description" = "Initial notebook cells do not contain descriptive markdown text."
|
|
120
|
+
"notebook_issue_missing-opening-markdown_recommendation" = "Begin your notebook by describing what you intend to do in one or more introductory Markdown cells."
|
|
121
|
+
"notebook_issue_missing-closing-markdown_description" = "Final notebook cells do not contain descriptive markdown text."
|
|
122
|
+
"notebook_issue_missing-closing-markdown_recommendation" = "Conclude your notebook by describing what you have accomplished in one or more concluding Markdown cells."
|
|
123
|
+
"notebook_issue_too-few-markdown-cells_description" = "Notebook contains too few markdown cells relative to code cells."
|
|
124
|
+
"notebook_issue_too-few-markdown-cells_recommendation" = "Describe the steps of your computation by adding a few more Markdown cells."
|
|
125
|
+
"notebook_issue_invalid-python-syntax_description" = "Notebook contains invalid Python syntax in exported code."
|
|
126
|
+
"notebook_issue_invalid-python-syntax_recommendation" = "Fix syntax errors in the notebook code cells."
|
|
127
|
+
"notebook_issue_non-executed-notebook_description" = "All code cells appear to be non-executed."
|
|
128
|
+
"notebook_issue_non-executed-notebook_recommendation" = "Before committing, run your notebook top to bottom to ensure that all cells are executed."
|
|
129
|
+
"notebook_issue_non-executed-cells_description" = "Notebook contains non-executed code cells."
|
|
130
|
+
"notebook_issue_non-executed-cells_recommendation" = "Re-run your notebook top to bottom to ensure that all cells are executed."
|
|
131
|
+
"notebook_issue_empty-cells_description" = "Notebook contains empty code cells."
|
|
132
|
+
"notebook_issue_empty-cells_recommendation" = "Keep your notebook clean by deleting unused cells."
|
|
133
|
+
"notebook_issue_long-multiline-python-comment_description" = "Notebook contains long multiline Python comments inside code cells."
|
|
134
|
+
"notebook_issue_long-multiline-python-comment_recommendation" = "For improved notebook readability, prefer using Markdown formatted text to long multiline Python comments."
|
|
135
|
+
"notebook_issue_cell-too-long_description" = "Notebook contains long code cells."
|
|
136
|
+
"notebook_issue_cell-too-long_recommendation" = "Consider consolidating your code outside the notebook by moving utility functions to a structured and tested codebase.\nUse notebooks to display results, not to compute them."
|
|
137
|
+
"notebook_issue_untitled-notebook_description" = "Notebook still uses a default Untitled name."
|
|
138
|
+
"notebook_issue_untitled-notebook_recommendation" = "Give it a meaningful title to make it easy to recognize."
|
|
139
|
+
"notebook_issue_non-portable-chars-in-name_description" = "Notebook filename contains non-portable characters."
|
|
140
|
+
"notebook_issue_non-portable-chars-in-name_recommendation" = "Rename your notebook by using characters contained in the following portable charset: [A-Za-z0-9_.-]."
|
|
141
|
+
"notebook_issue_duplicate-notebook-not-renamed_description" = "Notebook looks like a duplicate copy that was not renamed."
|
|
142
|
+
"notebook_issue_duplicate-notebook-not-renamed_recommendation" = "Give it a meaningful title to make it easy to recognize."
|
|
143
|
+
|
|
144
|
+
# Notebook issue short labels (used in the "Most Frequent Findings" list).
|
|
145
|
+
"notebook_issue_non-linear-execution_label" = "Non-linear execution"
|
|
146
|
+
"notebook_issue_notebook-too-long_label" = "Notebook too long"
|
|
147
|
+
"notebook_issue_imports-beyond-first-cell_label" = "Imports beyond first cell"
|
|
148
|
+
"notebook_issue_missing-h1-heading_label" = "Missing H1 heading"
|
|
149
|
+
"notebook_issue_missing-opening-markdown_label" = "Missing opening markdown"
|
|
150
|
+
"notebook_issue_missing-closing-markdown_label" = "Missing closing markdown"
|
|
151
|
+
"notebook_issue_too-few-markdown-cells_label" = "Too few markdown cells"
|
|
152
|
+
"notebook_issue_invalid-python-syntax_label" = "Invalid Python syntax"
|
|
153
|
+
"notebook_issue_non-executed-notebook_label" = "Non-executed notebook"
|
|
154
|
+
"notebook_issue_non-executed-cells_label" = "Non-executed cells"
|
|
155
|
+
"notebook_issue_empty-cells_label" = "Empty cells"
|
|
156
|
+
"notebook_issue_long-multiline-python-comment_label" = "Long multiline Python comment"
|
|
157
|
+
"notebook_issue_cell-too-long_label" = "Cell too long"
|
|
158
|
+
"notebook_issue_untitled-notebook_label" = "Untitled notebook"
|
|
159
|
+
"notebook_issue_non-portable-chars-in-name_label" = "Non-portable characters in name"
|
|
160
|
+
"notebook_issue_duplicate-notebook-not-renamed_label" = "Duplicate notebook not renamed"
|
|
161
|
+
|
|
162
|
+
# Notebook issue "details" fragments (only slugs that carry dynamic details_kwargs).
|
|
163
|
+
"notebook_issue_notebook-too-long_details" = "Detected {count} cells."
|
|
164
|
+
"notebook_issue_too-few-markdown-cells_details" = "Markdown/code ratio is {ratio:.2f}."
|
|
165
|
+
"notebook_issue_non-executed-cells_details" = "{count} code cell(s) are non-executed."
|
|
166
|
+
"notebook_issue_empty-cells_details" = "{count} empty code cell(s) detected."
|
|
167
|
+
"notebook_issue_long-multiline-python-comment_details" = "{count} code cell(s) contain long comment blocks."
|
|
168
|
+
"notebook_issue_cell-too-long_details" = "{count} code cell(s) exceed {limit} lines."
|