0.5.0 a couple issues on first attempt to use
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 32/100
Línea de trabajo
Empieza reproduciendo la conversión de Windows mediante esl_async.py y esl_sync.py; después, inspecciona la tokenización y la ruta de salida que utiliza el ejemplo de unasync Rule. Comprueba el tratamiento de los finales de línea, las importaciones de typing_extensions y la indentación con tabuladores; se considera terminado cuando los archivos convertidos son válidos en Windows y en versiones antiguas de Python, y se admite una invocación sencilla desde el mismo directorio.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
-
trying to use this on Windows is producing bad EOL in output file. This is because the file is opened binary on read and pulls in '\r\n' but then the file is opened as text on output so ends up writing '\r\r\n' to the output file
-
need to support older versions of python but the following code:
from typing_extensions import AsyncIterator
gets transformed to the invalid:
from typing_extensions import Iterator -
unasync output files are invalid if they use tabbed indentation. Source tabs are getting replaced with a single space on some but not all lines. Actual error trying to run a converted file:
File "C:\cvs\gravitas_v1\incpy\esl_sync.py", line 48
if value is None:
^
IndentationError: unindent does not match any outer indentation level
- a simple way to run this by hand (setup.py is overkill for my needs) to convert a file to another file in the same directory. In my case I want to convert 'esl_async.py' to 'esl_sync.py' in the same folder. This is what I did in order to get this far:
# stdlib imports:
import os
from pathlib import Path
import sys
# 3rd-party imports:
import unasync # pip install unasync
from unasync import std_tokenize, _tokenize, _makedirs_existok
def _untokenize(tokens):
return "".join(
space + '\n' if tokval == '\r\n' else space + tokval
for space, tokval in tokens
)
class Rule( unasync.Rule ):
def __init__( self, fromdir, todir, suffix ) -> None:
self.suffix = suffix
super().__init__( fromdir, todir )
def _outfilepath( self, filepath ):
path = Path( self.todir ).absolute() / f'{Path(filepath).stem}{self.suffix}.py'
#assert False, f'{filepath=} {path=} {os.path.dirname(str(path))=}'
return str( path )
def _unasync_file( self, filepath ):
with open(filepath, "rb") as f:
write_kwargs = {}
if sys.version_info[0] >= 3:
encoding, _ = std_tokenize.detect_encoding(f.readline)
write_kwargs["encoding"] = encoding
f.seek(0)
tokens = _tokenize(f)
tokens = self._unasync_tokens(tokens)
result = _untokenize(tokens)
outfilepath = self._outfilepath( filepath )
_makedirs_existok(os.path.dirname(outfilepath))
with open(outfilepath, "w", **write_kwargs) as f:
print(result, file=f, end="")
rule = Rule( '.', '.', '_sync' )
rule._unasync_file( 'esl.py' )
- Lenguaje dominante
- Python
- Estrellas
- 108
- Forks
- 16
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de python-trio/unasync
-
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
python-trio/unasync#79 · 1 comentario ·
-
Multitoken substitutionAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
python-trio/unasync#74 · 4 comentarios · 1 reacción ·
-
JITAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
python-trio/unasync#72 · 3 comentarios ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
python-trio/unasync#69 · 1 comentario · 1 reacción ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
python-trio/unasync#68 · 2 comentarios · 2 reacciones ·
Todos los issues de python-trio/unasync
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 62/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 70/100
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
topoteretes/cognee#5773 ·
Los mantenedores suelen responder en 1 día
-
MiKTeX: a failed build reports no errors because texify --quiet switches the log to file:line: styleAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
SublimeText/LaTeXTools#1718 ·