Metadata-Version: 2.5
Name: ultima-scraper-core
Version: 0.1.0
Summary: Shared dependency-light contracts and primitives for UltimaScraper services.
Project-URL: Homepage, https://github.com/UltimaHoarder/UltimaScraperCore
Project-URL: Repository, https://github.com/UltimaHoarder/UltimaScraperCore
Project-URL: Issues, https://github.com/UltimaHoarder/UltimaScraperCore/issues
Author-email: UltimaHoarder <21285176+UltimaHoarder@users.noreply.github.com>
License-Expression: MIT
License-File: LICENSE
Requires-Python: <3.15,>=3.14
Requires-Dist: platformdirs<5,>=4.3
Description-Content-Type: text/markdown

# Ultima Scraper Core

`ultima-scraper-core` contains the small, stable contracts shared by
UltimaScraper services. It deliberately has no dependency on the backend,
database, control plane, plugin runtime, or scraper implementations.

## Intended contents

- Type guards and structural protocols
- Domain identifiers, enums, and value objects once they are used by multiple packages
- Job/task or event contracts once they are independent of a runtime implementation
- Common exceptions and lightweight utilities

## Dependency rule

`ultima_scraper_core` may be imported by the backend, database, archive, and API
packages. It must not import any of them. The control plane, plugin runtime,
storage implementations, and worker processes remain in their owning packages.

```text
ultima_scraper_core
        ^
        |
backend / database / archive / API
```

Framework-specific code—FastAPI routes, SQLAlchemy models, Redis clients,
worker processes, and concrete scraper integrations—belongs in the package
that implements it rather than here.

## Development

From this directory:

```bash
uv sync --group dev
uv run pytest
```
