Criar arquivo XBRL usando Python

Um documento XBRL é uma coleção de fatos que juntos formam um relatório de negócios. Podemos criar facilmente um documento de instância XBRL programaticamente e adicionar objetos ou elementos como referência de esquema, contexto, unidade, itens etc. Neste artigo, aprenderemos como criar um arquivo XBRL usando Python.

Os seguintes tópicos serão abordados neste artigo:

  1. O que é XBRL
  2. Biblioteca Python Finance para criar arquivos XBRL
  3. Criar arquivo XBRL
  4. Adicionar referência de esquema ao XBRL
  5. Adicionar contexto em XBRL
  6. Criar uma unidade em XBRL
  7. Adicionar item de fato em XBRL
  8. Adicionar links de notas de rodapé ao XBRL
  9. Inserir referência de função em XBRL
  10. Adicionar referência de função de arco ao XBRL

O que é XBRL

XBRL significa eXtensible Business Reporting Language, uma linguagem de marcação baseada em XML. É usado para relatórios de negócios padronizados do desempenho financeiro de uma empresa. Ele fornece uma maneira de comunicar e trocar informações de negócios entre sistemas de negócios.

Biblioteca Python Finance para criar arquivos XBRL

Para criar um arquivo XBRL ou documento de instância, usaremos a API Aspose.Finance for Python. Ele permite criar instâncias XBRL, analisar e validar os arquivos XBRL ou iXBRL.

A API fornece a classe XbrlDocument que representa um documento XBRL contendo uma ou mais instâncias XBRL. Uma instância XBRL é um fragmento XML, com o elemento raiz tendo uma tag XBRL. A classe XbrlInstance fornece vários métodos e propriedades para trabalhar com instâncias XBRL. O método save() da classe XbrlDocument cria e salva o arquivo XBRL no disco. Leia mais sobre outras classes para trabalhar com objetos XBRL em referência da API.

Por favor, faça o download do pacote ou instale a API de PyPI usando o seguinte comando pip no console:

pip install aspose-finance

Criar documento de instância XBRL em Python

Podemos criar facilmente um documento de instância XBRL do zero seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe XbrlDocument.
  2. Em seguida, acesse a coleção de instâncias do objeto XbrlDocument no objeto xbrlinstances.
  3. Depois disso, adicione uma nova instância XBRL usando o método xbrlinstances.add().
  4. Finalmente, salve o arquivo XBRL usando o método save(string). Ele usa o caminho do arquivo de saída como um argumento.

O exemplo de código a seguir mostra como criar uma instância XBRL usando Python.

# Este exemplo de código demonstra como criar um documento XBRL
from aspose.finance.xbrl import XbrlDocument

# O caminho para o diretório de documentos.
outputFile = "C:\\Files\\document.xbrl"

# Criar documento XBRL
xbrlDoc = XbrlDocument()

# Obter coleção de instâncias de documentos
xbrlInstances = xbrlDoc.xbrl_instances

# Adicionar instância à coleção
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Salve o arquivo
xbrlDoc.save(outputFile)

Depois de criar a instância de XBRL, podemos adicionar a referência de esquema, contexto, unidades, itens, links de notas de rodapé, referências de função e referências de função de arco na instância XBRL recém-criada.

Adicionar referência de esquema ao XBRL usando Python

Podemos adicionar referência de esquema em um documento de instância XBRL seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe XbrlDocument.
  2. Em seguida, obtenha a coleção de instâncias do objeto XbrlDocument no objeto xbrlinstances.
  3. Em seguida, adicione uma nova instância XBRL usando o método xbrlinstances.add().
  4. Em seguida, obtenha a coleção de referência de esquema do objeto XbrlInstance no objeto schemarefs.
  5. Depois disso, adicione uma nova referência de esquema usando o método schemarefs.add() com o arquivo de esquema de entrada.
  6. Finalmente, salve o arquivo XBRL usando o método save(string).

O exemplo de código a seguir mostra como criar um documento de instância XBRL e adicionar referência de esquema em Python.

# Este exemplo de código demonstra como criar um documento XBRL e adicionar um objeto de referência de esquema
from aspose.finance.xbrl import XbrlDocument

# O caminho para o diretório de documentos.
outputFile = "C:\\Files\\document.xbrl"
inputSchemaFile = "C:\\Files\\schema.xsd"

# Criar documento XBRL
xbrlDoc = XbrlDocument()

# Obter coleção de instâncias de documentos
xbrlInstances = xbrlDoc.xbrl_instances

# Adicionar instância à coleção
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Obter coleção de referências de esquema de instância
schemaRefs = xbrlInstance.schema_refs

