arelle-release 2.37.56__py3-none-any.whl → 2.37.57__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of arelle-release might be problematic. Click here for more details.

@@ -6,20 +6,24 @@ from __future__ import annotations
6
6
  import re
7
7
  from collections import defaultdict
8
8
  from pathlib import Path
9
- from typing import Any, Iterable, TYPE_CHECKING
9
+ from typing import Any, Iterable, TYPE_CHECKING, cast
10
10
 
11
11
  import regex
12
12
 
13
- from arelle import UrlUtil
13
+ from arelle import UrlUtil, XbrlConst
14
14
  from arelle.Cntlr import Cntlr
15
15
  from arelle.FileSource import FileSource
16
+ from arelle.ModelInstanceObject import ModelFact
16
17
  from arelle.ValidateXbrl import ValidateXbrl
18
+ from arelle.XmlValidateConst import VALID
17
19
  from arelle.typing import TypeGetText
18
20
  from arelle.utils.PluginHooks import ValidationHook
19
21
  from arelle.utils.validate.Decorator import validation
20
22
  from arelle.utils.validate.Validation import Validation
21
23
  from .. import Constants
24
+ from ..CoverPageRequirements import CoverPageItemStatus
22
25
  from ..DisclosureSystems import (DISCLOSURE_SYSTEM_EDINET)
26
+ from ..FilingFormat import FILING_FORMATS
23
27
  from ..ReportFolderType import ReportFolderType, HTML_EXTENSIONS, IMAGE_EXTENSIONS
24
28
  from ..PluginValidationDataExtension import PluginValidationDataExtension
25
29
 
@@ -631,6 +635,11 @@ def rules_cover_page(
631
635
  ) -> Iterable[Validation]:
632
636
  """
633
637
  EDINET.EC1000E: Cover page must contain "【表紙】".
638
+ EDINET.EC1001E: A required item is missing from the cover page.
639
+ EDINET.EC1002E: A duplicate item is included on the cover page.
640
+ EDINET.EC1003E: An unnecessary item is included on the cover page.
641
+ EDINET.EC1004E: An item on the cover page is out of order.
642
+ EDINET.EC1005E: A required item on the cover page is missing a valid value.
634
643
  """
635
644
  uploadContents = pluginData.getUploadContents(val.modelXbrl)
636
645
  if uploadContents is None:
