arelle-release 2.37.51__py3-none-any.whl → 2.37.53__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.

arelle/XbrlConst.py CHANGED
@@ -22,6 +22,7 @@ _tuple = tuple # type: ignore[type-arg]
22
22
  xsd = "http://www.w3.org/2001/XMLSchema"
23
23
  qnXsdComplexType = qname("{http://www.w3.org/2001/XMLSchema}xsd:complexType")
24
24
  qnXsdDocumentation = qname("{http://www.w3.org/2001/XMLSchema}xsd:documentation")
25
+ qnXsdInclude = qname("{http://www.w3.org/2001/XMLSchema}xsd:include")
25
26
  qnXsdImport = qname("{http://www.w3.org/2001/XMLSchema}xsd:import")
26
27
  qnXsdSchema = qname("{http://www.w3.org/2001/XMLSchema}xsd:schema")
27
28
  qnXsdAppinfo = qname("{http://www.w3.org/2001/XMLSchema}xsd:appinfo")
arelle/_version.py CHANGED
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '2.37.51'
32
- __version_tuple__ = version_tuple = (2, 37, 51)
31
+ __version__ = version = '2.37.53'
32
+ __version_tuple__ = version_tuple = (2, 37, 53)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -260,7 +260,7 @@ class PluginValidationDataExtension(PluginData):
260
260
  return controllerPluginData.matchManifestInstance(modelXbrl.ixdsDocUrls)
261
261
 
262
262
  def hasValidNonNilFact(self, modelXbrl: ModelXbrl, qname: QName) -> bool:
263
- return any(fact is not None for fact in self.iterValidNonNilFacts(modelXbrl, qname))
263
+ return any(True for fact in self.iterValidNonNilFacts(modelXbrl, qname))
264
264
 
265
265
  def isStandardTaxonomyUrl(self, uri: str, modelXbrl: ModelXbrl) -> bool:
266
266
  return modelXbrl.modelManager.disclosureSystem.hrefValidForDisclosureSystem(uri)
