pyvbaanalysis 3.0.0__tar.gz → 3.0.1__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.
Files changed (525) hide show
  1. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/requirements/fuzz.in +1 -1
  2. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/requirements/fuzz.txt +3 -3
  3. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/requirements/runtime.in +1 -1
  4. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/requirements/runtime.txt +3 -3
  5. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/requirements/test.in +8 -1
  6. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/requirements/test.txt +13 -8
  7. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/security/yara.json +3 -3
  8. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/security/yara_update.py +6 -17
  9. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/workflows/update-yara-rules.yml +14 -6
  10. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/CHANGELOG.md +15 -0
  11. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/PKG-INFO +1 -1
  12. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/__init__.py +1 -1
  13. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/completion/member_access.py +33 -4
  14. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/data/access_host_model.json +1 -1
  15. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/data/diagnostic_influence_audit.json +253 -9
  16. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/data/excel_host_model.json +1 -1
  17. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/data/manifest.json +13 -11
  18. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/data/powerpoint_host_model.json +1 -1
  19. pyvbaanalysis-3.0.1/pyvbaanalysis/data/regexp_host_model.json +1 -0
  20. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/data/rule_metadata.json +14 -2
  21. pyvbaanalysis-3.0.1/pyvbaanalysis/data/scripting_host_model.json +1 -0
  22. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/data/vbe_oracle_cases.json +3932 -1
  23. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/data/word_host_model.json +1 -1
  24. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/analyze_module.py +4 -1
  25. pyvbaanalysis-3.0.1/pyvbaanalysis/diagnostics/assignment_coercion_type.py +65 -0
  26. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/call_extraction.py +15 -4
  27. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/callable_signatures.py +21 -2
  28. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/context.py +1 -0
  29. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/held_objects.py +9 -3
  30. pyvbaanalysis-3.0.1/pyvbaanalysis/diagnostics/member_parameter_counts.py +13 -0
  31. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/registry.py +9 -4
  32. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/access_data.py +23 -11
  33. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/argument_shape.py +18 -2
  34. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/argument_types.py +12 -0
  35. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/assignments.py +324 -18
  36. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/by_name_calls.py +5 -13
  37. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/call_arity.py +9 -1
  38. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/class_instance_values.py +6 -4
  39. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/collection_state.py +6 -3
  40. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/declarations.py +10 -2
  41. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/deleted_objects.py +22 -7
  42. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/deleted_settings.py +1 -3
  43. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/dictionary_state.py +26 -3
  44. pyvbaanalysis-3.0.1/pyvbaanalysis/diagnostics/rules/document_names.py +350 -0
  45. pyvbaanalysis-3.0.1/pyvbaanalysis/diagnostics/rules/excel_session_state.py +81 -0
  46. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/file_statements.py +28 -12
  47. pyvbaanalysis-3.0.1/pyvbaanalysis/diagnostics/rules/form_contents.py +115 -0
  48. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/host_arguments.py +41 -171
  49. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/late_bound_members.py +21 -19
  50. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/late_bound_objects.py +26 -3
  51. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/missing_reference.py +45 -7
  52. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/module_members.py +5 -1
  53. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/object_state.py +1 -0
  54. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/property_use.py +5 -2
  55. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/refused_declarations.py +1 -1
  56. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/type_of_is.py +9 -3
  57. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/undeclared.py +11 -3
  58. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/variant_values.py +11 -0
  59. pyvbaanalysis-3.0.1/pyvbaanalysis/diagnostics/setter_assignment.py +179 -0
  60. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/host/host_libraries.py +4 -0
  61. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/host/host_model.py +8 -0
  62. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/host/host_registry.py +6 -2
  63. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/host/library_type_names.py +2 -0
  64. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/symbols/class_member_facts.py +6 -3
  65. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/symbols/project_index.py +38 -13
  66. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/symbols/symbol_model.py +1 -0
  67. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/types/type_inference.py +28 -18
  68. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/types/type_names.py +2 -3
  69. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_evidence.py +2 -2
  70. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_registry_parity.py +3 -0
  71. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rule_metadata.py +6 -6
  72. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_assignments_types.py +14 -2
  73. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_missing_reference.py +12 -3
  74. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_object_values.py +1 -1
  75. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_runtime_values.py +5 -1
  76. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_type_names.py +2 -2
  77. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_upstream_sync_10_5_0.py +1 -1
  78. pyvbaanalysis-3.0.1/tests/test_upstream_sync_11_1_0.py +103 -0
  79. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_upstream_sync_2f49b93_host_rules.py +10 -36
  80. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/extract_host_model.mjs +2 -0
  81. pyvbaanalysis-3.0.0/pyvbaanalysis/diagnostics/rules/document_names.py +0 -544
  82. pyvbaanalysis-3.0.0/pyvbaanalysis/diagnostics/rules/excel_session_state.py +0 -218
  83. pyvbaanalysis-3.0.0/pyvbaanalysis/diagnostics/rules/form_contents.py +0 -484
  84. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.gitattributes +0 -0
  85. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/dependabot.yml +0 -0
  86. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/requirements/build.in +0 -0
  87. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/requirements/build.txt +0 -0
  88. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/requirements/pip-audit.in +0 -0
  89. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/requirements/pip-audit.txt +0 -0
  90. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/requirements/zizmor.in +0 -0
  91. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/requirements/zizmor.txt +0 -0
  92. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/rulesets/main.json +0 -0
  93. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/rulesets/release-tags.json +0 -0
  94. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/security/clamav/Dockerfile +0 -0
  95. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/security/semgrep/Dockerfile +0 -0
  96. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/workflows/auto-merge.yml +0 -0
  97. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/workflows/ci.yml +0 -0
  98. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/workflows/fuzz.yml +0 -0
  99. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/workflows/malware-scan.yml +0 -0
  100. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/workflows/publish.yml +0 -0
  101. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/workflows/scorecard.yml +0 -0
  102. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/workflows/security.yml +0 -0
  103. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.github/zizmor.yml +0 -0
  104. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/.gitignore +0 -0
  105. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/AGENTS.md +0 -0
  106. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/CLAUDE.md +0 -0
  107. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/CONTRIBUTING.md +0 -0
  108. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/LICENSE +0 -0
  109. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/README.md +0 -0
  110. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/SECURITY.md +0 -0
  111. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/docs/api-reference.md +0 -0
  112. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/docs/diagnostics-catalogue.md +0 -0
  113. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/docs/usage.md +0 -0
  114. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/fuzz/fuzz_analyzer.py +0 -0
  115. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyproject.toml +0 -0
  116. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/__main__.py +0 -0
  117. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/call/__init__.py +0 -0
  118. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/call/call_context.py +0 -0
  119. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/cli.py +0 -0
  120. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/completion/__init__.py +0 -0
  121. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/completion/cursor_context.py +0 -0
  122. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/completion/event_handlers.py +0 -0
  123. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/completion/type_completion.py +0 -0
  124. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/conditional/__init__.py +0 -0
  125. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/conditional/conditional_compilation.py +0 -0
  126. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/constants/__init__.py +0 -0
  127. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/constants/date_literal.py +0 -0
  128. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/constants/integer_constant_expression.py +0 -0
  129. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/data/event_definitions.json +0 -0
  130. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/data/host_closed_types.json +0 -0
  131. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/data/msforms_members.json +0 -0
  132. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/data/vb6_host_model.json +0 -0
  133. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/data/vba_runtime_tables.json +0 -0
  134. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/__init__.py +0 -0
  135. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/argument_inference.py +0 -0
  136. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/block_headers.py +0 -0
  137. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/callee_arguments.py +0 -0
  138. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/condition_operands.py +0 -0
  139. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/condition_value.py +0 -0
  140. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/const_expr.py +0 -0
  141. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/dataflow.py +0 -0
  142. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/exprwalk.py +0 -0
  143. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/function_results.py +0 -0
  144. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/inline_suppression.py +0 -0
  145. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/known_locals.py +0 -0
  146. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/known_string_calls.py +0 -0
  147. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/loop_counters.py +0 -0
  148. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/model.py +0 -0
  149. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/module_analysis.py +0 -0
  150. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/module_state.py +0 -0
  151. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/null_operators.py +0 -0
  152. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/opened_file_numbers.py +0 -0
  153. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/reaching_snapshot.py +0 -0
  154. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rule_metadata.py +0 -0
  155. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/__init__.py +0 -0
  156. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/address_of_use.py +0 -0
  157. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/arrays.py +0 -0
  158. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/binary_operand_scalar.py +0 -0
  159. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/condition_values.py +0 -0
  160. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/control_flow.py +0 -0
  161. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/dead_code.py +0 -0
  162. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/declaration_forms.py +0 -0
  163. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/declaration_order.py +0 -0
  164. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/declares.py +0 -0
  165. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/directive_forms.py +0 -0
  166. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/doc_comments.py +0 -0
  167. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/duplicates.py +0 -0
  168. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/error_values.py +0 -0
  169. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/event_handler_signatures.py +0 -0
  170. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/expressions.py +0 -0
  171. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/file_paths.py +0 -0
  172. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/handler_flow.py +0 -0
  173. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/host_property_values.py +0 -0
  174. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/implements_members.py +0 -0
  175. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/late_binding.py +0 -0
  176. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/lexical.py +0 -0
  177. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/line_continuations.py +0 -0
  178. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/local_declaration_order.py +0 -0
  179. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/locked_arrays.py +0 -0
  180. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/long_long_narrowing.py +0 -0
  181. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/malformed_lines.py +0 -0
  182. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/module_kind.py +0 -0
  183. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/numeric_literals.py +0 -0
  184. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/object_values.py +0 -0
  185. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/omitted_arguments.py +0 -0
  186. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/overflow.py +0 -0
  187. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/param_array_use.py +0 -0
  188. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/parameter_defaults.py +0 -0
  189. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/parentheses.py +0 -0
  190. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/runtime_values.py +0 -0
  191. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/shared.py +0 -0
  192. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/statement_forms.py +0 -0
  193. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/statement_types.py +0 -0
  194. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/stray_tokens.py +0 -0
  195. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/type_field_arrays.py +0 -0
  196. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/type_members.py +0 -0
  197. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/vba_library_members.py +0 -0
  198. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/rules/worksheet_function_arguments.py +0 -0
  199. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/straight_line_values.py +0 -0
  200. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/string_conversion.py +0 -0
  201. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/type_fields.py +0 -0
  202. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/type_member_state.py +0 -0
  203. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/diagnostics/walker.py +0 -0
  204. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/docs/__init__.py +0 -0
  205. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/docs/doc_comment.py +0 -0
  206. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/evidence.py +0 -0
  207. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/flow/__init__.py +0 -0
  208. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/flow/procedure_labels.py +0 -0
  209. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/flow/procedure_unstructured.py +0 -0
  210. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/host/__init__.py +0 -0
  211. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/host/event_signatures_data.py +0 -0
  212. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/host/excel_library_names.py +0 -0
  213. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/host/excel_object_model.py +0 -0
  214. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/host/host_default_members.py +0 -0
  215. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/host/ms_forms_form_control_members.py +0 -0
  216. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/host/msforms.py +0 -0
  217. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/host/type_extensibility.py +0 -0
  218. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/host/word_builtin_styles.py +0 -0
  219. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/identity_cache.py +0 -0
  220. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/js_compat.py +0 -0
  221. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/lexer/__init__.py +0 -0
  222. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/lexer/contextual_keywords.py +0 -0
  223. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/lexer/keyword_table.py +0 -0
  224. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/lexer/stripped_lines.py +0 -0
  225. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/lexer/token_helpers.py +0 -0
  226. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/lexer/token_kinds.py +0 -0
  227. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/lexer/tokenize.py +0 -0
  228. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/lexer/trivia.py +0 -0
  229. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/parser/__init__.py +0 -0
  230. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/parser/expression_limits.py +0 -0
  231. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/parser/expression_stack.py +0 -0
  232. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/parser/fixed_length_string.py +0 -0
  233. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/parser/nodes.py +0 -0
  234. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/parser/parse_expression.py +0 -0
  235. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/parser/parse_module.py +0 -0
  236. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/parser/parser_state.py +0 -0
  237. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/parser/statement_walk.py +0 -0
  238. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/parser/type_declaration_suffix.py +0 -0
  239. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/project.py +0 -0
  240. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/py.typed +0 -0
  241. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/reader/__init__.py +0 -0
  242. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/reader/loose_file.py +0 -0
  243. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/reader/vbe_module.py +0 -0
  244. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/reader/workbook.py +0 -0
  245. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/reader/workbook_sheets.py +0 -0
  246. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/references/__init__.py +0 -0
  247. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/references/reference_kinds.py +0 -0
  248. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/runtime/__init__.py +0 -0
  249. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/runtime/vba_library_names.py +0 -0
  250. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/runtime/vba_runtime.py +0 -0
  251. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/symbols/__init__.py +0 -0
  252. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/symbols/build_module_symbols.py +0 -0
  253. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/symbols/name_resolution.py +0 -0
  254. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/symbols/sheet_changes.py +0 -0
  255. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/symbols/user_form_controls.py +0 -0
  256. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/pyvbaanalysis/types/__init__.py +0 -0
  257. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/security/malware-allowlist.toml +0 -0
  258. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/security/malware_verdict.py +0 -0
  259. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/conftest.py +0 -0
  260. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fixtures/README.md +0 -0
  261. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_001830f3c622.bas +0 -0
  262. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_004e5b7d2b94.bas +0 -0
  263. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_01972da127a9.bas +0 -0
  264. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_03631c324c18.bas +0 -0
  265. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_047981707c08.bas +0 -0
  266. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_058361b33ac0.bas +0 -0
  267. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_08ced061ad18.bas +0 -0
  268. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_0998f00ede7e.bas +0 -0
  269. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_0a0428bccd86.bas +0 -0
  270. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_0c6acfda4183.bas +0 -0
  271. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_0c6e5fab24b3.bas +0 -0
  272. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_0e11a74d35ba.bas +0 -0
  273. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_0eeb7bfedd16.bas +0 -0
  274. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_1060d8f7f231.bas +0 -0
  275. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_109c24ba58f2.bas +0 -0
  276. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_10ad52ad3bcf.bas +0 -0
  277. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_12acff722aa8.bas +0 -0
  278. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_13a8d4578c0d.bas +0 -0
  279. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_183a73469b37.bas +0 -0
  280. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_1915b0b76a70.bas +0 -0
  281. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_1cae7bc82b01.bas +0 -0
  282. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_1f3a8c56565b.bas +0 -0
  283. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_20aa041d22c9.bas +0 -0
  284. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_22153cc1aace.bas +0 -0
  285. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_268e70f74676.bas +0 -0
  286. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_2aa88938dd69.bas +0 -0
  287. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_2b881865228e.bas +0 -0
  288. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_2e58bd5f5395.bas +0 -0
  289. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_2f0909a4bc69.bas +0 -0
  290. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_2f2229503c1d.bas +0 -0
  291. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_326244504881.bas +0 -0
  292. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_33d13d61f0ff.bas +0 -0
  293. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_37325c143363.bas +0 -0
  294. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_380bf25ac7d1.bas +0 -0
  295. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_380e69b901f2.bas +0 -0
  296. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_3904f75afce1.bas +0 -0
  297. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_3acad8bbf704.bas +0 -0
  298. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_3b0649d52ca6.bas +0 -0
  299. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_3b221ff5928a.bas +0 -0
  300. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_3e79f5a00dec.bas +0 -0
  301. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_4255522d4022.bas +0 -0
  302. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_443e1c7656a7.bas +0 -0
  303. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_444460537cce.bas +0 -0
  304. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_48e921f57607.bas +0 -0
  305. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_4b5e244cf7cb.bas +0 -0
  306. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_4cd3f717b0fb.bas +0 -0
  307. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_5220198b0111.bas +0 -0
  308. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_5382969e2dfc.bas +0 -0
  309. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_5408dd2f28b0.bas +0 -0
  310. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_55e0772a6f18.bas +0 -0
  311. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_567445f21a42.bas +0 -0
  312. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_5d37e1f13669.bas +0 -0
  313. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_62d7b8e00670.bas +0 -0
  314. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_62eca49da20b.bas +0 -0
  315. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_62ff72264856.bas +0 -0
  316. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_684f3c6840bb.bas +0 -0
  317. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_6e4af256f9ad.bas +0 -0
  318. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_6f0c82afc753.bas +0 -0
  319. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_72535bc2b672.bas +0 -0
  320. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_729efded8c38.bas +0 -0
  321. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_735269ca3a17.bas +0 -0
  322. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_7b688c7879d4.bas +0 -0
  323. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_7bbf7b7f9fa2.bas +0 -0
  324. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_7cf345462fd9.bas +0 -0
  325. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_7d737fb1d608.bas +0 -0
  326. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_7e36a8cc5858.bas +0 -0
  327. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_7e526e314610.bas +0 -0
  328. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_7f4979e1d991.bas +0 -0
  329. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_7f50a311939d.bas +0 -0
  330. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_7fe1aa418af4.bas +0 -0
  331. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_8115cd2dac22.bas +0 -0
  332. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_828d0673786b.bas +0 -0
  333. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_83431e43efeb.bas +0 -0
  334. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_8357295e2b81.bas +0 -0
  335. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_83d971096389.bas +0 -0
  336. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_84629c51931f.bas +0 -0
  337. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_85b0a47bfe8e.bas +0 -0
  338. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_85c01a2194ab.bas +0 -0
  339. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_85dad0f84a3f.bas +0 -0
  340. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_8713990599db.bas +0 -0
  341. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_8c61e6187842.bas +0 -0
  342. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_8d174570c3d9.bas +0 -0
  343. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_8f916c1a66f1.bas +0 -0
  344. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_90bb361225f4.bas +0 -0
  345. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_9220f5f2ce01.bas +0 -0
  346. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_93ff3d5fd30f.bas +0 -0
  347. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_94e620049311.bas +0 -0
  348. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_95d3251eb1c8.bas +0 -0
  349. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_983513bcc20d.bas +0 -0
  350. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_9abee72895fc.bas +0 -0
  351. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_9b97577cff21.bas +0 -0
  352. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_9f639fa9f222.bas +0 -0
  353. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_a04cb394e938.bas +0 -0
  354. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_a19e67f8d4b2.bas +0 -0
  355. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_a3b94c356a14.bas +0 -0
  356. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_a88a30c09df1.bas +0 -0
  357. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_aacc10451599.bas +0 -0
  358. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_af62fa26de4e.bas +0 -0
  359. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_b090ead48f6c.bas +0 -0
  360. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_b2d8839c78fe.bas +0 -0
  361. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_b387bf5c0f36.bas +0 -0
  362. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_b56a28e4124e.bas +0 -0
  363. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_b67f512d0b13.bas +0 -0
  364. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_b7fa506e3da0.bas +0 -0
  365. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_b9695517accc.bas +0 -0
  366. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_bc2884e354cf.bas +0 -0
  367. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_c394765ced47.bas +0 -0
  368. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_c47e170942b3.bas +0 -0
  369. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_c62312bf6240.bas +0 -0
  370. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_c747ea865ffc.bas +0 -0
  371. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_ca0cfbefa2ff.bas +0 -0
  372. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_cef681b4f13c.bas +0 -0
  373. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_d1f26bf92a58.bas +0 -0
  374. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_d7301575832c.bas +0 -0
  375. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_db535807976f.bas +0 -0
  376. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_db97d450376d.bas +0 -0
  377. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_de7a5dc7f56a.bas +0 -0
  378. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_df2a14042d4b.bas +0 -0
  379. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_e2698ee9ee1c.bas +0 -0
  380. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_e9468735f4a9.bas +0 -0
  381. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_eb47a77d8d17.bas +0 -0
  382. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_eca56d0710dc.bas +0 -0
  383. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_ecbfd1870d4e.bas +0 -0
  384. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_ee1b4962cc58.bas +0 -0
  385. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_f633b1435ab2.bas +0 -0
  386. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_fba1a42cf3c3.bas +0 -0
  387. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_fbc88898cfab.bas +0 -0
  388. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_fe8cbf1617fa.bas +0 -0
  389. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/fuzz_corpus/vba/oracle_ff8061a951fc.bas +0 -0
  390. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/oracle_support.py +0 -0
  391. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_analysis_failures.py +0 -0
  392. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_analyzer_lexes_module_once.py +0 -0
  393. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_block_walks.py +0 -0
  394. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_call_context.py +0 -0
  395. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_cli.py +0 -0
  396. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_condition_value.py +0 -0
  397. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_conditional_arms.py +0 -0
  398. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_conditional_compilation.py +0 -0
  399. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_dataflow.py +0 -0
  400. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_deep_nesting.py +0 -0
  401. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_diagnostics_engine.py +0 -0
  402. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_function_results.py +0 -0
  403. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_fuzz_corpus.py +0 -0
  404. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_held_objects.py +0 -0
  405. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_host_libraries.py +0 -0
  406. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_host_model.py +0 -0
  407. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_host_seam.py +0 -0
  408. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_inline_suppression.py +0 -0
  409. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_integer_constant_expression.py +0 -0
  410. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_known_string_calls.py +0 -0
  411. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_language_matrix.py +0 -0
  412. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_lexer.py +0 -0
  413. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_malware_verdict.py +0 -0
  414. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_member_access_chains.py +0 -0
  415. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_module_analysis.py +0 -0
  416. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_module_state.py +0 -0
  417. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_parser.py +0 -0
  418. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_project.py +0 -0
  419. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_project_index.py +0 -0
  420. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_public_api.py +0 -0
  421. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_reaching_snapshot.py +0 -0
  422. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_reader.py +0 -0
  423. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_reader_metadata.py +0 -0
  424. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_real_world_false_positives.py +0 -0
  425. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_reference_kinds.py +0 -0
  426. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_ambiguous_enum_member.py +0 -0
  427. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_argument_shape.py +0 -0
  428. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_argument_types.py +0 -0
  429. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_arrays.py +0 -0
  430. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_assignments.py +0 -0
  431. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_binary_operand_scalar.py +0 -0
  432. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_call_arity.py +0 -0
  433. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_control_flow.py +0 -0
  434. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_dead_code.py +0 -0
  435. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_declarations.py +0 -0
  436. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_division_by_zero.py +0 -0
  437. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_doc_comments.py +0 -0
  438. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_duplicates.py +0 -0
  439. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_event_handler_module_scope.py +0 -0
  440. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_expression_calls.py +0 -0
  441. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_expressions.py +0 -0
  442. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_expressions_2f49b93.py +0 -0
  443. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_handler_flow_undeclared_10_14_6.py +0 -0
  444. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_invalid_as_type_names.py +0 -0
  445. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_is_operator_non_object.py +0 -0
  446. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_late_binding.py +0 -0
  447. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_lexical.py +0 -0
  448. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_member_not_found.py +0 -0
  449. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_module_kind.py +0 -0
  450. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_numeric_literals.py +0 -0
  451. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_object_state.py +0 -0
  452. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_overflow_depth.py +0 -0
  453. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_parameter_defaults.py +0 -0
  454. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_property_setter_value_parameters.py +0 -0
  455. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_scalar_and_foreach.py +0 -0
  456. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_type_of_is.py +0 -0
  457. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_typeof_is_always_false.py +0 -0
  458. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_rules_undeclared.py +0 -0
  459. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_runtime_tables.py +0 -0
  460. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_statement_token_derivation.py +0 -0
  461. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_straight_line_values.py +0 -0
  462. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_string_conversion.py +0 -0
  463. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_stripped_lines.py +0 -0
  464. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_symbols.py +0 -0
  465. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_sync_backlog.py +0 -0
  466. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_token_helpers.py +0 -0
  467. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_type_completion.py +0 -0
  468. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_type_inference_2f49b93.py +0 -0
  469. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_type_member_state.py +0 -0
  470. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_upstream_sync_10_12_0.py +0 -0
  471. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_upstream_sync_10_13_0.py +0 -0
  472. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_upstream_sync_10_14_0.py +0 -0
  473. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_upstream_sync_10_6_0.py +0 -0
  474. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_upstream_sync_10_7_1.py +0 -0
  475. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_upstream_sync_11_0_0.py +0 -0
  476. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tests/test_upstream_sync_6_1_2.py +0 -0
  477. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/extract_event_definitions.mjs +0 -0
  478. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/extract_rule_metadata.mjs +0 -0
  479. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/extract_runtime_tables.mjs +0 -0
  480. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/generate_diagnostics_catalogue.py +0 -0
  481. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/generate_manifest.py +0 -0
  482. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/bis_first.py +0 -0
  483. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/corpus_two_trees.py +0 -0
  484. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/drop_harness.py +0 -0
  485. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/error_codes.py +0 -0
  486. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/export_remote.py +0 -0
  487. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/fp_rules.py +0 -0
  488. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/gains.py +0 -0
  489. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/gen_callfuzz.py +0 -0
  490. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/gen_cfz.py +0 -0
  491. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/gen_colfuzz.py +0 -0
  492. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/gen_datefuzz.py +0 -0
  493. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/gen_declfuzz.py +0 -0
  494. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/gen_dtc.py +0 -0
  495. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/gen_exprfuzz.py +0 -0
  496. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/gen_exprfuzz2.py +0 -0
  497. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/gen_flowfuzz.py +0 -0
  498. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/gen_flowfuzz2.py +0 -0
  499. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/gen_flowfuzz3.py +0 -0
  500. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/gen_gdfuzz.py +0 -0
  501. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/gen_rgfuzz.py +0 -0
  502. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/gen_shfuzz.py +0 -0
  503. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/gen_strfuzz.py +0 -0
  504. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/late_comments.py +0 -0
  505. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/leading_dot.py +0 -0
  506. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/merge_batches.py +0 -0
  507. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/oracle_run.py +0 -0
  508. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/post_issue.py +0 -0
  509. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/queue_oracle.py +0 -0
  510. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/real_all.py +0 -0
  511. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/real_errs_tally.py +0 -0
  512. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/recover_batch.py +0 -0
  513. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/regress.py +0 -0
  514. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/short_fn.py +0 -0
  515. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/short_lost.py +0 -0
  516. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/show_cases.py +0 -0
  517. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/show_span.py +0 -0
  518. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/split_cases.py +0 -0
  519. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/sweep6.sh +0 -0
  520. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/table3.py +0 -0
  521. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/hunt/wrapper_probe.mjs +0 -0
  522. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/oracle/build_combining_mark_probe.py +0 -0
  523. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/pin_analyzer.py +0 -0
  524. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/vendor_data.py +0 -0
  525. {pyvbaanalysis-3.0.0 → pyvbaanalysis-3.0.1}/tools/xlide_source.mjs +0 -0
