[bug] some inputs to parse lead to pickling errors due to latex2sympy2_extended
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
Línea de trabajo
Comienza en el punto de entrada math_verify.parse y reproduce el fallo con las tres entradas enmarcadas de la issue. Lee la interacción entre latex2sympy2_extended 1.11.0 y sympy 1.14.0 mientras rastreas pickle.dumps y pickle.loads. Se considera terminado cuando todos los resultados analizados enumerados sobreviven a un recorrido de ida y vuelta con pickle en el uso en procesos separados sin generar un error.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Thanks for the very useful library :)
This bug came up when trying to run math_verify.parse in separate processes, which lead to the following error:
"/usr/local/lib/python3.12/concurrent/futures/process.py", line 432, in wait_result_broken_or_wakeup
result_item = result_reader.recv()
"/usr/local/lib/python3.12/multiprocessing/connection.py", line 251, in recv
return _ForkingPickler.loads(buf.getbuffer())
"/lib/python3.12/site-packages/latex2sympy2_extended/logic.py", line 11, in __new__
obj._unsorted_args = args
AttributeError: 'Equality' object has no attribute '_unsorted_args'
After a bunch of digging and testing I think the issue is due to the latex2sympy2_extended parser creating relational args with evaluate=False, but sympy's __getnewargs__ doesn't preserve that kwarg so during unpickling, numeric comparisons re-evaluate to True, LatticeOp filters them as identity elements, and And.__new__ returns a non-And type that crashes on _unsorted_args assignment.
I encountered this in latex2sympy2_extended 1.11.0 with sympy 1.14.0
I was able to reproduce the errors with:
import pickle
import math_verify
FAILING_INPUTS = [
r'\boxed{0 < 1 < x}',
r'\boxed{1 = 1 = x}',
r'\boxed{x > 3 > 1}',
]
for pred in FAILING_INPUTS:
parsed = math_verify.parse(pred)
data = pickle.dumps(parsed)
pickle.loads(data)
I am not deeply familar with the exact working of latex2sympy2 or sympy so definitely treat this as a best guess.
- Lenguaje dominante
- Python
- Estrellas
- 1.2k
- Forks
- 67
- 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 huggingface/Math-Verify
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
huggingface/Math-Verify#102 ·
-
verify() raises ValueError comparing chained relations of different lengthPosiblemente ocupada @chetana1410 la tomó hace 6 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
huggingface/Math-Verify#93 ·
-
A period inside the math delimiters (`$\frac{1}{3}.$`) makes correct answers fail and can make wrong ones passPosiblemente ocupada @MohammadHijjawi97 la tomó hace 29 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
huggingface/Math-Verify#85 ·
-
evaluate_model_outputs.py: rows whose gold cannot be extracted are dropped from the accuracy denominator, so the printed accuracy disagrees with the is_correct column the script writesPosiblemente ocupada @shaurya416 la tomó hace 34 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
huggingface/Math-Verify#83 ·
-
verify() rejects a not-equal written in the other orderPosiblemente ocupada @chetana1410 la tomó hace 5 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
huggingface/Math-Verify#100 ·
Todos los issues de huggingface/Math-Verify
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
-
Validate finite output clamping limits in StepPredictor.prepare_clamping_params to prevent silent NaN/Inf propagationPosiblemente ocupada @muskan-creates352 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
mllam/neural-lam#848 ·
Los mantenedores suelen responder en 2 días
-
infra
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
fab-geocommuns/RNB-coeur#1166 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
deepspeedai/DeepSpeed#8951 ·
Los mantenedores suelen responder en 2 días