Python 3.5

Abaixo está uma lista de PEPs finalizadas/aceitas para o Python 3.5, agrupadas de acordo com seu impacto no MicroPython.

Extensões à sintaxe

Status

PEP 448

Generalizações adicionais de desempacotamento

Parcial

PEP 465

Um novo operador de multiplicação de matrizes

Completo

PEP 492

Corrotinas com a sintaxe async e await

Completo

Extensões e mudanças no tempo de execução

PEP 461

Formatação com % para strings binárias

Completo

PEP 475

Repetição de chamadas de sistema que falham com EINTR

Completo

PEP 479

Mudança no tratamento de StopIteration dentro de geradores

Completo

Mudanças na biblioteca padrão

PEP 471

os.scandir()

PEP 485

math.isclose(), uma função para testar igualdade aproximada

Completo

Mudanças diversas

PEP 441

Suporte aprimorado a aplicações zip do Python

PEP 486

Tornar o Python Launcher ciente de ambientes virtuais

Não relevante

PEP 484

Dicas de tipo (apenas consultivas)

Completo [1]

PEP 488

Eliminação de arquivos PYO

Não relevante

PEP 489

Reformulação do carregamento de módulos de extensão

Outras Mudanças na Linguagem:

Adicionados os tratadores de erro namereplace. Os tratadores de erro backslashreplace agora funcionam com decodificação e tradução.

Docstrings de propriedades agora são graváveis. Isso é especialmente útil para docstrings de collections.namedtuple()

Importações circulares envolvendo importações relativas agora são suportadas.

Novos Módulos:

Mudanças nos módulos embutidos:

collections

A classe OrderedDict agora é implementada em C, o que a torna de 4 a 100 vezes mais rápida.

As views OrderedDict.items(), OrderedDict.keys(), OrderedDict.values() agora suportam iteração com reversed().

The deque class now defines index(), insert(), and copy(), and supports the + and * operators.

Docstrings produzidas por namedtuple() agora podem ser atualizadas.

A classe UserString agora implementa os métodos __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable() e maketrans() para corresponder aos métodos correspondentes de str.

heapq

A comparação de elementos em merge() agora pode ser personalizada passando uma função key em um novo argumento nomeado opcional key, e um novo argumento nomeado opcional reverse pode ser usado para inverter a comparação de elementos

io

Um novo método BufferedIOBase.readinto1(), que usa no máximo uma chamada aos métodos RawIOBase.read() ou RawIOBase.readinto() do fluxo bruto subjacente

json

O decodificador JSON agora levanta JSONDecodeError em vez de ValueError para fornecer melhores informações de contexto sobre o erro.

math

Duas novas constantes foram adicionadas ao módulo math: inf e nan.

Completo

Uma nova função isclose() fornece uma maneira de testar igualdade aproximada.

Uma nova função gcd() foi adicionada. A função fractions.gcd() agora está descontinuada.

os

A nova função scandir(), que retorna um iterador de objetos DirEntry, foi adicionada.

A função urandom() agora usa a chamada de sistema getrandom() no Linux 3.17 ou mais recente, e getentropy() no OpenBSD 5.6 e mais recente, eliminando a necessidade de usar /dev/urandom e evitando falhas devido a um potencial esgotamento de descritores de arquivo.

As novas funções get_blocking() e set_blocking() permitem obter e definir o modo de bloqueio de um descritor de arquivo (O_NONBLOCK.)

Há uma nova função os.path.commonpath() que retorna o subcaminho comum mais longo de cada nome de caminho passado

re

Referências e referências condicionais a grupos de comprimento fixo agora são permitidas em asserções de lookbehind

O número de grupos de captura em expressões regulares não é mais limitado a 100.

As funções sub() e subn() agora substituem grupos não correspondidos por strings vazias em vez de levantar uma exceção.

As exceções re.error têm novos atributos, msg, pattern, pos, lineno e colno, que fornecem melhores informações de contexto sobre o erro

socket

Funções com tempos limite agora usam um relógio monotônico, em vez de um relógio do sistema.

Um novo método socket.sendfile() permite enviar um arquivo por um socket usando a função de alto desempenho os.sendfile() no UNIX, resultando em uploads de 2 a 3 vezes mais rápidos do que ao usar o simples socket.send()

O método socket.sendall() não redefine mais o tempo limite do socket toda vez que bytes são recebidos ou enviados. O tempo limite do socket agora é a duração total máxima para enviar todos os dados.

O argumento backlog do método socket.listen() agora é opcional. Por padrão, ele é definido como SOMAXCONN ou 128, o que for menor.

Completo

ssl

Suporte a Memory BIO

Suporte a Negociação de Protocolo de Camada de Aplicação

Há um novo método SSLSocket.version() para consultar a versão de protocolo realmente em uso.

A classe SSLSocket agora implementa um método SSLSocket.sendfile().

O método SSLSocket.send() agora levanta a exceção ssl.SSLWantReadError ou ssl.SSLWantWriteError em um socket não bloqueante se a operação fosse bloquear. Anteriormente, ele retornava 0.

A função cert_time_to_seconds() agora interpreta o tempo de entrada como UTC e não como hora local, conforme a RFC 5280. Além disso, o valor de retorno é sempre um int.

Os novos métodos SSLObject.shared_ciphers() e SSLSocket.shared_ciphers() retornam a lista de cifras enviadas pelo cliente durante o handshake.

Os métodos SSLSocket.do_handshake(), SSLSocket.read(), SSLSocket.shutdown() e SSLSocket.write() da classe SSLSocket não redefinem mais o tempo limite do socket toda vez que bytes são recebidos ou enviados.

A função match_hostname() agora suporta a correspondência de endereços IP.

sys

Uma nova função set_coroutine_wrapper() permite definir um gancho global que será chamado sempre que um objeto corrotina for criado por uma função async def. Uma função get_coroutine_wrapper() correspondente pode ser usada para obter um wrapper definido atualmente.

Uma nova função is_finalizing() pode ser usada para verificar se o interpretador Python está sendo encerrado.

time

A função monotonic() agora está sempre disponível

Notas