Name | android-sms-gateway JSON |
Version |
3.0.0
JSON |
| download |
home_page | None |
Summary | A client library for sending and managing SMS messages via the SMS Gateway for Android API |
upload_time | 2025-10-16 03:54:15 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.9 |
license | Apache-2.0 |
keywords |
android
sms
gateway
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# π± SMS Gateway for Androidβ’ Python API Client
[](https://github.com/android-sms-gateway/client-py/blob/master/LICENSE)
[](https://pypi.org/project/android-sms-gateway/)
[](https://pypi.org/project/android-sms-gateway/)
[](https://pypi.org/project/android-sms-gateway/)
[](https://github.com/android-sms-gateway/client-py/issues)
[](https://github.com/android-sms-gateway/client-py/stargazers)
[](https://github.com/android-sms-gateway/client-py/network)
[](https://www.coderabbit.ai)
A modern Python client for seamless integration with the [SMS Gateway for Android](https://sms-gate.app) API. Send SMS messages programmatically through your Android devices with this powerful yet simple-to-use library.
## π About The Project
The Python client for SMSGate provides a clean, type-safe interface to interact with the SMSGate API. It's designed specifically for Python developers who need to integrate SMS functionality into their applications with minimal setup and maximum reliability.
Key value propositions:
- π **Pythonic API** - Designed with Python conventions and best practices in mind
- π‘οΈ **Robust Security** - Guidance for secure credential handling and optional endβtoβend encryption
- π **Flexible Architecture** - Supports both synchronous and asynchronous programming patterns
- π» **Type Safety** - Full type hinting for better developer experience and fewer runtime errors
- π **Webhook Integration** - Simplified webhook management for event-driven architectures
This client abstracts away the complexities of the underlying HTTP API while providing all the necessary functionality to send and track SMS messages through Android devices.
## π Table of Contents
- [π± SMS Gateway for Androidβ’ Python API Client](#-sms-gateway-for-android-python-api-client)
- [π About The Project](#-about-the-project)
- [π Table of Contents](#-table-of-contents)
- [β¨ Features](#-features)
- [βοΈ Requirements](#οΈ-requirements)
- [π¦ Installation](#-installation)
- [Basic Installation](#basic-installation)
- [Installation with Specific HTTP Client](#installation-with-specific-http-client)
- [Installation with Encryption](#installation-with-encryption)
- [π Quickstart](#-quickstart)
- [Initial Setup](#initial-setup)
- [Encryption Example](#encryption-example)
- [π€ Client Guide](#-client-guide)
- [Client Configuration](#client-configuration)
- [Available Methods](#available-methods)
- [Data Structures](#data-structures)
- [Message](#message)
- [MessageState](#messagestate)
- [Webhook](#webhook)
- [π HTTP Clients](#-http-clients)
- [Using Specific Clients](#using-specific-clients)
- [Custom HTTP Client](#custom-http-client)
- [π Security](#-security)
- [Best Practices](#best-practices)
- [Secure Configuration Example](#secure-configuration-example)
- [π API Reference](#-api-reference)
- [π₯ Contributing](#-contributing)
- [How to Contribute](#how-to-contribute)
- [Development Environment](#development-environment)
- [Pull Request Checklist](#pull-request-checklist)
- [π License](#-license)
- [π€ Support](#-support)
## β¨ Features
- π **Dual Client**: Supports both synchronous (`APIClient`) and asynchronous (`AsyncAPIClient`) interfaces
- π **End-to-End Encryption**: Optional message encryption using AES-256-CBC
- π **Multiple HTTP Backends**: Native support for `requests`, `aiohttp`, and `httpx`
- π **Webhook Management**: Programmatically create, query, and delete webhooks
- βοΈ **Customizable Base URL**: Point to different API endpoints
- π» **Full Type Hinting**: Fully typed for better development experience
- β οΈ **Robust Error Handling**: Specific exceptions and clear error messages
- π **Delivery Reports**: Track your message delivery status
## βοΈ Requirements
- **Python**: 3.9 or higher
- **HTTP Client** (choose one):
- π [requests](https://pypi.org/project/requests/) (synchronous)
- β‘ [aiohttp](https://pypi.org/project/aiohttp/) (asynchronous)
- π [httpx](https://pypi.org/project/httpx/) (synchronous + asynchronous)
**Optional Dependencies**:
- π [pycryptodome](https://pypi.org/project/pycryptodome/) - For end-to-end encryption support
## π¦ Installation
### Basic Installation
```bash
pip install android-sms-gateway
```
### Installation with Specific HTTP Client
```bash
# Choose an HTTP client:
pip install android-sms-gateway[requests] # For synchronous use
pip install android-sms-gateway[aiohttp] # For asynchronous use
pip install android-sms-gateway[httpx] # For both synchronous and asynchronous use
```
### Installation with Encryption
```bash
# For encrypted messages:
pip install android-sms-gateway[encryption]
# Or install everything:
pip install android-sms-gateway[requests,encryption]
```
## π Quickstart
### Initial Setup
1. **Configure your credentials**:
```bash
export ANDROID_SMS_GATEWAY_LOGIN="your_username"
export ANDROID_SMS_GATEWAY_PASSWORD="your_password"
```
2. **Basic usage example**:
```python
import asyncio
import os
from android_sms_gateway import client, domain
# Configuration
login = os.getenv("ANDROID_SMS_GATEWAY_LOGIN")
password = os.getenv("ANDROID_SMS_GATEWAY_PASSWORD")
# Create message
message = domain.Message(
"Hello! This is a test message.",
["+1234567890"],
with_delivery_report=True
)
# Synchronous Client
def sync_example():
with client.APIClient(login, password) as c:
# Send message
state = c.send(message)
print(f"Message sent with ID: {state.id}")
# Check status
status = c.get_state(state.id)
print(f"Status: {status.state}")
# Asynchronous Client
async def async_example():
async with client.AsyncAPIClient(login, password) as c:
# Send message
state = await c.send(message)
print(f"Message sent with ID: {state.id}")
# Check status
status = await c.get_state(state.id)
print(f"Status: {status.state}")
if __name__ == "__main__":
print("=== Synchronous Example ===")
sync_example()
print("\n=== Asynchronous Example ===")
asyncio.run(async_example())
```
### Encryption Example
```python
from android_sms_gateway import client, domain, Encryptor
# Encryption setup
encryptor = Encryptor("my-super-secure-secret-passphrase")
# Encrypted message
message = domain.Message(
"This message will be encrypted!",
["+1234567890"],
is_encrypted=True
)
# Client with encryption
with client.APIClient(login, password, encryptor=encryptor) as c:
state = c.send(message)
print(f"Encrypted message sent: {state.id}")
```
## π€ Client Guide
### Client Configuration
Both clients (`APIClient` and `AsyncAPIClient`) support these parameters:
| Parameter | Type | Description | Default |
| ----------- | ------------------------------ | ------------------- | ---------------------------------------- |
| `login` | `str` | API username | **Required** |
| `password` | `str` | API password | **Required** |
| `base_url` | `str` | API base URL | `"https://api.sms-gate.app/3rdparty/v1"` |
| `encryptor` | `Encryptor` | Encryption instance | `None` |
| `http` | `HttpClient`/`AsyncHttpClient` | Custom HTTP client | Auto-detected |
### Available Methods
| Method | Description | Return Type |
| ----------------------------------------- | -------------------- | ---------------------- |
| `send(message: domain.Message)` | Send SMS message | `domain.MessageState` |
| `get_state(id: str)` | Check message status | `domain.MessageState` |
| `create_webhook(webhook: domain.Webhook)` | Create new webhook | `domain.Webhook` |
| `get_webhooks()` | List all webhooks | `List[domain.Webhook]` |
| `delete_webhook(id: str)` | Delete webhook | `None` |
### Data Structures
#### Message
```python
class Message:
message: str # Message text
phone_numbers: List[str] # List of phone numbers
with_delivery_report: bool = True # Delivery report
is_encrypted: bool = False # Whether message is encrypted
# Optional fields
id: Optional[str] = None # Message ID
ttl: Optional[int] = None # Time-to-live in seconds
sim_number: Optional[int] = None # SIM number
```
#### MessageState
```python
class MessageState:
id: str # Unique message ID
state: ProcessState # Current state (SENT, DELIVERED, etc.)
recipients: List[RecipientState] # Per-recipient status
is_hashed: bool # Whether message was hashed
is_encrypted: bool # Whether message was encrypted
```
#### Webhook
```python
class Webhook:
id: Optional[str] # Webhook ID
url: str # Callback URL
event: WebhookEvent # Event type
```
For more details, see [`domain.py`](./android_sms_gateway/domain.py).
## π HTTP Clients
The library automatically detects installed HTTP clients with this priority:
| Client | Sync | Async |
| -------- | ---- | ----- |
| aiohttp | β | 1οΈβ£ |
| requests | 1οΈβ£ | β |
| httpx | 2οΈβ£ | 2οΈβ£ |
### Using Specific Clients
```python
from android_sms_gateway import client, http
# Force httpx usage
client.APIClient(..., http=http.HttpxHttpClient())
# Force requests usage
client.APIClient(..., http=http.RequestsHttpClient())
# Force aiohttp (async only)
async with client.AsyncAPIClient(..., http=http.AiohttpHttpClient()) as c:
# ...
```
### Custom HTTP Client
Implement your own HTTP client following the `http.HttpClient` (sync) or `ahttp.AsyncHttpClient` (async) protocols.
## π Security
### Best Practices
β οΈ **IMPORTANT**: Always follow these security practices:
- π **Credentials**: Store credentials in environment variables
- π« **Code**: Never expose credentials in client-side code
- π **HTTPS**: Use HTTPS for all production communications
- π **Encryption**: Use end-to-end encryption for sensitive messages
- π **Rotation**: Regularly rotate your credentials
### Secure Configuration Example
```python
import os
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
# Secure configuration
login = os.getenv("ANDROID_SMS_GATEWAY_LOGIN")
password = os.getenv("ANDROID_SMS_GATEWAY_PASSWORD")
if not login or not password:
raise ValueError("Credentials not configured!")
```
## π API Reference
For complete API documentation including all available methods, request/response schemas, and error codes, visit:
[π Official API Documentation](https://docs.sms-gate.app/integration/api/)
## π₯ Contributing
Contributions are very welcome! π
### How to Contribute
1. π΄ Fork the repository
2. πΏ Create your feature branch (`git checkout -b feature/NewFeature`)
3. πΎ Commit your changes (`git commit -m 'feat: add new feature'`)
4. π€ Push to branch (`git push origin feature/NewFeature`)
5. π Open a Pull Request
### Development Environment
```bash
# Clone repository
git clone https://github.com/android-sms-gateway/client-py.git
cd client-py
# Create virtual environment
pipenv install --dev --categories encryption,requests
pipenv shell
```
### Pull Request Checklist
- [ ] Code follows style standards (black, isort, flake8)
- [ ] Tests pass locally
- [ ] Documentation updated
- [ ] Test coverage maintained or improved
## π License
This project is licensed under the **Apache License 2.0** - see [LICENSE](LICENSE) for details.
## π€ Support
- π§ **Email**: [support@sms-gate.app](mailto:support@sms-gate.app)
- π¬ **Discord**: [SMS Gateway Community](https://discord.gg/vv9raFK4gX)
- π **Documentation**: [docs.sms-gate.app](https://docs.sms-gate.app)
- π **Issues**: [GitHub Issues](https://github.com/android-sms-gateway/client-py/issues)
---
**Note**: Android is a trademark of Google LLC. This project is not affiliated with or endorsed by Google.
Raw data
{
"_id": null,
"home_page": null,
"name": "android-sms-gateway",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": "Aleksandr Soloshenko <support@sms-gate.app>",
"keywords": "android, sms, gateway",
"author": null,
"author_email": "Aleksandr Soloshenko <admin@sms-gate.app>",
"download_url": "https://files.pythonhosted.org/packages/f3/e2/fdb184f72c6f7fbc892b8a14e6fe6b896bd13c6737b2670bf7406a3621ef/android_sms_gateway-3.0.0.tar.gz",
"platform": null,
"description": "# \ud83d\udcf1 SMS Gateway for Android\u2122 Python API Client\n\n[](https://github.com/android-sms-gateway/client-py/blob/master/LICENSE)\n[](https://pypi.org/project/android-sms-gateway/)\n[](https://pypi.org/project/android-sms-gateway/)\n[](https://pypi.org/project/android-sms-gateway/)\n[](https://github.com/android-sms-gateway/client-py/issues)\n[](https://github.com/android-sms-gateway/client-py/stargazers)\n[](https://github.com/android-sms-gateway/client-py/network)\n[](https://www.coderabbit.ai)\n\nA modern Python client for seamless integration with the [SMS Gateway for Android](https://sms-gate.app) API. Send SMS messages programmatically through your Android devices with this powerful yet simple-to-use library.\n\n## \ud83d\udcd6 About The Project\n\nThe Python client for SMSGate provides a clean, type-safe interface to interact with the SMSGate API. It's designed specifically for Python developers who need to integrate SMS functionality into their applications with minimal setup and maximum reliability.\n\nKey value propositions:\n\n- \ud83d\udc0d **Pythonic API** - Designed with Python conventions and best practices in mind\n- \ud83d\udee1\ufe0f **Robust Security** - Guidance for secure credential handling and optional end\u2011to\u2011end encryption\n- \ud83d\udd04 **Flexible Architecture** - Supports both synchronous and asynchronous programming patterns\n- \ud83d\udcbb **Type Safety** - Full type hinting for better developer experience and fewer runtime errors\n- \ud83d\udd17 **Webhook Integration** - Simplified webhook management for event-driven architectures\n\nThis client abstracts away the complexities of the underlying HTTP API while providing all the necessary functionality to send and track SMS messages through Android devices.\n\n## \ud83d\udcda Table of Contents\n- [\ud83d\udcf1 SMS Gateway for Android\u2122 Python API Client](#-sms-gateway-for-android-python-api-client)\n - [\ud83d\udcd6 About The Project](#-about-the-project)\n - [\ud83d\udcda Table of Contents](#-table-of-contents)\n - [\u2728 Features](#-features)\n - [\u2699\ufe0f Requirements](#\ufe0f-requirements)\n - [\ud83d\udce6 Installation](#-installation)\n - [Basic Installation](#basic-installation)\n - [Installation with Specific HTTP Client](#installation-with-specific-http-client)\n - [Installation with Encryption](#installation-with-encryption)\n - [\ud83d\ude80 Quickstart](#-quickstart)\n - [Initial Setup](#initial-setup)\n - [Encryption Example](#encryption-example)\n - [\ud83e\udd16 Client Guide](#-client-guide)\n - [Client Configuration](#client-configuration)\n - [Available Methods](#available-methods)\n - [Data Structures](#data-structures)\n - [Message](#message)\n - [MessageState](#messagestate)\n - [Webhook](#webhook)\n - [\ud83c\udf10 HTTP Clients](#-http-clients)\n - [Using Specific Clients](#using-specific-clients)\n - [Custom HTTP Client](#custom-http-client)\n - [\ud83d\udd12 Security](#-security)\n - [Best Practices](#best-practices)\n - [Secure Configuration Example](#secure-configuration-example)\n - [\ud83d\udcda API Reference](#-api-reference)\n - [\ud83d\udc65 Contributing](#-contributing)\n - [How to Contribute](#how-to-contribute)\n - [Development Environment](#development-environment)\n - [Pull Request Checklist](#pull-request-checklist)\n - [\ud83d\udcc4 License](#-license)\n - [\ud83e\udd1d Support](#-support)\n\n\n## \u2728 Features\n\n- \ud83d\udd04 **Dual Client**: Supports both synchronous (`APIClient`) and asynchronous (`AsyncAPIClient`) interfaces\n- \ud83d\udd12 **End-to-End Encryption**: Optional message encryption using AES-256-CBC\n- \ud83c\udf10 **Multiple HTTP Backends**: Native support for `requests`, `aiohttp`, and `httpx`\n- \ud83d\udd17 **Webhook Management**: Programmatically create, query, and delete webhooks\n- \u2699\ufe0f **Customizable Base URL**: Point to different API endpoints\n- \ud83d\udcbb **Full Type Hinting**: Fully typed for better development experience\n- \u26a0\ufe0f **Robust Error Handling**: Specific exceptions and clear error messages\n- \ud83d\udcc8 **Delivery Reports**: Track your message delivery status\n\n## \u2699\ufe0f Requirements\n\n- **Python**: 3.9 or higher\n- **HTTP Client** (choose one):\n - \ud83d\ude80 [requests](https://pypi.org/project/requests/) (synchronous)\n - \u26a1 [aiohttp](https://pypi.org/project/aiohttp/) (asynchronous)\n - \ud83c\udf08 [httpx](https://pypi.org/project/httpx/) (synchronous + asynchronous)\n\n**Optional Dependencies**:\n- \ud83d\udd12 [pycryptodome](https://pypi.org/project/pycryptodome/) - For end-to-end encryption support\n\n## \ud83d\udce6 Installation\n\n### Basic Installation\n\n```bash\npip install android-sms-gateway\n```\n\n### Installation with Specific HTTP Client\n\n```bash\n# Choose an HTTP client:\npip install android-sms-gateway[requests] # For synchronous use\npip install android-sms-gateway[aiohttp] # For asynchronous use\npip install android-sms-gateway[httpx] # For both synchronous and asynchronous use\n```\n\n### Installation with Encryption\n\n```bash\n# For encrypted messages:\npip install android-sms-gateway[encryption]\n\n# Or install everything:\npip install android-sms-gateway[requests,encryption]\n```\n\n## \ud83d\ude80 Quickstart\n\n### Initial Setup\n\n1. **Configure your credentials**:\n ```bash\n export ANDROID_SMS_GATEWAY_LOGIN=\"your_username\"\n export ANDROID_SMS_GATEWAY_PASSWORD=\"your_password\"\n ```\n\n2. **Basic usage example**:\n\n```python\nimport asyncio\nimport os\n\nfrom android_sms_gateway import client, domain\n\n# Configuration\nlogin = os.getenv(\"ANDROID_SMS_GATEWAY_LOGIN\")\npassword = os.getenv(\"ANDROID_SMS_GATEWAY_PASSWORD\")\n\n# Create message\nmessage = domain.Message(\n \"Hello! This is a test message.\",\n [\"+1234567890\"],\n with_delivery_report=True\n)\n\n# Synchronous Client\ndef sync_example():\n with client.APIClient(login, password) as c:\n # Send message\n state = c.send(message)\n print(f\"Message sent with ID: {state.id}\")\n \n # Check status\n status = c.get_state(state.id)\n print(f\"Status: {status.state}\")\n\n# Asynchronous Client\nasync def async_example():\n async with client.AsyncAPIClient(login, password) as c:\n # Send message\n state = await c.send(message)\n print(f\"Message sent with ID: {state.id}\")\n \n # Check status\n status = await c.get_state(state.id)\n print(f\"Status: {status.state}\")\n\nif __name__ == \"__main__\":\n print(\"=== Synchronous Example ===\")\n sync_example()\n \n print(\"\\n=== Asynchronous Example ===\")\n asyncio.run(async_example())\n```\n\n### Encryption Example\n\n```python\nfrom android_sms_gateway import client, domain, Encryptor\n\n# Encryption setup\nencryptor = Encryptor(\"my-super-secure-secret-passphrase\")\n\n# Encrypted message\nmessage = domain.Message(\n \"This message will be encrypted!\",\n [\"+1234567890\"],\n is_encrypted=True\n)\n\n# Client with encryption\nwith client.APIClient(login, password, encryptor=encryptor) as c:\n state = c.send(message)\n print(f\"Encrypted message sent: {state.id}\")\n```\n\n## \ud83e\udd16 Client Guide\n\n### Client Configuration\n\nBoth clients (`APIClient` and `AsyncAPIClient`) support these parameters:\n\n| Parameter | Type | Description | Default |\n| ----------- | ------------------------------ | ------------------- | ---------------------------------------- |\n| `login` | `str` | API username | **Required** |\n| `password` | `str` | API password | **Required** |\n| `base_url` | `str` | API base URL | `\"https://api.sms-gate.app/3rdparty/v1\"` |\n| `encryptor` | `Encryptor` | Encryption instance | `None` |\n| `http` | `HttpClient`/`AsyncHttpClient` | Custom HTTP client | Auto-detected |\n\n### Available Methods\n\n| Method | Description | Return Type |\n| ----------------------------------------- | -------------------- | ---------------------- |\n| `send(message: domain.Message)` | Send SMS message | `domain.MessageState` |\n| `get_state(id: str)` | Check message status | `domain.MessageState` |\n| `create_webhook(webhook: domain.Webhook)` | Create new webhook | `domain.Webhook` |\n| `get_webhooks()` | List all webhooks | `List[domain.Webhook]` |\n| `delete_webhook(id: str)` | Delete webhook | `None` |\n\n### Data Structures\n\n#### Message\n\n```python\nclass Message:\n message: str # Message text\n phone_numbers: List[str] # List of phone numbers\n with_delivery_report: bool = True # Delivery report\n is_encrypted: bool = False # Whether message is encrypted\n \n # Optional fields\n id: Optional[str] = None # Message ID\n ttl: Optional[int] = None # Time-to-live in seconds\n sim_number: Optional[int] = None # SIM number\n```\n\n#### MessageState\n\n```python\nclass MessageState:\n id: str # Unique message ID\n state: ProcessState # Current state (SENT, DELIVERED, etc.)\n recipients: List[RecipientState] # Per-recipient status\n is_hashed: bool # Whether message was hashed\n is_encrypted: bool # Whether message was encrypted\n```\n\n#### Webhook\n\n```python\nclass Webhook:\n id: Optional[str] # Webhook ID\n url: str # Callback URL\n event: WebhookEvent # Event type\n```\n\nFor more details, see [`domain.py`](./android_sms_gateway/domain.py).\n\n## \ud83c\udf10 HTTP Clients\n\nThe library automatically detects installed HTTP clients with this priority:\n\n| Client | Sync | Async |\n| -------- | ---- | ----- |\n| aiohttp | \u274c | 1\ufe0f\u20e3 |\n| requests | 1\ufe0f\u20e3 | \u274c |\n| httpx | 2\ufe0f\u20e3 | 2\ufe0f\u20e3 |\n\n### Using Specific Clients\n\n```python\nfrom android_sms_gateway import client, http\n\n# Force httpx usage\nclient.APIClient(..., http=http.HttpxHttpClient())\n\n# Force requests usage\nclient.APIClient(..., http=http.RequestsHttpClient())\n\n# Force aiohttp (async only)\nasync with client.AsyncAPIClient(..., http=http.AiohttpHttpClient()) as c:\n # ...\n```\n\n### Custom HTTP Client\n\nImplement your own HTTP client following the `http.HttpClient` (sync) or `ahttp.AsyncHttpClient` (async) protocols.\n\n## \ud83d\udd12 Security\n\n### Best Practices\n\n\u26a0\ufe0f **IMPORTANT**: Always follow these security practices:\n\n- \ud83d\udd10 **Credentials**: Store credentials in environment variables\n- \ud83d\udeab **Code**: Never expose credentials in client-side code\n- \ud83d\udd12 **HTTPS**: Use HTTPS for all production communications\n- \ud83d\udd11 **Encryption**: Use end-to-end encryption for sensitive messages\n- \ud83d\udd04 **Rotation**: Regularly rotate your credentials\n\n### Secure Configuration Example\n\n```python\nimport os\nfrom dotenv import load_dotenv\n\n# Load environment variables\nload_dotenv()\n\n# Secure configuration\nlogin = os.getenv(\"ANDROID_SMS_GATEWAY_LOGIN\")\npassword = os.getenv(\"ANDROID_SMS_GATEWAY_PASSWORD\")\n\nif not login or not password:\n raise ValueError(\"Credentials not configured!\")\n```\n\n## \ud83d\udcda API Reference\n\nFor complete API documentation including all available methods, request/response schemas, and error codes, visit:\n[\ud83d\udcd8 Official API Documentation](https://docs.sms-gate.app/integration/api/)\n\n## \ud83d\udc65 Contributing\n\nContributions are very welcome! \ud83c\udf89\n\n### How to Contribute\n\n1. \ud83c\udf74 Fork the repository\n2. \ud83c\udf3f Create your feature branch (`git checkout -b feature/NewFeature`)\n3. \ud83d\udcbe Commit your changes (`git commit -m 'feat: add new feature'`)\n4. \ud83d\udce4 Push to branch (`git push origin feature/NewFeature`)\n5. \ud83d\udd04 Open a Pull Request\n\n### Development Environment\n\n```bash\n# Clone repository\ngit clone https://github.com/android-sms-gateway/client-py.git\ncd client-py\n\n# Create virtual environment\npipenv install --dev --categories encryption,requests\npipenv shell\n```\n\n### Pull Request Checklist\n\n- [ ] Code follows style standards (black, isort, flake8)\n- [ ] Tests pass locally\n- [ ] Documentation updated\n- [ ] Test coverage maintained or improved\n\n## \ud83d\udcc4 License\n\nThis project is licensed under the **Apache License 2.0** - see [LICENSE](LICENSE) for details.\n\n## \ud83e\udd1d Support\n\n- \ud83d\udce7 **Email**: [support@sms-gate.app](mailto:support@sms-gate.app)\n- \ud83d\udcac **Discord**: [SMS Gateway Community](https://discord.gg/vv9raFK4gX)\n- \ud83d\udcd6 **Documentation**: [docs.sms-gate.app](https://docs.sms-gate.app)\n- \ud83d\udc1b **Issues**: [GitHub Issues](https://github.com/android-sms-gateway/client-py/issues)\n\n---\n\n**Note**: Android is a trademark of Google LLC. This project is not affiliated with or endorsed by Google.\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "A client library for sending and managing SMS messages via the SMS Gateway for Android API",
"version": "3.0.0",
"project_urls": {
"Homepage": "https://sms-gate.app",
"Repository": "https://github.com/android-sms-gateway/client-py"
},
"split_keywords": [
"android",
" sms",
" gateway"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "31c6e190662de827fc49277f38d0f93d058fbbde53cc6829548befd0f853df1c",
"md5": "201d21f8c6666821aa9bab2c80a87341",
"sha256": "0475d57208b544963253f802fcc424903e04ac09d4a6483bb74a6207e0b46778"
},
"downloads": -1,
"filename": "android_sms_gateway-3.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "201d21f8c6666821aa9bab2c80a87341",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 19869,
"upload_time": "2025-10-16T03:54:14",
"upload_time_iso_8601": "2025-10-16T03:54:14.026097Z",
"url": "https://files.pythonhosted.org/packages/31/c6/e190662de827fc49277f38d0f93d058fbbde53cc6829548befd0f853df1c/android_sms_gateway-3.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f3e2fdb184f72c6f7fbc892b8a14e6fe6b896bd13c6737b2670bf7406a3621ef",
"md5": "29576b4445496283a48b010c72f2f364",
"sha256": "413aae30660847f754e72b59f55e22b4c536cf5d34f027a975dfcca12832a4bc"
},
"downloads": -1,
"filename": "android_sms_gateway-3.0.0.tar.gz",
"has_sig": false,
"md5_digest": "29576b4445496283a48b010c72f2f364",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 26872,
"upload_time": "2025-10-16T03:54:15",
"upload_time_iso_8601": "2025-10-16T03:54:15.304304Z",
"url": "https://files.pythonhosted.org/packages/f3/e2/fdb184f72c6f7fbc892b8a14e6fe6b896bd13c6737b2670bf7406a3621ef/android_sms_gateway-3.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-16 03:54:15",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "android-sms-gateway",
"github_project": "client-py",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "android-sms-gateway"
}