@@ -3,10 +3,8 @@ See COPYRIGHT.md for copyright information.
3
3
  """
4
4
  from __future__ import annotations
5
5
 
6
- import os
7
6
  from collections import defaultdict
8
7
  from datetime import timedelta
9
- from lxml.etree import XML, DTD
10
8
  from typing import Any, cast, Iterable
11
9
 
12
10
  import regex
@@ -615,3 +613,31 @@ def rule_gfm_1_2_30(
615
613
  msg=_("A context must not contain the xbrli:forever element."),
616
614
  modelObject=errors
617
615
  )
616
+
617
+
618
+ @validation(
619
+ hook=ValidationHook.XBRL_FINALLY,
620
+ disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
621
+ )
622
+ def rule_gfm_1_3_1(
623
+ pluginData: PluginValidationDataExtension,
624
+ val: ValidateXbrl,
625
+ *args: Any,
626
+ **kwargs: Any,
627
+ ) -> Iterable[Validation]:
628
+ """
629
+ EDINET.EC5700W: [GFM 1.3.1] The submitter-specific taxonomy contains include elements.
630
+ """
631
+ warnings = []
632
+ for modelDocument in val.modelXbrl.urlDocs.values():
633
+ if pluginData.isStandardTaxonomyUrl(modelDocument.uri, val.modelXbrl):
634
+ continue
635
+ rootElt = modelDocument.xmlRootElement
636
+ for elt in rootElt.iterdescendants(XbrlConst.qnXsdInclude.clarkNotation):
637
+ warnings.append(elt)
638
+ if len(warnings) > 0:
639
+ yield Validation.warning(
640
+ codes='EDINET.EC5700W.GFM.1.3.1',
641
+ msg=_("The submitter-specific taxonomy contains include elements."),
642
+ modelObject=warnings
643
+ )
@@ -8,6 +8,8 @@ from collections import defaultdict
8
8
  from pathlib import Path
9
9
  from typing import Any, Iterable, TYPE_CHECKING
10
10
 
11
+ import regex
12
+
11
13
  from arelle.Cntlr import Cntlr
12
14
  from arelle.FileSource import FileSource
13
15
  from arelle.ValidateXbrl import ValidateXbrl
@@ -15,6 +17,7 @@ from arelle.typing import TypeGetText
15
17
  from arelle.utils.PluginHooks import ValidationHook
16
18
  from arelle.utils.validate.Decorator import validation
17
19
  from arelle.utils.validate.Validation import Validation
20
+ from .. import Constants
18
21
  from ..DisclosureSystems import (DISCLOSURE_SYSTEM_EDINET)
19
22
  from ..ReportFolderType import ReportFolderType, HTML_EXTENSIONS, IMAGE_EXTENSIONS
20
23
  from ..PluginValidationDataExtension import PluginValidationDataExtension
@@ -48,6 +51,48 @@ FILE_COUNT_LIMITS = {
48
51
 
49
52
  FILENAME_STEM_PATTERN = re.compile(r'[a-zA-Z0-9_-]*')
50
53
 
54
+ PATTERN_CODE = r'(?P<code>[A-Za-z\d]*)'
55
+ PATTERN_CONSOLIDATED = r'(?P<consolidated>c|n)'
56
+ PATTERN_COUNT = r'(?P<count>\d{2})'
57
+ PATTERN_DATE1 = r'(?P<year1>\d{4})-(?P<month1>\d{2})-(?P<day1>\d{2})'
58
+ PATTERN_DATE2 = r'(?P<year2>\d{4})-(?P<month2>\d{2})-(?P<day2>\d{2})'
59
+ PATTERN_FORM = r'(?P<form>\d{6})'
60
+ PATTERN_LINKBASE = r'(?P<linkbase>lab|lab-en|gla|pre|def|cal)'
61
+ PATTERN_MAIN = r'(?P<main>\d{7})'
62
+ PATTERN_NAME = r'(?P<name>[a-z]{6})'
63
+ PATTERN_ORDINANCE = r'(?P<ordinance>[a-z]*)'
64
+ PATTERN_PERIOD = r'(?P<period>c|p)' # TODO: Have only seen "c" in sample/public filings, assuming "p" for previous.
65
+ PATTERN_REPORT = r'(?P<report>[a-z]*)'
66
+ PATTERN_REPORT_SERIAL = r'(?P<report_serial>\d{3})'
67
+ PATTERN_SERIAL = r'(?P<serial>\d{3})'
68
+
69
+ PATTERN_AUDIT_REPORT_PREFIX = rf'jpaud-{PATTERN_REPORT}-{PATTERN_PERIOD}{PATTERN_CONSOLIDATED}'
70
+ PATTERN_REPORT_PREFIX = rf'jp{PATTERN_ORDINANCE}{PATTERN_FORM}-{PATTERN_REPORT}'
71
+ PATTERN_SUFFIX = rf'{PATTERN_REPORT_SERIAL}_{PATTERN_CODE}-{PATTERN_SERIAL}_{PATTERN_DATE1}_{PATTERN_COUNT}_{PATTERN_DATE2}'
72
+
73
+ PATTERNS = list(regex.compile(p) for p in (
74
+ # Schema file for report
75
+ # Example: jpcrp050300-esr-001_X99007-000_2025-04-10_01_2025-04-10.xsd
76
+ rf'{PATTERN_REPORT_PREFIX}-{PATTERN_SUFFIX}.xsd',
77
+ # Schema file for audit report
78
+ # Example: jpaud-aar-cn-001_X99001-000_2025-03-31_01_2025-06-28.xsd
79
+ rf'{PATTERN_AUDIT_REPORT_PREFIX}-{PATTERN_SUFFIX}.xsd',
80
+ # Linkbase file for report
81
+ # Example: jpcrp020000-srs-001_X99001-000_2025-03-31_01_2025-11-20_cal.xml
82
+ rf'{PATTERN_REPORT_PREFIX}-{PATTERN_SUFFIX}_{PATTERN_LINKBASE}.xml',
83
+ # Linkbase file for audit report
84
+ # Example: jpaud-qrr-cc-001_X99001-000_2025-03-31_01_2025-11-20_pre.xml
85
+ rf'{PATTERN_AUDIT_REPORT_PREFIX}-{PATTERN_SUFFIX}_{PATTERN_LINKBASE}.xml',
86
+ # Cover page file for report
87
+ # Example: 0000000_header_jpcrp020000-srs-001_X99001-000_2025-03-31_01_2025-11-20_ixbrl.htm
88
+ rf'{Constants.COVER_PAGE_FILENAME_PREFIX}{PATTERN_REPORT_PREFIX}-{PATTERN_SUFFIX}_ixbrl.htm',
89
+ # Main file for report
90
+ # Example: 0205020_honbun_jpcrp020000-srs-001_X99001-000_2025-03-31_01_2025-11-20_ixbrl.htm
91
+ rf'{PATTERN_MAIN}_{PATTERN_NAME}_{PATTERN_REPORT_PREFIX}-{PATTERN_SUFFIX}_ixbrl.htm',
92
+ # Main file for audit report
93
+ # Example: jpaud-qrr-cc-001_X99001-000_2025-03-31_01_2025-11-20_pre.xml
94
+ rf'{PATTERN_AUDIT_REPORT_PREFIX}-{PATTERN_SUFFIX}_ixbrl.htm',
95
+ ))
51
96
 
52
97
  @validation(
53
98
  hook=ValidationHook.FILESOURCE,
@@ -488,6 +533,75 @@ def rule_EC0206E(
488
533
  )
489
534
 
490
535
 
536
+ @validation(
537
+ hook=ValidationHook.FILESOURCE,
538
+ disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
539
+ )
540
+ def rule_EC0349E(
541
+ pluginData: ControllerPluginData,
542
+ cntlr: Cntlr,
543
+ fileSource: FileSource,
544
+ *args: Any,
545
+ **kwargs: Any,
546
+ ) -> Iterable[Validation]:
547
+ """
548
+ EDINET.EC0349E: An unexpected directory or file exists in the XBRL directory.
549
+ Only PublicDoc, PrivateDoc, or AuditDoc directories may exist beneath the XBRL directory.
550
+ """
551
+ uploadContent = pluginData.getUploadContents(fileSource)
552
+ xbrlDirectoryPath = Path('XBRL')
553
+ allowedPaths = {p.xbrlDirectory for p in (
554
+ ReportFolderType.AUDIT_DOC,
555
+ ReportFolderType.PRIVATE_DOC,
556
+ ReportFolderType.PUBLIC_DOC,
557
+ )}
558
+ for path, pathInfo in uploadContent.uploadPaths.items():
559
+ if path.parent != xbrlDirectoryPath:
560
+ continue
561
+ if path not in allowedPaths:
562
+ if not any(pattern.fullmatch(path.name) for pattern in PATTERNS):
563
+ yield Validation.error(
564
+ codes='EDINET.EC0349E',
565
+ msg=_("An unexpected directory or file exists in the XBRL directory. "
566
+ "Directory or file name: '%(file)s'."),
567
+ file=path.name,
568
+ )
569
+
570
+
571
+ @validation(
572
+ hook=ValidationHook.FILESOURCE,
573
+ disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
574
+ )
575
+ def rule_EC0352E(
576
+ pluginData: ControllerPluginData,
577
+ cntlr: Cntlr,
578
+ fileSource: FileSource,
579
+ *args: Any,
580
+ **kwargs: Any,
581
+ ) -> Iterable[Validation]:
582
+ """
583
+ EDINET.EC0352E: An XBRL file with an invalid name exists.
584
+ """
585
+ uploadContent = pluginData.getUploadContents(fileSource)
586
+ for path, pathInfo in uploadContent.uploadPaths.items():
587
+ if (
588
+ pathInfo.isDirectory or
589
+ pathInfo.isCorrection or
590
+ pathInfo.isSubdirectory or
591
+ pathInfo.isAttachment or
592
+ pathInfo.reportFolderType is None or
593
+ any(path == t.manifestPath for t in ReportFolderType)
594
+ ):
595
+ continue
596
+ if not any(pattern.fullmatch(path.name) for pattern in PATTERNS):
597
+ yield Validation.error(
598
+ codes='EDINET.EC0352E',
599
+ msg=_("A file with an invalid name exists. "
600
+ "File path: '%(path)s'."),
601
+ path=str(path),
602
+ )
603
+
604
+
491
605
  @validation(
492
606
  hook=ValidationHook.FILESOURCE,
493
607
  disclosureSystems=[DISCLOSURE_SYSTEM_EDINET],
@@ -8,10 +8,10 @@ References:
8
8
  - [HMRC CT Inline XBRL Style Guide](https://www.gov.uk/government/uploads/system/uploads/attachment_data/file/434588/xbrl-style-guide.pdf)
9
9
  """
