@@ -141,33 +141,40 @@ def _get_module_functional_requirements(self) -> list[str]:
141141 return module_functional_requirements
142142
143143 def get_functionalities (self ) -> dict [str , list [str ]]:
144- module_metadata = self .load_module_metadata ()
145- if module_metadata is None :
146- raise ModuleDoesNotExistError (f"Module { self .module_name } does not exist or has no metadata." )
147-
148- if REQUIRED_MODULES_FUNCTIONALITIES in module_metadata :
149- functionalities = module_metadata [REQUIRED_MODULES_FUNCTIONALITIES ]
150- else :
151- functionalities = {}
144+ functionalities = {}
145+ for required_module in self .required_modules :
146+ functionalities .update (required_module .get_functionalities ())
152147
153- functionalities [self .module_name ] = module_metadata [ MODULE_FUNCTIONALITIES ]
148+ functionalities [self .module_name ] = self . _get_module_functional_requirements ()
154149
155150 return functionalities
156151
157- def save_module_metadata (
158- self ,
159- ):
152+ def module_metadata_path (self , for_git_repo : bool = False ) -> str :
153+ if for_git_repo :
154+ return os .path .join (CODEPLAIN_METADATA_FOLDER , MODULE_METADATA_FILENAME )
155+
156+ return os .path .join (self .get_codeplain_folder (), MODULE_METADATA_FILENAME )
157+
158+ def get_hashes (self ) -> dict [str , str ]:
159+ hashes = {"source_hash" : self .get_module_source_hash ()}
160+ if len (self .required_modules ) > 0 :
161+ hashes ["required_modules_code_hash" ] = self .required_modules [- 1 ].get_module_code_hash ()
162+ return hashes
163+
164+ def save_module_metadata (self , only_hashes : bool = False ):
160165 codeplain_folder = self .get_codeplain_folder ()
161166 os .makedirs (codeplain_folder , exist_ok = True )
162167
163- module_metadata = {
164- "source_hash" : self .get_module_source_hash (),
165- MODULE_FUNCTIONALITIES : self ._get_module_functional_requirements (),
166- }
168+ module_metadata = self .get_hashes ()
169+
170+ metadata_path = self .module_metadata_path ()
167171
168- if self .required_modules is not None and len (self .required_modules ) > 0 :
169- previous_module = self .required_modules [- 1 ]
170- module_metadata ["required_modules_code_hash" ] = previous_module .get_module_code_hash ()
172+ if only_hashes :
173+ with open (metadata_path , "w" , encoding = "utf-8" ) as f :
174+ json .dump (module_metadata , f , indent = 4 )
175+ return
176+
177+ module_metadata [MODULE_FUNCTIONALITIES ] = (self ._get_module_functional_requirements (),)
171178
172179 required_modules_functionalities = {}
173180 for required_module in self .required_modules :
@@ -176,7 +183,6 @@ def save_module_metadata(
176183 if required_modules_functionalities :
177184 module_metadata [REQUIRED_MODULES_FUNCTIONALITIES ] = required_modules_functionalities
178185
179- metadata_path = os .path .join (codeplain_folder , MODULE_METADATA_FILENAME )
180186 with open (metadata_path , "w" , encoding = "utf-8" ) as f :
181187 json .dump (module_metadata , f , indent = 4 )
182188
0 commit comments