Conversation
but note the new tunebook websites have the ABCs stored differently (in script tags)
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #112 +/- ##
==========================================
+ Coverage 94.56% 94.96% +0.39%
==========================================
Files 16 16
Lines 1841 1925 +84
==========================================
+ Hits 1741 1828 +87
+ Misses 100 97 -3 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
This PR updates the Eskin and Bill Black source integrations to match upstream URL changes, adds extraction support for the newer Eskin tunebook HTML structure, and introduces retry-capable HTTP sessions to reduce flakiness when fetching remote data.
Changes:
- Updated Eskin tunebook URL mappings and added a 2026-era HTML extractor with group parsing.
- Updated Bill Black “alltunes” URLs/file naming and switched network calls to use a shared retrying session.
- Adjusted tests, docs, and release notes to reflect the upstream changes.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
tests/test_sources.py |
Switches tests to use module sessions (retry/UA) and updates expectations for new group/file listings. |
pyproject.toml |
Adds urllib3 to the sources optional dependency set (used for Retry). |
pyabc2/sources/eskin.py |
Updates Eskin URL keys, adds retrying session, and adds new HTML extraction for 2026 pages with fallback logic. |
pyabc2/sources/bill_black.py |
Updates alltunes endpoints/filenames and adds retrying session used by the downloader. |
pyabc2/sources/bill_black_tunefolders.py |
Reuses Bill Black session helper and updates referenced URLs in module docs. |
docs/examples/sources.ipynb |
Updates example query to match new Eskin group naming. |
docs/changes.md |
Adds an unreleased release-note entry for these source updates. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
might as well Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
just got 415's again in a CI run
Eskin ended up making a CI run take 149m and still fail
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.
Suppressed comments (1)
tests/test_sources.py:509
- This web test uses raw
requests.head(...), so it bypasses the shared session (User-Agent + retries) that the other Eskin/Bill Black web tests use. That makes this test more likely to flake on transient 4xx/5xx responses or bot throttling. Useeskin._get_session()and callsession.head(...)instead.
@pytest.mark.web
@pytest.mark.xdist_group("eskin")
@pytest.mark.parametrize("use_lzw", [True, False])
def test_eskin_abc_url_creation(use_lzw):
import requests
abc = load_example_abc("For the Love of Music")
url = eskin.abc_to_abctools_url(abc, lzw=use_lzw)
r = requests.head(url, timeout=5)
r.raise_for_status()
| - name: Test with pytest (non-web) | ||
| if: ${{ matrix.python-version != '3.14' }} | ||
| run: > | ||
| pytest -v -ra | ||
| --doctest-modules |
Uh oh!
There was an error while loading. Please reload this page.