10
10
  import os
11
- from math import isnan
12
11
  from arelle import ModelDocument, XmlUtil
13
12
  from arelle.ModelValue import qname, dateTime, DATE
14
- from arelle.ValidateXbrlCalcs import inferredDecimals, rangeValue, insignificantDigits
13
+ from arelle.ValidateDuplicateFacts import getDuplicateFactSets
14
+ from arelle.ValidateXbrlCalcs import insignificantDigits
15
15
  from arelle.Version import authorLabel, copyrightLabel
16
16
  from arelle.XbrlConst import xbrli, qnXbrliXbrl
17
17
  import regex as re
@@ -374,62 +374,12 @@ def validateXbrlFinally(val, *args, **kwargs):
374
374
  _("Generic dimension members have no associated name or description item, member names (name or description item): %(memberNames)s"),
375
375
  modelObject=modelXbrl, memberNames=", ".join(sorted(memLocalNamesMissing)))
376
376
 
377
-
378
-
379
- aspectEqualFacts = defaultdict(dict) # dict [(qname,lang)] of dict(cntx,unit) of [fact, fact]
380
- for hashEquivalentFacts in factForConceptContextUnitHash.values():
381
- if len(hashEquivalentFacts) > 1:
382
- for f in hashEquivalentFacts: # check for hash collision by value checks on context and unit
383
- if getattr(f,"xValid", 0) >= 4:
384
- cuDict = aspectEqualFacts[(f.qname,
385
- (f.xmlLang or "").lower() if f.concept.type.isWgnStringFactType else None)]
386
- _matched = False
387
- for (_cntx,_unit),fList in cuDict.items():
388
- if (((_cntx is None and f.context is None) or (f.context is not None and f.context.isEqualTo(_cntx))) and
389
- ((_unit is None and f.unit is None) or (f.unit is not None and f.unit.isEqualTo(_unit)))):
390
- _matched = True
391
- fList.append(f)
392
- break
393
- if not _matched:
394
- cuDict[(f.context,f.unit)] = [f]
395
- decVals = {}
396
- for cuDict in aspectEqualFacts.values(): # dups by qname, lang
397
- for fList in cuDict.values(): # dups by equal-context equal-unit
398
- if len(fList) > 1:
399
- f0 = fList[0]
400
- if f0.concept.isNumeric:
401
- if any(f.isNil for f in fList):
402
- _inConsistent = not all(f.isNil for f in fList)
403
- else: # not all have same decimals
404
- _d = inferredDecimals(f0)
405
- _v = f0.xValue
406
- _inConsistent = isnan(_v) # NaN is incomparable, always makes dups inconsistent
407
- decVals[_d] = _v
408
- aMax, bMin, _inclA, _inclB = rangeValue(_v, _d)
409
- for f in fList[1:]:
410
- _d = inferredDecimals(f)
411
- _v = f.xValue
412
- if isnan(_v):
413
- _inConsistent = True
414
- break
415
- if _d in decVals:
416
- _inConsistent |= _v != decVals[_d]
417
- else:
418
- decVals[_d] = _v
419
- a, b, _inclA, _inclB = rangeValue(_v, _d)
420
- if a > aMax: aMax = a
421
- if b < bMin: bMin = b
422
- if not _inConsistent:
423
- _inConsistent = (bMin < aMax)
424
- decVals.clear()
425
- else:
426
- _inConsistent = any(not f.isVEqualTo(f0) for f in fList[1:])
427
- if _inConsistent:
428
- modelXbrl.error("JFCVC.3314",
429
- "Inconsistent duplicate fact values %(fact)s: %(values)s.",
430
- modelObject=fList, fact=f0.qname, contextID=f0.contextID, values=", ".join(f.value for f in fList))
431
- aspectEqualFacts.clear()
432
- del factForConceptContextUnitHash, aspectEqualFacts
377
+ for duplicateFactSet in getDuplicateFactSets(modelXbrl.facts, includeSingles=False):
378
+ if duplicateFactSet.areAnyInconsistent:
379
+ f0 = duplicateFactSet.facts[0]
380
+ modelXbrl.error("JFCVC.3314",
381
+ "Inconsistent duplicate fact values %(fact)s: %(values)s.",
382
+ modelObject=duplicateFactSet.facts, fact=f0.qname, values=", ".join(f'"{f.value}"' for f in duplicateFactSet))
433
383
 
