Skip to main content

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 key
  • base_url (str, optional): Base URL for the API (defaults to https://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 name
    • severity (str): Safety rating (e.g., "safe", "low_risk", "moderate_risk", "high_risk")
    • description (str, optional): Description of the ingredient
    • category (dict): Category information with name and slug
    • condition_safeties (list): List of condition-specific safety information
    • synonyms (list): List of alternative names for the ingredient

Raises:

  • ValidationError: If the ingredient name is invalid
  • NotFoundError: If the ingredient is not found
  • AuthenticationError: If authentication fails
  • RateLimitError: If rate limit is exceeded
  • APIError: 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 product
    • ingredients (list): List of analyzed ingredients with their safety ratings
    • warnings (list): List of warnings for specific conditions or interactions

Raises:

  • ValidationError: If the ingredients array is invalid
  • AuthenticationError: If authentication fails
  • RateLimitError: If rate limit is exceeded
  • APIError: 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 errors
  • APIError - 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

  1. Clone the repository:
git clone https://github.com/dermalytics-dev/dermalytics-python.git
cd dermalytics-python
  1. Install development dependencies:
pip install -r requirements.txt
  1. 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.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. 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

dermalytics-0.1.3.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dermalytics-0.1.3-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file dermalytics-0.1.3.tar.gz.

File metadata

  • Download URL: dermalytics-0.1.3.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

Hashes for dermalytics-0.1.3.tar.gz
Algorithm Hash digest
SHA256 c2667c247af77bde94899a78dfd0f3f54b93e22675bcc2e72e70924c5fd4a0b2
MD5 5a2811964977fad59a3c74872e1e812a
BLAKE2b-256 29557d4a9bf462a14473abd12a25b3e2985ea51c4476712208706d7dd1a0dae7

See more details on using hashes here.

File details

Details for the file dermalytics-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: dermalytics-0.1.3-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

Hashes for dermalytics-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c8b88700b04ce07f0b895bb1f6284f93c70f5c8c2887e6e2256a5731ec9844fc
MD5 0fa23c01ea9a91e05882f48a984037c6
BLAKE2b-256 4b53ef1039b3c7e60b43f80435c1f95e4a60ca5469ad977bc6f6023f78102012

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page