A handler can only be registered once
This commit is contained in:
@@ -350,3 +350,4 @@ See LICENSE file for details.
|
|||||||
## Version History
|
## Version History
|
||||||
* 0.1.0 - Initial release
|
* 0.1.0 - Initial release
|
||||||
* 0.2.0 - Added custom reference handlers
|
* 0.2.0 - Added custom reference handlers
|
||||||
|
* 0.2.1 - A handler can only be registered once
|
||||||
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "mydbengine"
|
name = "mydbengine"
|
||||||
version = "0.2.0"
|
version = "0.2.1"
|
||||||
description = "A lightweight, git-inspired database engine that maintains complete history of all modifications"
|
description = "A lightweight, git-inspired database engine that maintains complete history of all modifications"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.8"
|
requires-python = ">=3.8"
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ class DateHandler(BaseInlineHandler):
|
|||||||
class Handlers:
|
class Handlers:
|
||||||
|
|
||||||
def __init__(self, handlers_):
|
def __init__(self, handlers_):
|
||||||
self.handlers = handlers_
|
self.handlers = handlers_ or []
|
||||||
|
|
||||||
def get_handler(self, obj):
|
def get_handler(self, obj):
|
||||||
if has_tag(obj, TAG_SPECIAL):
|
if has_tag(obj, TAG_SPECIAL):
|
||||||
@@ -102,7 +102,14 @@ class Handlers:
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def register_handler(self, handler):
|
def register_handler(self, handler):
|
||||||
|
for h in self.handlers:
|
||||||
|
if type(h) == type(handler):
|
||||||
|
return # won't register twice the same handler
|
||||||
|
|
||||||
self.handlers.append(handler)
|
self.handlers.append(handler)
|
||||||
|
|
||||||
|
def unregister_handler(self, handler):
|
||||||
|
self.handlers = [h for h in self.handlers if type(h) != type(handler)]
|
||||||
|
|
||||||
|
|
||||||
handlers = Handlers([DateHandler()])
|
handlers = Handlers([DateHandler()])
|
||||||
|
|||||||
16
tests/test_handlers.py
Normal file
16
tests/test_handlers.py
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
from dbengine.handlers import BaseHandler, handlers
|
||||||
|
|
||||||
|
|
||||||
|
class DummyHandler(BaseHandler):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def test_i_can_register_only_once():
|
||||||
|
handlers.register_handler(DummyHandler())
|
||||||
|
count = len(handlers.handlers)
|
||||||
|
|
||||||
|
handlers.register_handler(DummyHandler()) # second time is skipped as the class is already registered
|
||||||
|
assert count == len(handlers.handlers)
|
||||||
|
|
||||||
|
handlers.unregister_handler(DummyHandler()) # clean the handlers list
|
||||||
|
assert len(handlers.handlers) == count - 1
|
||||||
Reference in New Issue
Block a user