russellmcdonell / pyDMNrules

An implementation of DMN (Decision Model Notation) in Python
Other
38 stars 9 forks source link

Value not in Glossary using python 3.7 and DMN #11

Open lrnzkck opened 1 year ago

lrnzkck commented 1 year ago

Working with this package and python3.7 prints after reading a dmn file with readXML() and asking for a decision results in an error that the input variables are not part of the glossary. Using python 3.9 everything works fine.

Just printed the value of the glossary attribute ob the dmn object. In python3.7 its just an empty dict: []

In Python3.9 there are all information about the input values: {'age': {'item': 'Data.age', 'concept': 'Data', 'annotations': ['(number)']}, 'random_number': {'item': 'Data.random_number', 'concept': 'Data', 'annotations': ['(number)']}, 'payment_method': {'item': 'Data.payment_method', 'concept': 'Data', 'annotations': ['(string)']}}

We are working with different versions of python because of limitations made by our companies. Is there a flag or a configuration missing in the dmn, so python3.7 can handle the dmn file? Or do you have any other idea? Adding the variables as input values in the DRD does not work.

Thanks a lot!

russellmcdonell commented 1 year ago

Ouch - the "required >= 3.6" comes from the fact that SLY requires 3.6 or greater. But I must have used something in pyDMNrules that isn't 3.6 compatible. I'll have a look into it, and if it's simple I'll fix it, but I can't promise anything. Perhaps this is another lever you could apply in your efforts to get people to upgrade from older versions of Python. I'll up date the 'Requires' if I can't find the issue.

russellmcdonell commented 1 year ago

Do you get the same issue if you create the DMN in Excel? Or are you creating the XML in some DMN tool and hoping for interopreability. I created the XML stuff so that I could run the conformance test - it wasn't mean to be the most robust part of the module. It's ugly, because the DMN XML specification is ugly. I've eyeballed the code and there is nothing there that looks syntactically complex enough to 'version dependant'. However I can't comment on XML and xml.etree which is the module I use to parse XML.