Changeset 112:aa4492e1f366
- Timestamp:
- 06/08/07 11:04:36 (18 months ago)
- Files:
-
- 5 added
- 2 removed
- 13 modified
-
JFP/doctest.txt (added)
-
JFP/media/guide.png (added)
-
JFP/media/happy_1.jpg (added)
-
JFP/media/happy_2.gif (added)
-
JFP/media/sleeping2.jpg (added)
-
JFP/slides.html (modified) (22 diffs)
-
JFP/slides.txt (modified) (5 diffs)
-
JFP/t_and_d__dd.txt (deleted)
-
JFP/test_slides.py (deleted)
-
xap/data/chainon.xap/position.DB (modified) (previous)
-
xap/data/chainon.xap/position.baseB (modified) (previous)
-
xap/data/chainon.xap/postlist.DB (modified) (previous)
-
xap/data/chainon.xap/postlist.baseB (modified) (previous)
-
xap/data/chainon.xap/record.DB (modified) (previous)
-
xap/data/chainon.xap/record.baseB (modified) (previous)
-
xap/data/chainon.xap/termlist.DB (modified) (previous)
-
xap/data/chainon.xap/termlist.baseB (modified) (previous)
-
xap/data/chainon.xap/value.baseB (modified) (previous)
-
xap/db.py (modified) (2 diffs)
-
xap/doc/db.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
JFP/slides.html
r105 r112 355 355 <li>Expliquer comment les tests fonctionnent en Python</li> 356 356 <li>Sensibiliser les développeurs au <strong>DDD</strong></li> 357 <li>Expliquer pourquoi le <strong>reST</strong> et les <strong>doctests</strong> c'est merveilleux</li>357 <li>Expliquer pourquoi les <strong>doctests</strong> c'est merveilleux</li> 358 358 </ul> 359 359 <p><img alt="important" src="media/important.png" /> En un mot: comment développer <cite>agile</cite> en Python</p> … … 374 374 <li><strong>Quelques définitions</strong> <img alt="smile" src="media/smile.png" /></li> 375 375 <li><cite>Partie 1: le TDD avec Python</cite></li> 376 <li><cite>Partie 2: le reST</cite> A ZAPPER</li> 377 <li><cite>Part 3: les doctests</cite></li> 378 <li><cite>Part 4: le DDD</cite></li> 376 <li><cite>Part 2: les doctests</cite></li> 377 <li><cite>Part 3: le DDD</cite></li> 379 378 </ul> 380 379 </div> … … 406 405 <ul class="simple"> 407 406 <li>coder (-> TDD)</li> 408 <li>faire de la documentation (-> DDD)</li>407 <li>faire de la documentation (-> DDD)</li> 409 408 <li>passer la tondeuse</li> 410 409 <li>etc.</li> … … 412 411 </div> 413 412 <div class="slide" id="id6"> 413 <h1>Quelques définitions</h1> 414 <p>TDD == Test-Driven Development == Développement Dirigé par les Tests</p> 415 </div> 416 <div class="slide" id="id7"> 414 417 <h1>Le plan</h1> 415 418 <ul class="simple"> 416 419 <li><cite>Quelques définitions</cite></li> 417 420 <li><strong>Partie 1: le TDD avec Python</strong> <img alt="smile" src="media/smile.png" /></li> 418 <li><cite>Partie 2: le reST</cite></li> 419 <li><cite>Part 3: les doctests</cite></li> 420 <li><cite>Part 4: le DDD</cite></li> 421 <li><cite>Part 2: les doctests</cite></li> 422 <li><cite>Part 3: le DDD</cite></li> 421 423 </ul> 422 424 </div> … … 436 438 </ul> 437 439 </div> 438 <div class="slide" id="id 7">440 <div class="slide" id="id8"> 439 441 <h1>Les principes du TDD</h1> 440 442 <p>Exemple:</p> … … 454 456 </pre> 455 457 </div> 456 <div class="slide" id="id 8">458 <div class="slide" id="id9"> 457 459 <h1>Les principes du TDD</h1> 458 460 <p>Chaque test concerne un aspect du code.</p> … … 470 472 </pre> 471 473 </div> 472 <div class="slide" id="id 9">474 <div class="slide" id="id10"> 473 475 <h1>Les principes du TDD</h1> 474 476 <p>Ca plante, changeons la fonction:</p> … … 485 487 </pre> 486 488 </div> 487 <div class="slide" id="id1 0">489 <div class="slide" id="id11"> 488 490 <h1>Les principes du TDD</h1> 489 491 <ul class="simple"> … … 494 496 <p><em>Je change la fonction, je revalide les tests</em></p> 495 497 </div> 496 <div class="slide" id="id1 1">498 <div class="slide" id="id12"> 497 499 <h1>Les principes du TDD</h1> 498 500 <p>Encore plus fort: le test est écrit <cite>avant</cite> le code:</p> … … 509 511 </pre> 510 512 </div> 511 <div class="slide" id="id1 2">513 <div class="slide" id="id13"> 512 514 <h1>Les principes du TDD</h1> 513 515 <p>Le code à présent:</p> … … 524 526 <p>-> Bien souvent ils le sont en même temps ou juste aprÚs</p> 525 527 </div> 526 <div class="slide" id="id1 3">528 <div class="slide" id="id14"> 527 529 <h1>Les principes du TDD</h1> 528 530 <p>Le TDD offre:</p> … … 537 539 </ul> 538 540 </div> 539 <div class="slide" id="id1 4">541 <div class="slide" id="id15"> 540 542 <h1>Les principes du TDD</h1> 541 543 <p>Jean-Charles dit:</p> … … 547 549 <em>"If it's not tested, it's broken"</em></blockquote> 548 550 </div> 549 <div class="slide" id="id1 5">551 <div class="slide" id="id16"> 550 552 <h1>Les principes du TDD</h1> 551 553 <p>Bruce a raison.</p> … … 558 560 </ul> 559 561 </div> 560 <div class="slide" id="id1 6">562 <div class="slide" id="id17"> 561 563 <h1>Partie 1</h1> 562 564 <p><strong>Le TDD avec Python</strong></p> … … 575 577 <p><img alt="important" src="media/important.png" /> Il existe plein d'autres outils tiers de tests</p> 576 578 </div> 577 <div class="slide" id="id1 7">579 <div class="slide" id="id18"> 578 580 <h1>Comment écrire des tests</h1> 579 581 <p><cite>unittest</cite> fourni des outils pour l'écriture des tests:</p> 580 582 <ul class="simple"> 581 <li>une classe <cite>TestCase</cite>, pour les assertions et les <cite>test fixture</cite>;</li> 583 <li>une classe <cite>TestCase</cite>, pour les assertions et les <cite>test fixture</cite> 584 (environnement pour le test);</li> 582 585 <li>une classe <cite>TestSuite</cite>, pour créér des séquences de tests;</li> 583 586 <li>quelques fonctions pour lancer des <em>test campaign</em>.</li> 584 587 </ul> 585 588 </div> 586 <div class="slide" id="id1 8">589 <div class="slide" id="id19"> 587 590 <h1>Comment écrire des tests</h1> 588 591 <p><cite>TestCase</cite> fourni:</p> … … 602 605 </ul> 603 606 </div> 604 <div class="slide" id="id 19">607 <div class="slide" id="id20"> 605 608 <h1>Comment écrire des tests</h1> 606 609 <p>Ecrire une suite de tests == dériver de <cite>TestCase</cite>:</p> … … 618 621 <p>Un test == une méthode préfixée de <cite>test</cite></p> 619 622 </div> 620 <div class="slide" id="id2 0">623 <div class="slide" id="id21"> 621 624 <h1>Comment écrire des tests</h1> 622 625 <p>Les tests peuvent être:</p> … … 627 630 </ul> 628 631 </div> 629 <div class="slide" id="id2 1">632 <div class="slide" id="id22"> 630 633 <h1>Comment écrire des tests</h1> 631 634 <p>Exemple de module:</p> … … 651 654 </pre> 652 655 </div> 653 <div class="slide" id="id2 2">656 <div class="slide" id="id23"> 654 657 <h1>Comment écrire des tests</h1> 655 658 <p>Lancement des tests:</p> … … 663 666 </pre> 664 667 </div> 665 <div class="slide" id="id2 3">668 <div class="slide" id="id24"> 666 669 <h1>Comment écrire des tests</h1> 667 670 <p>Lancement des tests, avec une erreur:</p> … … 683 686 </pre> 684 687 </div> 685 <div class="slide" id="id24">686 <h1>Comment écrire des tests</h1>687 <div align="center" class="figure">688 <img alt=""TDD with Python rocks" -- Magnum" src="media/magnum.jpg" style="width: 400px; height: 300px;" />689 <p class="caption">"Doing TDD with Python is so cool !" -- Magnum</p>690 </div>691 </div>692 688 <div class="slide" id="id25"> 693 689 <h1>Partie 1</h1> … … 696 692 -> Comment organiser les tests dans un projet Python</blockquote> 697 693 </div> 698 <div class="slide" id="the-plan">699 <h1>The plan</h1>700 <ul class="simple">701 <li><cite>A few definitions</cite></li>702 <li><cite>Part 1: doing TDD in Python</cite></li>703 <li><strong>Part 2: writing documents in reST</strong></li>704 <li><cite>Part 3: writing doctests</cite></li>705 <li><cite>Part 4: doing DDD in Python</cite></li>706 </ul>707 </div>708 <div class="slide" id="part-2">709 <h1>Part 2</h1>710 <p>Writing documents in reST</p>711 <ul class="simple">712 <li><strong>What is reST ?</strong></li>713 <li><cite>reST syntax overview</cite></li>714 <li><cite>reST tools</cite></li>715 </ul>716 </div>717 <div class="slide" id="what-is-rest">718 <h1>What is reST ?</h1>719 <p>reSTructuredText (say reSt to be hype) is:</p>720 <ul class="simple">721 <li>a plaintext markup syntax and parser system</li>722 <li>easy to read as-is, yet powerful</li>723 <li>the Pythonistas laTeX</li>724 <li>see <a class="reference" href="http://docutils.sf.net">http://docutils.sf.net</a></li>725 </ul>726 </div>727 694 <div class="slide" id="id26"> 728 <h1>What is reST ?</h1> 729 <p>Example:</p> 730 <pre class="literal-block"> 731 ================== 732 I am the reST file 733 ================== 734 735 I am the first section 736 ====================== 737 738 I am the content of the first section. 739 I have things to say. 740 741 I am the second section 742 ======================= 743 744 I am, what I am, what I aammmm... 745 </pre> 695 <h1>Partie 1</h1> 696 <p>Sans les tests:</p> 697 <div align="center" class="figure"> 698 <img alt="media/sleeping.jpg" src="media/sleeping.jpg" style="width: 300px; height: 300px;" /> 699 </div> 746 700 </div> 747 701 <div class="slide" id="id27"> 748 <h1>What is reST ?</h1> 749 <p>Several remarks:</p> 750 <ul class="simple"> 751 <li>the reST syntax doesn't obfuscate the text</li> 752 <li>punctuation signs are used to underline section titles</li> 753 </ul> 702 <h1>Partie 1</h1> 703 <p>Avec les tests:</p> 704 <div align="center" class="figure"> 705 <img alt="media/happy_1.jpg" src="media/happy_1.jpg" style="width: 300px; height: 300px;" /> 706 </div> 754 707 </div> 755 708 <div class="slide" id="id28"> 756 <h1>Part 2</h1> 757 <p>Writing documents in reST</p> 758 <ul class="simple"> 759 <li><cite>What is reST ?</cite></li> 760 <li><strong>reST syntax overview</strong></li> 761 <li><cite>reST tools</cite></li> 762 </ul> 763 </div> 764 <div class="slide" id="rest-syntax-overview"> 765 <h1>reST syntax overview</h1> 766 <ul class="simple"> 767 <li>punctuation signs to underline sections</li> 768 <li>text enhancements<ul> 769 <li><tt class="docutils literal"><span class="pre">*emphasis*</span></tt></li> 770 <li><tt class="docutils literal"><span class="pre">**strong</span> <span class="pre">emphasis**</span></tt></li> 771 <li><tt class="docutils literal"><span class="pre">`interpreted</span> <span class="pre">text`</span></tt></li> 772 <li><tt class="docutils literal"><span class="pre">``inline</span> <span class="pre">literal</span> <span class="pre">text``</span></tt></li> 773 </ul> 774 </li> 775 </ul> 709 <h1>Partie 1</h1> 710 <p>Avec les tests:</p> 711 <div align="center" class="figure"> 712 <img alt="media/happy_2.gif" src="media/happy_2.gif" style="width: 200px; height: 300px;" /> 713 </div> 776 714 </div> 777 715 <div class="slide" id="id29"> 778 <h1>reST syntax overview</h1> 779 <ul class="simple"> 780 <li>bullet list: use +, * or -</li> 781 <li>enumerated list: use n. (1., 2., etc.) or #. (automatic)</li> 782 </ul> 716 <h1>Le plan</h1> 717 <ul class="simple"> 718 <li><cite>Quelques définitions</cite></li> 719 <li><cite>Partie 1: le TDD avec Python</cite></li> 720 <li><strong>Partie 2: les doctests</strong> <img alt="smile" src="media/smile.png" /></li> 721 <li><cite>Partie 3: le DDD</cite></li> 722 </ul> 723 </div> 724 <div class="slide" id="partie-2"> 725 <h1>Partie 2</h1> 726 <p>Les <cite>doctests</cite></p> 727 <ul class="simple"> 728 <li>basés sur le principe du <cite>literate programming</cite> (KNUTH)</li> 729 <li>utilise le prompt Python</li> 730 </ul> 731 </div> 732 <div class="slide" id="les-doctests"> 733 <h1>Les doctests</h1> 734 <p>Exemple de doctest <cite>inline</cite>:</p> 735 <pre class="literal-block"> 736 def somme(a, b): 737 """ calcul la somme 738 739 >>> somme(1, 3) 740 4 741 >>> somme(2, 2) 742 4 743 """ 744 return a + b 745 </pre> 783 746 </div> 784 747 <div class="slide" id="id30"> 785 <h1>Part 2</h1> 786 <p>Writing documents in reST</p> 787 <ul class="simple"> 788 <li><cite>What is reST ?</cite></li> 789 <li><cite>reST syntax overview</cite></li> 790 <li><strong>reST tools</strong></li> 791 </ul> 792 </div> 793 <div class="slide" id="rest-tools"> 794 <h1>reST tools</h1> 795 <p>XXX</p> 748 <h1>Les doctests</h1> 749 <p><img alt="smile" src="media/smile.png" /> Les exemples sont directement disponibles</p> 750 <p><img alt="sad" src="media/sad.png" /> Le code devient dur à lire</p> 796 751 </div> 797 752 <div class="slide" id="id31"> 798 <h1>Part 2</h1> 799 <p>Writing documents in reST</p> 800 <ul class="simple"> 801 <li><cite>What is reST ?</cite></li> 802 <li><cite>reST syntax overview</cite></li> 803 <li><cite>reST tools</cite></li> 804 </ul> 805 <p>reST can be:</p> 806 <ul class="simple"> 807 <li>used for all documentation needs</li> 808 <li>manipulated like code (versioning, etc.)</li> 809 <li>easily transformed into various shapes</li> 810 </ul> 811 <p>Python developers <img alt="love" src="media/love.png" /> reST</p> 753 <h1>Les doctests</h1> 754 <p>Solution: séparer les doctests dans un fichier texte</p> 755 <ul class="simple"> 756 <li>chaque module de code peut avoir son module de doctest</li> 757 <li>un script <cite>execute</cite> ces modules de tests</li> 758 </ul> 812 759 </div> 813 760 <div class="slide" id="id32"> 814 <h1>The plan</h1> 815 <ul class="simple"> 816 <li><cite>A few definitions</cite></li> 817 <li><cite>Part 1: doing TDD in Python</cite></li> 818 <li><cite>Part 2: writing documents in reST</cite></li> 819 <li><strong>Part 3: writing doctests</strong></li> 820 <li><cite>Part 4: doing DDD in Python</cite></li> 821 </ul> 822 </div> 823 <div class="slide" id="how-to-organise-tests-in-a-python-project"> 824 <h1>How to organise tests in a Python project</h1> 825 <p>By the way, how Python code is organized ?</p> 826 <ul class="simple"> 827 <li>a package == a folder with files</li> 828 <li>a module == a file with classes, functions and variables</li> 829 </ul> 830 <p>Each package comes with</p> 831 <ul class="simple"> 832 <li>a <cite>doc</cite> subfolder</li> 833 <li>a <cite>tests</cite> subfolder <--- let's put our unit tests here <img alt="wink" src="media/wink.png" /></li> 834 </ul> 835 <p>Following the TDD principles:</p> 836 <ul class="simple"> 837 <li>one code module <==> one test module</li> 838 </ul> 761 <h1>Les doctests</h1> 762 <p>Exemple de doctest séparé. Fichier <em>calc.py</em>:</p> 763 <pre class="literal-block"> 764 def somme(a, b): 765 """ calcul la somme 766 """ 767 return a + b 768 </pre> 769 <p>Fichier <em>calc.txt</em>:</p> 770 <pre class="literal-block"> 771 >>> from calc import somme 772 >>> somme(1, 3) 773 4 774 >>> somme(2, 2) 775 4 776 </pre> 839 777 </div> 840 778 <div class="slide" id="id33"> 841 <h1>How to organise tests in a Python project</h1> 842 <p>Our division package will look like this:</p> 843 <pre class="literal-block"> 844 division 845 | 846 |-- division.py 847 | 848 |-- tests 849 | | 850 | |-- test_division.py 851 | 852 |-- doc 853 | 854 |-- division.txt <-- some cool doc 855 </pre> 856 </div> 857 <div class="slide" id="part-1"> 858 <h1>Part 1</h1> 859 <p><cite>Doing TDD in Python</cite></p> 860 <ul class="simple"> 861 <li><cite>The TDD principles</cite></li> 862 <li><cite>How to write tests in Python</cite></li> 863 <li><cite>How to organise tests in a Python project</cite></li> 864 </ul> 779 <h1>Les doctests</h1> 780 <p>Un fichier doctest devient un test unitaire grâce au module <cite>doctest</cite>:</p> 781 <pre class="literal-block"> 782 import doctest 783 import unittest 784 785 def test_suite(): 786 suite.append(doctest.DocFileTest('calc.txt')) 787 return unittest.TestSuite(suite) 788 789 if __name__ == '__main__': 790 unittest.main(defaultTest='test_suite') 791 </pre> 865 792 </div> 866 793 <div class="slide" id="id34"> 867 <h1>Part 1</h1> 868 <p>Mettre une photo de matrix</p> 869 <p>"I now TDD in Python now" -- Neo, The Matrix</p> 794 <h1>Les doctests</h1> 795 <p>doctests + tests classiques == campagne de test</p> 796 </div> 797 <div class="slide" id="id35"> 798 <h1>Le plan</h1> 799 <ul class="simple"> 800 <li><cite>Quelques définitions</cite></li> 801 <li><cite>Partie 1: le TDD avec Python</cite></li> 802 <li><cite>Partie 2: les doctests</cite></li> 803 <li><strong>Partie 3: le DDD</strong> <img alt="smile" src="media/smile.png" /></li> 804 </ul> 805 </div> 806 <div class="slide" id="partie-3"> 807 <h1>Partie 3</h1> 808 <p>Le Document-Driven Development</p> 809 <p>Principe:</p> 810 <blockquote> 811 Les doctests séparés peuvent <cite>aussi</cite> être des documents</blockquote> 812 </div> 813 <div class="slide" id="documentation"> 814 <h1>Documentation</h1> 815 <p>Chaque doctest == alternance de code et d'explications:</p> 816 <pre class="literal-block"> 817 Module calc 818 819 Le module calc contient une fonction pour faire des sommes: 820 821 >>> from calc import somme 822 823 Cette fonction prends deux paramÚtres: 824 825 >>> somme(1, 3) 826 4 827 >>> somme(2, 2) 828 4 829 </pre> 830 </div> 831 <div class="slide" id="id36"> 832 <h1>Documentation</h1> 833 <p><img alt="smile" src="media/smile.png" /> Promiscuité de la documentation</p> 834 <p><img alt="smile" src="media/smile.png" /> La documentation évolue en même temps que le code</p> 835 <p><img alt="smile" src="media/smile.png" /> Le développeur utilise la doc. pour concevoir les tests</p> 836 <p><img alt="smile" src="media/smile.png" /> La documentation du projet est conçue en partie par ce biais</p> 837 </div> 838 <div class="slide" id="id37"> 839 <h1>Documentation</h1> 840 <p><img alt="important" src="media/important.png" /> Un doctest doit rester un document: ne pas le noyer dans des 841 <cite>test fixtures</cite> (mise en place pour les tests)</p> 842 <p><img alt="important" src="media/important.png" /> Les doctests montrent des exemples <strong>publics</strong> de code</p> 843 <p><img alt="important" src="media/important.png" /> Les tests unitaires classiques s'occupent du reste</p> 844 </div> 845 <div class="slide" id="id38"> 846 <h1>Documentation</h1> 847 <p>-> Demo: construction d'un module de calcul</p> 848 </div> 849 <div class="slide" id="id39"> 850 <h1>Documentation</h1> 851 <p>Pour aller plus loin:</p> 852 <p>-> utilisation du reSTructuredText dans les documents</p> 853 </div> 854 <div class="slide" id="conclusion"> 855 <h1>Conclusion</h1> 856 <p>Questions ?</p> 857 </div> 858 <div class="slide" id="ressources"> 859 <h1>Ressources</h1> 860 <ul class="simple"> 861 <li><a class="reference" href="http://docs.python.org">http://docs.python.org</a> (doctest et unittest)</li> 862 <li><a class="reference" href="http://programmation-python.org">http://programmation-python.org</a></li> 863 </ul> 864 </div> 865 <div class="slide" id="id40"> 866 <h1>Ressources</h1> 867 <p>Sortie le 16 aout:</p> 868 <div align="center" class="figure"> 869 <img alt="media/guide.png" src="media/guide.png" style="width: 200px; height: 300px;" /> 870 </div> 870 871 </div> 871 872 </div> -
JFP/slides.txt
r105 r112 27 27 - Expliquer comment les tests fonctionnent en Python 28 28 - Sensibiliser les développeurs au **DDD** 29 - Expliquer pourquoi le **reST** et les **doctests** c'est merveilleux29 - Expliquer pourquoi les **doctests** c'est merveilleux 30 30 31 31 |important| En un mot: comment développer `agile` en Python … … 76 76 77 77 - coder (-> TDD) 78 - faire de la documentation (-> DDD)78 - faire de la documentation (-> DDD) 79 79 - passer la tondeuse 80 80 - etc. 81 82 Quelques définitions 83 ==================== 84 85 TDD == Test-Driven Development == Développement Dirigé par les Tests 81 86 82 87 Le plan … … 255 260 `unittest` fourni des outils pour l'écriture des tests: 256 261 257 - une classe `TestCase`, pour les assertions et les `test fixture`; 262 - une classe `TestCase`, pour les assertions et les `test fixture` 263 (environnement pour le test); 258 264 - une classe `TestSuite`, pour créér des séquences de tests; 259 265 - quelques fonctions pour lancer des *test campaign*. … … 359 365 FAILED (failures=1) 360 366 361 Comment écrire des tests 362 ======================== 363 364 .. figure:: media/magnum.jpg 365 :alt: "TDD with Python rocks" -- Magnum 367 Partie 1 368 ======== 369 370 Pour aller plus loin: 371 372 -> Comment organiser les tests dans un projet Python 373 374 375 Partie 1 376 ======== 377 378 Sans les tests: 379 380 .. figure:: media/sleeping.jpg 366 381 :align: center 367 382 :height: 300 368 :width: 400 369 370 "Doing TDD with Python is so cool !" -- Magnum 383 :width: 300 371 384 372 385 Partie 1 373 386 ======== 374 387 375 Pour aller plus loin: 376 377 -> Comment organiser les tests dans un projet Python 378 379 380 La mi-temps 381 =========== 382 383 XXX mettre un truc drole 388 Avec les tests: 389 390 .. figure:: media/happy_1.jpg 391 :align: center 392 :height: 300 393 :width: 300 394 395 Partie 1 396 ======== 397 398 Avec les tests: 399 400 .. figure:: media/happy_2.gif 401 :align: center 402 :height: 300 403 :width: 200 384 404 385 405 Le plan … … 388 408 - `Quelques définitions` 389 409 - `Partie 1: le TDD avec Python` 390 - **Part 2: les doctests** |smile| 391 - `Part 3: le DDD` 392 393 394 XXXXXXXXX 395 396 The plan 397 ======== 398 399 - `A few definitions` 400 - `Part 1: doing TDD in Python` 401 - **Part 2: writing documents in reST** 402 - `Part 3: writing doctests` 403 - `Part 4: doing DDD in Python` 404 405 Part 2 406 ====== 407 408 Writing documents in reST 409 410 - **What is reST ?** 411 - `reST syntax overview` 412 - `reST tools` 413 414 What is reST ? 415 ============== 416 417 reSTructuredText (say reSt to be hype) is: 418 419 - a plaintext markup syntax and parser system 420 - easy to read as-is, yet powerful 421 - the Pythonistas laTeX 422 - see http://docutils.sf.net 423 424 What is reST ? 425 ============== 426 427 Example:: 428 429 ================== 430 I am the reST file 431 ================== 432 433 I am the first section 434 ====================== 435 436 I am the content of the first section. 437 I have things to say. 438 439 I am the second section 440 ======================= 441 442 I am, what I am, what I aammmm... 443 444 What is reST ? 445 ============== 446 447 Several remarks: 448 449 - the reST syntax doesn't obfuscate the text 450 - punctuation signs are used to underline section titles 451 452 Part 2 453 ====== 454 455 Writing documents in reST 456 457