434
384
  if modelXbrl.modelDocument.type == ModelDocument.Type.INLINEXBRL:
435
385
  rootElt = modelXbrl.modelDocument.xmlRootElement
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arelle-release
3
- Version: 2.37.51
3
+ Version: 2.37.53
4
4
  Summary: An open source XBRL platform.
5
5
  Author-email: "arelle.org" <support@arelle.org>
6
6
  License-Expression: Apache-2.0
@@ -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=_K3__pmzcJKvSt72n4Vybo2qUaKeOGP-HbiiqCoBpqQ,58491
119
+ arelle/XbrlConst.py,sha256=p5GV8x7ZLNVT-lMo9EEtw8CkVICITxJ4GZXXQFmZQEk,58561
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=5ledvoDL_7HieaAt4kjZqd9TGIaAC8kJJgJuFA-vUT4,708
128
+ arelle/_version.py,sha256=o-hS3u4c-OHlibwJ4ipa9wOVJpeWj4nnsUtBZGu9EIY,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
@@ -316,7 +316,7 @@ arelle/plugin/validate/EDINET/Constants.py,sha256=H_OX8hq7nns6TbKPpmDlg1_pNOd7P-
316
316
  arelle/plugin/validate/EDINET/ControllerPluginData.py,sha256=T4m8GFiVg9tNoLcC3HxeegNnKVqAqZdc6kNdxM5Vz1Y,7005
