Python SDK for the Dermalytics API - Skincare Ingredient Analysis
Project description
Dermalytics Python SDK
Python SDK for the Dermalytics API - Skincare Ingredient Analysis and Safety Ratings.
⚠️ Status
This SDK is currently in development and alpha testing. The API is functional but may have breaking changes in future versions. Use with caution in production environments.
Installation
pip install dermalytics
Quick Start
from dermalytics import Dermalytics
# Initialize the client
client = Dermalytics(api_key="your_api_key_here")
# Get ingredient details
ingredient = client.get_ingredient("niacinamide")
print(ingredient)
# {
# "name": "niacinamide",
# "severity": "safe",
# "description": "A form of vitamin B3",
# "category": {"name": "Vitamins", "slug": "vitamins"},
# "condition_safeties": [],
# "synonyms": ["nicotinamide"]
# }
# Analyze a product
analysis = client.analyze_product([
"Aqua",
"Glycerin",
"Niacinamide",
"Salicylic Acid",
"Hyaluronic Acid"
])
print(analysis)
# {
# "safety_status": "safe",
# "ingredients": [...],
# "warnings": []
# }
API Reference
Dermalytics(api_key: str, base_url: Optional[str] = None)
Initialize the Dermalytics API client.
Parameters:
api_key(str): Your Dermalytics API keybase_url(str, optional): Base URL for the API (defaults tohttps://api.dermalytics.dev)
Raises:
ValidationError: If API key is missing or invalid
get_ingredient(name: str) -> Ingredient
Get detailed information about a specific ingredient.
Parameters:
name(str): The name of the ingredient to look up (e.g., "niacinamide")
Returns:
Ingredient: Dictionary containing:name(str): Ingredient nameseverity(str): Safety rating (e.g., "safe", "low_risk", "moderate_risk", "high_risk")description(str, optional): Description of the ingredientcategory(dict): Category information withnameandslugcondition_safeties(list): List of condition-specific safety informationsynonyms(list): List of alternative names for the ingredient
Raises:
ValidationError: If the ingredient name is invalidNotFoundError: If the ingredient is not foundAuthenticationError: If authentication failsRateLimitError: If rate limit is exceededAPIError: For other API errors
analyze_product(ingredients: List[str]) -> ProductAnalysis
Analyze a complete product formulation.
Parameters:
ingredients(List[str]): List of ingredient names in the product
Returns:
ProductAnalysis: Dictionary containing:safety_status(str): Overall safety status of the productingredients(list): List of analyzed ingredients with their safety ratingswarnings(list): List of warnings for specific conditions or interactions
Raises:
ValidationError: If the ingredients array is invalidAuthenticationError: If authentication failsRateLimitError: If rate limit is exceededAPIError: For other API errors
Error Handling
The SDK provides comprehensive error handling with specific error classes for different scenarios:
from dermalytics import (
DermalyticsError,
APIError,
AuthenticationError,
NotFoundError,
RateLimitError,
ValidationError,
)
try:
ingredient = client.get_ingredient("niacinamide")
except NotFoundError:
print("Ingredient not found")
except AuthenticationError:
print("Invalid API key")
except RateLimitError:
print("Rate limit exceeded")
except ValidationError as e:
print(f"Invalid input: {e.message}")
except APIError as e:
print(f"API error: {e.message}")
except DermalyticsError as e:
print(f"Dermalytics error: {e.message}")
Error Classes
DermalyticsError- Base error class for all SDK errorsAPIError- General API errors (server errors, network issues, invalid responses)AuthenticationError- Authentication failures (401, 403)NotFoundError- Resource not found (404)RateLimitError- Rate limit exceeded (429)ValidationError- Invalid request data (400, invalid input parameters)
Development
Setup
- Clone the repository:
git clone https://github.com/dermalytics-dev/dermalytics-python.git
cd dermalytics-python
- Install development dependencies:
pip install -r requirements.txt
- Install the package in development mode:
pip install -e .
Running Tests
pytest
Code Formatting
black dermalytics tests
Type Checking
mypy dermalytics
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
The MIT License allows you to:
- ✅ Use the code commercially
- ✅ Modify the code
- ✅ Distribute the code
- ✅ Use privately
- ✅ Include in proprietary software
You must:
- Include the original copyright notice
- Include the license text
Links
Support
For support, email support@dermalytics.dev or open an issue on GitHub.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dermalytics-0.1.2.tar.gz.
File metadata
- Download URL: dermalytics-0.1.2.tar.gz
- Upload date:
- Size: 8.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf79dccb398e315ad4822984f370fb8fcdb37d3746d1ac416b5a7339fe4c0d3f
|
|
| MD5 |
07449793f7604199cb2a097b08dbb4bf
|
|
| BLAKE2b-256 |
93151794856c417ee55e59d381b8522acd769a1d2cc3877018fbabb8d6e1f4ab
|
File details
Details for the file dermalytics-0.1.2-py3-none-any.whl.
File metadata
- Download URL: dermalytics-0.1.2-py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e6db456ea78e1c35e2a0bca495e7784e6c5013dac52f5a3d471379bdfdad9c3
|
|
| MD5 |
1d3f671f4dce29b783ecf5a8d1754449
|
|
| BLAKE2b-256 |
b36c363adae6ab6adde4bd2a7df5146c6d3b1365d4711e9ca4b3f25831896fc4
|