Source code for sdmx.rest

"""Information related to the SDMX-REST web service standard."""
from enum import Enum

# Mapping from Resource value to class name.
CLASS_NAME = {
    "dataflow": "DataflowDefinition",
    "datastructure": "DataStructureDefinition",
}

# Inverse of :data:`CLASS_NAME`.
VALUE = {v: k for k, v in CLASS_NAME.items()}


[docs]class Resource(str, Enum): """Enumeration of SDMX-REST API resources. ============================= ====================================================== :class:`Enum` member :mod:`sdmx.model` class ============================= ====================================================== ``actualconstraint`` :class:`.ContentConstraint` ``agencyscheme`` :class:`.AgencyScheme` ``allowedconstraint`` :class:`.ContentConstraint` ``attachementconstraint`` :class:`.AttachmentConstraint` ``categorisation`` :class:`.Categorisation` ``categoryscheme`` :class:`.CategoryScheme` ``codelist`` :class:`.Codelist` ``conceptscheme`` :class:`.ConceptScheme` ``contentconstraint`` :class:`.ContentConstraint` ``data`` :class:`.DataSet` ``dataflow`` :class:`.DataflowDefinition` ``dataconsumerscheme`` :class:`.DataConsumerScheme` ``dataproviderscheme`` :class:`.DataProviderScheme` ``datastructure`` :class:`.DataStructureDefinition` ``organisationscheme`` :class:`.OrganisationScheme` ``provisionagreement`` :class:`.ProvisionAgreement` ``structure`` Mixed. ----------------------------- ------------------------------------------------------ ``customtypescheme`` Not implemented. ``hierarchicalcodelist`` Not implemented. ``metadata`` Not implemented. ``metadataflow`` Not implemented. ``metadatastructure`` Not implemented. ``namepersonalisationscheme`` Not implemented. ``organisationunitscheme`` Not implemented. ``process`` Not implemented. ``reportingtaxonomy`` Not implemented. ``rulesetscheme`` Not implemented. ``schema`` Not implemented. ``structureset`` Not implemented. ``transformationscheme`` Not implemented. ``userdefinedoperatorscheme`` Not implemented. ``vtlmappingscheme`` Not implemented. ============================= ====================================================== """ actualconstraint = "actualconstraint" agencyscheme = "agencyscheme" allowedconstraint = "allowedconstraint" attachementconstraint = "attachementconstraint" categorisation = "categorisation" categoryscheme = "categoryscheme" codelist = "codelist" conceptscheme = "conceptscheme" contentconstraint = "contentconstraint" customtypescheme = "customtypescheme" data = "data" dataconsumerscheme = "dataconsumerscheme" dataflow = "dataflow" dataproviderscheme = "dataproviderscheme" datastructure = "datastructure" hierarchicalcodelist = "hierarchicalcodelist" metadata = "metadata" metadataflow = "metadataflow" metadatastructure = "metadatastructure" namepersonalisationscheme = "namepersonalisationscheme" organisationscheme = "organisationscheme" organisationunitscheme = "organisationunitscheme" process = "process" provisionagreement = "provisionagreement" reportingtaxonomy = "reportingtaxonomy" rulesetscheme = "rulesetscheme" schema = "schema" structure = "structure" structureset = "structureset" transformationscheme = "transformationscheme" userdefinedoperatorscheme = "userdefinedoperatorscheme" vtlmappingscheme = "vtlmappingscheme"
[docs] @classmethod def from_obj(cls, obj): """Return an enumeration value based on the class of `obj`.""" value = obj.__class__.__name__ return cls[VALUE.get(value, value)]
[docs] @classmethod def class_name(cls, value: "Resource", default=None) -> str: """Return the name of a :mod:`sdmx.model` class from an enum value. Values are returned in lower case. """ return CLASS_NAME.get(value.value, value.value)
@classmethod def describe(cls): return "{" + " ".join(v.name for v in cls._member_map_.values()) + "}"
#: Response codes defined by the SDMX-REST standard. RESPONSE_CODE = { 200: "OK", 304: "No changes", 400: "Bad syntax", 401: "Unauthorized", 403: "Semantic error", # or "Forbidden" 404: "Not found", 406: "Not acceptable", 413: "Request entity too large", 414: "URI too long", 500: "Internal server error", 501: "Not implemented", 503: "Unavailable", }