Skip to content

Commit 9d6d402

Browse files
committed
uniformizar termos
1 parent 2227199 commit 9d6d402

File tree

9 files changed

+42
-41
lines changed

9 files changed

+42
-41
lines changed

capitulos/cap05.adoc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,7 @@ que são provavelmente os tipos mais comuns usados para anotar campos em classes
531531
==== Nenhum efeito durante a execução
532532

533533
Pense nas dicas de tipo de Python como
534-
"documentação que pode ser verificada por IDEs e verificadores de tipo".
534+
"documentação que pode ser verificada por IDEs e checadores de tipos".
535535

536536
Isso porque as dicas de tipo não tem qualquer impacto sobre o comportamento
537537
de programas em Python durante a execução.
@@ -563,7 +563,7 @@ $ python3 nocheck_demo.py
563563
Coordinate(lat='Ni!', lon=None)
564564
----
565565

566-
O objetivo primário das dicas de tipo é ajudar os verificadores de tipo externos,
566+
O objetivo primário das dicas de tipo é ajudar os checadores de tipos externos,
567567
como o https://fpy.li/mypy[Mypy] ou o verificador de tipo embutido do
568568
https://fpy.li/5-5[PyCharm IDE].
569569
Essas são ferramentas de análise estática: elas verificam código-fonte Python "parado",
@@ -1029,7 +1029,7 @@ e que o verificador de tipagem Mypy não reclama de nenhuma das duas definiçõe
10291029
A diferença é que aquele `guests: list` significa que `guests` pode ser uma `list`
10301030
de objetos de qualquer tipo, enquanto `guests: list[str]`
10311031
diz que `guests` deve ser uma `list` na qual cada item é uma `str`.
1032-
Isso permite que o verificador de tipos encontre (alguns)
1032+
Isso permite que o checador de tipos encontre (alguns)
10331033
bugs em código que insira itens inválidos na lista, ou que leia itens dali.
10341034

10351035
A `default_factory` é possivelmente a opção mais comum da função `field`,
@@ -1174,7 +1174,7 @@ chamado `typing.ClassVar`,
11741174
que aproveita a notação de tipos genéricos (`[]`) para definir o tipo da variável
11751175
e também para declará-la como um atributo de classe.
11761176

1177-
Para fazer felizes tanto o verificador de tipos quando o `@dataclass`,
1177+
Para fazer felizes tanto o checador de tipos quando o `@dataclass`,
11781178
deveríamos declarar o `all_handles` do <<hackerclub_ex>> assim:
11791179

11801180
[source, py3]

capitulos/cap08.adoc

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ Um sistema de tipagem gradual:
6969
É opcional::
7070
Por default, o verificador de tipo não deve emitir avisos para código que não tenha dicas de tipo. Em vez disso, o verificador supõe o tipo `Any` quando não consegue determinar o tipo de um objeto. O tipo `Any` é considerado compatível com todos os outros tipos.
7171
Não captura erros de tipagem durante a execução do código::
72-
Dicas de tipo são usadas por verificadores de tipo, analisadores de código-fonte (_linters_) e IDEs para emitir avisos. Eles não evitam que valores inconsistentes sejam passados para funções ou atribuídos a variáveis durante a execução. Por exemplo, nada impede que alguém chame
72+
Dicas de tipo são usadas por checadores de tipos, analisadores de código-fonte (_linters_) e IDEs para emitir avisos. Eles não evitam que valores inconsistentes sejam passados para funções ou atribuídos a variáveis durante a execução. Por exemplo, nada impede que alguém chame
7373
`tokenie(42)`, apesar da anotação de tipo do argumento `s: str`).
7474
A chamada ocorrerá, e teremos um erro de execução no corpo da função.
7575
Não melhora o desempenho::
@@ -83,7 +83,7 @@ tipos recursivos não tinham suporte -- veja as questões https://fpy.li/8-2[#18
8383

8484
É perfeitamente possível que você escreva um ótimo programa Python, que consiga passar por uma boa cobertura de testes, mas ainda assim não consiga acrescentar dicas de tipo que satisfaçam um verificador de tipagem. Não tem problema; esqueça as dicas de tipo problemáticas e entregue o programa!
8585

