Phase 1 critical fixes addressing three high-priority issues: Issue #36 - Windows IPC backend crash (os.getuid not available): - Add platform detection to skip Unix-specific socket paths on Windows - Use hasattr check before calling os.getuid() - Windows now uses auto-detect fallback (named pipes) - Maintains full Unix socket support on Linux/macOS Issue #37 - Windows schematic file creation broken: - Generate unique UUIDs instead of invalid all-zeros UUID - Add explicit UTF-8 encoding for cross-platform compatibility - Force Unix line endings (LF) to prevent Windows CRLF issues - Update template file with valid placeholder UUID - Fix hardcoded /tmp/ paths in wire_manager.py and pin_locator.py Issue #35 - JLCPCB download limited to 100 parts: - Change batch_size from 1000 to 100 to match tscircuit API limit - Remove premature loop termination when batch < batch_size - Add documentation explaining API limitation - Expected result: Full ~2.5M part catalog download (40-60 minutes) All changes maintain backward compatibility and include detailed comments. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -143,14 +143,17 @@ class JLCSearchClient:
|
||||
def download_all_components(
|
||||
self,
|
||||
callback: Optional[Callable[[int, str], None]] = None,
|
||||
batch_size: int = 1000
|
||||
batch_size: int = 100
|
||||
) -> List[Dict]:
|
||||
"""
|
||||
Download all components from jlcsearch database
|
||||
|
||||
Note: tscircuit API has a hard-coded 100 result limit per request.
|
||||
Full catalog download requires ~25,000 paginated requests (~40-60 minutes).
|
||||
|
||||
Args:
|
||||
callback: Optional progress callback function(parts_count, status_msg)
|
||||
batch_size: Number of parts per batch
|
||||
batch_size: Number of parts per batch (max 100 due to API limit)
|
||||
|
||||
Returns:
|
||||
List of all parts
|
||||
@@ -168,7 +171,8 @@ class JLCSearchClient:
|
||||
offset=offset
|
||||
)
|
||||
|
||||
if not batch:
|
||||
# Stop if no results returned (end of catalog)
|
||||
if not batch or len(batch) == 0:
|
||||
break
|
||||
|
||||
all_parts.extend(batch)
|
||||
@@ -179,9 +183,8 @@ class JLCSearchClient:
|
||||
else:
|
||||
logger.info(f"Downloaded {len(all_parts)} parts so far...")
|
||||
|
||||
# If we got fewer results than requested, we've reached the end
|
||||
if len(batch) < batch_size:
|
||||
break
|
||||
# Continue pagination - API returns exactly 100 results per page until exhausted
|
||||
# Only stop when we get 0 results (handled above)
|
||||
|
||||
# Rate limiting - be nice to the API
|
||||
time.sleep(0.1)
|
||||
|
||||
Reference in New Issue
Block a user