Skip to content

synmetrix/synmetrix-python-client

Repository files navigation

Synmetrix Python Client

A Python client library for interacting with the Synmetrix API.

Key Components

  1. GraphQL Client

    • Fully typed async client for GraphQL operations
    • WebSocket subscription support
    • Automatic query generation
    • Error handling and response validation
  2. Authentication Client

    • JWT token management
    • User authentication flows
    • Session handling
    • Password management

Installation

Using pip

pip install synmetrix-python-client

Using poetry

poetry add synmetrix-python-client

Quick Start

import asyncio
from synmetrix_python_client.graphql_client import Client
from synmetrix_python_client.auth import AuthClient

# Decode JWT token to get user_id
access_token = "your_access_token"
jwt_payload = AuthClient.parse_access_token(access_token)
user_id = jwt_payload["user_id"]

# Initialize client
client = Client(
    url="https://app.synmetrix.org/v1/graphql",
    headers={"Authorization": f"Bearer {access_token}"},
)

async def get_current_user():
    # Query current user
    current_user = await client.current_user(id=user_id)
    print(f"User: {current_user.users_by_pk.display_name}")

    # Subscribe to user updates
    async for update in client.sub_current_user(id=user_id):
        print(f"Update received: {update.users_by_pk.display_name}")

# Run the example
asyncio.run(get_current_user())

Documentation

API Reference

The library provides comprehensive API documentation in the following formats:

Development

Prerequisites

  • Python 3.9+
  • Poetry (Python package manager)

Setting up the development environment

  1. Clone the repository:
git clone https://github.com/ifokeev/synmetrix-python-client.git
cd synmetrix-python-client
  1. Install dependencies:
poetry install
  1. Activate the virtual environment:
poetry shell

Running Tests

poetry run pytest

Generating Documentation

To regenerate the documentation:

./scripts/generate_graphql_api_docs.sh # GraphQL documentation
./scripts/generate_auth_api_docs.sh    # Auth documentation

Generating GraphQL Client

To generate the GraphQL client:

poetry run generate-client

Note: please check remote_schema_url and remote_schema_headers in pyproject.toml to ensure the correct schema is used.

Publishing to PyPI

  1. Test PyPI release:
./scripts/push_to_testpypi.sh YOUR_PYPI_TOKEN
  1. Production PyPI release:
./scripts/push_to_pypi.sh YOUR_PYPI_TOKEN

Contributing

  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.

Support

For support, please:

Examples

For complete working examples of client usage, check the use_cases/ directory in the repository.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published