Skip to content

Commit 7eed423

Browse files
author
Buck Ryan
committed
update resolving function to resolve refs for patternProperties
1 parent 427fdc7 commit 7eed423

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

singer/transform.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class SchemaKey:
4949
ref = "$ref"
5050
items = "items"
5151
properties = "properties"
52+
pattern_properties = "patternProperties"
5253

5354
class Error:
5455
def __init__(self, path, data, schema=None):
@@ -292,6 +293,10 @@ def _resolve_schema_references(schema, resolver):
292293
for k, val in schema[SchemaKey.properties].items():
293294
schema[SchemaKey.properties][k] = _resolve_schema_references(val, resolver)
294295

296+
if SchemaKey.pattern_properties in schema:
297+
for k, val in schema[SchemaKey.pattern_properties].items():
298+
schema[SchemaKey.pattern_properties][k] = _resolve_schema_references(val, resolver)
299+
295300
if SchemaKey.items in schema:
296301
schema[SchemaKey.items] = _resolve_schema_references(schema[SchemaKey.items], resolver)
297302

tests/test_transform.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,14 +233,20 @@ def test_internal_refs_resolve(self):
233233
result = resolve_schema_references(schema)
234234
self.assertEqual(result['properties']['name']['type'], "string")
235235

236-
237236
def test_external_refs_resolve(self):
238237
schema = {"type": "object",
239238
"properties": { "name": {"$ref": "references.json#/definitions/string_type"}}}
240239
refs = {"references.json": {"definitions": { "string_type": {"type": "string"}}}}
241240
result = resolve_schema_references(schema, refs)
242241
self.assertEqual(result['properties']['name']['type'], "string")
243242

243+
def test_refs_resolve_pattern_properties(self):
244+
schema = {"type": "object",
245+
"definitions": { "string_type": {"type": "string"}},
246+
"patternProperties": {".+": {"$ref": "#/definitions/string_type"}}}
247+
result = resolve_schema_references(schema)
248+
self.assertEqual(result["patternProperties"][".+"]["type"], "string")
249+
244250
def test_refs_resolve_items(self):
245251
schema = {"type": "object",
246252
"properties": { "dogs":

0 commit comments

Comments
 (0)