317
317
  arelle/plugin/validate/EDINET/DisclosureSystems.py,sha256=3rKG42Eg-17Xx_KXU_V5yHW6I3LTwQunvf4a44C9k_4,36
318
318
  arelle/plugin/validate/EDINET/ManifestInstance.py,sha256=SkQV-aOsYn3CTgCkH4IXNdM3QKoiz8okwb29ftMtV3Q,6882
319
- arelle/plugin/validate/EDINET/PluginValidationDataExtension.py,sha256=4xGDhwLo_JOJSu16w_CkPCca1SYMu980bb2-r6sbI5s,12459
319
+ arelle/plugin/validate/EDINET/PluginValidationDataExtension.py,sha256=EkUJvkjk96ehgfnnoUxBAv9x9aauntvF9oXFOyr81Yo,12447
320
320
  arelle/plugin/validate/EDINET/ReportFolderType.py,sha256=Q-9a-5tJfhK-cjY8WUB2AT1NI-Nn9cFtARVOIJoLRGU,2979
321
321
  arelle/plugin/validate/EDINET/Statement.py,sha256=0Mw5IB7LMtvUZ-2xKZfxmq67xF_dCgJo3eNLweLFRHU,9350
322
322
  arelle/plugin/validate/EDINET/UploadContents.py,sha256=IKQYl6lXYTfAZKLIDzRRGSRt3FXoL2Eldbx3Dh7T2I4,712
@@ -328,9 +328,9 @@ arelle/plugin/validate/EDINET/rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
328
328
  arelle/plugin/validate/EDINET/rules/contexts.py,sha256=KPoyWfRaURvxoGVcWP64mTMTAKPMSmQSX06RClCLddw,7590
329
329
  arelle/plugin/validate/EDINET/rules/edinet.py,sha256=VYrDZaKbsQuQEvOY5F0Pv4Jzk9YZ4iETOkAFOggrhEY,12632
330
330
  arelle/plugin/validate/EDINET/rules/frta.py,sha256=N0YglHYZuLD2IuwE26viR2ViwUYjneBuMFU9vlrS0aQ,7616
331
- arelle/plugin/validate/EDINET/rules/gfm.py,sha256=vJz8OGbXQb1Lbp5tF6ObCifM3AuPB_PXTjSPU5WXYF4,23484
331
+ arelle/plugin/validate/EDINET/rules/gfm.py,sha256=Elyd0Vqooj_rC0yDWC8NneWCQ_Ckb9IZy1XCn7m1_IE,24389
332
332
  arelle/plugin/validate/EDINET/rules/manifests.py,sha256=MoT9R_a4BzuYdQVbF7RC5wz134Ve68svSdJ3NlpO_AU,4026
333
- arelle/plugin/validate/EDINET/rules/upload.py,sha256=VQKjuDxMAER14Cb0kymoc-xdnAqJ9l1ZaqlQNIEG8gU,26606
333
+ arelle/plugin/validate/EDINET/rules/upload.py,sha256=jfBt-WjUiJqh8QSkaLMxfsz9dP6fT3z63GT-ws514YY,31415
334
334
  arelle/plugin/validate/ESEF/Const.py,sha256=JujF_XV-_TNsxjGbF-8SQS4OOZIcJ8zhCMnr-C1O5Ho,22660
