arelle.ModelXbrl

See COPYRIGHT.md for copyright information.

Module Contents

Classes

ModelXbrl

.. class:: ModelXbrl(modelManager)

Functions

load

Each loaded instance, DTS, testcase, testsuite, versioning report, or RSS feed, is represented by an instance of a ModelXbrl object. The ModelXbrl object has a collection of ModelDocument objects, each representing an XML document (for now, with SQL whenever its time comes). One of the modelDocuments of the ModelXbrl is the entry point (of discovery or of the test suite).

create

loadSchemalocatedSchemas

Data

API

arelle.ModelXbrl.profileStatNumber

0

arelle.ModelXbrl.AUTO_LOCATE_ELEMENT

‘771407c0-1d0c-11e1-be5e-028037ec0200’

arelle.ModelXbrl.DEFAULT

‘intern(…)’

arelle.ModelXbrl.NONDEFAULT

‘intern(…)’

arelle.ModelXbrl.DEFAULTorNONDEFAULT

‘intern(…)’

arelle.ModelXbrl.EMPTY_TUPLE: arelle.typing.EmptyTuple

()

arelle.ModelXbrl._NOT_FOUND

‘object(…)’

arelle.ModelXbrl.LoggableValue

None

arelle.ModelXbrl.load(modelManager: arelle.ModelManager.ModelManager, url: str | arelle.FileSource.FileSource, nextaction: str | None = None, base: str | None = None, useFileSource: arelle.FileSource.FileSource | None = None, errorCaptureLevel: str | None = None, **kwargs: str) ModelXbrl

Each loaded instance, DTS, testcase, testsuite, versioning report, or RSS feed, is represented by an instance of a ModelXbrl object. The ModelXbrl object has a collection of ModelDocument objects, each representing an XML document (for now, with SQL whenever its time comes). One of the modelDocuments of the ModelXbrl is the entry point (of discovery or of the test suite).

