/usr/bin/ufl-analyse is in python-ufl 2016.2.0-2.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | #!/usr/bin/python
__authors__ = "Martin Sandve Alnes"
__date__ = "2008-05-09"
# Modified by Anders Logg, 2009.
# Last changed: 2015-01-05
import io
import sys, optparse
from ufl.log import warning
from ufl.algorithms import load_ufl_file, validate_form, ufl2latex, tree_format
# Get commandline options
usage = """Analyse a .ufl file to find errors.
Optionally write information about
the forms for further inspection.
Examples:
ufl-analyse --quiet=0 --write=1 mass.ufl"""
def opt(long, short, t, default, help):
return optparse.make_option("--%s" % long, "-%s" % short, action="store", type=t, dest=long, default=default, help=help)
option_list = [ \
opt("quiet", "q", "int", 1, "Do not print form information to screen."),
opt("write", "w", "int", 0, "Write form information to file."),
]
parser = optparse.OptionParser(usage=usage, option_list=option_list)
args = sys.argv[1:]
(options, args) = parser.parse_args(args=args)
if not args:
print("Missing files!")
print()
parser.print_usage()
sys.exit(-1)
filenames = args
write_file = options.write
quiet = options.quiet
# Handle each form file separately
for filename in filenames:
# Check file suffix
if not filename.endswith(".ufl"):
warning("Filename '%s' does not end with .ufl." % filename)
# Load form file, which triggers many consistency
# checks while the form is being built
print("Loading form file '%s'" % filename)
try:
# TODO: Forms that fail will usually fail inside this,
# which doesn't produce any log...
# Perhaps we should pass a log file to load_forms?
data = load_ufl_file(filename)
forms = data.forms
except:
print("Failed to load form file.")
raise
outputfilename = filename + ".log"
if write_file:
outputfile = io.open(outputfilename, "w", encoding="utf-8")
def write(*items):
text = " ".join(str(s) for s in items)
if write_file:
outputfile.write(text)
outputfile.flush()
if not quiet:
print(text)
# Analyse each form separately
for form in forms:
# Validate form
validate_form(form)
# Compute form metadata and extract preprocessed form
form_data = form.compute_form_data()
preprocessed_form = form_data.preprocessed_form
# Print form data
write("\nForm data:\n", str(form_data))
# Print different representations
write("\n\nForm pretty-print (original):\n", str(form))
write("\n\nForm pretty-print (preprocessed):\n", str(preprocessed_form))
write("\n\nForm representation (original):\n", repr(form))
write("\n\nForm representation (preprocessed):\n", repr(preprocessed_form))
write("\n\nForm tree formatting (original):\n", tree_format(form))
write("\n\nForm tree formatting (preprocessed):\n", tree_format(preprocessed_form))
write("\n\nForm LaTeX code (preprocessed):\n", ufl2latex(form))
if write_file:
outputfile.close()
|