FePy r6 + 1 line of code runs PyFit
Following up this trail again --
IPCE-r6 doesn't run PyFit out of the box, but it gets a lot closer than the mainline does:
Traceback (most recent call last): File C:\PyFIT-0.8a1\fit\FitServer.py, line 7, in Initialize File , line 0, in __import__##4
File C:\PyFIT-0.8a1\fit\fitnesse\FitServerImplementation.py, line 49, in Initialize File , line 0, in __import__##4 File C:\PyFIT-0.8a1\fit\fit\Fixture.py, line 21, in Initialize File , line 0, in __import__##4 File C:\PyFIT-0.8a1\fit\fit\TypeAdapter.py, line 34, in Initialize File , line 0, in __import__##4
File C:\PyFIT-0.8a1\fit\fit\taBase.py, line 36, in Initialize File C:\PyFIT-0.8a1\fit\fit\taBase.py, line 82, in TypeAdapter AttributeError: 'module' object has no attribute 'ast'
This line is the first to look for compiler.ast
members to initialise data members. Looking at the IPCE bundle, C:\IPCE-r6\Lib\compiler\ast.py exists and has the values required. It's just that its __init__.py is empty. , so we can patch C:\IPCE-r6\Lib\compiler\__init__.py to be
import ast
and it all works, without having to touch PyFit code at all.
This is the "no change to client code" equivalent to decorating PyFit with a suitably guarded explicit load
import fepy fepy.install_option('ast')
The behaviour is not a bug, but a feature as FePy by default does not load code that is rarely used, so as to speed start-up.
Note
We still don't have parsing of lists, tuples, dictionaries or complex numbers as arguments, since we still don't have the transformer.parse
method to expose as compiler.parse
; the unit tests in TypeAdapterTest.py
report
Ran 117 tests in 2.468s FAILED (failures=3, errors=5)
However real tests that don't have these non-scalar types do run happily on FePy-r6.
1 comment :
This works with IPCE-r7 and PyFIT-0.8a2
Post a Comment