Metadata-Version: 2.4
Name: nano-crucible
Version: 3.2.0
Summary: Python Client for Crucible - National Archive for NSRC Observations
Author-email: mkywall <mkywall3@gmail.com>, roncofaber <fabrice.roncoroni@gmail.com>
License: BSD
Project-URL: Homepage, https://molecularfoundrycrucible.github.io/nano-crucible/
Project-URL: Documentation, https://molecularfoundrycrucible.github.io/nano-crucible/
Project-URL: Repository, https://github.com/MolecularFoundryCrucible/nano-crucible
Project-URL: Bug Tracker, https://github.com/MolecularFoundryCrucible/nano-crucible/issues
Keywords: crucible,nsrc,molecular-foundry,data-management,scientific-data,nanoscience
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Chemistry
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.25.0
Requires-Dist: python-dateutil>=2.8.0
Requires-Dist: pytz>=2021.1
Requires-Dist: ipywidgets
Requires-Dist: pydantic>=2.0
Requires-Dist: python-dotenv
Requires-Dist: argcomplete>=2.0.0
Requires-Dist: platformdirs>=2.5.0
Requires-Dist: configupdater>=3.0
Requires-Dist: mfid>=1.0.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: google-crc32c>=1.1.0
Requires-Dist: google-cloud-storage>=2.7.0
Requires-Dist: prompt_toolkit>=3.0
Provides-Extra: parsers
Requires-Dist: ase>=3.22.0; extra == "parsers"
Provides-Extra: dev
Requires-Dist: pytest>=6.0; extra == "dev"
Requires-Dist: black>=21.0; extra == "dev"
Requires-Dist: flake8>=3.8; extra == "dev"
Requires-Dist: mypy>=0.812; extra == "dev"
Provides-Extra: docs
Requires-Dist: mkdocs>=1.5; extra == "docs"
Requires-Dist: mkdocs-material>=9.0; extra == "docs"
Requires-Dist: mkdocstrings[python]>=0.24; extra == "docs"
Dynamic: license-file

# nano-crucible

[![PyPI version](https://img.shields.io/pypi/v/nano-crucible.svg)](https://pypi.org/project/nano-crucible/)
[![Python versions](https://img.shields.io/pypi/pyversions/nano-crucible.svg)](https://pypi.org/project/nano-crucible/)
[![Documentation](https://img.shields.io/badge/docs-latest-brightgreen.svg?logo=github)](https://molecularfoundrycrucible.github.io/nano-crucible/)
[![License](https://img.shields.io/badge/license-BSD--3--Clause-green.svg)](https://github.com/MolecularFoundryCrucible/nano-crucible/blob/main/LICENSE)

The official Python client library and command-line interface for [Crucible](https://crucible.lbl.gov), the Molecular Foundry's scientific data management platform for experimental and computational research.

Using the hosted service requires a Crucible account and API key.

## Capabilities

- Create, search, update, and download scientific datasets through Python or the CLI
- Attach uploaded or externally stored files and manage ingestion requests
- Capture structured fields, flexible scientific metadata, and searchable keywords
- Track samples and parent-child provenance relationships
- Organize resources into projects and manage access

## Install

```bash
pip install nano-crucible
```

Install optional parser dependencies when working with supported scientific formats:

```bash
pip install "nano-crucible[parsers]"
```

## Get started

Configure credentials and verify connectivity:

```bash
crucible config init
crucible status
```

The same configured credentials are available to the Python client:

```python
from crucible import CrucibleClient

client = CrucibleClient()
for dataset in client.datasets.list(limit=5):
    print(dataset["unique_id"], dataset.get("dataset_name"))
```

Continue with the [installation and configuration guide](https://molecularfoundrycrucible.github.io/nano-crucible/installation/) or the [quick start](https://molecularfoundrycrucible.github.io/nano-crucible/quickstart/).

## Documentation

- [Core concepts](https://molecularfoundrycrucible.github.io/nano-crucible/concepts/)
- [User guide](https://molecularfoundrycrucible.github.io/nano-crucible/user-guide/datasets/)
- [CLI overview and reference](https://molecularfoundrycrucible.github.io/nano-crucible/cli/)
- [Python API reference](https://molecularfoundrycrucible.github.io/nano-crucible/api-reference/client/)
- [Changelog and migration notes](https://molecularfoundrycrucible.github.io/nano-crucible/changelog/)

## Contributing

See the [contribution guide](https://github.com/MolecularFoundryCrucible/nano-crucible/blob/main/CONTRIBUTING.md) for development setup, testing, and documentation conventions.

## Support and license

Ask questions on [Discord](https://discord.gg/Wrepphsgbx) or [open a GitHub issue](https://github.com/MolecularFoundryCrucible/nano-crucible/issues). nano-crucible is distributed under the [BSD 3-Clause License](https://github.com/MolecularFoundryCrucible/nano-crucible/blob/main/LICENSE).

nano-crucible is developed and maintained by the [Data Group](https://foundry.lbl.gov/expertise-instrumentation/#data-and-analytics-expertise) at the Molecular Foundry, Lawrence Berkeley National Laboratory.