335
335
  arelle/plugin/validate/ESEF/Dimensions.py,sha256=MOJM7vwNPEmV5cu-ZzPrhx3347ZvxgD6643OB2HRnIk,10597
336
336
  arelle/plugin/validate/ESEF/Util.py,sha256=QH3btcGqBpr42M7WSKZLSdNXygZaZLfEiEjlxoG21jE,7950
@@ -367,7 +367,7 @@ arelle/plugin/validate/ROS/resources/config.xml,sha256=HXWume5HlrAqOx5AtiWWqgADb
367
367
  arelle/plugin/validate/ROS/rules/__init__.py,sha256=wW7BUAIb7sRkOxC1Amc_ZKrz03FM-Qh1TyZe6wxYaAU,1567
368
368
  arelle/plugin/validate/ROS/rules/ros.py,sha256=Dk5BkfKQYItImdx5FcFvkMWT5BlJ1r_L7Vn-EsCG85A,19870
369
369
  arelle/plugin/validate/UK/ValidateUK.py,sha256=h7-tnCubHme8Meaif-o55TV2rCfMWuikfpZCcK6NNDs,56447
370
- arelle/plugin/validate/UK/__init__.py,sha256=KE6s_B-EvrHDCtWQz2N_wQwyx_ZbWhYNV2GfQnluxMw,30655
370
+ arelle/plugin/validate/UK/__init__.py,sha256=GT67T_7qpOASzdmgRXFPmLxfPg3Gjubli7luQDK3zck,27462
371
371
  arelle/plugin/validate/UK/config.xml,sha256=mUFhWDfBzGTn7v0ZSmf4HaweQTMJh_4ZcJmD9mzCHrA,1547
372
372
  arelle/plugin/validate/UK/consistencyChecksByName.json,sha256=BgB9YAWzmcsX-_rU74RBkABwEsS75vrMlwBHsYCz2R0,25247
373
373
  arelle/plugin/validate/UK/hmrc-taxonomies.xml,sha256=3lR-wb2sooAddQkVqqRzG_VqLuHq_MQ8kIaXAQs1KVk,9623
@@ -680,9 +680,9 @@ arelle/utils/validate/ValidationUtil.py,sha256=9vmSvShn-EdQy56dfesyV8JjSRVPj7txr
680
680
  arelle/utils/validate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
681
681
  arelle/webserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
682
682
  arelle/webserver/bottle.py,sha256=P-JECd9MCTNcxCnKoDUvGcoi03ezYVOgoWgv2_uH-6M,362
683
- arelle_release-2.37.51.dist-info/licenses/LICENSE.md,sha256=Q0tn6q0VUbr-NM8916513NCIG8MNzo24Ev-sxMUBRZc,3959
684
- arelle_release-2.37.51.dist-info/METADATA,sha256=BZlHz_pXjybuHYVwQ-qzY5TmwxoyNVIRhJTjBez0H6w,9327
685
- arelle_release-2.37.51.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
686
- arelle_release-2.37.51.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
687
- arelle_release-2.37.51.dist-info/top_level.txt,sha256=fwU7SYawL4_r-sUMRg7r1nYVGjFMSDvRWx8VGAXEw7w,7
688
- arelle_release-2.37.51.dist-info/RECORD,,
683
+ arelle_release-2.37.53.dist-info/licenses/LICENSE.md,sha256=Q0tn6q0VUbr-NM8916513NCIG8MNzo24Ev-sxMUBRZc,3959
684
+ arelle_release-2.37.53.dist-info/METADATA,sha256=ZpAHR7Eu9CAE3Xrm8GKcsHWisD0SNeVUhTUfiQ8CVx4,9327
685
+ arelle_release-2.37.53.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
686
+ arelle_release-2.37.53.dist-info/entry_points.txt,sha256=Uj5niwfwVsx3vaQ3fYj8hrZ1xpfCJyTUA09tYKWbzpo,111
687
+ arelle_release-2.37.53.dist-info/top_level.txt,sha256=fwU7SYawL4_r-sUMRg7r1nYVGjFMSDvRWx8VGAXEw7w,7
688
+ arelle_release-2.37.53.dist-info/RECORD,,