# Adicionar esquema
schemaRefs.add(inputSchemaFile, "example", "http://example.com/xbrl/taxonomy")

# Salve o documento
xbrlDoc.save(outputFile)

Adicionar contexto em XBRL usando Python

Podemos adicionar um contexto a um documento de instância XBRL seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe XbrlDocument.
  2. Em seguida, adicione uma nova instância XBRL às xbrlinstances do objeto XbrlDocument.
  3. Em seguida, crie uma instância da classe ContextPeriod com as datas de início e término.
  4. Em seguida, crie um objeto ContextEntity com esquema e identificador.
  5. Em seguida, crie uma instância da classe Context com o ContextPeriod e ContextEntity definidos.
  6. Depois disso, adicione o objeto Context à coleção contexts.
  7. Finalmente, salve o arquivo XBRL usando o método save(string).

O exemplo de código a seguir mostra como criar um documento de instância XBRL e adicionar um objeto de contexto em Python.

# Este exemplo de código demonstra como criar um documento XBRL e adicionar o objeto Context
from datetime import datetime
from aspose.finance.xbrl import XbrlDocument,ContextPeriod,ContextEntity,Context

# O caminho para o diretório de documentos.
outputFile = "C:\\Files\\document.xbrl"

# Criar documento XBRL
xbrlDoc = XbrlDocument()

# Obter coleção de instâncias de documentos
xbrlInstances = xbrlDoc.xbrl_instances

# Adicionar instância à coleção
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Adicionar período de contexto
contextPeriod = ContextPeriod(datetime(2020,1,1), datetime(2020,2,10))

# Adicionar entidade de contexto
contextEntity = ContextEntity("exampleIdentifierScheme", "exampleIdentifier")

# Definir e adicionar contexto
context = Context(contextPeriod, contextEntity)
xbrlInstance.contexts.append(context)

# Salve o documento
xbrlDoc.save(outputFile)

Criar unidades em XBRL usando Python

As unidades em XBRL medem itens numéricos. Podemos adicionar uma unidade em um documento de instância XBRL seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe XbrlDocument.
  2. Em seguida, adicione uma nova instância XBRL às xbrlinstances do objeto XbrlDocument.
  3. Em seguida, crie uma instância da classe Unit com o UnitType como MEASURE.
  4. Em seguida, adicione QualifiedName à coleção Measurequalifiednames.
  5. Depois disso, adicione a Unidade à coleção de unidades.
  6. Finalmente, salve o arquivo XBRL usando o método save(string).

O exemplo de código a seguir mostra como criar um arquivo XBRL e adicionar um objeto de unidade em Python.

# Este exemplo de código demonstra como criar um documento XBRL e adicionar o objeto Unit
from aspose.finance.xbrl import XbrlDocument,Unit,QualifiedName,UnitType

# O caminho para o diretório de documentos.
outputFile = "C:\\Files\\document.xbrl"

# Criar documento XBRL
xbrlDoc = XbrlDocument()

# Obter coleção de instâncias de documentos
xbrlInstances = xbrlDoc.xbrl_instances

# Adicionar instância à coleção
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Adicionar unidade
unit = Unit(UnitType.MEASURE)
unit.measure_qualified_names.append(QualifiedName("USD", "iso4217", "http://www.xbrl.org/2003/iso4217"))
xbrlInstance.units.append(unit)

# Salve o documento
xbrlDoc.save(outputFile)

Adicionar item de fato em XBRL usando Python

Fatos em XBRL são definidos usando elementos de item. Um item em XBRL contém o valor do fato simples e uma referência ao contexto para interpretar corretamente esse fato. Podemos adicionar um item em um documento de instância XBRL seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe XbrlDocument.
  2. Adicione uma nova instância XBRL às xbrlinstances do objeto XbrlDocument.
  3. Adicione uma nova referência de esquema aos schemarefs do objeto XbrlInstance.
  4. Obtenha SchemaRef por seu índice de schemarefs.
  5. Inicialize a instância Context e adicione-a à coleção contexts.
  6. Defina uma instância de Unit e adicione-a à coleção de unidades.
  7. Crie uma instância da classe Concept usando o método getconceptbyname().
  8. Crie uma instância da classe Item com o objeto Concept como argumento.
  9. Defina as propriedades do item, como contextref, unitref, precision, value, etc.
  10. Depois disso, adicione o Item à coleção de fatos.
  11. Finalmente, salve o arquivo XBRL usando o método save(string).

O exemplo de código a seguir mostra como adicionar um fato como um elemento de item em um documento de instância XBRL usando Python.

