Skip to content

Conversation

@jon-myers
Copy link
Contributor

Summary

Changes

Meter/Tala System (#58, #59)

  • Remove display_tempo property (reverted in web app)
  • Add TalaName enum with 14 predefined Hindustani talas
  • Add tala_presets class variable with hierarchy and vibhaga definitions
  • Add Meter.from_tala() classmethod for creating meters from presets
  • Add segment boundary methods for vibhag-aware operations:
    • get_segment_boundary_indices() - get vibhag boundary indices
    • get_matra_pulses() - get matra-level pulses
    • is_segment_boundary() - check if pulse is at vibhag boundary
    • get_segment_for_matra_index() - get segment range for matra index
    • offset_segment_boundary() - offset boundary with proportional redistribution
  • Add lowest_layer property to Pulse class
  • Update serialization for tala_name and vibhaga
  • Add 18 new comprehensive tests

UV Migration

  • Add uv.lock for dependency locking
  • All 422 tests pass with uv

Test plan

  • All 26 meter tests pass
  • All 422 tests in the suite pass
  • Tala serialization round-trips correctly
  • Segment boundary operations work correctly

🤖 Generated with Claude Code

jon-myers and others added 2 commits December 19, 2025 13:21
Addresses issues #58 and #59:

**Issue #58 - Remove display_tempo:**
- Remove display_tempo property and setter from Meter class (was reverted in web app)
- Remove associated tests

**Issue #59 - Sync meter/tala features:**
- Add TalaName enum with 14 predefined Hindustani talas
- Add tala_presets class variable with hierarchy and vibhaga definitions
- Add Meter.from_tala() classmethod for creating meters from presets
- Add tala_name and vibhaga instance variables to Meter
- Add segment boundary methods:
  - get_segment_boundary_indices() - get vibhag boundary indices
  - get_matra_pulses() - get matra-level pulses (every Nth pulse based on hierarchy)
  - is_segment_boundary() - check if pulse is at vibhag boundary
  - get_segment_for_matra_index() - get segment range for matra index
  - offset_segment_boundary() - offset boundary with proportional redistribution
  - _offset_pulse_direct() - internal pulse offset helper
- Add lowest_layer property to Pulse class
- Update to_json/from_json for tala_name and vibhaga serialization
- Add comprehensive tests for all new functionality (18 new tests)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Migrate from pipenv to uv for faster, more reliable dependency management.
uv.lock replaces Pipfile.lock for dependency locking.

To use uv:
- Install: curl -LsSf https://astral.sh/uv/install.sh | sh
- Sync deps: uv sync --all-extras
- Run tests: uv run pytest

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@github-actions
Copy link
Contributor

📦 Test Package Built Successfully!

This PR has been automatically built and uploaded to TestPyPI for testing.

🔗 TestPyPI Link: https://test.pypi.org/project/idtap/

To test this version:

pip install --index-url https://test.pypi.org/simple/ idtap

✅ All tests passed and package builds successfully.

@jon-myers jon-myers merged commit 0fa66dc into main Dec 19, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants