Read SDMX file formats

SDMX-ML

sdmx.reader.xml supports the several types of SDMX-ML messages.

Implementation details:

  • The collections of StructureMessage (e.g. StructureMessage.codelist) are implemented by sdmx as DictLike, with str keys, for convenience; the standard would imply these could be other collections, such as a simple list. The format of the keys in each collection depends on the content of the message parsed by reader.xml:

    This ensures that all objects in a parsed message are accessible.

exception sdmx.reader.xml.XMLParseError[source]

xml.Reader is unable to parse a message.

SDMX-ML v2.1 reader.

class sdmx.reader.xml.v21.Reader[source]

SDMX-ML 2.1 reader.

class Reference(reader, elem, cls_hint=None)[source]
format: ClassVar['types.ModuleType'] = <module 'sdmx.format.xml.v21' from '/home/docs/checkouts/readthedocs.org/user_builds/sdmx1/envs/stable/lib/python3.13/site-packages/sdmx/format/xml/v21.py'>[source]

Reference to the module defining the format read.

media_types: ClassVar[list[MediaType]] = [application/vnd.sdmx.generic+xml; version=2.1, application/vnd.sdmx.genericdata+xml; version=2.1, application/vnd.sdmx.genericmetadata+xml; version=2.1, application/vnd.sdmx.generictimeseriesdata+xml; version=2.1, application/vnd.sdmx.schema+xml; version=2.1, application/vnd.sdmx.structure+xml; version=2.1, application/vnd.sdmx.structurespecificdata+xml; version=2.1, application/vnd.sdmx.structurespecificmetadata+xml; version=2.1, application/vnd.sdmx.structurespecifictimeseriesdata+xml; version=2.1, application/xml; version=2.1, text/xml; version=2.1][source]

List of media types, used by handles().

model: ClassVar['types.ModuleType'] = <module 'sdmx.model.v21' from '/home/docs/checkouts/readthedocs.org/user_builds/sdmx1/envs/stable/lib/python3.13/site-packages/sdmx/model/v21.py'>[source]

Reference to the module defining the information model read.

