Dependency usage tracking for citations¶

sage.misc.citation.cython_profile_enabled()

Return whether Cython profiling is enabled.

EXAMPLES:

sage: from sage.misc.citation import cython_profile_enabled
sage: cython_profile_enabled()  # random
False
sage: type(cython_profile_enabled()) is bool
True

sage.misc.citation.get_systems(cmd)

Return a list of the systems used in running the command cmd.

Note that the results can sometimes include systems that did not actually contribute to the computation. Due to caching, it could miss some dependencies as well.

INPUT:

• cmd – a string to run

Warning

In order to properly support Cython code, this requires that Sage was compiled with the environment variable SAGE_PROFILE=yes. If this was not the case, a warning will be given when calling this function.

EXAMPLES:

sage: from sage.misc.citation import get_systems
sage: get_systems('print("hello")')  # random (may print warning)
[]
sage: integrate(x^2, x)  # Priming coercion model
1/3*x^3
sage: get_systems('integrate(x^2, x)')
['Maxima', 'ginac']
sage: R.<x,y,z> = QQ[]
sage: I = R.ideal(x^2+y^2, z^2+y)
sage: get_systems('I.primary_decomposition()')
['Singular']


Here we get a spurious MPFR because some coercions need to be initialized. The second time it is gone:

sage: a = var('a')
sage: get_systems('((a+1)^2).expand()')
['MPFR', 'ginac']
sage: get_systems('((a+1)^2).expand()')
['ginac']