# UnzipAll - Universal Archive Extractor
[](https://badge.fury.io/py/unzipall)
[](https://pypi.org/project/unzipall/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/mricardo/unzipall/actions)
[](https://codecov.io/gh/mricardo/unzipall)
A comprehensive Python library for extracting archive files in **30+ formats** with a simple, unified API. No more juggling multiple extraction libraries or dealing with format-specific quirks.
## โจ Features
- **๐๏ธ Universal Format Support**: ZIP, RAR, 7Z, TAR (all variants), ISO, MSI, and 25+ more formats
- **๐ก๏ธ Security First**: Built-in protection against path traversal attacks (zip bombs)
- **๐ Password Support**: Handle encrypted archives seamlessly
- **โก Simple API**: One function call to extract any supported archive
- **๐ง CLI Tool**: Extract archives from command line with `unzipall` command
- **๐ Cross-Platform**: Works on Windows, macOS, and Linux
- **๐๏ธ Type Safe**: Full type hints for better IDE support and development experience
- **๐ Graceful Degradation**: Optional dependencies - missing libraries don't break functionality
## ๐ Quick Start
### Installation
```bash
pip install unzipall
```
### Basic Usage
```python
import unzipall
# Extract any archive format - it just works!
unzipall.extract('archive.zip')
unzipall.extract('data.tar.gz', 'output_folder')
unzipall.extract('encrypted.7z', password='secret')
# Check if format is supported
if unzipall.is_supported('mystery_file.xyz'):
unzipall.extract('mystery_file.xyz')
# List all supported formats
formats = unzipall.list_supported_formats()
print(f"Supports {len(formats)} formats!")
```
### Command Line Usage
```bash
# Extract to current directory
unzipall archive.zip
# Extract to specific directory
unzipall archive.tar.gz /path/to/output
# Extract password-protected archive
unzipall -p mypassword encrypted.7z
# List supported formats
unzipall --list-formats
# Verbose output
unzipall -v archive.rar output_dir
```
## ๐ Supported Formats
| Category | Formats | Status |
|----------|---------|--------|
| **ZIP Family** | `.zip`, `.jar`, `.war`, `.ear`, `.apk`, `.epub`, `.cbz` | โ
Built-in |
| **RAR Family** | `.rar`, `.cbr` | โ
Full Support |
| **7-Zip** | `.7z`, `.cb7` | โ
Full Support |
| **TAR Archives** | `.tar`, `.tar.gz`, `.tgz`, `.tar.bz2`, `.tbz2`, `.tar.xz`, `.txz`, `.tar.z`, `.tar.lzma` | โ
Built-in |
| **Compression** | `.gz`, `.bz2`, `.xz`, `.lzma`, `.z` | โ
Built-in |
| **Other Archives** | `.arj`, `.cab`, `.chm`, `.cpio`, `.deb`, `.rpm`, `.lzh`, `.lha` | โ
Via patool |
| **Disk Images** | `.iso`, `.vhd`, `.udf` | โ
Full Support |
| **Microsoft** | `.msi`, `.exe` (self-extracting), `.wim` | โ
Platform-aware |
| **Specialized** | `.xar`, `.zpaq`, `.cso`, `.pkg`, `.cbt` | โ
Via patool |
> **30+ formats supported!** If a format isn't working, it may require additional system tools (see [System Dependencies](#-system-dependencies)).
## ๐ Advanced Usage
### Programmatic API
```python
from unzipall import ArchiveExtractor, ArchiveExtractionError
# Create extractor with custom settings
extractor = ArchiveExtractor(verbose=True)
# Check available features
features = extractor.get_available_features()
for feature, available in features.items():
status = "โ
" if available else "โ"
print(f"{status} {feature}")
# Extract with error handling
try:
success = extractor.extract(
archive_path='large_archive.rar',
extract_to='output_directory',
password='optional_password'
)
if success:
print("Extraction completed successfully!")
except ArchiveExtractionError as e:
print(f"Extraction failed: {e}")
```
### Error Handling
UnzipAll provides specific exceptions for different failure scenarios:
```python
from unzipall import (
ArchiveExtractionError, UnsupportedFormatError,
CorruptedArchiveError, PasswordRequiredError,
InvalidPasswordError, ExtractionPermissionError,
DiskSpaceError
)
try:
unzipall.extract('archive.zip')
except UnsupportedFormatError:
print("This archive format is not supported")
except PasswordRequiredError:
password = input("Enter password: ")
unzipall.extract('archive.zip', password=password)
except CorruptedArchiveError:
print("Archive file is corrupted")
except DiskSpaceError:
print("Not enough disk space")
except ArchiveExtractionError as e:
print(f"Extraction failed: {e}")
```
### Security Features
UnzipAll automatically protects against common archive-based attacks:
```python
# Path traversal protection (zip bombs)
# Malicious archives with paths like "../../etc/passwd" are safely handled
unzipall.extract('potentially_malicious.zip', 'safe_output_dir')
# Files are extracted only within the target directory
# Dangerous paths are logged and skipped
```
## ๐ง System Dependencies
While UnzipAll works out of the box for common formats (ZIP, TAR, GZIP, etc.), some formats require additional system tools:
### Windows
```bash
# Install via Windows Package Manager
winget install 7zip.7zip
winget install RARLab.WinRAR
# Or install via Chocolatey
choco install 7zip winrar
```
### macOS
```bash
# Using Homebrew
brew install p7zip unrar
# For additional formats
brew install cabextract unshield
```
### Linux (Ubuntu/Debian)
```bash
sudo apt update
sudo apt install p7zip-full unrar-free
# For additional formats
sudo apt install cabextract unshield cpio
```
### Linux (RHEL/CentOS/Fedora)
```bash
sudo dnf install p7zip p7zip-plugins unrar
# For additional formats
sudo dnf install cabextract unshield cpio
```
### Docker Usage
```dockerfile
FROM python:3.11-slim
# Install system dependencies
RUN apt-get update && apt-get install -y \
p7zip-full \
unrar-free \
cabextract \
&& rm -rf /var/lib/apt/lists/*
# Install unzipall
RUN pip install unzipall
# Your application code
COPY . /app
WORKDIR /app
```
## ๐ Performance
UnzipAll is designed for reliability and format support over raw speed. Benchmarks on typical archives:
- **ZIP files**: ~80 extractions/second
- **TAR.GZ files**: ~60 extractions/second
- **7Z files**: ~40 extractions/second
- **RAR files**: ~35 extractions/second
Performance varies based on archive size, compression ratio, and available system resources.
## ๐งช Development & Testing
```bash
# Clone the repository
git clone https://github.com/mricardo/unzipall.git
cd unzipall
# Install in development mode
pip install -e ".[dev]"
# Run tests
pytest
# Run tests with coverage
pytest --cov=src/unzipall --cov-report=html
# Format code
black src/ tests/
# Type checking
mypy src/
# Lint code
flake8 src/ tests/
```
### Running Specific Tests
```bash
# Test basic functionality
pytest tests/test_smoke.py -v
# Test specific archive format
pytest tests/test_core.py::test_extract_valid_zip -v
# Performance benchmarks
pytest tests/test_performance.py --benchmark-only
# Skip slow tests
pytest -m "not slow"
```
## ๐ API Reference
### Main Functions
#### `extract(archive_path, extract_to=None, password=None, verbose=False)`
Extract an archive to the specified directory.
**Parameters:**
- `archive_path` (str|Path): Path to the archive file
- `extract_to` (str|Path, optional): Output directory (defaults to archive stem name)
- `password` (str, optional): Password for encrypted archives
- `verbose` (bool): Enable detailed logging
**Returns:** `bool` - True if successful
**Example:**
```python
# Extract to default location (archive stem name)
unzipall.extract('myfiles.zip') # Creates ./myfiles/
# Extract to specific directory
unzipall.extract('myfiles.zip', 'custom_output')
# Extract encrypted archive
unzipall.extract('secret.7z', password='mypassword')
```
#### `is_supported(file_path)`
Check if a file format is supported.
**Parameters:**
- `file_path` (str|Path): Path to file to check
**Returns:** `bool` - True if format is supported
**Example:**
```python
if unzipall.is_supported('data.xyz'):
print("This format is supported!")
else:
print("Unsupported format")
```
#### `list_supported_formats()`
Get list of all supported file extensions.
**Returns:** `List[str]` - Sorted list of supported extensions
**Example:**
```python
formats = unzipall.list_supported_formats()
print(f"Supported: {', '.join(formats)}")
```
### ArchiveExtractor Class
For advanced usage with custom configuration:
```python
from unzipall import ArchiveExtractor
extractor = ArchiveExtractor(verbose=True)
# Check what features are available
features = extractor.get_available_features()
# Extract with custom settings
success = extractor.extract('archive.zip', 'output_dir')
```
### Exception Hierarchy
```
ArchiveExtractionError (base)
โโโ UnsupportedFormatError
โโโ CorruptedArchiveError
โโโ PasswordRequiredError
โโโ InvalidPasswordError
โโโ ExtractionPermissionError
โโโ DiskSpaceError
```
## ๐ค Contributing
Contributions are welcome! Here's how to get started:
1. **Fork the repository** on GitHub
2. **Create a feature branch**: `git checkout -b feature/amazing-feature`
3. **Install development dependencies**: `pip install -e ".[dev]"`
4. **Make your changes** and add tests
5. **Run the test suite**: `pytest`
6. **Commit your changes**: `git commit -m "Add amazing feature"`
7. **Push to the branch**: `git push origin feature/amazing-feature`
8. **Open a Pull Request**
### Development Guidelines
- Write tests for new features
- Follow PEP 8 style guidelines (use `black` for formatting)
- Add type hints for new functions
- Update documentation for API changes
- Ensure all tests pass before submitting
## ๐ License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## ๐ Acknowledgments
- Built on top of excellent libraries: [`py7zr`](https://github.com/miurahr/py7zr), [`rarfile`](https://github.com/markokr/rarfile), [`patool`](https://github.com/wummel/patool), [`libarchive-c`](https://github.com/Changaco/python-libarchive-c), and others
- Inspired by the need for a simple, unified archive extraction interface
- Thanks to all contributors and users who help improve this library
## ๐ Related Projects
- **[patool](https://github.com/wummel/patool)** - Command-line archive tool
- **[py7zr](https://github.com/miurahr/py7zr)** - Pure Python 7-zip library
- **[rarfile](https://github.com/markokr/rarfile)** - RAR archive reader
- **[zipfile](https://docs.python.org/3/library/zipfile.html)** - Python standard library ZIP support
## ๐ Support
- **Documentation**: Check this README and docstrings
- **Issues**: [GitHub Issues](https://github.com/mricardo/unzipall/issues)
- **Discussions**: [GitHub Discussions](https://github.com/mricardo/unzipall/discussions)
- **Email**: ricardo.lee.cm@gmail.com
---
**Star this repo if you find it useful! โญ**
Made with โค๏ธ by [mricardo](https://github.com/mricardo)
Raw data
{
"_id": null,
"home_page": null,
"name": "unzipall",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "mricardo <ricardo.lee.cm@gmail.com>",
"keywords": "archive, extract, zip, rar, 7z, tar, compression, unzip, extractor, decompress, unpack, universal",
"author": null,
"author_email": "mricardo <ricardo.lee.cm@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/f1/e7/74d7f663cfa2548f5642b662c5fa7aa97aee94c786ea4c37a4e37a2f3de6/unzipall-1.0.1.tar.gz",
"platform": null,
"description": "# UnzipAll - Universal Archive Extractor\n\n[](https://badge.fury.io/py/unzipall)\n[](https://pypi.org/project/unzipall/)\n[](https://opensource.org/licenses/MIT)\n[](https://github.com/mricardo/unzipall/actions)\n[](https://codecov.io/gh/mricardo/unzipall)\n\nA comprehensive Python library for extracting archive files in **30+ formats** with a simple, unified API. No more juggling multiple extraction libraries or dealing with format-specific quirks.\n\n## \u2728 Features\n\n- **\ud83d\uddc3\ufe0f Universal Format Support**: ZIP, RAR, 7Z, TAR (all variants), ISO, MSI, and 25+ more formats\n- **\ud83d\udee1\ufe0f Security First**: Built-in protection against path traversal attacks (zip bombs)\n- **\ud83d\udd10 Password Support**: Handle encrypted archives seamlessly\n- **\u26a1 Simple API**: One function call to extract any supported archive\n- **\ud83d\udd27 CLI Tool**: Extract archives from command line with `unzipall` command\n- **\ud83c\udf0d Cross-Platform**: Works on Windows, macOS, and Linux\n- **\ud83c\udfd7\ufe0f Type Safe**: Full type hints for better IDE support and development experience\n- **\ud83d\udcca Graceful Degradation**: Optional dependencies - missing libraries don't break functionality\n\n## \ud83d\ude80 Quick Start\n\n### Installation\n\n```bash\npip install unzipall\n```\n\n### Basic Usage\n\n```python\nimport unzipall\n\n# Extract any archive format - it just works!\nunzipall.extract('archive.zip')\nunzipall.extract('data.tar.gz', 'output_folder')\nunzipall.extract('encrypted.7z', password='secret')\n\n# Check if format is supported\nif unzipall.is_supported('mystery_file.xyz'):\n unzipall.extract('mystery_file.xyz')\n\n# List all supported formats \nformats = unzipall.list_supported_formats()\nprint(f\"Supports {len(formats)} formats!\")\n```\n\n### Command Line Usage\n\n```bash\n# Extract to current directory\nunzipall archive.zip\n\n# Extract to specific directory\nunzipall archive.tar.gz /path/to/output\n\n# Extract password-protected archive\nunzipall -p mypassword encrypted.7z\n\n# List supported formats\nunzipall --list-formats\n\n# Verbose output\nunzipall -v archive.rar output_dir\n```\n\n## \ud83d\udcc1 Supported Formats\n\n| Category | Formats | Status |\n|----------|---------|--------|\n| **ZIP Family** | `.zip`, `.jar`, `.war`, `.ear`, `.apk`, `.epub`, `.cbz` | \u2705 Built-in |\n| **RAR Family** | `.rar`, `.cbr` | \u2705 Full Support |\n| **7-Zip** | `.7z`, `.cb7` | \u2705 Full Support |\n| **TAR Archives** | `.tar`, `.tar.gz`, `.tgz`, `.tar.bz2`, `.tbz2`, `.tar.xz`, `.txz`, `.tar.z`, `.tar.lzma` | \u2705 Built-in |\n| **Compression** | `.gz`, `.bz2`, `.xz`, `.lzma`, `.z` | \u2705 Built-in |\n| **Other Archives** | `.arj`, `.cab`, `.chm`, `.cpio`, `.deb`, `.rpm`, `.lzh`, `.lha` | \u2705 Via patool |\n| **Disk Images** | `.iso`, `.vhd`, `.udf` | \u2705 Full Support |\n| **Microsoft** | `.msi`, `.exe` (self-extracting), `.wim` | \u2705 Platform-aware |\n| **Specialized** | `.xar`, `.zpaq`, `.cso`, `.pkg`, `.cbt` | \u2705 Via patool |\n\n> **30+ formats supported!** If a format isn't working, it may require additional system tools (see [System Dependencies](#-system-dependencies)).\n\n## \ud83d\udee0 Advanced Usage\n\n### Programmatic API\n\n```python\nfrom unzipall import ArchiveExtractor, ArchiveExtractionError\n\n# Create extractor with custom settings\nextractor = ArchiveExtractor(verbose=True)\n\n# Check available features\nfeatures = extractor.get_available_features()\nfor feature, available in features.items():\n status = \"\u2705\" if available else \"\u274c\"\n print(f\"{status} {feature}\")\n\n# Extract with error handling\ntry:\n success = extractor.extract(\n archive_path='large_archive.rar',\n extract_to='output_directory',\n password='optional_password'\n )\n if success:\n print(\"Extraction completed successfully!\")\n \nexcept ArchiveExtractionError as e:\n print(f\"Extraction failed: {e}\")\n```\n\n### Error Handling\n\nUnzipAll provides specific exceptions for different failure scenarios:\n\n```python\nfrom unzipall import (\n ArchiveExtractionError, UnsupportedFormatError, \n CorruptedArchiveError, PasswordRequiredError,\n InvalidPasswordError, ExtractionPermissionError, \n DiskSpaceError\n)\n\ntry:\n unzipall.extract('archive.zip')\nexcept UnsupportedFormatError:\n print(\"This archive format is not supported\")\nexcept PasswordRequiredError:\n password = input(\"Enter password: \")\n unzipall.extract('archive.zip', password=password)\nexcept CorruptedArchiveError:\n print(\"Archive file is corrupted\")\nexcept DiskSpaceError:\n print(\"Not enough disk space\")\nexcept ArchiveExtractionError as e:\n print(f\"Extraction failed: {e}\")\n```\n\n### Security Features\n\nUnzipAll automatically protects against common archive-based attacks:\n\n```python\n# Path traversal protection (zip bombs)\n# Malicious archives with paths like \"../../etc/passwd\" are safely handled\nunzipall.extract('potentially_malicious.zip', 'safe_output_dir')\n\n# Files are extracted only within the target directory\n# Dangerous paths are logged and skipped\n```\n\n## \ud83d\udd27 System Dependencies\n\nWhile UnzipAll works out of the box for common formats (ZIP, TAR, GZIP, etc.), some formats require additional system tools:\n\n### Windows\n```bash\n# Install via Windows Package Manager\nwinget install 7zip.7zip\nwinget install RARLab.WinRAR\n\n# Or install via Chocolatey\nchoco install 7zip winrar\n```\n\n### macOS\n```bash\n# Using Homebrew\nbrew install p7zip unrar\n\n# For additional formats\nbrew install cabextract unshield\n```\n\n### Linux (Ubuntu/Debian)\n```bash\nsudo apt update\nsudo apt install p7zip-full unrar-free\n\n# For additional formats\nsudo apt install cabextract unshield cpio\n```\n\n### Linux (RHEL/CentOS/Fedora)\n```bash\nsudo dnf install p7zip p7zip-plugins unrar\n\n# For additional formats \nsudo dnf install cabextract unshield cpio\n```\n\n### Docker Usage\n\n```dockerfile\nFROM python:3.11-slim\n\n# Install system dependencies\nRUN apt-get update && apt-get install -y \\\n p7zip-full \\\n unrar-free \\\n cabextract \\\n && rm -rf /var/lib/apt/lists/*\n\n# Install unzipall\nRUN pip install unzipall\n\n# Your application code\nCOPY . /app\nWORKDIR /app\n```\n\n## \ud83d\udcca Performance\n\nUnzipAll is designed for reliability and format support over raw speed. Benchmarks on typical archives:\n\n- **ZIP files**: ~80 extractions/second\n- **TAR.GZ files**: ~60 extractions/second\n- **7Z files**: ~40 extractions/second\n- **RAR files**: ~35 extractions/second\n\nPerformance varies based on archive size, compression ratio, and available system resources.\n\n## \ud83e\uddea Development & Testing\n\n```bash\n# Clone the repository\ngit clone https://github.com/mricardo/unzipall.git\ncd unzipall\n\n# Install in development mode\npip install -e \".[dev]\"\n\n# Run tests\npytest\n\n# Run tests with coverage\npytest --cov=src/unzipall --cov-report=html\n\n# Format code\nblack src/ tests/\n\n# Type checking\nmypy src/\n\n# Lint code\nflake8 src/ tests/\n```\n\n### Running Specific Tests\n\n```bash\n# Test basic functionality\npytest tests/test_smoke.py -v\n\n# Test specific archive format\npytest tests/test_core.py::test_extract_valid_zip -v\n\n# Performance benchmarks\npytest tests/test_performance.py --benchmark-only\n\n# Skip slow tests\npytest -m \"not slow\"\n```\n\n## \ud83d\udd17 API Reference\n\n### Main Functions\n\n#### `extract(archive_path, extract_to=None, password=None, verbose=False)`\nExtract an archive to the specified directory.\n\n**Parameters:**\n- `archive_path` (str|Path): Path to the archive file\n- `extract_to` (str|Path, optional): Output directory (defaults to archive stem name)\n- `password` (str, optional): Password for encrypted archives\n- `verbose` (bool): Enable detailed logging\n\n**Returns:** `bool` - True if successful\n\n**Example:**\n```python\n# Extract to default location (archive stem name)\nunzipall.extract('myfiles.zip') # Creates ./myfiles/\n\n# Extract to specific directory\nunzipall.extract('myfiles.zip', 'custom_output')\n\n# Extract encrypted archive\nunzipall.extract('secret.7z', password='mypassword')\n```\n\n#### `is_supported(file_path)`\nCheck if a file format is supported.\n\n**Parameters:**\n- `file_path` (str|Path): Path to file to check\n\n**Returns:** `bool` - True if format is supported\n\n**Example:**\n```python\nif unzipall.is_supported('data.xyz'):\n print(\"This format is supported!\")\nelse:\n print(\"Unsupported format\")\n```\n\n#### `list_supported_formats()`\nGet list of all supported file extensions.\n\n**Returns:** `List[str]` - Sorted list of supported extensions\n\n**Example:**\n```python\nformats = unzipall.list_supported_formats()\nprint(f\"Supported: {', '.join(formats)}\")\n```\n\n### ArchiveExtractor Class\n\nFor advanced usage with custom configuration:\n\n```python\nfrom unzipall import ArchiveExtractor\n\nextractor = ArchiveExtractor(verbose=True)\n\n# Check what features are available\nfeatures = extractor.get_available_features()\n\n# Extract with custom settings\nsuccess = extractor.extract('archive.zip', 'output_dir')\n```\n\n### Exception Hierarchy\n\n```\nArchiveExtractionError (base)\n\u251c\u2500\u2500 UnsupportedFormatError\n\u251c\u2500\u2500 CorruptedArchiveError \n\u251c\u2500\u2500 PasswordRequiredError\n\u251c\u2500\u2500 InvalidPasswordError\n\u251c\u2500\u2500 ExtractionPermissionError\n\u2514\u2500\u2500 DiskSpaceError\n```\n\n## \ud83e\udd1d Contributing\n\nContributions are welcome! Here's how to get started:\n\n1. **Fork the repository** on GitHub\n2. **Create a feature branch**: `git checkout -b feature/amazing-feature`\n3. **Install development dependencies**: `pip install -e \".[dev]\"`\n4. **Make your changes** and add tests\n5. **Run the test suite**: `pytest`\n6. **Commit your changes**: `git commit -m \"Add amazing feature\"`\n7. **Push to the branch**: `git push origin feature/amazing-feature`\n8. **Open a Pull Request**\n\n### Development Guidelines\n\n- Write tests for new features\n- Follow PEP 8 style guidelines (use `black` for formatting)\n- Add type hints for new functions\n- Update documentation for API changes\n- Ensure all tests pass before submitting\n\n## \ud83d\udcc4 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## \ud83d\ude4f Acknowledgments\n\n- Built on top of excellent libraries: [`py7zr`](https://github.com/miurahr/py7zr), [`rarfile`](https://github.com/markokr/rarfile), [`patool`](https://github.com/wummel/patool), [`libarchive-c`](https://github.com/Changaco/python-libarchive-c), and others\n- Inspired by the need for a simple, unified archive extraction interface\n- Thanks to all contributors and users who help improve this library\n\n## \ud83d\udd17 Related Projects\n\n- **[patool](https://github.com/wummel/patool)** - Command-line archive tool\n- **[py7zr](https://github.com/miurahr/py7zr)** - Pure Python 7-zip library\n- **[rarfile](https://github.com/markokr/rarfile)** - RAR archive reader\n- **[zipfile](https://docs.python.org/3/library/zipfile.html)** - Python standard library ZIP support\n\n## \ud83d\udcde Support\n\n- **Documentation**: Check this README and docstrings\n- **Issues**: [GitHub Issues](https://github.com/mricardo/unzipall/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/mricardo/unzipall/discussions)\n- **Email**: ricardo.lee.cm@gmail.com\n\n---\n\n**Star this repo if you find it useful! \u2b50**\n\nMade with \u2764\ufe0f by [mricardo](https://github.com/mricardo)\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Universal archive extractor supporting 30+ formats including ZIP, RAR, 7Z, TAR, and many more",
"version": "1.0.1",
"project_urls": {
"Bug Tracker": "https://github.com/mricardo/unzipall/issues",
"Documentation": "https://github.com/mricardo/unzipall#readme",
"Funding": "https://github.com/sponsors/mricardo",
"Homepage": "https://github.com/mricardo/unzipall",
"Repository": "https://github.com/mricardo/unzipall"
},
"split_keywords": [
"archive",
" extract",
" zip",
" rar",
" 7z",
" tar",
" compression",
" unzip",
" extractor",
" decompress",
" unpack",
" universal"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "b5cd64da418a024d488b1f960f23439b6b4a2acc1053e7e5e59a45a54dcddca4",
"md5": "902f1bea58548079e099082d09a9f11e",
"sha256": "5dc7c645bbdda5d05f4af76f6f8031bb4c173835bf7312397cfbc2a5734f09e8"
},
"downloads": -1,
"filename": "unzipall-1.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "902f1bea58548079e099082d09a9f11e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 15158,
"upload_time": "2025-08-02T17:41:05",
"upload_time_iso_8601": "2025-08-02T17:41:05.393540Z",
"url": "https://files.pythonhosted.org/packages/b5/cd/64da418a024d488b1f960f23439b6b4a2acc1053e7e5e59a45a54dcddca4/unzipall-1.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f1e774d7f663cfa2548f5642b662c5fa7aa97aee94c786ea4c37a4e37a2f3de6",
"md5": "37892dbc75815449104bc1a121d1817e",
"sha256": "360afbaa59f956bdc071d193f851eb111e1fcaf636eeb305386e6d5d983c5daa"
},
"downloads": -1,
"filename": "unzipall-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "37892dbc75815449104bc1a121d1817e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 19736,
"upload_time": "2025-08-02T17:41:06",
"upload_time_iso_8601": "2025-08-02T17:41:06.689793Z",
"url": "https://files.pythonhosted.org/packages/f1/e7/74d7f663cfa2548f5642b662c5fa7aa97aee94c786ea4c37a4e37a2f3de6/unzipall-1.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-02 17:41:06",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "mricardo",
"github_project": "unzipall",
"github_not_found": true,
"lcname": "unzipall"
}