Parameters:
  • url – may be a filename or FileSource object

  • nextaction – text to use as status line prompt on conclusion of loading and discovery

  • base – the base URL if any (such as a versioning report’s URL when loading to/from DTS modelXbrl).

  • useFileSource – for internal use (when an entry point is in a FileSource archive and discovered files expected to also be in the entry point’s archive.

arelle.ModelXbrl.create(modelManager: arelle.ModelManager.ModelManager, newDocumentType: int | None = None, url: str | None = None, schemaRefs: str | None = None, createModelDocument: bool = True, isEntry: bool = False, errorCaptureLevel: str | None = None, initialXml: str | None = None, initialComment: str | None = None, base: str | None = None, discover: bool = True, xbrliNamespacePrefix: str | None = None) ModelXbrl
arelle.ModelXbrl.loadSchemalocatedSchemas(modelXbrl: ModelXbrl) None
arelle.ModelXbrl.MatchSubstitutionGroupValueType

‘TypeVar(…)’

class arelle.ModelXbrl.ModelXbrl(modelManager: arelle.ModelManager.ModelManager, errorCaptureLevel: str | None = None)

.. class:: ModelXbrl(modelManager)

ModelXbrl objects represent loaded instances and inline XBRL instances and their DTSes, DTSes (without instances), versioning reports, testcase indexes, testcase variation documents, and other document-centric loadable objects.

Parameters:

modelManager – The controller’s modelManager object for the current session or command line process.

Initialization

closeFileSource: bool

None

dimensionDefaultConcepts: dict[arelle.ModelDtsObject.ModelConcept, arelle.ModelDtsObject.ModelConcept]

None

entryLoadingUrl: str

None

fileSource: arelle.FileSource.FileSource

None

ixdsDocUrls: list[str]

None

ixdsHtmlElements: list[str]

None

isDimensionsValidated: bool

None

locale: arelle.typing.LocaleDict | None

None

modelDocument: arelle.ModelDocument.ModelDocument | None

None

uri: str

None

uriDir: str

None

targetRelationships: set[arelle.ModelObject.ModelObject]

None

qnameDimensionContextElement: dict[arelle.ModelValue.QName, str]

None

_factsByDimQname: dict[arelle.ModelValue.QName, dict[arelle.ModelValue.QName | str | None, set[arelle.ModelInstanceObject.ModelFact]]]

None

_factsByQname: dict[arelle.ModelValue.QName, set[arelle.ModelInstanceObject.ModelFact]]

None

_factsByDatatype: dict[bool | tuple[bool, arelle.ModelValue.QName], set[arelle.ModelInstanceObject.ModelFact]]

None

_factsByLocalName: dict[str, set[arelle.ModelInstanceObject.ModelFact]]

None

_factsByPeriodType: dict[str, set[arelle.ModelInstanceObject.ModelFact]]

None

_nonNilFactsInInstance: set[arelle.ModelInstanceObject.ModelFact]

None

_startedProfiledActivity: float

None

_startedTimeStat: float

None

_qnameUtrUnits: dict[arelle.ModelValue.QName, arelle.ValidateUtr.UtrEntry]

None

init(keepViews: bool = False, errorCaptureLevel: str | None = None) None
close() None

Closes any views, formula output instances, modelDocument(s), and dereferences all memory used

property isClosed: bool
Returns:

bool – True if closed (python object has deferenced and deleted all attributes after closing)

reload(nextaction: str, reloadCache: bool = False) None

Reloads all model objects from their original entry point URL, preserving any open views (which are reloaded).

Parameters:
  • nextAction – status line text string, if any, to show upon completion

  • reloadCache – True to force clearing and reloading of web cache, if working online.

closeViews() None

Close views associated with this modelXbrl

property displayUri: Any
relationshipSet(arcrole: str, linkrole: tuple[str, ...] | str | None = None, linkqname: arelle.ModelValue.QName | None = None, arcqname: arelle.ModelValue.QName | None = None, includeProhibits: bool = False) arelle.ModelRelationshipSet.ModelRelationshipSet

Returns a relationship set matching specified parameters (only arcrole is required).

Resolve and determine relationship set. If a relationship set of the same parameters was previously resolved, it is returned from a cache.

Parameters:
  • arcrole – Required arcrole, or special collective arcroles ‘XBRL-dimensions’, ‘XBRL-formula’, and ‘Table-rendering’

  • linkrole – Linkrole (wild if None)

  • arcqname – Arc element qname (wild if None)

  • includeProhibits – True to include prohibiting arc elements as relationships

roleUriTitle(roleURI: str) str
roleTypeDefinition(roleURI: str, lang: str | None = None) str
roleTypeName(roleURI: str, lang: str | None = None) str
matchSubstitutionGroup(elementQname: arelle.ModelValue.QName, subsGrpMatchTable: dict[arelle.ModelValue.QName | None, arelle.ModelXbrl.MatchSubstitutionGroupValueType]) arelle.ModelXbrl.MatchSubstitutionGroupValueType | None

Resolve a subsitutionGroup for the elementQname from the match table

Used by ModelObjectFactory to return Class type for new ModelObject subclass creation, and isInSubstitutionGroup

Parameters:
  • elementQname – Element/Concept QName to find substitution group

  • subsGrpMatchTable – Table of substitutions used to determine xml proxy object class for xml elements and substitution group membership

isInSubstitutionGroup(elementQname: arelle.ModelValue.QName, subsGrpQnames: arelle.ModelValue.QName | collections.abc.Iterable[arelle.ModelValue.QName] | None) bool

Determine if element is in substitution group(s) Used by ModelObjectFactory to return Class type for new ModelObject subclass creation, and isInSubstitutionGroup

Parameters:
  • elementQname – Element/Concept QName to determine if in substitution group(s)

  • subsGrpQnames – QName or iterable of QNames

createInstance(url: str) None

Creates an instance document for a DTS which didn’t have an instance document, such as to create a new instance for a DTS which was loaded from a taxonomy or linkbase entry point.

Parameters:

url – File name to save the new instance document

saveInstance(**kwargs: Any) Any

Saves current instance document file.

Parameters:

overrideFilepath – specify to override saving in instance’s modelDocument.filepath

property prefixedNamespaces: dict[str, str]

Dict of prefixes for namespaces defined in DTS

matchContext(entityIdentScheme: str, entityIdentValue: str, periodType: str, periodStart: datetime.date | datetime.datetime, periodEndInstant: datetime.date | datetime.datetime, dims: dict[arelle.ModelInstanceObject.ModelDimensionValue, arelle.ModelValue.QName], segOCCs: arelle.ModelObject.ModelObject, scenOCCs: arelle.ModelObject.ModelObject) arelle.ModelInstanceObject.ModelContext | None

Finds matching context, by aspects, as in formula usage, if any

Parameters:
  • entityIdentScheme – Scheme to match

  • entityIdentValue – Entity identifier value to match

  • periodType – Period type to match (“instant”, “duration”, or “forever”)

  • periodStart – Date or dateTime of period start

  • periodEndInstant – Date or dateTime of period send

  • dims – Dimensions

  • segOCCs – Segment non-dimensional nodes

  • scenOCCs – Scenario non-dimensional nodes

createContext(entityIdentScheme: str, entityIdentValue: str, periodType: str, periodStart: datetime.datetime | datetime.date, periodEndInstant: datetime.datetime | datetime.date, priItem: arelle.ModelValue.QName | None, dims: dict[int | arelle.ModelValue.QName, arelle.ModelValue.QName | arelle.PrototypeInstanceObject.DimValuePrototype], segOCCs: arelle.ModelObject.ModelObject, scenOCCs: arelle.ModelObject.ModelObject, afterSibling: arelle.ModelObject.ModelObject | str | None = None, beforeSibling: arelle.ModelObject.ModelObject | None = None, id: str | None = None) arelle.ModelObject.ModelObject

Creates a new ModelContext and validates (integrates into modelDocument object model).

Parameters:
  • entityIdentScheme – Scheme to match

  • entityIdentValue – Entity identifier value to match

  • periodType – Period type to match (“instant”, “duration”, or “forever”)

  • periodStart – Date or dateTime of period start

  • periodEndInstant – Date or dateTime of period send

  • dims – Dimensions

  • segOCCs – Segment non-dimensional nodes

  • scenOCCs – Scenario non-dimensional nodes

  • beforeSibling – lxml element in instance to insert new concept before

  • afterSibling – lxml element in instance to insert new concept after

  • id – id to assign to new context, if absent an id will be generated

matchUnit(multiplyBy: list[arelle.ModelValue.QName], divideBy: list[arelle.ModelValue.QName]) arelle.ModelInstanceObject.ModelUnit | None

Finds matching unit, by measures, as in formula usage, if any

Parameters:
  • multiplyBy – List of multiply-by measure QNames (or top level measures if no divideBy)

  • divideBy – List of multiply-by measure QNames (or empty list if no divideBy)

createUnit(multiplyBy: list[arelle.ModelValue.QName], divideBy: list[arelle.ModelValue.QName], afterSibling: arelle.ModelObject.ModelObject | None = None, beforeSibling: arelle.ModelObject.ModelObject | None = None, id: str | None = None) arelle.ModelObject.ModelObject

Creates new unit, by measures, as in formula usage, if any

Parameters:
  • multiplyBy – List of multiply-by measure QNames (or top level measures if no divideBy)

  • divideBy – List of multiply-by measure QNames (or empty list if no divideBy)

  • beforeSibling – lxml element in instance to insert new concept before

  • afterSibling – lxml element in instance to insert new concept after

  • id – id to assign to new unit, if absent an id will be generated

property nonNilFactsInInstance: set[arelle.ModelInstanceObject.ModelFact]

Facts in the instance which are not nil, cached

property factsByQname: dict[arelle.ModelValue.QName, set[arelle.ModelInstanceObject.ModelFact]]

Facts in the instance indexed by their QName, cached

property factsByLocalName: dict[str, set[arelle.ModelInstanceObject.ModelFact]]

Facts in the instance indexed by their LocalName, cached

factsByDatatype(notStrict: bool, typeQname: arelle.ModelValue.QName) set[arelle.ModelInstanceObject.ModelFact] | None

Facts in the instance indexed by data type QName, cached as types are requested

Parameters:

notSctrict – if True, fact may be derived

factsByPeriodType(periodType: str) set[arelle.ModelInstanceObject.ModelFact]

Facts in the instance indexed by periodType, cached

Parameters:

periodType – Period type to match (“instant”, “duration”, or “forever”)

factsByDimMemQname(dimQname: arelle.ModelValue.QName, memQname: arelle.ModelValue.QName | str | None = None) set[arelle.ModelInstanceObject.ModelFact]

Facts in the instance indexed by their Dimension and Member QName, cached If Member is None, returns facts that have the dimension (explicit or typed) If Member is NONDEFAULT, returns facts that have the dimension (explicit non-default or typed) If Member is DEFAULT, returns facts that have the dimension (explicit non-default or typed) defaulted

property contextsInUse: Any
property dimensionsInUse: set[Any]
matchFact(otherFact: arelle.ModelInstanceObject.ModelFact, unmatchedFactsStack: list[arelle.ModelInstanceObject.ModelFact] | None = None, deemP0inf: bool = False, matchId: bool = False, matchLang: bool = True) arelle.ModelInstanceObject.ModelFact | None

Finds matching fact, by XBRL 2.1 duplicate definition (if tuple), or by QName and VEquality (if an item), lang and accuracy equality, as in formula and test case usage

Parameters:

otherFact – Fact to match

DeemP0inf:

boolean for formula validation to deem P0 facts to be VEqual as if they were P=INF

createFact(conceptQname: arelle.ModelValue.QName, attributes: tuple[str, str] | tuple[tuple[str, str]] | None = None, text: str | None = None, parent: arelle.ModelObject.ModelObject | None = None, afterSibling: arelle.ModelObject.ModelObject | None = None, beforeSibling: arelle.ModelObject.ModelObject | None = None, validate: bool = True) arelle.ModelInstanceObject.ModelFact | arelle.ModelObject.ModelObject

Creates new fact, as in formula output instance creation, and validates into object model

Parameters:
  • conceptQname – QNames of concept

  • attributes – Tuple of name, value, or tuples of name, value tuples (name,value) or ((name,value)[,(name,value…)]), where name is either QName or clark-notation name string

  • text – Text content of fact (will be converted to xpath compatible str by FunctionXS.xsString)

  • parent – lxml element in instance to append as child of

  • beforeSibling – lxml element in instance to insert new concept before

  • afterSibling – lxml element in instance to insert new concept after

  • validate – specify False to block XML Validation (required when constructing a tuple which is invalid until after it’s contents are created)

setIsModified() None

Records that the underlying document has been modified.

isModified() bool

Check if the underlying document has been modified.

modelObject(objectId: str | int) arelle.ModelObject.ModelObject | None

Finds a model object by an ordinal ID which may be buried in a tkinter view id string (e.g., ‘somedesignation_ordinalnumber’).

Parameters:

objectId – string which includes _ordinalNumber, produced by ModelObject.objectId(), or integer object index

viewModelObject(objectId: str | int) None

Finds model object, if any, and synchronizes any views displaying it to bring the model object into scrollable view region and highlight it

Parameters:

objectId – string which includes _ordinalNumber, produced by ModelObject.objectId(), or integer object index

effectiveMessageCode(messageCodes: tuple[Any] | str) str | None

If codes includes EFM, GFM, HMRC, or SBR-coded error then the code chosen (if a sequence) corresponds to whether EFM, GFM, HMRC, or SBR validation is in effect.

isLoggingEffectiveFor(**kwargs: Any) bool
logArguments(messageCode: str, msg: str, codedArgs: dict[str, str]) Any
loggableValue(argValue: Any) arelle.ModelXbrl.LoggableValue
debug(codes: str | tuple[str, ...], msg: str, **args: Any) None

Same as error(), but as info

info(codes: str | tuple[str, ...], msg: str, **args: Any) None

Same as error(), but as info

warning(codes: str | tuple[str, ...], msg: str, **args: Any) None

Same as error(), but as warning, and no error code saved for Validate

log(level: str, codes: Any, msg: str, **args: Any) None

Same as error(), but level passed in as argument

error(codes: str | tuple[str, ...], msg: str, **args: Any) None

Logs a message as info, by code, logging-system message text (using %(name)s named arguments to compose string by locale language), resolving model object references (such as qname), to prevent non-dereferencable memory usage. Supports logging system parameters, and special parameters modelObject, modelXbrl, or modelDocument, to provide trace information to the file, source line, and href (XPath element scheme pointer). Supports the logging exc_info argument.

Args may include a specification of one or more ModelObjects that identify the source of the message, as modelObject={single-modelObject, (sequence-of-modelObjects)} or modelXbrl=modelXbrl or modelDocument=modelDocument.

Args must include a named argument for each msg %(namedArg)s replacement.

Parameters:
  • codes – Message code or tuple/list of message codes

  • msg – Message text string to be formatted and replaced with named parameters in **args

  • **args – Named arguments including modelObject, modelXbrl, or modelDocument, named arguments in msg string, and any exc_info argument.

  • messageCodes – If first parameter codes, above, is dynamically formatted, this is a documentation string of the message codes only used for extraction of the message catalog document (not used in run-time processing).

exception(codes: str | tuple[str, ...], msg: str, **args: str) None

Same as error(), but as exception

logProfileStats() None

Logs profile stats that were collected

profileStat(name: str | None = None, stat: float | None = None) None

order 1xx - load, import, setup, etc order 2xx - views, 26x - table lb 3xx diff, other utilities 5xx validation 6xx formula

profileActivity(activityCompleted: str | None = None, minTimeToShow: float = 0) None

Used to provide interactive GUI messages of long-running processes.

When the time between last profileActivity and this profileActivity exceeds minTimeToShow, then the time is logged (if it is shorter than it is not logged), thus providing feedback of long running (and possibly troublesome) processing steps.

Parameters:
  • activityCompleted – Description of activity completed, or None if call is just to demark starting of a profiled activity.

  • minTimeToShow – Seconds of elapsed time for activity, if longer then the profile message appears in the log.

saveDTSpackage() None

Contributed program to save DTS package as a zip file. Refactored into a plug-in (and may be removed from main code).

property qnameUtrUnits: dict[arelle.ModelValue.QName, arelle.ValidateUtr.UtrEntry]