Introduction à l'Extension PTVS
Python Tools for Visual Studio (PTVS) est une extension open source qui intègre un support complet pour le langage Python directement dans l'environnement de développement intégré Visual Studio. En tant que plugin, son architecture et son cycle de vie diffèrent fondamentalement des applications autonomes classiques.
Organisation du Répertoire Source
Le dépôt de code source est structuré de manière à séparer les scripts de compilation, les configurations CI/CD et les métadonnées du projet. Voici les composants principaux du système de fichiers :
- Build/ : Contient les utilitaires de compilation, y compris les scripts communs (
Common/), les exemples d'intégration native (Examples/PythonNative/) et les configurations spécifiques à l'environnement Python. - Fichiers de gouvernance :
CODEOWNERS(responsables du code),CONTRIBUTING.md(guide de contribution),LICENSE(sous licence Apache-2.0), etSECURITY.md(politique de sécurité). - Configurations CI/CD : Les fichiers
azure-pipelines*.ymlgèrent les pipelines de compilation, de tests d'intégration, de conformité et de publication via Azure DevOps. - Fichiers de configuration racine :
dirs.proj(structure MSBuild),cgmanifest.json(gestion des composants teirs), etpackage.json(dépendances Node.js pour les outils de build).
Point d'Entrée et Démarrage
Contrairement aux applications console ou web, PTVS ne possède pas de fichier d'exécution principle (comme un main.py ou index.js). Étant donné qu'il s'agit d'une extension Visual Studio (VSIX), son initialisation est gérée par le mécanisme d'extensibilité de l'IDE. Le chargement se déclenche automatiquement lorsque l'environnement détecte les types de fichiers, les projets associés à Python ou via les points d'entrée définis dans le manifeste VSIX.
Analyse des Fichiers de Configuration
Pipeline d'Intégration Continue (azure-pipelines.yml)
Ce fichier orchestre les étapes de validation du code. Voici une version restructurée illustrant une configuration typique pour l'installation des dépendances et la compilation de la solution :
trigger:
branches:
include:
- master
- release/*
pool:
vmImage: 'windows-latest'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.10'
displayName: 'Configurer Python'
- script: |
python -m pip install --upgrade pip
pip install -r requirements.txt
displayName: 'Installer les dépendances'
- script: msbuild dirs.proj /p:Configuration=Release
displayName: 'Compiler la solution'
Métadonnées du Projet (package.json)
Bien que le cœur du projet soit en C#/.NET, certains outils de build ou d'analyse statique peuvent reposer sur l'écosystème Node.js. Le fichier package.json centralise ces dépendances et scripts utilitaires :
{
"name": "ptvs-build-tools",
"version": "2.1.0",
"description": "Outils de build et d'analyse pour PTVS",
"scripts": {
"lint": "eslint src/**/*.js",
"build:assets": "webpack --mode production",
"test:unit": "jest --coverage"
},
"devDependencies": {
"eslint": "^8.0.0",
"webpack": "^5.0.0",
"jest": "^29.0.0"
},
"license": "Apache-2.0"
}
Configuration des Tests (test.yml)
Ce fichier définit les paramètres pour l'exécution de la suite de tests automatisés, permettant de valider les différentes couches de l'extension, des tests unitaires C# aux tests d'intégration Python :
testSuites:
- suiteName: "Analyse Statique et Unitaires"
runner: "vstest.console.exe"
pattern: "**/bin/Release/**/*Tests.dll"
arguments: "--logger:trx"
- suiteName: "Tests d'Intégration UI"
runner: "pytest"
workingDir: "./tests/integration"
arguments: "-v --tb=short"