gyomu-python-analysis 0.4.0__tar.gz → 0.5.0__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.
- gyomu_python_analysis-0.5.0/PKG-INFO +25 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/pyproject.toml +13 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/helpers.py +8 -6
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/initialize.py +20 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/project/context.py +2 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/snapshot/analyze.py +1 -1
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/snapshot/commit.py +1 -1
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/snapshot/create.py +1 -1
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/snapshot/diff.py +1 -2
- gyomu_python_analysis-0.5.0/src/gyomu_python_analysis/snapshot/models.py +27 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/test_initialize.py +81 -4
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/snapshot/test_commit.py +3 -3
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/snapshot/test_create.py +4 -1
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/snapshot/test_diff.py +2 -2
- gyomu_python_analysis-0.4.0/PKG-INFO +0 -16
- gyomu_python_analysis-0.4.0/src/gyomu_python_analysis/snapshot/models.py +0 -103
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/.gitignore +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/README.md +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/experiments/griffe_analysis.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/experiments/griffe_dump.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/experiments/sample/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/experiments/sample/user.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/experiments/sample.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/pyproject.toml +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/ast/call.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/ast/comprehension.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/ast/for.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/ast/function.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/ast/if.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/ast/match.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/ast/try.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/ast/with.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/docstring/01-simple.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/docstring/02-args.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/docstring/03-typed-return.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/docstring/04-raises.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/docstring/05-examples.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/docstring/06-notes.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/docstring/07-complex.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/docstring/08-gyomu-context.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/docstring/09-custom-section.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/docstring/10-edge-cases.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/docstring/11-custom-and-gyomu-context.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/docstring/12-module.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/docstring/13-class.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/docstring/14-variable.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/docstring/15-custom-list-section.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/docstring/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/import/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/import/all.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/import/all2.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/import/imports.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/import/relative.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/shared.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/symbol/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/symbol/call.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/symbol/callable.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/symbol/classes.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/symbol/decorator.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/symbol/functions.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/symbol/generics.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/symbol/location.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/symbol/pydantic.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/symbol/type_alias.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/symbol/types.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/symbol/variable.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/types/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/fixtures/src/analysis/types/name.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/monorepo_fixtures/packages/project_a/pyproject.toml +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/monorepo_fixtures/packages/project_a/src/project_a/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/monorepo_fixtures/packages/project_a/src/project_a/module.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/monorepo_fixtures/packages/project_b/pyproject.toml +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/monorepo_fixtures/packages/project_b/src/project_b/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/monorepo_fixtures/packages/project_b/src/project_b/module.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/monorepo_fixtures/pyproject.toml +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/roadmap.md +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/ast/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/ast/statement.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/ast/symbol.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/cls.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/context.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/decorator.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/dependency.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/docstring.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/expression/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/expression/expr.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/functions.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/imports.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/internal/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/internal/common.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/internal/location.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/internal/visibility.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/pydantic.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/type_alias.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/types.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/analyzers/variables.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/delete_cache.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/extract/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/extract/symbols.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/file/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/file/source_file_context.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/get_module.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/load.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/load_file_context.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/load_module.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/metadata.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/parser/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/parser/docstring.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/analysis/workspace.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/error/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/error/analysis.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/path/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/path/conversion.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/project/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/project/workspace.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/snapshot/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/snapshot/project.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/snapshot/types.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/ast/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/ast/conftest.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/ast/helper.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/ast/test_call.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/ast/test_comprehension.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/ast/test_conversion.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/ast/test_dependency.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/ast/test_for.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/ast/test_function.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/ast/test_if.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/ast/test_match.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/ast/test_statement.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/ast/test_try.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/ast/test_with.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/expression/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/expression/test_analyze_expression_name.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/internal/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/internal/test_location.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/internal/test_visibility.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/test_analyze_classes.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/test_analyze_decorator.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/test_analyze_dependency.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/test_analyze_docstring.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/test_analyze_functions.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/test_analyze_imports.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/test_analyze_pydantic.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/test_analyze_type_alias.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/test_analyze_types.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/test_analyze_variable.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/analyzers/test_context.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/test_get_module.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/test_load.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/test_load_file.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/test_load_module.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/test_metadata.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/test_workspace.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/path/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/path/test_conversion.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/project/test_config.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/snapshot/__init__.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/snapshot/test_analyze.py +0 -0
- {gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/snapshot/test_project.py +0 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: gyomu-python-analysis
|
|
3
|
+
Version: 0.5.0
|
|
4
|
+
Summary: Gyomu Python Analysis
|
|
5
|
+
Author: Yoshihisa Matsumoto
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Classifier: Development Status :: 4 - Beta
|
|
8
|
+
Classifier: Intended Audience :: Developers
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
12
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
13
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
14
|
+
Requires-Python: >=3.13
|
|
15
|
+
Requires-Dist: docstring-parser>=0.18.0
|
|
16
|
+
Requires-Dist: griffelib>=2.2.0
|
|
17
|
+
Requires-Dist: gyomu-infra
|
|
18
|
+
Requires-Dist: gyomu-schema
|
|
19
|
+
Requires-Dist: pydantic
|
|
20
|
+
Requires-Dist: returns
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
|
|
23
|
+
# gyomu-python-analysis
|
|
24
|
+
|
|
25
|
+
python analysis components for Gyomu Python.
|
|
@@ -12,6 +12,19 @@ dependencies = [
|
|
|
12
12
|
"griffelib>=2.2.0",
|
|
13
13
|
"docstring-parser>=0.18.0",
|
|
14
14
|
]
|
|
15
|
+
license = "MIT"
|
|
16
|
+
authors = [
|
|
17
|
+
{ name = "Yoshihisa Matsumoto" },
|
|
18
|
+
]
|
|
19
|
+
classifiers = [
|
|
20
|
+
"Development Status :: 4 - Beta",
|
|
21
|
+
"Intended Audience :: Developers",
|
|
22
|
+
"License :: OSI Approved :: MIT License",
|
|
23
|
+
"Programming Language :: Python :: 3",
|
|
24
|
+
"Programming Language :: Python :: 3.13",
|
|
25
|
+
"Topic :: Software Development :: Libraries",
|
|
26
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
27
|
+
]
|
|
15
28
|
|
|
16
29
|
[build-system]
|
|
17
30
|
requires = ["hatchling"]
|
{gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/helpers.py
RENAMED
|
@@ -18,12 +18,6 @@ from gyomu_python_analysis.analysis.load_module import load_module_analysis
|
|
|
18
18
|
from gyomu_python_analysis.project.context import ProjectContext, PyProjectConfig
|
|
19
19
|
from gyomu_python_analysis.snapshot.models import (
|
|
20
20
|
AnalyzeProjectChangesResult,
|
|
21
|
-
FileAdded,
|
|
22
|
-
FileChange,
|
|
23
|
-
FileDeleted,
|
|
24
|
-
FileSnapshot,
|
|
25
|
-
FileUpdated,
|
|
26
|
-
ProjectSnapshot,
|
|
27
21
|
)
|
|
28
22
|
from gyomu_schema.schemas.python.class_analysis import ClassAnalysis
|
|
29
23
|
from gyomu_schema.schemas.python.function_analysis import FunctionAnalysis
|
|
@@ -36,6 +30,14 @@ from gyomu_schema.schemas.python.types import (
|
|
|
36
30
|
WorkspaceRelativePath,
|
|
37
31
|
)
|
|
38
32
|
from gyomu_schema.schemas.python.variable import VariableAnalysis
|
|
33
|
+
from gyomu_schema.schemas.snapshot.types import (
|
|
34
|
+
FileAdded,
|
|
35
|
+
FileChange,
|
|
36
|
+
FileDeleted,
|
|
37
|
+
FileSnapshot,
|
|
38
|
+
FileUpdated,
|
|
39
|
+
ProjectSnapshot,
|
|
40
|
+
)
|
|
39
41
|
from gyomu_schema.schemas.types import FullPath
|
|
40
42
|
from returns.result import Failure
|
|
41
43
|
|
|
@@ -71,16 +71,36 @@ def initialize_project_context(
|
|
|
71
71
|
files = find_included_python_files(
|
|
72
72
|
project_root=project_root, source_root=source_root
|
|
73
73
|
)
|
|
74
|
+
|
|
75
|
+
package_roots = find_package_roots(
|
|
76
|
+
project_root=project_root,
|
|
77
|
+
source_root=source_root,
|
|
78
|
+
)
|
|
79
|
+
|
|
74
80
|
return Success(
|
|
75
81
|
ProjectContext(
|
|
76
82
|
project_root=project_root,
|
|
77
83
|
source_root=source_root,
|
|
78
84
|
config=config_result.unwrap(),
|
|
79
85
|
included_files=files,
|
|
86
|
+
package_roots=package_roots,
|
|
80
87
|
)
|
|
81
88
|
)
|
|
82
89
|
|
|
83
90
|
|
|
91
|
+
def find_package_roots(
|
|
92
|
+
project_root: FullPath,
|
|
93
|
+
source_root: ProjectRelativePath,
|
|
94
|
+
) -> tuple[ProjectRelativePath, ...]:
|
|
95
|
+
source_path = project_root / source_root
|
|
96
|
+
|
|
97
|
+
return tuple(
|
|
98
|
+
ProjectRelativePath(path.relative_to(project_root))
|
|
99
|
+
for path in sorted(source_path.iterdir(), key=lambda path: path.name)
|
|
100
|
+
if path.is_dir() and (path / "__init__.py").is_file()
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
|
|
84
104
|
def find_included_python_files(
|
|
85
105
|
project_root: FullPath, source_root: ProjectRelativePath
|
|
86
106
|
) -> frozenset[ProjectRelativePath]:
|
|
@@ -109,6 +109,7 @@ class ProjectContext:
|
|
|
109
109
|
source_root: ProjectRelativePath,
|
|
110
110
|
config: PyProjectConfig,
|
|
111
111
|
included_files: frozenset[ProjectRelativePath] = frozenset(),
|
|
112
|
+
package_roots: tuple[ProjectRelativePath, ...] = tuple(),
|
|
112
113
|
) -> None:
|
|
113
114
|
self.project_root = project_root
|
|
114
115
|
self.source_root = source_root
|
|
@@ -118,3 +119,4 @@ class ProjectContext:
|
|
|
118
119
|
)
|
|
119
120
|
self.config = config
|
|
120
121
|
self.included_files = included_files
|
|
122
|
+
self.package_roots = package_roots
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from gyomu_infra.filesystem.file_io import read_json
|
|
2
2
|
from gyomu_schema.schemas.python.types import WorkspaceRelativePath
|
|
3
|
+
from gyomu_schema.schemas.snapshot.types import ProjectSnapshot
|
|
3
4
|
from gyomu_schema.schemas.types import FullPath
|
|
4
5
|
from returns.result import Failure, Result, Success
|
|
5
6
|
|
|
@@ -9,7 +10,6 @@ from gyomu_python_analysis.snapshot.create import create_snapshot
|
|
|
9
10
|
from gyomu_python_analysis.snapshot.diff import diff_snapshot
|
|
10
11
|
from gyomu_python_analysis.snapshot.models import (
|
|
11
12
|
AnalyzeProjectChangesResult,
|
|
12
|
-
ProjectSnapshot,
|
|
13
13
|
)
|
|
14
14
|
from gyomu_python_analysis.snapshot.project import ensure_project_workspace
|
|
15
15
|
|
|
@@ -3,6 +3,7 @@ from collections import Counter
|
|
|
3
3
|
from gyomu_infra.filesystem.file_io import write_json
|
|
4
4
|
from gyomu_infra.logger import logger
|
|
5
5
|
from gyomu_schema.schemas.python.types import WorkspaceRelativePath
|
|
6
|
+
from gyomu_schema.schemas.snapshot.types import ProjectSnapshot
|
|
6
7
|
from gyomu_schema.schemas.types import FullPath
|
|
7
8
|
from returns.result import Failure, Result
|
|
8
9
|
|
|
@@ -10,7 +11,6 @@ from gyomu_python_analysis.error.analysis import AnalysisError
|
|
|
10
11
|
from gyomu_python_analysis.project.context import ProjectContext
|
|
11
12
|
from gyomu_python_analysis.snapshot.create import create_snapshot
|
|
12
13
|
from gyomu_python_analysis.snapshot.diff import diff_snapshot
|
|
13
|
-
from gyomu_python_analysis.snapshot.models import ProjectSnapshot
|
|
14
14
|
from gyomu_python_analysis.snapshot.project import ensure_project_workspace
|
|
15
15
|
|
|
16
16
|
|
|
@@ -5,12 +5,12 @@ from gyomu_infra.filesystem.file_search import FileSearch
|
|
|
5
5
|
from gyomu_infra.hash.hash import hash_file
|
|
6
6
|
from gyomu_schema.filesystem.file import FileCompareType, FileFilterInfo, FileFilterType
|
|
7
7
|
from gyomu_schema.schemas.python.types import ProjectRelativePath, WorkspaceRelativePath
|
|
8
|
+
from gyomu_schema.schemas.snapshot.types import FileSnapshot, ProjectSnapshot
|
|
8
9
|
from gyomu_schema.schemas.types import FullPath
|
|
9
10
|
from returns.result import Failure, Result, Success
|
|
10
11
|
|
|
11
12
|
from gyomu_python_analysis.error.analysis import AnalysisError
|
|
12
13
|
from gyomu_python_analysis.project.context import ProjectContext
|
|
13
|
-
from gyomu_python_analysis.snapshot.models import FileSnapshot, ProjectSnapshot
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
def create_snapshot(
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
|
|
3
|
+
from gyomu_schema.schemas.snapshot.types import FileChange, ProjectSnapshot
|
|
4
|
+
from gyomu_schema.schemas.types import FullPath
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@dataclass
|
|
8
|
+
class AnalyzeProjectChangesResult:
|
|
9
|
+
"""Represents the result of analyzing project changes, containing project
|
|
10
|
+
identification, snapshot paths, previous and current snapshots, and file
|
|
11
|
+
differences.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
project_id: str
|
|
15
|
+
"""The identifier of the analyzed project."""
|
|
16
|
+
|
|
17
|
+
snapshot_path: FullPath
|
|
18
|
+
"""The full path to the snapshot storage or record."""
|
|
19
|
+
|
|
20
|
+
previous_snapshot: ProjectSnapshot | None
|
|
21
|
+
"""The previous project snapshot, or None if this is the initial snapshot."""
|
|
22
|
+
|
|
23
|
+
current_snapshot: ProjectSnapshot
|
|
24
|
+
"""The current project snapshot."""
|
|
25
|
+
|
|
26
|
+
diff: tuple[FileChange, ...]
|
|
27
|
+
"""A tuple of file changes detected between the previous and current snapshots."""
|
{gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/test_initialize.py
RENAMED
|
@@ -3,6 +3,7 @@ from pathlib import Path
|
|
|
3
3
|
import pytest
|
|
4
4
|
from gyomu_python_analysis.analysis.initialize import (
|
|
5
5
|
find_included_python_files,
|
|
6
|
+
find_package_roots,
|
|
6
7
|
initialize_project_context,
|
|
7
8
|
initialize_project_from_workspace,
|
|
8
9
|
read_version,
|
|
@@ -87,10 +88,7 @@ class TestFindIncludedPythonFiles:
|
|
|
87
88
|
|
|
88
89
|
|
|
89
90
|
class TestInitializeProjectContext:
|
|
90
|
-
def test_initialize_project_context(
|
|
91
|
-
self,
|
|
92
|
-
tmp_path: Path,
|
|
93
|
-
) -> None:
|
|
91
|
+
def test_initialize_project_context(self, tmp_path: Path, mocker) -> None:
|
|
94
92
|
source_root = tmp_path / "src"
|
|
95
93
|
|
|
96
94
|
pyproject = """\
|
|
@@ -118,6 +116,14 @@ class TestInitializeProjectContext:
|
|
|
118
116
|
encoding="utf-8",
|
|
119
117
|
)
|
|
120
118
|
|
|
119
|
+
mocker.patch(
|
|
120
|
+
"gyomu_python_analysis.analysis.initialize.find_package_roots",
|
|
121
|
+
return_value=(
|
|
122
|
+
ProjectRelativePath(Path("a")),
|
|
123
|
+
ProjectRelativePath(Path("b")),
|
|
124
|
+
),
|
|
125
|
+
)
|
|
126
|
+
|
|
121
127
|
result = initialize_project_context(
|
|
122
128
|
FullPath(tmp_path),
|
|
123
129
|
ProjectRelativePath(Path("src")),
|
|
@@ -137,6 +143,10 @@ class TestInitializeProjectContext:
|
|
|
137
143
|
ProjectRelativePath(Path("src/example/foo.py")),
|
|
138
144
|
}
|
|
139
145
|
)
|
|
146
|
+
assert context.package_roots == (
|
|
147
|
+
ProjectRelativePath(Path("a")),
|
|
148
|
+
ProjectRelativePath(Path("b")),
|
|
149
|
+
)
|
|
140
150
|
|
|
141
151
|
def test_initialize_project_context_with_hatch_dynamic_version(
|
|
142
152
|
self,
|
|
@@ -307,6 +317,13 @@ class TestInitializeProjectFromWorkspace:
|
|
|
307
317
|
"gyomu_python_analysis.analysis.initialize.find_included_python_files",
|
|
308
318
|
return_value=frozenset(),
|
|
309
319
|
)
|
|
320
|
+
mocker.patch(
|
|
321
|
+
"gyomu_python_analysis.analysis.initialize.find_package_roots",
|
|
322
|
+
return_value=(
|
|
323
|
+
ProjectRelativePath(Path("a")),
|
|
324
|
+
ProjectRelativePath(Path("b")),
|
|
325
|
+
),
|
|
326
|
+
)
|
|
310
327
|
|
|
311
328
|
result = initialize_project_context(
|
|
312
329
|
project_root=project_root,
|
|
@@ -331,3 +348,63 @@ class TestInitializeProjectFromWorkspace:
|
|
|
331
348
|
"src/generated",
|
|
332
349
|
"tests/resources",
|
|
333
350
|
]
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
class TestFindPackageRoots:
|
|
354
|
+
def test_find_roots(
|
|
355
|
+
self,
|
|
356
|
+
tmp_path: Path,
|
|
357
|
+
) -> None:
|
|
358
|
+
# fixture:
|
|
359
|
+
#
|
|
360
|
+
# src/
|
|
361
|
+
# package_a/
|
|
362
|
+
# __init__.py
|
|
363
|
+
# package_b/
|
|
364
|
+
# __init__.py
|
|
365
|
+
# not_package/
|
|
366
|
+
# module.py
|
|
367
|
+
#
|
|
368
|
+
project_root = tmp_path
|
|
369
|
+
source_root = ProjectRelativePath(Path("src"))
|
|
370
|
+
|
|
371
|
+
(project_root / "src" / "package_a").mkdir(parents=True)
|
|
372
|
+
(project_root / "src" / "package_a" / "__init__.py").touch()
|
|
373
|
+
|
|
374
|
+
(project_root / "src" / "package_b").mkdir(parents=True)
|
|
375
|
+
(project_root / "src" / "package_b" / "__init__.py").touch()
|
|
376
|
+
|
|
377
|
+
(project_root / "src" / "not_package").mkdir(parents=True)
|
|
378
|
+
(project_root / "src" / "not_package" / "module.py").touch()
|
|
379
|
+
|
|
380
|
+
result = find_package_roots(
|
|
381
|
+
project_root=FullPath(project_root),
|
|
382
|
+
source_root=source_root,
|
|
383
|
+
)
|
|
384
|
+
|
|
385
|
+
assert result == (
|
|
386
|
+
ProjectRelativePath(Path("src/package_a")),
|
|
387
|
+
ProjectRelativePath(Path("src/package_b")),
|
|
388
|
+
)
|
|
389
|
+
|
|
390
|
+
def test_does_not_include_nested_packages(
|
|
391
|
+
self,
|
|
392
|
+
tmp_path: Path,
|
|
393
|
+
) -> None:
|
|
394
|
+
project_root = FullPath(tmp_path)
|
|
395
|
+
source_root = ProjectRelativePath(Path("src"))
|
|
396
|
+
|
|
397
|
+
package = project_root / "src" / "package"
|
|
398
|
+
package.mkdir(parents=True)
|
|
399
|
+
(package / "__init__.py").touch()
|
|
400
|
+
|
|
401
|
+
nested_package = package / "nested"
|
|
402
|
+
nested_package.mkdir()
|
|
403
|
+
(nested_package / "__init__.py").touch()
|
|
404
|
+
|
|
405
|
+
result = find_package_roots(
|
|
406
|
+
project_root=project_root,
|
|
407
|
+
source_root=source_root,
|
|
408
|
+
)
|
|
409
|
+
|
|
410
|
+
assert result == (ProjectRelativePath(Path("src/package")),)
|
{gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/snapshot/test_commit.py
RENAMED
|
@@ -3,15 +3,15 @@ from pathlib import Path
|
|
|
3
3
|
|
|
4
4
|
from gyomu_python_analysis.error.analysis import AnalysisError
|
|
5
5
|
from gyomu_python_analysis.snapshot.commit import commit_project_changes
|
|
6
|
-
from
|
|
6
|
+
from gyomu_schema.error.io import GyomuIOError, IOLayer, IOOperation
|
|
7
|
+
from gyomu_schema.schemas.python.types import ProjectRelativePath, WorkspaceRelativePath
|
|
8
|
+
from gyomu_schema.schemas.snapshot.types import (
|
|
7
9
|
FileAdded,
|
|
8
10
|
FileDeleted,
|
|
9
11
|
FileSnapshot,
|
|
10
12
|
FileUpdated,
|
|
11
13
|
ProjectSnapshot,
|
|
12
14
|
)
|
|
13
|
-
from gyomu_schema.error.io import GyomuIOError, IOLayer, IOOperation
|
|
14
|
-
from gyomu_schema.schemas.python.types import ProjectRelativePath, WorkspaceRelativePath
|
|
15
15
|
from gyomu_schema.schemas.types import FullPath
|
|
16
16
|
from returns.result import Failure, Success
|
|
17
17
|
|
{gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/snapshot/test_create.py
RENAMED
|
@@ -9,9 +9,12 @@ from gyomu_python_analysis.snapshot.create import (
|
|
|
9
9
|
create_snapshot,
|
|
10
10
|
enumerate_target_files,
|
|
11
11
|
)
|
|
12
|
-
from gyomu_python_analysis.snapshot.models import FileSnapshot, ProjectSnapshot
|
|
13
12
|
from gyomu_schema.error.io import GyomuIOError, IOLayer, IOOperation
|
|
14
13
|
from gyomu_schema.schemas.python.types import ProjectRelativePath, WorkspaceRelativePath
|
|
14
|
+
from gyomu_schema.schemas.snapshot.types import (
|
|
15
|
+
FileSnapshot,
|
|
16
|
+
ProjectSnapshot,
|
|
17
|
+
)
|
|
15
18
|
from gyomu_schema.schemas.types import FullPath
|
|
16
19
|
from returns.result import Failure, Success
|
|
17
20
|
|
{gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/snapshot/test_diff.py
RENAMED
|
@@ -2,14 +2,14 @@ from datetime import UTC, datetime
|
|
|
2
2
|
from pathlib import Path
|
|
3
3
|
|
|
4
4
|
from gyomu_python_analysis.snapshot.diff import diff_snapshot
|
|
5
|
-
from
|
|
5
|
+
from gyomu_schema.schemas.python.types import ProjectRelativePath, WorkspaceRelativePath
|
|
6
|
+
from gyomu_schema.schemas.snapshot.types import (
|
|
6
7
|
FileAdded,
|
|
7
8
|
FileDeleted,
|
|
8
9
|
FileSnapshot,
|
|
9
10
|
FileUpdated,
|
|
10
11
|
ProjectSnapshot,
|
|
11
12
|
)
|
|
12
|
-
from gyomu_schema.schemas.python.types import ProjectRelativePath, WorkspaceRelativePath
|
|
13
13
|
|
|
14
14
|
PROJECT_ROOT = WorkspaceRelativePath(Path("packages/example"))
|
|
15
15
|
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.5
|
|
2
|
-
Name: gyomu-python-analysis
|
|
3
|
-
Version: 0.4.0
|
|
4
|
-
Summary: Gyomu Python Analysis
|
|
5
|
-
Requires-Python: >=3.13
|
|
6
|
-
Requires-Dist: docstring-parser>=0.18.0
|
|
7
|
-
Requires-Dist: griffelib>=2.2.0
|
|
8
|
-
Requires-Dist: gyomu-infra
|
|
9
|
-
Requires-Dist: gyomu-schema
|
|
10
|
-
Requires-Dist: pydantic
|
|
11
|
-
Requires-Dist: returns
|
|
12
|
-
Description-Content-Type: text/markdown
|
|
13
|
-
|
|
14
|
-
# gyomu-python-analysis
|
|
15
|
-
|
|
16
|
-
python analysis components for Gyomu Python.
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
from dataclasses import dataclass
|
|
2
|
-
from datetime import datetime
|
|
3
|
-
from typing import Literal
|
|
4
|
-
|
|
5
|
-
from gyomu_schema.schemas.python.types import ProjectRelativePath, WorkspaceRelativePath
|
|
6
|
-
from gyomu_schema.schemas.types import FullPath
|
|
7
|
-
from pydantic import BaseModel
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class FileSnapshot(BaseModel):
|
|
11
|
-
"""Represents a snapshot of an individual file containing its relative path,
|
|
12
|
-
content hash, and modification timestamp.
|
|
13
|
-
"""
|
|
14
|
-
|
|
15
|
-
project_relative_path: ProjectRelativePath
|
|
16
|
-
"""The project-relative path of the file."""
|
|
17
|
-
|
|
18
|
-
raw_hash: str
|
|
19
|
-
"""The raw content hash of the file."""
|
|
20
|
-
|
|
21
|
-
modified_at: datetime
|
|
22
|
-
"""The timestamp when the file was last modified."""
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class ProjectSnapshot(BaseModel):
|
|
26
|
-
"""Represents a snapshot of a project containing its root path and a collection
|
|
27
|
-
of file snapshots.
|
|
28
|
-
"""
|
|
29
|
-
|
|
30
|
-
project_root: WorkspaceRelativePath
|
|
31
|
-
"""The workspace-relative path of the project root."""
|
|
32
|
-
|
|
33
|
-
files: tuple[FileSnapshot, ...]
|
|
34
|
-
"""A collection of file snapshots belonging to the project."""
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
class FileAdded(BaseModel):
|
|
38
|
-
"""Represents the addition of a new file in the project."""
|
|
39
|
-
|
|
40
|
-
project_relative_path: ProjectRelativePath
|
|
41
|
-
"""The project-relative path of the added file."""
|
|
42
|
-
|
|
43
|
-
current: FileSnapshot
|
|
44
|
-
"""The current file snapshot."""
|
|
45
|
-
|
|
46
|
-
type: Literal["added"] = "added"
|
|
47
|
-
"""The change type discriminator, set to 'added'."""
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
class FileUpdated(BaseModel):
|
|
51
|
-
"""Represents an update to an existing file in the project."""
|
|
52
|
-
|
|
53
|
-
project_relative_path: ProjectRelativePath
|
|
54
|
-
"""The project-relative path of the updated file."""
|
|
55
|
-
|
|
56
|
-
previous: FileSnapshot
|
|
57
|
-
"""The previous file snapshot before the update."""
|
|
58
|
-
|
|
59
|
-
current: FileSnapshot
|
|
60
|
-
"""The current file snapshot after the update."""
|
|
61
|
-
|
|
62
|
-
type: Literal["updated"] = "updated"
|
|
63
|
-
"""The change type discriminator, set to 'updated'."""
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
class FileDeleted(BaseModel):
|
|
67
|
-
"""Represents the deletion of a file from the project."""
|
|
68
|
-
|
|
69
|
-
project_relative_path: ProjectRelativePath
|
|
70
|
-
"""The project-relative path of the deleted file."""
|
|
71
|
-
|
|
72
|
-
previous: FileSnapshot
|
|
73
|
-
"""The previous file snapshot before deletion."""
|
|
74
|
-
|
|
75
|
-
type: Literal["deleted"] = "deleted"
|
|
76
|
-
"""The change type discriminator, set to 'deleted'."""
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
type FileChange = FileAdded | FileUpdated | FileDeleted
|
|
80
|
-
"""Represents any file change event (added, updated, or deleted)."""
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
@dataclass
|
|
84
|
-
class AnalyzeProjectChangesResult:
|
|
85
|
-
"""Represents the result of analyzing project changes, containing project
|
|
86
|
-
identification, snapshot paths, previous and current snapshots, and file
|
|
87
|
-
differences.
|
|
88
|
-
"""
|
|
89
|
-
|
|
90
|
-
project_id: str
|
|
91
|
-
"""The identifier of the analyzed project."""
|
|
92
|
-
|
|
93
|
-
snapshot_path: FullPath
|
|
94
|
-
"""The full path to the snapshot storage or record."""
|
|
95
|
-
|
|
96
|
-
previous_snapshot: ProjectSnapshot | None
|
|
97
|
-
"""The previous project snapshot, or None if this is the initial snapshot."""
|
|
98
|
-
|
|
99
|
-
current_snapshot: ProjectSnapshot
|
|
100
|
-
"""The current project snapshot."""
|
|
101
|
-
|
|
102
|
-
diff: tuple[FileChange, ...]
|
|
103
|
-
"""A tuple of file changes detected between the previous and current snapshots."""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/python_analysis_test_support/__init__.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
|
|
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
|
{gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/src/gyomu_python_analysis/__init__.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
|
|
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
|
{gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/test_get_module.py
RENAMED
|
File without changes
|
{gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/test_load.py
RENAMED
|
File without changes
|
{gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/test_load_file.py
RENAMED
|
File without changes
|
{gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/test_load_module.py
RENAMED
|
File without changes
|
{gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/test_metadata.py
RENAMED
|
File without changes
|
{gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/analysis/test_workspace.py
RENAMED
|
File without changes
|
|
File without changes
|
{gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/path/test_conversion.py
RENAMED
|
File without changes
|
{gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/project/test_config.py
RENAMED
|
File without changes
|
|
File without changes
|
{gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/snapshot/test_analyze.py
RENAMED
|
File without changes
|
{gyomu_python_analysis-0.4.0 → gyomu_python_analysis-0.5.0}/tests/unit/snapshot/test_project.py
RENAMED
|
File without changes
|