Par “structurer” nous entendons des decisions que vous faites concernant De quelle fai§on votre projet atteint convenablement son objectif.

Nous avons besoin de considerer comment exploiter au mieux les fonctionnalites de Python Afin de creer un code propre et efficace. En termes pratiques, “structurer” signifie produire du code propre dont la logique et les dependances paraissent claires ainsi que la facon dont nos fichiers et dossiers seront organises dans le systeme de fichiers.

Quelle fonctions doivent aller dans quels modules? Comment circule la donnee au projet? Quelles fonctionnalites et fonctions peuvent etre groupees ensemble et isolees? En repondant a des questions comme ce qui, vous pouvez commencer a planifier, au sens large, votre a quoi la service fini ressemblera.

Dans une telle section, nous allons jeter un ?il de plus pres i  propos des systemes de module et d’import de Python comme ils seront nos elements centraux afin d’effectuer respecter une structure dans votre projet. Nous discuterons ensuite des Plusieurs perspectives sur comment construire du code qui peut etre etendu et teste de maniere fiable.

Structure du depot

C’est important

Juste comme le type de codage, le design d’API, et l’automatisation paraissent essentiels a un cycle de developpement sain, l’architecture d’un depot est une part cruciale de l’architecture de votre projet.

Quand un utilisateur potentiel ou 1 contributeur arrive sur la page d’un depot, ils voient quelques choses:

Notre nom du projet

J’ai description du projet

Un tas de fichiers

C’est juste quand ils font defiler la page que les utilisateurs verront le README de ce projet.

Si votre depot est 1 amas massif de fichiers ou une pagaille imbriquee de repertoires, ils risquent de regarder ailleurs avant meme de lire votre belle documentation.

Habillez vous pour le job que vous voulez, nullement pour le job que vous avez.

Evidemment, les premieres impressions ne sont jamais bien. Vous et vos collegues allez passer un nombre d’heures incalculable a bosser sur ce depot, enfin i?tre intimement familier avec tous les coins et recoins. Son organisation reste consequente.

Depot modi?le

tl;dr (acronyme de “Too Long, I Didn’t Read it”): C’est votre que Kenneth Reitz recommande.

Entrons dans deux details.

Notre module actuel

./sample/ ou ./sample.py

Le code qui nous interesse

Votre paquet de module est le point central du depot. Il ne devrait pas etre mis a l’ecart:

Si la module consiste en un seul fichier, vous pourrez le placer directement a J’ai racine de votre repertoire:

Votre bibliotheque n’appartient pas a un sous-repertoire ambigu comme src ou python.

Licence

Se couvrir juridiquement.

Ceci est vraisemblablement la part majoritaire de ce depot, en dehors du code source lui-meme. Les revendications de copyright et l’article une licence complet devraient etre dans ce fichier.

Si vous n’etes pas sur de la licence que vous souhaitez utiliser pour votre projet, consultez choosealicense.com.

Naturellement, vous etes aussi libre de publier la code sans une licence, mais cela risque potentiellement d’empecher de multiples individus d’utiliser la code.

Setup.py

Gestion d’une distribution ainsi que la conception de paquets

Si la paquet de module est a Notre racine de ce depot, ceci pourrait evidemment etre aussi a la racine.

Fichier requirements

Dependances de developpement.

Un fichier requirements de pip se doit de etre place a J’ai racine du depot. Cela doit specifier les https://datingmentor.org/fr/married-secrets-review/ dependances requises pour contribuer au projet: nos tests, les builds et la generation une documentation.

Si la projet n’a aucune dependances de developpement ou vous preferez la configuration de l’environnement de developpement via setup.py , votre fichier peut s’averer non important.

Documentation

Documentation de qualite des paquets.

Il existe tres peu de raison pour cela qu’il y a ailleurs.

Suite de tests

./test_sample.py ou ./tests

Integration de paquets et tests unitaires

En debutant, une bri?ve suite de tests existera souvent dans un seul fichier:

Une fois que Notre suite de tests grossit, vous pouvez deplacer ces tests dans un repertoire, comme ceci:

Evidemment, ces modules de test doivent importer la module empaquete pour le tester. Vous pourrez le Realiser de diverses facons:

Attendre que le paquet soit installe au sein d’ site-packages.

Se servir de 1 modification de chemin simple (mais explicite) Afin de resoudre le paquet convenablement.

Je recommande serieusement ce dernier. Demander a un developpeur de lancer setup.py develop Afin de tester une base de code qui change activement lui demande aussi d’avoir une configuration d’environnement isole pour chaque instance d’la base de code.

Pour donner 1 contexte d’importation a toutes les tests individuels, creez un fichier tests/config.py.

Ensuite, dans les modules de test individuels, importez le module tel ceci:

Cela fonctionnera forcement comme prevu qu’importe la technique d’installation.