@@ -6,7 +6,7 @@
6
6
  # uv pip compile fuzz.in --universal --generate-hashes --python-version 3.12 -o fuzz.txt
7
7
  # Dependabot proposes each new release.
8
8
  atheris==3.1.0
9
- pyopenvba==6.3.5
9
+ pyopenvba==6.5.0
10
10
  defusedxml==0.7.1
11
11
  hatchling==1.32.4
12
12
  editables==0.6
@@ -29,9 +29,9 @@ pluggy==1.6.0 \
29
29
  --hash=sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3 \
30
30
  --hash=sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746
31
31
  # via hatchling
32
- pyopenvba==6.3.5 \
33
- --hash=sha256:c098818b09ee9cc5e360c1712b40bbacae8ac0cc2fe3783329d283344b35aa6b \
34
- --hash=sha256:c7c68ccc1c9452e9a46864f72e1b17eafe3935385f8f79f863df119c30cd358f
32
+ pyopenvba==6.5.0 \
33
+ --hash=sha256:5151e147bf5723ea9dbe75a8670e19ef4e3295156b78a84fb01eab8dea16bb27 \
34
+ --hash=sha256:f83fbd2d5952bd05408bc4d123f0e0bf0b775f951cdce0913aecf306ba3fa7e5
35
35
  # via -r fuzz.in
