sas-storage


Namesas-storage JSON
Version 1.0.0 PyPI version JSON
download
home_pageNone
SummaryA comprehensive Python helper for Azure Storage Blob and Queue operations with file explorer-like functionality
upload_time2025-09-20 02:14:09
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12
licenseNone
keywords azure blob storage cloud file-explorer sas queue
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Azure Storage Helper Library

A comprehensive Python helper library for Azure Storage Blob and Queue operations with enhanced SAS token generation, async/sync support, and enterprise-grade functionality.

## Overview

This library provides a simplified interface for Azure Storage operations with built-in best practices for authentication, error handling, and SAS token generation. It supports both synchronous and asynchronous operations with full feature parity, making it suitable for various application architectures from simple scripts to high-performance applications.

## Key Features

### Authentication & Security

- **Multiple Authentication Methods**: DefaultAzureCredential, ManagedIdentity, Account Keys, Connection Strings
- **Automatic Credential Detection**: Smart credential chain with fallback mechanisms
- **Enhanced Error Handling**: Detailed error messages with troubleshooting guidance
- **Secure Session Management**: Proper HTTP session cleanup and resource management

### SAS Token Generation

- **User Delegation SAS**: Modern Azure AD-based SAS tokens with enhanced security
- **Account Key SAS**: Traditional account key-based tokens for backward compatibility
- **Clock Skew Protection**: Automatic time buffer to prevent authentication failures
- **Flexible Permissions**: Granular permission control for different operations
- **Container & Blob Level**: Generate SAS tokens for both containers and individual blobs

### Blob Operations

- **Container Management**: Create, delete (with force delete), list, and check container existence
- **Blob Operations**: Upload, download, copy, move, and delete blobs with metadata support
- **File Operations**: Direct file upload/download with automatic path handling
- **Directory-like Navigation**: Hierarchical listing with prefix support and delimiter handling
- **Metadata Management**: Get, set, and manage blob metadata and properties
- **Batch Operations**: Process multiple files simultaneously with progress tracking
- **Search Functionality**: Search blobs by name, metadata, or content patterns
- **Content Type Detection**: Automatic content type detection based on file extensions
- **Large File Upload**: Progress tracking and chunked upload for large files
- **Blob Snapshots**: Create and manage blob snapshots (sync version)
- **Blob Tiers**: Hot, Cool, and Archive tier management

### Queue Operations & Management

- **Queue Management**: Create, delete, list, clear, and manage queue properties
- **Message Operations**: Send, receive, peek, delete, and update messages
- **Batch Message Operations**: Process multiple messages simultaneously with concurrency control
- **Message Encoding**: Support for text, binary, and JSON message formats with automatic serialization
- **Visibility Timeout**: Configurable message visibility and processing timeouts
- **Worker Patterns**: Built-in support for common queue processing patterns

### Performance & Reliability

- **Async/Sync Feature Parity**: Complete feature compatibility between async and sync versions
- **Retry Logic**: Built-in retry mechanisms with exponential backoff
- **Connection Pooling**: Efficient HTTP connection management
- **Concurrent Operations**: High-performance parallel processing capabilities
- **Resource Cleanup**: Automatic session and resource cleanup
- **Memory Efficient**: Streaming operations for large files

### Developer Experience

- **Comprehensive Logging**: Configurable logging levels with detailed operation tracking
- **Type Hints**: Full type annotation support for better IDE experience
- **Extensive Test Coverage**: 95%+ test coverage with real Azure resource integration
- **Example Library**: 25+ practical examples covering common use cases
- **API Documentation**: Microsoft SDK-style documentation with detailed parameter descriptions
- **Error Handling**: Informative error messages with suggested solutions

## Installation

```bash
# Using pip
pip install sas-storage

# Using uv (recommended)
uv add sas-storage

# For development
uv sync --dev
```

## Recent Updates & Improvements

### Version Improvements

- **Parameter Consistency**: Fixed parameter naming inconsistencies between async and sync variants
  - `AsyncStorageBlobHelper.download_file()` now correctly uses `local_file_path` parameter
  - Consistent method signatures across all helper classes
- **Test Suite Enhancements**: Comprehensive test coverage with real Azure Storage resources
  - Fixed test parameter mismatches in blob upload operations
  - Corrected property assertions to match actual Azure Storage responses
  - All tests now pass with both sync and async implementations
- **Error Handling**: Enhanced error messages and validation throughout the library
- **Documentation**: Updated examples and documentation to reflect current API

### Breaking Changes