86-
Dicas de tipo são opcionais em todos os níveis: você pode criar ou usar pacotes inteiros sem dicas de tipo, pode silenciar o verificador ao importar um daqueles pacotes sem dicas de tipo para um módulo onde você use dicas de tipo, e você também pode adicionar comentários especiais, para fazer o verificador de tipos ignorar linhas específicas do seu código.
86+
Dicas de tipo são opcionais em todos os níveis: você pode criar ou usar pacotes inteiros sem dicas de tipo, pode silenciar o verificador ao importar um daqueles pacotes sem dicas de tipo para um módulo onde você use dicas de tipo, e você também pode adicionar comentários especiais, para fazer o checador de tipos ignorar linhas específicas do seu código.
8787

8888
[TIP]
8989
====
@@ -96,7 +96,7 @@ Vamos ((("gradual type system", "in practice", id="GRSpract08"))) ver como a tip
9696

9797
[NOTE]
9898
====
99-
Há muitos((("Python type checkers"))) verificadores de tipo para Python compatíveis com a PEP 484,
99+
Há muitos((("Python type checkers"))) checadores de tipos para Python compatíveis com a PEP 484,
100100
incluindo o https://fpy.li/8-4[pytype] do Google,
101101
o https://fpy.li/8-5[Pyright] da Microsoft,
102102
o https://fpy.li/8-6[Pyre] do Facebook — além de verificadores incluídos em IDEs como o PyCharm.
@@ -540,7 +540,7 @@ Mesmo que funcione algumas vezes, o nome da função `alert_bird` está incorret
540540

541541
Nesse exemplo bobo, as funções tem uma linha apenas.
542542
Mas na vida real elas poderiam ser mais longas, e poderiam passar o argumento `birdie` para outras funções, e a origem daquele argumento poderia estar a muitas chamadas de função de distância, tornando difícil localizar a causa do erro durante a execução.
543-
O verificador de tipos impede que muitos erros como esse aconteçam durante a execução de um programa.
543+
O checador de tipos impede que muitos erros como esse aconteçam durante a execução de um programa.
544544

545545