36
36
  tomlkit==0.15.1 \
37
37
  --hash=sha256:177a05aece5a8ca5266fd3c448abb47b8d352f09d477d3ca8332db4d89b24304 \
@@ -2,5 +2,5 @@
2
2
  # Security workflow's dependency audit. Dependabot moves the pin daily (the
3
3
  # owner's packages skip the cooldown), so the audit follows what PyPI serves.
4
4
  # uv pip compile runtime.in --universal --generate-hashes --python-version 3.10 -o runtime.txt
5
- pyopenvba==6.3.5
5
+ pyopenvba==6.5.0
6
6
  defusedxml==0.7.1
@@ -4,7 +4,7 @@ defusedxml==0.7.1 \
4
4
  --hash=sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69 \
5
5
  --hash=sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61
6
6
  # via -r runtime.in
7
- pyopenvba==6.3.5 \
8
- --hash=sha256:c098818b09ee9cc5e360c1712b40bbacae8ac0cc2fe3783329d283344b35aa6b \
9
- --hash=sha256:c7c68ccc1c9452e9a46864f72e1b17eafe3935385f8f79f863df119c30cd358f
7
+ pyopenvba==6.5.0 \
8
+ --hash=sha256:5151e147bf5723ea9dbe75a8670e19ef4e3295156b78a84fb01eab8dea16bb27 \
9
+ --hash=sha256:f83fbd2d5952bd05408bc4d123f0e0bf0b775f951cdce0913aecf306ba3fa7e5
10
10
  # via -r runtime.in
