mirror of
https://github.com/simonw/datasette.git
synced 2026-05-27 12:34:37 +02:00
Minor speedup for remove_infinites, refs #2629
This commit is contained in:
parent
7988a179fe
commit
2f7b120177
1 changed files with 18 additions and 10 deletions
|
|
@ -901,18 +901,26 @@ _infinities = {float("inf"), float("-inf")}
|
|||
|
||||
|
||||
def remove_infinites(row):
|
||||
to_check = row
|
||||
"""
|
||||
Replace float('inf') and float('-inf') with None in a row.
|
||||
|
||||
Returns the original row object unchanged if no infinities are found.
|
||||
"""
|
||||
if isinstance(row, dict):
|
||||
to_check = row.values()
|
||||
if not any((c in _infinities) if isinstance(c, float) else 0 for c in to_check):
|
||||
return row
|
||||
if isinstance(row, dict):
|
||||
return {
|
||||
k: (None if (isinstance(v, float) and v in _infinities) else v)
|
||||
for k, v in row.items()
|
||||
}
|
||||
for v in row.values():
|
||||
if isinstance(v, float) and v in _infinities:
|
||||
return {
|
||||
k: (None if isinstance(v2, float) and v2 in _infinities else v2)
|
||||
for k, v2 in row.items()
|
||||
}
|
||||
else:
|
||||
return [None if (isinstance(c, float) and c in _infinities) else c for c in row]
|
||||
for v in row:
|
||||
if isinstance(v, float) and v in _infinities:
|
||||
return [
|
||||
None if isinstance(v2, float) and v2 in _infinities else v2
|
||||
for v2 in row
|
||||
]
|
||||
return row
|
||||
|
||||
|
||||
class StaticMount(click.ParamType):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue