Package org.python.core

## Class PySystemState

- java.lang.Object
- - org.python.core.PyObject
  - - org.python.core.PySystemState

- All Implemented Interfaces:
    `java.io.Closeable`, `java.io.Serializable`, `java.lang.AutoCloseable`, `ClassDictInit`, `Traverseproc`

      public class PySystemState
      extends PyObject
      implements java.lang.AutoCloseable, ClassDictInit, java.io.Closeable, Traverseproc

  The "sys" module.
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `PySystemState.PySystemStateCloser` |

    - ### Nested classes/interfaces inherited from class org.python.core.PyObject

      `PyObject.ConversionException`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `PyObject` | `__dict__` |
    `PyObject` | `__displayhook__` |
    `PyObject` | `__excepthook__` |
    `PyObject` | `__name__` |
    `PyObject` | `__stderr__` |
    `PyObject` | `__stdin__` |
    `PyObject` | `__stdout__` |
    `static PyTuple` | `_mercurial` |
    `PyList` | `argv` | The arguments passed to this program on the command line.
    `static PyTuple` | `builtin_module_names` |
    `PyObject` | `builtins` |
    `static PyString` | `byteorder` |
    `static PyObject` | `copyright` | The copyright notice for this release.
    `boolean` | `dont_write_bytecode` | Whether bytecode should be written to disk on import.
    `static PyObject` | `exec_prefix` | A string giving the site-specific directory prefix where the platform-dependent Python files are installed; by default, this is the same as `exec_prefix`.
    `PyObject` | `executable` |
    `static java.lang.Class` | `flags` |
    `static PyObject` | `float_info` |
    `static PyString` | `float_repr_style` |
    `static int` | `hexversion` |
    `static java.lang.String` | `JYTHON_DEV_JAR` |
    `static java.lang.String` | `JYTHON_JAR` |
    `PyObject` | `last_traceback` |
    `PyObject` | `last_type` |
    `PyObject` | `last_value` |
    `static PyObject` | `long_info` |
    `static int` | `maxint` |
    `static int` | `maxsize` |
    `static int` | `maxunicode` |
    `PyList` | `meta_path` |
    `static int` | `minint` |
    `PyObject` | `modules` |
    `java.util.Map<java.lang.String,​PyModule>` | `modules_reloading` |
    `static PackageManager` | `packageManager` |
    `PyList` | `path` |
    `PyList` | `path_hooks` |
    `PyObject` | `path_importer_cache` |
    `PyObject` | `platform` |
    `static PyObject` | `prefix` | A string giving the site-specific directory prefix where the platform independent Python files are installed; by default, this is based on the property `python.home` or the location of the Jython JAR.
    `PyObject` | `ps1` |
    `PyObject` | `ps2` |
    `static boolean` | `py3kwarning` |
    `static java.util.Properties` | `registry` |
    `PyObject` | `stderr` |
    `PyObject` | `stdin` |
    `PyObject` | `stdout` |
    `static PyTuple` | `subversion` |
    `static PyString` | `version` |
    `static PyVersionInfo` | `version_info` |
    `PyList` | `warnoptions` |

    - ### Fields inherited from class org.python.core.PyObject

      `gcMonitorGlobal, TYPE`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `PySystemState()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `__delattr__​(java.lang.String name)` | A variant of the __delattr__ method which accepts a String as the key.
    `PyObject` | `__findattr_ex__​(java.lang.String name)` | Attribute lookup hook.
    `void` | `__rawdir__​(PyDictionary accum)` |
    `void` | `__setattr__​(java.lang.String name, PyObject value)` | A variant of the __setattr__ method which accepts a String as the key.
    `static PyDictionary` | `_current_frames()` |
    `static PyFrame` | `_getframe()` |
    `static PyFrame` | `_getframe​(int depth)` |
    `static void` | `add_classdir​(java.lang.String directoryPath)` | Add a classpath directory to the list of places that are searched for java packages.
    `static void` | `add_extdir​(java.lang.String directoryPath)` | Add a .jar and .zip directory to the list of places that are searched for java .jar and .zip files.
    `static void` | `add_extdir​(java.lang.String directoryPath, boolean cache)` | Add a .jar and .zip directory to the list of places that are searched for java .jar and .zip files.
    `static PyJavaPackage` | `add_package​(java.lang.String n)` |
    `static PyJavaPackage` | `add_package​(java.lang.String n, java.lang.String contents)` |
    `void` | `callExitFunc()` |
    `static void` | `classDictInit​(PyObject dict)` |
    `void` | `cleanup()` |
    `void` | `close()` |
    `static PySystemState` | `doInitialize​(java.util.Properties preProperties, java.util.Properties postProperties, java.lang.String[] argv, java.lang.ClassLoader classLoader, ExtensiblePyObjectAdapter adapter)` |
    `static void` | `exc_clear()` |
    `static PyTuple` | `exc_info()` |
    `static void` | `exit()` | Exit a Python program with the status 0.
    `static void` | `exit​(PyObject status)` | Exit a Python program with the given status.
    `static java.util.Properties` | `getBaseProperties()` |
    `static java.lang.String` | `getBuiltin​(java.lang.String name)` |
    `PyObject` | `getBuiltins()` |
    `PyInteger` | `getcheckinterval()` |
    `java.lang.ClassLoader` | `getClassLoader()` |
    `codecs.CodecState` | `getCodecState()` |
    `java.lang.String` | `getCurrentWorkingDir()` | Return a string representing the current working directory.
    `static PyObject` | `getDefaultBuiltins()` |
    `PyString` | `getdefaultencoding()` |
    `java.io.File` | `getFile​(java.lang.String path)` | Resolve a path, returning a `File`, taking the current working directory into account.
    `PyObject` | `getfilesystemencoding()` |
    `java.util.concurrent.locks.ReentrantLock` | `getImportLock()` |
    `static java.lang.String` | `getNativePlatform()` | Emulates CPython's way to name sys.platform.
    `java.lang.String` | `getPath​(java.lang.String path)` | Resolve a path.
    `static java.lang.String` | `getPathLazy​(java.lang.String path)` | Resolve a path.
    `PyObject` | `getPlatform()` |
    `PyObject` | `getprofile()` |
    `int` | `getrecursionlimit()` |
    `java.lang.ClassLoader` | `getSyspathJavaLoader()` |
    `static java.lang.String` | `getSystemVersionString()` | Attempt to find the OS version.
    `PyObject` | `gettrace()` |
    `PyObject` | `getWarnoptions()` |
    `org.python.core.WinVersion` | `getwindowsversion()` |
    `static void` | `initialize()` |
    `static void` | `initialize​(java.util.Properties preProperties, java.util.Properties postProperties)` |
    `static void` | `initialize​(java.util.Properties preProperties, java.util.Properties postProperties, java.lang.String[] argv)` |
    `static void` | `initialize​(java.util.Properties preProperties, java.util.Properties postProperties, java.lang.String[] argv, java.lang.ClassLoader classLoader)` |
    `static void` | `initialize​(java.util.Properties preProperties, java.util.Properties postProperties, java.lang.String[] argv, java.lang.ClassLoader classLoader, ExtensiblePyObjectAdapter adapter)` |
    `static boolean` | `isPackageCacheEnabled()` |
    `boolean` | `refersDirectlyTo​(PyObject ob)` | Optional operation.
    `void` | `registerCloser​(java.util.concurrent.Callable<java.lang.Void> resourceCloser)` |
    `void` | `setBuiltins​(PyObject value)` |
    `void` | `setcheckinterval​(int interval)` |
    `void` | `setClassLoader​(java.lang.ClassLoader classLoader)` |
    `void` | `setCurrentWorkingDir​(java.lang.String path)` | Change the current working directory to the specified path.
    `void` | `setdefaultencoding​(java.lang.String encoding)` |
    `void` | `setPlatform​(PyObject value)` |
    `void` | `setprofile​(PyObject profilefunc)` |
    `void` | `setrecursionlimit​(int recursionlimit)` |
    `void` | `settrace​(PyObject tracefunc)` |
    `void` | `setWarnoptions​(PyObject value)` |
    `void` | `shadow()` | Deprecated.
    `java.lang.String` | `toString()` |
    `int` | `traverse​(Visitproc visit, java.lang.Object arg)` | Traverses all directly contained `PyObject`s.
    `boolean` | `unregisterCloser​(java.util.concurrent.Callable<java.lang.Void> resourceCloser)` |

    - ### Methods inherited from class org.python.core.PyObject

      `__abs__, __add__, __and__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __cmp__, __coerce__, __coerce_ex__, __complex__, __contains__, __delattr__, __delete__, __delitem__, __delitem__, __delslice__, __delslice__, __dir__, __div__, __divmod__, __ensure_finalizer__, __eq__, __findattr__, __findattr__, __finditem__, __finditem__, __finditem__, __float__, __floordiv__, __format__, __ge__, __get__, __getattr__, __getattr__, __getitem__, __getitem__, __getnewargs__, __getslice__, __getslice__, __gt__, __hash__, __hex__, __iadd__, __iand__, __idiv__, __idivmod__, __ifloordiv__, __ilshift__, __imod__, __imul__, __index__, __int__, __invert__, __ior__, __ipow__, __irshift__, __isub__, __iter__, __iternext__, __itruediv__, __ixor__, __le__, __len__, __long__, __lshift__, __lt__, __mod__, __mul__, __ne__, __neg__, __nonzero__, __not__, __oct__, __or__, __pos__, __pow__, __pow__, __radd__, __rand__, __rdiv__, __rdivmod__, __reduce__, __reduce_ex__, __reduce_ex__, __repr__, __rfloordiv__, __rlshift__, __rmod__, __rmul__, __ror__, __rpow__, __rrshift__, __rshift__, __rsub__, __rtruediv__, __rxor__, __set__, __setattr__, __setitem__, __setitem__, __setitem__, __setslice__, __setslice__, __str__, __sub__, __tojava__, __truediv__, __trunc__, __unicode__, __xor__, _add, _and, _callextra, _cmp, _div, _divmod, _doget, _doget, _doset, _eq, _floordiv, _ge, _gt, _iadd, _iand, _idiv, _idivmod, _ifloordiv, _ilshift, _imod, _imul, _in, _ior, _ipow, _irshift, _is, _isnot, _isub, _itruediv, _ixor, _jcall, _jcallexc, _jthrow, _le, _lshift, _lt, _mod, _mul, _ne, _notin, _or, _pow, _rshift, _sub, _truediv, _xor, asDouble, asIndex, asIndex, asInt, asInt, asIterable, asLong, asLong, asName, asName, asString, asString, asStringOrNull, asStringOrNull, bit_length, conjugate, delDict, delType, dispatch__init__, equals, fastGetClass, fastGetDict, getDict, getType, hashCode, implementsDescrDelete, implementsDescrGet, implementsDescrSet, invoke, invoke, invoke, invoke, invoke, invoke, isCallable, isDataDescr, isIndex, isInteger, isMappingType, isNumberType, isSequenceType, noAttributeError, object___subclasshook__, readonlyAttributeError, setDict, setType`

    - ### Methods inherited from class java.lang.Object

      `getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### JYTHON_JAR

          public static final java.lang.String JYTHON_JAR

      See Also:
        Constant Field Values

    - #### JYTHON_DEV_JAR

          public static final java.lang.String JYTHON_DEV_JAR

      See Also:
        Constant Field Values

    - #### version

          public static final PyString version

    - #### subversion

          public static final PyTuple subversion

    - #### hexversion

          public static final int hexversion

    - #### version_info

          public static final PyVersionInfo version_info

    - #### maxunicode

          public static final int maxunicode

      See Also:
        Constant Field Values

    - #### maxsize

          public static final int maxsize

      See Also:
        Constant Field Values

    - #### float_repr_style

          public static final PyString float_repr_style

    - #### py3kwarning

          public static boolean py3kwarning

    - #### flags

          public static final java.lang.Class flags

    - #### _mercurial

          public static final PyTuple _mercurial

    - #### copyright

          public static final PyObject copyright

      The copyright notice for this release.

    - #### builtin_module_names

          public static PyTuple builtin_module_names

    - #### packageManager

          public static PackageManager packageManager

    - #### registry

          public static java.util.Properties registry

    - #### prefix

          public static PyObject prefix

      A string giving the site-specific directory prefix where the platform independent Python files are installed; by default, this is based on the property `python.home` or the location of the Jython JAR. The main collection of Python library modules is installed in the directory `prefix/Lib`. This object should contain bytes in the file system encoding for consistency with use in the standard library (see `sysconfig.py`).

    - #### exec_prefix

          public static PyObject exec_prefix

      A string giving the site-specific directory prefix where the platform-dependent Python files are installed; by default, this is the same as `exec_prefix`. This object should contain bytes in the file system encoding for consistency with use in the standard library (see `sysconfig.py`).

    - #### byteorder

          public static final PyString byteorder

    - #### maxint

          public static final int maxint

      See Also:
        Constant Field Values

    - #### minint

          public static final int minint

      See Also:
        Constant Field Values

    - #### argv

          public PyList argv

      The arguments passed to this program on the command line.

    - #### modules

          public PyObject modules

    - #### modules_reloading

          public java.util.Map<java.lang.String,​PyModule> modules_reloading

    - #### path

          public PyList path

    - #### warnoptions

          public PyList warnoptions

    - #### builtins

          public PyObject builtins

    - #### platform

          public PyObject platform

    - #### meta_path

          public PyList meta_path

    - #### path_hooks

          public PyList path_hooks

    - #### path_importer_cache

          public PyObject path_importer_cache

    - #### ps1

          public PyObject ps1

    - #### ps2

          public PyObject ps2

    - #### executable

          public PyObject executable

    - #### stdout

          public PyObject stdout

    - #### stderr

          public PyObject stderr

    - #### stdin

          public PyObject stdin

    - #### __stdout__

          public PyObject __stdout__

    - #### __stderr__

          public PyObject __stderr__

    - #### __stdin__

          public PyObject __stdin__

    - #### __displayhook__

          public PyObject __displayhook__

    - #### __excepthook__

          public PyObject __excepthook__

    - #### last_value

          public PyObject last_value

    - #### last_type

          public PyObject last_type

    - #### last_traceback

          public PyObject last_traceback

    - #### __name__

          public PyObject __name__

    - #### __dict__

          public PyObject __dict__

    - #### dont_write_bytecode

          public boolean dont_write_bytecode

      Whether bytecode should be written to disk on import.

    - #### float_info

          public static final PyObject float_info

    - #### long_info

          public static final PyObject long_info

  - ### Constructor Detail

    - #### PySystemState

          public PySystemState()

  - ### Method Detail

    - #### classDictInit

          public static void classDictInit​(PyObject dict)

    - #### shadow

          @Deprecated
          public void shadow()

      Deprecated.

    - #### getDefaultBuiltins

          public static PyObject getDefaultBuiltins()

    - #### getBuiltins

          public PyObject getBuiltins()

    - #### setBuiltins

          public void setBuiltins​(PyObject value)

    - #### getWarnoptions

          public PyObject getWarnoptions()

    - #### setWarnoptions

          public void setWarnoptions​(PyObject value)

    - #### getPlatform

          public PyObject getPlatform()

    - #### setPlatform

          public void setPlatform​(PyObject value)

    - #### getwindowsversion

          public org.python.core.WinVersion getwindowsversion()

    - #### getCodecState

          public codecs.CodecState getCodecState()

    - #### getImportLock

          public java.util.concurrent.locks.ReentrantLock getImportLock()

    - #### getSyspathJavaLoader

          public java.lang.ClassLoader getSyspathJavaLoader()

    - #### __findattr_ex__

          public PyObject __findattr_ex__​(java.lang.String name)

      Description copied from class: `PyObject`
      Attribute lookup hook. If the attribute is not found, null may be returned or a Py.AttributeError can be thrown, whatever is more correct, efficient and/or convenient for the implementing class. Client code should use `PyObject.__getattr__(String)` or `PyObject.__findattr__(String)`. Both methods have a clear policy for failed lookups.
      Overrides:
        `__findattr_ex__` in class `PyObject`
      Returns:
        The looked up value. May return null if the attribute is not found

    - #### __setattr__

          public void __setattr__​(java.lang.String name,
                                  PyObject value)

      Description copied from class: `PyObject`
      A variant of the __setattr__ method which accepts a String as the key. This String must be interned.
      Overrides:
        `__setattr__` in class `PyObject`
      Parameters:
        `name` - the name whose value will be set - must be an interned string .
        `value` - the value to set this name to
      See Also:
        `PyObject.__setattr__(PyString, PyObject)`

    - #### __delattr__

          public void __delattr__​(java.lang.String name)

      Description copied from class: `PyObject`
      A variant of the __delattr__ method which accepts a String as the key. This String must be interned. By default, this will call `__delattr__(PyString name)` with the appropriate args. The only reason to override this method is for performance.
      Overrides:
        `__delattr__` in class `PyObject`
      Parameters:
        `name` - the name which will be removed - must be an interned string .
      See Also:
        `PyObject.__delattr__(PyString)`

    - #### __rawdir__

          public void __rawdir__​(PyDictionary accum)

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `PyObject`

    - #### getrecursionlimit

          public int getrecursionlimit()

    - #### setrecursionlimit

          public void setrecursionlimit​(int recursionlimit)

    - #### gettrace

          public PyObject gettrace()

    - #### settrace

          public void settrace​(PyObject tracefunc)

    - #### getprofile

          public PyObject getprofile()

    - #### setprofile

          public void setprofile​(PyObject profilefunc)

    - #### getdefaultencoding

          public PyString getdefaultencoding()

    - #### setdefaultencoding

          public void setdefaultencoding​(java.lang.String encoding)

    - #### getfilesystemencoding

          public PyObject getfilesystemencoding()

    - #### getcheckinterval

          public PyInteger getcheckinterval()

    - #### setcheckinterval

          public void setcheckinterval​(int interval)

    - #### setCurrentWorkingDir

          public void setCurrentWorkingDir​(java.lang.String path)

      Change the current working directory to the specified path. path is assumed to be absolute and canonical (via os.path.realpath).
      Parameters:
        `path` - a path String

    - #### getCurrentWorkingDir

          public java.lang.String getCurrentWorkingDir()

      Return a string representing the current working directory.
      Returns:
        a path String

    - #### getPath

          public java.lang.String getPath​(java.lang.String path)

      Resolve a path. Returns the full path taking the current working directory into account.
      Parameters:
        `path` - a path String
      Returns:
        a resolved path String

    - #### getPathLazy

          public static java.lang.String getPathLazy​(java.lang.String path)

      Resolve a path. Returns the full path taking the current working directory into account. Like getPath but called statically. The current PySystemState is only consulted for the current working directory when it's necessary (when the path is relative).
      Parameters:
        `path` - a path String
      Returns:
        a resolved path String

    - #### getFile

          public java.io.File getFile​(java.lang.String path)

      Resolve a path, returning a `File`, taking the current working directory into account.
      Parameters:
        `path` - a path `String`
      Returns:
        a resolved `File`

    - #### callExitFunc

          public void callExitFunc()
                            throws PyIgnoreMethodTag

      Throws:
        `PyIgnoreMethodTag`

    - #### getClassLoader

          public java.lang.ClassLoader getClassLoader()

    - #### setClassLoader

          public void setClassLoader​(java.lang.ClassLoader classLoader)

    - #### getNativePlatform

          public static java.lang.String getNativePlatform()

      Emulates CPython's way to name sys.platform. Works according to this table:

      Platform names
      System | Value
      --- | ---
      Linux (2.x and 3.x) | linux2
      Windows | win32
      Windows/Cygwin | cygwin
      Mac OS X | darwin
      OS/2 | os2
      OS/2 EMX | os2emx
      RiscOS | riscos
      AtheOS | atheos

    - #### getBaseProperties

          public static java.util.Properties getBaseProperties()

    - #### initialize

          public static void initialize()

    - #### initialize

          public static void initialize​(java.util.Properties preProperties,
                                        java.util.Properties postProperties)

    - #### initialize

          public static void initialize​(java.util.Properties preProperties,
                                        java.util.Properties postProperties,
                                        java.lang.String[] argv)

    - #### initialize

          public static void initialize​(java.util.Properties preProperties,
                                        java.util.Properties postProperties,
                                        java.lang.String[] argv,
                                        java.lang.ClassLoader classLoader)

    - #### initialize

          public static void initialize​(java.util.Properties preProperties,
                                        java.util.Properties postProperties,
                                        java.lang.String[] argv,
                                        java.lang.ClassLoader classLoader,
                                        ExtensiblePyObjectAdapter adapter)

    - #### doInitialize

          public static PySystemState doInitialize​(java.util.Properties preProperties,
                                                   java.util.Properties postProperties,
                                                   java.lang.String[] argv,
                                                   java.lang.ClassLoader classLoader,
                                                   ExtensiblePyObjectAdapter adapter)

    - #### isPackageCacheEnabled

          public static boolean isPackageCacheEnabled()

    - #### getBuiltin

          public static java.lang.String getBuiltin​(java.lang.String name)

    - #### add_package

          public static PyJavaPackage add_package​(java.lang.String n)

    - #### add_package

          public static PyJavaPackage add_package​(java.lang.String n,
                                                  java.lang.String contents)

    - #### add_classdir

          public static void add_classdir​(java.lang.String directoryPath)

      Add a classpath directory to the list of places that are searched for java packages.

      Note. Classes found in directory and sub-directory are not made available to jython by this call. It only makes the java package found in the directory available. This call is mostly useful if jython is embedded in an application that deals with its own class loaders. A servlet container is a very good example. Calling `add_classdir("<context>/WEB-INF/classes")` makes the java packages in WEB-INF classes available to jython import. However the actual class loading is completely handled by the servlet container's context classloader.

    - #### add_extdir

          public static void add_extdir​(java.lang.String directoryPath)

      Add a .jar and .zip directory to the list of places that are searched for java .jar and .zip files. The .jar and .zip files found will not be cached.

      Note. Classes in .jar and .zip files found in the directory are not made available to jython by this call. See the note for add_classdir(dir) for more details.

      Parameters:
        `directoryPath` - The name of a directory.
      See Also:
        `add_classdir(java.lang.String)`

    - #### add_extdir

          public static void add_extdir​(java.lang.String directoryPath,
                                        boolean cache)

      Add a .jar and .zip directory to the list of places that are searched for java .jar and .zip files.

      Note. Classes in .jar and .zip files found in the directory are not made available to jython by this call. See the note for add_classdir(dir) for more details.

      Parameters:
        `directoryPath` - The name of a directory.
        `cache` - Controls if the packages in the zip and jar file should be cached.
      See Also:
        `add_classdir(java.lang.String)`

    - #### exit

          public static void exit​(PyObject status)

      Exit a Python program with the given status.
      Parameters:
        `status` - the value to exit with
      Throws:
        `PyException` - `SystemExit` always throws this exception. When caught at top level the program will exit.

    - #### exit

          public static void exit()

      Exit a Python program with the status 0.

    - #### exc_info

          public static PyTuple exc_info()

    - #### exc_clear

          public static void exc_clear()

    - #### _getframe

          public static PyFrame _getframe()

    - #### _getframe

          public static PyFrame _getframe​(int depth)

    - #### _current_frames

          public static PyDictionary _current_frames()

    - #### registerCloser

          public void registerCloser​(java.util.concurrent.Callable<java.lang.Void> resourceCloser)

    - #### unregisterCloser

          public boolean unregisterCloser​(java.util.concurrent.Callable<java.lang.Void> resourceCloser)

    - #### cleanup

          public void cleanup()

    - #### close

          public void close()

      Specified by:
        `close` in interface `java.lang.AutoCloseable`
      Specified by:
        `close` in interface `java.io.Closeable`

    - #### getSystemVersionString

          public static java.lang.String getSystemVersionString()

      Attempt to find the OS version. The mechanism on Windows is to extract it from the result of `cmd.exe /C ver`, and otherwise (assumed Unix-like OS) to use `uname -v</code>`.

    - #### traverse

          public int traverse​(Visitproc visit,
                              java.lang.Object arg)

      Description copied from interface: `Traverseproc`
      Traverses all directly contained `PyObject`s. Like in CPython, `arg` must be passed unmodified to `visit` as its second parameter. If `Visitproc.visit(PyObject, Object)` returns nonzero, this return value must be returned immediately by traverse. `Visitproc.visit(PyObject, Object)` must not be called with a `null` PyObject-argument.
      Specified by:
        `traverse` in interface `Traverseproc`

    - #### refersDirectlyTo

          public boolean refersDirectlyTo​(PyObject ob)

      Description copied from interface: `Traverseproc`
      Optional operation. Should only be implemented if it is more efficient than calling `Traverseproc.traverse(Visitproc, Object)` with a visitproc that just watches out for `ob`. Must return `false` if `ob` is `null`.
      Specified by:
        `refersDirectlyTo` in interface `Traverseproc`