@@ -10,7 +10,14 @@
10
10
  pytest==9.1.1
11
11
  ruff==0.16.9
12
12
  mypy==2.3.1
13
- pyopenvba==6.3.5
13
+ pyopenvba==6.5.0
14
14
  defusedxml==0.7.1
15
15
  hatchling==1.32.4
16
16
  editables==0.6
17
+ # Keep cross-matrix dependencies explicit and unconditional: Dependabot's
18
+ # pip-compile resolves on modern Linux and otherwise drops the Python 3.10
19
+ # and Windows-only dependencies from this shared hash lock. Installing these
20
+ # small compatibility packages on every test runner keeps future updates safe.
21
+ colorama==0.4.6
22
+ exceptiongroup==1.3.1
23
+ tomli==2.4.1
@@ -59,10 +59,12 @@ ast-serialize==0.11.2 \
59
59
  --hash=sha256:fd666cebd6ab3b3c0fd348a6202c26e18a401ee34293c3804d3472266bc146f6 \
60
60
  --hash=sha256:feb16d9c2a720e0120c58dd5d6e7b3c7c86b43249b60a3bc212bcb8fa031e2dd
61
61
  # via mypy
62
- colorama==0.4.6 ; sys_platform == 'win32' \
62
+ colorama==0.4.6 \
63
63
  --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
