# maxoliverbr/adamsnrc architecture

> Architecture diagram of the GitHub repository maxoliverbr/adamsnrc, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/maxoliverbr/adamsnrc
- Repository: https://github.com/maxoliverbr/adamsnrc

## Overview

ADAMSNRC is a Python client for searching the NRC’s ADAMS document system. Users can call the direct search API or use the CLI; higher-level client and abstraction interfaces support common and specialized searches, with results available for further processing. Search queries are represented and built before requests are made to ADAMS, and the package also provides date, text, and result utilities. Edges are limited to relationships visible in excerpts, the source index, or README; some indexed example modules are included for coverage but are not part of the runtime workflow.

Main entry points: [`adamsnrc/main.py`](https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/main.py) (Direct searches), [`adamsnrc/client.py`](https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/client.py) (ADAMS client), [`adamsnrc/abstractions.py`](https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/abstractions.py) (Simple abstractions), [`adamsnrc/builder.py`](https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/builder.py) (Query builder)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Entry points"]
  node_cli["Command line<br/>[cli.py]"]
end

subgraph group_search["Search interfaces"]
  node_main["Direct searches<br/>[main.py]"]
  node_client["ADAMS client<br/>[client.py]"]
  node_abstractions["Simple abstractions<br/>[abstractions.py]"]
end

subgraph group_model["Query model"]
  node_builder["Query builder<br/>[builder.py]"]
  node_types["Query and results<br/>[types.py]"]
  node_config["Configuration<br/>[config.py]"]
end

subgraph group_support["Utilities and examples"]
  node_helpers["Search helpers<br/>[helpers.py]"]
  node_utils["Result utilities<br/>[utils.py]"]
  node_examples["Client examples<br/>[examples.py]"]
  node_abstraction_examples["Abstraction examples"]
  node_demo["Abstraction demo"]
end

node_user(("Developer"))
node_adams{{"NRC ADAMS API"}}

node_user -->|"runs"| node_cli
node_user -->|"calls"| node_main
node_cli -->|"invokes"| node_main
node_main -->|"requests"| node_adams
node_client -->|"creates"| node_builder
node_client -->|"uses"| node_types
node_abstractions -->|"wraps"| node_client
node_abstractions -->|"builds queries"| node_builder
node_builder -->|"populates"| node_types
node_main -->|"uses settings"| node_config
node_helpers -->|"builds queries"| node_builder
node_examples -->|"demonstrates"| node_client
node_abstraction_examples -->|"demonstrates"| node_abstractions
node_demo -->|"demonstrates"| node_abstractions

click node_cli "https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/cli.py"
click node_main "https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/main.py"
click node_client "https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/client.py"
click node_abstractions "https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/abstractions.py"
click node_builder "https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/builder.py"
click node_types "https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/types.py"
click node_config "https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/config.py"
click node_helpers "https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/helpers.py"
click node_utils "https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/utils.py"
click node_examples "https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/examples.py"
click node_abstraction_examples "https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/abstraction_examples.py"
click node_demo "https://github.com/maxoliverbr/adamsnrc/blob/main/demo_abstractions.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli toneBlue
class node_main,node_client,node_abstractions toneAmber
class node_builder,node_types,node_config,node_adams toneMint
class node_helpers,node_utils,node_examples,node_abstraction_examples,node_demo toneRose
class node_user toneIndigo
```

## Components

### Entry points

- [Command line](https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/cli.py): `adamsnrc/cli.py`

### Search interfaces

- [Direct searches](https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/main.py): `adamsnrc/main.py`
- [ADAMS client](https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/client.py): `adamsnrc/client.py`
- [Simple abstractions](https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/abstractions.py): `adamsnrc/abstractions.py`

### Query model

- [Query builder](https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/builder.py): `adamsnrc/builder.py`
- [Query and results](https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/types.py): `adamsnrc/types.py`
- [Configuration](https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/config.py): `adamsnrc/config.py`

### Utilities and examples

- [Search helpers](https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/helpers.py): `adamsnrc/helpers.py`
- [Result utilities](https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/utils.py): `adamsnrc/utils.py`
- [Client examples](https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/examples.py): `adamsnrc/examples.py`
- [Abstraction examples](https://github.com/maxoliverbr/adamsnrc/blob/main/adamsnrc/abstraction_examples.py): `adamsnrc/abstraction_examples.py`
- [Abstraction demo](https://github.com/maxoliverbr/adamsnrc/blob/main/demo_abstractions.py): `demo_abstractions.py`

### Other components

- **Developer**
- **NRC ADAMS API**

## Connections

- Developer → Command line: runs
- Developer → Direct searches: calls (evidence: `README.md`)
- Command line → Direct searches: invokes (evidence: `adamsnrc/cli.py`)
- Direct searches → NRC ADAMS API: requests (evidence: `adamsnrc/main.py`)
- ADAMS client → Query builder: creates (evidence: `adamsnrc/client.py`)
- ADAMS client → Query and results: uses (evidence: `adamsnrc/client.py`)
- Simple abstractions → ADAMS client: wraps (evidence: `adamsnrc/abstractions.py`)
- Simple abstractions → Query builder: builds queries (evidence: `adamsnrc/abstractions.py`)
- Query builder → Query and results: populates (evidence: `adamsnrc/builder.py`)
- Direct searches → Configuration: uses settings (evidence: `adamsnrc/main.py`)
- Search helpers → Query builder: builds queries (evidence: `adamsnrc/helpers.py`)
- Client examples → ADAMS client: demonstrates (evidence: `adamsnrc/examples.py`)
- Abstraction examples → Simple abstractions: demonstrates (evidence: `adamsnrc/abstraction_examples.py`)
- Abstraction demo → Simple abstractions: demonstrates (evidence: `demo_abstractions.py`)
