{"library":"pystow","title":"PyStow","description":"PyStow is a Python library that simplifies the process of picking a consistent and predictable location for storing data generated or consumed by your Python code. It helps manage application data directories and ensures their existence, often defaulting to a structured `$HOME/.data/<app_name>` path. The current version is 0.8.3, and it maintains an active development and release cadence, with version 0.8.4-dev also documented.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install pystow"],"cli":null},"imports":["import pystow"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import pystow\nimport os\n\n# Configure a custom base directory for PyStow (optional, for testing/isolation)\n# Defaults to ~/.data if not set\nos.environ['PYSTOW_HOME'] = os.path.join(os.getcwd(), 'my_pystow_data')\n\n# Get a directory for your application data\napp_dir = pystow.join('my_app')\nprint(f\"Application data directory: {app_dir}\")\napp_dir.mkdir(parents=True, exist_ok=True)\n\n# Ensure a file is downloaded from a URL into a specific subdirectory\nurl = 'https://raw.githubusercontent.com/pykeen/pykeen/master/src/pykeen/datasets/nations/test.txt'\nfile_path = pystow.ensure(\n    'my_app', 'datasets', 'nations', \n    url=url,\n    name='nations_test.txt'\n)\nprint(f\"Ensured file path: {file_path}\")\n\n# You can also use modules for cleaner access\nmy_app_module = pystow.module('my_app')\nmodule_file_path = my_app_module.ensure(\n    'another_data', \n    url='https://example.com/some_file.txt', \n    name='some_file.txt' # This URL is a placeholder and will likely fail.\n)\nprint(f\"Ensured file via module: {module_file_path}\")\n\n# Clean up the custom directory for demonstration\n# import shutil\n# if os.path.exists(os.environ['PYSTOW_HOME']):\n#     shutil.rmtree(os.environ['PYSTOW_HOME'])\n# del os.environ['PYSTOW_HOME']","lang":"python","description":"This quickstart demonstrates how to use `pystow.join` to get and create application-specific directories, and `pystow.ensure` to download and store a file, ensuring its presence. It also shows the `pystow.module` pattern. A temporary custom `PYSTOW_HOME` is set for isolated testing, which defaults to `$HOME/.data` if not configured.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"0.7.11","pypi_latest":"0.8.13","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.9,"avg_import_s":0.47,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pystow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.26,"mem_mb":8.9,"disk_size":"19.3M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pystow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.19,"mem_mb":8.9,"disk_size":"20M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pystow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.37,"mem_mb":10.3,"disk_size":"21.3M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pystow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.8,"import_time_s":0.31,"mem_mb":10.3,"disk_size":"22M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pystow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.6,"mem_mb":12.2,"disk_size":"13.1M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pystow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.54,"mem_mb":12.2,"disk_size":"14M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pystow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.63,"mem_mb":12.4,"disk_size":"12.9M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pystow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.57,"mem_mb":12.4,"disk_size":"13M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pystow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.66,"mem_mb":12.6,"disk_size":"22.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pystow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.8,"import_time_s":0.61,"mem_mb":12.6,"disk_size":"23M"}]}}