64
64
  --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
65
- # via pytest
65
+ # via
66
+ # -r test.in
67
+ # pytest
66
68
  defusedxml==0.7.1 \
67
69
  --hash=sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69 \
68
70
  --hash=sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61
@@ -71,10 +73,12 @@ editables==0.6 \
71
73
  --hash=sha256:1163834902381c4613787951c5914800fdf155ae08848a373b8ea5006780977c \
72
74
  --hash=sha256:d70e4698078a1d033e7786d9c64e5be070d058a67c21417024d38a58ac20aa43
73
75
  # via -r test.in
74
- exceptiongroup==1.3.1 ; python_full_version < '3.11' \
76
+ exceptiongroup==1.3.1 \
75
77
  --hash=sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219 \
76
78
  --hash=sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598
77
- # via pytest
79
+ # via
80
+ # -r test.in
81
+ # pytest
78
82
  hatchling==1.32.4 \
79
83
  --hash=sha256:08ecf7548fb48205e7f213d70c71e67b8271b7242093dc3f1da578b42c734a2c \
80
84
  --hash=sha256:c4468f73144c054d2aab4ef0f0378c43b9878bf07f8ffd6b79690e970d375f07
@@ -302,9 +306,9 @@ pygments==2.21.0 \
302
306
  --hash=sha256:2363c69b61c4a97c838da3b130dcd6468f4848992b21a82f2a63ec34377137d9 \
