Skip to main content

Unofficial Python API client (SDK) for Reactive Resume v4

Project description

Reactive Resume Python SDK (rxresume-python)

Python Version Pydantic v2 HTTPX

An unofficial modern, type-safe Python API Client (SDK) for Reactive Resume v4.

It supports both synchronous (httpx.Client) and asynchronous (httpx.AsyncClient) clients, ensures fully typed request/response schemas using Pydantic v2, and maps API errors to clean, descriptive Python exceptions.


Features

  • Dual client modes: Support for both sync and async APIs.
  • Type safety: Fully typed models for Resumes, Sections, Basics, and Users using Pydantic V2.
  • Robust error handling: Raw API status errors are automatically parsed into specific exceptions (AuthenticationError, NotFoundError, etc.).
  • Developer Experience (DX): Code-completion ready with clear typing and docstrings.

Installation

Install the package via pip or your favorite package manager:

pip install rxresume-python

Quick Start

1. Asynchronous Client (FastAPI / Asynchronous Code)

import asyncio
from reactive_resume import AsyncRxResumeClient
from reactive_resume.models import ResumeImportData, Basics

async def main():
    # Initialize the async client
    async with AsyncRxResumeClient(base_url="https://rxresu.me", api_key="your_api_key") as client:
        # Create a new resume
        import_data = ResumeImportData(
            title="Ata Can Yaymacı - Backend Engineer",
            basics=Basics(
                name="Ata Can Yaymacı",
                headline="Backend Engineer",
                email="ata@example.com",
                phone="+905555555555",
                website="https://example.com"
            ),
            sections={}
        )

        try:
            # Import/Create a new resume
            new_resume = await client.resumes.import_resume(import_data)
            print(f"Created resume: {new_resume.name} (ID: {new_resume.id})")

            # Fetch the generated PDF URL
            pdf_url = await client.resumes.get_pdf_url(new_resume.id)
            print(f"PDF URL: {pdf_url}")

        except Exception as e:
            print(f"An error occurred: {e}")

if __name__ == "__main__":
    asyncio.run(main())

2. Synchronous Client

from reactive_resume import RxResumeClient
from reactive_resume.models import ResumeImportData

with RxResumeClient(base_url="https://rxresu.me", api_key="your_api_key") as client:
    resumes = client.resumes.list()
    for resume in resumes:
        print(f"Resume: {resume.name} (Slug: {resume.slug})")

Error Handling

All client API calls map HTTP errors to specific exception classes:

from reactive_resume import RxResumeClient, AuthenticationError, NotFoundError

try:
    with RxResumeClient(base_url="https://rxresu.me", api_key="wrong_key") as client:
        client.resumes.list()
except AuthenticationError as e:
    print(f"Auth error (Status {e.status_code}): {e}")
except NotFoundError as e:
    print(f"Not found: {e}")
except Exception as e:
    print(f"Generic error: {e}")

Development & Testing

  1. Clone the repository:

    git clone https://github.com/your-username/reactive-resume-api-client-py.git
    cd reactive-resume-api-client-py
    
  2. Install dependencies:

    python3 -m venv .venv
    source .venv/bin/activate
    pip install -e ".[dev]"
    
  3. Run the tests:

    pytest
    

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

rxresume_python-0.1.0.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

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

rxresume_python-0.1.0-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

Details for the file rxresume_python-0.1.0.tar.gz.

File metadata

  • Download URL: rxresume_python-0.1.0.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rxresume_python-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ca1301577d17bd30333ced5911774064c8b9ce25034aefe29f251fdd47e72e60
MD5 12053f1798baf106de1b64356e73483e
BLAKE2b-256 14306df5a6659de7f91cd0d04ce2b0edcec7439c25076994b9163966bed7e26d

See more details on using hashes here.

Provenance

The following attestation bundles were made for rxresume_python-0.1.0.tar.gz:

Publisher: release-please.yml on AtaCanYmc/reactive-resume-api-client-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rxresume_python-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: rxresume_python-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 13.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rxresume_python-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 68a953e9b36c884d27b78e8be5ea1e87d59ae9db84990a1edc28e25544934cc9
MD5 9e8826fd9fe2632e3e79c570c8a82027
BLAKE2b-256 0da44b5c6d31b0dcddf3118b8297c0aed67565658a05705f7b2cefe8b28f6a21

See more details on using hashes here.

Provenance

The following attestation bundles were made for rxresume_python-0.1.0-py3-none-any.whl:

Publisher: release-please.yml on AtaCanYmc/reactive-resume-api-client-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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