[pythran]

# optimization chain used by Pythran
# It's a list of space separated optimization to apply in the given order
optimizations = pythran.optimizations.InlineBuiltins
                pythran.optimizations.PreInliningForwardSubstitution
                pythran.optimizations.Inlining
                pythran.optimizations.RemoveDeadFunctions
                pythran.optimizations.ForwardSubstitution
                pythran.optimizations.DeadCodeElimination
                pythran.optimizations.ConstantFolding
                pythran.optimizations.PartialConstantFolding
                pythran.optimizations.SimplifyExcept
                pythran.optimizations.IterTransformation
                pythran.optimizations.LoopFullUnrolling
                pythran.optimizations.ModIndex
                pythran.transformations.FalsePolymorphism
                pythran.optimizations.PatternTransform
                pythran.optimizations.Square
                pythran.optimizations.CopyTo
                pythran.optimizations.FastGExpr
                pythran.optimizations.RangeLoopUnfolding
                pythran.optimizations.RangeBasedSimplify
                pythran.optimizations.ListToTuple
                pythran.optimizations.TupleToShape

complex_hook = False

fold_max_steps = 1000
ignore_fold_error = False

[typing]

# maximum number of inter-procedural combiner per user function
# increasing this value inreases typing accuracy
# but slows down compilation time, to the point of making g++ crash
max_interprocedural_combiner = 2

# maximum number of intra-procedural combiner per user function
# increasing this value inreases typing accuracy
# but slows down compilation time, to the point of making g++ crash
max_combiner = 8

# above this number of overloads, pythran specifications are considered invalid
# as it generates ultra-large binaries
max_export_overloads = 128

# to the notable exceptions of tuple, pythran sequences are homogeneous. It is
# however possible to store functions objects in a sequence and a variant
# functor is created. This value bounds the number of different types within
# a sequence
max_heterogeneous_sequence_size = 16

[backend]

# set to true if you want intermediate C++ code to be annotated with a reference
# to the original python code
annotate = false

# set to 'lineno' if you want to generate line number instead of python extract
annotation_kind = 'comment'

# make generated module compatible with freethreading, see
# https://py-free-threading.github.io/
freethreading_compatible = true

# Use limited API, see https://docs.python.org/3/c-api/stable.html#limited-c-api.
# Set to "3.7" or more to enable.
limited_api = false