303
307
  --hash=sha256:610ca751c9bc2492b38eb9a38a7fbc93edbbb2d7182edaf34e66ae493dee5c8c
304
308
  # via pytest
305
- pyopenvba==6.3.5 \
306
- --hash=sha256:c098818b09ee9cc5e360c1712b40bbacae8ac0cc2fe3783329d283344b35aa6b \
307
- --hash=sha256:c7c68ccc1c9452e9a46864f72e1b17eafe3935385f8f79f863df119c30cd358f
309
+ pyopenvba==6.5.0 \
310
+ --hash=sha256:5151e147bf5723ea9dbe75a8670e19ef4e3295156b78a84fb01eab8dea16bb27 \
311
+ --hash=sha256:f83fbd2d5952bd05408bc4d123f0e0bf0b775f951cdce0913aecf306ba3fa7e5
308
312
  # via -r test.in
309
313
  pytest==9.1.1 \
310
314
  --hash=sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313 \
@@ -330,7 +334,7 @@ ruff==0.16.9 \
330
334
  --hash=sha256:d29c934357e45642fda2f34c0b1f4025b4a6c01e15e4bf0016879d60078a142c \
331
335
  --hash=sha256:ed1a252039200f57a59eebc063b54beabea67bfbaaca0eeaa7f54b5fbcda2284
332
336
  # via -r test.in
333
- tomli==2.4.1 ; python_full_version < '3.11' \
337
+ tomli==2.4.1 \
334
338
  --hash=sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853 \
335
339
  --hash=sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe \
336
340
  --hash=sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5 \
@@ -379,6 +383,7 @@ tomli==2.4.1 ; python_full_version < '3.11' \
379
383
  --hash=sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9 \
380
384
  --hash=sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049
381
385
  # via
386
+ # -r test.in
382
387
  # hatchling
383
388
  # mypy
384
389
  # pytest
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "yara_forge": {
3
- "release": "20260920",
3
+ "release": "20261004",
4
4
  "asset": "yara-forge-rules-full.zip",
5
- "url": "https://github.com/YARAHQ/yara-forge/releases/download/20260920/yara-forge-rules-full.zip",
6
- "sha256": "24673112528aa93e13d5375312732cc2113bf4efdb8cd85f33aaeaebada35951"
5
+ "url": "https://github.com/YARAHQ/yara-forge/releases/download/20261004/yara-forge-rules-full.zip",
6
+ "sha256": "809fe0c2e6c58dd9dc74afad0cdae21a1ed3bd5e68e539504d211dbf4d872f8d"
7
7
  },
8
8
  "yara_x": {
9
9
  "release": "v1.20.0",
@@ -37,8 +37,8 @@ Usage, from the two jobs of update-yara-rules.yml:
37
37
  nothing in DIR it cannot check: the proposal may change only the pin file,
38
38
  only in the fields a move allows, from the commit the workflow ran on. It
39
39
  commits through the GitHub API (no git credentials on disk), opens the pull
40
- request, and starts CI, Security and Malware scan on the branch, because a
41
- branch the workflow's own token creates starts no workflow by itself. It turns
40
+ request with a GitHub App token, which triggers normal pull-request checks
41
+ without manual workflow approval. It turns
42
42
  on auto-merge, so the pull request merges itself once those pass and stays
43
43
  open if any fails. It never reopens a pull request someone closed, and never
44
44
  overwrites a branch it did not just create.
@@ -62,7 +62,6 @@ SOURCES = {
62
62
  "yara_forge": {"repo": "YARAHQ/yara-forge", "name": "YARA Forge", "cooldown_days": 0},
63
63
  "yara_x": {"repo": "VirusTotal/yara-x", "name": "YARA-X", "cooldown_days": 7},
64
64
  }
65
- DISPATCH = ("ci.yml", "security.yml", "malware-scan.yml")
66
65
  SHA256 = re.compile(r"[0-9a-f]{64}")
67
66
 
68
67
  Api = Callable[..., Any]
@@ -178,8 +177,8 @@ def body(moved: list[str], new: dict[str, Any]) -> str:
178
177
  for k, p in new.items()]
