2222import unittest
2323
2424import fastavro
25+ from avro .schema import Parse
2526
2627from apache_beam .io .gcp import bigquery_avro_tools
2728from apache_beam .io .gcp import bigquery_tools
2829from apache_beam .io .gcp .bigquery_test import HttpError
2930from apache_beam .io .gcp .internal .clients import bigquery
3031
31- try :
32- from avro .schema import Parse # avro-python3 library for Python 3
33- except ImportError :
34- from avro .schema import parse as Parse # avro library for Python 2
35-
3632
3733@unittest .skipIf (HttpError is None , 'GCP dependencies are not installed' )
3834class TestBigQueryToAvroSchema (unittest .TestCase ):
@@ -90,30 +86,33 @@ def test_convert_bigquery_schema_to_avro_schema(self):
9086
9187 # Test that schema can be parsed correctly by avro
9288 parsed_schema = Parse (json .dumps (avro_schema ))
93- # Avro RecordSchema provides field_map in py3 and fields_dict in py2
94- field_map = getattr (parsed_schema , "field_map" , None ) or \
95- getattr (parsed_schema , "fields_dict" , None )
9689
97- self .assertEqual (field_map ["number" ].type , Parse (json .dumps ("long" )))
9890 self .assertEqual (
99- field_map ["species" ].type , Parse (json .dumps (["null" , "string" ])))
91+ parsed_schema .field_map ["number" ].type , Parse (json .dumps ("long" )))
92+ self .assertEqual (
93+ parsed_schema .field_map ["species" ].type ,
94+ Parse (json .dumps (["null" , "string" ])))
10095 self .assertEqual (
101- field_map ["quality" ].type , Parse (json .dumps (["null" , "double" ])))
96+ parsed_schema .field_map ["quality" ].type ,
97+ Parse (json .dumps (["null" , "double" ])))
10298 self .assertEqual (
103- field_map ["grade" ].type , Parse (json .dumps (["null" , "double" ])))
99+ parsed_schema .field_map ["grade" ].type ,
100+ Parse (json .dumps (["null" , "double" ])))
104101 self .assertEqual (
105- field_map ["quantity" ].type , Parse (json .dumps (["null" , "long" ])))
102+ parsed_schema .field_map ["quantity" ].type ,
103+ Parse (json .dumps (["null" , "long" ])))
106104 self .assertEqual (
107- field_map ["dependents" ].type , Parse (json .dumps (["null" , "long" ])))
105+ parsed_schema .field_map ["dependents" ].type ,
106+ Parse (json .dumps (["null" , "long" ])))
108107 self .assertEqual (
109- field_map ["birthday" ].type ,
108+ parsed_schema . field_map ["birthday" ].type ,
110109 Parse (
111110 json .dumps (
112111 ["null" , {
113112 "type" : "long" , "logicalType" : "timestamp-micros"
114113 }])))
115114 self .assertEqual (
116- field_map ["birthdayMoney" ].type ,
115+ parsed_schema . field_map ["birthdayMoney" ].type ,
117116 Parse (
118117 json .dumps ([
119118 "null" ,
@@ -125,31 +124,35 @@ def test_convert_bigquery_schema_to_avro_schema(self):
125124 }
126125 ])))
127126 self .assertEqual (
128- field_map ["flighted" ].type , Parse (json .dumps (["null" , "boolean" ])))
127+ parsed_schema .field_map ["flighted" ].type ,
128+ Parse (json .dumps (["null" , "boolean" ])))
129129 self .assertEqual (
130- field_map ["flighted2" ].type , Parse (json .dumps (["null" , "boolean" ])))
130+ parsed_schema .field_map ["flighted2" ].type ,
131+ Parse (json .dumps (["null" , "boolean" ])))
131132 self .assertEqual (
132- field_map ["sound" ].type , Parse (json .dumps (["null" , "bytes" ])))
133+ parsed_schema .field_map ["sound" ].type ,
134+ Parse (json .dumps (["null" , "bytes" ])))
133135 self .assertEqual (
134- field_map ["anniversaryDate" ].type ,
136+ parsed_schema . field_map ["anniversaryDate" ].type ,
135137 Parse (json .dumps (["null" , {
136138 "type" : "int" , "logicalType" : "date"
137139 }])))
138140 self .assertEqual (
139- field_map ["anniversaryDatetime" ].type ,
141+ parsed_schema . field_map ["anniversaryDatetime" ].type ,
140142 Parse (json .dumps (["null" , "string" ])))
141143 self .assertEqual (
142- field_map ["anniversaryTime" ].type ,
144+ parsed_schema . field_map ["anniversaryTime" ].type ,
143145 Parse (
144146 json .dumps (["null" , {
145147 "type" : "long" , "logicalType" : "time-micros"
146148 }])))
147149 self .assertEqual (
148- field_map ["geoPositions" ].type , Parse (json .dumps (["null" , "string" ])))
150+ parsed_schema .field_map ["geoPositions" ].type ,
151+ Parse (json .dumps (["null" , "string" ])))
149152
150153 for field in ("scion" , "family" ):
151154 self .assertEqual (
152- field_map [field ].type ,
155+ parsed_schema . field_map [field ].type ,
153156 Parse (
154157 json .dumps ([
155158 "null" ,
@@ -169,7 +172,7 @@ def test_convert_bigquery_schema_to_avro_schema(self):
169172 ])))
170173
171174 self .assertEqual (
172- field_map ["associates" ].type ,
175+ parsed_schema . field_map ["associates" ].type ,
173176 Parse (
174177 json .dumps ({
175178 "type" : "array" ,
0 commit comments