Core client library for the QPerfect MIMIQ Cloud API
Project description
MIMIQ Link Python
MIMIQ Link provides secure authentication and connection management for QPerfect's MIMIQ Virtual Quantum Computer. It handles all communication between Python environments and MIMIQ's remote execution services.
Part of the MIMIQ ecosystem by QPerfect.
Overview
MIMIQ Link offers flexible authentication methods to connect to MIMIQ's cloud services:
- 🌐 Browser-based authentication
- 🔑 Token-based access - Save and reuse authentication tokens
- 🔐 Credential-based login - Direct username/password authentication
- 🔄 Automatic session management - Token refresh and connection handling
- 🏢 Multi-environment support - Connect to different MIMIQ instances
- 📦 Job management - Submit, monitor, and retrieve quantum circuit execution results
Installation
From PyPI
pip install mimiqlink
From GitHub
pip install "mimiqlink @ git+https://github.com/qperfect-io/mimiqlink-python.git"
Requirements
- Python 3.8 or higher
- Supported on Linux, macOS, and Windows
Note: Most users should install mimiqcircuits which includes this package and provides the full quantum circuit building experience.
Quick Start
Basic Connection
import mimiqlink
# Create connection object
conn = mimiqlink.MimiqConnection()
# Connect using browser authentication (recommended)
conn.connect()
Connection with Credentials
import mimiqlink
conn = mimiqlink.MimiqConnection()
# Connect with username and password
conn.connectUser("your.email@example.com", "yourpassword")
⚠️ Security Warning: Avoid hardcoding credentials in your scripts. Use environment variables or secure configuration files instead.
Authentication Methods
Method 1: Browser Authentication (Recommended)
This method provides the most secure authentication flow:
import mimiqlink
conn = mimiqlink.MimiqConnection()
conn.connect() # Opens browser for secure login
This will:
- Open your default web browser
- Direct you to MIMIQ's login page
- Securely authenticate your session
- Return control to your Python script
Method 2: Token-Based Authentication
Save your authentication token for reuse:
import mimiqlink
# First time: authenticate and the token is saved automatically
conn = mimiqlink.MimiqConnection()
conn.savetoken("qperfect.json")
Then load the token in future sessions:
import mimiqlink
conn = MimiqConnection().loadtoken(filepath="qperfect.json")
Method 3: Credential-Based Authentication
For automated workflows where browser interaction isn't possible:
import mimiqlink
import os
# Using environment variables (recommended)
conn = mimiqlink.MimiqConnection()
conn.connectUser(
os.environ.get("MIMIQ_EMAIL"),
os.environ.get("MIMIQ_PASSWORD")
)
Working with Files and Jobs
Submitting a Job
import mimiqlink
conn = mimiqlink.MimiqConnection()
conn.connect()
# Submit a job with circuit files
conn.request(
name="My Quantum Job",
label="experiment-001",
files=["circuit.qasm", "data.json"]
)
Downloading Results
import mimiqlink
conn = mimiqlink.MimiqConnection()
conn.connect()
# Download specific files from a job
job_data = conn.downloadFiles(
executionRequestId="job-12345",
fileId="1",
downloadPath="./results"
)
# Download all job files
all_files = conn.downloadjobFiles(
executionRequestId="job-12345"
)
Checking Job Status
import mimiqlink
conn = mimiqlink.MimiqConnection()
conn.connect()
# Get job status and information
status = conn.getJobStatus("job-12345")
print(f"Job status: {status}")
Connection Configuration
Custom MIMIQ Instance
Connect to a specific MIMIQ instance (useful for on-premises deployments):
import mimiqlink
conn = mimiqlink.MimiqConnection(url="https://custom-mimiq.example.com/api")
conn.connect()
Connection Timeout
Set custom timeout for API requests:
import mimiqlink
conn = mimiqlink.MimiqConnection(timeout=60) # 60 seconds
conn.connect()
Usage with MIMIQ Circuits
MIMIQ Link is typically used through the MIMIQ Circuits package:
from mimiqcircuits import *
# MimiqConnection from mimiqcircuits uses mimiqlink internally
conn = MimiqConnection()
conn.connect()
# Build and execute a circuit
circuit = Circuit()
circuit.push(GateH(), 0)
circuit.push(GateCX(), 0, 1)
circuit.push(Measure(), range(2), range(2))
# Execute on MIMIQ cloud
job = conn.execute(circuit, algorithm="auto", nsamples=1000)
results = conn.get_results(job)
Security Best Practices
- Never commit credentials to version control
- Use environment variables for automated systems:
import os
import mimiqlink
conn = mimiqlink.MimiqConnection()
conn.connectUser(
os.getenv("MIMIQ_EMAIL"),
os.getenv("MIMIQ_PASSWORD")
)
- Protect token files - treat them like passwords
- Use browser authentication when possible for maximum security
- Rotate tokens regularly by re-authenticating
Setting Up Environment Variables
Linux/macOS
export MIMIQ_EMAIL="your.email@example.com"
export MIMIQ_PASSWORD="yourpassword"
Windows (Command Prompt)
set MIMIQ_EMAIL=your.email@example.com
set MIMIQ_PASSWORD=yourpassword
Windows (PowerShell)
$env:MIMIQ_EMAIL="your.email@example.com"
$env:MIMIQ_PASSWORD="yourpassword"
Using a .env File
Create a .env file (and add it to .gitignore):
MIMIQ_EMAIL=your.email@example.com
MIMIQ_PASSWORD=yourpassword
Then use python-dotenv:
from dotenv import load_dotenv
import os
import mimiqlink
load_dotenv()
conn = mimiqlink.MimiqConnection()
conn.connectUser(os.getenv("MIMIQ_EMAIL"), os.getenv("MIMIQ_PASSWORD"))
Troubleshooting
Token Expired
If your token has expired, simply reconnect:
conn = mimiqlink.MimiqConnection()
conn.connect() # This will refresh your token
Checking Connection Status
import mimiqlink
conn = mimiqlink.MimiqConnection()
conn.connect()
# Verify connection is active
if conn.isOpen():
print("Successfully connected to MIMIQ")
else:
print("Connection failed")
API Reference
MimiqConnection Class
Constructor:
MimiqConnection()
Methods:
connect()- Browser-based authenticationconnectUser(email, password)- Credential-based authenticationrequest(name, label, files)- Submit a new jobdownloadFiles(executionRequestId, fileId, downloadPath)- Download specific filesdownloadjobFiles(executionRequestId)- Download all job filesgetJobStatus(jobId)- Get job execution statusclose()- Close connection and clean up resources
Related Packages
- mimiqcircuits-python - Full quantum circuit library (includes this package)
- MimiqLink.jl - Julia version of this library
- MimiqCircuits.jl - Julia quantum circuits library
Access to MIMIQ
To use MIMIQ's remote services, you need an active subscription:
- 🌐 Register at qperfect.io to get started
- 📧 Contact us at contact@qperfect.io for organizational subscriptions
- 🏢 If your organization has a subscription, contact your account administrator
Contributing
We welcome contributions! Whether you're:
- 🐛 Fixing bugs
- 💡 Adding features
- 📝 Improving documentation
- ✨ Suggesting enhancements
Feel free to open issues or pull requests.
Support
- 📧 Email: mimiq.support@qperfect.io
- 🐛 Bug Reports: GitHub Issues
- 💬 Discussions: GitHub Discussions
- 🌐 Website: qperfect.io
COPYRIGHT
Copyright © 2022-2023 University of Strasbourg. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Made with ❤️ by the QPerfect team
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mimiqlink-0.8.4.tar.gz.
File metadata
- Download URL: mimiqlink-0.8.4.tar.gz
- Upload date:
- Size: 80.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.11.15 Linux/6.14.0-1017-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3334f1a0f5821f08aa4800b71692e5e62a08ad83e3e7ad50bc88823bbc5a5ea8
|
|
| MD5 |
20bb4376a0683435af1db72f72725bec
|
|
| BLAKE2b-256 |
e46e27e2fc3d48a3abb62d203d6775f3c360a85a40843cd1d8d515fd0f92018c
|
File details
Details for the file mimiqlink-0.8.4-py3-none-any.whl.
File metadata
- Download URL: mimiqlink-0.8.4-py3-none-any.whl
- Upload date:
- Size: 84.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.11.15 Linux/6.14.0-1017-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dfa7fcb60db306de91c3666163d14ce7ee2c30d7649a56604ddefc7a0c15b33a
|
|
| MD5 |
c13c09c60cddf99498ef5afad9bae51d
|
|
| BLAKE2b-256 |
9f7add6a761b39503e29700e040ee2899521a1823bfd6f0b631969a72b98181a
|