Metadata-Version: 2.4
Name: oarepo-related-resources
Version: 1.0.0
Summary: Related resource metadata import module extracted from NMA
License-Expression: MIT
License-File: LICENSE
Requires-Python: <3.15,>=3.14
Requires-Dist: beautifulsoup4
Requires-Dist: boto3
Requires-Dist: langcodes
Requires-Dist: lxml
Requires-Dist: oarepo-runtime<5.0.0,>=4.0.0
Requires-Dist: oarepo-vocabularies<6.0.0,>=5.0.0
Requires-Dist: oarepo[rdm,s3]<15.0.0,>=14.0.0
Requires-Dist: python-dateutil
Requires-Dist: rapidfuzz
Requires-Dist: types-python-dateutil
Provides-Extra: dev
Requires-Dist: pytest>=7.1.2; extra == 'dev'
Provides-Extra: oarepo14
Requires-Dist: oarepo[rdm]<15,>=14; extra == 'oarepo14'
Provides-Extra: tests
Requires-Dist: pytest-oarepo; extra == 'tests'
Requires-Dist: pytest>=7.1.2; extra == 'tests'
Description-Content-Type: text/markdown

# oarepo-related-resources

A library for retrieving metadata from persistent identifiers (DOI/Handle) in Invenio/OARepo applications.

## What It Does

- detects whether a persistent identifier is supported,
- uses resolvers to fetch metadata (title, creators, publication_date, resource_type, ...),
- returns a normalized internal ID (`doi/...`, `handle/...`) and metadata,
- provides an ORCID importer (`current_orcid_importer`).

## Installation

Add `oarepo-related-resources` as a dependency in your project.

For local development (editable):

```toml
[tool.uv.sources]
oarepo-related-resources = { path = "/path/to/oarepo-related-resources", editable = true }
```

## Registering the Extension

In your application's `pyproject.toml`:

```toml
[project.entry-points."invenio_base.api_apps"]
related_resources_import_extension = "oarepo_related_resources.ext:RelatedResourcesImportExtension"

[project.entry-points."invenio_base.apps"]
related_resources_import_extension = "oarepo_related_resources.ext:RelatedResourcesImportExtension"
```

## Configuration

Default configuration is provided by `oarepo_related_resources.config`.

Most important keys:

- `PERSISTENT_IDENTIFIER_RESOLVERS`
- `PERSISTENT_IDENTIFIER_PATTERNS`
- `DATACITE_URL`
- `CROSSREF_URL`
- `HANDLE_URL`
- `ORCID_PUBLIC_DUMP_S3_BUCKET_NAME`
- `ORCID_AWS_ACCESS_KEY_ID`
- `ORCID_AWS_SECRET_ACCESS_KEY`

## Usage in Code

### 1) Resolver registry (DOI/Handle -> metadata)

```python
from oarepo_related_resources.proxies import current_resolver_registry

record_data, problems = current_resolver_registry.resolve("https://doi.org/10.1234/abcd")

# record_data:
# {
#   "id": "doi/10.1234/abcd",
#   "metadata": {
#       "title": "...",
#       "creators": [...],
#       "publication_date": "...",
#       "resource_type": {"id": "..."},
#       "persistent_url": "https://doi.org/10.1234/abcd"
#   }
# }
```

### 2) ORCID importer

```python
from oarepo_related_resources.proxies import current_orcid_importer

person = current_orcid_importer.resolve("0000-0001-2345-6789", vocabulary="names")
```