- **Parameter Names**: Some method parameters have been standardized for consistency
  - `download_file()` methods now consistently use `local_file_path` instead of `file_path`
  - Removed invalid `content_type` parameters from certain upload operations
- **Return Values**: Standardized return value structures for property methods

## Quick Start

### Basic Blob Operations

```python
from sas.storage.blob import AsyncStorageBlobHelper

async def example():
    async with AsyncStorageBlobHelper(account_name="myaccount") as helper:
        # Upload a file
        await helper.upload_blob("container", "file.txt", "Hello World!")
        
        # Generate SAS URL
        sas_url = await helper.generate_blob_sas_url(
            container_name="container",
            blob_name="file.txt",
            permissions="r",
            expiry_hours=1
        )
        
        # List blobs
        blobs = await helper.list_blobs("container")
```

### Queue Operations

```python
from sas.storage.queue import AsyncStorageQueueHelper

async def queue_example():
    async with AsyncStorageQueueHelper(account_name="myaccount") as helper:
        # Send message
        await helper.send_message("myqueue", "Hello Queue!")
        
        # Receive messages
        messages = await helper.receive_messages("myqueue")
        
        # Peek without removing
        peeked = await helper.peek_messages("myqueue")
```

## Configuration

### Environment Variables

Create a `.env` file in your project root:

```properties
# Option 1: Use Account Name with Azure AD (recommended)
AZURE_STORAGE_ACCOUNT_NAME=your_storage_account

# Option 2: Use Connection String
AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=...

# Optional: Logging level
LOGGING_LEVEL=INFO
```

### Authentication Setup

The library automatically detects available credentials in this order:

1. **DefaultAzureCredential** (recommended for production)
   - Managed Identity
   - Azure CLI
   - Azure PowerShell
   - Environment variables

2. **Account Key** (from connection string or environment)

3. **Manual credential configuration**

## Testing

This library includes comprehensive test suites for both synchronous and asynchronous operations with over 95% code coverage. All major functionality is tested against real Azure Storage resources to ensure reliability and compatibility.

### Recent Improvements

- **Parameter Consistency**: Fixed parameter naming consistency between async and sync variants (e.g., `download_file` now uses `local_file_path` consistently)
- **Enhanced Test Coverage**: Comprehensive testing of all blob and queue operations with real Azure resources
- **Error Handling**: Improved error handling and validation in both sync and async helpers
- **Method Signature Validation**: All test methods now correctly match the actual helper method signatures

### Test Structure

- **Sync Tests** (`test_sync_helpers.py`): Complete test coverage for `StorageBlobHelper` and `StorageQueueHelper`
- **Async Tests** (`test_async_helpers.py`): Full test coverage for `AsyncStorageBlobHelper` and `AsyncStorageQueueHelper`
- **Integration Tests**: Real Azure Storage operations including container management, blob operations, and queue processing
- **Authentication Tests**: Multiple authentication method validation including DefaultAzureCredential and account keys

### Running Tests

Before running tests, please ensure you have set up your Azure Storage account and prepare the environment variables or `.env` file

#### .env File

```env
# Azure Storage Integration Test Configuration
# Copy this file to .env and fill in your actual values

# Option 1: Use Connection String (recommended for development)
AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=YOUR_ACCOUNT_NAME;AccountKey=YOUR_ACCOUNT_KEY;EndpointSuffix=core.windows.net

# Option 2: Use Account Name with Managed Identity (for production)
AZURE_STORAGE_ACCOUNT_NAME=your_storage_account_name
```

#### Test Commands

```bash
# Install dependencies
uv sync

# Run all tests
uv run pytest

# Run with verbose output
uv run pytest -v

# Run specific test file
uv run pytest tests/test_sync_helpers.py
uv run pytest tests/test_async_helpers.py

# Run with coverage report
uv run pytest --cov=src --cov-report=html
```

### Test Coverage

The test suite covers:

- **Container Operations**: Create, delete, list, exists checking
- **Blob Operations**: Upload, download, copy, move, delete, metadata management
- **File Operations**: Direct file upload/download with various file types
- **Directory Operations**: Hierarchical navigation and prefix-based operations
- **SAS Token Generation**: User delegation and account key-based tokens
- **Queue Operations**: Message send/receive, batch operations, queue management
- **Authentication**: Multiple credential types and fallback mechanisms
- **Error Handling**: Exception scenarios and edge cases
- **Async/Sync Parity**: Feature compatibility between async and sync versions



## Project Structure

