Structrue des répertoires du projet
Le projet EulerPy suit une organisation standard pour les applications Python :
EulerPy/
├── EulerPy/
│ ├── __init__.py
│ ├── euler.py
│ ├── utils.py
│ └── ...
├── tests/
│ ├── test_euler.py
│ └── ...
├── .gitignore
├── .travis.yml
├── CHANGES.rst
├── CONTRIBUTING.rst
├── LICENSE
├── MANIFEST.in
├── README.rst
├── requirements.txt
├── setup.cfg
└── setup.py
Le dossier principal EulerPy/ héberge le code source : __init__.py initialise le package, euler.py contient la logique centrale de l'outil CLI, et utils.py fournit des fonctions utilitaires. Le répertoire tests/ inclut les tests unitaires, notamment test_euler.py. Les fichiers à la racine gèrent la configuration, les dépendances, la documentation et les intégrations continues.
Point d'entrée et fonctionnalités principales
Le fichier euler.py sert de base au projet, implémentant les fonctionnalités essentielles de l'outil en ligne de commande pour Project Euler.
Il offre des capacités telles que :
- Création de fichiers modèles contenant l'énoncé des problèmes.
- Vérification automatique des solutions proposées par l'utilisateur.
- Options CLI comme
--cheatpour afficher la réponse,--generatepour initialiser un fichier, et--previewpour visualiser le texte.
Les fonctions clés incluent :
main(): Parse les arguments de la ligne de commande et déclenche les actions appropriées.generate_problem_file(): Génère un fichier Python pour un numéro de problème donné.check_solution(): Évalue si une solution correspond à la réponse attendue.print_problem_text(): Affiche l'énoncé complet d'un problème spécifique.
Fichiers de configuration
La configuration du projet repose sur setup.cfg et requirements.txt.
setup.cfg définit les paramètres d'installation et de packaging : il spécifie les métadonnées du projet, les options de distribution, et les packages à inclure via la section [options.packages.find].
requirements.txt énumère les dépendances Python nécessaires, par exemple :
click==7.1.2
colorama==0.4.4
Cela assure la reproductibilité de l'environnement et facilite l'installation des bibliothèques requises pour l'outil CLI.