a3-python 0.1.17__tar.gz → 0.1.18__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.
- {a3_python-0.1.17 → a3_python-0.1.18}/PKG-INFO +1 -1
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/cfg/call_graph.py +18 -2
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/ci/templates/a3-pr-scan.yml +1 -1
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/cli.py +12 -1
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python.egg-info/PKG-INFO +1 -1
- {a3_python-0.1.17 → a3_python-0.1.18}/pyproject.toml +1 -1
- {a3_python-0.1.17 → a3_python-0.1.18}/MANIFEST.in +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/README.md +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/__init__.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/__main__.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/analyzer.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/__init__.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/abstraction.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/advanced.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/assume_guarantee.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/bayesian_fp_scorer.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/boolean_programs.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/cegar_refinement.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/cegis.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/certificate_core.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/context_aware_verification.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/deep_barrier_theory.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/dsos_sdsos.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/enhanced_barrier_theory.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/extreme_verification.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/fast_barrier_filters.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/foundations.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/guard_to_barrier.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/houdini.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/hscc2004.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/hybrid_barrier.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/ic3_pdr.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/ice.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/ice_learning.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/impact_lazy.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/int_bmc.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/interpolation_imc.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/invariants.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/kitchensink_taxonomy.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/lasserre_hierarchy.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/learned_invariants.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/learning.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/papers_11_to_15_complete.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/papers_16_to_20_complete.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/papers_1_to_5_complete.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/papers_6_to_10_complete.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/parrilo_sos_sdp.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/path_validation.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/pdr_spacer.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/positivstellensatz.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/predicate_abstraction.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/program_analysis.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/quick_precheck.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/ranking.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/ranking_synthesis.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/sos_safety.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/sos_toolbox.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/sos_unified.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/sostools.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/spacer_chc.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/sparse_sos.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/step_relation.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/stochastic_barrier.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/sygus_synthesis.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/synthesis.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/synthesis_engine.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/templates.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/type_inference_verification.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/barriers/unified_sota_912.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/cfg/__init__.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/cfg/affine_loop_model.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/cfg/control_flow.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/cfg/dataflow.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/cfg/loop_analysis.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/ci/__init__.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/ci/agentic_triage.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/ci/baseline.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/ci/config.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/ci/init_cmd.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/ci/sarif.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/ci/templates/a3-scheduled-scan.yml +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/ci/triage.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/confidence_interval.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/confidence_scoring.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/__init__.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/__init__.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/abstract_values.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/contracts.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/deferred.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/device_analyzer.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/intervals.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/__init__.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/accelerators.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/amp.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/autograd.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/backends.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/core.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/cuda.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/data.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/distributed.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/distributions.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/experimental.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/export_compile.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/fft.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/hub_package.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/jit.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/linalg.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/nn_functional.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/nn_modules.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/onnx.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/optim.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/profiler.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/quantization.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/registry.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/sparse.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/special.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/tensor.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/barriers/torch/utils.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/base.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/builtin_relations.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/checker.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/relations.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/schema.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/security.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/security_lattice.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/stdlib.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/stdlib_module_relations.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/stdlib_stubs.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/contracts/torch_contracts.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/dse/__init__.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/dse/concolic.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/dse/constraint_solver.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/dse/hybrid.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/dse/lockstep.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/dse/path_condition.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/dse/selective_concolic.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/dse/stochastic_replay.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/dse/value_flow.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/evaluation/__init__.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/evaluation/deduplication.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/evaluation/repo_list.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/evaluation/scanner.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/fp_context.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/frontend/__init__.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/frontend/entry_points.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/frontend/loader.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/__init__.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/ast_guard_analysis.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/bmc.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/bytecode_summaries.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/concrete_vm.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/crash_summaries.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/framework_mocks.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/intent_detector.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/interprocedural_barriers.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/interprocedural_bugs.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/interprocedural_guards.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/interprocedural_taint.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/intraprocedural_taint.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/invariant_integration.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/oracles.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/security_tracker.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/security_tracker_lattice.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/sota_interprocedural.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/sota_intraprocedural.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/state.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/summaries.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/symbolic_vm.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/semantics/termination_integration.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/stochastic_risk.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/__init__.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/assert_fail.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/bounds.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/collection_bugs.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/data_race.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/deadlock.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/div_zero.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/double_free.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/exception_bugs.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/fp_domain.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/info_leak.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/integer_overflow.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/iterator_invalid.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/memory_leak.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/non_termination.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/null_ptr.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/panic.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/registry.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/__init__.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/cleartext.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/code_injection.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/command_injection.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/config.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/crypto.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/deserialization.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/filesystem.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/injection.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/lattice_detectors.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/path_injection.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/regex.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/sql_injection.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/ssrf.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/webapp.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/xml.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/xss.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/security/xxe.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/send_sync.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/stack_overflow.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/timing_channel.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/type_confusion.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/uninit_memory.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/unsafe/use_after_free.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/z3model/__init__.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/z3model/heap.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/z3model/taint.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/z3model/taint_lattice.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/z3model/type_tracking.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python/z3model/values.py +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python.egg-info/SOURCES.txt +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python.egg-info/dependency_links.txt +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python.egg-info/entry_points.txt +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python.egg-info/requires.txt +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/a3_python.egg-info/top_level.txt +0 -0
- {a3_python-0.1.17 → a3_python-0.1.18}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: a3-python
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.18
|
|
4
4
|
Summary: Catch real Python bugs before production — 99%+ accuracy, Z3 symbolic execution, LLM-powered false-positive filtering, zero-config GitHub CI
|
|
5
5
|
Requires-Python: >=3.11
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -645,11 +645,27 @@ def build_call_graph_from_directory(
|
|
|
645
645
|
"""Build call graph from all Python files in a directory."""
|
|
646
646
|
exclude_patterns = exclude_patterns or ['__pycache__', '.git', 'venv', '.venv', 'node_modules']
|
|
647
647
|
|
|
648
|
+
import fnmatch
|
|
649
|
+
|
|
648
650
|
combined = CallGraph()
|
|
649
651
|
|
|
650
652
|
for py_file in root_path.rglob('*.py'):
|
|
651
|
-
# Check exclusions
|
|
652
|
-
|
|
653
|
+
# Check exclusions using both substring and glob matching
|
|
654
|
+
rel_str = str(py_file.relative_to(root_path))
|
|
655
|
+
abs_str = str(py_file)
|
|
656
|
+
excluded = False
|
|
657
|
+
for p in exclude_patterns:
|
|
658
|
+
# Glob-style patterns (contain *, ?, [)
|
|
659
|
+
if any(c in p for c in ('*', '?', '[')):
|
|
660
|
+
if fnmatch.fnmatch(rel_str, p):
|
|
661
|
+
excluded = True
|
|
662
|
+
break
|
|
663
|
+
else:
|
|
664
|
+
# Simple substring match (for __pycache__, .git, etc.)
|
|
665
|
+
if p in abs_str:
|
|
666
|
+
excluded = True
|
|
667
|
+
break
|
|
668
|
+
if excluded:
|
|
653
669
|
continue
|
|
654
670
|
|
|
655
671
|
# Compute module name from path
|
|
@@ -192,6 +192,12 @@ def _apply_config_defaults(args: argparse.Namespace) -> None:
|
|
|
192
192
|
if args.max_dse_steps == 100 and cfg.analysis.max_dse_steps != 100:
|
|
193
193
|
args.max_dse_steps = cfg.analysis.max_dse_steps
|
|
194
194
|
|
|
195
|
+
# Store scan exclude/include patterns so _analyze_project can use them
|
|
196
|
+
if not hasattr(args, '_scan_excludes') or not args._scan_excludes:
|
|
197
|
+
args._scan_excludes = cfg.scan.exclude
|
|
198
|
+
if not hasattr(args, '_scan_includes') or not args._scan_includes:
|
|
199
|
+
args._scan_includes = cfg.scan.include
|
|
200
|
+
|
|
195
201
|
|
|
196
202
|
# ── Subcommand handlers ─────────────────────────────────────────────────────
|
|
197
203
|
|
|
@@ -666,8 +672,13 @@ def _analyze_project(args):
|
|
|
666
672
|
|
|
667
673
|
from .cfg.call_graph import build_call_graph_from_directory
|
|
668
674
|
|
|
675
|
+
# Collect exclude patterns from .a3.yml config
|
|
676
|
+
exclude_patterns = ['__pycache__', '.git', 'venv', '.venv', 'node_modules']
|
|
677
|
+
if hasattr(args, '_scan_excludes') and args._scan_excludes:
|
|
678
|
+
exclude_patterns.extend(args._scan_excludes)
|
|
679
|
+
|
|
669
680
|
t0 = time.time()
|
|
670
|
-
call_graph = build_call_graph_from_directory(project_path)
|
|
681
|
+
call_graph = build_call_graph_from_directory(project_path, exclude_patterns=exclude_patterns)
|
|
671
682
|
n_funcs = len(call_graph.functions)
|
|
672
683
|
print(f" Functions: {n_funcs} ({time.time() - t0:.1f}s)")
|
|
673
684
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: a3-python
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.18
|
|
4
4
|
Summary: Catch real Python bugs before production — 99%+ accuracy, Z3 symbolic execution, LLM-powered false-positive filtering, zero-config GitHub CI
|
|
5
5
|
Requires-Python: >=3.11
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "a3-python"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.18"
|
|
8
8
|
description = "Catch real Python bugs before production — 99%+ accuracy, Z3 symbolic execution, LLM-powered false-positive filtering, zero-config GitHub CI"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|