diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index cf49012..059f863 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -48,7 +48,7 @@ jobs:
- name: Test with pytest
run: |
- pytest --cov=src/devo_global_comms_python --cov-report=xml --cov-report=html
+ pytest --cov=src/devhub_python --cov-report=xml --cov-report=html
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
diff --git a/README.md b/README.md
index f072816..01db6d4 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,11 @@
-# Devo Global Communications Python SDK
+# DevHub Python SDK
-[](https://badge.fury.io/py/devo-global-comms-python)
-[](https://pypi.org/project/devo-global-comms-python/)
-[](https://devotel.github.io/devo-global-comms-python/)
+[](https://badge.fury.io/py/devhub-python)
+[](https://pypi.org/project/devhub-python/)
+[](https://devotel.github.io/devhub-python/)
[](https://opensource.org/licenses/MIT)
-A Python SDK for the Devo Global Communications API, supporting SMS, Email, WhatsApp, RCS, and Contact management.
+A Python SDK for the DevHub API, supporting SMS, Email, WhatsApp, RCS, and Contact management.
## Features
@@ -20,13 +20,13 @@ A Python SDK for the Devo Global Communications API, supporting SMS, Email, What
## Installation
```bash
-pip install devo-global-comms-python
+pip install devhub-python
```
## Quick Start
```python
-from devo_global_comms_python import DevoClient
+from devhub_python import DevoClient
# Initialize the client
client = DevoClient(api_key="your-api-key")
@@ -61,7 +61,7 @@ print(f"WhatsApp message sent with ID: {whatsapp_response.id}")
The SDK uses API key authentication:
```python
-from devo_global_comms_python import DevoClient
+from devhub_python import DevoClient
client = DevoClient(api_key="your-api-key")
```
@@ -83,7 +83,7 @@ You can provide your own `requests.Session` for advanced configuration:
```python
import requests
-from devo_global_comms_python import DevoClient
+from devhub_python import DevoClient
session = requests.Session()
session.proxies = {"https": "https://proxy.example.com:8080"}
@@ -119,8 +119,8 @@ print(f"Status: {sms_response.status}")
```bash
# Clone the repository
-git clone https://github.com/devotel/devo-global-comms-python.git
-cd devo-global-comms-python
+git clone https://github.com/devotel/devhub-python.git
+cd devhub-python
# Install development dependencies
pip install -e ".[dev]"
@@ -136,7 +136,7 @@ pre-commit install
pytest
# Run with coverage
-pytest --cov=src/devo_global_comms_python
+pytest --cov=src/devhub_python
# Run specific test file
pytest tests/test_sms.py
@@ -171,8 +171,8 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
## Support
-- **Documentation**: [https://devotel.github.io/devo-global-comms-python/](https://devotel.github.io/devo-global-comms-python/)
-- **Issues**: [GitHub Issues](https://github.com/devotel/devo-global-comms-python/issues)
+- **Documentation**: [https://devotel.github.io/devhub-python/](https://devotel.github.io/devhub-python/)
+- **Issues**: [GitHub Issues](https://github.com/devotel/devhub-python/issues)
- **Email**: [support@devotel.io](mailto:support@devotel.io)
## Changelog
diff --git a/docs/error_handling.md b/docs/error_handling.md
index fc9f608..62e90af 100644
--- a/docs/error_handling.md
+++ b/docs/error_handling.md
@@ -1,13 +1,13 @@
# Error Handling
-The Devo SDK provides comprehensive error handling to help you build robust applications.
+The DevHub SDK provides comprehensive error handling to help you build robust applications.
## Exception Types
The SDK uses a hierarchy of exceptions for different error scenarios:
```python
-from devo_global_comms_python.exceptions import DevoException
+from devhub_python.exceptions import DevoException
```
All SDK exceptions inherit from `DevoException`, making it easy to catch any SDK-related error.
@@ -17,7 +17,7 @@ All SDK exceptions inherit from `DevoException`, making it easy to catch any SDK
### Simple Try-Catch
```python
-from devo_global_comms_python.exceptions import DevoException
+from devhub_python.exceptions import DevoException
try:
sms_response = client.sms.send_sms(
@@ -81,7 +81,7 @@ except DevoException as e:
### Missing Required Fields
```python
-from devo_global_comms_python.models.contacts import CreateContactDto
+from devhub_python.models.contacts import CreateContactDto
try:
# Missing required data
@@ -97,7 +97,7 @@ except DevoException as e:
```python
import time
-from devo_global_comms_python.exceptions import DevoException
+from devhub_python.exceptions import DevoException
def send_with_retry(client, recipient, message, max_retries=3):
for attempt in range(max_retries):
@@ -122,7 +122,7 @@ def send_with_retry(client, recipient, message, max_retries=3):
```python
import time
import random
-from devo_global_comms_python.exceptions import DevoException
+from devhub_python.exceptions import DevoException
def send_with_backoff(client, recipient, message, max_retries=3):
for attempt in range(max_retries):
@@ -148,7 +148,7 @@ def send_with_backoff(client, recipient, message, max_retries=3):
### Fallback to Alternative Channels
```python
-from devo_global_comms_python.exceptions import DevoException
+from devhub_python.exceptions import DevoException
def send_message_with_fallback(client, recipient, message):
"""Try SMS first, fallback to WhatsApp if SMS fails."""
@@ -191,7 +191,7 @@ except DevoException as e:
```python
import logging
-from devo_global_comms_python.exceptions import DevoException
+from devhub_python.exceptions import DevoException
# Configure logging
logging.basicConfig(level=logging.INFO)
diff --git a/docs/examples.md b/docs/examples.md
index 744ddfd..7c57721 100644
--- a/docs/examples.md
+++ b/docs/examples.md
@@ -1,6 +1,6 @@
# Examples
-This page contains practical examples to help you get started with the Devo SDK.
+This page contains practical examples to help you get started with the DevHub SDK.
## Complete Working Examples
@@ -18,12 +18,12 @@ For detailed, working examples of each feature, check out the `examples/` direct
### Send the Same Message Across All Channels
```python
-from devo_global_comms_python import DevoClient
-from devo_global_comms_python.exceptions import DevoException
+from devhub_python import DevoClient
+from devhub_python.exceptions import DevoException
client = DevoClient(api_key="your-api-key")
recipient = "+1234567890"
-message = "Hello from Devo SDK!"
+message = "Hello from DevHub SDK!"
# Send via SMS
try:
@@ -62,8 +62,8 @@ except DevoException as e:
### Complete Contact Lifecycle
```python
-from devo_global_comms_python.models.contacts import CreateContactDto, UpdateContactDto
-from devo_global_comms_python.models.contact_groups import CreateContactsGroupDto
+from devhub_python.models.contacts import CreateContactDto, UpdateContactDto
+from devhub_python.models.contact_groups import CreateContactsGroupDto
# 1. Create a contact
contact_data = CreateContactDto(
@@ -87,7 +87,7 @@ group = client.services.contact_groups.create(group_data)
print(f"Created group: {group.id}")
# 3. Add contact to group
-from devo_global_comms_python.models.contacts import AssignToContactsGroupDto
+from devhub_python.models.contacts import AssignToContactsGroupDto
assignment = AssignToContactsGroupDto(
contact_ids=[contact.id],
@@ -112,7 +112,7 @@ print(f"Welcome SMS sent: {welcome_sms.id}")
```python
import time
-from devo_global_comms_python.exceptions import DevoException
+from devhub_python.exceptions import DevoException
def send_message_with_retry(client, recipient, message, max_retries=3):
"""Send a message with retry logic."""
@@ -158,7 +158,7 @@ response = send_message_with_retry(client, "+1234567890", "Important message!")
```python
import os
-from devo_global_comms_python import DevoClient
+from devhub_python import DevoClient
# Set environment variables
# export DEVO_API_KEY="your-api-key"
diff --git a/docs/index.md b/docs/index.md
index 0ac38f3..043a7e8 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,6 +1,6 @@
-# Devo Global Communications Python SDK
+# DevHub Python SDK
-A Python SDK for the Devo Global Communications API, supporting SMS, Email, WhatsApp, RCS, and Contact management.
+A Python SDK for the DevHub API, supporting SMS, Email, WhatsApp, RCS, and Contact management.
## Features
@@ -13,13 +13,13 @@ A Python SDK for the Devo Global Communications API, supporting SMS, Email, What
## Installation
```bash
-pip install devo-global-comms-python
+pip install devhub-python
```
## Quick Example
```python
-from devo_global_comms_python import DevoClient
+from devhub_python import DevoClient
# Initialize the client
client = DevoClient(api_key="your-api-key")
@@ -39,7 +39,7 @@ Continue to the [Quick Start](quickstart.md) guide to learn how to use the SDK.
## SDK Overview
-The Devo SDK is organized into logical resources:
+The DevHub SDK is organized into logical resources:
| Resource | Purpose | Example Usage |
|----------|---------|---------------|
@@ -52,5 +52,5 @@ The Devo SDK is organized into logical resources:
## Support
-- **Issues**: [GitHub Issues](https://github.com/devotel/devo-global-comms-python/issues)
+- **Issues**: [GitHub Issues](https://github.com/devotel/devhub-python/issues)
- **Email**: [support@devotel.io](mailto:support@devotel.io)
diff --git a/docs/quickstart.md b/docs/quickstart.md
index 2ebe5f2..57c6a68 100644
--- a/docs/quickstart.md
+++ b/docs/quickstart.md
@@ -1,13 +1,13 @@
# Quick Start
-This guide will help you get started with the Devo Global Communications Python SDK.
+This guide will help you get started with the DevHub Python SDK.
## Installation
Install the SDK using pip:
```bash
-pip install devo-global-comms-python
+pip install devhub-python
```
## Authentication
@@ -15,7 +15,7 @@ pip install devo-global-comms-python
Initialize the client with your API key:
```python
-from devo_global_comms_python import DevoClient
+from devhub_python import DevoClient
client = DevoClient(api_key="your-api-key")
```
@@ -30,7 +30,7 @@ client = DevoClient(api_key="your-api-key")
```python
sms_response = client.sms.send_sms(
recipient="+1234567890",
- message="Hello from Devo SDK!",
+ message="Hello from DevHub SDK!",
sender="+1987654321"
)
print(f"SMS sent with ID: {sms_response.id}")
@@ -42,7 +42,7 @@ print(f"SMS sent with ID: {sms_response.id}")
email_response = client.email.send_email(
recipient="user@example.com",
subject="Welcome!",
- content="Thank you for using Devo SDK.",
+ content="Thank you for using DevHub SDK.",
sender_email="welcome@example.com"
)
print(f"Email sent with ID: {email_response.id}")
@@ -63,7 +63,7 @@ print(f"WhatsApp message sent with ID: {whatsapp_response.id}")
Always wrap your API calls in try-catch blocks:
```python
-from devo_global_comms_python.exceptions import DevoException
+from devhub_python.exceptions import DevoException
try:
sms_response = client.sms.send_sms(
diff --git a/docs/sdk/contact_groups.md b/docs/sdk/contact_groups.md
index b31a6c3..dc09745 100644
--- a/docs/sdk/contact_groups.md
+++ b/docs/sdk/contact_groups.md
@@ -5,7 +5,7 @@ The Contact Groups resource allows you to organize contacts into groups for easi
## Creating Contact Groups
```python
-from devo_global_comms_python.models.contact_groups import CreateContactsGroupDto
+from devhub_python.models.contact_groups import CreateContactsGroupDto
# Create a contact group
group_data = CreateContactsGroupDto(
@@ -33,7 +33,7 @@ for group in groups_response.groups:
## Updating Contact Groups
```python
-from devo_global_comms_python.models.contact_groups import UpdateContactsGroupDto
+from devhub_python.models.contact_groups import UpdateContactsGroupDto
# Update a contact group
update_data = UpdateContactsGroupDto(
@@ -86,7 +86,7 @@ print(f"Found {search_results.total} groups matching 'VIP'")
## Deleting Contact Groups
```python
-from devo_global_comms_python.models.contact_groups import DeleteContactsGroupsDto
+from devhub_python.models.contact_groups import DeleteContactsGroupsDto
# Delete contact groups
delete_data = DeleteContactsGroupsDto(
@@ -101,7 +101,7 @@ print("Contact group deleted successfully")
## Error Handling
```python
-from devo_global_comms_python.exceptions import DevoException
+from devhub_python.exceptions import DevoException
try:
group = client.services.contact_groups.create(group_data)
diff --git a/docs/sdk/contacts.md b/docs/sdk/contacts.md
index beb0b6b..44b8cd0 100644
--- a/docs/sdk/contacts.md
+++ b/docs/sdk/contacts.md
@@ -5,7 +5,7 @@ The Contacts resource allows you to manage contact information through the servi
## Creating Contacts
```python
-from devo_global_comms_python.models.contacts import CreateContactDto
+from devhub_python.models.contacts import CreateContactDto
# Create a contact
contact_data = CreateContactDto(
@@ -36,7 +36,7 @@ for contact in contacts_response.contacts:
## Updating Contacts
```python
-from devo_global_comms_python.models.contacts import UpdateContactDto
+from devhub_python.models.contacts import UpdateContactDto
# Update a contact
update_data = UpdateContactDto(
@@ -67,7 +67,7 @@ print(f"Found {filtered_contacts.total} contacts matching filters")
### Create Custom Field
```python
-from devo_global_comms_python.models.contacts import CreateCustomFieldDto
+from devhub_python.models.contacts import CreateCustomFieldDto
field_data = CreateCustomFieldDto(
name="Department",
@@ -92,7 +92,7 @@ print(f"Found {custom_fields.total} custom fields")
### Assign to Group
```python
-from devo_global_comms_python.models.contacts import AssignToContactsGroupDto
+from devhub_python.models.contacts import AssignToContactsGroupDto
assignment_data = AssignToContactsGroupDto(
contact_ids=[contact.id],
@@ -113,7 +113,7 @@ print("Contact unassigned from group")
## Deleting Contacts
```python
-from devo_global_comms_python.models.contacts import DeleteContactsDto
+from devhub_python.models.contacts import DeleteContactsDto
# Delete contacts
delete_data = DeleteContactsDto(contact_ids=[contact.id])
@@ -124,7 +124,7 @@ print("Contact deleted successfully")
## Error Handling
```python
-from devo_global_comms_python.exceptions import DevoException
+from devhub_python.exceptions import DevoException
try:
contact = client.services.contacts.create(contact_data)
diff --git a/docs/sdk/email.md b/docs/sdk/email.md
index 8d9b62a..76fb70b 100644
--- a/docs/sdk/email.md
+++ b/docs/sdk/email.md
@@ -41,7 +41,7 @@ Email methods return response objects with fields like:
## Error Handling
```python
-from devo_global_comms_python.exceptions import DevoException
+from devhub_python.exceptions import DevoException
try:
email_response = client.email.send_email(
diff --git a/docs/sdk/rcs.md b/docs/sdk/rcs.md
index 56e34d7..3d73449 100644
--- a/docs/sdk/rcs.md
+++ b/docs/sdk/rcs.md
@@ -30,7 +30,7 @@ print(f"Rich card sent with ID: {rich_card.id}")
```python
# Using the general send_message method
-from devo_global_comms_python.models.rcs import RcsSendMessageSerializer
+from devhub_python.models.rcs import RcsSendMessageSerializer
message_data = RcsSendMessageSerializer(
recipient="+1234567890",
@@ -66,7 +66,7 @@ RCS methods return response objects with fields like:
## Error Handling
```python
-from devo_global_comms_python.exceptions import DevoException
+from devhub_python.exceptions import DevoException
try:
message = client.rcs.send_text(
diff --git a/docs/sdk/sms.md b/docs/sdk/sms.md
index ad04e9b..89045db 100644
--- a/docs/sdk/sms.md
+++ b/docs/sdk/sms.md
@@ -55,7 +55,7 @@ for number_info in numbers.numbers:
## Error Handling
```python
-from devo_global_comms_python.exceptions import DevoException
+from devhub_python.exceptions import DevoException
try:
sms_response = client.sms.send_sms(
diff --git a/docs/sdk/whatsapp.md b/docs/sdk/whatsapp.md
index e6027b8..aaf0002 100644
--- a/docs/sdk/whatsapp.md
+++ b/docs/sdk/whatsapp.md
@@ -39,7 +39,7 @@ WhatsApp methods return response objects with fields like:
## Error Handling
```python
-from devo_global_comms_python.exceptions import DevoException
+from devhub_python.exceptions import DevoException
try:
message = client.whatsapp.send_text_message(
diff --git a/examples/README.md b/examples/README.md
index 63e6eeb..e59cf8a 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -1,6 +1,6 @@
-# Devo Global Communications SDK - Examples
+# DevHub SDK - Examples
-This directory contains comprehensive examples for using the Devo Global Communications SDK. Each resource has its own dedicated example file with detailed demonstrations of the available functionality.
+This directory contains comprehensive examples for using the DevHub SDK. Each resource has its own dedicated example file with detailed demonstrations of the available functionality.
## 📁 Example Files
@@ -96,7 +96,7 @@ The unified messaging resource provides a single API endpoint to send messages t
### 📝 Example Usage
```python
-from devo_global_comms_python.models.messages import SendMessageDto
+from devhub_python.models.messages import SendMessageDto
# Send SMS
sms_data = SendMessageDto(
@@ -199,7 +199,7 @@ The contact groups resource is fully implemented with all CRUD operations:
### 📝 Example Usage
```python
-from devo_global_comms_python.models.contact_groups import CreateContactsGroupDto
+from devhub_python.models.contact_groups import CreateContactsGroupDto
# Create new contact group (using new services namespace)
group_data = CreateContactsGroupDto(
@@ -246,7 +246,7 @@ All examples include comprehensive error handling with:
All examples use API key authentication:
```python
-from devo_global_comms_python import DevoClient
+from devhub_python import DevoClient
client = DevoClient(api_key="your_api_key_here")
```
diff --git a/examples/contact_groups_example.py b/examples/contact_groups_example.py
index 6b71d20..3e7af98 100644
--- a/examples/contact_groups_example.py
+++ b/examples/contact_groups_example.py
@@ -1,12 +1,8 @@
import os
from datetime import datetime
-from devo_global_comms_python import DevoClient
-from devo_global_comms_python.models.contact_groups import (
- CreateContactsGroupDto,
- DeleteContactsGroupsDto,
- UpdateContactsGroupDto,
-)
+from devhub_python import DevoClient
+from devhub_python.models.contact_groups import CreateContactsGroupDto, DeleteContactsGroupsDto, UpdateContactsGroupDto
def main():
@@ -18,7 +14,7 @@ def main():
client = DevoClient(api_key=api_key)
- print("Devo Global Communications - Contact Groups Management Example")
+ print("DevHub - Contact Groups Management Example")
print("=" * 75)
print("Using services namespace: client.services.contact_groups")
print()
diff --git a/examples/contacts_example.py b/examples/contacts_example.py
index a12ce41..01c7c84 100644
--- a/examples/contacts_example.py
+++ b/examples/contacts_example.py
@@ -1,8 +1,8 @@
import os
-from devo_global_comms_python import DevoClient
-from devo_global_comms_python.exceptions import DevoException
-from devo_global_comms_python.models.contacts import (
+from devhub_python import DevoClient
+from devhub_python.exceptions import DevoException
+from devhub_python.models.contacts import (
AssignToContactsGroupDto,
CreateContactDto,
CreateCustomFieldDto,
@@ -19,7 +19,7 @@ def main():
return
client = DevoClient(api_key=api_key)
- print("Devo Global Communications - Contacts Management Example")
+ print("DevHub - Contacts Management Example")
print("=" * 60)
try:
diff --git a/examples/email_example.py b/examples/email_example.py
index 67c2567..37a0a16 100644
--- a/examples/email_example.py
+++ b/examples/email_example.py
@@ -1,6 +1,6 @@
import os
-from devo_global_comms_python import DevoClient, DevoException
+from devhub_python import DevoClient, DevoException
def main():
@@ -21,7 +21,7 @@ def main():
print("📤 Sending email...")
email_response = client.email.send_email(
subject="Test Email from Devo SDK",
- body="This is a test email sent using the Devo Global Communications Python SDK.",
+ body="This is a test email sent using the DevHub Python SDK.",
sender="sender@example.com",
recipient="recipient@example.com",
)
diff --git a/examples/omni_channel_example.py b/examples/omni_channel_example.py
index 1e4a61b..92d4472 100644
--- a/examples/omni_channel_example.py
+++ b/examples/omni_channel_example.py
@@ -1,8 +1,8 @@
import os
from datetime import datetime
-from devo_global_comms_python import DevoClient
-from devo_global_comms_python.models.messages import SendMessageDto
+from devhub_python import DevoClient
+from devhub_python.models.messages import SendMessageDto
def main():
@@ -21,7 +21,7 @@ def main():
client = DevoClient(api_key=api_key)
- print("Devo Global Communications - Omni-channel Messaging Example")
+ print("DevHub - Omni-channel Messaging Example")
print("=" * 70)
# Example 1: Send SMS Message
@@ -54,12 +54,12 @@ def main():
to="recipient@example.com",
**{"from": "sender@yourcompany.com"}, # Use dict unpacking for 'from' field
payload={
- "subject": "Welcome to Devo Global Communications!",
+ "subject": "Welcome to DevHub!",
"text": "Hello! This is a plain text email sent via our omni-channel API.",
"html": """
- Welcome to Devo Global Communications!
+ Welcome to DevHub!
This is an HTML email sent via our omni-channel API.
Key features:
@@ -209,7 +209,7 @@ def main():
"rich_card": {
"standalone_card": {
"card_content": {
- "title": "Devo Global Communications",
+ "title": "DevHub",
"description": "Experience the power of omni-channel messaging with our unified API.",
"media": {
"height": "TALL",
diff --git a/examples/rcs_example.py b/examples/rcs_example.py
index 28fe1d0..3f9a424 100644
--- a/examples/rcs_example.py
+++ b/examples/rcs_example.py
@@ -1,7 +1,7 @@
import os
-from devo_global_comms_python import DevoClient, DevoException
-from devo_global_comms_python.models.rcs import RcsSendMessageSerializer
+from devhub_python import DevoClient, DevoException
+from devhub_python.models.rcs import RcsSendMessageSerializer
def main():
diff --git a/examples/sms_example.py b/examples/sms_example.py
index 6dbfcde..8a500d3 100644
--- a/examples/sms_example.py
+++ b/examples/sms_example.py
@@ -1,6 +1,6 @@
import os
-from devo_global_comms_python import DevoClient, DevoException
+from devhub_python import DevoClient, DevoException
def main():
diff --git a/examples/whatsapp_example.py b/examples/whatsapp_example.py
index 6ce223f..af8cb29 100644
--- a/examples/whatsapp_example.py
+++ b/examples/whatsapp_example.py
@@ -1,7 +1,7 @@
import os
-from devo_global_comms_python import DevoClient, DevoException
-from devo_global_comms_python.models.whatsapp import (
+from devhub_python import DevoClient, DevoException
+from devhub_python.models.whatsapp import (
BodyComponent,
ButtonsComponent,
FooterComponent,
@@ -305,7 +305,7 @@ def main():
print("\nWHATSAPP TEMPLATE MESSAGE WITH IMAGE EXAMPLE")
print("-" * 45)
- from devo_global_comms_python.models.whatsapp import ImageParameter
+ from devhub_python.models.whatsapp import ImageParameter
print("Sending template message with image header...")
diff --git a/mkdocs.yml b/mkdocs.yml
index 573b77d..b4e4e2e 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -1,8 +1,8 @@
-site_name: Devo Global Communications Python SDK
-site_description: Python SDK for Devo Global Communications API
-site_url: https://devotel.github.io/devo-global-comms-python/
-repo_url: https://github.com/devotel/devo-global-comms-python
-repo_name: devotel/devo-global-comms-python
+site_name: DevHub Python SDK
+site_description: Python SDK for DevHub API
+site_url: https://devotel.github.io/devhub-python/
+repo_url: https://github.com/devotel/devhub-python
+repo_name: devotel/devhub-python
theme:
name: material
diff --git a/pyproject.toml b/pyproject.toml
index af1a62a..223113a 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -3,14 +3,14 @@ requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
-name = "devo-global-comms-python"
+name = "devhub-python"
version = "0.1.0"
-description = "Python SDK for Devo Global Communications API"
+description = "Python SDK for DevHub API"
readme = "README.md"
requires-python = ">=3.8"
license = "MIT"
authors = [
- { name = "Devo Team", email = "support@devotel.io" },
+ { name = "DevHub Team", email = "support@devotel.io" },
]
keywords = ["api", "communication", "sms", "email", "whatsapp", "rcs"]
classifiers = [
@@ -50,13 +50,13 @@ docs = [
]
[project.urls]
-Homepage = "https://github.com/devotel/devo-global-comms-python"
-Documentation = "https://devo-global-comms-python.readthedocs.io"
-Repository = "https://github.com/devotel/devo-global-comms-python"
-Issues = "https://github.com/devotel/devo-global-comms-python/issues"
+Homepage = "https://github.com/devotel/devhub-python"
+Documentation = "https://devhub-python.readthedocs.io"
+Repository = "https://github.com/devotel/devhub-python"
+Issues = "https://github.com/devotel/devhub-python/issues"
[tool.hatch.version]
-path = "src/devo_global_comms_python/__init__.py"
+path = "src/devhub_python/__init__.py"
[tool.hatch.build.targets.sdist]
include = [
@@ -67,7 +67,7 @@ include = [
]
[tool.hatch.build.targets.wheel]
-packages = ["src/devo_global_comms_python"]
+packages = ["src/devhub_python"]
[tool.hatch.build]
include = ["src/"]
@@ -130,7 +130,7 @@ python_functions = ["test_*"]
addopts = [
"--strict-markers",
"--strict-config",
- "--cov=src/devo_global_comms_python",
+ "--cov=src/devhub_python",
"--cov-report=html",
"--cov-report=term-missing",
"--cov-fail-under=80",
diff --git a/src/devo_global_comms_python/__init__.py b/src/devhub_python/__init__.py
similarity index 100%
rename from src/devo_global_comms_python/__init__.py
rename to src/devhub_python/__init__.py
diff --git a/src/devo_global_comms_python/auth/__init__.py b/src/devhub_python/auth/__init__.py
similarity index 100%
rename from src/devo_global_comms_python/auth/__init__.py
rename to src/devhub_python/auth/__init__.py
diff --git a/src/devo_global_comms_python/auth/api_key.py b/src/devhub_python/auth/api_key.py
similarity index 100%
rename from src/devo_global_comms_python/auth/api_key.py
rename to src/devhub_python/auth/api_key.py
diff --git a/src/devo_global_comms_python/client.py b/src/devhub_python/client.py
similarity index 98%
rename from src/devo_global_comms_python/client.py
rename to src/devhub_python/client.py
index 6e02c74..7a2a635 100644
--- a/src/devo_global_comms_python/client.py
+++ b/src/devhub_python/client.py
@@ -18,7 +18,7 @@
class DevoClient:
"""
- Main client for interacting with the Devo Global Communications API.
+ Main client for interacting with the DevHub API.
This client follows a resource-based pattern with two main namespaces:
- Messaging resources: Direct access to communication channels (SMS, Email, etc.)
@@ -41,7 +41,7 @@ class DevoClient:
... print(f"Group: {group.name}")
>>>
>>> # Omni-channel messaging
- >>> from devo_global_comms_python.models.messages import SendMessageDto
+ >>> from devhub_python.models.messages import SendMessageDto
>>> message = client.messages.send(SendMessageDto(
... channel="sms",
... to="+1234567890",
diff --git a/src/devo_global_comms_python/exceptions.py b/src/devhub_python/exceptions.py
similarity index 100%
rename from src/devo_global_comms_python/exceptions.py
rename to src/devhub_python/exceptions.py
diff --git a/src/devo_global_comms_python/models/__init__.py b/src/devhub_python/models/__init__.py
similarity index 100%
rename from src/devo_global_comms_python/models/__init__.py
rename to src/devhub_python/models/__init__.py
diff --git a/src/devo_global_comms_python/models/contact_groups.py b/src/devhub_python/models/contact_groups.py
similarity index 100%
rename from src/devo_global_comms_python/models/contact_groups.py
rename to src/devhub_python/models/contact_groups.py
diff --git a/src/devo_global_comms_python/models/contacts.py b/src/devhub_python/models/contacts.py
similarity index 99%
rename from src/devo_global_comms_python/models/contacts.py
rename to src/devhub_python/models/contacts.py
index 15c16f1..39b76f3 100644
--- a/src/devo_global_comms_python/models/contacts.py
+++ b/src/devhub_python/models/contacts.py
@@ -6,7 +6,7 @@
class Contact(BaseModel):
"""
- Contact model representing a contact in the Devo Global Communications API.
+ Contact model representing a contact in the DevHub API.
"""
id: str = Field(description="Unique identifier for the contact")
diff --git a/src/devo_global_comms_python/models/email.py b/src/devhub_python/models/email.py
similarity index 97%
rename from src/devo_global_comms_python/models/email.py
rename to src/devhub_python/models/email.py
index 6986943..9005b01 100644
--- a/src/devo_global_comms_python/models/email.py
+++ b/src/devhub_python/models/email.py
@@ -54,7 +54,7 @@ class EmailMessage(BaseModel):
"""
Email message model.
- Represents an email message sent through the Devo Global Communications API.
+ Represents an email message sent through the DevHub API.
"""
id: str = Field(..., description="Unique identifier for the message")
diff --git a/src/devo_global_comms_python/models/messages.py b/src/devhub_python/models/messages.py
similarity index 98%
rename from src/devo_global_comms_python/models/messages.py
rename to src/devhub_python/models/messages.py
index ce219bc..6024307 100644
--- a/src/devo_global_comms_python/models/messages.py
+++ b/src/devhub_python/models/messages.py
@@ -57,7 +57,7 @@ class Message(BaseModel):
Unified message model.
Represents a message from any channel (SMS, Email, WhatsApp, RCS)
- in the Devo Global Communications API.
+ in the DevHub API.
"""
id: str = Field(..., description="Unique identifier for the message")
diff --git a/src/devo_global_comms_python/models/rcs.py b/src/devhub_python/models/rcs.py
similarity index 99%
rename from src/devo_global_comms_python/models/rcs.py
rename to src/devhub_python/models/rcs.py
index 68d1851..9599fa4 100644
--- a/src/devo_global_comms_python/models/rcs.py
+++ b/src/devhub_python/models/rcs.py
@@ -226,7 +226,7 @@ class RCSMessage(BaseModel):
"""
RCS (Rich Communication Services) message model.
- Represents an RCS message sent through the Devo Global Communications API.
+ Represents an RCS message sent through the DevHub API.
"""
id: str = Field(..., description="Unique identifier for the message")
diff --git a/src/devo_global_comms_python/models/sms.py b/src/devhub_python/models/sms.py
similarity index 100%
rename from src/devo_global_comms_python/models/sms.py
rename to src/devhub_python/models/sms.py
diff --git a/src/devo_global_comms_python/models/whatsapp.py b/src/devhub_python/models/whatsapp.py
similarity index 99%
rename from src/devo_global_comms_python/models/whatsapp.py
rename to src/devhub_python/models/whatsapp.py
index 6534799..bfc2f7b 100644
--- a/src/devo_global_comms_python/models/whatsapp.py
+++ b/src/devhub_python/models/whatsapp.py
@@ -323,7 +323,7 @@ class WhatsAppMessage(BaseModel):
"""
WhatsApp message model.
- Represents a WhatsApp message sent through the Devo Global Communications API.
+ Represents a WhatsApp message sent through the DevHub API.
"""
id: str = Field(..., description="Unique identifier for the message")
diff --git a/src/devo_global_comms_python/resources/__init__.py b/src/devhub_python/resources/__init__.py
similarity index 100%
rename from src/devo_global_comms_python/resources/__init__.py
rename to src/devhub_python/resources/__init__.py
diff --git a/src/devo_global_comms_python/resources/base.py b/src/devhub_python/resources/base.py
similarity index 92%
rename from src/devo_global_comms_python/resources/base.py
rename to src/devhub_python/resources/base.py
index 44b3bd9..02e5d68 100644
--- a/src/devo_global_comms_python/resources/base.py
+++ b/src/devhub_python/resources/base.py
@@ -1,5 +1,5 @@
from abc import ABC
-from typing import TYPE_CHECKING, Any, Dict, Optional
+from typing import TYPE_CHECKING
if TYPE_CHECKING:
from ..client import DevoClient
diff --git a/src/devo_global_comms_python/resources/contact_groups.py b/src/devhub_python/resources/contact_groups.py
similarity index 100%
rename from src/devo_global_comms_python/resources/contact_groups.py
rename to src/devhub_python/resources/contact_groups.py
diff --git a/src/devo_global_comms_python/resources/contacts.py b/src/devhub_python/resources/contacts.py
similarity index 100%
rename from src/devo_global_comms_python/resources/contacts.py
rename to src/devhub_python/resources/contacts.py
diff --git a/src/devo_global_comms_python/resources/email.py b/src/devhub_python/resources/email.py
similarity index 100%
rename from src/devo_global_comms_python/resources/email.py
rename to src/devhub_python/resources/email.py
diff --git a/src/devo_global_comms_python/resources/messages.py b/src/devhub_python/resources/messages.py
similarity index 100%
rename from src/devo_global_comms_python/resources/messages.py
rename to src/devhub_python/resources/messages.py
diff --git a/src/devo_global_comms_python/resources/rcs.py b/src/devhub_python/resources/rcs.py
similarity index 100%
rename from src/devo_global_comms_python/resources/rcs.py
rename to src/devhub_python/resources/rcs.py
diff --git a/src/devo_global_comms_python/resources/sms.py b/src/devhub_python/resources/sms.py
similarity index 100%
rename from src/devo_global_comms_python/resources/sms.py
rename to src/devhub_python/resources/sms.py
diff --git a/src/devo_global_comms_python/resources/whatsapp.py b/src/devhub_python/resources/whatsapp.py
similarity index 100%
rename from src/devo_global_comms_python/resources/whatsapp.py
rename to src/devhub_python/resources/whatsapp.py
diff --git a/src/devo_global_comms_python/services.py b/src/devhub_python/services.py
similarity index 100%
rename from src/devo_global_comms_python/services.py
rename to src/devhub_python/services.py
diff --git a/src/devo_global_comms_python/utils.py b/src/devhub_python/utils.py
similarity index 100%
rename from src/devo_global_comms_python/utils.py
rename to src/devhub_python/utils.py
diff --git a/tests/conftest.py b/tests/conftest.py
index ffe3c56..361caff 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -2,7 +2,7 @@
import pytest
-from devo_global_comms_python import DevoClient
+from devhub_python import DevoClient
@pytest.fixture
diff --git a/tests/test_client.py b/tests/test_client.py
index e45a4b6..0abc662 100644
--- a/tests/test_client.py
+++ b/tests/test_client.py
@@ -3,8 +3,8 @@
import pytest
import requests
-from devo_global_comms_python import DevoClient
-from devo_global_comms_python.exceptions import DevoAPIException, DevoAuthenticationException
+from devhub_python import DevoClient
+from devhub_python.exceptions import DevoAPIException, DevoAuthenticationException
class TestDevoClient:
diff --git a/tests/test_contact_groups.py b/tests/test_contact_groups.py
index afd735f..80a7c38 100644
--- a/tests/test_contact_groups.py
+++ b/tests/test_contact_groups.py
@@ -3,15 +3,15 @@
import pytest
-from devo_global_comms_python import DevoClient
-from devo_global_comms_python.models.contact_groups import (
+from devhub_python import DevoClient
+from devhub_python.models.contact_groups import (
ContactsGroup,
ContactsGroupListResponse,
CreateContactsGroupDto,
DeleteContactsGroupsDto,
UpdateContactsGroupDto,
)
-from devo_global_comms_python.resources.contact_groups import ContactGroupsResource
+from devhub_python.resources.contact_groups import ContactGroupsResource
class TestContactGroupsResource:
diff --git a/tests/test_contacts.py b/tests/test_contacts.py
index bdfc4f3..cdc9e53 100644
--- a/tests/test_contacts.py
+++ b/tests/test_contacts.py
@@ -2,9 +2,9 @@
import pytest
-from devo_global_comms_python import DevoClient
-from devo_global_comms_python.exceptions import DevoValidationException
-from devo_global_comms_python.models.contacts import (
+from devhub_python import DevoClient
+from devhub_python.exceptions import DevoValidationException
+from devhub_python.models.contacts import (
AssignToContactsGroupDto,
CommonDeleteDto,
ContactSerializer,
@@ -19,7 +19,7 @@
UpdateContactDto,
UpdateCustomFieldDto,
)
-from devo_global_comms_python.resources.contacts import ContactsResource
+from devhub_python.resources.contacts import ContactsResource
class TestContactsResource:
diff --git a/tests/test_email.py b/tests/test_email.py
index ec02dcd..2cc35fd 100644
--- a/tests/test_email.py
+++ b/tests/test_email.py
@@ -3,8 +3,8 @@
import pytest
-from devo_global_comms_python.exceptions import DevoValidationException
-from devo_global_comms_python.resources.email import EmailResource
+from devhub_python.exceptions import DevoValidationException
+from devhub_python.resources.email import EmailResource
class TestEmailResource:
diff --git a/tests/test_messages.py b/tests/test_messages.py
index 3b4b4de..d6cef38 100644
--- a/tests/test_messages.py
+++ b/tests/test_messages.py
@@ -3,8 +3,8 @@
import pytest
-from devo_global_comms_python.models.messages import SendMessageDto, SendMessageSerializer
-from devo_global_comms_python.resources.messages import MessagesResource
+from devhub_python.models.messages import SendMessageDto, SendMessageSerializer
+from devhub_python.resources.messages import MessagesResource
class TestMessagesResource:
diff --git a/tests/test_rcs.py b/tests/test_rcs.py
index 92c0977..38f295a 100644
--- a/tests/test_rcs.py
+++ b/tests/test_rcs.py
@@ -2,14 +2,9 @@
import pytest
-from devo_global_comms_python.client import DevoClient
-from devo_global_comms_python.exceptions import DevoInvalidPhoneNumberException, DevoValidationException
-from devo_global_comms_python.models.rcs import (
- RcsAccountSerializer,
- RCSMessage,
- RcsSendMessageSerializer,
- SuccessSerializer,
-)
+from devhub_python.client import DevoClient
+from devhub_python.exceptions import DevoInvalidPhoneNumberException, DevoValidationException
+from devhub_python.models.rcs import RcsAccountSerializer, RCSMessage, RcsSendMessageSerializer, SuccessSerializer
@pytest.fixture
diff --git a/tests/test_sandbox.py b/tests/test_sandbox.py
index 45fa63a..9a553d4 100644
--- a/tests/test_sandbox.py
+++ b/tests/test_sandbox.py
@@ -7,8 +7,8 @@
import pytest
-from devo_global_comms_python.client import DevoClient
-from devo_global_comms_python.exceptions import DevoException
+from devhub_python.client import DevoClient
+from devhub_python.exceptions import DevoException
class TestSandboxFunctionality:
@@ -35,7 +35,7 @@ def test_sandbox_request_without_sandbox_api_key_raises_error(self):
with pytest.raises(DevoException, match="Sandbox API key required when sandbox=True"):
client.get("test-endpoint", sandbox=True)
- @patch("devo_global_comms_python.client.requests.Session.request")
+ @patch("devhub_python.client.requests.Session.request")
def test_sandbox_request_uses_sandbox_api_key(self, mock_request):
"""Test that sandbox request uses sandbox API key for authentication."""
# Mock successful response
@@ -58,7 +58,7 @@ def test_sandbox_request_uses_sandbox_api_key(self, mock_request):
assert "X-API-Key" in headers
assert "sandbox-api-key" in headers["X-API-Key"]
- @patch("devo_global_comms_python.client.requests.Session.request")
+ @patch("devhub_python.client.requests.Session.request")
def test_regular_request_uses_production_api_key(self, mock_request):
"""Test that regular request uses production API key for authentication."""
# Mock successful response
@@ -81,7 +81,7 @@ def test_regular_request_uses_production_api_key(self, mock_request):
assert "X-API-Key" in headers
assert "production-api-key" in headers["X-API-Key"]
- @patch("devo_global_comms_python.client.requests.Session.request")
+ @patch("devhub_python.client.requests.Session.request")
def test_sms_resource_sandbox_parameter(self, mock_request):
"""Test that SMS resource functions correctly pass sandbox parameter."""
# Mock successful response
diff --git a/tests/test_sms.py b/tests/test_sms.py
index 75afd28..e37f171 100644
--- a/tests/test_sms.py
+++ b/tests/test_sms.py
@@ -3,8 +3,8 @@
import pytest
-from devo_global_comms_python.exceptions import DevoValidationException
-from devo_global_comms_python.resources.sms import SMSResource
+from devhub_python.exceptions import DevoValidationException
+from devhub_python.resources.sms import SMSResource
class TestSMSResource:
diff --git a/tests/test_utils.py b/tests/test_utils.py
index d2a768e..cc7b285 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -2,12 +2,8 @@
import pytest
-from devo_global_comms_python.exceptions import (
- DevoInvalidEmailException,
- DevoInvalidPhoneNumberException,
- DevoValidationException,
-)
-from devo_global_comms_python.utils import (
+from devhub_python.exceptions import DevoInvalidEmailException, DevoInvalidPhoneNumberException, DevoValidationException
+from devhub_python.utils import (
format_datetime,
parse_webhook_signature,
validate_email,
diff --git a/tests/test_whatsapp.py b/tests/test_whatsapp.py
index b71b52b..a209bbe 100644
--- a/tests/test_whatsapp.py
+++ b/tests/test_whatsapp.py
@@ -2,8 +2,8 @@
import pytest
-from devo_global_comms_python.exceptions import DevoValidationException
-from devo_global_comms_python.resources.whatsapp import WhatsAppResource
+from devhub_python.exceptions import DevoValidationException
+from devhub_python.resources.whatsapp import WhatsAppResource
class TestWhatsAppResource:
@@ -434,7 +434,7 @@ def test_send_normal_message_api_error(self, whatsapp_resource):
# Template Tests
def test_create_template_authentication_success(self, whatsapp_resource):
"""Test creating an authentication template successfully."""
- from devo_global_comms_python.models.whatsapp import (
+ from devhub_python.models.whatsapp import (
BodyComponent,
ButtonsComponent,
FooterComponent,
@@ -494,7 +494,7 @@ def test_create_template_authentication_success(self, whatsapp_resource):
def test_create_template_marketing_with_buttons(self, whatsapp_resource):
"""Test creating a marketing template with various button types."""
- from devo_global_comms_python.models.whatsapp import (
+ from devhub_python.models.whatsapp import (
BodyComponent,
ButtonsComponent,
FooterComponent,
@@ -553,7 +553,7 @@ def test_create_template_marketing_with_buttons(self, whatsapp_resource):
def test_create_template_missing_account_id(self, whatsapp_resource):
"""Test template creation with missing account_id."""
- from devo_global_comms_python.models.whatsapp import BodyComponent, WhatsAppTemplateRequest
+ from devhub_python.models.whatsapp import BodyComponent, WhatsAppTemplateRequest
template_request = WhatsAppTemplateRequest(
name="test_template",
@@ -648,7 +648,7 @@ def test_get_templates_missing_account_id(self, whatsapp_resource):
def test_create_template_utility_with_location(self, whatsapp_resource):
"""Test creating a utility template with location header."""
- from devo_global_comms_python.models.whatsapp import (
+ from devhub_python.models.whatsapp import (
BodyComponent,
ButtonsComponent,
FooterComponent,
@@ -694,7 +694,7 @@ def test_create_template_utility_with_location(self, whatsapp_resource):
def test_create_template_with_catalog_button(self, whatsapp_resource):
"""Test creating template with catalog button."""
- from devo_global_comms_python.models.whatsapp import (
+ from devhub_python.models.whatsapp import (
BodyComponent,
ButtonsComponent,
CatalogButton,
@@ -738,7 +738,7 @@ def test_create_template_with_catalog_button(self, whatsapp_resource):
# Template Message Sending Tests
def test_send_template_message_authentication_success(self, whatsapp_resource):
"""Test sending an authentication template message."""
- from devo_global_comms_python.models.whatsapp import (
+ from devhub_python.models.whatsapp import (
TemplateMessageComponent,
TemplateMessageLanguage,
TemplateMessageParameter,
@@ -809,7 +809,7 @@ def test_send_template_message_authentication_success(self, whatsapp_resource):
def test_send_template_message_with_image_header(self, whatsapp_resource):
"""Test sending template message with image header."""
- from devo_global_comms_python.models.whatsapp import (
+ from devhub_python.models.whatsapp import (
ImageParameter,
TemplateMessageComponent,
TemplateMessageLanguage,
@@ -862,7 +862,7 @@ def test_send_template_message_with_image_header(self, whatsapp_resource):
def test_send_template_message_with_location(self, whatsapp_resource):
"""Test sending template message with location parameter."""
- from devo_global_comms_python.models.whatsapp import (
+ from devhub_python.models.whatsapp import (
LocationParameter,
TemplateMessageComponent,
TemplateMessageLanguage,
@@ -919,7 +919,7 @@ def test_send_template_message_with_location(self, whatsapp_resource):
def test_send_template_message_with_document(self, whatsapp_resource):
"""Test sending template message with document parameter."""
- from devo_global_comms_python.models.whatsapp import (
+ from devhub_python.models.whatsapp import (
DocumentParameter,
TemplateMessageComponent,
TemplateMessageLanguage,
@@ -973,7 +973,7 @@ def test_send_template_message_with_document(self, whatsapp_resource):
def test_send_template_message_with_buttons_payload(self, whatsapp_resource):
"""Test sending template message with button payload parameters."""
- from devo_global_comms_python.models.whatsapp import (
+ from devhub_python.models.whatsapp import (
TemplateMessageComponent,
TemplateMessageLanguage,
TemplateMessageParameter,
@@ -1031,7 +1031,7 @@ def test_send_template_message_with_buttons_payload(self, whatsapp_resource):
def test_send_template_message_missing_account_id(self, whatsapp_resource):
"""Test template message sending with missing account_id."""
- from devo_global_comms_python.models.whatsapp import (
+ from devhub_python.models.whatsapp import (
TemplateMessageLanguage,
TemplateMessageTemplate,
WhatsAppTemplateMessageRequest,
@@ -1047,7 +1047,7 @@ def test_send_template_message_missing_account_id(self, whatsapp_resource):
def test_send_template_message_catalog_offer(self, whatsapp_resource):
"""Test sending catalog offer template message."""
- from devo_global_comms_python.models.whatsapp import (
+ from devhub_python.models.whatsapp import (
TemplateMessageComponent,
TemplateMessageLanguage,
TemplateMessageParameter,