# Este exemplo de código demonstra como criar um documento XBRL e adicionar o objeto Item
from datetime import datetime
from aspose.finance.xbrl import XbrlDocument,ContextPeriod,ContextEntity,Context,Unit,UnitType,QualifiedName,Item

# O caminho para o diretório de documentos.
outputFile = "C:\\Files\\document.xbrl"
inputSchemaFile = "C:\\Files\\schema.xsd"

# Criar documento XBRL
xbrlDoc = XbrlDocument()

# Obter coleção de instâncias de documentos
xbrlInstances = xbrlDoc.xbrl_instances

# Adicionar instância à coleção
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Obter coleção de referências de esquema de instância
schemaRefs = xbrlInstance.schema_refs

# Adicionar esquema
schemaRefs.add(inputSchemaFile, "example", "http://example.com/xbrl/taxonomy")
schema = schemaRefs[0]

# Adicionar contexto
contextPeriod = ContextPeriod(datetime(2020,1,1), datetime(2020,2,10))
contextEntity = ContextEntity("exampleIdentifierScheme", "exampleIdentifier")
context = Context(contextPeriod, contextEntity)
xbrlInstance.contexts.append(context)

# Adicionar unidade
unit = Unit(UnitType.MEASURE)
unit.measure_qualified_names.append(QualifiedName("USD", "iso4217", "http://www.xbrl.org/2003/iso4217"))
xbrlInstance.units.append(unit)

# Adicionar Item
fixedAssetsConcept = schema.get_concept_by_name("fixedAssets")
if fixedAssetsConcept is not None:
    item = Item(fixedAssetsConcept)
    item.context_ref = context
    item.unit_ref = unit
    item.precision = 4
    item.value = "1444"
    xbrlInstance.facts.append(item)
    
# Salve o documento
xbrlDoc.save(outputFile)

Podemos adicionar um link de nota de rodapé em um documento de instância XBRL seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe XbrlDocument.
  2. Adicione uma nova instância XBRL às xbrlinstances do objeto XbrlDocument.
  3. Adicione uma nova referência de esquema aos schemarefs do objeto XbrlInstance.
  4. Obtenha SchemaRef por seu índice de schemarefs.
  5. Inicialize a instância Context e adicione-a à coleção contexts.
  6. Defina uma instância da classe Footnote e defina seu rótulo e texto.
  7. Inicialize o tipo de localizador usando a instância da classe Loc.
  8. Defina o objeto FootnoteArc com o rótulo do localizador e o rótulo da nota de rodapé como argumentos.
  9. Crie uma instância da classe FootnoteLink.
  10. Adicione Footnote, Locator e FootnoteArc às coleções relevantes.
  11. Depois disso, adicione o FootnoteLink à coleção footnotelinks.
  12. Finalmente, salve o arquivo XBRL usando o método save(string).

O exemplo de código a seguir mostra como adicionar um link de nota de rodapé em um documento de instância XBRL usando Python.

# Este exemplo de código demonstra como criar um documento XBRL e adicionar o objeto Footnote Link
from datetime import datetime
from aspose.finance.xbrl import XbrlDocument,ContextPeriod,ContextEntity,Context,FootnoteLink,Footnote,Loc,FootnoteArc

# O caminho para o diretório de documentos.
outputFile = "C:\\Files\\document.xbrl"
inputSchemaFile = "C:\\Files\\schema.xsd"

# Criar documento XBRL
xbrlDoc = XbrlDocument()

# Obter coleção de instâncias de documentos
xbrlInstances = xbrlDoc.xbrl_instances

# Adicionar instância à coleção
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Obter coleção de referências de esquema de instância
schemaRefs = xbrlInstance.schema_refs

# Adicionar esquema
schemaRefs.add(inputSchemaFile, "example", "http://example.com/xbrl/taxonomy")
schema = schemaRefs[0]

# Adicionar contexto
contextPeriod = ContextPeriod(datetime(2020,1,1), datetime(2020,2,10))
contextEntity = ContextEntity("exampleIdentifierScheme", "exampleIdentifier")
context = Context(contextPeriod, contextEntity)
xbrlInstance.contexts.append(context)

# Adicionar nota de rodapé
footnote = Footnote("footnote1")
footnote.text = "Including the effects of the merger."

# Adicionar local
loc = Loc("#cd1", "fact1")

# Definir arco de nota de rodapé
footnoteArc = FootnoteArc(loc.label, footnote.label)

# Adicionar nota de rodapéLink
footnoteLink = FootnoteLink()
footnoteLink.footnotes.append(footnote)
footnoteLink.locators.append(loc)
footnoteLink.footnote_arcs.append(footnoteArc)
xbrlInstance.footnote_links.append(footnoteLink)
    
