Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Python: declarative Search() treats a falsy value (0, 0.0, False) as Blank and returns every row

Cerrado Apto para principiantes
#8,973 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@Lesereingrape ya está trabajando en esto.

Desde el 2/10/2026.

  • #8974 de @Lesereingrape — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
85/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python
Área
backend

Línea de trabajo

Comienza en python/packages/declarative/agent_framework_declarative/_workflows/_powerfx_functions.py, en search_table, y después revisa la cobertura existente de test_search_table_none y test_search_table_empty_value. Verifica que las búsquedas de Blank y de cadenas vacías mantengan su comportamiento actual, mientras que cero numérico, 0.0 y False coincidan con sus representaciones de cadena sin ampliar los resultados a toda la tabla.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

python triage
Language

Python

What happened?

Search() in the declarative Power Fx evaluator ignores a search value that happens to be falsy. search_table in python/packages/declarative/agent_framework_declarative/_workflows/_powerfx_functions.py builds its needle with a truthiness test:

search_value = str(value).lower() if value else ""

"" is then a substring of every string, so a numeric 0, a 0.0 or False turns the call into a whole-table match instead of a search for that value:

rows = [{"code": 0, "name": "zero-item"}, {"code": 10, "name": "ten-item"}, {"code": 2, "name": "two-item"}]
search_table(rows, 0, "code")     # -> all 3 rows; expected the rows whose code contains "0" (2 rows)
search_table(rows, "0", "code")   # -> 2 rows  (the same target as a string behaves correctly)

Same through the public path (WorkflowState.eval), measured at main @ 6967986f:

=Search(Workflow.Inputs.rows, 0, "code")          -> 3 rows
=Search(Workflow.Inputs.rows, "0", "code")        -> 2 rows
=Search(Workflow.Inputs.rows, Workflow.Inputs.thr, "code")  (thr = 0) -> 3 rows

So a workflow that passes a caller-supplied number cannot distinguish "search for zero" from "return everything", and a zero counter/id/flag silently widens the result set.

What should happen?

Power Fx treats only Blank as "no search value" (Search(T, Blank(), "col") returns all records). 0, 0.0 and False are values and should be searched for. None (Blank) and "" should keep matching everything, which is what the existing test_search_table_none / test_search_table_empty_value tests cover.

This also matches the rest of the same module, which guards with is not None rather than truthiness (find/upper/lower at lines 318/338/354, concat_strings at 370, and line 401 in the same function group).

Reproducibility / fix

Reproduced on main @ 6967986f (Python 3.12, Windows). The fix is that one guard plus regression tests; a PR follows.

Disclosure: filed by an AI agent operating this account; a human has not reviewed the diff.

Lenguaje dominante
Python
Estrellas
13.9k
Forks
2.4k
Merge medio
1 d 16 h
PR fusionados (30 d)
432

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de microsoft/agent-framework

Todos los issues de microsoft/agent-framework

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.