SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler offline
Corrigindo Bugs

no CPython
Só entre nós...
Python tem bugs...
(não contem pra ninguém 😛)
O Bug
RuntimeError: dictionary changed size during iteration
File "python3.5/runpy.py", line 170, in _run_module_as_main
"__main__", mod_spec)
File "python3.5/runpy.py", line 85, in _run_code
exec(code, run_globals)
[ ...segue... ]
File "requests/sessions.py", line 531, in get
return self.request('GET', url, **kwargs)
File "requests/sessions.py", line 509, in request
prep.url, proxies, stream, verify, cert
File "requests/sessions.py", line 686, in merge_environment_settings
env_proxies = get_environ_proxies(url, no_proxy=no_proxy)
File "requests/utils.py", line 696, in get_environ_proxies
return getproxies()
File "urllib/request.py", line 2393, in getproxies_environment
for name, value in os.environ.items():
File "_collections_abc.py", line 676, in __iter__
for key in self._mapping:
File "python3.5/os.py", line 702, in __iter__
for key in self._data:
O Bug
Race condition durante a iteração sobre as variáveis de
ambiente do sistema operacional
Implementando uma solução
... antes de submeter o bug...
Tentativa #1
• Copia o dicionário antes de
iterar sobre ele
Tentativa #1

(fazer teste)
• Copia o dicionário antes de
iterar sobre ele
Tentativa #1
https://bugs.python.org/issue30441
Tentativa #2
Solução Final
Github Pull Request
https://github.com/python/cpython/pull/2409
A Recompensa?
Ter um Python

ainda melhor
E entrar pra história! 🙂
https://github.com/python/cpython/blob/master/Misc/ACKS#L1130

Mais conteúdo relacionado

Mais de Osvaldo Santana Neto

Como me tornei um empreendedor pythonista
Como me tornei um empreendedor pythonistaComo me tornei um empreendedor pythonista
Como me tornei um empreendedor pythonista
Osvaldo Santana Neto
 
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Osvaldo Santana Neto
 
Ludeos - Venda seu conteúdo online (how it works)
Ludeos - Venda seu conteúdo online (how it works)Ludeos - Venda seu conteúdo online (how it works)
Ludeos - Venda seu conteúdo online (how it works)
Osvaldo Santana Neto
 

Mais de Osvaldo Santana Neto (20)

Basic Brainf*ck
Basic Brainf*ckBasic Brainf*ck
Basic Brainf*ck
 
Contruindo um Framework Web de Brinquedo só com Python
Contruindo um Framework Web de Brinquedo só com PythonContruindo um Framework Web de Brinquedo só com Python
Contruindo um Framework Web de Brinquedo só com Python
 
A Web é uma API
A Web é uma APIA Web é uma API
A Web é uma API
 
Dave Thomas - Agile is Dead (GOTO 2015)
Dave Thomas - Agile is Dead (GOTO 2015)Dave Thomas - Agile is Dead (GOTO 2015)
Dave Thomas - Agile is Dead (GOTO 2015)
 
Olist Architecture v2.0
Olist Architecture v2.0Olist Architecture v2.0
Olist Architecture v2.0
 
Advanced Brainf*ck
Advanced Brainf*ckAdvanced Brainf*ck
Advanced Brainf*ck
 
Como funciona um time remoto de desenvolvimento - Caipyra 2018
Como funciona um time remoto de desenvolvimento - Caipyra 2018Como funciona um time remoto de desenvolvimento - Caipyra 2018
Como funciona um time remoto de desenvolvimento - Caipyra 2018
 
Escalando times através do trabalho remoto
Escalando times através do trabalho remotoEscalando times através do trabalho remoto
Escalando times através do trabalho remoto
 
Plataforma distribuída de Microserviços ou, como a Olist funciona
Plataforma distribuída de Microserviços ou, como a Olist funcionaPlataforma distribuída de Microserviços ou, como a Olist funciona
Plataforma distribuída de Microserviços ou, como a Olist funciona
 
Real Life Hackers @ PechaKucha 20x20
Real Life Hackers @ PechaKucha 20x20Real Life Hackers @ PechaKucha 20x20
Real Life Hackers @ PechaKucha 20x20
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e Django
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
Curso de Python e Django
Curso de Python e DjangoCurso de Python e Django
Curso de Python e Django
 
Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)Entendiendo Unicode (Facundo Batista)
Entendiendo Unicode (Facundo Batista)
 