179
178
  lines += ["",
180
179
  "CI, Security and Malware scan run on this branch. If a new rule matches a file, the "
181
- "Malware scan fails until the match is fixed or accepted with a reason. Nothing here "
182
- "was merged or approved automatically."]
180
+ "Malware scan fails until the match is fixed or accepted with a reason. Auto-merge "
181
+ "is enabled only subject to the repository's required checks and review rules."]
183
182
  return "\n".join(lines) + "\n"
184
183
 
185
184
 
@@ -242,18 +241,8 @@ def propose(root: Path, inp: Path, repository: str, base_sha: str, api: Api = gh
242
241
  pull = api(f"{base}/pulls", "POST", {
243
242
  "title": expected_title, "head": branch, "base": "main",
244
243
  "body": (inp / "body.md").read_text(encoding="utf-8")})
245
- # Every scan is started even if one refuses, and any refusal then fails
246
- # the run, so a pull request never sits unchecked without anyone knowing.
247
- failed = []
248
- for workflow in DISPATCH:
249
- if (root / ".github" / "workflows" / workflow).exists():
250
- try:
251
- api(f"{base}/actions/workflows/{workflow}/dispatches", "POST", {"ref": branch})
252
- except ApiError as exc:
253
- failed.append(str(exc))
254
- if failed:
255
- raise ApiError(f"{pull['html_url']} is open, but these scans did not start:\n"
256
- + "\n".join(failed))
244
+ # The App-created PR triggers checks normally. Do not dispatch duplicate
245
+ # branch runs or restart the checks on a PR already awaiting review.
257
246
  # It merges itself once CI, Security and Malware scan pass; a failing scan
258
247
  # leaves it open. Without the "Allow auto-merge" setting it simply stays
259
248
  # open for review, which is not a failure of this run.
@@ -9,8 +9,9 @@ name: Update YARA rules
9
9
  # Two jobs, so the untrusted release metadata is only ever read without write
10
10
  # access: `prepare` works out the move with a read-only token, `propose` checks
11
11
  # the proposal against the pin file on main and commits it through the GitHub
12
- # API. No checkout keeps credentials. Needs the repository setting "Allow GitHub
13
- # Actions to create and approve pull requests".
12
+ # API with a repository-scoped GitHub App token, so PR checks run without a
13
+ # manual approval prompt. No checkout keeps credentials. See YARA_APP.md in
14
+ # repo-standards for registration and secret provisioning.
14
15
 
15
16
  on:
16
17
  schedule:
@@ -62,9 +63,7 @@ jobs:
62
63
  runs-on: ubuntu-24.04
63
64
  timeout-minutes: 10
64
65
  permissions:
65
- contents: write # the update branch and its commit, through the API
66
- pull-requests: write # the pull request
67
- actions: write # starting CI, Security and Malware scan on the branch
66
+ contents: read
68
67
  steps:
69
68
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
70
69
  with:
@@ -79,7 +78,16 @@ jobs:
79
78
  name: yara-proposal
80
79
  path: ${{ runner.temp }}/proposal
81
80
 
81
+ - name: Create a token for this repository
82
+ id: app-token
83
+ uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
84
+ with:
85
+ client-id: ${{ vars.YARA_APP_CLIENT_ID }}
86
+ private-key: ${{ secrets.YARA_APP_PRIVATE_KEY }}
87
+ permission-contents: write
88
+ permission-pull-requests: write
89
+
82
90
  - name: Propose the update
83
91
  env:
84
- GH_TOKEN: ${{ github.token }}
92
+ GH_TOKEN: ${{ steps.app-token.outputs.token }}
85
93
  run: python .github/security/yara_update.py propose --in "$RUNNER_TEMP/proposal"
@@ -5,6 +5,21 @@ All notable changes to pyVBAanalysis are recorded here. The format follows
5
5
  follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html): a minor version
6
6
  per milestone.
7
7
 
8
+ ## 3.0.1 - 2026-10-06
9
+
10
+ Sync the analyzer and evidence data to XLIDE 11.1.0 (commit 8f64c2c).
11
+
12
+ * Correct module-owned DefType defaults, indexed Property Let/Set contracts,
13
+ array setter values, enum storage types and bracketed source member names.
14
+ * Check read-only Excel Range values and scalar host setter assignments.
15
+ * Stop inferring runtime bounds from saved sheets, UserForm designer contents,
16
+ new Word documents or PowerPoint slide counts. Forget mutable state after
17
+ calls, aliases and error handlers that make a failure uncertain.
18
+ * Add the upstream Scripting and VBScript RegExp reference models and preserve
19
+ the library that owns an Office or DAO enum.
20
+ * Add the upstream `errors_only` analysis option and save differing replay
21
+ inputs so a failed differential can be rerun directly.
22
+
8
23
  ## 3.0.0 - 2026-10-04
9
24
 
10
25
  Sync to XLIDE 11.0.0 (commit 751fdb2). This major release includes the
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: pyvbaanalysis
3
- Version: 3.0.0
3
+ Version: 3.0.1
4
4
  Summary: Pure-Python static analysis for Excel VBA
5
5
  Project-URL: Homepage, https://github.com/WilliamSmithEdward/pyVBAanalysis
6
6
  Project-URL: Repository, https://github.com/WilliamSmithEdward/pyVBAanalysis
