Skip to content

Commit 1b936d0

Browse files
committed
some parameter checking and better default treatment when creating a Reference
1 parent 9f9303a commit 1b936d0

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/rune/runtime/metadata.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,21 +77,26 @@ class Reference:
7777
def __init__(self,
7878
target: str | Any,
7979
ext_key: str | None = None,
80-
key_type: KeyType = KeyType.EXTERNAL,
80+
key_type: KeyType | None = None,
8181
parent=None):
8282
if not isinstance(target, BaseMetaDataMixin) and ext_key:
8383
raise ValueError('Need to pass an object as target when specifying '
8484
'an external key!')
8585
if ext_key:
86+
key_type = key_type or KeyType.EXTERNAL
8687
target.set_external_key(ext_key, key_type) # type: ignore
8788
self.target = target
8889
self.target_key = ext_key
8990
self.key_type = key_type
9091
elif isinstance(target, BaseMetaDataMixin):
92+
if key_type and key_type != KeyType.INTERNAL:
93+
raise ValueError('key_type should be None or INTERNAL when '
94+
'passing in an object without a key!')
9195
self.target = target
9296
self.target_key = target.get_or_create_key()
9397
self.key_type = KeyType.INTERNAL
9498
else:
99+
key_type = key_type or KeyType.EXTERNAL
95100
self.target_key = target
96101
self.key_type = key_type
97102
self.target = parent.get_object_by_key(target, key_type)

0 commit comments

Comments
 (0)