@@ -645,7 +654,7 @@ def rules_cover_page(
645
654
  for elt in rootElt.iterdescendants():
646
655
  if not coverPageTextFound and elt.text and '【表紙】' in elt.text:
647
656
  coverPageTextFound = True
648
- # TODO: Other checks related to the cover page will be implemented here.
657
+ break
649
658
  if not coverPageTextFound:
650
659
  yield Validation.error(
651
660
  codes='EDINET.EC1000E',
@@ -654,6 +663,85 @@ def rules_cover_page(
654
663
  "Please add '【表紙】' to the relevant file."),
655
664
  file=doc.basename,
656
665
  )
666
+ filingFormat = pluginData.getFilingFormat(val.modelXbrl)
667
+ if filingFormat is None:
668
+ return
669
+ coverPageRequirements = pluginData.getCoverPageRequirements(val.modelXbrl)
670
+ currentLineNumber = 0
671
+ for qname in pluginData.coverPageItems:
672
+ foundFacts = []
673
+ validNonNilFacts = []
674
+ for fact in pluginData.iterFacts(val.modelXbrl, qname):
675
+ if fact.modelDocument != doc:
676
+ continue
677
+ if fact.qname.prefix is not None and filingFormat.includesTaxonomyPrefix(fact.qname.prefix):
678
+ foundFacts.append(fact)
679
+ if fact.xValid >= VALID and not fact.isNil:
680
+ validNonNilFacts.append(fact)
681
+
682
+ for fact in sorted(foundFacts, key=lambda f: cast(int, f.sourceline)):
683
+ if (sourceLine := cast(int, fact.sourceline)) <= currentLineNumber:
684
+ yield Validation.error(
685
+ codes='EDINET.EC1004E',
686
+ msg=_("Cover item %(localName)s is not in the correct order. "
687
+ "File name: '%(file)s'. "
688
+ "Please correct the order of cover items in the appropriate file."),
689
+ localName=qname.localName,
690
+ file=doc.basename,
691
+ modelObject=fact,
692
+ )
693
+ else:
694
+ currentLineNumber = sourceLine
695
+
696
+ if len(foundFacts) > 1:
697
+ yield Validation.error(
698
+ codes='EDINET.EC1002E',
699
+ msg=_("Cover item %(localName)s is duplicated. "
700
+ "File name: '%(file)s'. "
701
+ "Please check the cover item %(localName)s of the relevant file "
702
+ "and make sure there are no duplicates."),
703
+ localName=qname.localName,
704
+ file=doc.basename,
705
+ modelObject=foundFacts,
706
+ )
707
+
708
+ status = coverPageRequirements.get(qname, filingFormat)
709
+ if status is None:
710
+ continue
711
+ if status == CoverPageItemStatus.REQUIRED:
712
+ if len(foundFacts) == 0:
713
+ yield Validation.error(
714
+ codes='EDINET.EC1001E',
715
+ msg=_("Cover item %(localName)s is missing. "
716
+ "File name: '%(file)s'. "
717
+ "Please add the cover item %(localName)s to the relevant file."),
718
+ localName=qname.localName,
719
+ file=doc.basename,
720
+ )
721
+ elif len(validNonNilFacts) == 0:
722
+ yield Validation.error(
723
+ codes='EDINET.EC1005E',
724
+ msg=_("Cover item %(localName)s is missing a valid value. "
725
+ "File name: '%(file)s'. "
726
+ "Please enter a valid value for %(localName)s in the relevant file."),
727
+ localName=qname.localName,
728
+ file=doc.basename,
729
+ modelObject=foundFacts,
730
+ )
731
+ elif status == CoverPageItemStatus.PROHIBITED:
732
+ for fact in foundFacts:
733
+ if fact.isNil:
734
+ continue # Prohibited cover pages facts are allowed, only if nil.
735
+ yield Validation.error(
736
+ codes='EDINET.EC1003E',
737
+ msg=_("Cover item %(localName)s is not necessary. "
738
+ "File name: '%(file)s' (line %(line)s). "
739
+ "Please add the cover item %(localName)s to the relevant file."),
740
+ localName=qname.localName,
741
+ file=doc.basename,
742
+ line=fact.sourceline,
743
+ modelObject=fact,
744
+ )
657
745
 
658
746
 
659
747
  @validation(
@@ -766,6 +854,77 @@ def rule_uri_references(
766
854
  continue
767
855
 
768
856
 
857
+ @validation(
858
+ hook=ValidationHook.FILESOURCE,
859
+ disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
860
+ )
861
+ def rule_EC1009R(
862
+ pluginData: ControllerPluginData,
863
+ cntlr: Cntlr,
864
+ fileSource: FileSource,
865
+ *args: Any,
866
+ **kwargs: Any,
867
+ ) -> Iterable[Validation]:
868
+ """
869
+ EDINET.EC1009R: The HTML file size must be 2.5MB (megabytes) or less.
870
+ """
871
+ for path, size in pluginData.getUploadFileSizes(fileSource).items():
872
+ if path.suffix not in HTML_EXTENSIONS:
873
+ continue
874
+ if size > 2_500_000:
875
+ yield Validation.warning(
876
+ codes='EDINET.EC1009R',
877
+ msg=_("The HTML file size exceeds the maximum limit. "
878
+ "File name: '%(path)s'. "
879
+ "Please split the file so that the file size is 2.5MB or less."),
880
+ path=str(path),
881
+ )
882
+
883
+
884
+
885
+ @validation(
886
+ hook=ValidationHook.XBRL_FINALLY,
887
+ disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
888
+ )
889
+ def rule_EC1010E(
890
+ pluginData: PluginValidationDataExtension,
891
+ val: ValidateXbrl,
892
+ *args: Any,
893
+ **kwargs: Any,
894
+ ) -> Iterable[Validation]:
895
+ """
896
+ EDINET.EC1010E: The charset specification in the content attribute of the HTML <meta> tag must be UTF-8.
897
+ """
898
+ for modelDocument in val.modelXbrl.urlDocs.values():
899
+ path = Path(modelDocument.uri)
900
+ if path.suffix not in HTML_EXTENSIONS:
901
+ continue
902
+ rootElt = modelDocument.xmlRootElement
903
+ matchingElt = None
904
+ missingElts = []
905
+ for metaElt in rootElt.iterdescendants(tag=XbrlConst.qnXhtmlMeta.clarkNotation):
906
+ if metaElt.qname.localName != 'meta':
907
+ continue
908
+ content = metaElt.get('content')
909
+ if content is None:
910
+ continue
911
+ charset = content.split('charset=')[-1].strip().lower()
912
+ if charset == 'utf-8':
913
+ matchingElt = metaElt
914
+ else:
915
+ missingElts.append(metaElt)
916
+
917
+ if matchingElt is None or len(missingElts) > 0:
918
+ yield Validation.error(
919
+ codes='EDINET.EC1010E',
920
+ msg=_("The charset specification in the content attribute of the HTML <meta> tag is not UTF-8. "
921
+ "File name: '%(path)s'. "
922
+ "Please change the character code of the file to UTF-8."),
923
+ path=str(path),
924
+ modelObject=missingElts
925
+ )
926
+
927
+
769
928
  @validation(
770
929
  hook=ValidationHook.FILESOURCE,
771
930
  disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
@@ -833,20 +992,22 @@ def rule_EC1017E(
833
992
  hook=ValidationHook.XBRL_FINALLY,
834
993
  disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
835
994
  )
836
- def rule_EC1020E(
995
+ def rule_html_elements(
837
996
  pluginData: PluginValidationDataExtension,
838
997
  val: ValidateXbrl,
839
998
  *args: Any,
840
999
  **kwargs: Any,
841
1000
  ) -> Iterable[Validation]:
842
1001
  """
1002
+ EDINET.EC1011E: The HTML lang attribute is not Japanese.
843
1003
  EDINET.EC1020E: When writing a DOCTYPE declaration, do not define it multiple times.
844
- Also, please modify the relevant file so that there is only one html tag, one head tag, and one body tag each.
1004
+ Also, please modify the relevant file so that there is only one html tag, one head tag, and one body tag each.
845
1005
 
846
- Note: Some violations of this rule (such as multiple DOCTYPE declarations) prevent Arelle from parsing
1006
+ Note: Some violations of EC1020E (such as multiple DOCTYPE declarations) prevent Arelle from parsing
847
1007
  the XML at all, and thus an XML schema error will be triggered rather than this validation error.
848
1008
  """
849
1009
  checkNames = frozenset({'body', 'head', 'html'})
1010
+ langAttributeValues = frozenset({'ja', 'jp', 'ja-jp', 'JA', 'JP', 'JA-JP'})
850
1011
  for modelDocument in val.modelXbrl.urlDocs.values():
851
1012
  path = Path(modelDocument.uri)
852
1013
  if path.suffix not in HTML_EXTENSIONS:
@@ -857,10 +1018,22 @@ def rule_EC1020E(
857
1018
  }
858
1019
  for elt in rootElt.iterdescendants():
859
1020
  name = elt.qname.localName
860
- if name not in checkNames:
861
- continue
862
- eltCounts[name] = eltCounts.get(name, 0) + 1
863
- pass
1021
+ if name in checkNames:
1022
+ eltCounts[name] = eltCounts.get(name, 0) + 1
1023
+ if not isinstance(elt, ModelFact):
1024
+ lang = elt.get(XbrlConst.qnXmlLang.clarkNotation)
1025
+ if lang is not None and lang not in langAttributeValues:
1026
+ yield Validation.error(
1027
+ codes='EDINET.EC1011E',
1028
+ msg=_("The language setting is not Japanese. "
1029
+ "File name: %(file)s (line %(line)s). "
1030
+ "Please set the lang attribute on the given line of the "
1031
+ "relevant file to one of the following: %(langValues)s."),
1032
+ file=modelDocument.basename,
1033
+ line=elt.sourceline,
1034
+ langValues=', '.join(langAttributeValues),
1035
+ )
1036
+
864
1037
  if any(count > 1 for count in eltCounts.values()):
865
1038
  yield Validation.error(
866
1039
  codes='EDINET.EC1020E',
@@ -35,6 +35,8 @@ SCHEMA_PATTERNS = {
35
35
  "http://www.cro.ie/": re.compile(r"^\d{1,6}$")
36
36
  }
37
37
 
38
+ UK_REF_NS_PATTERN = re.compile(r"^http://xbrl.frc.org.uk/general/\d{4,}-\d{2,}-\d{2,}/ref$")
39
+
38
40
  TR_NAMESPACES = {
39
41
  "http://www.xbrl.org/inlineXBRL/transformation/2010-04-20",
40
42
  "http://www.xbrl.org/inlineXBRL/transformation/2011-07-31",
@@ -12,6 +12,7 @@ from .PluginValidationDataExtension import PluginValidationDataExtension
12
12
 
13
13
  _: TypeGetText
14
14
 
15
+ CURRENCIES_DIMENSION = 'CurrenciesDimension'
15
16
  EQUITY = 'Equity'
16
17
  IE_PROFIT_LOSS = 'ProfitLossBeforeTax'
17
18
  IE_PROFIT_LOSS_ORDINARY = 'ProfitLossOnOrdinaryActivitiesBeforeTax'
@@ -10,6 +10,7 @@ from collections import Counter
10
10
  from collections.abc import Iterable
11
11
  from decimal import Decimal
12
12
 
13
+ from arelle import XbrlConst
13
14
  from arelle.typing import TypeGetText
14
15
  from arelle.ValidateXbrl import ValidateXbrl
15
16
  from collections import defaultdict
@@ -28,8 +29,8 @@ from arelle.utils.validate.Validation import Validation
28
29
  from arelle.ValidateXbrlCalcs import inferredDecimals, rangeValue
29
30
  from arelle.XbrlConst import qnXbrliMonetaryItemType, qnXbrliXbrl, xhtml
30
31
  from arelle.XmlValidateConst import VALID
31
- from ..ValidationPluginExtension import EQUITY, PRINCIPAL_CURRENCY, TURNOVER_REVENUE
32
- from ..PluginValidationDataExtension import MANDATORY_ELEMENTS, SCHEMA_PATTERNS, TR_NAMESPACES, PluginValidationDataExtension
32
+ from ..ValidationPluginExtension import CURRENCIES_DIMENSION, EQUITY, PRINCIPAL_CURRENCY, TURNOVER_REVENUE
33
+ from ..PluginValidationDataExtension import MANDATORY_ELEMENTS, SCHEMA_PATTERNS, TR_NAMESPACES, UK_REF_NS_PATTERN, PluginValidationDataExtension
33
34
 
34
35
 
35
36
  def checkFileEncoding(modelXbrl: ModelXbrl) -> None:
@@ -337,27 +338,56 @@ def rule_ros20(
337
338
  used for the majority of monetary facts.
338
339
  """
339
340
  principal_currency_facts = val.modelXbrl.factsByLocalName.get(PRINCIPAL_CURRENCY, set())
340
- principal_currency_values = set(fact.text for fact in principal_currency_facts)
341
+ principal_currency_values = {
342
+ currencyDimensionCode
343
+ for pc_fact in principal_currency_facts
344
+ if (currencyDimensionCode := _getCurrencyDimensionCode(val.modelXbrl, pc_fact))
345
+ }
341
346
  if len(principal_currency_values) != 1:
342
347
  yield Validation.error(
343
348
  "ROS.20",
344
349
  _("'PrincipalCurrencyUsedInBusinessReport' must exist and have a single value. Values found: %(principal_currency_values)s."),
345
350
  modelObject=principal_currency_facts,
346
- principal_currency_values=principal_currency_values,
351
+ principal_currency_values=sorted(principal_currency_values),
347
352
  )
348
353
  else:
349
354
  principal_currency_value = principal_currency_values.pop()
350
355
  monetary_facts = list(val.modelXbrl.factsByDatatype(False, qnXbrliMonetaryItemType))
351
- monetary_units = [list(fact.utrEntries)[0].unitName for fact in monetary_facts if fact.unit is not None]
356
+ monetary_units = [list(fact.utrEntries)[0].unitId for fact in monetary_facts if fact.unit is not None]
352
357
  unit_counts = Counter(monetary_units)
353
358
  principal_currency_value_count = unit_counts[principal_currency_value]
354
- for unit, count in unit_counts.items():
359
+ for count in unit_counts.values():
355
360
  if count > principal_currency_value_count:
356
361
  yield Validation.warning(
357
362
  "ROS.20",
358
- _("'PrincipalCurrencyUsedInBusinessReport' has a value of %(principal_currency_value)s, "
363
+ _("'PrincipalCurrencyUsedInBusinessReport' has a %(currencies_dimension)s value of %(principal_currency_value)s, "
359
364
  "which must match the functional(majority) unit of the financial statement."),
360
365
  modelObject=principal_currency_facts,
366
+ currencies_dimension=CURRENCIES_DIMENSION,
361
367
  principal_currency_value=principal_currency_value,
362
368
  )
363
369
  break
370
+
371
+ def _getCurrencyDimensionCode(modelXbrl: ModelXbrl, fact: ModelInlineFact) -> str | None:
372
+ if fact.context is None:
373
+ return None
374
+ for dim, mem in fact.context.qnameDims.items():
375
+ if dim.localName != CURRENCIES_DIMENSION:
376
+ continue
377
+ if mem.xValid < VALID:
378
+ return None
379
+ mem_concept = modelXbrl.qnameConcepts.get(mem.xValue)
380
+ if mem_concept is None:
381
+ return None
382
+ for ref_rel in modelXbrl.relationshipSet(XbrlConst.conceptReference).fromModelObject(mem_concept):
383
+ concept_ref = ref_rel.toModelObject
384
+ uk_ref_ns = None
385
+ for ns in concept_ref.nsmap.values():
386
+ if UK_REF_NS_PATTERN.match(ns):
387
+ uk_ref_ns = ns
388
+ break
389
+ if uk_ref_ns is None:
390
+ continue
391
+ if code := concept_ref.findtext(f"{{{uk_ref_ns}}}Code"):
392
+ return code.strip()
393
+ return None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arelle-release
3
- Version: 2.37.56
3
+ Version: 2.37.57
4
4
  Summary: An open source XBRL platform.
5
5
  Author-email: "arelle.org" <support@arelle.org>
6
6
  License-Expression: Apache-2.0
@@ -1,7 +1,7 @@
1
1
  arelle/Aspect.py,sha256=Pn9I91D1os1RTVj6htuxTfRzVMhmVDtrbKvV_zy9xMI,5470
2
2
  arelle/BetaFeatures.py,sha256=T_tPac-FiozHyYLCemt0RoHJ1JahUE71L-0tHmIRKpE,858
3
3
  arelle/Cntlr.py,sha256=nwE_qIQMTa5R3sr_dLP6s3srLhiEA5zDOqfas2pDxoA,31691
4
- arelle/CntlrCmdLine.py,sha256=D5Xs847rIAMsI_fmJC27GSB0jIMGjE3VejpKvMTqncU,88717
4
+ arelle/CntlrCmdLine.py,sha256=pOztA3ExK4O-IvxELeBU0SyC4Yk6OKgbsOjpNgwmKiU,88800
5
5
  arelle/CntlrComServer.py,sha256=h1KPf31uMbErpxTZn_iklDqUMGFgQnjZkFkFjd8gtLQ,1888
6
6
  arelle/CntlrProfiler.py,sha256=2VQJudiUhxryVypxjODx2ccP1-n60icTiWs5lSEokhQ,972
7
7
  arelle/CntlrQuickBooks.py,sha256=BMqd5nkNQOZyNFPefkTeWUUDCYNS6BQavaG8k1Lepu4,31543
@@ -21,7 +21,7 @@ arelle/DialogRssWatch.py,sha256=mjc4pqyFDISY4tQtME0uSRQ3NlcWnNsOsMu9Zj8tTd0,1378
21
21
  arelle/DialogURL.py,sha256=JH88OPFf588E8RW90uMaieok7A_4kOAURQ8kHWVhnao,4354
22
22
  arelle/DialogUserPassword.py,sha256=kWPlCCihhwvsykDjanME9qBDtv6cxZlsrJyoMqiRep4,13769
23
23
  arelle/DisclosureSystem.py,sha256=mQlz8eezPpJuG6gHBV-x4-5Hne3LVh8TQf-Qm9jiFxI,24757
24
- arelle/ErrorManager.py,sha256=en3jVyUnSDzHGFE2e8UjuitU9sBwlciRMPiSn5OpTjs,16641
24
+ arelle/ErrorManager.py,sha256=F81oi1syHgCFZ99L4e4j7bePGei5oJy34sIYizXd0OE,16762
25
25
  arelle/FileSource.py,sha256=asaX2wM47T7S6kELwmXm-YjGIoV6poWz_YdYThY0lpk,47983
26
26
  arelle/FunctionCustom.py,sha256=d1FsBG14eykvpLpgaXpN8IdxnlG54dfGcsXPYfdpA9Q,5880
27
27
  arelle/FunctionFn.py,sha256=BcZKah1rpfquSVPwjvknM1pgFXOnK4Hr1e_ArG_mcJY,38058
@@ -68,7 +68,7 @@ arelle/UiUtil.py,sha256=3G0xPclZI8xW_XQDbiFrmylB7Nd5muqi5n2x2oMkMZU,34218
68
68
  arelle/Updater.py,sha256=IZ8cq44Rq88WbQcB1VOpMA6bxdfZxfYQ8rgu9Ehpbes,7448
69
69
  arelle/UrlUtil.py,sha256=HrxZSG59EUMGMMGmWPuZkPi5-0BGqY3jAMkp7V4IdZo,32400
70
70
  arelle/Validate.py,sha256=cX1OA3JPiwmjNmxfecZc24GBW1qXdjcEEynJ9F1K7Zg,58764
71
- arelle/ValidateDuplicateFacts.py,sha256=L556J1Dhz4ZmsMlRNoDCMpFgDQYiryd9vuBYDvE0Aq8,21769
71
+ arelle/ValidateDuplicateFacts.py,sha256=MPRCOWSHahdtB8IJVxZMPGbupZix6Zhv4OrLHZyHDAA,21767
72
72
  arelle/ValidateFilingText.py,sha256=xnXc0xgdNiHQk0eyP7VSSpvw7qr-pRFRwqqoUb569is,54051
73
73
  arelle/ValidateInfoset.py,sha256=Rz_XBi5Ha43KpxXYhjLolURcWVx5qmqyjLxw48Yt9Dg,20396
74
74
  arelle/ValidateUtr.py,sha256=oxOPrOa1XEzBay4miXvx6eRLTnVFYUIJC9ueWUk4EkI,13633
@@ -116,7 +116,7 @@ arelle/ViewWinVersReport.py,sha256=aYfsOgynVZpMzl6f2EzQCBLzdihYGycwb5SiTghkgMQ,9
116
116
  arelle/ViewWinXml.py,sha256=4ZGKtjaoCwU9etKYm9ZAS7jSmUxba1rqNEdv0OIyjTY,1250
117
117
  arelle/WatchRss.py,sha256=5Ih4igH2MM4hpOuAXy9eO0QAyZ7jZR3S5bPzo2sdFpw,14097
118
118
  arelle/WebCache.py,sha256=SLk-S5StYUIucm5bd2BqT-o8ZA0NdYw2Xl4O9vIt7O8,45257
119
- arelle/XbrlConst.py,sha256=p5GV8x7ZLNVT-lMo9EEtw8CkVICITxJ4GZXXQFmZQEk,58561
119
+ arelle/XbrlConst.py,sha256=kyNYQZVjw917DdzmK7olLhaio1kPJCJtC3j9QhBSxfs,58619
120
120
  arelle/XbrlUtil.py,sha256=s2Vmrh-sZI5TeuqsziKignOc3ao-uUgnCNoelP4dDj0,9212
121
121
  arelle/XhtmlValidate.py,sha256=0gtm7N-kXK0RB5o3c1AQXjfFuRp1w2fKZZAeyruNANw,5727
122
122
  arelle/XmlUtil.py,sha256=1VToOOylF8kbEorEdZLThmq35j9bmuF_DS2q9NthnHU,58774
@@ -125,7 +125,7 @@ arelle/XmlValidateConst.py,sha256=U_wN0Q-nWKwf6dKJtcu_83FXPn9c6P8JjzGA5b0w7P0,33
125
125
  arelle/XmlValidateParticles.py,sha256=Mn6vhFl0ZKC_vag1mBwn1rH_x2jmlusJYqOOuxFPO2k,9231
126
126
  arelle/XmlValidateSchema.py,sha256=6frtZOc1Yrx_5yYF6V6oHbScnglWrVbWr6xW4EHtLQI,7428
127
127
  arelle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
- arelle/_version.py,sha256=fDTO72M4k2Bg8Q2mmpC5_JjetoiOyfrQn3nJSak1r6w,708
128
+ arelle/_version.py,sha256=CcYtsRRssUOvQGQ3FxPpMP9UMr7c8qKJ7JmvTpB0H5U,708
129
129
  arelle/typing.py,sha256=PRe-Fxwr2SBqYYUVPCJ3E7ddDX0_oOISNdT5Q97EbRM,1246
130
130
  arelle/api/Session.py,sha256=kgSxS7VckA1sQ7xp0pJiK7IK-vRxAdAZKUo8gEx27s8,7549
131
131
  arelle/config/creationSoftwareNames.json,sha256=5MK7XUjfDJ9OpRCCHXeOErJ1SlTBZji4WEcEOdOacx0,3128
@@ -312,25 +312,29 @@ arelle/plugin/validate/DBA/rules/tm.py,sha256=ui9oKBqlAForwkQ9kk9KBiUogTJE5pv1Rb
312
312
  arelle/plugin/validate/DBA/rules/tr.py,sha256=4TootFjl0HXsKZk1XNBCyj-vnjRs4lg35hfiz_b_4wU,14684
313
313
  arelle/plugin/validate/EBA/__init__.py,sha256=x3zXNcdSDJ3kHfL7kMs0Ve0Vs9oWbzNFVf1TK4Avmy8,45924
314
314
  arelle/plugin/validate/EBA/config.xml,sha256=37wMVUAObK-XEqakqD8zPNog20emYt4a_yfL1AKubF8,2022
315
- arelle/plugin/validate/EDINET/Constants.py,sha256=IkJ1R0ZQAs9kUXY8eB7e8azYlC4m500VILrQhniB5Q4,1949
316
- arelle/plugin/validate/EDINET/ControllerPluginData.py,sha256=zsBOWkSatXza0v_ZB-jIdFLSIj9Btzd50GdNIgVw6Fo,8027
315
+ arelle/plugin/validate/EDINET/Constants.py,sha256=2RxNrXqmAqsh7nM9ZNZn6Uo0mTrfFJcb_E_HJw_MLcE,1516
316
+ arelle/plugin/validate/EDINET/ControllerPluginData.py,sha256=1WhiS0RdrxeXz4pGDzWATEPqCopOh2spr8Z6Qra_Psk,8420
317
+ arelle/plugin/validate/EDINET/CoverPageRequirements.py,sha256=ZR8pk1CQfUIi15as1zVF27W0kRlUF1M_Ygw7appDUno,4488
317
318
  arelle/plugin/validate/EDINET/DisclosureSystems.py,sha256=3rKG42Eg-17Xx_KXU_V5yHW6I3LTwQunvf4a44C9k_4,36
319
+ arelle/plugin/validate/EDINET/FilingFormat.py,sha256=SFZ22zFk6RVIA9dpx3iVLlf2heKfZZqt2ZUXUje4BII,18789
320
+ arelle/plugin/validate/EDINET/FormType.py,sha256=jFqjJACJJ4HhkY1t6Fqei0z6rgvH3Mp-dP04KwQVv3Q,2517
318
321
  arelle/plugin/validate/EDINET/ManifestInstance.py,sha256=o6BGlaQHSsn6D0VKH4zn59UscKnjTKlo99kSGfGdYlU,6910
319
- arelle/plugin/validate/EDINET/PluginValidationDataExtension.py,sha256=CVTtWTYrvC_oeK9iWHLt5l9dN3KmzgLAEZmGdlPqv3g,16362
322
+ arelle/plugin/validate/EDINET/PluginValidationDataExtension.py,sha256=wR18Oregy8SBBH2G_u4zqP2_M0EBopx9_AxOZpd1Bao,21358
320
323
  arelle/plugin/validate/EDINET/ReportFolderType.py,sha256=Q-9a-5tJfhK-cjY8WUB2AT1NI-Nn9cFtARVOIJoLRGU,2979
321
324
  arelle/plugin/validate/EDINET/Statement.py,sha256=0Mw5IB7LMtvUZ-2xKZfxmq67xF_dCgJo3eNLweLFRHU,9350
322
325
  arelle/plugin/validate/EDINET/UploadContents.py,sha256=o29mDoX48M3S2jQqrJO4ZaulltAPt4vD-qdsWTMCUPc,1196
323
326
  arelle/plugin/validate/EDINET/ValidationPluginExtension.py,sha256=8LNqvXzNaWP54dShEjet5ely4BnM8ByCSyimKpUx3_s,2577
324
327
  arelle/plugin/validate/EDINET/__init__.py,sha256=ECWgqzwHA7MZ3g7SeoFI7ttR9Wq_lywV-TlqeUW_juY,3186
325
328
  arelle/plugin/validate/EDINET/resources/config.xml,sha256=7uT4GcRgk5veMLpFhPPQJxbGKiQvM52P8EMrjn0qd0g,646
329
+ arelle/plugin/validate/EDINET/resources/cover-page-requirements.csv,sha256=8ILKNn8bXbcgG9V0lc8mxorKDKEjJQWLdBQRMvbqtkI,6518
326
330
  arelle/plugin/validate/EDINET/resources/edinet-taxonomies.xml,sha256=997I3RGTLg5OY3vn5hQxVFAAxOmDSOYpuyQe6VnWSY0,16285
327
331
  arelle/plugin/validate/EDINET/rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
328
332
  arelle/plugin/validate/EDINET/rules/contexts.py,sha256=KPoyWfRaURvxoGVcWP64mTMTAKPMSmQSX06RClCLddw,7590
329
- arelle/plugin/validate/EDINET/rules/edinet.py,sha256=VYrDZaKbsQuQEvOY5F0Pv4Jzk9YZ4iETOkAFOggrhEY,12632
333
+ arelle/plugin/validate/EDINET/rules/edinet.py,sha256=g3IPMV5-mWbVwVmEwv5-h1LOtdfeBQ9gZI27m744FFw,12628
330
334
  arelle/plugin/validate/EDINET/rules/frta.py,sha256=N0YglHYZuLD2IuwE26viR2ViwUYjneBuMFU9vlrS0aQ,7616
331
- arelle/plugin/validate/EDINET/rules/gfm.py,sha256=1SBUQG2M4VOhxp4e2ALnm_Uq8p3g-S0WbKkRCEH-ttw,26769
335
+ arelle/plugin/validate/EDINET/rules/gfm.py,sha256=8m6TkwIKVouENOZ4AmfBd3t_R_oODhEwbYzcsOZfyp4,33878
332
336
  arelle/plugin/validate/EDINET/rules/manifests.py,sha256=MoT9R_a4BzuYdQVbF7RC5wz134Ve68svSdJ3NlpO_AU,4026
333
- arelle/plugin/validate/EDINET/rules/upload.py,sha256=opGEEFf80RLKk_Z43gkUYHJLBvq_Hd-BMzMMg2Vhnns,40064
337
+ arelle/plugin/validate/EDINET/rules/upload.py,sha256=E_sEhsuUkoH648PGWwpN90uOQMjKNFaZ8priucmYMOk,47908
334
338
  arelle/plugin/validate/ESEF/Const.py,sha256=JujF_XV-_TNsxjGbF-8SQS4OOZIcJ8zhCMnr-C1O5Ho,22660
335
339
  arelle/plugin/validate/ESEF/Dimensions.py,sha256=MOJM7vwNPEmV5cu-ZzPrhx3347ZvxgD6643OB2HRnIk,10597
336
340
  arelle/plugin/validate/ESEF/Util.py,sha256=QH3btcGqBpr42M7WSKZLSdNXygZaZLfEiEjlxoG21jE,7950
@@ -359,13 +363,13 @@ arelle/plugin/validate/NL/rules/fr_kvk.py,sha256=kYqXt45S6eM32Yg9ii7pUhOMfJaHurg
359
363
  arelle/plugin/validate/NL/rules/fr_nl.py,sha256=ZoyiRsTyqTNZB_VgcdabmeNi6v7DY6jMxzaP6ppLtIU,31387
360
364
  arelle/plugin/validate/NL/rules/nl_kvk.py,sha256=bPD5lfr6dxdVGPZ2D_bEZtbz02tzsX_BZ5kC-CZJNwc,90170
361
365
  arelle/plugin/validate/ROS/DisclosureSystems.py,sha256=rJ81mwQDYTi6JecFZ_zhqjjz3VNQRgjHNSh0wcQWAQE,18
362
- arelle/plugin/validate/ROS/PluginValidationDataExtension.py,sha256=nCZoGWNX4aUN5oQBJqa8UrG9tElPW906xkfzRlbjBB8,4285
363
- arelle/plugin/validate/ROS/ValidationPluginExtension.py,sha256=OEDpi3CqcHrlX87UTG2KEYHnQrcbo8iajBY8X8nF6Tw,829
366
+ arelle/plugin/validate/ROS/PluginValidationDataExtension.py,sha256=9_dxO20B3TRVElv0jZ_YW7tZbG3HihzRowg7W-397is,4379
367
+ arelle/plugin/validate/ROS/ValidationPluginExtension.py,sha256=U5EtwSW3eGvvvgVk9JgcUueJn604a4J6C2Fsk_CHQy0,874
364
368
  arelle/plugin/validate/ROS/__init__.py,sha256=KuWg1MHVzA2S6eaHFptvP3Vu_5gQWf3OUYC97clB7zI,2075
365
369
  arelle/plugin/validate/ROS/config.xml,sha256=ZCpCFgr1ZAjoUuhb1eRpDnmKrae-sXA9yl6SOWnrfm8,654
366
370
  arelle/plugin/validate/ROS/resources/config.xml,sha256=HXWume5HlrAqOx5AtiWWqgADbRatA8YSfm_JvZGwdgQ,657
367
371
  arelle/plugin/validate/ROS/rules/__init__.py,sha256=wW7BUAIb7sRkOxC1Amc_ZKrz03FM-Qh1TyZe6wxYaAU,1567
368
- arelle/plugin/validate/ROS/rules/ros.py,sha256=yGvvJZJwENgFLpA5r464eez1aHf3pKZm0HyzaWiQn6E,19930
372
+ arelle/plugin/validate/ROS/rules/ros.py,sha256=CRZkZfsKe4y1B-PDkazQ_cD5LRZBk1GJjTscCZXXYUI,21173
369
373
  arelle/plugin/validate/UK/ValidateUK.py,sha256=h7-tnCubHme8Meaif-o55TV2rCfMWuikfpZCcK6NNDs,56447
370
374
  arelle/plugin/validate/UK/__init__.py,sha256=GT67T_7qpOASzdmgRXFPmLxfPg3Gjubli7luQDK3zck,27462
371
375
  arelle/plugin/validate/UK/config.xml,sha256=mUFhWDfBzGTn7v0ZSmf4HaweQTMJh_4ZcJmD9mzCHrA,1547
@@ -680,9 +684,9 @@ arelle/utils/validate/ValidationUtil.py,sha256=9vmSvShn-EdQy56dfesyV8JjSRVPj7txr
680
684
  arelle/utils/validate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
681
685
  arelle/webserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
682
686
  arelle/webserver/bottle.py,sha256=P-JECd9MCTNcxCnKoDUvGcoi03ezYVOgoWgv2_uH-6M,362
683
- arelle_release-2.37.56.dist-info/licenses/LICENSE.md,sha256=Q0tn6q0VUbr-NM8916513NCIG8MNzo24Ev-sxMUBRZc,3959
684
- arelle_release-2.37.56.dist-info/METADATA,sha256=Wtmg0dACPtcIDHq93LetjVlxqOerxZ1VGQdsa1ZgUds,9327
685
- arelle_release-2.37.56.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
686
- arelle_release-2.37.56.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
687
- arelle_release-2.37.56.dist-info/top_level.txt,sha256=fwU7SYawL4_r-sUMRg7r1nYVGjFMSDvRWx8VGAXEw7w,7
688
- arelle_release-2.37.56.dist-info/RECORD,,
687
+ arelle_release-2.37.57.dist-info/licenses/LICENSE.md,sha256=Q0tn6q0VUbr-NM8916513NCIG8MNzo24Ev-sxMUBRZc,3959
688
+ arelle_release-2.37.57.dist-info/METADATA,sha256=2zuOGGta03sWvoswvqhJf2mZeNCt1kZ5M90_ZBKN6g8,9327
689
+ arelle_release-2.37.57.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
690
+ arelle_release-2.37.57.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
691
+ arelle_release-2.37.57.dist-info/top_level.txt,sha256=fwU7SYawL4_r-sUMRg7r1nYVGjFMSDvRWx8VGAXEw7w,7
692
+ arelle_release-2.37.57.dist-info/RECORD,,