Skip to content

Releases: xbrlus/xule

23750.1

10 May 15:01
Compare
Choose a tag to compare

Xule-properties

  • Fix to effective-weight property

Try XULE:
Binder
Colab

23750

08 May 16:30
Compare
Choose a tag to compare

XULE-properties

  • Fix the inline-navigation. The properties did not allow unbound or none values.
  • Fix properties .cube and .effective-weight-network. These properties use the resolve_role() method whch was changed support multiple roles for a role short name. resolve_role() now returns a list instead of a string value. These properties were not updated to handle that
  • Added .to-spreadsheet property. Updated file creating to create excel files.
  • Updated .to-spreadsheet to handle qnames.
    This changed how spreadsheets are stored in Xule. They were the shadow dictionary of the dictionary that the .to-spreadsheet is used on. Now, to-spreadsheet runs through the values. It is probably the more types will need explicit conversion.
  • Update .count to work with dictionaries. Really, I made .count and .length the same. .length already counted dictionaries.
  • Added property .repeat()
  • Added property .sid (semantic hash) for fact.
    This involves a fix to the semanticHash pluging. It incorrectly used the fact.elementQname which for inline documents would be ix:nonFraction. Instead using the fact.qname.
  • fix property 'number' to allow strings.
  • fix property 'contains' when the search item is none for a string.
  • Clean up handling empty strings and none values for contains, index-of and last-index-of
  • Fix typo
  • Added property .denone for sets and lists

