Ipython: Pathlib, Pathlib em todos os lugares.

Criado em 28 ago. 2020  ·  22Comentários  ·  Fonte: ipython/ipython

Existem muitos lugares onde podemos fazer uso do Pathlib.

Procure qualquer lugar que use with open(...) e pergunte-se:

  • o argumento é uma string?
  • faria sentido torná-lo um Path() ,
  • até que ponto a montante do código posso torná-lo um caminho.

Não tente morder mais do que você pode mastigar (ou mais do que eu posso comentar), tente consertar um lugar de cada vez.

Hacktoberfest good first issue help wanted

Comentários muito úteis

Olá a todos, Estou tentando revisar todos os PRs, muitos estão abordando essas questões, tome cuidado, alguns de vocês estão enviando alterações para as quais já existem outros PRs abertos.

Todos 22 comentários

Olá @Carreau , se ninguém estiver trabalhando em /core/page.py para usar o Pathlib, posso participar?

Olá @Carreau , se ninguém estiver trabalhando em /core/page.py para usar o Pathlib, posso participar?

Claro, por favor. Obrigado.

Olá, gostaria de trabalhar no core / interactiveshell.py e adicionar mais uso do Pathlib.
Posso ajudar com isso?

Ei @Carreau, posso assumir o testing / iptestcontroller.py e core / magics / execution.py?

Também pode ser útil: https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Existem muitos lugares diferentes de with open() que podem usar o tratamento pathlib:

-    conda_history = os.path.join(sys.prefix, 'conda-meta', 'history')
-    return os.path.exists(conda_history)
+    return Path(sys.prefix, 'conda-meta', 'history').exists()

Este é um bom ponto.

Sábado, 10 de outubro de 2020 às 20:33 Blazej Michalik [email protected]
escrevi:

Também pode ser útil:
https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Existem muitos lugares diferentes de open () que podem usar pathlib
tratamento:

  • conda_history = os.path.join (sys.prefix, 'conda-meta', 'history') - return os.path.exists (conda_history) + return Path (sys.prefix, 'conda-meta', 'history') .existe()

-
Você está recebendo isto porque comentou.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/ipython/ipython/issues/12515#issuecomment-706630653 ,
ou cancelar
https://github.com/notifications/unsubscribe-auth/ADMY5F73MJDQ6CL32KEUZS3SKD4LXANCNFSM4QNPWX2Q
.

Também pode ser útil: https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Existem muitos lugares diferentes de with open() que podem usar o tratamento pathlib:

Embora ... alguns deles possam ser menos triviais e mais sujeitos a erros, especialmente quando são interpretados como texto. Por exemplo, ao retornar um objeto PosixPath quebra o código no escopo acima porque ele está sendo ' '.join() -ed com outros argumentos do shell.

Ainda há algum lugar para consertar isso? Parece que muitas pessoas estão trabalhando nisso.
editar: encontrei alguns, deixa pra lá

Ainda há algum lugar para consertar isso? Parece que muitas pessoas estão trabalhando nisso.

Estou verificando lentamente os PRs e mesclando-os, não tenho certeza se ainda há outros lugares.

Existem outras coisas que você pode tentar; encontre todos os locais que usam cast_unicode / cast_bytes e veja se eles são removíveis. Muitos deles são devido à compatibilidade com o Python 2 antigo.

por exemplo, há

def find_file(obj) -> str:
  ...
    fname = None
    try:
        fname = inspect.getabsfile(obj)
    except TypeError:
        # For an instance, the file that matters is where its class was
        # declared.
        if hasattr(obj, '__class__'):
            try:
                fname = inspect.getabsfile(obj.__class__)
            except TypeError:
                # Can happen for builtins
                pass
    except:
        pass
    return cast_unicode(fname)

Se você puder provar que inspect.getabsfil sempre retorna str e não bytes, então cast_unicode é desnecessário. É um pouco mais trabalhoso, mas isso limparia bem a base de código.

Procurei as funções em todo o projeto e encontrei muitas delas. Devo considerar a substituição de todos eles por alternativas Pathlib ou em quais arquivos devo considerar não substituir as funções?

Desculpe se eu não consegui fazer você entender o que eu quero dizer.

Estou trabalhando em paths.py e encontrei a seguinte linha em várias funções:

assert isinstance(ipdir, str)

Uma dessas afirmações fornece uma mensagem dizendo "all path manipulation should be str(unicode), but are not." .

Devo excluir essas linhas para que a mudança para pathlib possa funcionar?

Estou trabalhando em paths.py e encontrei a seguinte linha em várias funções:

assert isinstance(ipdir, str)

Uma dessas afirmações fornece uma mensagem dizendo "all path manipulation should be str(unicode), but are not." .

Devo excluir essas linhas para que a mudança para pathlib possa funcionar?

Sim, alguns lugares não estão funcionando por causa disso.

Olá a todos, Estou tentando revisar todos os PRs, muitos estão abordando essas questões, tome cuidado, alguns de vocês estão enviando alterações para as quais já existem outros PRs abertos.

Por que está fechado agora?

@meeseeksdev open

Awww, desculpe ashwinvis você não parece ter permissão para fazer isso, por favor pergunte a um mantenedor do repositório.

Eu sou novo na contribuição de código aberto e adoraria trabalhar nessa questão. Depois de concluir minhas alterações, qual seria a maneira mais fácil de testar o código antes de criar um PR?

Eu sou novo na contribuição de código aberto e adoraria trabalhar nessa questão. Depois de concluir minhas alterações, qual seria a maneira mais fácil de testar o código antes de criar um PR?

Olá @squarebat
Você deve fazer isso:

  • Instale as dependências de teste executando este comando na raiz do repo:
$ pip3 install -e .[test]
  • Em seguida, execute os testes com
$ iptest

Quero trabalhar no arquivo test_run.py . No entanto, estou tendo problemas para resolver alguns erros nesse arquivo. Os dois principais erros são

  • undefined variable get_ipython (Este foi resolvido adicionando uma importação, mas parece errado)

  • undefined variable _ip : Em algumas funções _ip é inicializado como _ip = get_ipython() portanto, definindo-o, mas em outras funções ele não inicializou, causando erro.

Eu configurei meu ambiente usando pip install .
Só queria saber se cometi um erro ao configurar o ambiente ou se há um bug no arquivo test_run.py .

Eu configurei meu ambiente usando pip install

Você deve usar pip install -e .[test]

O -e significa que você o instala em modo editável.

Olá! Esta é minha primeira vez contribuindo para um projeto de código aberto, gostaria de trabalhar nessa questão.
posso ser atribuído?

Esta página foi útil?
0 / 5 - 0 avaliações