Skip to content

Commit 4a06e7c

Browse files
committed
Fixed constructors for Multicodec, Multibase and Multihash.
It is now possible to construct objects by passing the arguments positionally, as already done in many of the examples.
1 parent 01dd134 commit 4a06e7c

File tree

5 files changed

+30
-24
lines changed

5 files changed

+30
-24
lines changed

multiformats/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
while :class:`~multiformats.cid.CID` is a class for Content IDentifiers.
1616
"""
1717

18-
__version__ = "0.2.0"
18+
__version__ = "0.2.1"
1919

2020
from . import varint
2121
from . import multicodec

multiformats/multibase/__init__.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,21 +54,23 @@ class Multibase:
5454

5555
__slots__ = ("__weakref__", "_name", "_code", "_status", "_description")
5656

57-
def __init__(self, *,
58-
name: str,
59-
code: str,
60-
status: str = "draft",
61-
description: str = ""
62-
):
57+
def __new__(cls,
58+
name: str,
59+
code: str,
60+
status: str = "draft",
61+
description: str = ""
62+
) -> "Multibase":
6363
for arg in (name, code, status, description):
6464
validate(arg, str)
6565
name = Multibase._validate_name(name)
6666
code = Multibase.validate_code(code)
6767
status = Multibase._validate_status(status)
68-
self._name = name
69-
self._code = code
70-
self._status = status
71-
self._description = description
68+
instance = super().__new__(cls)
69+
instance._name = name
70+
instance._code = code
71+
instance._status = status
72+
instance._description = description
73+
return instance
7274

7375
@staticmethod
7476
def _validate_name(name: Optional[str]) -> str:

multiformats/multicodec/__init__.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,24 +58,27 @@ class Multicodec:
5858

5959
__slots__ = ("__weakref__", "_name", "_tag", "_code", "_status", "_description")
6060

61-
def __init__(self, *,
62-
name: str,
63-
tag: str,
64-
code: Union[int, str],
65-
status: str = "draft",
66-
description: str = ""
67-
):
61+
def __new__(cls,
62+
name: str,
63+
tag: str,
64+
code: Union[int, str],
65+
status: str = "draft",
66+
description: str = ""
67+
) -> "Multicodec":
68+
# pylint: disable = too-many-arguments
6869
for arg in (name, tag, status, description):
6970
validate(arg, str)
7071
validate(code, Union[int, str])
7172
name = Multicodec._validate_name(name)
7273
code = Multicodec.validate_code(code)
7374
status = Multicodec._validate_status(status)
74-
self._name = name
75-
self._tag = tag
76-
self._code = code
77-
self._status = status
78-
self._description = description
75+
instance = super().__new__(cls)
76+
instance._name = name
77+
instance._tag = tag
78+
instance._code = code
79+
instance._status = status
80+
instance._description = description
81+
return instance
7982

8083
@staticmethod
8184
def _validate_name(name: str) -> str:

multiformats/multihash/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class Multihash:
4343

4444
__slots__ = ("__weakref__", "_codec", "_implementation")
4545

46-
def __new__(cls, *, codec: Union[str, int, Multicodec]) -> "Multihash":
46+
def __new__(cls, codec: Union[str, int, Multicodec]) -> "Multihash":
4747
# check that the codec exists:
4848
if isinstance(codec, str):
4949
codec = multicodec.get(codec)

tox.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ deps =
1515
pyskein
1616
mmh3
1717
pycryptodomex
18+
multiformats_config
1819

1920
setenv =
2021
PYTHONPATH = {toxinidir}

0 commit comments

Comments
 (0)