Skip to content
Back to skills

Parsers

ASecurity

"Use when adding, debugging, inspecting, or smoke-testing

  • 247 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 8, 2026
testingpythonbashtestingdebuggingapi

Works with

  • api

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill parsers --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Parsers?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Parsers
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-parsers/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-parsers)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: parsers
description: "Use when adding, debugging, inspecting, or smoke-testing
  Electricity Maps live parsers and parser registry mappings."
disable-model-invocation: true
metadata:
  disco-role: operating
license: NOASSERTION
---

# Parsers

Use this sub-skill for live Electricity Maps parser work: production,
consumption, price, exchange, forecast, grid-alert, locational marginal price,
and intraday-statistics parser functions.

Do not use this route for installed capacity updates or `productionCapacity`
execution; those belong to [capacity](../capacity/SKILL.md). Use
[configuration](../configuration/SKILL.md) for broad zone/exchange YAML model
validation beyond parser mapping fields.

## First decisions

1. Identify whether the task is zone-side or exchange-side. Exchange-side data
   types use two zone keys and exchange identifiers such as `NO-NO3->SE`.
2. Identify the parser data type. If the user omits it, production is the usual
   default for a zone and exchange is the usual default for an exchange key.
3. Check whether a config mapping already exists before editing parser code:

   ```bash
   python scripts/test_parser.py --repo-root <checkout> --describe FR production
   python scripts/test_parser.py --repo-root <checkout> --list
   ```

4. Only use live execution after confirming network/API-token expectations:

   ```bash
   python scripts/test_parser.py --repo-root <checkout> --execute FR production \
     --target-datetime "2024-01-01T00:00:00+00:00"
   ```

## Read these references

- [api-reference.md](references/api-reference.md) for parser signatures,
  `ParserDataType` groups, registry mappings, output model expectations, mode
  enums, and decorator/token helpers.
- [workflows.md](references/workflows.md) for adding a parser, debugging an
  existing parser, wiring config, writing mocks/tests, and selecting focused
  native checks.
- [troubleshooting.md](references/troubleshooting.md) for parser-specific
  import, token, date/time, output-shape, validation, and source/network
  failures.
- `scripts/test_parser.py` is an adapted safe wrapper for registry inspection
  and optional live parser execution. Run `--help` first when unsure.

## Parser workflow checklist

- Use source/config evidence before writing code: parser file, config mapping,
  existing tests/mocks, and the parser interface contract.
- New zone parser functions should follow the zone-side signature:
  `zone_key, session, target_datetime, logger`.
- New exchange functions should follow the exchange-side signature:
  `zone_key1, zone_key2, session, target_datetime, logger`.
- Return a truthy dict or list of dicts with timezone-aware native
  `datetime.datetime` values. Missing production modes should be omitted or
  `None`, not silently set to zero unless the source explicitly reports zero.
- Use `ProductionBreakdownList`, `TotalConsumptionList`, `ExchangeList`,
  `PriceList`, and related event-list helpers when possible so output fields
  stay consistent.
- Add or update a focused pytest file with mocked HTTP/file fixtures; do not
  make native verification depend on live API availability.
- Run `tests/test_parser_interface.py` after changing signatures, config
  parser mappings, `ParserDataType`, or parser registry behavior.

## Validation shortcuts

```bash
uv run pytest tests/test_parser_interface.py -q
uv run pytest electricitymap/contrib/parsers/tests/test_<PARSER>.py -q
uv run test-parser FR production
uv run test-parser "NO-NO3->SE" exchange
```

If the command fails before reaching parser code, first run the root
`scripts/check_environment.py --repo-root <checkout>` diagnostic and then read
[repo troubleshooting](../../references/troubleshooting.md).

Files in this skill

  • SKILL.md3.6 KB
  • references/api-reference.md5.1 KB
  • references/troubleshooting.md4.3 KB
  • references/workflows.md4.7 KB
  • scripts/test_parser.py7.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.