# O-Nakala Core
A Python library and CLI toolkit for NAKALA research data repository workflows, designed for digital humanities and academic research teams.
## Installation
```bash
# Complete installation with CLI tools
pip install o-nakala-core[cli]
# Core library only
pip install o-nakala-core
# Development installation
git clone https://github.com/xy-liao/o-nakala-core.git
cd o-nakala-core
pip install -e ".[cli,dev]"
```
## Quick Start
### Python API
```python
from o_nakala_core import NakalaConfig, NakalaUserInfoClient
# Configure connection
config = NakalaConfig(api_key="your-api-key")
# Get user information
client = NakalaUserInfoClient(config)
user_info = client.get_user_info()
print(f"Connected as: {user_info['username']}")
```
### CLI Tools
```bash
# Set your API key
export NAKALA_API_KEY="your-api-key"
# Preview and validate metadata before upload
o-nakala-preview --csv your_data.csv --interactive
# Upload datasets from CSV
o-nakala-upload --csv your_data.csv --api-key $NAKALA_API_KEY
# Create collections
o-nakala-collection --from-folder-collections collections.csv
# Quality analysis and curation
o-nakala-curator --quality-report --scope all
```
## CLI Commands
- **`o-nakala-upload`** - Batch upload datasets with CSV-driven metadata
- **`o-nakala-preview`** - Validate and preview metadata before upload
- **`o-nakala-collection`** - Create and manage thematic collections
- **`o-nakala-curator`** - Metadata curation and quality analysis
- **`o-nakala-user-info`** - Account management and permissions
## Key Features
- **CSV-based workflows** for reproducible research data management
- **Metadata validation** with real-time feedback and suggestions
- **Complete Dublin Core support** for comprehensive metadata
- **Batch operations** for large-scale data uploads and collection management
- **Quality analysis** tools for metadata curation and enhancement
- **Multilingual metadata** support with French/English templates
- **Production-ready error handling** with comprehensive logging
## Basic Workflow
```bash
# 1. Prepare your data in CSV format
# See examples/sample_dataset/ for format reference
# 2. Validate metadata (recommended)
o-nakala-preview --csv folder_data_items.csv --interactive
# 3. Upload data
o-nakala-upload \
--csv folder_data_items.csv \
--mode folder \
--base-path ./data \
--output upload_results.csv
# 4. Create collections (optional)
o-nakala-collection \
--from-upload-output upload_results.csv \
--from-folder-collections collections.csv
# 5. Quality check (recommended)
o-nakala-curator --quality-report
```
## CSV Format Example
**folder_data_items.csv**:
```csv
title,creator,description,type,file
"Research Analysis Scripts","Dupont,Jean","Python scripts for data analysis","http://purl.org/coar/resource_type/c_5ce6","code/analysis.py"
"Survey Results 2023","Martin,Claire","Raw survey data","http://purl.org/coar/resource_type/c_ddb1","data/survey.csv"
```
The library automatically transforms simple CSV formats into complete NAKALA API metadata structures.
## Documentation & Examples
For comprehensive guides, examples, and API documentation, visit the [project repository](https://github.com/xy-liao/o-nakala-core):
- **Getting Started Guide** - Step-by-step setup and first upload
- **Workflow Examples** - Complete research data workflows
- **Interactive Workshop** - Jupyter notebook with hands-on examples
- **API Reference** - Detailed technical documentation
- **Sample Datasets** - Ready-to-use example data and configurations
## Environment Setup
```bash
# Required - Get API key from NAKALA platform
export NAKALA_API_KEY="your-api-key"
# Optional - Set environment (defaults to test)
export NAKALA_BASE_URL="https://apitest.nakala.fr" # Test environment
# export NAKALA_BASE_URL="https://api.nakala.fr" # Production
```
## Requirements
- Python 3.9+
- Active NAKALA account with API access
- CSV files with research metadata
## Support
For issues, questions, and contributions:
- **Issues**: [GitHub Issues](https://github.com/xy-liao/o-nakala-core/issues)
- **Documentation**: [Project Repository](https://github.com/xy-liao/o-nakala-core)
- **NAKALA Platform**: [nakala.fr](https://nakala.fr)
## License
MIT License - see [LICENSE](LICENSE) file for details.
## Contributing
Contributions welcome! Please see the repository for development setup and contribution guidelines.
---
**Built for academic and research teams who need reliable, straightforward tools for research data management.**
Raw data
{
"_id": null,
"home_page": null,
"name": "o-nakala-core",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "nakala, research-data, repository, api-client, digital-humanities, metadata, cli, academic",
"author": "xy-liao",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/ca/11/f9b3bf784b68445a4ebef9d87b7fbf5df2e11e848c6aa73b99d5aa43b760/o_nakala_core-2.5.0.tar.gz",
"platform": null,
"description": "# O-Nakala Core\n\nA Python library and CLI toolkit for NAKALA research data repository workflows, designed for digital humanities and academic research teams.\n\n## Installation\n\n```bash\n# Complete installation with CLI tools\npip install o-nakala-core[cli]\n\n# Core library only\npip install o-nakala-core\n\n# Development installation\ngit clone https://github.com/xy-liao/o-nakala-core.git\ncd o-nakala-core\npip install -e \".[cli,dev]\"\n```\n\n## Quick Start\n\n### Python API\n```python\nfrom o_nakala_core import NakalaConfig, NakalaUserInfoClient\n\n# Configure connection\nconfig = NakalaConfig(api_key=\"your-api-key\")\n\n# Get user information\nclient = NakalaUserInfoClient(config)\nuser_info = client.get_user_info()\nprint(f\"Connected as: {user_info['username']}\")\n```\n\n### CLI Tools\n```bash\n# Set your API key\nexport NAKALA_API_KEY=\"your-api-key\"\n\n# Preview and validate metadata before upload\no-nakala-preview --csv your_data.csv --interactive\n\n# Upload datasets from CSV\no-nakala-upload --csv your_data.csv --api-key $NAKALA_API_KEY\n\n# Create collections\no-nakala-collection --from-folder-collections collections.csv\n\n# Quality analysis and curation\no-nakala-curator --quality-report --scope all\n```\n\n## CLI Commands\n\n- **`o-nakala-upload`** - Batch upload datasets with CSV-driven metadata\n- **`o-nakala-preview`** - Validate and preview metadata before upload\n- **`o-nakala-collection`** - Create and manage thematic collections \n- **`o-nakala-curator`** - Metadata curation and quality analysis\n- **`o-nakala-user-info`** - Account management and permissions\n\n## Key Features\n\n- **CSV-based workflows** for reproducible research data management\n- **Metadata validation** with real-time feedback and suggestions\n- **Complete Dublin Core support** for comprehensive metadata\n- **Batch operations** for large-scale data uploads and collection management\n- **Quality analysis** tools for metadata curation and enhancement\n- **Multilingual metadata** support with French/English templates\n- **Production-ready error handling** with comprehensive logging\n\n## Basic Workflow\n\n```bash\n# 1. Prepare your data in CSV format\n# See examples/sample_dataset/ for format reference\n\n# 2. Validate metadata (recommended)\no-nakala-preview --csv folder_data_items.csv --interactive\n\n# 3. Upload data\no-nakala-upload \\\n --csv folder_data_items.csv \\\n --mode folder \\\n --base-path ./data \\\n --output upload_results.csv\n\n# 4. Create collections (optional)\no-nakala-collection \\\n --from-upload-output upload_results.csv \\\n --from-folder-collections collections.csv\n\n# 5. Quality check (recommended)\no-nakala-curator --quality-report\n```\n\n## CSV Format Example\n\n**folder_data_items.csv**:\n```csv\ntitle,creator,description,type,file\n\"Research Analysis Scripts\",\"Dupont,Jean\",\"Python scripts for data analysis\",\"http://purl.org/coar/resource_type/c_5ce6\",\"code/analysis.py\"\n\"Survey Results 2023\",\"Martin,Claire\",\"Raw survey data\",\"http://purl.org/coar/resource_type/c_ddb1\",\"data/survey.csv\"\n```\n\nThe library automatically transforms simple CSV formats into complete NAKALA API metadata structures.\n\n## Documentation & Examples\n\nFor comprehensive guides, examples, and API documentation, visit the [project repository](https://github.com/xy-liao/o-nakala-core):\n\n- **Getting Started Guide** - Step-by-step setup and first upload\n- **Workflow Examples** - Complete research data workflows\n- **Interactive Workshop** - Jupyter notebook with hands-on examples\n- **API Reference** - Detailed technical documentation\n- **Sample Datasets** - Ready-to-use example data and configurations\n\n## Environment Setup\n\n```bash\n# Required - Get API key from NAKALA platform\nexport NAKALA_API_KEY=\"your-api-key\"\n\n# Optional - Set environment (defaults to test)\nexport NAKALA_BASE_URL=\"https://apitest.nakala.fr\" # Test environment\n# export NAKALA_BASE_URL=\"https://api.nakala.fr\" # Production\n```\n\n## Requirements\n\n- Python 3.9+\n- Active NAKALA account with API access\n- CSV files with research metadata\n\n## Support\n\nFor issues, questions, and contributions:\n\n- **Issues**: [GitHub Issues](https://github.com/xy-liao/o-nakala-core/issues)\n- **Documentation**: [Project Repository](https://github.com/xy-liao/o-nakala-core)\n- **NAKALA Platform**: [nakala.fr](https://nakala.fr)\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## Contributing\n\nContributions welcome! Please see the repository for development setup and contribution guidelines.\n\n---\n\n**Built for academic and research teams who need reliable, straightforward tools for research data management.**\n",
"bugtrack_url": null,
"license": null,
"summary": "A comprehensive Python library and CLI toolkit for the NAKALA research data repository, designed for digital humanities workflows",
"version": "2.5.0",
"project_urls": {
"Bug Tracker": "https://github.com/xy-liao/o-nakala-core/issues",
"Documentation": "https://nakala.fr/documentation",
"Homepage": "https://nakala.fr",
"Repository": "https://github.com/xy-liao/o-nakala-core"
},
"split_keywords": [
"nakala",
" research-data",
" repository",
" api-client",
" digital-humanities",
" metadata",
" cli",
" academic"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "1c72d2e095408f73db2335d1cf88138275963144dcbf040ecf0f8c45532dad31",
"md5": "3db44f59c64af6f9d71ffeaebceedadd",
"sha256": "73568a9151199cf78effabd42f4331565557969d6a2fbb79b062b526f83c691d"
},
"downloads": -1,
"filename": "o_nakala_core-2.5.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3db44f59c64af6f9d71ffeaebceedadd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 135321,
"upload_time": "2025-08-27T11:08:24",
"upload_time_iso_8601": "2025-08-27T11:08:24.417421Z",
"url": "https://files.pythonhosted.org/packages/1c/72/d2e095408f73db2335d1cf88138275963144dcbf040ecf0f8c45532dad31/o_nakala_core-2.5.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ca11f9b3bf784b68445a4ebef9d87b7fbf5df2e11e848c6aa73b99d5aa43b760",
"md5": "20b0725ad6bf72223cfd62acce943a50",
"sha256": "276b17fa7170d6f2fab9612a6712c716f489722e687e0a8239e74eef5057e9ba"
},
"downloads": -1,
"filename": "o_nakala_core-2.5.0.tar.gz",
"has_sig": false,
"md5_digest": "20b0725ad6bf72223cfd62acce943a50",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 123895,
"upload_time": "2025-08-27T11:08:25",
"upload_time_iso_8601": "2025-08-27T11:08:25.553250Z",
"url": "https://files.pythonhosted.org/packages/ca/11/f9b3bf784b68445a4ebef9d87b7fbf5df2e11e848c6aa73b99d5aa43b760/o_nakala_core-2.5.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-27 11:08:25",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "xy-liao",
"github_project": "o-nakala-core",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "o-nakala-core"
}