Como me tornei um empreendedor pythonista
Como me tornei um empreendedor pythonistaComo me tornei um empreendedor pythonista
Como me tornei um empreendedor pythonista
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
 
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)
 
Ludeos - Venda seu conteúdo online (how it works)
Ludeos - Venda seu conteúdo online (how it works)Ludeos - Venda seu conteúdo online (how it works)
Ludeos - Venda seu conteúdo online (how it works)
 
App Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horasApp Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horas
 
Programação RAD com Python
Programação RAD com PythonProgramação RAD com Python
Programação RAD com Python
 

Último

SEG NR 18 - SEGURANÇA E SAÚDE O TRABALHO NA INDUSTRIA DA COSTRUÇÃO CIVIL.pptx
SEG NR 18 - SEGURANÇA E SAÚDE O TRABALHO NA INDUSTRIA DA COSTRUÇÃO CIVIL.pptxSEG NR 18 - SEGURANÇA E SAÚDE O TRABALHO NA INDUSTRIA DA COSTRUÇÃO CIVIL.pptx
SEG NR 18 - SEGURANÇA E SAÚDE O TRABALHO NA INDUSTRIA DA COSTRUÇÃO CIVIL.pptx
avaseg
 
pgr programa de gerenciamento de risco posto de gasolina
pgr programa de gerenciamento de risco posto  de gasolinapgr programa de gerenciamento de risco posto  de gasolina
pgr programa de gerenciamento de risco posto de gasolina
mikhaelbaptista
 

Último (8)

SEG NR 18 - SEGURANÇA E SAÚDE O TRABALHO NA INDUSTRIA DA COSTRUÇÃO CIVIL.pptx
SEG NR 18 - SEGURANÇA E SAÚDE O TRABALHO NA INDUSTRIA DA COSTRUÇÃO CIVIL.pptxSEG NR 18 - SEGURANÇA E SAÚDE O TRABALHO NA INDUSTRIA DA COSTRUÇÃO CIVIL.pptx
SEG NR 18 - SEGURANÇA E SAÚDE O TRABALHO NA INDUSTRIA DA COSTRUÇÃO CIVIL.pptx
 
Planejamento e controle da Produção_Lustosa.pdf
Planejamento e controle da Produção_Lustosa.pdfPlanejamento e controle da Produção_Lustosa.pdf
Planejamento e controle da Produção_Lustosa.pdf
 
Normas Técnicas para aparelho de solda oxi-acetileno.pdf
Normas Técnicas para aparelho de solda oxi-acetileno.pdfNormas Técnicas para aparelho de solda oxi-acetileno.pdf
Normas Técnicas para aparelho de solda oxi-acetileno.pdf
 
pgr programa de gerenciamento de risco posto de gasolina
pgr programa de gerenciamento de risco posto  de gasolinapgr programa de gerenciamento de risco posto  de gasolina
pgr programa de gerenciamento de risco posto de gasolina
 
ST 2024 Apresentação Comercial - VF.ppsx
ST 2024 Apresentação Comercial - VF.ppsxST 2024 Apresentação Comercial - VF.ppsx
ST 2024 Apresentação Comercial - VF.ppsx
 
CONCEITOS BÁSICOS DE CONFIABILIDADE COM EMBASAMENTO DE QUALIDADE
CONCEITOS BÁSICOS DE CONFIABILIDADE COM EMBASAMENTO DE QUALIDADECONCEITOS BÁSICOS DE CONFIABILIDADE COM EMBASAMENTO DE QUALIDADE
CONCEITOS BÁSICOS DE CONFIABILIDADE COM EMBASAMENTO DE QUALIDADE
 
ATIVIDADE 1 - FSCE - FORMAÇÃO SOCIOCULTURAL E ÉTICA II - 52_2024.pdf
ATIVIDADE 1 - FSCE - FORMAÇÃO SOCIOCULTURAL E ÉTICA II - 52_2024.pdfATIVIDADE 1 - FSCE - FORMAÇÃO SOCIOCULTURAL E ÉTICA II - 52_2024.pdf
ATIVIDADE 1 - FSCE - FORMAÇÃO SOCIOCULTURAL E ÉTICA II - 52_2024.pdf
 
apostila de eletricidade básica Werther serralheiro
apostila de eletricidade básica Werther serralheiroapostila de eletricidade básica Werther serralheiro
apostila de eletricidade básica Werther serralheiro
 

Corrigindo Bugs no CPython