Source code for napari.utils._appdirs

import os
import sys
from functools import partial
from typing import Callable, Optional

import appdirs

_appname = 'napari'
_appauthor = False

# all of these also take an optional "version" argument ... but if we want
# to be able to update napari while using data (e.g. plugins, settings) from
# an earlier version, we should leave off the version.

user_data_dir: Callable[[], str] = partial(
    appdirs.user_data_dir, _appname, _appauthor
)
user_config_dir: Callable[[], str] = partial(
    appdirs.user_config_dir, _appname, _appauthor
)
user_cache_dir: Callable[[], str] = partial(
    appdirs.user_cache_dir, _appname, _appauthor
)
user_state_dir: Callable[[], str] = partial(
    appdirs.user_state_dir, _appname, _appauthor
)
user_log_dir: Callable[[], str] = partial(
    appdirs.user_log_dir, _appname, _appauthor
)


def user_plugin_dir() -> str:
    """Prefix directory for external pip install.

    Suitable for use as argument with `pip install --prefix`.
    On mac and windows, we can install directly into the bundle.  This may be
    used on Linux to pip install packages outside of the bundle with:
    ``pip install --prefix user_plugin_dir()``
    """
    return os.path.join(user_data_dir(), 'plugins')


[docs]def user_site_packages() -> str: """Platform-specific location of site-packages folder in user library""" if os.name == 'nt': return os.path.join(user_plugin_dir(), 'Lib', 'site-packages') python_dir = f'python{sys.version_info.major}.{sys.version_info.minor}' return os.path.join(user_plugin_dir(), 'lib', python_dir, 'site-packages')
def bundled_site_packages() -> Optional[str]: """Platform-specific location of site-packages folder in bundles.""" exe_dir = os.path.dirname(sys.executable) if os.name == 'nt': return os.path.join(exe_dir, "Lib", "site-packages") if sys.platform.startswith('darwin'): python_dir = f'python{sys.version_info.major}.{sys.version_info.minor}' return os.path.join( os.path.dirname(exe_dir), "lib", python_dir, "site-packages" ) # briefcase linux bundles cannot install into the AppImage return None