```text
src/
├── sas/
│   └── storage/
│       ├── shared_config.py       # Shared configuration and constants
│       ├── blob/
│       │   ├── __init__.py
│       │   ├── async_helper.py    # AsyncStorageBlobHelper class
│       │   ├── helper.py          # StorageBlobHelper class
│       │   └── config.py          # Blob-specific configuration
│       └── queue/
│           ├── __init__.py
│           ├── async_helper.py    # AsyncStorageQueueHelper class
│           └── helper.py          # StorageQueueHelper class
tests/
├── test_async_helpers.py          # Comprehensive async operation tests
└── test_sync_helpers.py           # Comprehensive sync operation tests
examples/
├── blob/                          # 10+ blob operation examples
│   ├── 01_basic_upload_download.py
│   ├── 02_upload_file.py
│   ├── 03_create_container.py
│   ├── 04_generate_sas.py
│   ├── 05_list_blobs.py
│   ├── 06_delete_operations.py
│   ├── 07_metadata.py
│   ├── 08_batch_upload.py
│   ├── 09_check_exists.py
│   └── 10_comparison_with_sdk.py
└── queue/                         # 9+ queue operation examples
    ├── 01_basic_send_receive.py
    ├── 02_create_queue.py
    ├── 03_json_messages.py
    ├── 04_batch_operations.py
    ├── 05_message_visibility.py
    ├── 06_peek_messages.py
    ├── 07_queue_management.py
    ├── 08_clear_and_cleanup.py
    └── 09_worker_pattern.py
```

## Requirements

- Python 3.12 or higher
- Azure Storage account
- Storage Blob Contributor role
- Storage Queue Contributor role

## Dependencies

Core dependencies:

- `azure-storage-blob>=12.20.0`
- `azure-storage-queue>=12.9.0`
- `azure-identity>=1.15.0`
- `azure-core>=1.29.0`
- `aiofiles>=23.2.0`
- `aiohttp>=3.8.0`

### Development Setup

```bash
# Clone repository
git clone https://github.com/yourusername/sas-storage.git
cd sas-storage

# Install development dependencies
uv sync --dev
```

## License

