feat: modernize release system and CI/CD with uv#6
Merged
Conversation
- Extract complex release logic into clean bash scripts: - scripts/create-release.sh: Main release workflow - scripts/generate-release-notes.sh: Changelog & GitHub release - scripts/create-tag.sh: Tag-only workflow for debugging - Simplify Justfile release commands to use extracted scripts - Update CI/CD to use uv instead of poetry: - Multi-platform testing (Ubuntu, macOS, Windows) - Faster dependency resolution with uv - Consistent tooling across local dev and CI - Maintain full automation: just release patch 'message' - Fix escaping issues by moving logic to proper bash files
- Add explicit venv creation with uv venv - Use --all-extras flag to ensure all test dependencies are installed - Apply same fix to both test and publish jobs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🚀 Release System Modernization
This PR modernizes our release system and CI/CD pipeline with several key improvements:
✨ Clean Release Scripts
Continue anyway? (y/N) - Main release workflow
Usage: scripts/generate-release-notes.sh [message] - Changelog & GitHub release creation
📦 Current version: 0.2.1
🔄 Bumping version: 0.2.1 → 0.2.2
✅ Version bumped to 0.2.2
============================= test session starts ==============================
platform darwin -- Python 3.12.7, pytest-8.4.2, pluggy-1.6.0 -- /Users/joseph/dev/Tree-Mendous/.venv/bin/python3
cachedir: .pytest_cache
hypothesis profile 'default'
rootdir: /Users/joseph/dev/Tree-Mendous
configfile: pyproject.toml
plugins: anyio-4.11.0, hypothesis-6.140.2
collecting ... collected 197 items
tests/test_boundary_summary_simple.py::test_basic_functionality PASSED [ 0%]
tests/test_boundary_summary_simple.py::test_summary_analytics PASSED [ 1%]
tests/test_boundary_summary_simple.py::test_best_fit_queries PASSED [ 1%]
tests/test_boundary_summary_simple.py::test_performance_characteristics PASSED [ 2%]
tests/test_boundary_summary_simple.py::test_py_cpp_equivalence PASSED [ 2%]
tests/test_boundary_summary_simple.py::test_caching_behavior PASSED [ 3%]
tests/test_summary_simple.py::test_basic_functionality PASSED [ 3%]
tests/test_summary_simple.py::test_best_fit_queries PASSED [ 4%]
tests/test_summary_simple.py::test_tree_summary_merging PASSED [ 4%]
tests/test_summary_simple.py::test_scheduling_scenario PASSED [ 5%]
tests/test_treap_simple.py::test_basic_treap_functionality PASSED [ 5%]
tests/test_treap_simple.py::test_treap_operations PASSED [ 6%]
tests/test_treap_simple.py::test_treap_probabilistic_balance PASSED [ 6%]
tests/test_treap_simple.py::test_treap_performance PASSED [ 7%]
tests/test_treap_simple.py::test_treap_correctness PASSED [ 7%]
tests/unit/hypothesis/test_avl_earliest.py::test_insert_and_delete_intervals PASSED [ 8%]
tests/unit/hypothesis/test_avl_earliest.py::test_find_interval PASSED [ 8%]
tests/unit/hypothesis/test_avl_earliest.py::test_total_available_length PASSED [ 9%]
tests/unit/hypothesis/test_avl_earliest.py::test_adjacent_intervals PASSED [ 9%]
tests/unit/hypothesis/test_avl_earliest.py::test_random_operations PASSED [ 10%]
tests/unit/hypothesis/test_avl_earliest.py::test_non_overlapping_reservations PASSED [ 10%]
tests/unit/hypothesis/test_avl_earliest.py::test_overlapping_reservations PASSED [ 11%]
tests/unit/hypothesis/test_boundary.py::test_reserve_and_release_intervals PASSED [ 11%]
tests/unit/hypothesis/test_boundary.py::test_find_interval PASSED [ 12%]
tests/unit/hypothesis/test_boundary.py::test_total_available_length PASSED [ 12%]
tests/unit/hypothesis/test_boundary.py::test_interval_merging PASSED [ 13%]
tests/unit/hypothesis/test_boundary.py::test_empty_manager PASSED [ 13%]
tests/unit/hypothesis/test_boundary.py::test_adjacent_intervals PASSED [ 14%]
tests/unit/hypothesis/test_boundary.py::test_overlapping_release PASSED [ 14%]
tests/unit/hypothesis/test_boundary.py::test_reserve_empty_interval PASSED [ 15%]
tests/unit/hypothesis/test_boundary.py::test_random_operations PASSED [ 15%]
tests/unit/hypothesis/test_boundary.py::test_full_reserve_and_release PASSED [ 16%]
tests/unit/hypothesis/test_boundary.py::test_single_point_reservations PASSED [ 16%]
tests/unit/hypothesis/test_boundary.py::test_non_overlapping_reservations PASSED [ 17%]
tests/unit/hypothesis/test_boundary.py::test_overlapping_reservations PASSED [ 17%]
tests/unit/hypothesis/test_boundary_cpp.py::test_reserve_and_release_intervals PASSED [ 18%]
tests/unit/hypothesis/test_boundary_cpp.py::test_find_interval PASSED [ 18%]
tests/unit/hypothesis/test_boundary_cpp.py::test_total_available_length PASSED [ 19%]
tests/unit/hypothesis/test_boundary_cpp.py::test_interval_merging PASSED [ 19%]
tests/unit/hypothesis/test_boundary_cpp.py::test_empty_manager PASSED [ 20%]
tests/unit/hypothesis/test_boundary_cpp.py::test_adjacent_intervals PASSED [ 20%]
tests/unit/hypothesis/test_boundary_cpp.py::test_overlapping_release PASSED [ 21%]
tests/unit/hypothesis/test_boundary_cpp.py::test_reserve_empty_interval PASSED [ 21%]
tests/unit/hypothesis/test_boundary_cpp.py::test_random_operations PASSED [ 22%]
tests/unit/hypothesis/test_boundary_cpp.py::test_full_reserve_and_release PASSED [ 22%]
tests/unit/hypothesis/test_boundary_cpp.py::test_single_point_reservations PASSED [ 23%]
tests/unit/hypothesis/test_boundary_cpp.py::test_non_overlapping_reservations PASSED [ 23%]
tests/unit/hypothesis/test_boundary_cpp.py::test_overlapping_reservations PASSED [ 24%]
tests/unit/hypothesis/test_boundary_cpp_ic.py::test_reserve_and_release_intervals SKIPPED [ 24%]
tests/unit/hypothesis/test_boundary_cpp_ic.py::test_find_interval SKIPPED [ 25%]
tests/unit/hypothesis/test_boundary_cpp_ic.py::test_total_available_length SKIPPED [ 25%]
tests/unit/hypothesis/test_boundary_cpp_ic.py::test_interval_merging SKIPPED [ 26%]
tests/unit/hypothesis/test_boundary_cpp_ic.py::test_empty_manager SKIPPED [ 26%]
tests/unit/hypothesis/test_boundary_cpp_ic.py::test_adjacent_intervals SKIPPED [ 27%]
tests/unit/hypothesis/test_boundary_cpp_ic.py::test_overlapping_release SKIPPED [ 27%]
tests/unit/hypothesis/test_boundary_cpp_ic.py::test_reserve_empty_interval SKIPPED [ 28%]
tests/unit/hypothesis/test_boundary_cpp_ic.py::test_random_operations SKIPPED [ 28%]
tests/unit/hypothesis/test_boundary_cpp_ic.py::test_full_reserve_and_release SKIPPED [ 29%]
tests/unit/hypothesis/test_boundary_cpp_ic.py::test_single_point_reservations SKIPPED [ 29%]
tests/unit/hypothesis/test_boundary_cpp_ic.py::test_non_overlapping_reservations SKIPPED [ 30%]
tests/unit/hypothesis/test_boundary_cpp_ic.py::test_overlapping_reservations SKIPPED [ 30%]
tests/unit/hypothesis/test_boundary_summary.py::test_py_boundary_summary_operations PASSED [ 31%]
tests/unit/hypothesis/test_boundary_summary.py::test_py_boundary_summary_mixed_operations PASSED [ 31%]
tests/unit/hypothesis/test_boundary_summary.py::test_cpp_boundary_summary_operations PASSED [ 32%]
tests/unit/hypothesis/test_boundary_summary.py::test_py_cpp_boundary_summary_equivalence PASSED [ 32%]
tests/unit/hypothesis/test_boundary_summary.py::test_boundary_summary_caching PASSED [ 33%]
tests/unit/hypothesis/test_boundary_summary.py::test_boundary_summary_advanced_queries PASSED [ 34%]
tests/unit/hypothesis/test_boundary_summary.py::test_boundary_summary_performance PASSED [ 34%]
tests/unit/hypothesis/test_boundary_summary.py::test_boundary_summary_vs_regular_boundary PASSED [ 35%]
tests/unit/hypothesis/test_summary.py::test_summary_statistics_consistency PASSED [ 35%]
tests/unit/hypothesis/test_summary.py::test_mixed_operations_invariants PASSED [ 36%]
tests/unit/hypothesis/test_summary.py::test_find_best_fit_correctness PASSED [ 36%]
tests/unit/hypothesis/test_summary.py::test_find_largest_available PASSED [ 37%]
tests/unit/hypothesis/test_summary.py::test_tree_summary_merging PASSED [ 37%]
tests/unit/hypothesis/test_summary.py::test_scheduling_scenario PASSED [ 38%]
tests/unit/hypothesis/test_summary.py::test_fragmentation_metrics PASSED [ 38%]
tests/unit/hypothesis/test_summary.py::test_find_interval_after_point PASSED [ 39%]
tests/unit/hypothesis/test_summary.py::test_empty_tree_operations PASSED [ 39%]
tests/unit/hypothesis/test_treap.py::test_treap_basic_operations PASSED [ 40%]
tests/unit/hypothesis/test_treap.py::test_treap_mixed_operations PASSED [ 40%]
tests/unit/hypothesis/test_treap.py::test_treap_find_operations PASSED [ 41%]
tests/unit/hypothesis/test_treap.py::test_treap_random_sampling PASSED [ 41%]
tests/unit/hypothesis/test_treap.py::test_treap_split_merge PASSED [ 42%]
tests/unit/hypothesis/test_treap.py::test_treap_probabilistic_balance PASSED [ 42%]
tests/unit/hypothesis/test_treap.py::test_treap_interval_merging PASSED [ 43%]
tests/unit/hypothesis/test_treap.py::test_treap_performance_characteristics PASSED [ 43%]
tests/unit/hypothesis/test_treap.py::test_treap_rank_operations PASSED [ 44%]
tests/unit/hypothesis/test_treap.py::test_treap_overlapping_operations PASSED [ 44%]
tests/unit/hypothesis/test_treap.py::test_treap_correctness_vs_simple_tree PASSED [ 45%]
tests/unit/hypothesis/test_treap.py::test_treap_edge_cases PASSED [ 45%]
tests/unit/hypothesis/test_treap.py::test_treap_stress_operations PASSED [ 46%]
tests/unit/hypothesis/test_treap.py::test_treap_probabilistic_properties PASSED [ 46%]
tests/unit/hypothesis/test_treap.py::test_treap_memory_efficiency PASSED [ 47%]
tests/unit/hypothesis/test_treap_cpp.py::test_cpp_treap_basic_operations PASSED [ 47%]
tests/unit/hypothesis/test_treap_cpp.py::test_cpp_treap_mixed_operations PASSED [ 48%]
tests/unit/hypothesis/test_treap_cpp.py::test_cpp_py_treap_equivalence PASSED [ 48%]
tests/unit/hypothesis/test_treap_cpp.py::test_cpp_treap_performance PASSED [ 49%]
tests/unit/hypothesis/test_treap_cpp.py::test_treap_random_operations PASSED [ 49%]
tests/unit/hypothesis/test_treap_cpp.py::test_cpp_treap_split_operations PASSED [ 50%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_basic_interface_compliance[py_avl] PASSED [ 50%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_basic_interface_compliance[py_boundary] PASSED [ 51%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_basic_interface_compliance[py_summary] PASSED [ 51%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_basic_interface_compliance[py_treap] PASSED [ 52%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_basic_interface_compliance[py_boundary_summary] PASSED [ 52%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_basic_interface_compliance[cpp_boundary] PASSED [ 53%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_basic_interface_compliance[cpp_treap] PASSED [ 53%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_basic_interface_compliance[cpp_boundary_summary] PASSED [ 54%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_empty_manager[py_avl] PASSED [ 54%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_empty_manager[py_boundary] PASSED [ 55%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_empty_manager[py_summary] PASSED [ 55%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_empty_manager[py_treap] PASSED [ 56%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_empty_manager[py_boundary_summary] PASSED [ 56%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_empty_manager[cpp_boundary] PASSED [ 57%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_empty_manager[cpp_treap] PASSED [ 57%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_empty_manager[cpp_boundary_summary] PASSED [ 58%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_single_interval_release[py_avl] PASSED [ 58%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_single_interval_release[py_boundary] PASSED [ 59%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_single_interval_release[py_summary] PASSED [ 59%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_single_interval_release[py_treap] PASSED [ 60%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_single_interval_release[py_boundary_summary] PASSED [ 60%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_single_interval_release[cpp_boundary] PASSED [ 61%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_single_interval_release[cpp_treap] PASSED [ 61%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_single_interval_release[cpp_boundary_summary] PASSED [ 62%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_reserve_and_release_cycle[py_avl] PASSED [ 62%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_reserve_and_release_cycle[py_boundary] PASSED [ 63%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_reserve_and_release_cycle[py_summary] PASSED [ 63%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_reserve_and_release_cycle[py_treap] PASSED [ 64%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_reserve_and_release_cycle[py_boundary_summary] PASSED [ 64%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_reserve_and_release_cycle[cpp_boundary] PASSED [ 65%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_reserve_and_release_cycle[cpp_treap] PASSED [ 65%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_reserve_and_release_cycle[cpp_boundary_summary] PASSED [ 66%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_multiple_releases[py_avl] PASSED [ 67%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_multiple_releases[py_boundary] PASSED [ 67%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_multiple_releases[py_summary] PASSED [ 68%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_multiple_releases[py_treap] PASSED [ 68%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_multiple_releases[py_boundary_summary] PASSED [ 69%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_multiple_releases[cpp_boundary] PASSED [ 69%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_multiple_releases[cpp_treap] PASSED [ 70%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_multiple_releases[cpp_boundary_summary] PASSED [ 70%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_basic[py_avl] PASSED [ 71%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_basic[py_boundary] PASSED [ 71%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_basic[py_summary] PASSED [ 72%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_basic[py_treap] PASSED [ 72%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_basic[py_boundary_summary] PASSED [ 73%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_basic[cpp_boundary] PASSED [ 73%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_basic[cpp_treap] PASSED [ 74%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_basic[cpp_boundary_summary] PASSED [ 74%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_insufficient_space[py_avl] PASSED [ 75%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_insufficient_space[py_boundary] PASSED [ 75%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_insufficient_space[py_summary] PASSED [ 76%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_insufficient_space[py_treap] PASSED [ 76%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_insufficient_space[py_boundary_summary] PASSED [ 77%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_insufficient_space[cpp_boundary] PASSED [ 77%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_insufficient_space[cpp_treap] PASSED [ 78%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_insufficient_space[cpp_boundary_summary] PASSED [ 78%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_summary_statistics[py_avl] SKIPPED [ 79%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_summary_statistics[py_boundary] SKIPPED [ 79%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_summary_statistics[py_summary] PASSED [ 80%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_summary_statistics[py_treap] SKIPPED [ 80%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_summary_statistics[py_boundary_summary] PASSED [ 81%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_summary_statistics[cpp_boundary] SKIPPED [ 81%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_summary_statistics[cpp_treap] SKIPPED [ 82%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_summary_statistics[cpp_boundary_summary] PASSED [ 82%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_best_fit_allocation[py_avl] SKIPPED [ 83%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_best_fit_allocation[py_boundary] SKIPPED [ 83%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_best_fit_allocation[py_summary] PASSED [ 84%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_best_fit_allocation[py_treap] SKIPPED [ 84%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_best_fit_allocation[py_boundary_summary] SKIPPED [ 85%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_best_fit_allocation[cpp_boundary] SKIPPED [ 85%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_best_fit_allocation[cpp_treap] SKIPPED [ 86%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_best_fit_allocation[cpp_boundary_summary] SKIPPED [ 86%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_random_sampling[py_avl] SKIPPED [ 87%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_random_sampling[py_boundary] SKIPPED [ 87%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_random_sampling[py_summary] SKIPPED [ 88%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_random_sampling[py_treap] PASSED [ 88%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_random_sampling[py_boundary_summary] SKIPPED [ 89%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_random_sampling[cpp_boundary] SKIPPED [ 89%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_random_sampling[cpp_treap] SKIPPED [ 90%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_random_sampling[cpp_boundary_summary] SKIPPED [ 90%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_treap_properties[py_avl] SKIPPED [ 91%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_treap_properties[py_boundary] SKIPPED [ 91%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_treap_properties[py_summary] SKIPPED [ 92%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_treap_properties[py_treap] PASSED [ 92%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_treap_properties[py_boundary_summary] SKIPPED [ 93%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_treap_properties[cpp_boundary] SKIPPED [ 93%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_treap_properties[cpp_treap] PASSED [ 94%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_treap_properties[cpp_boundary_summary] SKIPPED [ 94%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_performance_tracking[py_avl] SKIPPED [ 95%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_performance_tracking[py_boundary] SKIPPED [ 95%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_performance_tracking[py_summary] SKIPPED [ 96%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_performance_tracking[py_treap] SKIPPED [ 96%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_performance_tracking[py_boundary_summary] PASSED [ 97%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_performance_tracking[cpp_boundary] SKIPPED [ 97%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_performance_tracking[cpp_treap] SKIPPED [ 98%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_performance_tracking[cpp_boundary_summary] PASSED [ 98%]
tests/unit/test_unified_implementations.py::TestCrossImplementationEquivalence::test_python_cpp_equivalence PASSED [ 99%]
tests/unit/test_unified_implementations.py::test_implementation_discovery PASSED [100%]
======================= 153 passed, 44 skipped in 3.90s ========================
🔄 Running cross-implementation validation...
============================= test session starts ==============================
platform darwin -- Python 3.12.7, pytest-8.4.2, pluggy-1.6.0 -- /Users/joseph/dev/Tree-Mendous/.venv/bin/python3
cachedir: .pytest_cache
hypothesis profile 'default'
rootdir: /Users/joseph/dev/Tree-Mendous
configfile: pyproject.toml
plugins: anyio-4.11.0, hypothesis-6.140.2
collecting ... collected 98 items
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_basic_interface_compliance[py_avl] PASSED [ 1%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_basic_interface_compliance[py_boundary] PASSED [ 2%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_basic_interface_compliance[py_summary] PASSED [ 3%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_basic_interface_compliance[py_treap] PASSED [ 4%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_basic_interface_compliance[py_boundary_summary] PASSED [ 5%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_basic_interface_compliance[cpp_boundary] PASSED [ 6%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_basic_interface_compliance[cpp_treap] PASSED [ 7%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_basic_interface_compliance[cpp_boundary_summary] PASSED [ 8%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_empty_manager[py_avl] PASSED [ 9%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_empty_manager[py_boundary] PASSED [ 10%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_empty_manager[py_summary] PASSED [ 11%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_empty_manager[py_treap] PASSED [ 12%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_empty_manager[py_boundary_summary] PASSED [ 13%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_empty_manager[cpp_boundary] PASSED [ 14%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_empty_manager[cpp_treap] PASSED [ 15%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_empty_manager[cpp_boundary_summary] PASSED [ 16%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_single_interval_release[py_avl] PASSED [ 17%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_single_interval_release[py_boundary] PASSED [ 18%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_single_interval_release[py_summary] PASSED [ 19%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_single_interval_release[py_treap] PASSED [ 20%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_single_interval_release[py_boundary_summary] PASSED [ 21%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_single_interval_release[cpp_boundary] PASSED [ 22%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_single_interval_release[cpp_treap] PASSED [ 23%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_single_interval_release[cpp_boundary_summary] PASSED [ 24%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_reserve_and_release_cycle[py_avl] PASSED [ 25%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_reserve_and_release_cycle[py_boundary] PASSED [ 26%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_reserve_and_release_cycle[py_summary] PASSED [ 27%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_reserve_and_release_cycle[py_treap] PASSED [ 28%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_reserve_and_release_cycle[py_boundary_summary] PASSED [ 29%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_reserve_and_release_cycle[cpp_boundary] PASSED [ 30%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_reserve_and_release_cycle[cpp_treap] PASSED [ 31%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_reserve_and_release_cycle[cpp_boundary_summary] PASSED [ 32%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_multiple_releases[py_avl] PASSED [ 33%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_multiple_releases[py_boundary] PASSED [ 34%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_multiple_releases[py_summary] PASSED [ 35%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_multiple_releases[py_treap] PASSED [ 36%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_multiple_releases[py_boundary_summary] PASSED [ 37%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_multiple_releases[cpp_boundary] PASSED [ 38%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_multiple_releases[cpp_treap] PASSED [ 39%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_multiple_releases[cpp_boundary_summary] PASSED [ 40%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_basic[py_avl] PASSED [ 41%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_basic[py_boundary] PASSED [ 42%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_basic[py_summary] PASSED [ 43%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_basic[py_treap] PASSED [ 44%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_basic[py_boundary_summary] PASSED [ 45%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_basic[cpp_boundary] PASSED [ 46%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_basic[cpp_treap] PASSED [ 47%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_basic[cpp_boundary_summary] PASSED [ 48%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_insufficient_space[py_avl] PASSED [ 50%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_insufficient_space[py_boundary] PASSED [ 51%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_insufficient_space[py_summary] PASSED [ 52%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_insufficient_space[py_treap] PASSED [ 53%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_insufficient_space[py_boundary_summary] PASSED [ 54%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_insufficient_space[cpp_boundary] PASSED [ 55%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_insufficient_space[cpp_treap] PASSED [ 56%]
tests/unit/test_unified_implementations.py::TestUniversalIntervalOperations::test_find_interval_insufficient_space[cpp_boundary_summary] PASSED [ 57%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_summary_statistics[py_avl] SKIPPED [ 58%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_summary_statistics[py_boundary] SKIPPED [ 59%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_summary_statistics[py_summary] PASSED [ 60%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_summary_statistics[py_treap] SKIPPED [ 61%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_summary_statistics[py_boundary_summary] PASSED [ 62%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_summary_statistics[cpp_boundary] SKIPPED [ 63%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_summary_statistics[cpp_treap] SKIPPED [ 64%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_summary_statistics[cpp_boundary_summary] PASSED [ 65%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_best_fit_allocation[py_avl] SKIPPED [ 66%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_best_fit_allocation[py_boundary] SKIPPED [ 67%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_best_fit_allocation[py_summary] PASSED [ 68%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_best_fit_allocation[py_treap] SKIPPED [ 69%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_best_fit_allocation[py_boundary_summary] SKIPPED [ 70%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_best_fit_allocation[cpp_boundary] SKIPPED [ 71%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_best_fit_allocation[cpp_treap] SKIPPED [ 72%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_best_fit_allocation[cpp_boundary_summary] SKIPPED [ 73%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_random_sampling[py_avl] SKIPPED [ 74%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_random_sampling[py_boundary] SKIPPED [ 75%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_random_sampling[py_summary] SKIPPED [ 76%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_random_sampling[py_treap] PASSED [ 77%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_random_sampling[py_boundary_summary] SKIPPED [ 78%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_random_sampling[cpp_boundary] SKIPPED [ 79%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_random_sampling[cpp_treap] SKIPPED [ 80%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_random_sampling[cpp_boundary_summary] SKIPPED [ 81%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_treap_properties[py_avl] SKIPPED [ 82%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_treap_properties[py_boundary] SKIPPED [ 83%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_treap_properties[py_summary] SKIPPED [ 84%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_treap_properties[py_treap] PASSED [ 85%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_treap_properties[py_boundary_summary] SKIPPED [ 86%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_treap_properties[cpp_boundary] SKIPPED [ 87%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_treap_properties[cpp_treap] PASSED [ 88%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_treap_properties[cpp_boundary_summary] SKIPPED [ 89%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_performance_tracking[py_avl] SKIPPED [ 90%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_performance_tracking[py_boundary] SKIPPED [ 91%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_performance_tracking[py_summary] SKIPPED [ 92%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_performance_tracking[py_treap] SKIPPED [ 93%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_performance_tracking[py_boundary_summary] PASSED [ 94%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_performance_tracking[cpp_boundary] SKIPPED [ 95%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_performance_tracking[cpp_treap] SKIPPED [ 96%]
tests/unit/test_unified_implementations.py::TestImplementationSpecificFeatures::test_performance_tracking[cpp_boundary_summary] PASSED [ 97%]
tests/unit/test_unified_implementations.py::TestCrossImplementationEquivalence::test_python_cpp_equivalence PASSED [ 98%]
tests/unit/test_unified_implementations.py::test_implementation_discovery PASSED [100%]
======================== 67 passed, 31 skipped in 0.05s ========================
[feature/release-system-uv 96a640e] Release v0.2.2
3 files changed, 3 insertions(+), 3 deletions(-)
✅ Tag v0.2.2 created and pushed!
🔗 Manually create release at: https://github.com/josephjohncox/Tree-Mendous/releases/tag/v0.2.2 - Tag-only workflow for debugging
🧹 Simplified Justfile
⚡ Modern CI/CD with uv
🎯 Same Great UX
just release patch "Fix bugs"just tag-release patch "Debug"for tag-only🔧 Technical Benefits
🧪 Testing
The release system is now production-ready with clean, maintainable code! 🎉