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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ndp_ep-0.8.1.tar.gz
(40.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
ndp_ep-0.8.1-py3-none-any.whl
(37.4 kB
view details)
File details
Details for the file ndp_ep-0.8.1.tar.gz.
File metadata
- Download URL: ndp_ep-0.8.1.tar.gz
- Upload date:
- Size: 40.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ef3cc6a90414a996236af1dbac2403b4d59c391428dac3e915570d779447023
|
|
| MD5 |
952a35d72fbe7e64c15f10491b278730
|
|
| BLAKE2b-256 |
029456d19b776550642ef6901157942ebcf397a35fa7a29e8e08279c8f5e554c
|
File details
Details for the file ndp_ep-0.8.1-py3-none-any.whl.
File metadata
- Download URL: ndp_ep-0.8.1-py3-none-any.whl
- Upload date:
- Size: 37.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d2cd9594a693557b6ab7fd3f81570d6115e38e093aed07ab1c8d22e6a85a600f
|
|
| MD5 |
eae9f228155cab1c0eba8ddcbea9c476
|
|
| BLAKE2b-256 |
aa811b92aee8ea3330ea0db2c3dfd51318ccf22e3252afaacd5905e1707da5f5
|