MIT License - see [LICENSE](LICENSE) file for details.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "sas-storage",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12",
    "maintainer_email": null,
    "keywords": "azure, blob, storage, cloud, file-explorer, sas, queue",
    "author": null,
    "author_email": "DB Lee <db.lee@microsoft.com>",
    "download_url": "https://files.pythonhosted.org/packages/39/00/3274835e8d6eb99dc83e20d1a8bc2d9b57fd159e44d0c2e328fecbe994d8/sas_storage-1.0.0.tar.gz",
    "platform": null,
    "description": "# Azure Storage Helper Library\n\nA comprehensive Python helper library for Azure Storage Blob and Queue operations with enhanced SAS token generation, async/sync support, and enterprise-grade functionality.\n\n## Overview\n\nThis library provides a simplified interface for Azure Storage operations with built-in best practices for authentication, error handling, and SAS token generation. It supports both synchronous and asynchronous operations with full feature parity, making it suitable for various application architectures from simple scripts to high-performance applications.\n\n## Key Features\n\n### Authentication & Security\n\n- **Multiple Authentication Methods**: DefaultAzureCredential, ManagedIdentity, Account Keys, Connection Strings\n- **Automatic Credential Detection**: Smart credential chain with fallback mechanisms\n- **Enhanced Error Handling**: Detailed error messages with troubleshooting guidance\n- **Secure Session Management**: Proper HTTP session cleanup and resource management\n\n### SAS Token Generation\n\n- **User Delegation SAS**: Modern Azure AD-based SAS tokens with enhanced security\n- **Account Key SAS**: Traditional account key-based tokens for backward compatibility\n- **Clock Skew Protection**: Automatic time buffer to prevent authentication failures\n- **Flexible Permissions**: Granular permission control for different operations\n- **Container & Blob Level**: Generate SAS tokens for both containers and individual blobs\n\n### Blob Operations\n\n- **Container Management**: Create, delete (with force delete), list, and check container existence\n- **Blob Operations**: Upload, download, copy, move, and delete blobs with metadata support\n- **File Operations**: Direct file upload/download with automatic path handling\n- **Directory-like Navigation**: Hierarchical listing with prefix support and delimiter handling\n- **Metadata Management**: Get, set, and manage blob metadata and properties\n- **Batch Operations**: Process multiple files simultaneously with progress tracking\n- **Search Functionality**: Search blobs by name, metadata, or content patterns\n- **Content Type Detection**: Automatic content type detection based on file extensions\n- **Large File Upload**: Progress tracking and chunked upload for large files\n- **Blob Snapshots**: Create and manage blob snapshots (sync version)\n- **Blob Tiers**: Hot, Cool, and Archive tier management\n\n### Queue Operations & Management\n\n- **Queue Management**: Create, delete, list, clear, and manage queue properties\n- **Message Operations**: Send, receive, peek, delete, and update messages\n- **Batch Message Operations**: Process multiple messages simultaneously with concurrency control\n- **Message Encoding**: Support for text, binary, and JSON message formats with automatic serialization\n- **Visibility Timeout**: Configurable message visibility and processing timeouts\n- **Worker Patterns**: Built-in support for common queue processing patterns\n\n### Performance & Reliability\n\n- **Async/Sync Feature Parity**: Complete feature compatibility between async and sync versions\n- **Retry Logic**: Built-in retry mechanisms with exponential backoff\n- **Connection Pooling**: Efficient HTTP connection management\n- **Concurrent Operations**: High-performance parallel processing capabilities\n- **Resource Cleanup**: Automatic session and resource cleanup\n- **Memory Efficient**: Streaming operations for large files\n\n### Developer Experience\n\n- **Comprehensive Logging**: Configurable logging levels with detailed operation tracking\n- **Type Hints**: Full type annotation support for better IDE experience\n- **Extensive Test Coverage**: 95%+ test coverage with real Azure resource integration\n- **Example Library**: 25+ practical examples covering common use cases\n- **API Documentation**: Microsoft SDK-style documentation with detailed parameter descriptions\n- **Error Handling**: Informative error messages with suggested solutions\n\n## Installation\n\n```bash\n# Using pip\npip install sas-storage\n\n# Using uv (recommended)\nuv add sas-storage\n\n# For development\nuv sync --dev\n```\n\n## Recent Updates & Improvements\n\n### Version Improvements\n\n- **Parameter Consistency**: Fixed parameter naming inconsistencies between async and sync variants\n  - `AsyncStorageBlobHelper.download_file()` now correctly uses `local_file_path` parameter\n  - Consistent method signatures across all helper classes\n- **Test Suite Enhancements**: Comprehensive test coverage with real Azure Storage resources\n  - Fixed test parameter mismatches in blob upload operations\n  - Corrected property assertions to match actual Azure Storage responses\n  - All tests now pass with both sync and async implementations\n- **Error Handling**: Enhanced error messages and validation throughout the library\n- **Documentation**: Updated examples and documentation to reflect current API\n\n### Breaking Changes\n\n- **Parameter Names**: Some method parameters have been standardized for consistency\n  - `download_file()` methods now consistently use `local_file_path` instead of `file_path`\n  - Removed invalid `content_type` parameters from certain upload operations\n- **Return Values**: Standardized return value structures for property methods\n\n## Quick Start\n\n### Basic Blob Operations\n\n```python\nfrom sas.storage.blob import AsyncStorageBlobHelper\n\nasync def example():\n    async with AsyncStorageBlobHelper(account_name=\"myaccount\") as helper:\n        # Upload a file\n        await helper.upload_blob(\"container\", \"file.txt\", \"Hello World!\")\n        \n        # Generate SAS URL\n        sas_url = await helper.generate_blob_sas_url(\n            container_name=\"container\",\n            blob_name=\"file.txt\",\n            permissions=\"r\",\n            expiry_hours=1\n        )\n        \n        # List blobs\n        blobs = await helper.list_blobs(\"container\")\n```\n\n### Queue Operations\n\n```python\nfrom sas.storage.queue import AsyncStorageQueueHelper\n\nasync def queue_example():\n    async with AsyncStorageQueueHelper(account_name=\"myaccount\") as helper:\n        # Send message\n        await helper.send_message(\"myqueue\", \"Hello Queue!\")\n        \n        # Receive messages\n        messages = await helper.receive_messages(\"myqueue\")\n        \n        # Peek without removing\n        peeked = await helper.peek_messages(\"myqueue\")\n```\n\n## Configuration\n\n### Environment Variables\n\nCreate a `.env` file in your project root:\n\n```properties\n# Option 1: Use Account Name with Azure AD (recommended)\nAZURE_STORAGE_ACCOUNT_NAME=your_storage_account\n\n# Option 2: Use Connection String\nAZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=...\n\n# Optional: Logging level\nLOGGING_LEVEL=INFO\n```\n\n### Authentication Setup\n\nThe library automatically detects available credentials in this order:\n\n1. **DefaultAzureCredential** (recommended for production)\n   - Managed Identity\n   - Azure CLI\n   - Azure PowerShell\n   - Environment variables\n\n2. **Account Key** (from connection string or environment)\n\n3. **Manual credential configuration**\n\n## Testing\n\nThis library includes comprehensive test suites for both synchronous and asynchronous operations with over 95% code coverage. All major functionality is tested against real Azure Storage resources to ensure reliability and compatibility.\n\n### Recent Improvements\n\n- **Parameter Consistency**: Fixed parameter naming consistency between async and sync variants (e.g., `download_file` now uses `local_file_path` consistently)\n- **Enhanced Test Coverage**: Comprehensive testing of all blob and queue operations with real Azure resources\n- **Error Handling**: Improved error handling and validation in both sync and async helpers\n- **Method Signature Validation**: All test methods now correctly match the actual helper method signatures\n\n### Test Structure\n\n- **Sync Tests** (`test_sync_helpers.py`): Complete test coverage for `StorageBlobHelper` and `StorageQueueHelper`\n- **Async Tests** (`test_async_helpers.py`): Full test coverage for `AsyncStorageBlobHelper` and `AsyncStorageQueueHelper`\n- **Integration Tests**: Real Azure Storage operations including container management, blob operations, and queue processing\n- **Authentication Tests**: Multiple authentication method validation including DefaultAzureCredential and account keys\n\n### Running Tests\n\nBefore running tests, please ensure you have set up your Azure Storage account and prepare the environment variables or `.env` file\n\n#### .env File\n\n```env\n# Azure Storage Integration Test Configuration\n# Copy this file to .env and fill in your actual values\n\n# Option 1: Use Connection String (recommended for development)\nAZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=YOUR_ACCOUNT_NAME;AccountKey=YOUR_ACCOUNT_KEY;EndpointSuffix=core.windows.net\n\n# Option 2: Use Account Name with Managed Identity (for production)\nAZURE_STORAGE_ACCOUNT_NAME=your_storage_account_name\n```\n\n#### Test Commands\n\n```bash\n# Install dependencies\nuv sync\n\n# Run all tests\nuv run pytest\n\n# Run with verbose output\nuv run pytest -v\n\n# Run specific test file\nuv run pytest tests/test_sync_helpers.py\nuv run pytest tests/test_async_helpers.py\n\n# Run with coverage report\nuv run pytest --cov=src --cov-report=html\n```\n\n### Test Coverage\n\nThe test suite covers:\n\n- **Container Operations**: Create, delete, list, exists checking\n- **Blob Operations**: Upload, download, copy, move, delete, metadata management\n- **File Operations**: Direct file upload/download with various file types\n- **Directory Operations**: Hierarchical navigation and prefix-based operations\n- **SAS Token Generation**: User delegation and account key-based tokens\n- **Queue Operations**: Message send/receive, batch operations, queue management\n- **Authentication**: Multiple credential types and fallback mechanisms\n- **Error Handling**: Exception scenarios and edge cases\n- **Async/Sync Parity**: Feature compatibility between async and sync versions\n\n\n\n## Project Structure\n\n```text\nsrc/\n\u251c\u2500\u2500 sas/\n\u2502   \u2514\u2500\u2500 storage/\n\u2502       \u251c\u2500\u2500 shared_config.py       # Shared configuration and constants\n\u2502       \u251c\u2500\u2500 blob/\n\u2502       \u2502   \u251c\u2500\u2500 __init__.py\n\u2502       \u2502   \u251c\u2500\u2500 async_helper.py    # AsyncStorageBlobHelper class\n\u2502       \u2502   \u251c\u2500\u2500 helper.py          # StorageBlobHelper class\n\u2502       \u2502   \u2514\u2500\u2500 config.py          # Blob-specific configuration\n\u2502       \u2514\u2500\u2500 queue/\n\u2502           \u251c\u2500\u2500 __init__.py\n\u2502           \u251c\u2500\u2500 async_helper.py    # AsyncStorageQueueHelper class\n\u2502           \u2514\u2500\u2500 helper.py          # StorageQueueHelper class\ntests/\n\u251c\u2500\u2500 test_async_helpers.py          # Comprehensive async operation tests\n\u2514\u2500\u2500 test_sync_helpers.py           # Comprehensive sync operation tests\nexamples/\n\u251c\u2500\u2500 blob/                          # 10+ blob operation examples\n\u2502   \u251c\u2500\u2500 01_basic_upload_download.py\n\u2502   \u251c\u2500\u2500 02_upload_file.py\n\u2502   \u251c\u2500\u2500 03_create_container.py\n\u2502   \u251c\u2500\u2500 04_generate_sas.py\n\u2502   \u251c\u2500\u2500 05_list_blobs.py\n\u2502   \u251c\u2500\u2500 06_delete_operations.py\n\u2502   \u251c\u2500\u2500 07_metadata.py\n\u2502   \u251c\u2500\u2500 08_batch_upload.py\n\u2502   \u251c\u2500\u2500 09_check_exists.py\n\u2502   \u2514\u2500\u2500 10_comparison_with_sdk.py\n\u2514\u2500\u2500 queue/                         # 9+ queue operation examples\n    \u251c\u2500\u2500 01_basic_send_receive.py\n    \u251c\u2500\u2500 02_create_queue.py\n    \u251c\u2500\u2500 03_json_messages.py\n    \u251c\u2500\u2500 04_batch_operations.py\n    \u251c\u2500\u2500 05_message_visibility.py\n    \u251c\u2500\u2500 06_peek_messages.py\n    \u251c\u2500\u2500 07_queue_management.py\n    \u251c\u2500\u2500 08_clear_and_cleanup.py\n    \u2514\u2500\u2500 09_worker_pattern.py\n```\n\n## Requirements\n\n- Python 3.12 or higher\n- Azure Storage account\n- Storage Blob Contributor role\n- Storage Queue Contributor role\n\n## Dependencies\n\nCore dependencies:\n\n- `azure-storage-blob>=12.20.0`\n- `azure-storage-queue>=12.9.0`\n- `azure-identity>=1.15.0`\n- `azure-core>=1.29.0`\n- `aiofiles>=23.2.0`\n- `aiohttp>=3.8.0`\n\n### Development Setup\n\n```bash\n# Clone repository\ngit clone https://github.com/yourusername/sas-storage.git\ncd sas-storage\n\n# Install development dependencies\nuv sync --dev\n```\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A comprehensive Python helper for Azure Storage Blob and Queue operations with file explorer-like functionality",
    "version": "1.0.0",
    "project_urls": {
        "Bug Reports": "https://github.com/mcaps-microsoft/python_storageaccount_helper/issues",
        "Documentation": "https://github.com/mcaps-microsoft/python_storageaccount_helper/blob/main/README.md",
        "Homepage": "https://github.com/mcaps-microsoft/python_storageaccount_helper",
        "Repository": "https://github.com/mcaps-microsoft/python_storageaccount_helper"
    },
    "split_keywords": [
        "azure",
        " blob",
        " storage",
        " cloud",
        " file-explorer",
        " sas",
        " queue"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c3e8a1c548ebc010c01aee84935d8e89c4a37c8e21add95a0fb214015fc0dc63",
                "md5": "c2721184144fdab9229b27e4a2c529e7",
                "sha256": "1726799e281afa45cb9bb94bebafac2ae69fab485ab8bef6c8bc2dc4db4ab2a7"
            },
            "downloads": -1,
            "filename": "sas_storage-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c2721184144fdab9229b27e4a2c529e7",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12",
            "size": 38453,
            "upload_time": "2025-09-20T02:14:07",
            "upload_time_iso_8601": "2025-09-20T02:14:07.994326Z",
            "url": "https://files.pythonhosted.org/packages/c3/e8/a1c548ebc010c01aee84935d8e89c4a37c8e21add95a0fb214015fc0dc63/sas_storage-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "39003274835e8d6eb99dc83e20d1a8bc2d9b57fd159e44d0c2e328fecbe994d8",
                "md5": "e0f614517c0f256b522cec62de366303",
                "sha256": "aa3d0d8e9ff6eed1a9ba7089d12ec49a202297418078ff5ef4938707354feec6"
            },
            "downloads": -1,
            "filename": "sas_storage-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "e0f614517c0f256b522cec62de366303",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12",
            "size": 53006,
            "upload_time": "2025-09-20T02:14:09",
            "upload_time_iso_8601": "2025-09-20T02:14:09.344756Z",
            "url": "https://files.pythonhosted.org/packages/39/00/3274835e8d6eb99dc83e20d1a8bc2d9b57fd159e44d0c2e328fecbe994d8/sas_storage-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-20 02:14:09",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "mcaps-microsoft",
    "github_project": "python_storageaccount_helper",
    "github_not_found": true,
    "lcname": "sas-storage"
}
        
Elapsed time: 1.09089s