parser: ClassVar[dict[tuple[QName, str], Callable]] = {(<lxml.etree.QName object>, 'end'): <function _as_end>, (<lxml.etree.QName object>, 'start'): <function _as_start>, (<lxml.etree.QName object>, 'end'): <function _group_ss>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _obs_ss>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _rv>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _md_report>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _series_ss>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _tov>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _a>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ms>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _p>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ms>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _p>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): <function _st>, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _tr>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _avs>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _group>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _key1>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _obs>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _key1>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _series>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _key1>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _footer>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _contact_end>, (<lxml.etree.QName object>, 'start'): <function _contact_start>, (<lxml.etree.QName object>, 'end'): <function _ds_end>, (<lxml.etree.QName object>, 'start'): <function _ds_start>, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): <function _message>, (<lxml.etree.QName object>, 'end'): <function _datetime>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): <function _message>, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): <function _message>, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): <function _message>, (<lxml.etree.QName object>, 'end'): <function _header>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _mds_end>, (<lxml.etree.QName object>, 'start'): <function _mds_start>, (<lxml.etree.QName object>, 'end'): <function _datetime>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _header_org>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _datetime>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _datetime>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _header_org>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _header_structure>, (<lxml.etree.QName object>, 'start'): <function _message>, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): <function _message>, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): <function _message>, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): <function _message>, (<lxml.etree.QName object>, 'end'): <function _structures>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _as_end>, (<lxml.etree.QName object>, 'start'): <function _as_start>, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _rv>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _md_report>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ra>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _tov>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _item_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ar>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _cat>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _item_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _item_start>, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _item_map>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ismap_end>, (<lxml.etree.QName object>, 'start'): <function _ismap_start>, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _concept>, (<lxml.etree.QName object>, 'start'): <function _item_start>, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _contact_end>, (<lxml.etree.QName object>, 'start'): <function _contact_start>, (<lxml.etree.QName object>, 'end'): <function _cc>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _rep>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _cr>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ct>, (<lxml.etree.QName object>, 'start'): <function _item_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _item_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _dks>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _item_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _structure_end>, (<lxml.etree.QName object>, 'start'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _facet>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _vtlm_from>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function _hc>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _hcl>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _h>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function _icl>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _key0>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function _l>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _rep>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function _structure_end>, (<lxml.etree.QName object>, 'start'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _np>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ar_kind>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _rs>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ss>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _facet>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function _vtlm_to>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _trans>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ts>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _udo>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _vtlm>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None}[source]

Mapping from (QName, [“start”, “end”]) to a function that parses the element/event or else None (no parsing).

xml_version: ClassVar[Version] = 2.1[source]

SDMX-ML version handled by this reader.

class sdmx.reader.xml.v21.Reference(reader, elem, cls_hint=None)[source]
sdmx.reader.xml.v21.add_mds_events(reader: Reader, mds: MetadataStructureDefinition)[source]

Add parser events for structure-specific metadata.

SDMX-ML 3.0.0 reader.

class sdmx.reader.xml.v30.Reader[source]

SDMX-ML 3.0 reader.

class Reference(reader, elem, cls_hint=None)[source]

Parse SDMX-ML 3.0 references.

format: ClassVar['types.ModuleType'] = <module 'sdmx.format.xml.v30' from '/home/docs/checkouts/readthedocs.org/user_builds/sdmx1/envs/stable/lib/python3.13/site-packages/sdmx/format/xml/v30.py'>[source]

Reference to the module defining the format read.

media_types: ClassVar[list[MediaType]] = [application/vnd.sdmx.data+xml; version=3.0.0, application/vnd.sdmx.structure+xml; version=3.0.0][source]

List of media types, used by handles().

model: ClassVar['types.ModuleType'] = <module 'sdmx.model.v30' from '/home/docs/checkouts/readthedocs.org/user_builds/sdmx1/envs/stable/lib/python3.13/site-packages/sdmx/model/v30.py'>[source]

Reference to the module defining the information model read.

parser: ClassVar[dict[tuple[QName, str], Callable]] = {(<lxml.etree.QName object>, 'end'): <function _as_end>, (<lxml.etree.QName object>, 'start'): <function _as_start>, (<lxml.etree.QName object>, 'end'): <function _complex>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _group_ss>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _obs_ss>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _rv>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _md_report>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _series_ss>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _tov>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _complex_value>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _a>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ms>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _p>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ms>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _p>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): <function _st>, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _tr>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _avs>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _group>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _key1>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _obs>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _key1>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _series>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _key1>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _footer>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _contact_end>, (<lxml.etree.QName object>, 'start'): <function _contact_start>, (<lxml.etree.QName object>, 'end'): <function _ds_end>, (<lxml.etree.QName object>, 'start'): <function _ds_start>, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): <function _message>, (<lxml.etree.QName object>, 'end'): <function _datetime>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): <function _message>, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): <function _message>, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): <function _message>, (<lxml.etree.QName object>, 'end'): <function _header>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _mds_end>, (<lxml.etree.QName object>, 'start'): <function _mds_start>, (<lxml.etree.QName object>, 'end'): <function _datetime>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _header_org>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _datetime>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _datetime>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _header_org>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _header_structure>, (<lxml.etree.QName object>, 'start'): <function _message>, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): <function _message>, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): <function _message>, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): <function _message>, (<lxml.etree.QName object>, 'end'): <function _structures>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _as_end>, (<lxml.etree.QName object>, 'start'): <function _as_start>, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _rv>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _md_report>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ra>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _tov>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _item_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ar>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _cat>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _item_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _item_start>, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _item_map>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _cl>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _cl_ext>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ismap_end>, (<lxml.etree.QName object>, 'start'): <function _ismap_start>, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _concept>, (<lxml.etree.QName object>, 'start'): <function _item_start>, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _contact_end>, (<lxml.etree.QName object>, 'start'): <function _contact_start>, (<lxml.etree.QName object>, 'end'): <function _cc>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _rep>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _cr>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ct>, (<lxml.etree.QName object>, 'start'): <function _item_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _cc>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _item_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _dks>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _item_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _structure_end>, (<lxml.etree.QName object>, 'start'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _facet>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _code_selection>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _vtlm_from>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _item_start>, (<lxml.etree.QName object>, 'end'): <function _ggc_end>, (<lxml.etree.QName object>, 'start'): <function _item_start>, (<lxml.etree.QName object>, 'end'): <function _ggcl>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function _hc>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _hcl>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _h>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function _icl>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _code_selection>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _key0>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function _ms>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _l>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _rep>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _mv>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _structure_end>, (<lxml.etree.QName object>, 'start'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _np>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ar_kind>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ar_kind>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _localization>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _rs>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ss>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ref>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _facet>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _component_start>, (<lxml.etree.QName object>, 'end'): <function _vtlm_to>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _trans>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _ts>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _udo>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): <function _item_start>, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _vtlm>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function XMLEventReader.possible_reference.<locals>.decorator.<locals>.wrapped>, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): None, (<lxml.etree.QName object>, 'start'): None, (<lxml.etree.QName object>, 'end'): <function _text>, (<lxml.etree.QName object>, 'start'): None}[source]