@@ -42,7 +42,7 @@ from .reader import (
42
42
  )
43
43
  from .symbols import ModuleInput, ModuleSymbolKind, ProjectIndex, ProjectIndexOptions
44
44
 
45
- __version__ = "3.0.0"
45
+ __version__ = "3.0.1"
46
46
 
47
47
  __all__ = [
48
48
  "AnalysisFailure",
@@ -62,6 +62,9 @@ from ..symbols.symbol_model import (
62
62
  VbaProjectClassMemberDefinition,
63
63
  VbaProjectClassMembers,
64
64
  VbaSymbolAttribute,
65
+ VbaProcedureParam,
66
+ VbaSymbol,
67
+ VbaSymbolKind,
65
68
  is_access_designer_class,
66
69
  )
67
70
  from ..types.type_names import is_known_scalar_type, normalize_type
@@ -92,6 +95,7 @@ class MemberCompletionContext:
92
95
  me_project_type: str | None = None
93
96
  # Source-declared workbook object members and visible UDT fields, keyed by type.
94
97
  project_class_members: Sequence[VbaProjectClassMembers] | None = None
98
+ project_symbols: Sequence[VbaSymbol] | None = None
95
99
  # True/default lets generic Object/Variant receivers narrow from preceding
96
100
  # simple Set assignments. Hard diagnostics disable this because VBA still
97
101
  # compile-binds those receivers late.
@@ -131,6 +135,8 @@ class MemberCompletionEntry:
131
135
  returns: str | None = None
132
136
  writable: bool | None = None
133
137
  write_type: str | None = None
138
+ write_is_array: bool | None = None
139
+ procedure_params: dict[str, list[VbaProcedureParam]] | None = None
134
140
  # The verified call signature, when the source or the host metadata has one.
135
141
  signature: str | None = None
136
142
  # The setters a project property declares (XLIDE issue #107); None for host
@@ -322,8 +328,8 @@ def _member_surface_at_dot(
322
328
  return None
323
329
  i = len(tokens) - 1
324
330
  typed_prefix = ""
325
- if is_ident_like(tokens[i]) and i > 0 and tokens[i - 1].raw_text == ".":
326
- typed_prefix = tokens[i].raw_text
331
+ if (is_ident_like(tokens[i]) or tokens[i].kind is TokenKind.BRACKETED_IDENTIFIER) and i > 0 and tokens[i - 1].raw_text == ".":
332
+ typed_prefix = tokens[i].raw_text[1:].removesuffix("]") if tokens[i].kind is TokenKind.BRACKETED_IDENTIFIER else tokens[i].raw_text
327
333
  i -= 1
328
334
  if i < 0 or tokens[i].raw_text != ".":
329
335
  return None
@@ -556,7 +562,7 @@ def resolve_receiver_type_at(
556
562
  if len(tokens) == 0:
557
563
  return None
558
564
  i = len(tokens) - 1
559
- if is_ident_like(tokens[i]) and i > 0 and tokens[i - 1].raw_text == ".":
565
+ if (is_ident_like(tokens[i]) or tokens[i].kind is TokenKind.BRACKETED_IDENTIFIER) and i > 0 and tokens[i - 1].raw_text == ".":
560
566
  i -= 1
561
567
  if i < 0 or tokens[i].raw_text != ".":
562
568
  return None
@@ -1485,6 +1491,8 @@ def _project_member_entries(
1485
1491
  returns=m.returns,
1486
1492
  writable=m.writable,
1487
1493
  write_type=m.write_type,
1494
+ write_is_array=m.write_is_array,
1495
+ procedure_params=m.procedure_params,
1488
1496
  signature=m.signature,
1489
1497
  let_accessor=m.let_accessor,
1490
1498
  set_accessor=m.set_accessor,
@@ -1946,7 +1954,28 @@ def _find_declared_binding(
1946
1954
 
1947
1955
  bindings = _module_bindings(module)
1948
1956
  variable = bindings.variables.get(lower)
1949
- return variable if variable is not None else bindings.procedures.get(lower)
1957
+ if variable is not None:
1958
+ return variable
1959
+ procedure = bindings.procedures.get(lower)
1960
+ return procedure if procedure is not None else _exported_module_binding(ctx, lower)
1961
+
1962
+
1963
+ def _exported_module_binding(ctx: MemberCompletionContext, lower: str) -> _DeclaredBinding | None:
1964
+ from ..symbols.name_resolution import _project_symbols_named
1965
+ kinds = (VbaSymbolKind.FUNCTION, VbaSymbolKind.SUB, VbaSymbolKind.PROPERTY_GET, VbaSymbolKind.PROPERTY_LET, VbaSymbolKind.PROPERTY_SET, VbaSymbolKind.MODULE_VARIABLE, VbaSymbolKind.CONSTANT, VbaSymbolKind.ENUM_MEMBER)
1966
+ symbols = [symbol for symbol in _project_symbols_named(ctx.project_symbols or (), lower) if symbol.kind in kinds]
1967
+ if not symbols:
1968
+ return None
1969
+ if len({symbol.module_name.lower() for symbol in symbols}) > 1:
1970
+ return _DeclaredBinding(as_type=None)
1971
+ readable = next((symbol for symbol in symbols if symbol.kind in (VbaSymbolKind.FUNCTION, VbaSymbolKind.PROPERTY_GET, VbaSymbolKind.MODULE_VARIABLE, VbaSymbolKind.CONSTANT, VbaSymbolKind.ENUM_MEMBER)), None)
1972
+ if readable is None:
1973
+ return _DeclaredBinding(as_type=None)
1974
+ if readable.as_type:
1975
+ return _DeclaredBinding(as_type=readable.as_type)
1976
+ surface = _project_class_members_by_name(ctx).get(readable.module_name.lower())
1977
+ member = _project_member_by_name(surface, readable.name)
1978
+ return _DeclaredBinding(as_type=member.returns if member else None)
1950
1979
 
1951
1980
 
1952
1981
  # Receiver lookups run once per dotted reference, and every member call a rule