Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Écrire la loi en Python

Écrire la loi en Python

Le projet OpenFisca propose depuis 2011 un accès sous forme de code source aux formules de calcul décrites dans les textes des lois socio-fiscales.

Source des slides : https://github.com/openfisca/communication/tree/master/docs/PyConFR-2016

Christophe Benz

October 16, 2016
Tweet

Other Decks in Programming

Transcript

  1. Écrire la loi en Python PyCon France 2016 à Rennes

    openfisca.fr – @OpenFisca Christophe Benz 1 / 26
  2. Les problèmes en 2011 les calculateurs sont éparpillés accessibles ou

    pas – mais propriétaires les démarches sont morcelées les économistes sont coincés 4 / 26
  3. Un calculateur une situation en entrée évaluation de formules de

    calcul un résultat en sortie simulateur – calculateur 6 / 26
  4. Exemple simplifié d e f i m p o t

    ( s a l a i r e ) : r e t u r n s a l a i r e * 0 . 3 9 / 26
  5. Exemple simplifié d e f i m p o t

    ( s a l a i r e ) : r e t u r n s a l a i r e * 0 . 3 d e f a l l o c a t i o n s ( s a l a i r e ) : r e t u r n 1 0 0 0 i f s a l a i r e < 1 0 0 0 0 e l s e 0 9 / 26
  6. Exemple simplifié d e f i m p o t

    ( s a l a i r e ) : r e t u r n s a l a i r e * 0 . 3 d e f a l l o c a t i o n s ( s a l a i r e ) : r e t u r n 1 0 0 0 i f s a l a i r e < 1 0 0 0 0 e l s e 0 d e f r e v e n u _ d i s p o n i b l e ( s a l a i r e ) : r e t u r n s a l a i r e - i m p o t ( s a l a i r e ) + a l l o c a t i o n s ( s a l a i r e ) 9 / 26
  7. Exemple réel c l a s s r e v

    d i s p ( V a r i a b l e ) : c o l u m n = F l o a t C o l ( d e f a u l t = 0 ) e n t i t y _ c l a s s = M e n a g e s l a b e l = u " R e v e n u d i s p o n i b l e d u m é n a g e " d e f f u n c t i o n ( s e l f , s i m u l a t i o n , p e r i o d ) : p e r i o d = p e r i o d . s t a r t . p e r i o d ( ' y e a r ' ) . o f f s e t ( ' f i r s t - o f ' ) r e v _ t r a v _ h o l d e r = s i m u l a t i o n . c o m p u t e ( ' r e v _ t r a v ' , p e r i o d ) p e n _ h o l d e r = s i m u l a t i o n . c o m p u t e ( ' p e n ' , p e r i o d ) r e v _ c a p _ h o l d e r = s i m u l a t i o n . c o m p u t e ( ' r e v _ c a p ' , p e r i o d ) p s o c _ h o l d e r = s i m u l a t i o n . c o m p u t e ( ' p s o c ' , p e r i o d ) p p e _ h o l d e r = s i m u l a t i o n . c o m p u t e ( ' p p e ' , p e r i o d ) i m p o = s i m u l a t i o n . c a l c u l a t e ( ' i m p o ' , p e r i o d ) p e n = s e l f . s u m _ b y _ e n t i t y ( p e n _ h o l d e r ) p p e = s e l f . c a s t _ f r o m _ e n t i t y _ t o _ r o l e ( p p e _ h o l d e r , r o l e = V O U S ) p p e = s e l f . s u m _ b y _ e n t i t y ( p p e ) p s o c = s e l f . c a s t _ f r o m _ e n t i t y _ t o _ r o l e ( p s o c _ h o l d e r , r o l e = C H E F ) p s o c = s e l f . s u m _ b y _ e n t i t y ( p s o c ) r e v _ c a p = s e l f . s u m _ b y _ e n t i t y ( r e v _ c a p _ h o l d e r ) r e v _ t r a v = s e l f . s u m _ b y _ e n t i t y ( r e v _ t r a v _ h o l d e r ) r e t u r n p e r i o d , r e v _ t r a v + p e n + r e v _ c a p + p s o c + p p e + i m p o 10 / 26
  8. Composants logiciels moteur de calcul : OpenFisca-Core législation Française :

    OpenFisca-France API Web HTTP+JSON api.openfisca.fr ou auto-hébergement 19 / 26
  9. Fiabilisation par les tests (non-régression) par comparaison entre calculateurs génération

    aléatoire de ~2000 familles les écarts apparaissent 21 / 26
  10. Appel à la contribution apportez votre savoir sur la loi

    utilisez OpenFisca pour un article implémentez des formules écrivez des applications proposez vos idées ! 24 / 26
  11. L'État tend à plus d'ouverture La société civile en bénéficie

    Un outil neutre pour un débat informé 25 / 26