XuleProcessor

  • Added .to-spreadsheet property. Updated file creating to create excel files.

  • Updated .to-spreadsheet to handle qnames.
    This changed how spreadsheets are stored in Xule. They were the shadow dictionary of the dictionary that the .to-spreadsheet is used on. Now, to-spreadsheet runs through the values. It is probably the more types will need explicit conversion.

  • Added --xule-output-constants.
    This is a work in progress.
    Need to work out how to override the logger so the message format can be controlled.
    Create JSON format for all the xule tupes. For facts use the OIM as a model, but the SQNames make it difficult since there will need to be a place to capture the namespaces.

  • Updates to https://github.com/Dimensions.
    Added https://github.com/Dimensions=none and https://github.com/Dimensions=*

  • Fix issue with using coverd and @@. The processor was not identifiying that in this situation the factset is really not covered. That is there is alignment. Here's an example:
    output pfilt117
    list({covered https://github.com/instance = $INSTANCE1 @@period.days = 91}).count
    rule-suffix if $alignment == none 'FIX' else $alignment['period'].end.year
    This fix encountered 2 issues related to this. First in the factset, the none aligned value was not tripping the aligned_results_only flag, so we were getting an extra result (for the none aligned). When the factset does not have alignment, it should not trip the flag, so in the example, the flag was not being tripped, but because of the @@ it should be treated as algined.
    The second issue was in calculated the cache key. The calculation looks at if the expression has alignment or not. If it has alignment, then the current alignment is used as part of the cache key. In the example, because the expression was not marked as having alignment, it didn't include alignment in the cache key. This caused the processor to use the first calcualted value for the list() instead of recalcing.

  • Fix dictionary handling with in evaluate_comp. I
    It was converting the value to a python dictionary to compare, but when comparing to a set/list of dictionaries, this did not work because the set/list containted the dictionary as a set of tuples (2 items, the first is the key the second is the value). Now dictionaries are converted to a set of tuples for comparison.

  • Fix error handling for a factset when the concept is not found and the factset is using a groupQname (namespace-group).

  • Added https://github.com/Dimensions to factset filtering.

  • Fix to @dimesnions to property overwrite the dimension if an @dimension-name=member is used for a dimension in the https://github.com/Dimensions. If the operator is different, then the overwrite did not work properly.

  • Workiva changes from pull request 29 to improve cache handling and a mnor imporovement for xule value set.
    Instead of using a dictionary for the cache, the cache is now a dictionary like class that allows a maxium byte size. When the cache goes above the max size, it starts deleting items from the cache. This prevents the cache from growing too big.
    XuleValueSet now implements containts. This provides better performance when the "in" operator is used.

  • Restrict navigation to only concept to concept relationships.

XuleValues

  • Added .to-spreadsheet property. Updated file creating to create excel files.
  • Updated .to-spreadsheet to handle qnames.
    This changed how spreadsheets are stored in Xule. They were the shadow dictionary of the dictionary that the .to-spreadsheet is used on. Now, to-spreadsheet runs through the values. It is probably the more types will need explicit conversion.

XuleFunctions

  • Updated excel-data() function to return an empty string for empty cells. It was returning the string 'none'.

_init_py

  • Added --xule-output-constants.
    This is a work in progress.
    Need to work out how to override the logger so the message format can be controlled.
    Create JSON format for all the xule tupes. For facts use the OIM as a model, but the SQNames make it difficult since there will need to be a place to capture the namespaces.
  • Added property .sid (semantic hash) for fact.
    This involves a fix to the semanticHash pluging. It incorrectly used the fact.elementQname which for inline documents would be ix:nonFraction. Instead using the fact.qname.

SemanticHash
-Updated for sid.

XuleInstanceFunctions

  • Changed using the existing modelManager when opening an instance instead of creating a new one. Need to look where else a modelManager is creted.
  • Changed file type to allow keyword expansion.

XuleContext

  • Updates to use the model manager from the controler instead of initializing a new model manager. This is necessary to have the other plugins available (i.e. the transforms/SEC) when loading a new model.

  • Workiva changes from pull request 29 to improve cache handling and a mnor imporovement for xule value set.
    Instead of using a dictionary for the cache, the cache is now a dictionary like class that allows a maxium byte size. When the cache goes above the max size, it starts deleting items from the cache. This prevents the cache from growing too big.
    XuleValueSet now implements containts. This provides better performance when the "in" operator is used.

XuleValidate

  • Updates to use the model manager from the controler instead of initializing a new model manager. This is necessary to have the other plugins available (i.e. the transforms/SEC) when loading a new model.

XuleRuleSetBuilder

  • Fix issue with using coverd and @@. The processor was not identifiying that in this situation the factset is really not covered. That is there is alignment. Here's an example:
    output pfilt117
    list({covered https://github.com/instance = $INSTANCE1 @@period.days = 91}).count
    rule-suffix if $alignment == none 'FIX' else $alignment['period'].end.year
    This fix encountered 2 issues related to this. First in the factset, the none aligned value was not tripping the aligned_results_only flag, so we were getting an extra result (for the none aligned). When the factset does not have alignment, it should not trip the flag, so in the example, the flag was not being tripped, but because of the @@ it should be treated as algined.
    The second issue was in calculated the cache key. The calculation looks at if the expression has alignment or not. If it has alignment, then the current alignment is used as part of the cache key. In the example, because the expression was not marked as having alignment, it didn't include alignment in the cache key. This caused the processor to use the first calcualted value for the list() instead of recalcing.

XuleModelIndexer

  • Added keyword expansion.

XuleValue

  • Workiva changes from pull request 29 to improve cache handling and a mnor imporovement for xule value set.
    Instead of using a dictionary for the cache, the cache is now a dictionary like class that allows a maxium byte size. When the cache goes above the max size, it starts deleting items from the cache. This prevents the cache from growing too big.
    XuleValueSet now implements containts. This provides better performance when the "in" operator is used.

XuleCache

  • Workiva changes from pull request 29 to improve cache handling and a mnor imporovement for xule value set.
    Instead of using a dictionary for the cache, the cache is now a dictionary like class that allows a maxium byte size. When the cache goes above the max size, it starts deleting items from the cache. This prevents the cache from growing too big.
    XuleValueSet now implements containts. This provides better performance when the "in" operator is used.

XULE unit test - added repeat

Try XULE:
Binder
Colab

23722

18 Feb 14:03
Compare
Choose a tag to compare

Changelogs:

Since prior XULE release: 23694.1...23722

XULE updates:

  • Fix for finding the cntlr in the xuleValidate function when running as a service with multi processing.
  • Fix for typo in qNameLocalName in grammer
  • Change handling of short names for roles and arcroles. This now allows multiple uris to match. Previously, it would only allow one and if there was more than one it would raise an error.
    This affects the following:
    navigate for roles and arcroles
    drs-role in factset (this will still only allow one)
    taxonomy().networks(arcrole, role). This currently only allows one role to resolve, but should allow multiple
    taxonomy().cube.drs-role(role). This only allows one role to resolve.
  • Fix properties .entry-point and .entry-point-namespace.
    There is a problem in the recent version of Arelle that the .referencesDocument property of the inline document is not being filled in when processing an inline document set. The entry-point properties use .referenceDocument to find the schema. So have alternative code to find the schema.
  • Fix resolve_role. It was returning a string instead of a list/tuple in one situation. in XUleUtility
  • Update taxonomy().networks() to handle multiple roles when using the short name.
  • Reapply fix for property .entry-point() and .entry-point-namespace(). This fix handles finding the schema for an inline document set inline doucment which relied on arelle providing the .referencesDocument property on the ModelDocument of the inline document. But changes to Arelle caused this property to be left empty (empty list).
  • allow property .networks() to take a short name that resolves to multiple roles or arcroles.
  • Fix the inline-navigation. The properties did not allow unbound or none values.
  • Fix properties .cube and .effective-weight-network. These properties use the resolve_role() method which was changed support multiple roles for a role short name. resolve_role() now returns a list instead of a string value. These properties were not updated to handle that.

Try XULE:
Binder
Colab

23694.1

17 Jan 16:47
Compare
Choose a tag to compare

Changelogs:

Since prior XULE release: 23694...23694.1

  • Update rulesetMap.json files for US GAAP 2024 and removing 2023 ESEF

Try XULE:
Binder
Colab

23694

11 Jan 21:55
Compare
Choose a tag to compare

Changelogs:

Since prior XULE release: 23663...23694

  • #26 - runtime performance improvements
  • Update unit tests
  • Add XODEL v1.0 - a module that automates the creation of taxonomies using the XULE syntax. It works in conjunction with the serializer plugin.
  • Serializer and SimpleXBRL Model - plugins that control the creation of physical XBRL files when using XODEL.
  • Update unit tests

Try XULE:
Binder
Colab

23663

22 Nov 12:29
ee94fc3
Compare
Choose a tag to compare

Changelogs:

Since prior XULE release: 23604.2...23663

  • #24 - Add argument for compiling rule files in parallel
  • #25 - Fix file hash check for compile

Try XULE:
Binder
Colab

23604.2

27 Oct 14:32
Compare
Choose a tag to compare

Changelogs:

Since prior XULE release: 23570.2...23604.2

  • Update for pyparsing 3 compatability #22
  • Update unit test suite
  • Update Xince.py to fix date calculation
  • Update rulesetMap for v22 approved (DQC & ESEF)

Try XULE:
Binder Colab

23604.1

15 Sep 19:38
Compare
Choose a tag to compare

Changelogs:

Since prior XULE release: 23570.2...23604.1

  • Update for pyparsing 3 compatability #22
  • Updated unit test suite
  • Update Xince.py to fix date calculation

Try XULE:
Binder Colab

23604

06 Sep 19:48
Compare
Choose a tag to compare

Changelogs:

Since prior XULE release: 23570.2...23604

  • Update for pyparsing 3 compatability #22
  • Updated unit test suite

Try XULE:
Binder Colab

23570.2

12 Jul 16:07
Compare
Choose a tag to compare

Changelogs:

Since prior XULE release: 23469...23570.1
Within current XULE release: 23570...23570.2

  • Add support for rendering (XENDR)
  • Update XuleProperties.py to handle taxonomies
  • Update rulesetMap.json for DQC version 21
  • Add unit tests to repository (NB: unit tests are linked as a .zip below)

Try XULE:
Binder Colab