{"library":"securetar","title":"SecureTar","description":"SecureTar is a Python library designed for handling encrypted tarfile backups. It acts as a streaming wrapper around Python's standard `tarfile` module, providing robust encryption capabilities. The library is actively maintained with frequent updates, often introducing significant breaking changes related to its file format and API, notably driven by advancements in cryptographic standards and its use in projects like Home Assistant.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install securetar"],"cli":null},"imports":["from securetar import SecureTarFile","from securetar import atomic_contents_add"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom pathlib import Path\nfrom securetar import SecureTarFile, atomic_contents_add\n\n# Create a dummy file for backup\ndummy_file_path = Path(\"my_data.txt\")\ndummy_file_path.write_text(\"This is some sensitive data.\")\n\n# Define backup path and a password\nbackup_file_path = Path(\"my_secure_backup.tar\")\nbackup_password = os.environ.get('SECURETAR_PASSWORD', 'a_very_secret_password_123')\n\nprint(f\"Creating secure backup to {backup_file_path}...\")\n\n# Create a secure tar archive\nwith SecureTarFile(backup_file_path, 'w', password=backup_password) as tar_file:\n    atomic_contents_add(tar_file, dummy_file_path, arcname=dummy_file_path.name)\n\nprint(f\"Backup created: {backup_file_path}\")\n\n# Verify by attempting to read it\nprint(f\"Attempting to read from {backup_file_path}...\")\ntry:\n    with SecureTarFile(backup_file_path, 'r', password=backup_password) as tar_file:\n        members = tar_file.getnames()\n        print(f\"Contents of backup: {members}\")\n        # Example of extracting a file\n        extracted_path = Path(\"extracted_data.txt\")\n        tar_file.extract(dummy_file_path.name, path=\".\")\n        print(f\"Extracted '{dummy_file_path.name}' to '{extracted_path}'\")\n        extracted_path.unlink() # Clean up\nexcept Exception as e:\n    print(f\"Error reading backup: {e}\")\nfinally:\n    dummy_file_path.unlink() # Clean up original dummy file\n    backup_file_path.unlink() # Clean up backup file","lang":"python","description":"This quickstart demonstrates how to create an encrypted tar archive using `SecureTarFile` and add a file to it using `atomic_contents_add`. It then shows how to open and extract content from the created secure archive, requiring the correct password.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"2024.2.1","pypi_latest":"2026.4.1","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.5,"avg_import_s":0.08,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"securetar","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.06,"mem_mb":3,"disk_size":"34.4M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"securetar","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.4,"import_time_s":0.04,"mem_mb":3,"disk_size":"35M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"securetar","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.12,"mem_mb":4.1,"disk_size":"40.7M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"securetar","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.4,"import_time_s":0.1,"mem_mb":4.1,"disk_size":"41M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"securetar","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.1,"mem_mb":4,"disk_size":"32.5M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"securetar","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.1,"import_time_s":0.11,"mem_mb":4,"disk_size":"33M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"securetar","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.08,"mem_mb":3.8,"disk_size":"32.2M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"securetar","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.2,"import_time_s":0.09,"mem_mb":3.6,"disk_size":"33M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"securetar","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.05,"mem_mb":2.9,"disk_size":"34.6M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"securetar","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.2,"import_time_s":0.04,"mem_mb":2.9,"disk_size":"35M"}]}}