546546
[NOTE]
@@ -923,7 +923,7 @@ Podemos resumir esse processo em quatro etapas:
923923
924924
. Tornar aquele comportamento o default a partir de Python 3.9: `list[str]` agora funciona sem que `future` precise ser importado.
925925
926-
. Descontinuar (_deprecate_) todos os tipos genéricos do módulo `typing`.footnote:[Uma de minhas contribuições para a documentação do módulo `typing` foi acrescentar dúzias de avisos de descontinuação, enquanto eu reorganizava as entradas abaixo de https://docs.python.org/pt-br/3/library/typing.html#module-contents["Conteúdo do Módulo"] em subseções, sob a supervisão de Guido van [.keep-together]#Rossum#.] Avisos de descontinuação não serão emitidos pelo interpretador Python, porque os verificadores de tipo devem sinalizar os tipos descontinuados quando o programa sendo verificado tiver como alvo Python 3.9 ou posterior.
926+
. Descontinuar (_deprecate_) todos os tipos genéricos do módulo `typing`.footnote:[Uma de minhas contribuições para a documentação do módulo `typing` foi acrescentar dúzias de avisos de descontinuação, enquanto eu reorganizava as entradas abaixo de https://docs.python.org/pt-br/3/library/typing.html#module-contents["Conteúdo do Módulo"] em subseções, sob a supervisão de Guido van [.keep-together]#Rossum#.] Avisos de descontinuação não serão emitidos pelo interpretador Python, porque os checadores de tipos devem sinalizar os tipos descontinuados quando o programa sendo verificado tiver como alvo Python 3.9 ou posterior.
927927
928928
. Remover aqueles tipos genéricos redundantes na primeira versão de Python lançada cinco anos após Python 3.9. No ritmo atual, esse deverá ser Python 3.14, também conhecido como Python Pi.
929929
****
@@ -1228,7 +1228,7 @@ include::code/08-def-type-hints/replacer.py[tags=ZIP_REPLACE]
12281228
.O TypeAlias Explícito em Python 3.10
12291229
[TIP]
12301230
====
1231-
https://fpy.li/pep613[PEP 613—Explicit Type Aliases] introduziu um tipo especial, o `TypeAlias`, para tornar as atribuições que criam apelidos de tipos mais visíveis e mais fáceis para os verificadores de tipo.
1231+
https://fpy.li/pep613[PEP 613—Explicit Type Aliases] introduziu um tipo especial, o `TypeAlias`, para tornar as atribuições que criam apelidos de tipos mais visíveis e mais fáceis para os checadores de tipos.
12321232
A partir de Python 3.10, esta é a forma preferencial de criar um apelidos de tipo.
12331233
12341234
[source, py3]
@@ -1551,7 +1551,7 @@ include::code/08-def-type-hints/comparable/top_test.py[tags=TOP_IMPORT]
15511551
include::code/08-def-type-hints/comparable/top_test.py[tags=TOP_TEST]
15521552
----
15531553
====
1554-
<1> A constante `typing.TYPE_CHECKING` é sempre `False` durante a execução do programa, mas os verificadores de tipo fingem que ela é `True` quando estão fazendo a verificação.
1554+
<1> A constante `typing.TYPE_CHECKING` é sempre `False` durante a execução do programa, mas os checadores de tipos fingem que ela é `True` quando estão fazendo a verificação.
15551555
<2> Declaração de tipo explícita para a variável `series`, para tornar mais fácil a leitura da saída do Mypy.footnote:[Sem essa dica de tipo, o Mypy inferiria o tipo de `series` como `Generator[Tuple[builtins.int, builtins.str*&#x5d;, None, None&#x5d;`, que é prolixo mas _consistente-com_ `Iterator[tuple[int, str&#x5d;&#x5d;`, como veremos na <<generic_iterable_types_sec>>.]
15561556
<3> Esse `if` evita que as três linhas seguintes sejam executadas durante o teste.
15571557
<4> `reveal_type()` não pode ser chamada durante a execução, porque não é uma função regular, mas sim um mecanismo de depuração do Mypy - por isso não há `import` para ela. Mypy vai produzir uma mensagem de depuração para cada chamada à pseudo-função `reveal_type()`, mostrando o tipo inferido do argumento.
@@ -1594,12 +1594,12 @@ Found 1 error in 1 file (checked 1 source file)
15941594
A principal vantagem de um tipo protocolo sobre os ABCs é que o tipo não precisa de nenhuma declaração especial para ser _consistente-com_ um tipo protocolo. Isso permite que um protocolo seja criado aproveitando tipos pré-existentes, ou tipos implementados em bases de código que não estão sob nosso controle.
15951595
Eu não tenho que derivar ou registrar `str`, `tuple`, `float`, `set`, etc. com `SupportsLessThan` para usá-los onde um parâmetro `SupportsLessThan` é esperado.
15961596
Eles só precisam implementar `+__lt__+`.
1597-
E o verificador de tipo ainda será capaz de realizar seu trabalho, porque `SupportsLessThan` está explicitamente declarado como um `Protocol`— diferente dos protocolos implícitos comuns no duck typing, que são invisíveis para o verificador de tipos.
1597+
E o verificador de tipo ainda será capaz de realizar seu trabalho, porque `SupportsLessThan` está explicitamente declarado como um `Protocol`— diferente dos protocolos implícitos comuns no duck typing, que são invisíveis para o checador de tipos.
15981598

15991599
A classe especial `Protocol` foi introduzida na
16001600
https://fpy.li/pep544[PEP 544—Protocols: Structural subtyping (static duck typing)].
16011601
O <<top_protocol_ex>> demonstra((("static duck typing"))) porque esse recurso é conhecido como _duck typing estático_ (_static duck typing_): a solução para anotar o parâmetro `series` de `top` era dizer "O tipo nominal de `series` não importa, desde que ele implemente o método `+__lt__+`."
1602-
Em Python, o duck typing sempre permitiu dizer isso de forma implícita, deixando os verificadores de tipo estáticos sem ação.
1602+
Em Python, o duck typing sempre permitiu dizer isso de forma implícita, deixando os checadores de tipos estáticos sem ação.
16031603
Um verificador de tipo não consegue ler o código fonte em C do CPython, ou executar experimentos no console para descobrir que `sorted` só requer que seus elementos suportem `<`.
16041604

16051605
Agora podemos tornar o duck typing explícito para os verificadores estáticos de tipo. Por isso faz sentido dizer que `typing.Protocol` nos oferece _duck typing estático_.footnote:[Eu não sei quem inventou a expressão _duck tying estático_, mas ela se tornou mais popular com a linguagem Go, que tem uma semântica de interfaces que é mais parecida com os protocolos de Python que com as interfaces nominais de Java.]
@@ -1796,7 +1796,7 @@ Para encerrar esse capítulo, vamos considerar brevemente os limites das dicas d
17961796

17971797
=== Tipos imperfeitos e testes poderosos
17981798

1799-
Os mantenedores((("functions, type hints in", "flawed typing and strong testing")))((("type hints (type annotations)", "flawed typing and strong testing")))((("flawed typing")))((("strong testing"))) de grandes bases de código corporativas relatam que muitos bugs são encontrados por verificadores de tipo estáticos, e o custo de resolvê-los é menor que se os mesmos bugs fossem descobertos apenas após o código estar rodando em produção.
1799+
Os mantenedores((("functions, type hints in", "flawed typing and strong testing")))((("type hints (type annotations)", "flawed typing and strong testing")))((("flawed typing")))((("strong testing"))) de grandes bases de código corporativas relatam que muitos bugs são encontrados por checadores de tipos estáticos, e o custo de resolvê-los é menor que se os mesmos bugs fossem descobertos apenas após o código estar rodando em produção.
18001800
Entretanto, é essencial observar que a testagem automatizada era uma prática padrão largamente adotada muito antes da tipagem estática ser introduzida nas empresas que eu conheço.
18011801

18021802
Mesmo em contextos onde ela é mais benéfica, a tipagem estática não pode ser elevada a árbitro final da correção.
@@ -1854,7 +1854,7 @@ Estudamos genéricos parametrizados e variáveis de tipo, que trazem mais flexib
18541854
Genéricos parametrizáveis se tornam ainda mais expressivos com o uso de `Protocol`.
18551855
Como só surgiu no Python 3.8, `Protocol` ainda não é muito usado - mas é de uma enorme importância.
18561856
`Protocol` permite duck typing estático:
1857-
É a ponte fundamental entre o núcleo de Python, coberto pelo duck typing, e a tipagem nominal que permite a verificadores de tipo estáticos encontrarem bugs.
1857+
É a ponte fundamental entre o núcleo de Python, coberto pelo duck typing, e a tipagem nominal que permite a checadores de tipos estáticos encontrarem bugs.
18581858

18591859
Ao discutir alguns desses tipos, usamos o Mypy para localizar erros de checagem de tipo e tipos inferidos, com a ajuda da função mágica `reveal_type()` do Mypy.
18601860

@@ -2018,7 +2018,7 @@ Esse é um custo unitário.
20182018
Mas há também um custo recorrente, eterno.
20192019
20202020
Nós perdemos um pouco do poder expressivo de Python se insistimos que tudo precisa estar sob a checagem de tipos.
2021-
Recursos maravilhosos como desempacotamento de argumentos — e.g., `config(**settings)`— estão além da capacidade de compreensão dos verificadores de tipo.
2021+
Recursos maravilhosos como desempacotamento de argumentos — e.g., `config(**settings)`— estão além da capacidade de compreensão dos checadores de tipos.
20222022
20232023
Se você quiser ter uma chamada como `config(**settings)` verificada quanto ao tipo, você precisa explicitar cada argumento.
20242024
Isso me traz lembranças de programas em Turbo Pascal, que escrevi 35 anos atrás.

0 commit comments

Comments
 (0)