Mapping from (QName, [“start”, “end”]) to a function that parses the element/event or else None (no parsing).

xml_version: ClassVar[Version] = 3[source]

SDMX-ML version handled by this reader.

class sdmx.reader.xml.v30.Reference(reader, elem, cls_hint=None)[source]

Parse SDMX-ML 3.0 references.

SDMX-JSON

SDMX-JSON v2.1 reader

class sdmx.reader.json.Reader[source]

Read SDMX-JSON and expose it as instances from sdmx.model.

binary_content_startswith: ClassVar[bytes | None] = b'{'[source]

First byte(s) of file or response body content, used by handles().

convert(data, structure=None, **kwargs)[source]

Convert data to an instance of an SDMX Message subclass.

Parameters:
Returns:

An instance of a Message subclass.

Return type:

Message

classmethod detect(content)[source]

Detect whether the reader can handle content.

Deprecated since version 2.20.0: Use handles() instead.

Returns:

True if the reader can handle the content.

Return type:

bool

media_types: ClassVar[list[MediaType]] = [application/vnd.sdmx.data+json; version=1.0.0, application/vnd.sdmx.structure+json; version=1.0.0, application/vnd.sdmx.draft-sdmx-json+json; version=1.0.0, draft-sdmx-json; version=1.0.0, text/json; version=1.0.0][source]

List of media types, used by handles().

read_dataset(root, ds_key)[source]
read_obs(root, series_key=None, base_key=None)[source]
suffixes: ClassVar[list[str]] = ['.json'][source]

List of file name suffixes, used by handles().

SDMX-CSV

sdmx.reader.csv supports SDMX-CSV 2.0.0, corresponding to SDMX 3.0.0. See SDMX-CSV for differences between versions of the SDMX-CSV file format.

Implementation details:

  • Reader.inspect_header() inspects the header line in the CSV input and constructs a set of Handler instances, one for each field appearing in the particular file. Some of these handlers do actually process the contents of the field, but silently discard it; for example, when labels="name", the name fields are not processed.

  • Reader.handle_row() is applied to every record in the CSV input. Each Handler is applied to its respective field. Every handle_row() call constructs a single Observation.

  • Reader.read_message() assembles the resulting observations into one or more DataSets. SDMX-CSV 2.0.0 specifies a mix of codes such as “I” (ActionType.information) and “D” (ActionType.delete) in the “ACTION” field for each observation in the same file, whereas the SDMX IM specifies that action is an attribute of an entire DataSet. Reader groups all observations into 1 or more DataSet instances, according to their respective “ACTION” field values.

Currently reader.csv has the following limitations:

  • Reader.read_message() generates SDMX 3.0.0 (model.v30) artefacts such as v30.DataSet, since these correspond to the supported SDMX-CSV 2.0.0 format. It is not currently supported to generate SDMX 2.1 artefacts such as v21.DataSet.

  • Currently only a single :class`.v30.Dataflow` or v30.DataStructureDefinition can be supplied to Reader.read_message(). The SDMX-CSV 2.0.0 format supports mixing data flows and data structures in the same message. Such messages can be read with sdmx, but the resulting data sets will only correspond to the given data flow.

class sdmx.reader.csv.AttributeValue(attribute, multi: bool)[source]

Bases: Handler

Handle a v30.AttributeValue for one DataAttribute.

The attribute value is attached to the obs.

class sdmx.reader.csv.Custom(header: str)[source]

Bases: Handler

Handler for custom columns.

Currently values are ignored.

Todo

Store as Annotation or temporary attribute values on obs.

class sdmx.reader.csv.DataFrameConverter[source]

Bases: Converter

convert(data: pandas.DataFrame, structure=None, **kwargs) sdmx.message.DataMessage[source]

