<jupyter_start><jupyter_text>Greeter> A very friendly module<jupyter_code>#hide
from nbdev.showdoc import *<jupyter_output><empty_output><jupyter_text>Para definir o que cada célula faz, o nbdev usa comentários especiais. Na célula acima (que tem de ser a primeira), `default_exp greeter` estabelece que o nome do módulo a ser criado é `greeter`. Na célula abaixo, temos o `export`, que indica ao nbdev que esta célula é para incluir na exportação.<jupyter_code>#export
def say_hello(to):
    "Say hello to somebody"
    print(f'Hello {to}!')<jupyter_output><empty_output><jupyter_text>Depois é uma questão de **testarmos** o nosso módulo. Tudo o que incluirmos sem `export` vai para a documentação, mas não é exportado para o código. Podemos usar estas células para fazer testes unitários aos métodos que escrevemos e o nbdev inclui até um módulo de testes em paralelo, que torna trabalhar numa biblioteca muito grande mais fácil a este nível.<jupyter_code>say_hello("Rui")<jupyter_output>Hello Rui!<jupyter_text>Se não quisermos que determinado teste vá parar à documentação, podemos simplesmente colocar a tag `hide` na primeira linha da célula.<jupyter_code># hide
say_hello("Miguel")<jupyter_output>Hello Miguel!<jupyter_text>Há duas maneiras de construir a biblioteca final. A primeira é correr o comando `nbdev_build_lib` na linha de comandos. A segunda é correr a seguinte célula (notem o `hide`).<jupyter_code>#hide
from nbdev.export import notebook2script
notebook2script()<jupyter_output>Converted 00_apresentacao.ipynb.
Converted 01_greeter.ipynb.
Converted index.ipynb.<jupyter_text>Para escrevermos a documentação devemos passar para a linha de comandos e correr o comando `nbdev_build_docs`.<jupyter_code>#export
class HelloSayer:
    "Say hello to `to` using `say_hello`"
    def __init__(self, to): self.to = to
        
    def say(self):
        "Do the saying"
        say_hello(self.to)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.07537429013939081, 'fraction_numerical': 0.003097573567372225, 'mean_word_length': 5.65979381443299, 'pattern_counts': {'":': 0, '<': 22, '<?xml version=': 0, '>': 23, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '556908', 'license': 'Apache-2.0', 'n_tokens_mistral': 710, 'n_tokens_neox': 702, 'n_words': 224, 'path': '01_greeter.ipynb', 'repo_name': 'ruivalmeida/nbdev_presentation', 'size': '1937'}