Ipython: Pathlib, Pathlib en todas partes.

Creado en 28 ago. 2020  ·  22Comentarios  ·  Fuente: ipython/ipython

Hay muchos lugares donde podríamos hacer uso de Pathlib.

Busque cualquier lugar que use with open(...) y pregúntese:

  • ¿El argumento es una cadena?
  • ¿Tendría sentido convertirlo en Path() ,
  • ¿Qué tan avanzado en el código puedo convertirlo en una ruta?

No intente morder más de lo que puede masticar (o más de lo que puedo revisar), intente arreglar 1 lugar a la vez.

Hacktoberfest good first issue help wanted

Comentario más útil

Hola a todos, estoy tratando de revisar todos los RP, hay muchos que abordan estos problemas, tengan cuidado de que algunos de ustedes envíen cambios para los que ya hay otros RP abiertos.

Todos 22 comentarios

Hola @Carreau , si nadie está trabajando en /core/page.py para usar Pathlib, ¿puedo tomar esta parte?

Hola @Carreau , si nadie está trabajando en /core/page.py para usar Pathlib, ¿puedo tomar esta parte?

Asegúrese por favor. Gracias.

Hola, me gustaría trabajar en core / interactiveshell.py y agregar más uso de Pathlib.
¿Puedo ayudar con eso?

Hola @Carreau, ¿puedo realizar pruebas / iptestcontroller.py y core / magics / execution.py?

También podría ser de utilidad: https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Hay muchos lugares además de with open() que podrían usar el tratamiento 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()

Ese es un buen punto.

El sábado 10 de octubre de 2020 a las 8:33 p.m. Blazej Michalik [email protected]
escribió:

También podría ser de utilidad:
https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Hay muchos lugares además de open () que podrían usar pathlib
tratamiento:

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

-
Estás recibiendo esto porque comentaste.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/ipython/ipython/issues/12515#issuecomment-706630653 ,
o darse de baja
https://github.com/notifications/unsubscribe-auth/ADMY5F73MJDQ6CL32KEUZS3SKD4LXANCNFSM4QNPWX2Q
.

También podría ser de utilidad: https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Hay muchos lugares además de with open() que podrían usar el tratamiento pathlib:

Aunque ... algunos de ellos pueden ser menos triviales y más propensos a errores, especialmente cuando se interpretan como texto. Por ejemplo, cuando se devuelve un objeto PosixPath rompe el código en el ámbito anterior porque se está ' '.join() -ed con otros argumentos de shell.

¿Todavía quedan lugares para solucionar este problema? Parece que mucha gente está trabajando en ello.
editar: encontré algunos, no importa

¿Todavía quedan lugares para solucionar este problema? Parece que mucha gente está trabajando en ello.

Estoy revisando lentamente los RP y fusionándolos, no estoy seguro de si quedan otros lugares.

Hay otras cosas que puede intentar; busque todos los lugares que usan cast_unicode / cast_bytes, y vea si son removibles. Muchos de ellos se deben a la antigua compatibilidad con Python 2.

por ejemplo hay

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)

Si puede probar que inspect.getabsfil siempre devuelve str y no bytes, entonces cast_unicode es innecesario. Es un poco más de trabajo, pero eso limpiaría el código base.

Busqué las funciones en todo el proyecto y encontré muchas de ellas. ¿Debería considerar reemplazarlos todos con alternativas de Pathlib o en qué archivos debería considerar no reemplazar las funciones?

Perdón si no pude hacerte entender lo que quiero decir.

Estoy trabajando en paths.py y encontré la siguiente línea en varias funciones:

assert isinstance(ipdir, str)

Una de esas afirmaciones da un mensaje que dice "all path manipulation should be str(unicode), but are not." .

¿Debo eliminar esas líneas para que el movimiento a pathlib funcione?

Estoy trabajando en paths.py y encontré la siguiente línea en varias funciones:

assert isinstance(ipdir, str)

Una de esas afirmaciones da un mensaje que dice "all path manipulation should be str(unicode), but are not." .

¿Debo eliminar esas líneas para que el movimiento a pathlib funcione?

Sí, algunos lugares no funcionan por eso.

Hola a todos, estoy tratando de revisar todos los RP, hay muchos que abordan estos problemas, tengan cuidado de que algunos de ustedes envíen cambios para los que ya hay otros RP abiertos.

¿Por qué está cerrado ahora?

@meeseeksdev abierto

Awww, lo siento Ashwinvis, parece que no se le permite hacer eso, pregunte a un encargado del repositorio.

Soy nuevo en la contribución de código abierto y me encantaría trabajar en este tema. Una vez que haya terminado con mis cambios, ¿cuál sería la forma más fácil de probar el código antes de crear un PR?

Soy nuevo en la contribución de código abierto y me encantaría trabajar en este tema. Una vez que haya terminado con mis cambios, ¿cuál sería la forma más fácil de probar el código antes de crear un PR?

Hola @squarebat
Usted debe hacer esto:

  • Instale las dependencias de prueba ejecutando este comando en la raíz del repositorio:
$ pip3 install -e .[test]
  • Luego ejecute las pruebas con
$ iptest

Quiero trabajar en el archivo test_run.py . Sin embargo, tengo problemas para resolver algunos errores en ese archivo. Los dos errores principales son

  • undefined variable get_ipython (Este se resuelve agregando una importación pero parece incorrecto)

  • undefined variable _ip : En algunas funciones _ip se inicializa como _ip = get_ipython() por lo que se define, pero en otras funciones no se inicializa, por lo que se produce un error.

He configurado mi entorno usando pip install .
Solo quería saber si cometí un error al configurar el entorno o si hay un error en el archivo test_run.py .

He configurado mi entorno usando pip install

Tienes que usar pip install -e .[test]

El -e significa que lo instala en modo editable.

¡Hola! Esta es la primera vez que contribuyo a un proyecto de código abierto, me gustaría trabajar en este tema.
¿me pueden asignar?

¿Fue útil esta página
0 / 5 - 0 calificaciones