You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm getting the following error when trying to generate the classes:
$ pyecoregen -vv -e C:\\Data\\git\\esdl.next\\model\\esdl.ecore -o gen
2018-10-03 15:20:56,926 INFO [multigen.generator] Generating code to 'gen'.
2018-10-03 15:20:56,926 DEBUG [multigen.generator] <pyecore.ecore.EPackage object at 0x6fffe7aa6d8> --> 'gen/esdl/__init__.py'
2018-10-03 15:20:57,566 DEBUG [multigen.generator] <pyecore.ecore.EPackage object at 0x6fffe7aa6d8> --> 'gen/esdl/esdl.py'
Traceback (most recent call last):
File "/usr/bin/pyecoregen", line 11, in <module>
sys.exit(main())
File "/usr/lib/python3.6/site-packages/pyecoregen/cli.py", line 15, in main
generate_from_cli(sys.argv[1:]) # nocover
File "/usr/lib/python3.6/site-packages/pyecoregen/cli.py", line 62, in generate_from_cli
).generate(model, parsed_args.out_folder)
File "/usr/lib/python3.6/site-packages/pyecoregen/ecore.py", line 330, in generate
super().generate(model, outfolder)
File "/usr/lib/python3.6/site-packages/multigen/generator.py", line 39, in generate
task.run(element, outfolder)
File "/usr/lib/python3.6/site-packages/multigen/generator.py", line 65, in run
self.generate_file(element, filepath)
File "/usr/lib/python3.6/site-packages/multigen/jinja.py", line 43, in generate_file
context = self.create_template_context(element=element)
File "/usr/lib/python3.6/site-packages/pyecoregen/ecore.py", line 118, in create_template_context
imported_classifiers=self.imported_classifiers(element)
File "/usr/lib/python3.6/site-packages/pyecoregen/ecore.py", line 96, in imported_classifiers
imported |= {t for t in attributes_types if t.ePackage not in {p, ecore.eClass, None}}
File "/usr/lib/python3.6/site-packages/pyecoregen/ecore.py", line 96, in <setcomp>
imported |= {t for t in attributes_types if t.ePackage not in {p, ecore.eClass, None}}
File "/usr/lib/python3.6/site-packages/pyecore/ecore.py", line 895, in __getattribute__
self._wrapped = decoded.eClass
AttributeError: 'NoneType' object has no attribute 'eClass'
Any idea what goes wrong here?
The text was updated successfully, but these errors were encountered:
The issue here comes from PyEcore, I forgot to register an Ecore datatype as classifier in the core (the ELong type...). I'm really sorry about that...
There is a way of patching the code and launching the generation by code. I made the test and everything works fine. Here is the code I used:
frompyecore.resourcesimportResourceSetimportpyecore.ecoreasecorefrompyecoregen.ecoreimportEcoreGeneratordefregister_missing_type():
ecore.Core.register_classifier(ecore.ELong) # here is the missing type registrationdefgenerate_code(folder='.', ecore_path=None):
rset=ResourceSet()
uml_root=rset.get_resource(ecore_path).contents[0]
generator=EcoreGenerator()
generator.generate(uml_root, folder)
if__name__=='__main__':
register_missing_type()
generate_code(ecore_path='esdl.ecore', folder='gen') # change the path to your .ecore metamodel here
I will patch this on PyEcore asap. Again, sorry about that... Tell me if this snippet works for you!
I'm trying to use pyecoregen on an ecore model (which can be found here: https://github.com/EnergyTransition/ESDL/blob/master/esdl/model/esdl.ecore). The model is developed in Eclipse Photon.
I'm getting the following error when trying to generate the classes:
Any idea what goes wrong here?
The text was updated successfully, but these errors were encountered: