Context Managers for LibGAP

This module implements a context manager for global variables. This is useful since the behavior of GAP is sometimes controlled by global variables, which you might want to switch to a different value for a computation. Here is an example how you are suppose to use it from your code. First, let us set a dummy global variable for our example:

sage: libgap.set_global('FooBar', 123)

Then, if you want to switch the value momentarily you can write:

sage: with libgap.global_context('FooBar', 'test'):
....:     print(libgap.get_global('FooBar'))
test

Afterward, the global variable reverts to the previous value:

sage: print(libgap.get_global('FooBar'))
123

The value is reset even if exceptions occur:

sage: with libgap.global_context('FooBar', 'test'):
....:     print(libgap.get_global('FooBar'))
....:     raise ValueError(libgap.get_global('FooBar'))
Traceback (most recent call last):
...
ValueError: test
sage: print(libgap.get_global('FooBar'))
123
class sage.libs.gap.context_managers.GlobalVariableContext(variable, value)

Context manager for GAP global variables.

It is recommended that you use the sage.libs.gap.libgap.Gap.global_context() method and not construct objects of this class manually.

INPUT:

  • variable – string. The variable name.
  • value – anything that defines a GAP object.

EXAMPLES:

sage: libgap.set_global('FooBar', 1)
sage: with libgap.global_context('FooBar', 2):
....:     print(libgap.get_global('FooBar'))
2
sage: libgap.get_global('FooBar')
1