MCPcopy Index your code
hub / github.com/tox-dev/platformdirs

github.com/tox-dev/platformdirs @4.10.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 4.10.0 ↗ · + Follow
437 symbols 946 edges 18 files 287 documented · 66% 132 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

platformdirs

PyPI version Python versions CI Downloads

A Python package for determining platform-specific directories (e.g. user data, config, cache, logs). Handles the differences between macOS, Windows, Linux/Unix, and Android so you don't have to.

Quick start

from platformdirs import PlatformDirs

dirs = PlatformDirs("MyApp", "MyCompany")
dirs.user_data_dir  # ~/.local/share/MyApp (Linux)
dirs.user_config_dir  # ~/.config/MyApp (Linux)
dirs.user_cache_dir  # ~/.cache/MyApp (Linux)
dirs.user_state_dir  # ~/.local/state/MyApp (Linux)
dirs.user_log_dir  # ~/.local/state/MyApp/log (Linux)
dirs.user_documents_dir  # ~/Documents
dirs.user_downloads_dir  # ~/Downloads
dirs.user_runtime_dir  # /run/user/<uid>/MyApp (Linux)

For Path objects instead of strings:

from platformdirs import PlatformDirs

dirs = PlatformDirs("MyApp", "MyCompany")
dirs.user_data_path  # pathlib.Path('~/.local/share/MyApp')
dirs.user_config_path  # pathlib.Path('~/.config/MyApp')

Convenience functions for quick access:

from platformdirs import user_data_dir, user_config_path

user_data_dir("MyApp", "MyCompany")  # returns str
user_config_path("MyApp", "MyCompany")  # returns pathlib.Path

Directory types

Application directories — scoped to your app name and version:

  • Data: Persistent application data (user_data_dir, site_data_dir)
  • Config: Configuration files and settings (user_config_dir, site_config_dir)
  • Preference: User preferences, distinct from config on macOS (user_preference_dir)
  • Cache: Cached data that can be regenerated (user_cache_dir, site_cache_dir)
  • State: Non-essential runtime state like window positions (user_state_dir, site_state_dir)
  • Logs: Log files (user_log_dir, site_log_dir)
  • Runtime: Runtime files like sockets and PIDs (user_runtime_dir, site_runtime_dir)

App dirs have both user_* (per-user, writable) and site_* (system-wide, read-only) variants where applicable.

User media directories — standard user-facing folders, not scoped to app name:

  • Documents (user_documents_dir), Downloads (user_downloads_dir)
  • Pictures (user_pictures_dir), Videos (user_videos_dir), Music (user_music_dir)
  • Desktop (user_desktop_dir), Projects (user_projects_dir)
  • Public share (user_publicshare_dir), Templates (user_templates_dir)
  • Fonts (user_fonts_dir) — user-writable font installation directory
  • Executable (user_bin_dir, site_bin_dir), Applications (user_applications_dir, site_applications_dir)

Documentation

Full documentation is available at platformdirs.readthedocs.io:

Contributions are welcome! See CONTRIBUTING.md for details.

Core symbols most depended-on inside this repo

_append_app_name_and_version
called by 33
src/platformdirs/api.py
get_win_folder
called by 21
src/platformdirs/windows.py
_android_folder
called by 12
src/platformdirs/android.py
_get_user_media_dir
called by 9
src/platformdirs/unix.py
iter_data_dirs
called by 7
src/platformdirs/unix.py
_optionally_create_directory
called by 7
src/platformdirs/api.py
iter_config_dirs
called by 6
src/platformdirs/unix.py
_first_item_as_path_if_multipath
called by 6
src/platformdirs/api.py

Shape

Method 228
Function 184
Class 13
Route 12

Languages

Python100%

Modules by API surface

src/platformdirs/api.py74 symbols
src/platformdirs/__init__.py55 symbols
tests/test_unix.py49 symbols
src/platformdirs/unix.py47 symbols
src/platformdirs/macos.py37 symbols
src/platformdirs/windows.py36 symbols
src/platformdirs/android.py34 symbols
tests/test_windows.py27 symbols
src/platformdirs/_xdg.py24 symbols
tests/test_macos.py17 symbols
tests/test_api.py14 symbols
tasks/changelog.py7 symbols

For agents

$ claude mcp add platformdirs \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page