A Java implementation of a DataFrame library similar to Python's pandas, designed for a DevOps course project. The library provides tabular data manipulation capabilities with support for CSV/TSV file parsing and various data operations.
| Runtime | |
| Package | |
main branch status |
|
dev branch status |
- Structure tabulaire bidimensionnelle avec étiquettes pour les colonnes et lignes
- Création de DataFrames à partir de fichiers CSV/TSV grâce au parseur ANTLR4
- Typage dynamique avec inférence automatique (String, Integer, Float)
- Manipulation flexible des données :
- Accès aux cellules individuelles, lignes ou colonnes entières
- Extraction de sous-ensembles (slicing) du DataFrame
- Suppression de colonnes avec conservation des valeurs
- Calculs statistiques sur les colonnes numériques :
- Moyenne (Mean)
- Maximum (Max)
- Minimum (Min)
- Export des données au format CSV
- API intuitive inspirée de pandas (Python)
Notre projet s'appuie sur les outils et technologies suivants :
- Java 17 : Langage de programmation principal
- Maven 3.x : Gestion des dépendances et du cycle de vie du projet
- ANTLR 4.13 : Générateur d'analyseurs pour le parsing des fichiers CSV/TSV
- JUnit 5 : Framework de tests unitaires
- GitHub Actions : Orchestration des workflows d'intégration continue, test et compilation automatique pour chauqe push sur les branches main et dev.
- Branche : gestione des branches pour une intégration continue
- JavaDoc : Documentation standardisée du code source
- Tests automatisés : Vérification de la qualité et de la fiabilité du code
Notre workflow Git s'organise autour de trois types de branches principales :
- main : Contient uniquement les versions stables et validées du projet
- dev : Branche de développement contenant les fonctionnalités en cours d'intégration
- autres branches* : Branches temporaires pour le développement de fonctionnalités spécifiques
- Création de branches de fonctionnalités : Pour chaque nouvelle fonctionnalité ou correction, une branche dédiée est créée à partir de
dev - Développement isolé : Le travail s'effectue dans la branche de fonctionnalité sans perturber les autres développements
- Tests locaux : Avant toute soumission, le développeur exécute les tests unitaires localement
- Soumission de PR : La branche de fonctionnalité est soumise via une Pull Request vers
dev - Validation automatisée : Les GitHub Actions exécutent automatiquement :
- La compilation du projet
- L'exécution des tests unitaires
- La vérification du formatage du code
- Revue de code : Au moins un autre membre de l'équipe doit approuver les changements la merge request a pu être approuvé par le même utilisateur github lors de tp où nous étions plusieurs réunit (donc validé à l'oral)
- Fusion : Une fois approuvée et tous les tests passés, la PR est fusionnée dans
dev
- Intégration vers main : Lorsque
devcontient suffisamment de fonctionnalités stables, une PR est créée versmain - Mise à jour de version : Le numéro de version est automatiquement incrémenté lors de la fusion vers
main - Création de release : Une nouvelle release GitHub est automatiquement créée avec les notes de version
Les outils qu'on a utilisé nous ont permis une meilleur gestion du projet/code. Attention au version des outils, dans notre cas on a eu plusieurs problèmes sur des machines ou sur le github de version des outils qui était différentes et donc le projet ne compile pas.
- Clone the repository:
git clone https://github.com/LTBS46/ProjetDevopsIntegration.git
- Build with Maven:
mvn clean install
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
<version>4.13.2</version>
</dependency>Présent sous docker HUB:
docker pull frubit/rakoun-dataframe