Python client library for NDP EP API
Project description
ndp-ep
A Python client library for interacting with the NDP EP API. This library provides a simple and intuitive interface for managing datasets, organizations, resources, and services through the API.
Features
- Complete API Coverage: Support for all API endpoints including Kafka topics, S3 resources, URL resources, organizations, and services
- Authentication: Token-based and username/password authentication
- Search Functionality: Advanced search capabilities across datasets and resources
- Error Handling: Comprehensive error handling with meaningful error messages
- Type Hints: Full type hint support for better IDE integration
- Testing: Extensive test coverage (>70%) with unit and integration tests
Installation
pip install ndp-ep
Quick Start
from ndp_ep import APIClient
# Initialize client with token
client = APIClient(
base_url="https://your-api-endpoint.com",
token="your-access-token"
)
# List organizations
organizations = client.list_organizations()
print(organizations)
# Search datasets
results = client.search_datasets(
terms=["climate", "temperature"],
server="global"
)
# Register a new organization
org_data = {
"name": "my_organization",
"title": "My Organization",
"description": "A sample organization"
}
response = client.register_organization(org_data)
# Register a service
service_data = {
"service_name": "user_auth_api",
"service_title": "User Authentication API",
"owner_org": "services",
"service_url": "https://api.example.com/auth",
"service_type": "API",
"notes": "RESTful API for user authentication"
}
response = client.register_service(service_data)
# S3 Management Examples
buckets = client.list_buckets()
client.create_bucket("my-data-bucket")
# Upload and download files
with open("data.csv", "rb") as f:
client.upload_object("my-data-bucket", "datasets/data.csv", f)
file_content = client.download_object("my-data-bucket", "datasets/data.csv")
# Generate presigned URLs for secure file sharing
upload_url = client.generate_presigned_upload_url("my-data-bucket", "new-file.txt")
download_url = client.generate_presigned_download_url("my-data-bucket", "data.csv")
More Examples
For comprehensive examples and use cases, check out our:
API Coverage
Authentication
- Token-based authentication
- Username/password authentication
Organizations
list_organizations()- List all organizationsregister_organization()- Create new organizationdelete_organization()- Delete organization
Datasets and Resources
search_datasets()- Search datasets with advanced filtersadvanced_search()- Advanced search with POST methodregister_url()- Register URL resourcesregister_s3_link()- Register S3 resourcesregister_kafka_topic()- Register Kafka topicsregister_general_dataset()- Register general datasetsupdate_url_resource()- Update URL resourcesupdate_s3_resource()- Update S3 resourcesupdate_kafka_topic()- Update Kafka topicsupdate_general_dataset()- Update general datasets (PUT)patch_general_dataset()- Partially update general datasets (PATCH)delete_resource_by_id()- Delete resource by IDdelete_resource_by_name()- Delete resource by name
Services
register_service()- Register new services
S3 Management
list_buckets()- List all S3 bucketscreate_bucket()- Create new S3 bucketget_bucket_info()- Get S3 bucket informationdelete_bucket()- Delete S3 bucketlist_objects()- List objects in S3 bucketupload_object()- Upload object to S3 bucketdownload_object()- Download object from S3 bucketdelete_object()- Delete object from S3 bucketget_object_metadata()- Get S3 object metadatagenerate_presigned_upload_url()- Generate presigned upload URLgenerate_presigned_download_url()- Generate presigned download URL
System Information
get_kafka_details()- Get Kafka connection detailsget_system_status()- Check system statusget_system_metrics()- Get system metricsget_jupyter_details()- Get Jupyter connection details
Development
Setting up development environment
# Clone the repository
git clone https://github.com/sci-ndp/ndp-ep-py.git
cd ndp-ep-py
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install development dependencies
pip install -e .
pip install -r requirements-dev.txt
Running tests
# Run all tests
pytest
# Run with coverage
pytest --cov=ndp_ep --cov-report=html
# Run specific test categories
pytest -m unit # Unit tests only
pytest -m integration # Integration tests only
Code formatting and linting
# Format code
black ndp_ep tests
# Lint code
flake8 ndp_ep
# Type checking
mypy ndp_ep
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Add tests for your changes
- Ensure all tests pass and coverage is maintained
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Changelog
v0.1.0
- Initial release
- Complete API coverage for all endpoints
- Authentication support (token and username/password)
- Search functionality
- Resource management (URL, S3, Kafka)
- Organization management
- Comprehensive testing suite
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
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 ndp_ep-0.8.0.tar.gz.
File metadata
- Download URL: ndp_ep-0.8.0.tar.gz
- Upload date:
- Size: 40.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c4d29d0a56526002489f7436213c229417ef72b7014c9bf6dcb875a967399c44
|
|
| MD5 |
d97f2b1d6525335fa11b74bd948c5130
|
|
| BLAKE2b-256 |
631e6c1baba775825bd809e3b36d84ca150e1085496723985f9e6f7e98218a6f
|
File details
Details for the file ndp_ep-0.8.0-py3-none-any.whl.
File metadata
- Download URL: ndp_ep-0.8.0-py3-none-any.whl
- Upload date:
- Size: 37.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9553fe278de0f0ff6ec716f1e3560aa7732756e6a91151119dcd7856e0a6e135
|
|
| MD5 |
8ffd3402cfd36de68961cbdaf544f955
|
|
| BLAKE2b-256 |
08cd26ba6535eea42cfd5dd55ca0f1d4e501add54fd1251ae2db6b98903d33b6
|