Troubleshooting
Common issues and their solutions when using SoftQCOS.
Installation Issuesβ
pip install failsβ
Error:
ERROR: Could not find a version that satisfies the requirement softqcos-sdk
Solutions:
- Check Python version (requires 3.10+):
python --version
# Should be 3.10 or higher
- Upgrade pip:
pip install --upgrade pip
- Use explicit Python:
python3.11 -m pip install softqcos-sdk
- Install from source:
pip install git+https://github.com/softquantus/softqcos-sdk.git
Import error: No module named 'softqcos_sdk'β
Error:
ModuleNotFoundError: No module named 'softqcos_sdk'
Solutions:
- Verify installation:
pip show softqcos-sdk
- Check virtual environment:
which python
# Should point to your venv
- Reinstall:
pip uninstall softqcos-sdk
pip install softqcos-sdk
Dependency conflictsβ
Error:
ERROR: Cannot install softqcos-sdk because these package versions have conflicting dependencies
Solutions:
- Create fresh virtual environment:
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# or: .venv\Scripts\activate # Windows
pip install softqcos-sdk
- Use pip's resolver:
pip install softqcos-sdk --use-feature=fast-deps
Authentication Issuesβ
"Invalid API key" errorβ
Error:
AuthenticationError: Invalid API key
Causes & Solutions:
| Cause | Solution |
|---|---|
| Typo in API key | Double-check key in portal |
| Key revoked | Generate new key in portal |
| Wrong environment | Use production key for production |
| Expired key | Regenerate in portal |
Debug:
import os
from softqcos_sdk import QCOSClient
# Check if key is set
api_key = os.environ.get("SOFTQCOS_API_KEY", "NOT SET")
print(f"Key starts with: {api_key[:10]}...")
# Test authentication
client = QCOSClient(api_key=api_key)
try:
health = client.health()
print(f"β
Connected: {health}")
except Exception as e:
print(f"β Error: {e}")
"Unauthorized" for Azure Quantumβ
Error:
AzureQuantumError: Unauthorized - Azure Quantum access not enabled
Solution: Your plan may not include Azure Quantum access. Check your plan at portal.softquantus.com/settings/billing.
Execution Issuesβ
"Circuit validation failed"β
Error:
CircuitValidationError: Invalid QASM: syntax error at line 5
Common Causes:
- Missing includes:
// β Wrong
OPENQASM 2.0;
qreg q[2];
h q[0]; // 'h' not defined
// β
Correct
OPENQASM 2.0;
include "qelib1.inc"; // Include standard gates
qreg q[2];
h q[0];
- Missing semicolons:
// β Wrong
h q[0]
cx q[0], q[1]
// β
Correct
h q[0];
cx q[0], q[1];
- Invalid gate arguments:
// β Wrong
rx(pi) q[0]; // 'pi' not a valid float in QASM 2.0
// β
Correct
rx(3.14159) q[0];
Validate before submitting:
from softqcos_sdk import QCOSClient
client = QCOSClient()
# Validate circuit
validation = client.validate(circuit)
if not validation.valid:
print(f"Errors: {validation.errors}")
"Circuit too large for backend"β
Error:
CircuitValidationError: Circuit requires 30 qubits, backend supports 25
Solutions:
- Check backend limits:
backends = client.list_backends()
for b in backends:
print(f"{b.name}: {b.max_qubits} qubits")
- Use a larger backend:
# Use Aer simulator for up to 32 qubits
result = client.execute(qasm=circuit, backend="aer", shots=1024)
- Optimize circuit:
# Optimization may reduce qubit requirements
optimized = client.optimize(circuit, target="ionq")
Timeout errorsβ
Error:
TimeoutError: Job did not complete within 300 seconds
Solutions:
- Increase timeout:
result = client.execute(
qasm=circuit,
shots=1024,
timeout=600 # 10 minutes
)
- Use async mode:
# Submit and poll separately
job = client.submit(qasm=circuit, shots=1024)
# Check status
status = client.get_job_status(job.job_id)
print(f"Status: {status}")
# Get result when ready
result = client.get_result(job.job_id)
- For Azure Quantum: Queue times can be long
# Check queue status
providers = client.azure_quantum.list_providers()
for p in providers:
print(f"{p.name}: queue ~{p.estimated_queue_time}")
Rate Limitingβ
"Rate limit exceeded"β
Error:
RateLimitError: Rate limit exceeded. Retry after 30 seconds.
Solution - Automatic retry:
from softqcos_sdk import QCOSClient
# SDK handles retries automatically
client = QCOSClient(
max_retries=3,
retry_delay=1.0
)
Solution - Manual handling:
from softqcos_sdk import QCOSClient, RateLimitError
import time
client = QCOSClient()
for circuit in circuits:
while True:
try:
result = client.execute(qasm=circuit, shots=1024)
break
except RateLimitError as e:
print(f"Rate limited. Waiting {e.retry_after}s...")
time.sleep(e.retry_after)
Solution - Batch processing:
# More efficient than individual requests
results = client.execute_batch(
circuits=circuits,
shots=1024
)
Azure Quantum Issuesβ
"Provider unavailable"β
Error:
ProviderUnavailableError: ionq.aria-1 is currently unavailable
Causes:
- Provider maintenance
- High demand / capacity limits
- Regional outage
Solutions:
- Check provider status:
providers = client.azure_quantum.list_providers()
for p in providers:
print(f"{p.name}: {'β
' if p.available else 'β'}")
- Use alternative target:
# Try simulator if QPU unavailable
targets = ["ionq.aria-1", "ionq.simulator"]
for target in targets:
try:
result = client.azure_quantum.execute(circuit, target, 100)
break
except ProviderUnavailableError:
continue
"Insufficient credits"β
Error:
QuotaExceededError: Insufficient Azure Quantum credits
Solutions:
- Check remaining credits:
usage = client.usage.get_azure_quantum_summary()
print(f"Remaining: β¬{usage.remaining_credits_eur:.2f}")
- Use simulator instead (free):
result = client.azure_quantum.execute(
circuit=circuit,
target="ionq.simulator", # Free
shots=1024
)
- Add credits at portal.softquantus.com/billing
Jobs stuck in queueβ
Symptom: Job status stays "queued" for hours
Diagnosis:
job = client.azure_quantum.get_job(job_id)
print(f"Status: {job.status}")
print(f"Position in queue: {job.queue_position}")
print(f"Estimated wait: {job.estimated_wait_time}")
Solutions:
- Wait - Some providers have long queues
- Cancel and use simulator:
client.azure_quantum.cancel_job(job_id)
- Try different provider:
# Rigetti often has shorter queues
result = client.azure_quantum.execute(circuit, "rigetti.qpu.ankaa-2", 100)
Performance Issuesβ
Slow execution timesβ
Causes & Solutions:
| Cause | Solution |
|---|---|
| Large circuit | Optimize first |
| Too many shots | Reduce shots |
| Network latency | Use async mode |
| Server load | Try off-peak hours |
Optimization:
# 1. Optimize circuit
optimized = client.optimize(circuit)
# 2. Use appropriate shots
# Most applications: 1024-4096 shots sufficient
result = client.execute(qasm=optimized.circuit, shots=1024)
# 3. Use async for multiple circuits
async def run_all(circuits):
async with AsyncQCOSClient() as client:
tasks = [client.execute(c, 1024) for c in circuits]
return await asyncio.gather(*tasks)
Memory issues with large batchesβ
Error:
MemoryError: Unable to allocate array
Solutions:
- Process in chunks:
def chunked_execute(circuits, chunk_size=100):
results = []
for i in range(0, len(circuits), chunk_size):
chunk = circuits[i:i+chunk_size]
chunk_results = client.execute_batch(chunk, shots=1024)
results.extend(chunk_results)
return results
- Use streaming:
# Process results as they arrive
for result in client.execute_batch_stream(circuits, shots=1024):
process(result)
# Result is discarded after processing
CLI Issuesβ
"softqcos: command not found"β
Solutions:
- Install CLI:
pip install softqcos-sdk[cli]
- Check PATH:
python -m softqcos --version
# If this works, add to PATH
- Use Python module:
python -m softqcos execute circuit.qasm
CLI authenticationβ
Error:
Error: No API key configured
Solution:
# Set via environment
export SOFTQCOS_API_KEY=your-api-key
# Or configure via CLI
softqcos auth login
# Or pass directly
softqcos execute circuit.qasm --api-key your-api-key
Getting More Helpβ
Debug modeβ
Enable verbose logging:
import logging
logging.basicConfig(level=logging.DEBUG)
from softqcos_sdk import QCOSClient
client = QCOSClient()
Collect diagnosticsβ
from softqcos_sdk import diagnostics
report = diagnostics.collect()
print(report)
# Save for support
report.save("diagnostics.json")
Contact supportβ
Include in your support request:
- SDK version:
pip show softqcos-sdk - Python version:
python --version - OS: Windows/macOS/Linux
- Full error message with traceback
- Minimal reproduction code
- Diagnostics report (if possible)
Support channels:
- π§ Email: support@softquantus.com
- π¬ Discord: discord.gg/softquantus
- π GitHub: Issues