code-towel 1.618__tar.gz → 1.732__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.
- {code_towel-1.618 → code_towel-1.732}/.flake8 +4 -1
- {code_towel-1.618 → code_towel-1.732}/.pre-commit-config.yaml +4 -3
- code_towel-1.732/CHANGELOG.md +770 -0
- code_towel-1.732/CONTRIBUTING.md +209 -0
- {code_towel-1.618 → code_towel-1.732}/MANIFEST.in +2 -1
- code_towel-1.732/PKG-INFO +378 -0
- code_towel-1.732/README.md +333 -0
- code_towel-1.732/SECURITY.md +19 -0
- {code_towel-1.618 → code_towel-1.732}/docs/ADVERSARIAL_REVIEW.md +44 -2
- code_towel-1.732/docs/ARCHITECTURE.md +898 -0
- code_towel-1.732/docs/KNOWN_LIMITATIONS.md +565 -0
- code_towel-1.732/docs/PRODUCTION_READINESS.md +697 -0
- {code_towel-1.618 → code_towel-1.732}/docs/QUICKSTART.md +23 -5
- {code_towel-1.618 → code_towel-1.732}/docs/RELEASE_LOG.md +72 -5
- code_towel-1.732/docs/RELEASING.md +126 -0
- {code_towel-1.618 → code_towel-1.732}/docs/USAGE_GUIDE.md +114 -42
- code_towel-1.732/docs/proposals/dethunking.md +105 -0
- code_towel-1.732/docs/proposals/performance-roadmap.md +144 -0
- {code_towel-1.618 → code_towel-1.732}/docs/proposals/reuse-existing-function.md +56 -2
- code_towel-1.732/docs/proposals/template-method.md +157 -0
- code_towel-1.732/docs/proposals/type-parameters.md +322 -0
- {code_towel-1.618 → code_towel-1.732}/justfile +23 -6
- {code_towel-1.618 → code_towel-1.732}/pyproject.toml +38 -11
- code_towel-1.732/scripts/audit_dependencies.py +56 -0
- code_towel-1.732/scripts/bench_similar_blocks.py +116 -0
- code_towel-1.732/scripts/ecosystem/manifest.toml +1158 -0
- code_towel-1.732/scripts/ecosystem_check.py +1033 -0
- code_towel-1.732/src/code_towel.egg-info/PKG-INFO +378 -0
- {code_towel-1.618 → code_towel-1.732}/src/code_towel.egg-info/SOURCES.txt +171 -30
- {code_towel-1.618 → code_towel-1.732}/src/code_towel.egg-info/requires.txt +14 -1
- {code_towel-1.618 → code_towel-1.732}/src/towel/__init__.py +1 -1
- code_towel-1.732/src/towel/_mypy_worker.py +177 -0
- {code_towel-1.618 → code_towel-1.732}/src/towel/changes.py +91 -22
- code_towel-1.732/src/towel/checker_project.py +220 -0
- code_towel-1.732/src/towel/cli.py +1537 -0
- code_towel-1.732/src/towel/diagnostics.py +145 -0
- {code_towel-1.618 → code_towel-1.732}/src/towel/filesystem.py +27 -0
- code_towel-1.732/src/towel/formatting.py +437 -0
- {code_towel-1.618/src/towel/unification → code_towel-1.732/src/towel}/project_layout.py +224 -175
- code_towel-1.732/src/towel/project_tools.py +50 -0
- code_towel-1.732/src/towel/renaming.py +1326 -0
- code_towel-1.732/src/towel/source_files.py +70 -0
- code_towel-1.732/src/towel/source_text.py +94 -0
- code_towel-1.732/src/towel/type_inference.py +1081 -0
- code_towel-1.732/src/towel/unification/__init__.py +39 -0
- code_towel-1.732/src/towel/unification/annotation_wiring.py +303 -0
- code_towel-1.732/src/towel/unification/annotations.py +968 -0
- {code_towel-1.618 → code_towel-1.732}/src/towel/unification/assignment_analyzer.py +78 -141
- code_towel-1.732/src/towel/unification/binding_context.py +348 -0
- {code_towel-1.618 → code_towel-1.732}/src/towel/unification/binding_detector.py +36 -59
- code_towel-1.732/src/towel/unification/block_analysis.py +846 -0
- {code_towel-1.618 → code_towel-1.732}/src/towel/unification/block_signature.py +40 -50
- code_towel-1.732/src/towel/unification/bounded_cache.py +93 -0
- {code_towel-1.618 → code_towel-1.732}/src/towel/unification/builtins.py +26 -0
- code_towel-1.732/src/towel/unification/clustering.py +468 -0
- code_towel-1.732/src/towel/unification/constant_consistency.py +149 -0
- code_towel-1.732/src/towel/unification/defaults.py +33 -0
- {code_towel-1.618 → code_towel-1.732}/src/towel/unification/definite_assignment.py +160 -33
- code_towel-1.732/src/towel/unification/engine_state.py +301 -0
- code_towel-1.732/src/towel/unification/exceptions.py +39 -0
- code_towel-1.732/src/towel/unification/extractor.py +813 -0
- code_towel-1.732/src/towel/unification/fixed_point.py +637 -0
- code_towel-1.732/src/towel/unification/function_index.py +127 -0
- code_towel-1.732/src/towel/unification/hof_promotion.py +219 -0
- code_towel-1.732/src/towel/unification/import_graph.py +542 -0
- code_towel-1.732/src/towel/unification/insertion.py +315 -0
- {code_towel-1.618 → code_towel-1.732}/src/towel/unification/instantiation.py +156 -25
- code_towel-1.732/src/towel/unification/materialize.py +472 -0
- code_towel-1.732/src/towel/unification/models.py +392 -0
- code_towel-1.732/src/towel/unification/orphan_detector.py +105 -0
- code_towel-1.732/src/towel/unification/overlap.py +227 -0
- code_towel-1.732/src/towel/unification/pair_evaluation.py +1318 -0
- code_towel-1.732/src/towel/unification/parallel.py +339 -0
- code_towel-1.732/src/towel/unification/parameterization.py +313 -0
- {code_towel-1.618 → code_towel-1.732}/src/towel/unification/parameters.py +21 -3
- {code_towel-1.618 → code_towel-1.732}/src/towel/unification/pipeline.py +177 -123
- code_towel-1.732/src/towel/unification/placement.py +531 -0
- code_towel-1.732/src/towel/unification/progress.py +133 -0
- code_towel-1.732/src/towel/unification/project_layout.py +10 -0
- code_towel-1.732/src/towel/unification/refactor_engine.py +797 -0
- code_towel-1.732/src/towel/unification/reuse.py +560 -0
- code_towel-1.732/src/towel/unification/scope_analyzer.py +628 -0
- code_towel-1.732/src/towel/unification/semantic_safety.py +1128 -0
- code_towel-1.732/src/towel/unification/statement_facts.py +252 -0
- {code_towel-1.618 → code_towel-1.732}/src/towel/unification/structural_memo.py +24 -15
- code_towel-1.732/src/towel/unification/substitution.py +128 -0
- {code_towel-1.618 → code_towel-1.732}/src/towel/unification/thunk_inlining.py +129 -68
- code_towel-1.732/src/towel/unification/unifier.py +917 -0
- code_towel-1.732/src/towel/unification/unifier_state.py +65 -0
- code_towel-1.732/src/towel/unification/visitors.py +605 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples/README.md +21 -2
- code_towel-1.732/test_examples/annotated_module.py +109 -0
- code_towel-1.732/test_examples/generators_async.py +108 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples_crossfile/README.md +22 -0
- code_towel-1.732/test_examples_crossfile/class_hierarchy/base_record.py +20 -0
- code_towel-1.732/test_examples_crossfile/class_hierarchy/scored_record.py +23 -0
- code_towel-1.732/test_examples_crossfile/nested_structure/lib/report_generator.py +30 -0
- code_towel-1.732/test_examples_crossfile_expected_output/class_hierarchy/base_record.py +25 -0
- code_towel-1.732/test_examples_crossfile_expected_output/class_hierarchy/scored_record.py +21 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples_crossfile_expected_output/multi_level/api/checkout.py +4 -12
- {code_towel-1.618 → code_towel-1.732}/test_examples_crossfile_expected_output/multi_level/core/services/payment.py +2 -2
- {code_towel-1.618 → code_towel-1.732}/test_examples_crossfile_expected_output/multi_level/utils/validators.py +2 -2
- code_towel-1.732/test_examples_crossfile_expected_output/nested_structure/lib/report_generator.py +30 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples_crossfile_expected_output/nested_structure/src/data_processor.py +2 -8
- {code_towel-1.618 → code_towel-1.732}/test_examples_crossfile_expected_output/simple_crossfile/admin_service.py +5 -9
- {code_towel-1.618 → code_towel-1.732}/test_examples_crossfile_expected_output/simple_crossfile/user_service.py +2 -2
- code_towel-1.732/test_examples_expected_output/annotated_module.py +108 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples_expected_output/binding_constructs_comprehensive.py +37 -61
- {code_towel-1.618 → code_towel-1.732}/test_examples_expected_output/bindings_for_loops.py +16 -28
- {code_towel-1.618/test_examples → code_towel-1.732/test_examples_expected_output}/closure_adversarial.py +1 -4
- {code_towel-1.618/test_examples → code_towel-1.732/test_examples_expected_output}/control_flow_adversarial.py +7 -48
- {code_towel-1.618 → code_towel-1.732}/test_examples_expected_output/example1_simple.py +9 -16
- {code_towel-1.618 → code_towel-1.732}/test_examples_expected_output/example4_complex.py +6 -9
- {code_towel-1.618/test_examples → code_towel-1.732/test_examples_expected_output}/exception_adversarial.py +6 -50
- {code_towel-1.618 → code_towel-1.732}/test_examples_expected_output/fstrings_constants.py +7 -11
- {code_towel-1.618 → code_towel-1.732}/test_examples_expected_output/functional_patterns.py +8 -6
- code_towel-1.732/test_examples_expected_output/generators_async.py +101 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples_expected_output/hygienic_naming.py +14 -16
- {code_towel-1.618 → code_towel-1.732}/test_examples_expected_output/method_chains.py +21 -10
- {code_towel-1.618 → code_towel-1.732}/test_examples_expected_output/real_world_patterns.py +32 -35
- {code_towel-1.618/test_examples → code_towel-1.732/test_examples_expected_output}/return_values.py +5 -23
- {code_towel-1.618 → code_towel-1.732}/test_examples_expected_output/scoping_edge_cases.py +6 -10
- {code_towel-1.618/test_examples → code_towel-1.732/test_examples_expected_output}/side_effects_adversarial.py +5 -22
- {code_towel-1.618/test_examples → code_towel-1.732/test_examples_expected_output}/syntactic_coverage_comprehensive.py +63 -166
- {code_towel-1.618/test_examples → code_towel-1.732/test_examples_expected_output}/tricky_edge_cases_adversarial.py +12 -55
- code_towel-1.732/tests/README.md +254 -0
- {code_towel-1.618 → code_towel-1.732}/tests/automatic_equivalence_tester.py +64 -54
- {code_towel-1.618 → code_towel-1.732}/tests/conftest.py +3 -1
- {code_towel-1.618 → code_towel-1.732}/tests/crossfile_equivalence_tester.py +2 -2
- {code_towel-1.618 → code_towel-1.732}/tests/edge_case_values.py +1 -1
- {code_towel-1.618 → code_towel-1.732}/tests/equivalence_targets.py +20 -10
- {code_towel-1.618 → code_towel-1.732}/tests/generate_baseline.py +20 -23
- code_towel-1.732/tests/hostile_cases/r102_whole_body_reuse.py +26 -0
- code_towel-1.732/tests/hostile_cases/r103_lambda_parameter_spelling.py +25 -0
- code_towel-1.732/tests/hostile_cases/r104_walrus_target_spelling.py +14 -0
- code_towel-1.732/tests/hostile_cases/r105_closure_over_block_bound_name_rebound_after.py +18 -0
- code_towel-1.732/tests/hostile_cases/r106_dir_reads_the_frame.py +13 -0
- code_towel-1.732/tests/hostile_cases/r107_unbound_global_argument.py +14 -0
- code_towel-1.732/tests/hostile_cases/r108_clustered_sites_assign_the_returned_name.py +23 -0
- code_towel-1.732/tests/hostile_cases/r109_eager_optional_import_failed.py +19 -0
- code_towel-1.732/tests/hostile_cases/r110_eager_type_checking_import.py +18 -0
- code_towel-1.732/tests/hostile_cases/r111_eager_module_except_as_name.py +22 -0
- code_towel-1.732/tests/hostile_cases/r112_eager_module_match_capture_unmatched.py +19 -0
- code_towel-1.732/tests/hostile_cases/r113_eager_class_attr_in_method.py +17 -0
- code_towel-1.732/tests/hostile_cases/r114_eager_nested_class_attr.py +19 -0
- code_towel-1.732/tests/hostile_cases/r115_eager_class_in_function_attr.py +20 -0
- code_towel-1.732/tests/hostile_cases/r116_eager_enclosing_bound_after_inner_call.py +19 -0
- code_towel-1.732/tests/hostile_cases/r117_eager_enclosing_deleted_before_inner_call.py +19 -0
- code_towel-1.732/tests/hostile_cases/r118_eager_enclosing_conditionally_bound.py +19 -0
- code_towel-1.732/tests/hostile_cases/r119_eager_module_def_and_class_after_call.py +19 -0
- code_towel-1.732/tests/hostile_cases/r120_eager_module_import_after_call.py +17 -0
- code_towel-1.732/tests/hostile_cases/r121_eager_comprehension_variable.py +16 -0
- code_towel-1.732/tests/hostile_cases/r122_eager_lambda_parameter.py +16 -0
- code_towel-1.732/tests/hostile_cases/r123_direct_eval_after_block.py +16 -0
- code_towel-1.732/tests/hostile_cases/r124_eval_alias_reads_preblock_name.py +46 -0
- code_towel-1.732/tests/hostile_cases/r125_locals_dir_after_block.py +40 -0
- code_towel-1.732/tests/hostile_cases/r126_locals_in_nested_scope.py +30 -0
- code_towel-1.732/tests/hostile_cases/r127_eval_alias_partial_block.py +53 -0
- code_towel-1.732/tests/hostile_cases/r128_warn_stacklevel_via_alias.py +31 -0
- code_towel-1.732/tests/hostile_cases/r129_warning_registry_dedup.py +18 -0
- code_towel-1.732/tests/hostile_cases/r130_resource_observed_after_block_differs.py +20 -0
- code_towel-1.732/tests/hostile_cases/r131_weakref_and_id_identity.py +27 -0
- code_towel-1.732/tests/hostile_cases/r132_async_comprehension_in_block.py +16 -0
- code_towel-1.732/tests/hostile_cases/r133_formfeed.py +13 -0
- code_towel-1.732/tests/hostile_cases/r134_u2028_in_comment_shifts_splice.py +17 -0
- code_towel-1.732/tests/hostile_cases/r135_formfeed_line_shifts_splice.py +18 -0
- code_towel-1.732/tests/hostile_cases/r136_u2028_in_string_literal.py +17 -0
- code_towel-1.732/tests/hostile_cases/r137_x1c_x85_in_comment.py +17 -0
- code_towel-1.732/tests/hostile_cases/r138_u2028_comment_same_indent_neighbours.py +24 -0
- code_towel-1.732/tests/hostile_cases/r139_literal_roundtrip.py +18 -0
- code_towel-1.732/tests/hostile_cases/r140_unbound_name_on_untaken_branch.py +21 -0
- code_towel-1.732/tests/hostile_cases/r141_module_name_bound_after_an_early_call.py +24 -0
- code_towel-1.732/tests/hostile_cases/r142_module_data_rebound_by_callback.py +22 -0
- code_towel-1.732/tests/hostile_cases/r143_module_name_shadowed_by_a_local_elsewhere.py +22 -0
- code_towel-1.732/tests/hostile_cases/r144_class_cell_in_a_method_helper.py +32 -0
- code_towel-1.732/tests/hostile_cases/r145_getframe_assigned_alias.py +47 -0
- code_towel-1.732/tests/hostile_cases/r146_module_function_reads_caller_frame.py +37 -0
- code_towel-1.732/tests/hostile_crossfile/xf10_reuse_existing_function/pkg/a.py +6 -0
- code_towel-1.732/tests/hostile_crossfile/xf10_reuse_existing_function/pkg/b.py +12 -0
- code_towel-1.732/tests/hostile_crossfile/xf10_reuse_existing_function/run.py +3 -0
- code_towel-1.732/tests/hostile_crossfile/xf11_package_init_reaches_back/pkg/__init__.py +9 -0
- code_towel-1.732/tests/hostile_crossfile/xf11_package_init_reaches_back/pkg/detail.py +7 -0
- code_towel-1.732/tests/hostile_crossfile/xf11_package_init_reaches_back/run.py +3 -0
- code_towel-1.732/tests/hostile_crossfile/xf12_cycle_through_package_init/pkg/__init__.py +1 -0
- code_towel-1.732/tests/hostile_crossfile/xf12_cycle_through_package_init/pkg/core.py +3 -0
- code_towel-1.732/tests/hostile_crossfile/xf12_cycle_through_package_init/pkg/sub/__init__.py +2 -0
- code_towel-1.732/tests/hostile_crossfile/xf12_cycle_through_package_init/pkg/sub/leaf.py +6 -0
- code_towel-1.732/tests/hostile_crossfile/xf12_cycle_through_package_init/pkg/vendor/tool.py +6 -0
- code_towel-1.732/tests/hostile_crossfile/xf12_cycle_through_package_init/run.py +4 -0
- code_towel-1.732/tests/hostile_crossfile/xf13_import_time_effects/pkg/a.py +8 -0
- code_towel-1.732/tests/hostile_crossfile/xf13_import_time_effects/pkg/b.py +10 -0
- code_towel-1.732/tests/hostile_crossfile/xf13_import_time_effects/run.py +4 -0
- code_towel-1.732/tests/hostile_crossfile/xf14_script_with_leading_statement/pkg/app.py +9 -0
- code_towel-1.732/tests/hostile_crossfile/xf14_script_with_leading_statement/pkg/util.py +8 -0
- code_towel-1.732/tests/hostile_crossfile/xf14_script_with_leading_statement/run.py +3 -0
- code_towel-1.732/tests/hostile_crossfile/xf15_ancestor_in_another_module/pkg/base.py +4 -0
- code_towel-1.732/tests/hostile_crossfile/xf15_ancestor_in_another_module/pkg/servers.py +22 -0
- code_towel-1.732/tests/hostile_crossfile/xf15_ancestor_in_another_module/pkg/tokens.py +7 -0
- code_towel-1.732/tests/hostile_crossfile/xf15_ancestor_in_another_module/run.py +5 -0
- code_towel-1.732/tests/hostile_crossfile/xf7_docstring_import/pkg/__init__.py +0 -0
- code_towel-1.732/tests/hostile_crossfile/xf8_helper_name_collision/pkg/__init__.py +0 -0
- code_towel-1.732/tests/hostile_crossfile/xf9_same_named_base_class/pkg/__init__.py +0 -0
- code_towel-1.732/tests/hostile_crossfile/xf9_same_named_base_class/pkg/one/__init__.py +0 -0
- code_towel-1.732/tests/hostile_crossfile/xf9_same_named_base_class/pkg/two/__init__.py +0 -0
- code_towel-1.732/tests/hostile_execution.py +31 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_adversarial_renaming.py +58 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_adversarial_semantics.py +15 -23
- code_towel-1.732/tests/test_analysis_edge_paths.py +165 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_analysis_sessions.py +75 -7
- code_towel-1.732/tests/test_ancestor_insertion.py +76 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_assignment_analyzer_comprehensive.py +44 -10
- code_towel-1.732/tests/test_audit_io_safety.py +306 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_backend_layouts.py +1 -1
- code_towel-1.732/tests/test_binding_context_memo.py +58 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_binding_detector_edge_cases.py +2 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_bindings.py +94 -11
- code_towel-1.732/tests/test_cache_lifetimes.py +71 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_candidate_index.py +22 -7
- {code_towel-1.618 → code_towel-1.732}/tests/test_change_transactions.py +7 -4
- code_towel-1.732/tests/test_cli_dispatch_paths.py +83 -0
- code_towel-1.732/tests/test_cli_input_errors.py +86 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_cli_integration.py +34 -7
- code_towel-1.732/tests/test_cli_oracle_lifecycle.py +88 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_cli_output_safety.py +4 -9
- {code_towel-1.618 → code_towel-1.732}/tests/test_comprehensive_coverage.py +14 -47
- {code_towel-1.618 → code_towel-1.732}/tests/test_crossfile_integration.py +142 -77
- {code_towel-1.618 → code_towel-1.732}/tests/test_definite_assignment.py +42 -0
- code_towel-1.732/tests/test_dependency_audit_export.py +81 -0
- code_towel-1.732/tests/test_distinct_proposals.py +88 -0
- code_towel-1.732/tests/test_ecosystem_manifest_regressions.py +89 -0
- code_towel-1.732/tests/test_ecosystem_verdicts.py +1233 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_engine_adversarial.py +58 -38
- code_towel-1.732/tests/test_environment_independence.py +223 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_equivalence_harness_regressions.py +8 -2
- {code_towel-1.618 → code_towel-1.732}/tests/test_equivalence_target_selection.py +20 -12
- code_towel-1.732/tests/test_error_paths.py +275 -0
- code_towel-1.732/tests/test_exceptions.py +16 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_extractor_additional_branches.py +16 -14
- {code_towel-1.618 → code_towel-1.732}/tests/test_extractor_augassign_and_fstrings.py +7 -10
- {code_towel-1.618 → code_towel-1.732}/tests/test_extractor_callee_and_multi_return.py +9 -9
- {code_towel-1.618 → code_towel-1.732}/tests/test_extractor_comprehensive.py +33 -28
- {code_towel-1.618 → code_towel-1.732}/tests/test_extractor_edge_cases.py +9 -2
- {code_towel-1.618 → code_towel-1.732}/tests/test_extractor_final_lines.py +22 -18
- {code_towel-1.618 → code_towel-1.732}/tests/test_extractor_generate_call_variants.py +10 -16
- {code_towel-1.618 → code_towel-1.732}/tests/test_extractor_more_paths.py +4 -4
- {code_towel-1.618 → code_towel-1.732}/tests/test_extractor_preamble_and_call_mapping.py +33 -25
- {code_towel-1.618 → code_towel-1.732}/tests/test_extractor_remaining_branches.py +41 -35
- {code_towel-1.618 → code_towel-1.732}/tests/test_extractor_return_statements.py +27 -16
- {code_towel-1.618 → code_towel-1.732}/tests/test_extractor_substituter_and_helpers.py +68 -67
- code_towel-1.732/tests/test_filesystem_guards.py +73 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_final_coverage_push.py +37 -46
- code_towel-1.732/tests/test_fixed_point_refusals.py +141 -0
- code_towel-1.732/tests/test_forwarder_chains.py +264 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_frame_sensitivity_scan.py +14 -6
- {code_towel-1.618 → code_towel-1.732}/tests/test_free_variable_correspondence.py +13 -12
- {code_towel-1.618 → code_towel-1.732}/tests/test_fstrings.py +44 -11
- code_towel-1.732/tests/test_function_facts_equivalence.py +78 -0
- code_towel-1.732/tests/test_function_index.py +76 -0
- code_towel-1.732/tests/test_generated_code_formatting.py +282 -0
- code_towel-1.732/tests/test_helper_annotations.py +436 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_helper_inventory.py +29 -4
- {code_towel-1.618 → code_towel-1.732}/tests/test_helpers.py +111 -3
- {code_towel-1.618 → code_towel-1.732}/tests/test_hostile_battery.py +57 -12
- code_towel-1.732/tests/test_hostile_crossfile_battery.py +77 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_import_bindings.py +7 -11
- code_towel-1.732/tests/test_import_cycle_package_init.py +74 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_import_resolution.py +7 -6
- code_towel-1.732/tests/test_incremental_global_passes.py +122 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_instantiation_check.py +70 -19
- code_towel-1.732/tests/test_lazy_engine_import.py +35 -0
- code_towel-1.732/tests/test_lexical_binding_regressions.py +203 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_method_level_and_attributes.py +3 -7
- {code_towel-1.618 → code_towel-1.732}/tests/test_method_receiver_arguments.py +3 -2
- code_towel-1.732/tests/test_module_names_stay_free.py +119 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_observational_equivalence.py +133 -86
- {code_towel-1.618 → code_towel-1.732}/tests/test_orphan_detection.py +30 -24
- {code_towel-1.618 → code_towel-1.732}/tests/test_orphan_detector_comprehensive.py +91 -165
- {code_towel-1.618 → code_towel-1.732}/tests/test_out_of_place_cycle_regression.py +55 -6
- {code_towel-1.618 → code_towel-1.732}/tests/test_overlap_filtering.py +30 -22
- code_towel-1.732/tests/test_pair_budget.py +111 -0
- code_towel-1.732/tests/test_parallel_evaluation.py +222 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_parameters.py +3 -1
- {code_towel-1.618 → code_towel-1.732}/tests/test_parent_watchdog.py +45 -7
- code_towel-1.732/tests/test_perf_memos.py +237 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_pipeline_api.py +16 -19
- {code_towel-1.618 → code_towel-1.732}/tests/test_pipeline_phases.py +66 -70
- code_towel-1.732/tests/test_progress_modes.py +162 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_project_layout_and_imports.py +27 -24
- {code_towel-1.618 → code_towel-1.732}/tests/test_project_layout_behavior.py +12 -7
- code_towel-1.732/tests/test_project_layout_shim.py +19 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_promotion_and_mangling.py +20 -24
- code_towel-1.732/tests/test_properties.py +1187 -0
- code_towel-1.732/tests/test_recovery_journal.py +413 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_refactor_engine_comprehensive.py +84 -113
- {code_towel-1.618 → code_towel-1.732}/tests/test_refactor_engine_edge_cases.py +37 -69
- {code_towel-1.618 → code_towel-1.732}/tests/test_refactor_engine_more.py +11 -9
- {code_towel-1.618 → code_towel-1.732}/tests/test_refactor_engine_targeted_branches.py +116 -121
- {code_towel-1.618 → code_towel-1.732}/tests/test_refactoring_engine.py +6 -5
- {code_towel-1.618 → code_towel-1.732}/tests/test_regression.py +106 -3
- {code_towel-1.618 → code_towel-1.732}/tests/test_regressions_broader.py +17 -13
- {code_towel-1.618 → code_towel-1.732}/tests/test_release_regressions.py +27 -7
- code_towel-1.732/tests/test_rename_audit_regressions.py +225 -0
- code_towel-1.732/tests/test_rename_discovery_regressions.py +175 -0
- code_towel-1.732/tests/test_return_alignment.py +44 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_return_values.py +5 -5
- code_towel-1.732/tests/test_returned_variables_not_orphaned.py +98 -0
- code_towel-1.732/tests/test_reuse_existing_function.py +578 -0
- code_towel-1.732/tests/test_reuse_type_checks.py +125 -0
- code_towel-1.732/tests/test_robustness_paths.py +178 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_scope_analyzer.py +22 -8
- {code_towel-1.618 → code_towel-1.732}/tests/test_scope_analyzer_comprehensive.py +30 -24
- code_towel-1.732/tests/test_semantic_guard_traces.py +186 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_semantic_guards_extended.py +42 -28
- {code_towel-1.618 → code_towel-1.732}/tests/test_semantic_safety_regressions.py +20 -12
- {code_towel-1.618 → code_towel-1.732}/tests/test_signature_prefilter.py +9 -22
- code_towel-1.732/tests/test_source_encoding.py +86 -0
- code_towel-1.732/tests/test_stale_proposal_recovery.py +209 -0
- code_towel-1.732/tests/test_statement_facts.py +267 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_structural_memo.py +6 -2
- code_towel-1.732/tests/test_substitution_keys.py +25 -0
- code_towel-1.732/tests/test_symlinked_input_directory.py +118 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_thunk_inlining.py +45 -7
- code_towel-1.732/tests/test_trivial_helper_filter.py +116 -0
- code_towel-1.732/tests/test_type_inference.py +656 -0
- code_towel-1.732/tests/test_type_oracle_projects.py +555 -0
- code_towel-1.732/tests/test_type_run_policy.py +408 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_unifier_additional_branches.py +24 -3
- {code_towel-1.618 → code_towel-1.732}/tests/test_unifier_batch2.py +1 -6
- {code_towel-1.618 → code_towel-1.732}/tests/test_unifier_batch3.py +2 -7
- {code_towel-1.618 → code_towel-1.732}/tests/test_unifier_batch4.py +1 -6
- {code_towel-1.618 → code_towel-1.732}/tests/test_unifier_batch5.py +2 -7
- {code_towel-1.618 → code_towel-1.732}/tests/test_unifier_bound_variables.py +7 -7
- {code_towel-1.618 → code_towel-1.732}/tests/test_unifier_comprehensions.py +4 -2
- {code_towel-1.618 → code_towel-1.732}/tests/test_unifier_comprehensive.py +10 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_unifier_core.py +12 -17
- {code_towel-1.618 → code_towel-1.732}/tests/test_unifier_edge_cases.py +21 -22
- {code_towel-1.618 → code_towel-1.732}/tests/test_unifier_state_reset.py +1 -0
- code_towel-1.732/tests/test_unsupported_layout.py +84 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_validation_partial_lifetime.py +6 -5
- {code_towel-1.618 → code_towel-1.732}/tests/test_variable_capture_bug.py +6 -4
- code_towel-1.732/tests/test_visitors.py +405 -0
- {code_towel-1.618 → code_towel-1.732}/uv.lock +632 -4
- code_towel-1.618/.templates/README.md +0 -406
- code_towel-1.618/CHANGELOG.md +0 -74
- code_towel-1.618/CONTRIBUTING.md +0 -175
- code_towel-1.618/PKG-INFO +0 -291
- code_towel-1.618/README.md +0 -257
- code_towel-1.618/SECURITY.md +0 -19
- code_towel-1.618/docs/ARCHITECTURE.md +0 -357
- code_towel-1.618/docs/KNOWN_LIMITATIONS.md +0 -230
- code_towel-1.618/docs/PRODUCTION_READINESS.md +0 -295
- code_towel-1.618/docs/RELEASING.md +0 -36
- code_towel-1.618/scripts/debug_pair.py +0 -119
- code_towel-1.618/scripts/ecosystem/manifest.toml +0 -720
- code_towel-1.618/scripts/ecosystem_check.py +0 -533
- code_towel-1.618/src/code_towel.egg-info/PKG-INFO +0 -291
- code_towel-1.618/src/towel/cli.py +0 -1054
- code_towel-1.618/src/towel/renaming.py +0 -886
- code_towel-1.618/src/towel/unification/__init__.py +0 -24
- code_towel-1.618/src/towel/unification/exceptions.py +0 -113
- code_towel-1.618/src/towel/unification/extractor.py +0 -882
- code_towel-1.618/src/towel/unification/models.py +0 -199
- code_towel-1.618/src/towel/unification/nominal_unifier.py +0 -375
- code_towel-1.618/src/towel/unification/orphan_detector.py +0 -188
- code_towel-1.618/src/towel/unification/progress.py +0 -43
- code_towel-1.618/src/towel/unification/refactor_engine.py +0 -4689
- code_towel-1.618/src/towel/unification/scope_analyzer.py +0 -726
- code_towel-1.618/src/towel/unification/semantic_safety.py +0 -805
- code_towel-1.618/src/towel/unification/unifier.py +0 -2185
- code_towel-1.618/src/towel/unification/visitors.py +0 -399
- code_towel-1.618/test_examples/binding_constructs_comprehensive.py +0 -137
- code_towel-1.618/test_examples/bindings_for_loops.py +0 -61
- code_towel-1.618/test_examples/complex_expressions.py +0 -80
- code_towel-1.618/test_examples/edge_cases_stress_test.py +0 -328
- code_towel-1.618/test_examples/example1_simple.py +0 -56
- code_towel-1.618/test_examples/example2_classes.py +0 -65
- code_towel-1.618/test_examples/example4_complex.py +0 -56
- code_towel-1.618/test_examples/fstrings_constants.py +0 -84
- code_towel-1.618/test_examples/functional_patterns.py +0 -288
- code_towel-1.618/test_examples/global_nonlocal_examples.py +0 -129
- code_towel-1.618/test_examples/hygienic_naming.py +0 -152
- code_towel-1.618/test_examples/method_chains.py +0 -240
- code_towel-1.618/test_examples/nested_structures.py +0 -206
- code_towel-1.618/test_examples/real_world_patterns.py +0 -312
- code_towel-1.618/test_examples/referential_transparency.py +0 -258
- code_towel-1.618/test_examples/scoping_edge_cases.py +0 -117
- code_towel-1.618/test_examples_expected_output/bindings_comprehensions.py +0 -61
- code_towel-1.618/test_examples_expected_output/closure_adversarial.py +0 -119
- code_towel-1.618/test_examples_expected_output/control_flow_adversarial.py +0 -145
- code_towel-1.618/test_examples_expected_output/example3_file1.py +0 -26
- code_towel-1.618/test_examples_expected_output/example3_file2.py +0 -26
- code_towel-1.618/test_examples_expected_output/exception_adversarial.py +0 -156
- code_towel-1.618/test_examples_expected_output/return_values.py +0 -96
- code_towel-1.618/test_examples_expected_output/side_effects_adversarial.py +0 -122
- code_towel-1.618/test_examples_expected_output/syntactic_coverage_comprehensive.py +0 -709
- code_towel-1.618/test_examples_expected_output/tricky_edge_cases_adversarial.py +0 -217
- code_towel-1.618/tests/README.md +0 -84
- code_towel-1.618/tests/test_ancestor_insertion.py +0 -86
- code_towel-1.618/tests/test_exceptions.py +0 -193
- code_towel-1.618/tests/test_hostile_crossfile_battery.py +0 -52
- code_towel-1.618/tests/test_nominal_unifier.py +0 -143
- code_towel-1.618/tests/test_progress_modes.py +0 -81
- code_towel-1.618/tests/test_trivial_helper_filter.py +0 -55
- {code_towel-1.618 → code_towel-1.732}/CODE_OF_CONDUCT.md +0 -0
- {code_towel-1.618 → code_towel-1.732}/LICENSE +0 -0
- {code_towel-1.618 → code_towel-1.732}/docs/OPEN_SOURCE_AUDIT.md +0 -0
- {code_towel-1.618 → code_towel-1.732}/scripts/add_copyright_headers.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/scripts/bench_refactor.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/scripts/promote_dry_helpers.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/scripts/report_net_benefit_diff.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/scripts/run_crossfile_coverage.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/scripts/set_version.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/scripts/trace_proposals.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/scripts/verify-examples +0 -0
- {code_towel-1.618 → code_towel-1.732}/setup.cfg +0 -0
- {code_towel-1.618 → code_towel-1.732}/src/code_towel.egg-info/dependency_links.txt +0 -0
- {code_towel-1.618 → code_towel-1.732}/src/code_towel.egg-info/entry_points.txt +0 -0
- {code_towel-1.618 → code_towel-1.732}/src/code_towel.egg-info/top_level.txt +0 -0
- {code_towel-1.618 → code_towel-1.732}/src/towel/py.typed +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/binding_constructs_comprehensive.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/bindings_comprehensions.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/bindings_for_loops.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/closure_adversarial.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/complex_expressions.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/control_flow_adversarial.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/edge_cases_stress_test.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/example1_simple.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/example2_classes.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/example3_file1.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/example3_file2.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/example4_complex.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/exception_adversarial.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/fstrings_constants.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/functional_patterns.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/global_nonlocal_examples.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/hygienic_naming.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/method_chains.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/nested_structures.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/real_world_patterns.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/referential_transparency.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/return_values.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/scoping_edge_cases.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/side_effects_adversarial.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/syntactic_coverage_comprehensive.py +0 -0
- {code_towel-1.618/.templates → code_towel-1.732/test_examples}/tricky_edge_cases_adversarial.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples_crossfile/multi_level/api/checkout.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples_crossfile/multi_level/core/services/payment.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples_crossfile/multi_level/utils/validators.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples_crossfile/nested_structure/src/data_processor.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples_crossfile/simple_crossfile/admin_service.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples_crossfile/simple_crossfile/user_service.py +0 -0
- {code_towel-1.618/test_examples → code_towel-1.732/test_examples_expected_output}/bindings_comprehensions.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples_expected_output/complex_expressions.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples_expected_output/edge_cases_stress_test.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples_expected_output/example2_classes.py +0 -0
- {code_towel-1.618/test_examples → code_towel-1.732/test_examples_expected_output}/example3_file1.py +0 -0
- {code_towel-1.618/test_examples → code_towel-1.732/test_examples_expected_output}/example3_file2.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples_expected_output/global_nonlocal_examples.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples_expected_output/nested_structures.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/test_examples_expected_output/referential_transparency.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/OBSERVATIONAL_EQUIVALENCE.md +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/__init__.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h01_side_effect_order.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h02_conditional_eval.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h03_loop_reeval.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h04_closure_freevar.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h05_cond_return_plus_retvar.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h06_del_in_block.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h07_except_unbind.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h08_late_binding_closure.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h10_short_circuit.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h13_dunder_file.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h26_match_capture.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h38_closure_after_block.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h39_augassign_after_block.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h51_semicolons.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h52_del_after_block.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h53_nested_func_reads_retvar.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h54_attr_param_property.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h55_walrus_used_after.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h56_global_write.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h57_exception_in_param.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h58_nested_def_freevar_reassigned.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h59_retvar_conditional_unbound.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h60_finally_return.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/h61_str_method_param.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r01_property_thunk_order.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r02_cluster_attrs.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r07_attr_two_positions.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r100_clustered_site_with_live_binding.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r101_same_named_method_forces_module_helper.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r11_same_function_pair.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r14_starred_param.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r22_fstring_attr.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r26_attr_store_param.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r27_del_subscript.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r32_method_callee.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r38_name_two_positions.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r39_cluster_alpha.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r40_class_hierarchy.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r41_conditional_call_param.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r42_loop_call_param.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r43_opaque_decorator_receiver.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r44_cluster_nested_overlap.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r45_async_no_await.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r46_nonlocal_counter.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r47_lru_cache_method.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r50_helper_name_collision.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r53_try_else_binding.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r54_with_binding_used_after.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r55_chained_assign.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r57_star_unpack.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r58_escaping_closure.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r60_local_import.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r61_same_function_clean.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r62_recursion.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r63_except_var_used_in_handler.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r66_conditional_callee.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r69_annassign.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r72_global_promoted.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r73_slice_vs_index.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r74_starred_vs_plain.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r75_prior_helper_param_names.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r76_return_order.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r77_mixed_return_and_variables.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r78_walrus_in_parameter.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r79_list_display_in_loop.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r80_inlined_leading_thunk.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r81_conditionally_bound_free_variable.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r82_local_classes_same_name.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r83_tab_indented_class.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r84_warn_stacklevel.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r85_conditionally_bound_parameter.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r86_annotated_assignment_live.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r87_nested_function_in_method.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r88_elif_branch.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r89_conditionally_bound_return.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r90_cluster_across_classes.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r91_class_body_helper.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r92_parameterless_class_body_helper.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r93_import_name_differs.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r94_import_binds_live_name.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r95_type_checking_annotation.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r96_unpacked_targets_live.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r97_helper_in_function_with_outside_site.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r98_same_named_methods_nested_helpers.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_cases/r99_partial_return_branches.py +0 -0
- {code_towel-1.618/tests/hostile_crossfile/xf3_same_named_local_function → code_towel-1.732/tests/hostile_crossfile/xf10_reuse_existing_function}/pkg/__init__.py +0 -0
- {code_towel-1.618/tests/hostile_crossfile/xf4_same_named_class/pkg → code_towel-1.732/tests/hostile_crossfile/xf12_cycle_through_package_init/pkg/vendor}/__init__.py +0 -0
- {code_towel-1.618/tests/hostile_crossfile/xf5_dunder_file → code_towel-1.732/tests/hostile_crossfile/xf13_import_time_effects}/pkg/__init__.py +0 -0
- {code_towel-1.618/tests/hostile_crossfile/xf6_same_alias_different_import → code_towel-1.732/tests/hostile_crossfile/xf14_script_with_leading_statement}/pkg/__init__.py +0 -0
- {code_towel-1.618/tests/hostile_crossfile/xf7_docstring_import → code_towel-1.732/tests/hostile_crossfile/xf15_ancestor_in_another_module}/pkg/__init__.py +0 -0
- {code_towel-1.618/tests/hostile_crossfile/xf8_helper_name_collision → code_towel-1.732/tests/hostile_crossfile/xf3_same_named_local_function}/pkg/__init__.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf3_same_named_local_function/pkg/a.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf3_same_named_local_function/pkg/b.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf3_same_named_local_function/run.py +0 -0
- {code_towel-1.618/tests/hostile_crossfile/xf9_same_named_base_class → code_towel-1.732/tests/hostile_crossfile/xf4_same_named_class}/pkg/__init__.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf4_same_named_class/pkg/a.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf4_same_named_class/pkg/b.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf4_same_named_class/run.py +0 -0
- {code_towel-1.618/tests/hostile_crossfile/xf9_same_named_base_class/pkg/one → code_towel-1.732/tests/hostile_crossfile/xf5_dunder_file/pkg}/__init__.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf5_dunder_file/pkg/a.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf5_dunder_file/pkg/b.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf5_dunder_file/run.py +0 -0
- {code_towel-1.618/tests/hostile_crossfile/xf9_same_named_base_class/pkg/two → code_towel-1.732/tests/hostile_crossfile/xf6_same_alias_different_import/pkg}/__init__.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf6_same_alias_different_import/pkg/a.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf6_same_alias_different_import/pkg/b.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf6_same_alias_different_import/pkg/util1.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf6_same_alias_different_import/pkg/util2.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf6_same_alias_different_import/run.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf7_docstring_import/pkg/a.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf7_docstring_import/pkg/b.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf7_docstring_import/run.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf8_helper_name_collision/pkg/a.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf8_helper_name_collision/pkg/b.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf8_helper_name_collision/pkg/c.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf8_helper_name_collision/pkg/d.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf8_helper_name_collision/pkg/e.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf8_helper_name_collision/run.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf9_same_named_base_class/pkg/one/base.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf9_same_named_base_class/pkg/one/introspect.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf9_same_named_base_class/pkg/one/revoke.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf9_same_named_base_class/pkg/two/access.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf9_same_named_base_class/pkg/two/base.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf9_same_named_base_class/pkg/two/request.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/hostile_crossfile/xf9_same_named_base_class/run.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/run_tests.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_binding_detector.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_bindings_additional.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_breakers.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_builtins_comprehensive.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_copy_preservation.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_crossfile_observational_equivalence.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_engine_failure_visibility.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_rename_parameters_and_methods.py +0 -0
- {code_towel-1.618 → code_towel-1.732}/tests/test_unifier_more_branches.py +0 -0
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
[flake8]
|
|
2
2
|
max-line-length = 100
|
|
3
|
-
exclude = venv,env,__pycache__,tests
|
|
3
|
+
exclude = venv,env,__pycache__,tests/hostile_cases,tests/hostile_crossfile
|
|
4
|
+
# Tests are checked for pyflakes errors (unused names, duplicates, undefined names) only.
|
|
5
|
+
per-file-ignores =
|
|
6
|
+
tests/*:E,W,C90
|
|
4
7
|
# E501: Line too long (we use Black's 100 char limit, not PEP8's 79)
|
|
5
8
|
# W503: Line break before binary operator (Black style)
|
|
6
9
|
# E203: Whitespace before ':' (Black vs flake8 conflict in slices)
|
|
@@ -16,7 +16,8 @@ repos:
|
|
|
16
16
|
entry: python -m flake8 --config=.flake8
|
|
17
17
|
language: system
|
|
18
18
|
types: [python]
|
|
19
|
-
files: ^(src/towel/|scripts/)
|
|
19
|
+
files: ^(src/towel/|scripts/|tests/)
|
|
20
|
+
exclude: ^tests/(hostile_cases|hostile_crossfile)/
|
|
20
21
|
- id: mypy
|
|
21
22
|
name: Mypy
|
|
22
23
|
entry: python -m mypy
|
|
@@ -36,11 +37,11 @@ repos:
|
|
|
36
37
|
hooks:
|
|
37
38
|
# Remove trailing whitespace
|
|
38
39
|
- id: trailing-whitespace
|
|
39
|
-
exclude: ^test_examples.*_expected_output/
|
|
40
|
+
exclude: ^(test_examples.*_expected_output/|tests/(hostile_cases|hostile_crossfile)/)
|
|
40
41
|
|
|
41
42
|
# Ensure files end with newline
|
|
42
43
|
- id: end-of-file-fixer
|
|
43
|
-
exclude: ^test_examples.*_expected_output/
|
|
44
|
+
exclude: ^(test_examples.*_expected_output/|tests/(hostile_cases|hostile_crossfile)/)
|
|
44
45
|
|
|
45
46
|
# Check YAML syntax
|
|
46
47
|
- id: check-yaml
|