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.3.tar.gz (35.0 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.3-py3-none-any.whl (30.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: proxycall_cli-0.1.3.tar.gz
  • Upload date:
  • Size: 35.0 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.3.tar.gz
Algorithm Hash digest
SHA256 13a490d4a91da814d729ab8f71944b3fc6c85ea87eb079501a875e31d48b4102
MD5 ebd0c7f75549d3f3144079bb1b825edc
BLAKE2b-256 5216e79f317fa9e70687da317667670623d39b226eb58834a47dc75f1ad93542

See more details on using hashes here.

File details

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

File metadata

  • Download URL: proxycall_cli-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 30.3 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e66e4309249c9819d0be34613ee1d5499ddedd047a5c0d2fdef29f313304ebbf
MD5 8ea49bff645086ba188edc133bf6be93
BLAKE2b-256 dae36538e09c1098bcaf92147de0fa4d6db483bdca82d95b36d578a3140c65cf

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