Convert data to an instance of an SDMX Message subclass.

classmethod handles(data, kwargs) bool[source]

Return True if the class can convert data using kwargs.

class sdmx.reader.csv.Handler[source]

Bases: ABC

Base class for Reader.handlers.

class sdmx.reader.csv.KeyValue(dimension, **kwargs)[source]

Bases: Handler

Handle a KeyValue for one Dimension.

class sdmx.reader.csv.Name[source]

Bases: Handler

Handler for Options.labels == "name" columns.

Does nothing; the values are not stored.

class sdmx.reader.csv.NotHandled[source]

Bases: Handler

Handler that does nothing.

class sdmx.reader.csv.ObsKey[source]

Bases: NotHandled

“OBS_KEY” columns are currently not handled.

class sdmx.reader.csv.ObsValue(measure, **kwargs)[source]

Bases: Handler

Handle the :attr:`Observation.value <.BaseObservation.value>.

In line with model.v30, multiple values (for data structures with multiple measures) are currently not handled.

class sdmx.reader.csv.Options(labels: ~typing.Literal['both', 'id', 'name'] = 'id', key: ~typing.Literal['both', 'none', 'obs', 'series'] = 'none', custom_columns: list[bytes] = <factory>, delimiter: str = ', ', delimiter_sub: str = '')[source]

Bases: object

SDMX-CSV 2.0.0 format options.

custom_columns: list[bytes][source]

“Custom columns” detected by Reader.inspect_header().

delimiter: str = ','[source]

CSV field delimiter.

delimiter_sub: str = ''[source]

SDMX-CSV “sub-field” delimiter.

key: Literal['both', 'none', 'obs', 'series'] = 'none'[source]

Whether series, observation, or no keys are expressed in their own columns (in addition to dimension columns). Appears in the specification.

labels: Literal['both', 'id', 'name'] = 'id'[source]

Types of labels included. Appears in the specification.

class sdmx.reader.csv.Reader[source]

Bases: BaseReader

Read SDMX-CSV.

convert(data, structure=None, *, delimiter: str = ',', **kwargs)[source]

Read a message from data.

handle_row(row: list[str]) None[source]

Handle a single CSV row.

handlers: Sequence[Handler][source]

Handlers for individual fields in a CSV record. This collection has exactly the same number of handlers as columns in the data passed to convert().

inspect_header(header: list[str]) None[source]

Inspect the SDMX-CSV header and determine the format Options.

Raises:

ValueError – if the data contain malformed SDMX-CSV 2.0.0.

media_types: ClassVar[list[MediaType]] = [application/vnd.sdmx.data+csv; version=1.0.0, application/vnd.sdmx.metadata+csv; version=2.0.0][source]

List of media types, used by handles().

suffixes: ClassVar[list[str]] = ['.csv'][source]

List of file name suffixes, used by handles().

class sdmx.reader.csv.SeriesKey[source]

Bases: NotHandled

“SERIES_KEY” columns are currently not handled.

class sdmx.reader.csv.StoreTarget(allowable: set[str] | None = None)[source]

Bases: Handler

Store value on a special DataAttribute with ID “__TARGET” on obs.

Used for the STRUCTURE, STRUCTURE_ID, and ACTION columns.

Reader API

sdmx.reader.CONVERTER = [<class 'sdmx.reader.csv.DataFrameConverter'>, <class 'sdmx.reader.csv.Reader'>, <class 'sdmx.reader.json.Reader'>, <class 'sdmx.reader.xml.Reader'>][source]

All converters. Application code may extend this collection with custom sub-classes of Converter.

sdmx.reader.READERS = [<class 'sdmx.reader.csv.Reader'>, <class 'sdmx.reader.json.Reader'>, <class 'sdmx.reader.xml.Reader'>][source]

Only Readers for standard SDMX formats.

sdmx.reader.detect_content_reader(content) type[sdmx.reader.base.BaseReader][source]

Return a reader class for bytes content.

Deprecated since version 2.20.0: Use get_reader() instead.

sdmx.reader.get_converter(data: Any, kwargs: dict | None = None) type[sdmx.reader.base.Converter][source]

Identify a Converter or Reader for data.

For each class in CONVERTER, the Converter.handles() or BaseReader.handles() method is called with data and kwargs.

data may include:

…or, anything else that is handled by a class listed in CONVERTER.

Raises:

ValueError – if none of the Converter classes can convert data and kwargs to SDMX.

sdmx.reader.get_reader(data: ~typing.Any, kwargs: dict | None = None, _classes: list[type[sdmx.reader.base.BaseReader]] = [<class 'sdmx.reader.csv.Reader'>, <class 'sdmx.reader.json.Reader'>, <class 'sdmx.reader.xml.Reader'>]) type[sdmx.reader.base.BaseReader][source]

Identify a Reader for data.

Identical to get_converter(), except only READERS for SDMX standard formats are returned.

sdmx.reader.get_reader_for_media_type(value) type[sdmx.reader.base.BaseReader][source]

Return a reader class for HTTP content/media type value.

Deprecated since version 2.20.0: Use get_reader() instead.

sdmx.reader.get_reader_for_path(path) type[sdmx.reader.base.BaseReader][source]

Return a reader class for file path.

Deprecated since version 2.20.0: Use get_reader() instead.

sdmx.reader.read_sdmx(filename_or_obj: bytes | str | Path | io.IOBase | io.BufferedReader, format: str | None = None, **kwargs) sdmx.message.Message[source]

Read a Message from a path, file, or stream in an SDMX standard format.

To identify whether filename_or_obj contains SDMX-CSV, SDMX-JSON, or SDMX-ML, BaseReader.handles() is called.

Parameters:
  • filename_or_obj

    may include:

    • str or pathlib.Path: path to a particular file.

    • bytes: raw/binary SDMX content.

    • io.IOBase: a buffer, opened file, or other I/O object containing binary SDMX content.

  • format ('CSV', 'XML', or 'JSON', optional) – force handling filename_or_obj as if it had the given extension, even if handles() fails to match.

  • structureStructure, StructureUsage, or other information used by a BaseReader to interpret the content of filename_or_obj. For example, the DataStructureDefinition for a structure-specific SDMX-ML message.

sdmx.reader.to_sdmx(data, **kwargs) sdmx.message.Message[source]

Convert data in non-SDMX formats and data structures to SDMX Message.

Unlike read_sdmx(), which handles only the standard SDMX formats SDMX-CSV, SDMX-JSON, and SDMX-ML, this method can will process any Python data structure handled by a known CONVERTER.

class sdmx.reader.base.Converter[source]

Base class for conversion to sdmx objects.

convert(data: Any, **kwargs) sdmx.message.Message[source]

Convert data to an instance of an SDMX Message subclass.

classmethod handles(data: Any, kwargs: dict) bool[source]

Return True if the class can convert data using kwargs.

class sdmx.reader.base.BaseReader[source]

Converter of file or binary data in standard SDMX formats.

binary_content_startswith: ClassVar[bytes | None] = None[source]

First byte(s) of file or response body content, used by handles().

convert(data, structure: sdmx.model.common.Structure | None = None, **kwargs)[source]

Convert data to an instance of an SDMX Message subclass.

Parameters:
Returns:

An instance of a Message subclass.

Return type:

Message

classmethod detect(content: bytes) bool[source]

Detect whether the reader can handle content.

Deprecated since version 2.20.0: Use handles() instead.

Returns:

True if the reader can handle the content.

Return type:

bool

classmethod handles(data, kwargs)[source]

Return True if the Reader can convert data using kwargs.

The default implementation checks for any of the following conditions:

  1. data is pathlib.Path and has one of the Reader’s suffixes. The match is case-insensitive.

  2. data is requests.Response and its headers include a content-type that is matched by one of the MediaTypes in the Reader’ media_types.

  3. data is bytes, io.IOBase, or io.BufferedReader and starts with the class’ binary_content_startswith (if any). For the io classes, this check is performed by ‘peeking’ at the content without changing the position in the file for a later call to convert().

classmethod handles_media_type(value: str) bool[source]

True if the reader can handle content/media type value.

Deprecated since version 2.20.0: Use handles() instead.

media_types: ClassVar[list[MediaType]] = [][source]

List of media types, used by handles().

read_message(*args, **kwargs)[source]

Deprecated. Use convert() instead.

suffixes: ClassVar[list[str]] = [][source]

List of file name suffixes, used by handles().

classmethod supports_suffix(value: str) bool[source]

True if the reader can handle files with suffix value.

Deprecated since version 2.20.0: Use handles() instead.