A set of tools to run nanohub web apis
Project description
Nanohub remote
Stats
| Latest Release |
|
| PyPI Downloads |
|
| Nanohub Tutorial |
|
Installation
pip install nanohub-remote
Usage
Basic Authentication
import nanohubremote as nr
# Option 1: OAuth Password Grant (requires web application)
auth_data = {
'client_id': 'XXXXXXXX',
'client_secret': 'XXXXXXXX',
'grant_type': 'password',
'username': 'your_username',
'password': 'your_password'
}
# Option 2: Personal Access Token (recommended)
auth_data = {
'grant_type': 'personal_token',
'token': 'your_personal_token'
}
# to get username and password, register on nanohub.org (https://nanohub.org/register/)
# to get client id and secret, create a web application (https://nanohub.org/developer/api/applications/new), use "https://127.0.0.1" as Redirect URL
# to get a personal token, go to https://nanohub.org/developer/api/tokens
# Create a session
session = nr.Session(auth_data)
# Or use as a context manager (recommended - automatically cleans up resources)
with nr.Session(auth_data) as session:
# Your code here
pass
Session Configuration
The Session class supports advanced configuration options:
session = nr.Session(
auth_data,
url="https://nanohub.org/api", # Custom API URL
timeout=10, # Request timeout in seconds (default: 5)
max_retries=5, # Maximum retries for failed requests (default: 3)
pool_connections=20, # Connection pool size (default: 10)
pool_maxsize=20 # Max pool size (default: 10)
)
HTTP Methods
The Session class provides methods for all standard HTTP verbs:
with nr.Session(auth_data) as session:
# GET request
response = session.requestGet('tools/list')
tools = response.json()
# POST request with form data
response = session.requestPost('endpoint', data={'key': 'value'})
# POST request with JSON
response = session.requestPost('endpoint', json={'key': 'value'})
# PUT request
response = session.requestPut('resource/123', json={'status': 'updated'})
# DELETE request
response = session.requestDelete('resource/123')
# PATCH request
response = session.requestPatch('resource/123', json={'field': 'new_value'})
Features
- Connection Pooling: Reuses HTTP connections for better performance
- Automatic Retries: Automatically retries failed requests (configurable)
- Token Management: Handles OAuth token refresh automatically
- Context Manager: Use
withstatement for automatic resource cleanup - Persistent Headers: Headers are maintained across all requests
Development
Running Tests
# Install development dependencies
pip install -r requirements-dev.txt
# Run all tests
pytest
# Run with coverage
pytest --cov=nanohubremote --cov-report=html
# Run specific test file
pytest tests/test_session.py
See tests/README.md for detailed testing documentation.
Available Nanohub Points
Tools
TOOLNAME = '' # valid Nanoohub tool name e.g. pntoy
tool = nr.Tool(auth_data)
# Get Available input parameters
params = tool.getToolParameters(TOOLNAME)
# Submit a simulation experiment
job_id = tool.submitTool(params)
# Check Status
status = tool.checkStatus(job_id['job_id'])
# Get Results
results = tool.getResults(job_id['job_id'])
# Submit an wait for results
results = tool.submitTool(params, wait_results=True)
Sim2Ls
TOOLNAME = '' # valid Nanoohub tool name e.g. pntoy
s2l = nr.Sim2L(auth_data)
# Get Available input parameters
params = s2l.getToolParameters(TOOLNAME)
# Submit a simulation experiment
job_id = s2l.submitTool(params)
# Check Status
status = s2l.checkStatus(job_id['job_id'])
# Get Results
results = s2l.getResults(job_id['job_id'])
# Submit an wait for results
results = s2l.submitTool(params, wait_results=True)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
nanohub_remote-0.2.0.tar.gz
(501.3 kB
view details)
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 nanohub_remote-0.2.0.tar.gz.
File metadata
- Download URL: nanohub_remote-0.2.0.tar.gz
- Upload date:
- Size: 501.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e71f6d5c5c48c66812f72e873bab4d2a7e442b7cdd3eb5f49b3b8e8263d10f83
|
|
| MD5 |
882afcfdd8c5b29f73c60ce75a14dc9f
|
|
| BLAKE2b-256 |
3999facf51232cd7fb36fec5875c4262282888c4e43b13fc85adf64bf0758cfd
|
File details
Details for the file nanohub_remote-0.2.0-py3-none-any.whl.
File metadata
- Download URL: nanohub_remote-0.2.0-py3-none-any.whl
- Upload date:
- Size: 31.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9ca0aed58dc11fc6a389df3f51dcc8e5f877cf33337ed94dda75d0e843541a8
|
|
| MD5 |
b19a30ca2b2235005372b45ca41f6557
|
|
| BLAKE2b-256 |
83c685c7a8104fc697421191ad80bee0d6fa7c0b1bac46af25aa18ea9031a52a
|