mirror of https://github.com/pallets/flask.git
				
				
				
			Fix default index for TaggedJSONSerializer.register()
Change the default value of ``index`` to ``None`` in ``register()`` so that it is possible to insert a new tag as the penultimate item in the order list.
This commit is contained in:
		
							parent
							
								
									16549370fd
								
							
						
					
					
						commit
						fc6a1d9354
					
				|  | @ -243,7 +243,7 @@ class TaggedJSONSerializer(object): | |||
|         for cls in self.default_tags: | ||||
|             self.register(cls) | ||||
| 
 | ||||
|     def register(self, tag_class, force=False, index=-1): | ||||
|     def register(self, tag_class, force=False, index=None): | ||||
|         """Register a new tag with this serializer. | ||||
| 
 | ||||
|         :param tag_class: tag class to register. Will be instantiated with this | ||||
|  | @ -251,8 +251,8 @@ class TaggedJSONSerializer(object): | |||
|         :param force: overwrite an existing tag. If false (default), a | ||||
|             :exc:`KeyError` is raised. | ||||
|         :param index: index to insert the new tag in the tag order. Useful when | ||||
|             the new tag is a special case of an existing tag. If -1 (default), | ||||
|             the tag is appended to the end of the order. | ||||
|             the new tag is a special case of an existing tag. If ``None`` | ||||
|             (default), the tag is appended to the end of the order. | ||||
| 
 | ||||
|         :raise KeyError: if the tag key is already registered and ``force`` is | ||||
|             not true. | ||||
|  | @ -266,7 +266,7 @@ class TaggedJSONSerializer(object): | |||
| 
 | ||||
|             self.tags[key] = tag | ||||
| 
 | ||||
|         if index == -1: | ||||
|         if index is None: | ||||
|             self.order.append(tag) | ||||
|         else: | ||||
|             self.order.insert(index, tag) | ||||
|  |  | |||
|  | @ -72,3 +72,19 @@ def test_tag_interface(): | |||
|     pytest.raises(NotImplementedError, t.check, None) | ||||
|     pytest.raises(NotImplementedError, t.to_json, None) | ||||
|     pytest.raises(NotImplementedError, t.to_python, None) | ||||
| 
 | ||||
| 
 | ||||
| def test_tag_order(): | ||||
|     class Tag1(JSONTag): | ||||
|         key = ' 1' | ||||
| 
 | ||||
|     class Tag2(JSONTag): | ||||
|         key = ' 2' | ||||
| 
 | ||||
|     s = TaggedJSONSerializer() | ||||
| 
 | ||||
|     s.register(Tag1, index=-1) | ||||
|     assert isinstance(s.order[-2], Tag1) | ||||
| 
 | ||||
|     s.register(Tag2, index=None) | ||||
|     assert isinstance(s.order[-1], Tag2) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue