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.2.0.tar.gz (12.7 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.2.0-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rxresume_python-0.2.0.tar.gz
  • Upload date:
  • Size: 12.7 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.2.0.tar.gz
Algorithm Hash digest
SHA256 2d86e922e0b482f4fa31ffbc1399bf120654af20562ec46f1041ab349d9b45ec
MD5 7a55e76bf3dcc182e91ea503f1e50150
BLAKE2b-256 1610384843ae30237228a00da0b23a0ae5c145db9f083294ed93c5e0569820d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for rxresume_python-0.2.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.2.0-py3-none-any.whl.

File metadata

  • Download URL: rxresume_python-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 13.1 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 62a4b3d1733e5ab54ff7cbdba6ca57cc4e92737fd336c0679da1aa8d45da2fee
MD5 72732a528c83e3107c3d7fcbbbc57514
BLAKE2b-256 4767e75cf8cb51402a9a66f60202c3ab7ef176fa2b01bcb10de67962bac57e0a

See more details on using hashes here.

Provenance

The following attestation bundles were made for rxresume_python-0.2.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