8. 8
Versionning
• respect des normes (PEP 386, semver...)
• release: { a o } { i o } { a c }
mjr.mnr.pth
• dev/master/...: { a o } { i o } { a c } d v
mjr.mnr.pth.e
• Automatisez la release !
• script shell
• outil dédié (ex: Zest.releaser, Bump'R, ...)
11. 11
README
Doit permettre de démarrer rapidement.
• Présentation fonctionnelle rapide
• Procédure d'installation
• Documentation (ou lien)
• Complété par un changelog
13. 13
Développez
Pour être prêt à développer:
$pto stpp dvlp
yhn eu.y eeo
#o
u
$ppisal- .
i ntl e
A refaire dès que les dépendances et les entrypoints changent.
15. 15
Publiez
#Ergsrrl mdl srPP
neite e oue u yI
$pto stpp rgse
yhn eu.y eitr
#PbirsrPP
ule u yI
$pto stpp situla
yhn eu.y ds pod
#Céru vrinae u sfi
re n eso vc n ufx
$pto stpp - egif - "13"sit
yhn eu.y q g_no b .24 ds
17. 17
Réutiliser les metadonnées du module
Selon la PEP 396, le module doit contenir un attribut _ v r i n _
_eso_
fo poetipr _vrin_ _dsrpin_
rm rjc mot _eso_, _ecito_
stp
eu(
nm=poet
ae'rjc'
vrin_vrin_
eso=_eso_
dsrpin_dsrpin_
ecito=_ecito_
)
18. 18
Réutiliser les requirements de pip
R_EURMN =r.opl('*rs(Pflnm>*$)
ERQIEET
ecmier^s-*?<ieae.)'
dfppflnm)
e
i(ieae:
rqieet =[
eurmns
]
frln i oe(on'eurmns,flnm).edie(:
o ie n pnji(rqieet' ieae)ralns)
mth=R_EURMN.ac(ie
ac
ERQIEETmthln)
i mth
f ac:
rqieet.xedppmthgop'ieae))
eurmnsetn(i(ac.ru(flnm')
es:
le
rqieet.pedln)
eurmnsapn(ie
rtr rqieet
eun eurmns
stp
eu(
#..
.
isalrqie=i(isalpp)
ntl_eurspp'ntl.i',
tssrqiepp'etpp)
et_eur=i(ts.i',
eta_eur ={
xrsrqie
'et' pp'etpp)
tss: i(ts.i',
}
,
)
20. 20
Réutilisez la version
ty
r:
fo pgrsucsipr gtdsrbto
rm k_eore mot e_itiuin
VRIN=gtdsrbto(poet)vrin
ESO
e_itiuin'rjc'.eso
ecp:
xet
VRIN=_ipr_(poet)_vrin_
ESO
_mot_'rjc'._eso_
Prend en compte la version "installée" (ex: 0.1.0.dev1234)
22. 22
Console scripts
Pas besoin de répertoire b n
i
etypit=
nr_ons{
'osl_cit' [
cnoesrps:
'yxc=poetcmad:an,
mee
rjc.omnsmi'
]
}
$mee
yxc
23. 23
Créer ses propres commandes
etypit ={
nr_ons
'ittl.omns:'oi =poetcmad:ooehn'
dsuiscmad' d_t
rjc.omnsDSmtig,
}
,
fo stpol ipr Cmad
rm eutos mot omn
casDSmtigCmad:
ls ooehn(omn)
dsrpin="osmtig
ecito
D
oehn"
ue_pin =[
srotos
]
dfiiilz_pin(ef:
e ntaieotossl)
ps
as
dffnlz_pin(ef:
e iaieotossl)
ps
as
dfrnsl)
e u(ef:
d_oehn(
osmtig)
24. 24
Chargement d'extensions
Un project qui exporte
etypit ={
nr_ons
'yrjc.lgn' [
mpoetpuis:
'oelgn=ohrpoetpuisSmPui'
smpui
te_rjc.lgn:oelgn,
]
,
}
,
Un autre qui importe
ipr pgrsucs
mot k_eore
fretyon i pgrsucsie_nr_ons'yrjc.lgn':
o
nrpit n k_eore.tretypit(mpoetpuis)
pui =etyon.od)
lgn
nrpitla(
25. 25
Un peu de lecture
• Documentation officielle de setuptools
• The Hitchhiker's Guide to Packaging
• PEP 386 (numéro de version)
• PEP 396 (version d'un module)
• PEP 345 (métadonnées)
• PEP 426 (métadonnées 2.0)
• semver
29. 29
Layout
── d c
o
── m p o e t
yrjc
│
─ _ii_.y
_nt_p
│
└─ .
.
── r q i e e t
eurmns
│
─ dvlppp
eeo.i
│
─ isalpp
ntl.i
│
─ tospp
ol.i
│
└─ t s . i
etpp
─ .iinr
gtgoe
─ Mkfl/afl
aeieFbie
─ bmrr
up.c
─ CAGLGrt
HNEO.s
─ pp.c
e8r
─ pln.c
yitr
─ MNFS.n
AIETi
─ RAM.s
EDErt
└─ s t p p
eu.y
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi