Skip to content

Commit 6bc17d6

Browse files
authored
Merge pull request #84 from openaddresses/handle-integer-fields-in-esri
Handle accuracy as an integer when building fields to download in Esri
2 parents fb17312 + 550577d commit 6bc17d6

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

openaddr/cache.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,8 +360,13 @@ def field_names_to_request(cls, source_config):
360360
elif isinstance(v, list):
361361
# It's a list of field names
362362
fields |= set(v)
363-
else:
363+
elif isinstance(v, str):
364+
# It's a direct field name mapping
364365
fields.add(v)
366+
# Note: We intentionally skip non-string scalar values (e.g., integers) because
367+
# Esri only supports string field names. Also, the 'accuracy' field can be
368+
# set to an integer constant (like 1) to indicate a fixed accuracy level,
369+
# rather than a field name to fetch from the source.
365370

366371
if fields:
367372
# Remove any blank or None values

openaddr/tests/cache.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,24 @@ def test_field_names_to_request(self):
347347
fields11 = EsriRestDownloadTask.field_names_to_request(conform11)
348348
self.assertEqual(fields11, ['Number', 'StateColumn', 'Street'])
349349

350+
# Test that integer accuracy values are skipped (not treated as field names)
351+
# The 'accuracy' field can be an integer constant indicating a fixed accuracy level
352+
conform12 = SourceConfig(dict({
353+
"schema": 2,
354+
"layers": {
355+
"addresses": [{
356+
"name": "default",
357+
"conform": {
358+
"street": "StreetName",
359+
"number": "HouseNumber",
360+
"accuracy": 1,
361+
}
362+
}]
363+
}
364+
}), "addresses", "default")
365+
fields12 = EsriRestDownloadTask.field_names_to_request(conform12)
366+
self.assertEqual(fields12, ['HouseNumber', 'StreetName'])
367+
350368
def test_handle_feature_server_with_lat_lon_in_conform(self):
351369
'''
352370
'''

0 commit comments

Comments
 (0)