3131
3232class TaxonomyProducer :
3333 taxonomy_document : TaxonomyDocument
34+ taxonomy_root_folder : File
35+ taxonomy_folder : File
36+ meta_inf_files : List [File ]
3437
3538 def __init__ (cls , document : TaxonomyDocument ):
3639 cls .taxonomy_document = document
37-
38- def create_files (cls , reports_folder : File = None , package_extension : str = "zip" ) -> File :
39- # create base folder structure
40- root_folder = File (name = f'{ "_" .join (cls .taxonomy_document .metadata .name .split ())} ' , zip_extension = package_extension )
41- if reports_folder :
42- root_folder .contained_files .append (reports_folder )
40+ cls .taxonomy_root_folder = None
41+ cls .taxonomy_folder = None
4342 # create taxonomy files
44- taxonomy_folder = root_folder
4543 for part in cls .taxonomy_document .rewrite_path :
46- parent_folder = taxonomy_folder
47- taxonomy_folder = File (name = part )
48- parent_folder .contained_files .append (taxonomy_folder )
49- cls ._create_taxonomy_files (taxonomy_folder )
50- # create meta information
51- meta_inf_folder = File (name = "META-INF" , contained_files = cls ._create_meta_inf_files (package_extension if reports_folder else None ))
52- root_folder .contained_files .append (meta_inf_folder )
53- return root_folder
44+ if not cls .taxonomy_root_folder :
45+ cls .taxonomy_root_folder = File (name = part )
46+ cls .taxonomy_folder = cls .taxonomy_root_folder
47+ else :
48+ parent_folder = cls .taxonomy_folder
49+ cls .taxonomy_folder = File (name = part )
50+ parent_folder .contained_files .append (cls .taxonomy_folder )
51+ cls ._create_taxonomy_files ()
52+ cls .meta_inf_files = []
53+ cls ._create_meta_inf_files ()
54+
55+ def get_taxonomy (cls ) -> File :
56+ return cls .taxonomy_root_folder
57+
58+ def get_meta_inf_files (cls ) -> List [File ]:
59+ return cls .meta_inf_files
5460
55- def _create_meta_inf_files (cls , package_extension : str = None ) -> List [File ]:
61+ def _create_meta_inf_files (cls ) -> List [File ]:
5662 # create catalog file
5763 catalog_namespace : str = "urn:oasis:names:tc:entity:xmlns:xml:catalog"
5864 catalog_namespace_map = {
@@ -160,7 +166,7 @@ def _create_meta_inf_files(cls, package_extension: str = None) -> List[File]:
160166 )
161167 ep_lang_element .text = entrypoint .language
162168
163- return_files : List [ File ] = [
169+ cls . meta_inf_files = [
164170 File (
165171 name = "catalog.xml" ,
166172 content = xml_to_string (
@@ -176,52 +182,36 @@ def _create_meta_inf_files(cls, package_extension: str = None) -> List[File]:
176182 )
177183 ]
178184
179- if package_extension :
180- supported_package_extensions : Dict [str , str ] = {
181- "zip" : "https://xbrl.org/report-package/2023" ,
182- "xbri" : "https://xbrl.org/report-package/2023/xbri" ,
183- "xbr" : "https://xbrl.org/report-package/2023/xbr"
184- }
185- return_files .append (File (
186- name = "reportPackage.json" ,
187- content = json .dumps ({
188- "documentInfo" : {
189- "documentType" : supported_package_extensions .get (package_extension )
190- }
191- })
192- ))
193- return return_files
194-
195- def _create_taxonomy_files (cls , taxonomy_folder : File ) -> None :
185+ def _create_taxonomy_files (cls ) -> None :
196186 logger .debug (f"Creating taxonomy schema for namespace { cls .taxonomy_document .namespace } " )
197- cls ._create_schema (taxonomy_folder )
187+ cls ._create_schema (cls . taxonomy_folder )
198188 presentation_linkbase_filename : str = f"{ cls .taxonomy_document .files_base_name } _pre.xml"
199189 logger .debug (f"Creating presentation linkbase { presentation_linkbase_filename } " )
200190 cls ._create_linkbase (
201191 presentation_linkbase_filename ,
202- taxonomy_folder ,
192+ cls . taxonomy_folder ,
203193 cls ._create_presentation ()
204194 )
205195 calculation_linkbase_filename : str = f"{ cls .taxonomy_document .files_base_name } _cal.xml"
206196 logger .debug (f"Creating calculation linkbase { calculation_linkbase_filename } " )
207197 cls ._create_linkbase (
208198 calculation_linkbase_filename ,
209- taxonomy_folder ,
199+ cls . taxonomy_folder ,
210200 cls ._create_calculation ()
211201 )
212202 definition_linkbase_filename : str = f"{ cls .taxonomy_document .files_base_name } _def.xml"
213203 logger .debug (f"Creating defintion linkbase { definition_linkbase_filename } " )
214204 cls ._create_linkbase (
215205 definition_linkbase_filename ,
216- taxonomy_folder ,
206+ cls . taxonomy_folder ,
217207 cls ._create_definition ()
218208 )
219209 for labels_lang in cls .taxonomy_document .labels :
220210 label_linkbase_filename : str = f"{ cls .taxonomy_document .files_base_name } _lab-{ labels_lang } .xml"
221211 logger .debug (f"Creating label linkbase language { labels_lang } { label_linkbase_filename } " )
222212 cls ._create_linkbase (
223213 label_linkbase_filename ,
224- taxonomy_folder ,
214+ cls . taxonomy_folder ,
225215 cls ._create_label_linkbase (labels_lang )
226216 )
227217
0 commit comments