cg-code-graph 0.23.9__tar.gz → 0.23.10__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.
- {cg_code_graph-0.23.9/cg_code_graph.egg-info → cg_code_graph-0.23.10}/PKG-INFO +1 -1
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/__init__.py +1 -1
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/parity_structure.py +136 -15
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10/cg_code_graph.egg-info}/PKG-INFO +1 -1
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph.egg-info/SOURCES.txt +1 -0
- cg_code_graph-0.23.10/tests/test_parity_members.py +67 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/LICENSE +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/MANIFEST.in +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/README.md +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/__main__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/affected.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/agent_rules.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/agents.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/aitools.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/android_ipc.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/apple_ipc.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/apps.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/blindspots.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/bridges.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/brokers.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/cli.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/cmake_sources.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/concepts.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/config.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/core/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/core/cache.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/core/detect.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/core/env.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/core/extractors.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/core/fsutil.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/core/generated.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/core/model.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/core/paths.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/core/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/core/redact.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/core/store.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/core/syntax_errors.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/coverage.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/dart_isolates.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/doctor.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/explore.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/external.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/graphql.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/guard_facts.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/hooks.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/indexer.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/insecure_transport.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/install_rules.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/jobs.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/link.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/lint_async.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/local_ipc.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/local_sockets.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/mcp_graphs.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/mcp_install.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/mcp_server.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/parity.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/payload.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plans.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/platform_scan.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/platforms.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/astro/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/astro/content.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/astro/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/cfamily/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/cfamily/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/cfamily/syntax.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/dart/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/dart/bridges.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/dart/extractor/bin/extract.dart +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/dart/extractor/pubspec.lock +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/dart/extractor/pubspec.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/dart/http.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/dart/models.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/dart/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/dart/program.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/django/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/django/extras.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/django/models.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/django/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/django/schemas.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/django/shapes.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/django/urls.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/express/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/express/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/flutter/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/flutter/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/java/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/java/exact.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/java/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/jvm/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/jvm/interop.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/jvm/spring.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/kotlin/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/kotlin/exact.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/kotlin/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/kotlin/reparse.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/laravel/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/laravel/broadcast.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/laravel/massassign.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/laravel/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/laravel/tests.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/laravel/values.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/native/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/native/gates.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/native/runner.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/native/scipread.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/native/ts.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/nest/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/nest/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/nextjs/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/nextjs/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/nuxt/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/nuxt/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/php/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/php/external.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/php/extractor/composer.json +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/php/extractor/composer.lock +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/php/extractor/extract.php +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/php/gating.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/php/http_client.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/php/inline_guards.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/php/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/php/strings.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/python/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/python/aitools.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/python/external.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/python/fields.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/python/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/python/refs.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/python/roots.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/python/socketio.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/python/subproc.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/python/tests.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/python/values.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/pyweb/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/pyweb/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/pyweb/values.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/rust/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/rust/cargo.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/rust/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/rust/syntax.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/scip/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/scip/importer.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/scip/scip.proto +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/scip/scip_pb2.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/stubs/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/stubs/plugins.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/swift/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/swift/baseurl.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/swift/exact.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/swift/indexstore.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/swift/packages.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/swift/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/ts/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/ts/baseurl.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/ts/extractor/extract.mjs +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/ts/extractor/fw.mjs +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/ts/extractor/package-lock.json +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/ts/extractor/package.json +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/ts/extractor/rr.mjs +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/ts/nav.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/ts/plugin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/ts/react_router.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/tsweb/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/tsweb/common.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/tsweb/data.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/c_cpp.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/common.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/dart.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/django-ninja.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/django.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/djangorestframework.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/express.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/java.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/kotlin.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/laravel.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/nest.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/nextjs.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/nuxt.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/php.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/python.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/react-router.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/rust.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/spring.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/swift.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/presets/typescript.yaml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/process_runs.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/protocols/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/protocols/builtin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/protocols/matchers.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/protocols/view.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/query.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/realtime.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/realtime_events.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/realtime_native.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/realtime_ws.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/roundtrip.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/routes.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/rpc.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/sdk_systems.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/sockets.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/ssrf_input.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/starters.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/surface.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/tests_index.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/udp_apps.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/update_check.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/viz/__init__.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/viz/graph.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/viz/server.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/viz/static/app.css +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/viz/static/app.js +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/viz/static/index.html +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/viz/static/layered.js +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/viz/static/vendor/VERSIONS.txt +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/viz/static/vendor/cose-base.js +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/viz/static/vendor/cytoscape-fcose.js +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/viz/static/vendor/cytoscape.min.js +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/viz/static/vendor/layout-base.js +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/viz/tools/package-lock.json +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/viz/tools/package.json +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/viz/tools/shoot.mjs +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/watch.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/webhook_subs.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/webhooks.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/xcode.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph.egg-info/dependency_links.txt +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph.egg-info/entry_points.txt +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph.egg-info/requires.txt +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph.egg-info/top_level.txt +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/pyproject.toml +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/setup.cfg +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_affected.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_agents_install.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_agents_md.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_ai_tools.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_android_ipc.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_apple_ipc.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_astro.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_astro_content.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_astro_server.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_bridges.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_bridges_pigeon_monorepo.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_brokers.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_cache_clean.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_cache_invalidation.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_cache_migration.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_channels_tests.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_cli_output.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_cmake_sources.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_completeness.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_config_extras.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_coverage.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_coverage_ts_hint.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_dart_isolates.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_db_connections.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_dead_wrappers.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_dispatch_interfaces.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_dispatch_part3.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_django_flutter.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_docs_languages.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_docs_links.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_echo_ref.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_echo_wrapper.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_elysia.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_enum_constants.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_env.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_explore.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_external.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_fp_batch.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_gating.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_generated.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_graphql.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_hooks.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_impact_overrides.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_index_isolation.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_inherited_overrides.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_inline_guards.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_install_rules.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_192.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_201.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_202.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_203.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_204.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_205.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_206.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_207.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_208.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_209.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_210.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_211.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_211_used_at.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_212.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_212_langs.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_218.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_219.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_issue_222.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_java.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_java_exact.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_jobs.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_js_refs.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_js_runtime.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_kotlin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_kotlin_binding.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_kotlin_exact.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_kotlin_fields.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_kotlin_mixed.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_kotlin_nav_consts.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_kotlin_props.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_laravel_determinism.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_laravel_receiver_narrowing.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_laravel_resources.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_laravel_route_paths.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_link_origin.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_lint_async.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_listing_files.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_local_ipc.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_local_sockets.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_mass_assignment.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_mcp.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_mcp_index.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_mcp_install.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_mcp_instructions.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_mcp_multi_graph.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_native_cfamily.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_native_concurrency.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_native_rust.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_nuxt_i18n.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_nuxt_import_dirs.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_nuxt_nitro.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_nuxt_rootsrc.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_nuxt_side_dirs.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_packaging.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_parity.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_parity_fields.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_parity_structure.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_php_http.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_php_props.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_plain_js.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_plans.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_platform_gaps.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_platform_type_variants.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_platforms.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_platforms_apple.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_presets_config.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_process_ipc.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_process_runs.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_protocols.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_python_app_tests_module.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_python_collection_chains.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_python_compat.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_python_entry_refs.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_python_fields.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_python_infer_cycles.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_python_roots.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_python_subprocess_tests.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_python_tests.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_python_web_hosts.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_python_web_routes.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_python_web_routes_more.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_react_router.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_readers_writers_specs.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_realtime.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_realtime_native.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_redact_salt.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_request_keys.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_roundtrip.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_route_specs.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_route_tables.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_routes_search_explain.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_rpc.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_scip_health.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_sdk_external.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_sdk_external_infra.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_sdk_external_mail.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_snippet.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_sockets.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_spring.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_ssrf.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_starters_budget.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_surface.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_surface_transport.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_swift.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_swift_binding.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_swift_exact.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_swift_facts.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_swift_fields.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_swift_modules.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_swift_more.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_swift_nav_values.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_swift_parse_errors.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_swift_platform_files.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_swift_props.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_swift_sdk.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_swift_testing.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_swift_values.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_tauri_events.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_tests_scope.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_ts_fields.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_ts_fields_js_vue.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_ts_file_specs.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_ts_frameworks.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_ts_node_http.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_ts_nuxt.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_ts_src_tsconfig.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_unguarded.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_update_check.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_values.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_viz.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_vue_nav.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_watch.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_webhooks.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_webhooks_152.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_webhooks_152b.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_websockets.py +0 -0
- {cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/tests/test_workspace_link.py +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""code-graph: deterministic code knowledge graph (beta)."""
|
|
2
|
-
__version__ = "0.23.
|
|
2
|
+
__version__ = "0.23.10"
|
|
@@ -56,6 +56,11 @@ RES = re.compile(r"""\b(?:UI|NS)?Image\(\s*(?:named:\s*)?"([^"\n]+)"|\bAsset\.(?
|
|
|
56
56
|
r"""\bImage\(\s*\.(\w+)\s*\)|\b(?:R|Res)\.(?:drawable|mipmap|raw)\.(\w+)""")
|
|
57
57
|
WIRE = re.compile(r'@(?:SerialName|SerializedName|JsonProperty|Json\(\s*name\s*=)\s*\(?\s*(?:value\s*=\s*)?"([^"\n]+)"')
|
|
58
58
|
RAW_CASE = re.compile(r'\bcase\s+`?(\w+)`?\s*=\s*"([^"\n]+)"')
|
|
59
|
+
ARM = re.compile(r"^(\s*)case\s+(?:let\s+|var\s+)?((?:\.\w+(?:\([^)]*\))?\s*,?\s*)+)(?:where\b[^:]*)?:")
|
|
60
|
+
DISPATCH = {"receive", "perform", "handle", "handleaction", "onaction", "reduce", "send", "dispatch", "process"}
|
|
61
|
+
MIN_MEMBER_SCORE = 0.35
|
|
62
|
+
MIN_NAME_SCORE = 0.45
|
|
63
|
+
MIN_BOTH_SCORE = 0.25
|
|
59
64
|
EDGE_KINDS = ("CALLS", "INSTANTIATES", "NAVIGATES_TO", "HTTP_CALLS", "USES_VALUE", "REFERENCES_FN", "USES_TYPE")
|
|
60
65
|
|
|
61
66
|
|
|
@@ -140,9 +145,11 @@ class Side:
|
|
|
140
145
|
self.by_file[r["file"]].append((r["line"], r["end_line"] or r["line"], r["id"]))
|
|
141
146
|
self.span[r["id"]] = (r["file"], r["line"], r["end_line"] or r["line"])
|
|
142
147
|
self.out = defaultdict(list)
|
|
143
|
-
|
|
148
|
+
self.out_at = defaultdict(list) # src -> [(line, dst, kind)]
|
|
149
|
+
q = f"SELECT src, dst, kind, line FROM edges WHERE kind IN ({','.join('?' * len(EDGE_KINDS))})"
|
|
144
150
|
for r in c.execute(q, EDGE_KINDS):
|
|
145
151
|
self.out[r["src"]].append((r["dst"], r["kind"]))
|
|
152
|
+
self.out_at[r["src"]].append((r["line"] or 0, r["dst"], r["kind"]))
|
|
146
153
|
self.http = {r["id"]: (r["name"] or r["id"]) for r in c.execute("SELECT id, name FROM nodes WHERE kind='http'")}
|
|
147
154
|
self.decl = defaultdict(list) # owner fqn -> [(name, kind, file, line)] of stored fields / enum cases
|
|
148
155
|
for r in c.execute("SELECT kind, fqn, file, line, attrs FROM nodes WHERE kind IN ('field', 'enum_case') "
|
|
@@ -202,21 +209,50 @@ class Side:
|
|
|
202
209
|
for la, lb, nid in self.by_file.get(file, ()):
|
|
203
210
|
if a <= la <= b:
|
|
204
211
|
for dst, kind in self.out.get(nid, ()):
|
|
205
|
-
|
|
206
|
-
p = re.sub(r"\{[^}]*\}|(?<=/):\w+", "{}", self.http.get(dst, dst).split(" ")[-1])
|
|
207
|
-
f.add("http:" + p.lstrip("/").lower())
|
|
208
|
-
continue
|
|
209
|
-
dq = self.fqn_of.get(dst)
|
|
210
|
-
t = rename(dq)
|
|
211
|
-
if t:
|
|
212
|
-
f.add("sym:" + t)
|
|
213
|
-
# the called member's own name (two words or more): `getDevices` on an AuthService and on
|
|
214
|
-
# an AuthRepository is the same call even when the owners are not paired
|
|
215
|
-
nm = _short(dq or "").split("(")[0]
|
|
216
|
-
if kind == "CALLS" and len(_words(nm)) >= 2:
|
|
217
|
-
f.add("call:" + re.sub(r"^(get|fetch|load)(?=[a-z])", "", _fold(nm)))
|
|
212
|
+
self._edge(f, dst, kind, rename)
|
|
218
213
|
return f
|
|
219
214
|
|
|
215
|
+
def _edge(self, f: set, dst: str, kind: str, rename) -> None:
|
|
216
|
+
if kind == "HTTP_CALLS" or dst in self.http:
|
|
217
|
+
p = re.sub(r"\{[^}]*\}|(?<=/):\w+", "{}", self.http.get(dst, dst).split(" ")[-1])
|
|
218
|
+
f.add("http:" + p.lstrip("/").lower())
|
|
219
|
+
return
|
|
220
|
+
dq = self.fqn_of.get(dst)
|
|
221
|
+
t = rename(dq)
|
|
222
|
+
if t:
|
|
223
|
+
f.add("sym:" + t)
|
|
224
|
+
# the called member's own name (two words or more): `getDevices` on an AuthService and on
|
|
225
|
+
# an AuthRepository is the same call even when the owners are not paired
|
|
226
|
+
nm = _short(dq or "").split("(")[0]
|
|
227
|
+
if kind == "CALLS" and len(_words(nm)) >= 2:
|
|
228
|
+
f.add("call:" + re.sub(r"^(get|fetch|load)(?=[a-z])", "", _fold(nm)))
|
|
229
|
+
|
|
230
|
+
def arms(self, sym: dict) -> list:
|
|
231
|
+
"""The top-level `case .x:` arms of a Swift `receive(_:)` / `perform(_:)` style switch: [(case names,
|
|
232
|
+
features of what the arm calls)]."""
|
|
233
|
+
file, a, b = self.span.get(sym["id"], (None, 0, 0))
|
|
234
|
+
if not file or b <= a:
|
|
235
|
+
return []
|
|
236
|
+
rows = self.text(file, a, b).split("\n")
|
|
237
|
+
hits = [(i, len(m.group(1)), m.group(2)) for i, ln in enumerate(rows) for m in [ARM.match(ln)] if m]
|
|
238
|
+
if not hits:
|
|
239
|
+
return []
|
|
240
|
+
top = min(h[1] for h in hits)
|
|
241
|
+
hits = [h for h in hits if h[1] == top]
|
|
242
|
+
out = []
|
|
243
|
+
for k, (i, _, names) in enumerate(hits):
|
|
244
|
+
lo, hi = a + i, (a + hits[k + 1][0] - 1 if k + 1 < len(hits) else b)
|
|
245
|
+
f = set()
|
|
246
|
+
for ln, dst, kind in self.out_at.get(sym["id"], ()):
|
|
247
|
+
if lo <= ln <= hi:
|
|
248
|
+
self._edge(f, dst, kind, lambda x: x)
|
|
249
|
+
for la, lb, nid in self.by_file.get(file, ()):
|
|
250
|
+
if lo <= la <= hi and nid != sym["id"]:
|
|
251
|
+
for dst, kind in self.out.get(nid, ()):
|
|
252
|
+
self._edge(f, dst, kind, lambda x: x)
|
|
253
|
+
out.append((re.findall(r"\.(\w+)", names), f))
|
|
254
|
+
return out
|
|
255
|
+
|
|
220
256
|
|
|
221
257
|
def match(S: dict, T: dict, out: dict, sym_of: dict, cat_of: dict, t_syms: dict, t_cat: dict, learn: bool = True) -> dict:
|
|
222
258
|
ui_s = {fq: is_ui(fq, sym, S["members"]) for fq, sym in sym_of.items()}
|
|
@@ -369,7 +405,8 @@ def _structure(S, T, out, sym_of, cat_of, t_syms, t_cat, used):
|
|
|
369
405
|
if sym is not None:
|
|
370
406
|
src_f[row["symbol"]] = sS.features(sym, lambda x: pairs.get(x)) | name_words(row["symbol"])
|
|
371
407
|
tgt_f = {fq: sT.features(sym, lambda x: x) | name_words(fq) for fq, sym in t_syms.items()
|
|
372
|
-
if fq not in used and not PREVIEW.search(_short(fq))
|
|
408
|
+
if fq not in used and not PREVIEW.search(_short(fq))
|
|
409
|
+
and not (_fold(_short(fq).split("(")[0]) in DISPATCH and sT.arms(sym))} # its arms are paired below
|
|
373
410
|
src_f = {fq: f for fq, f in src_f.items() if not PREVIEW.search(_short(fq))}
|
|
374
411
|
df = Counter()
|
|
375
412
|
for fs in list(src_f.values()) + list(tgt_f.values()):
|
|
@@ -423,4 +460,88 @@ def _structure(S, T, out, sym_of, cat_of, t_syms, t_cat, used):
|
|
|
423
460
|
else:
|
|
424
461
|
keep.append(row)
|
|
425
462
|
out["missing"] = keep
|
|
463
|
+
_members(sS, sT, out, sym_of, cat_of, t_syms, t_cat, used, S, T)
|
|
426
464
|
_by_fields(sS, sT, out, sym_of, cat_of, t_syms, t_cat, used, S, T)
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
def _members(sS, sT, out, sym_of, cat_of, t_syms, t_cat, used, S, T):
|
|
468
|
+
"""Members of matched types still missing, paired inside the counterpart type (#227): with an unmatched member,
|
|
469
|
+
or a top-level function, that makes the same paired calls, or with a `case .x:` arm of its `receive(_:)` /
|
|
470
|
+
`perform(_:)` switch (`handleCopyClick` on a view model, `case .copyGeneratedValue:` in the processor). Uses are
|
|
471
|
+
weighed within the pair of types, so a call that is common across the project still tells two members apart."""
|
|
472
|
+
pairs = {r["symbol"]: r["target"] for r in out["matched"]}
|
|
473
|
+
by_owner = defaultdict(list)
|
|
474
|
+
for r in out["missing"]:
|
|
475
|
+
if r.get("owner_matched") and r["symbol"] in sym_of and not PREVIEW.search(_short(r["symbol"])):
|
|
476
|
+
by_owner[r["owner_matched"]].append(r)
|
|
477
|
+
if not by_owner:
|
|
478
|
+
return
|
|
479
|
+
ident = lambda x: x # noqa: E731
|
|
480
|
+
top, top_inv = None, defaultdict(list)
|
|
481
|
+
taken_arms, best, cand_of = set(), {}, {}
|
|
482
|
+
for o, rows in by_owner.items():
|
|
483
|
+
units = [] # (key, target fqn, case name or None, category, features)
|
|
484
|
+
for nm, sym in T["members"].get(o, {}).items():
|
|
485
|
+
fq = f"{o}.{nm}"
|
|
486
|
+
arms = sT.arms(sym) if _fold(nm.split("(")[0]) in DISPATCH else []
|
|
487
|
+
for names, f in arms: # a dispatching switch stands for its arms, not as a whole
|
|
488
|
+
ws = set().union(*(name_words(n) for n in names))
|
|
489
|
+
units.append(((fq, names[0]), fq, names[0], "func", f | ws))
|
|
490
|
+
if not arms and fq not in used and not PREVIEW.search(nm):
|
|
491
|
+
units.append((fq, fq, None, t_cat.get(fq), sT.features(sym, ident) | name_words(fq)))
|
|
492
|
+
src = {r["symbol"]: sS.features(sym_of[r["symbol"]], pairs.get) | name_words(r["symbol"]) for r in rows}
|
|
493
|
+
if top is None: # top-level functions, met only through two paired uses
|
|
494
|
+
top = {}
|
|
495
|
+
for fq, sym in t_syms.items():
|
|
496
|
+
if t_cat.get(fq) == "func" and fq not in used and "." not in fq.replace(o, "") and fq in T["top"]:
|
|
497
|
+
top[fq] = {f for f in sT.features(sym, ident) if f.startswith("sym:")} | name_words(fq)
|
|
498
|
+
for f in top[fq]:
|
|
499
|
+
if f.startswith("sym:"):
|
|
500
|
+
top_inv[f].append(fq)
|
|
501
|
+
df = Counter()
|
|
502
|
+
for fs in list(src.values()) + [u[4] for u in units]:
|
|
503
|
+
df.update(fs)
|
|
504
|
+
n = len(src) + len(units)
|
|
505
|
+
for fq, fs in src.items():
|
|
506
|
+
extra = {t for f in fs if f.startswith("sym:") for t in top_inv.get(f, ())}
|
|
507
|
+
cands = [u for u in units if u[3] == cat_of.get(fq)] + [(t, t, None, "func", top[t]) for t in extra
|
|
508
|
+
if cat_of.get(fq) == "func"]
|
|
509
|
+
scored = []
|
|
510
|
+
for key, t, case, cat, tf in cands:
|
|
511
|
+
sh = fs & tf
|
|
512
|
+
uses = sum(1 for f in sh if not f.startswith("w:"))
|
|
513
|
+
words = len(sh) - uses
|
|
514
|
+
if case is None and t in top and uses < 2:
|
|
515
|
+
continue
|
|
516
|
+
if not (uses >= 2 or (uses and words) or words >= 2):
|
|
517
|
+
continue
|
|
518
|
+
wt = lambda f: math.log(1 + n / df[f]) if df[f] else math.log(1 + n) # noqa: E731
|
|
519
|
+
sc = sum(wt(f) for f in sh) / math.sqrt(sum(wt(f) for f in fs) * sum(wt(f) for f in tf))
|
|
520
|
+
if sc < (MIN_NAME_SCORE if not uses else MIN_BOTH_SCORE if words else MIN_MEMBER_SCORE):
|
|
521
|
+
continue # names alone must agree more; a use and a name word less
|
|
522
|
+
scored.append((sc, key, t, case, sh))
|
|
523
|
+
scored.sort(key=lambda x: -x[0])
|
|
524
|
+
if scored and (len(scored) == 1 or scored[1][0] < MARGIN * scored[0][0]):
|
|
525
|
+
best[fq] = scored[0]
|
|
526
|
+
by_key = defaultdict(list)
|
|
527
|
+
for fq, (sc, key, *_rest) in best.items():
|
|
528
|
+
by_key[key].append((sc, fq))
|
|
529
|
+
keep = []
|
|
530
|
+
for row in out["missing"]:
|
|
531
|
+
got = best.get(row["symbol"])
|
|
532
|
+
if not got:
|
|
533
|
+
keep.append(row)
|
|
534
|
+
continue
|
|
535
|
+
sc, key, t, case, sh = got
|
|
536
|
+
if max(by_key[key])[1] != row["symbol"] or (case is None and t in used) or key in taken_arms:
|
|
537
|
+
keep.append(row)
|
|
538
|
+
continue
|
|
539
|
+
if case is None:
|
|
540
|
+
used.add(t)
|
|
541
|
+
taken_arms.add(key)
|
|
542
|
+
ev = sorted(sh, key=lambda f: (f.startswith("w:"), f))[:6]
|
|
543
|
+
r = dict(row, target=t, confidence="structure", score=round(sc, 2), evidence=([f"case .{case}"] if case else []) + ev)
|
|
544
|
+
if case:
|
|
545
|
+
r["case"] = case
|
|
546
|
+
out["matched"].append(r)
|
|
547
|
+
out["missing"] = keep
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"""`cg parity --structure` (#227): members of a matched type paired by what they call inside the counterpart type
|
|
2
|
+
(`duplicatePlants` / `copySelected`), and Kotlin view-model handlers paired with the `case .x:` arms of the Swift
|
|
3
|
+
processor's `receive(_:)`. Invented app: a plant-care app in Swift and its Kotlin port."""
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
import pytest
|
|
8
|
+
|
|
9
|
+
sys.path.insert(0, str(Path(__file__).parent))
|
|
10
|
+
pytest.importorskip("tree_sitter_swift")
|
|
11
|
+
pytest.importorskip("tree_sitter_kotlin")
|
|
12
|
+
from test_parity import build # noqa: E402
|
|
13
|
+
from cg_code_graph import parity as P # noqa: E402
|
|
14
|
+
|
|
15
|
+
IOS = {
|
|
16
|
+
"Garden/Store/PlantStore.swift":
|
|
17
|
+
"final class PlantStore {\n func insertPlant(_ p: Int) {}\n func nextSortIndex() -> Int { 0 }\n"
|
|
18
|
+
" func archiveAll() {}\n\n func duplicatePlants() {\n let i = nextSortIndex()\n insertPlant(i)\n }\n}\n",
|
|
19
|
+
"Garden/Services/WateringService.swift":
|
|
20
|
+
"final class WateringService {\n func logWatering() {}\n func snooze() {}\n}\n",
|
|
21
|
+
"Garden/Plant/PlantAction.swift":
|
|
22
|
+
"enum PlantAction {\n case waterNowPressed\n case renamePlantTapped(String)\n case dismissTapped\n}\n",
|
|
23
|
+
"Garden/Plant/PlantProcessor.swift":
|
|
24
|
+
"final class PlantProcessor {\n let watering = WateringService()\n var name = \"\"\n\n"
|
|
25
|
+
" func receive(_ action: PlantAction) {\n switch action {\n case .waterNowPressed:\n"
|
|
26
|
+
" watering.logWatering()\n case let .renamePlantTapped(newName):\n name = newName\n"
|
|
27
|
+
" case .dismissTapped:\n watering.snooze()\n }\n }\n}\n",
|
|
28
|
+
}
|
|
29
|
+
ANDROID = {
|
|
30
|
+
"app/src/main/java/com/leafy/store/PlantStore.kt":
|
|
31
|
+
"package com.leafy.store\n\nclass PlantStore {\n fun insertPlant(p: Int) {}\n fun nextSortIndex(): Int = 0\n"
|
|
32
|
+
" fun archiveAll() {}\n\n fun copySelected() {\n val i = nextSortIndex()\n insertPlant(i)\n }\n"
|
|
33
|
+
" fun exportCsv() {}\n}\n",
|
|
34
|
+
"app/src/main/java/com/leafy/services/WateringService.kt":
|
|
35
|
+
"package com.leafy.services\n\nclass WateringService {\n fun logWatering() {}\n fun snooze() {}\n}\n",
|
|
36
|
+
"app/src/main/java/com/leafy/plant/PlantViewModel.kt":
|
|
37
|
+
"package com.leafy.plant\n\nimport com.leafy.services.WateringService\n\nclass PlantViewModel(private val watering: WateringService) {\n"
|
|
38
|
+
" var name = \"\"\n fun handleWaterNowClick() {\n watering.logWatering()\n }\n"
|
|
39
|
+
" fun handleRenamePlantTapped(newName: String) {\n name = newName\n }\n"
|
|
40
|
+
" fun handleSettingsClick() {}\n}\n",
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@pytest.fixture(scope="module")
|
|
45
|
+
def dbs():
|
|
46
|
+
return build(IOS, "gios"), build(ANDROID, "gandroid")
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def test_member_pairs_by_paired_calls(dbs):
|
|
50
|
+
res = P.parity(*dbs, structure=True)
|
|
51
|
+
m = {r["symbol"]: r for r in res["matched"]}
|
|
52
|
+
r = m["PlantStore.duplicatePlants"]
|
|
53
|
+
assert r["target"] == "com.leafy.store.PlantStore.copySelected" and r["confidence"] == "structure", r
|
|
54
|
+
assert "sym:com.leafy.store.PlantStore.insertPlant" in r["evidence"]
|
|
55
|
+
# without --structure nothing is inferred
|
|
56
|
+
assert "PlantStore.duplicatePlants" in {x["symbol"] for x in P.parity(*dbs)["missing"]}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def test_handlers_pair_with_receive_arms(dbs):
|
|
60
|
+
res = P.parity(dbs[1], dbs[0], structure=True)
|
|
61
|
+
m = {r["symbol"]: r for r in res["matched"]}
|
|
62
|
+
w = m["com.leafy.plant.PlantViewModel.handleWaterNowClick"]
|
|
63
|
+
assert w["target"] == "PlantProcessor.receive" and w["case"] == "waterNowPressed", w
|
|
64
|
+
assert "case .waterNowPressed" in w["evidence"]
|
|
65
|
+
assert m["com.leafy.plant.PlantViewModel.handleRenamePlantTapped"]["case"] == "renamePlantTapped"
|
|
66
|
+
# nothing in common with any arm: still missing
|
|
67
|
+
assert "com.leafy.plant.PlantViewModel.handleSettingsClick" in {x["symbol"] for x in res["missing"]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/dart/extractor/bin/extract.dart
RENAMED
|
File without changes
|
{cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/dart/extractor/pubspec.lock
RENAMED
|
File without changes
|
{cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/dart/extractor/pubspec.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/php/extractor/composer.json
RENAMED
|
File without changes
|
{cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/php/extractor/composer.lock
RENAMED
|
File without changes
|
{cg_code_graph-0.23.9 → cg_code_graph-0.23.10}/cg_code_graph/plugins/php/extractor/extract.php
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
|