Skip to main content

normattiva-sdk

normattiva-sdk

PyPI Python Scaricamenti CI Contratto Licenza del codice: MIT Licenza dei dati: CC BY 4.0 Tipizzato: PEP 561 Ruff uv standard-readme compliant

SDK non ufficiale per Normattiva, il portale della legge vigente dello Stato italiano

Unofficial Python client for Normattiva, the Italian legislation database. Documentation is in Italian, as is the domain.

Normattiva conserva di ogni atto tutte le versioni che si sono succedute: ogni modifica ne apre una nuova senza cancellare la precedente. Si chiama multivigenza. La legge 241 del 1990 ha sessantuno versioni, e per leggerne una si indica una data.

Lo stesso corpus è pubblicato come open data su dati.normattiva.it, con un'API HTTP gratuita. Questa libreria la interroga da Python, in versione sincrona e asincrona, e traduce le risposte in oggetti tipizzati.

Progetto indipendente e non ufficiale. Non è affiliato con l'Istituto Poligrafico e Zecca dello Stato, con Normattiva né con la Presidenza del Consiglio dei Ministri, e non è approvato da loro. Il testo restituito non è autentico: l'unico ufficiale è quello pubblicato sulla Gazzetta Ufficiale a mezzo stampa, che prevale in caso di discordanza.

Indice

Installazione

pip install normattiva-sdk

Si installa come normattiva-sdk e si importa come normattiva. L'installazione porta anche il comando normattiva.

Dipendenze

Python da 3.10 a 3.14, e httpx come unica dipendenza a runtime. Il pacchetto dichiara i propri tipi secondo il PEP 561.

Uso

from datetime import date

from normattiva import Normattiva, Urn, codici

with Normattiva() as normattiva:
    art2043 = normattiva.dettaglio(codici.CODICE_CIVILE.articolo("2043"))
    print(art2043.testo)

    divorzio = normattiva.dettaglio(Urn.legge(1970, 898, articolo="5"), vigenza=date(2005, 1, 1))
    print(divorzio.finestra)  # 1987-03-12 → 2023-02-27

Ogni DettaglioAtto porta il testo e i dati per citarlo e verificarlo:

atto.testo  # il testo piano, senza le note redazionali
atto.commi  # (Comma(numero="1", testo="..."), ...)
atto.note_aggiornamento  # le note di aggiornamento, separate dal testo
atto.finestra  # la finestra di vigenza in cui quel testo è valido
atto.permalink  # il link pubblico, per verificare sulla fonte
atto.attribuzione  # la citazione che la licenza dei dati richiede

Riga di comando

normattiva testo codice-civile --articolo 2043
normattiva cerca procedimento amministrativo --anno 1990 --faccette
normattiva cronologia urn:nir:stato:legge:1990-08-07\;241 --articolo 19
normattiva esporta --denominazione LEGGE --anno 1990 --numero 241 --archivio 241.zip

Con --json l'output è un documento pronto per jq, e il codice di uscita distingue le famiglie di errore: 3 l'atto non esiste, 4 la richiesta era sbagliata, 5 il servizio è in avaria.

Documentazione

https://ireneburresi.github.io/normattiva-sdk/

Il tutorial porta dall'installazione al testo di un articolo; le guide di come fare sono una per obiettivo; capire spiega com'è fatto il servizio e come si comporta la libreria quando il servizio risponde male; il riferimento elenca classi, metodi ed eccezioni.

API

Normattiva e AsyncNormattiva coprono l'intera API open data e si rispecchiano metodo per metodo; nella versione asincrona gli iteratori diventano iteratori asincroni.

dettaglio(), cronologia() il testo di un atto a una data, e tutte le sue versioni
ricerca(), ricerca_completa() una pagina di risultati, o un iteratore pigro su tutte
start_export(), export_from_token() avviare un'esportazione, o riprenderne una dal suo token
wait(), download() attendere che finisca e leggerne il risultato
Corpus.from_zip(), save() rileggere e salvare un archivio senza rete
Urn.legge(), Urn.decreto_legislativo() comporre gli identificatori NIR
codici gli atti notissimi, con l'allegato attraverso cui rispondono
NormattivaError e discendenti un'eccezione per ciascun caso da gestire

Gli errori che indicano una richiesta sbagliata sono tutti ValueError oltre che NormattivaError, così si prendono insieme senza sapere quale strato li ha sollevati.

Un taccuino Jupyter percorre la libreria su dati reali, con gli output salvati.

Manutentori

Irene Burresi.

Contribuire

Le domande e le segnalazioni vanno negli issue. Le pull request sono benvenute; per un cambiamento sostanziale conviene aprire prima un issue.

uv sync --all-groups
uv run pytest              # la suite offline, su risposte reali registrate
uv run pytest -m rete      # le prove di contratto, contro il servizio reale
uv run ruff check && uv run ruff format --check
uv run ty check src

Le prove di contratto interrogano la produzione e restano fuori dall'esecuzione predefinita: come funziona il monitoraggio è spiegato in tests/contratto/. Le prove nuove partono da una risposta reale registrata: quelle già raccolte stanno in tests/fixtures/ e in tests/contratto/dataset/.

Licenza

Il codice è rilasciato con licenza MIT, Copyright (c) 2026 Irene Burresi. Il testo completo sta in LICENSE.

I dati sono di IPZS, in licenza CC BY 4.0 dal 1° gennaio 2026. L'uso commerciale e la ridistribuzione sono consentiti, e l'unico obbligo è l'attribuzione, che l'avviso legale del portale vuole in tre parti: la fonte, il carattere non autentico del testo e la sua gratuità. Ogni modello la espone già completa:

Fonte: Normattiva (https://www.normattiva.it), Istituto Poligrafico e Zecca
dello Stato, in licenza CC BY 4.0. Testo non autentico e gratuito: l'unico
testo ufficiale è quello pubblicato sulla Gazzetta Ufficiale a mezzo stampa.

Chi ridistribuisce i dati include quella riga.

Metadata

Release files for normattiva-sdk 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for normattiva-sdk 0.1.0
File Size Uploaded
normattiva_sdk-0.1.0.tar.gz 363.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for normattiva-sdk 0.1.0
File Interpreter ABI Platform
normattiva_sdk-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 428.4 kB

Release files / normattiva_sdk-0.1.0.tar.gz

Download URL normattiva_sdk-0.1.0.tar.gz
Size 363.4 kB
Tags Source
SHA-256 checksum
How to use checksums
4405f8c7bf324ba6e86b4aba1f94f2e91d3309c1693bf1657d142d51a1ab15d9
BLAKE2b-256 checksum
How to use checksums
38247f2630ed7fe93d437cf2f9b42a7f0824866e98e72e5d3bfa26df6694eed1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.

Transparency log

Release files / normattiva_sdk-0.1.0-py3-none-any.whl

Download URL normattiva_sdk-0.1.0-py3-none-any.whl
Size 65.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c4de30d36054b1d76c7f86b22e5bc4a6f549d1ee0036c708a2ebb1d09950f55a
BLAKE2b-256 checksum
How to use checksums
ca429a30467404ab0303146fb74b6abbec47850c3d965bfbe13189b84ff23a51
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page