# Salve o documento
xbrlDoc.save(outputFile)

Inserir referência de função em XBRL usando Python

Podemos adicionar uma referência de função em um documento de instância XBRL seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe XbrlDocument.
  2. Adicione uma nova instância XBRL às xbrlinstances do objeto XbrlDocument.
  3. Adicione uma nova referência de esquema aos schemarefs do objeto XbrlInstance.
  4. Obtenha SchemaRef por seu índice de schemarefs.
  5. Em seguida, obtenha o RoleType do método getroletypebyuri().
  6. Em seguida, crie uma instância da classe RoleReference com o objeto RoleType como argumento.
  7. Depois disso, adicione o RoleReference à coleção rolereferences.
  8. Finalmente, salve o arquivo XBRL usando o método save(string).

O exemplo de código a seguir mostra como adicionar uma referência de função em um documento de instância XBRL usando Python.

# Este exemplo de código demonstra como criar um documento XBRL e adicionar o objeto de referência de função
from aspose.finance.xbrl import XbrlDocument,RoleReference

# O caminho para o diretório de documentos.
outputFile = "C:\\Files\\document.xbrl"
inputSchemaFile = "C:\\Files\\schema.xsd"

# Criar documento XBRL
xbrlDoc = XbrlDocument()

# Obter coleção de instâncias de documentos
xbrlInstances = xbrlDoc.xbrl_instances

# Adicionar instância à coleção
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Obter coleção de referências de esquema de instância
schemaRefs = xbrlInstance.schema_refs

# Adicionar esquema
schemaRefs.add(inputSchemaFile, "example", "http://example.com/xbrl/taxonomy")
schema = schemaRefs[0]

# Obter tipo de função
roleType = schema.get_role_type_by_uri("http://abc.com/role/link1")

# Adicionar referência de função
if roleType is not None:
    roleReference = RoleReference(roleType)
    xbrlInstance.role_references.append(roleReference)

# Salve o documento
xbrlDoc.save(outputFile)

Adicionar referência de função do Arc ao XBRL em Python

Podemos adicionar uma referência de função Arc em um documento de instância XBRL seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe XbrlDocument.
  2. Adicione uma nova instância XBRL às xbrlinstances do objeto XbrlDocument.
  3. Adicione uma nova referência de esquema aos schemarefs do objeto XbrlInstance.
  4. Obtenha SchemaRef por seu índice de schemarefs.
  5. Em seguida, obtenha o RoleType do método getarcroletypebyuri().
  6. Em seguida, crie uma instância da classe ArcroleReference com o objeto RoleType como argumento.
  7. Depois disso, adicione o ArcroleReference à coleção acrolereferences.
  8. Finalmente, salve o arquivo XBRL usando o método save(string).

O exemplo de código a seguir mostra como adicionar uma referência de função arc em um documento de instância XBRL usando Python.

# Este exemplo de código demonstra como criar um documento XBRL e adicionar o objeto de referência Arc Role
from aspose.finance.xbrl import XbrlDocument,ArcroleReference

# O caminho para o diretório de documentos.
outputFile = "C:\\Files\\document.xbrl"
inputSchemaFile = "C:\\Files\\schema.xsd"

# Criar documento XBRL
xbrlDoc = XbrlDocument()

# Obter coleção de instâncias de documentos
xbrlInstances = xbrlDoc.xbrl_instances

# Adicionar instância à coleção
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Obter coleção de referências de esquema de instância
schemaRefs = xbrlInstance.schema_refs

# Adicionar esquema
schemaRefs.add(inputSchemaFile, "example", "http://example.com/xbrl/taxonomy")
schema = schemaRefs[0]

# Obter tipo de função
roleType = schema.get_role_type_by_uri("http://abc.com/role/link1")

# Adicionar referência de função
if roleType is not None:
    arcroleReference = ArcroleReference(roleType)
    xbrlInstance.arcrole_references.append(arcroleReference)

# Salve o documento
xbrlDoc.save(outputFile)

Obtenha uma licença gratuita

Você pode obter uma licença temporária gratuita para experimentar a biblioteca sem limitações de avaliação.

Conclusão

Neste artigo, aprendemos como criar um documento XBRL usando Python. Também vimos como adicionar vários objetos XBRL ao documento de instância XBRL criado programaticamente. Além disso, você pode aprender mais sobre o Aspose.Finance for Python API usando a documentação. Em caso de qualquer ambiguidade, não hesite em contactar-nos no nosso fórum.

Veja também