Skip to main content

CLI ProxyCall légère pour piloter l'API en local ou sur Render

Project description

ProxyCall

Ce dépôt regroupe les services et intégrations permettant de gérer l'attribution de numéros proxy et le routage des appels. Les tests sont désormais centralisés dans le dossier tests et un script unique permet de lancer toute la suite.

Installation rapide

  1. Créez un environnement virtuel et installez les dépendances :
    python -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
    
  2. Configurez les variables d'environnement nécessaires pour les services Twilio et Google Sheets lorsque vous souhaitez exécuter les tests live (voir ci-dessous).

Exécution des tests

Le dossier tests contient trois catégories principales de scénarios, exécutables via pytest.

1. Tests unitaires et de service

  • Objectif : valider la logique métier (routage d'appel, gestion des commandes, clients, interactions Twilio simulées, etc.).
  • Fichiers concernés :
    • tests/test_call_routing_service.py
    • tests/test_clients_service.py
    • tests/test_orders_service.py
    • tests/test_sheets_client_unit.py
    • tests/test_twilio_client_unit.py
    • tests/test_demo_scenarios.py
  • Commande (PyCharm/terminal) :
    python -m pytest tests/test_call_routing_service.py
    
    Ajustez le chemin vers le fichier ou utilisez -k pour cibler un test en particulier.

2. Tests démo hors-ligne

  • Objectif : présenter les flux principaux sans appeler de services externes.
  • Fichiers concernés :
    • tests/client_repository_demo_test.py
    • tests/test_sheets_access_demo_test.py
    • tests/twilio_pools_demo_test.py
  • Commande :
    python -m pytest tests/client_repository_demo_test.py
    
    Ces tests peuvent être lancés sans configuration supplémentaire.

3. Tests live (intégrations réelles)

  • Objectif : vérifier l'accès réel aux APIs Twilio et Google Sheets.
  • Fichiers concernés :
    • tests/client_repository_live_test.py
    • tests/test_sheets_access_live_test.py
  • Activation : par défaut ces tests sont ignorés. Pour les exécuter, définissez les variables requises :
    export PROXYCALL_RUN_LIVE=1
    export TWILIO_ACCOUNT_SID="..."
    export TWILIO_AUTH_TOKEN="..."
    export GOOGLE_SERVICE_ACCOUNT_FILE="path/vers/credentials.json"
    export GOOGLE_SHEET_NAME="NomDuSheet"
    python -m pytest tests/test_sheets_access_live_test.py
    

Script unique

Pour exécuter l'ensemble des tests (unitaires, démo et live si les variables sont présentes), utilisez le script dédié depuis la racine du projet :

./run_tests.sh

Vous pouvez lui passer des arguments pytest supplémentaires, par exemple ./run_tests.sh -k call_routing.

Déploiement Render

Un blueprint Render (render.yaml) est fourni pour déployer l'API FastAPI sur Render avec uvicorn app.main:app. Le guide détaillé et la préparation de la CLI (.env.render pour l'URL/token uniquement) sont décrits dans docs/deploiement_render.md.

Pour consommer le backend depuis n'importe quel poste (ex. Windows), la CLI envoie par défaut les commandes (create-client, pool-list, etc.) vers l'API Render sécurisée par PROXYCALL_API_TOKEN (mode Render par défaut, basé sur .env.render).

Distribution légère de la CLI

  • Construire le bundle manuellement : python -m pip install build && python -m build génère une archive wheel/zip (dist/).
  • Publication PyPI en une commande : python scripts/publier_sur_pypi.py.
    • Identifiants attendus dans l'environnement : TWINE_USERNAME=__token__ et TWINE_PASSWORD=pypi-xxxxxxxx (ou testpypi-xxxxxxxx).
    • Sous PowerShell (PyCharm ou terminal Windows) :
      $Env:TWINE_USERNAME="__token__"
      $Env:TWINE_PASSWORD="pypi-xxxxxxxx"
      python scripts/publier_sur_pypi.py
      
    • Option --dry-run pour s'arrêter après le build.
    • Le script incrémente automatiquement le patch de version dans pyproject.toml à chaque exécution (0.1.0 → 0.1.1 → 0.1.2, etc.) pour éviter les collisions PyPI ; conservez le contrôle manuel en éditant la version avant d'appeler le script si besoin.
  • Installation : pip install proxycall-cli (ou pip install dist/proxycall_cli-<version>-py3-none-any.whl).
  • Utilisation (Render par défaut) : proxycall-cli ... ou python -m proxycall ... ; aucune option n'est requise pour cibler Render.
  • Mode Dev (Twilio/Google) : utilisez le binaire proxycall-cli-live (ou l'option --live) et fournissez les variables Twilio/Google via .env ou l'environnement.
  • La CLI charge automatiquement .env puis .env.render à partir du répertoire courant ou de ses parents (résolution find_dotenv), sans dépendre de la racine du dépôt.

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

proxycall_cli-0.1.1.tar.gz (34.6 kB view details)

Uploaded Source

Built Distribution

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

proxycall_cli-0.1.1-py3-none-any.whl (29.8 kB view details)

Uploaded Python 3

File details

Details for the file proxycall_cli-0.1.1.tar.gz.

File metadata

  • Download URL: proxycall_cli-0.1.1.tar.gz
  • Upload date:
  • Size: 34.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.1

File hashes

Hashes for proxycall_cli-0.1.1.tar.gz
Algorithm Hash digest
SHA256 627f346fc78ba22616e3d1f1e5755f8b4f87401fa38b4cdeb1c593e1c41f5fd2
MD5 73fe50fb7d42703368c4885e1c12abd7
BLAKE2b-256 3170a2207bc146ff25bfbbbe6e805ce6f03589878231a9e2f101e6171c0555a9

See more details on using hashes here.

File details

Details for the file proxycall_cli-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: proxycall_cli-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 29.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.1

File hashes

Hashes for proxycall_cli-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d68dee50618a01261dfbd8be7114ea8e059ce527eea8e3adfe130d105d1e29e6
MD5 241bb2d4343f4de0866b87c4b8493d63
BLAKE2b-256 340c2e808617427deba5b127c83fb1b5be93b03a8fa44868eb157499e0c9f9f7

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