""" This module contains variables with global |jedi| settings. To change the behavior of |jedi|, change the variables defined in :mod:`jedi.settings`. Plugins should expose an interface so that the user can adjust the configuration. Example usage:: from jedi import settings settings.case_insensitive_completion = True Completion output ~~~~~~~~~~~~~~~~~ .. autodata:: case_insensitive_completion .. autodata:: add_bracket_after_function Filesystem cache ~~~~~~~~~~~~~~~~ .. autodata:: cache_directory Parser ~~~~~~ .. autodata:: fast_parser Dynamic stuff ~~~~~~~~~~~~~ .. autodata:: dynamic_array_additions .. autodata:: dynamic_params .. autodata:: dynamic_params_for_other_modules .. autodata:: auto_import_modules Caching ~~~~~~~ .. autodata:: call_signatures_validity """ import os import platform # ---------------- # Completion Output Settings # ---------------- case_insensitive_completion = True """ Completions are by default case insensitive. """ add_bracket_after_function = False """ Adds an opening bracket after a function for completions. """ # ---------------- # Filesystem Cache # ---------------- if platform.system().lower() == 'windows': _cache_directory = os.path.join( os.getenv('LOCALAPPDATA') or os.path.expanduser('~'), 'Jedi', 'Jedi', ) elif platform.system().lower() == 'darwin': _cache_directory = os.path.join('~', 'Library', 'Caches', 'Jedi') else: _cache_directory = os.path.join(os.getenv('XDG_CACHE_HOME') or '~/.cache', 'jedi') cache_directory = os.path.expanduser(_cache_directory) """ The path where the cache is stored. On Linux, this defaults to ``~/.cache/jedi/``, on OS X to ``~/Library/Caches/Jedi/`` and on Windows to ``%LOCALAPPDATA%\\Jedi\\Jedi\\``. On Linux, if the environment variable ``$XDG_CACHE_HOME`` is set, ``$XDG_CACHE_HOME/jedi`` is used instead of the default one. """ # ---------------- # Parser # ---------------- fast_parser = True """ Uses Parso's diff parser. If it is enabled, this might cause issues, please read the warning on :class:`.Script`. This feature makes it possible to only parse the parts again that have changed, while reusing the rest of the syntax tree. """ _cropped_file_size = int(10e6) # 1 Megabyte """ Jedi gets extremely slow if the file size exceed a few thousand lines. To avoid getting stuck completely Jedi crops the file at some point. One megabyte of typical Python code equals about 20'000 lines of code. """ # ---------------- # Dynamic Stuff # ---------------- dynamic_array_additions = True """ check for `append`, etc. on arrays: [], {}, () as well as list/set calls. """ dynamic_params = True """ A dynamic param completion, finds the callees of the function, which define the params of a function. """ dynamic_params_for_other_modules = True """ Do the same for other modules. """ dynamic_flow_information = True """ Check for `isinstance` and other information to infer a type. """ auto_import_modules = [ 'gi', # This third-party repository (GTK stuff) doesn't really work with jedi ] """ Modules that will not be analyzed but imported, if they contain Python code. This improves autocompletion for libraries that use ``setattr`` or ``globals()`` modifications a lot. """ allow_unsafe_interpreter_executions = True """ Controls whether descriptors are evaluated when using an Interpreter. This is something you might want to control when using Jedi from a Repl (e.g. IPython) Generally this setting allows Jedi to execute __getitem__ and descriptors like `property`. """ # ---------------- # Caching Validity # ---------------- call_signatures_validity = 3.0 """ Finding function calls might be slow (0.1-0.5s). This is not acceptible for normal writing. Therefore cache it for a short time. """