Skip to content

Commit 65d8142

Browse files
rnpridgeonRyan P
authored andcommitted
Fix JSON examples and Avro, JSON serde argument ordering
1 parent a0d969f commit 65d8142

File tree

9 files changed

+45
-40
lines changed

9 files changed

+45
-40
lines changed

confluent_kafka/schema_registry/avro.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,11 @@ class AvroSerializer(Serializer):
119119
See ``avro_producer.py`` in the examples directory for example usage.
120120
121121
Args:
122+
schema_str (str): Avro Schema declaration.
123+
122124
schema_registry_client (SchemaRegistryClient): Schema Registry
123125
client instance.
124126
125-
schema_str (str): Avro Schema declaration.
126-
127127
to_dict (callable, optional): Callable(object, SerializationContext) -> dict.
128128
Converts object to a dict.
129129
@@ -144,7 +144,7 @@ class AvroSerializer(Serializer):
144144
_default_conf = {'auto.register.schemas': True,
145145
'subject.name.strategy': topic_subject_name_strategy}
146146

147-
def __init__(self, schema_registry_client, schema_str,
147+
def __init__(self, schema_str, schema_registry_client,
148148
to_dict=None, conf=None):
149149
self._registry = schema_registry_client
150150
self._schema_id = None
@@ -256,11 +256,11 @@ class AvroDeserializer(Deserializer):
256256
directory for example usage.
257257
258258
Args:
259+
schema_str (str): Avro reader schema declaration.
260+
259261
schema_registry_client (SchemaRegistryClient): Confluent Schema Registry
260262
client instance.
261263
262-
schema_str (str): Avro reader schema declaration.
263-
264264
from_dict (callable, optional): Callable(dict, SerializationContext) -> object.
265265
Converts dict to an instance of some object.
266266
@@ -273,7 +273,7 @@ class AvroDeserializer(Deserializer):
273273
"""
274274
__slots__ = ['_reader_schema', '_registry', '_from_dict', '_writer_schemas']
275275

276-
def __init__(self, schema_registry_client, schema_str, from_dict=None):
276+
def __init__(self, schema_str, schema_registry_client, from_dict=None):
277277
self._registry = schema_registry_client
278278
self._writer_schemas = {}
279279

confluent_kafka/schema_registry/json_schema.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,11 @@ class JSONSerializer(Serializer):
9696
and schema registration.
9797
9898
Args:
99+
schema_str (str): JSON Schema definition.
100+
99101
schema_registry_client (SchemaRegistryClient): Schema Registry
100102
client instance.
101103
102-
schema_str (str): JSON Schema definition.
103-
104104
to_dict (callable, optional): Callable(object, SerializationContext) -> dict.
105105
Converts object to a dict.
106106
@@ -121,7 +121,7 @@ class JSONSerializer(Serializer):
121121
_default_conf = {'auto.register.schemas': True,
122122
'subject.name.strategy': topic_subject_name_strategy}
123123

124-
def __init__(self, schema_registry_client, schema_str, to_dict=None,
124+
def __init__(self, schema_str, schema_registry_client, to_dict=None,
125125
conf=None):
126126
self._registry = schema_registry_client
127127
self._schema_id = None

examples/avro_consumer.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,9 @@ def main(args):
8383
sr_conf = {'url': args.schema_registry}
8484
schema_registry_client = SchemaRegistryClient(sr_conf)
8585

86-
avro_deserializer = AvroDeserializer(schema_registry_client, schema_str, dict_to_user)
86+
avro_deserializer = AvroDeserializer(schema_str,
87+
schema_registry_client,
88+
dict_to_user)
8789
string_deserializer = StringDeserializer('utf_8')
8890

8991
consumer_conf = {'bootstrap.servers': args.bootstrap_servers,

examples/avro_producer.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,9 @@ def main(args):
115115
schema_registry_conf = {'url': args.schema_registry}
116116
schema_registry_client = SchemaRegistryClient(schema_registry_conf)
117117

118-
avro_serializer = AvroSerializer(schema_registry_client, schema_str, user_to_dict)
118+
avro_serializer = AvroSerializer(schema_str,
119+
schema_registry_client,
120+
user_to_dict)
119121

120122
producer_conf = {'bootstrap.servers': args.bootstrap_servers,
121123
'key.serializer': StringSerializer('utf_8'),

examples/json_consumer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def __init__(self, name=None, favorite_number=None, favorite_color=None):
4444
self.favorite_color = favorite_color
4545

4646

47-
def dict_to_user(ctx, obj):
47+
def dict_to_user(obj, ctx):
4848
"""
4949
Converts object literal(dict) to a User instance.
5050

examples/json_producer.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,16 @@ def __init__(self, name, address, favorite_number, favorite_color):
5252
self._address = address
5353

5454

55-
def user_to_dict(ctx, user):
55+
def user_to_dict(user, ctx):
5656
"""
5757
Returns a dict representation of a User instance for serialization.
5858
5959
Args:
60+
user (User): User instance.
61+
6062
ctx (SerializationContext): Metadata pertaining to the serialization
6163
operation.
6264
63-
user (User): User instance.
64-
6565
Returns:
6666
dict: Dict populated with user attributes to be serialized.
6767
@@ -127,7 +127,7 @@ def main(args):
127127
schema_registry_conf = {'url': args.schema_registry}
128128
schema_registry_client = SchemaRegistryClient(schema_registry_conf)
129129

130-
json_serializer = JSONSerializer(schema_registry_client, schema_str, user_to_dict)
130+
json_serializer = JSONSerializer(schema_str, schema_registry_client, user_to_dict)
131131

132132
producer_conf = {'bootstrap.servers': args.bootstrap_servers,
133133
'key.serializer': StringSerializer('utf_8'),

tests/integration/schema_registry/test_avro_serializers.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@ def test_avro_record_serialization(kafka_cluster, load_file, avsc, data, record_
7272
sr = kafka_cluster.schema_registry()
7373

7474
schema_str = load_file(avsc)
75-
value_serializer = AvroSerializer(sr, schema_str)
75+
value_serializer = AvroSerializer(schema_str, sr)
7676

77-
value_deserializer = AvroDeserializer(sr, schema_str)
77+
value_deserializer = AvroDeserializer(schema_str, sr)
7878

7979
producer = kafka_cluster.producer(value_serializer=value_serializer)
8080

@@ -116,9 +116,9 @@ def test_delivery_report_serialization(kafka_cluster, load_file, avsc, data, rec
116116
sr = kafka_cluster.schema_registry()
117117
schema_str = load_file(avsc)
118118

119-
value_serializer = AvroSerializer(sr, schema_str)
119+
value_serializer = AvroSerializer(schema_str, sr)
120120

121-
value_deserializer = AvroDeserializer(sr, schema_str)
121+
value_deserializer = AvroDeserializer(schema_str, sr)
122122

123123
producer = kafka_cluster.producer(value_serializer=value_serializer)
124124

@@ -163,13 +163,13 @@ def test_avro_record_serialization_custom(kafka_cluster):
163163
sr = kafka_cluster.schema_registry()
164164

165165
user = User('Bowie', 47, 'purple')
166-
value_serializer = AvroSerializer(sr, User.schema_str,
166+
value_serializer = AvroSerializer(User.schema_str, sr,
167167
lambda user, ctx:
168168
dict(name=user.name,
169169
favorite_number=user.favorite_number,
170170
favorite_color=user.favorite_color))
171171

172-
value_deserializer = AvroDeserializer(sr, User.schema_str,
172+
value_deserializer = AvroDeserializer(User.schema_str, sr,
173173
lambda user_dict, ctx:
174174
User(**user_dict))
175175

tests/integration/schema_registry/test_json_serializers.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def test_json_record_serialization(kafka_cluster, load_file):
9494
sr = kafka_cluster.schema_registry({'url': 'http://localhost:8081'})
9595

9696
schema_str = load_file("product.json")
97-
value_serializer = JSONSerializer(sr, schema_str)
97+
value_serializer = JSONSerializer(schema_str, sr)
9898
value_deserializer = JSONDeserializer(schema_str)
9999

100100
producer = kafka_cluster.producer(value_serializer=value_serializer)
@@ -142,7 +142,7 @@ def test_json_record_serialization_incompatible(kafka_cluster, load_file):
142142
sr = kafka_cluster.schema_registry({'url': 'http://localhost:8081'})
143143

144144
schema_str = load_file("product.json")
145-
value_serializer = JSONSerializer(sr, schema_str)
145+
value_serializer = JSONSerializer(schema_str, sr)
146146
producer = kafka_cluster.producer(value_serializer=value_serializer)
147147

148148
record = {"contractorId": 1,
@@ -170,7 +170,7 @@ def test_json_record_serialization_no_title(kafka_cluster, load_file):
170170

171171
with pytest.raises(ValueError,
172172
match="Missing required JSON schema annotation title"):
173-
JSONSerializer(sr, schema_str)
173+
JSONSerializer(schema_str, sr)
174174

175175

176176
def test_json_record_serialization_custom(kafka_cluster, load_file):
@@ -187,7 +187,7 @@ def test_json_record_serialization_custom(kafka_cluster, load_file):
187187
sr = kafka_cluster.schema_registry({'url': 'http://localhost:8081'})
188188

189189
schema_str = load_file("product.json")
190-
value_serializer = JSONSerializer(sr, schema_str,
190+
value_serializer = JSONSerializer(schema_str, sr,
191191
to_dict=_testProduct_to_dict)
192192
value_deserializer = JSONDeserializer(schema_str,
193193
from_dict=_testProduct_from_dict)
@@ -233,7 +233,7 @@ def test_json_record_deserialization_mismatch(kafka_cluster, load_file):
233233
schema_str = load_file("contractor.json")
234234
schema_str2 = load_file("product.json")
235235

236-
value_serializer = JSONSerializer(sr, schema_str)
236+
value_serializer = JSONSerializer(schema_str, sr)
237237
value_deserializer = JSONDeserializer(schema_str2)
238238

239239
producer = kafka_cluster.producer(value_serializer=value_serializer)

tests/schema_registry/test_avro_serializer.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def test_avro_serializer_config_auto_register_schemas():
3434
"""
3535
conf = {'url': TEST_URL}
3636
test_client = SchemaRegistryClient(conf)
37-
test_serializer = AvroSerializer(test_client, "string",
37+
test_serializer = AvroSerializer("string", test_client,
3838
conf={'auto.register.schemas': False})
3939
assert not test_serializer._auto_register
4040

@@ -47,7 +47,7 @@ def test_avro_serializer_config_auto_register_schemas_invalid():
4747
test_client = SchemaRegistryClient(conf)
4848

4949
with pytest.raises(ValueError, match="must be a boolean"):
50-
AvroSerializer(test_client, "string",
50+
AvroSerializer("string", test_client,
5151
conf={'auto.register.schemas': dict()})
5252

5353

@@ -60,7 +60,7 @@ def test_avro_serializer_config_auto_register_schemas_false(mock_schema_registry
6060
topic = "test-auto-register"
6161
subject = topic + '-key'
6262

63-
test_serializer = AvroSerializer(test_client, "string",
63+
test_serializer = AvroSerializer("string", test_client,
6464
conf={'auto.register.schemas': False})
6565

6666
test_serializer("test",
@@ -81,7 +81,7 @@ def test_avro_serializer_config_subject_name_strategy():
8181

8282
conf = {'url': TEST_URL}
8383
test_client = SchemaRegistryClient(conf)
84-
test_serializer = AvroSerializer(test_client, "int",
84+
test_serializer = AvroSerializer("int", test_client,
8585
conf={'subject.name.strategy':
8686
record_subject_name_strategy})
8787

@@ -96,7 +96,7 @@ def test_avro_serializer_config_subject_name_strategy_invalid():
9696
conf = {'url': TEST_URL}
9797
test_client = SchemaRegistryClient(conf)
9898
with pytest.raises(ValueError, match="must be callable"):
99-
AvroSerializer(test_client, "int",
99+
AvroSerializer("int", test_client,
100100
conf={'subject.name.strategy': dict()})
101101

102102

@@ -106,8 +106,8 @@ def test_avro_serializer_record_subject_name_strategy(load_avsc):
106106
"""
107107
conf = {'url': TEST_URL}
108108
test_client = SchemaRegistryClient(conf)
109-
test_serializer = AvroSerializer(test_client,
110-
load_avsc('basic_schema.avsc'),
109+
test_serializer = AvroSerializer(load_avsc('basic_schema.avsc'),
110+
test_client,
111111
conf={'subject.name.strategy':
112112
record_subject_name_strategy})
113113

@@ -123,7 +123,7 @@ def test_avro_serializer_record_subject_name_strategy_primitive(load_avsc):
123123
"""
124124
conf = {'url': TEST_URL}
125125
test_client = SchemaRegistryClient(conf)
126-
test_serializer = AvroSerializer(test_client, 'int',
126+
test_serializer = AvroSerializer('int', test_client,
127127
conf={'subject.name.strategy':
128128
record_subject_name_strategy})
129129

@@ -138,8 +138,8 @@ def test_avro_serializer_topic_record_subject_name_strategy(load_avsc):
138138
"""
139139
conf = {'url': TEST_URL}
140140
test_client = SchemaRegistryClient(conf)
141-
test_serializer = AvroSerializer(test_client,
142-
load_avsc('basic_schema.avsc'),
141+
test_serializer = AvroSerializer(load_avsc('basic_schema.avsc'),
142+
test_client,
143143
conf={'subject.name.strategy':
144144
topic_record_subject_name_strategy})
145145

@@ -155,7 +155,8 @@ def test_avro_serializer_topic_record_subject_name_strategy_primitive(load_avsc)
155155
"""
156156
conf = {'url': TEST_URL}
157157
test_client = SchemaRegistryClient(conf)
158-
test_serializer = AvroSerializer(test_client, 'int',
158+
test_serializer = AvroSerializer('int',
159+
test_client,
159160
conf={'subject.name.strategy':
160161
topic_record_subject_name_strategy})
161162

@@ -170,8 +171,8 @@ def test_avro_serializer_subject_name_strategy_default(load_avsc):
170171
"""
171172
conf = {'url': TEST_URL}
172173
test_client = SchemaRegistryClient(conf)
173-
test_serializer = AvroSerializer(test_client,
174-
load_avsc('basic_schema.avsc'))
174+
test_serializer = AvroSerializer(load_avsc('basic_schema.avsc'),
175+
test_client)
175176

176177
ctx = SerializationContext('test_subj', MessageField.VALUE)
177178
assert test_serializer._subject_name_func(

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy