mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-20 18:06:08 -05:00
Fix creation of IdentifierData in config raw methods (#3829)
* Fix creation of IdentifierData in config Also adds some new tests regarding partial primary keys. Resolves #3796. Signed-off-by: Toby Harradine <tobyharradine@gmail.com> Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
This commit is contained in:
@@ -109,6 +109,28 @@ class IdentifierData:
|
||||
def __hash__(self) -> int:
|
||||
return hash((self.uuid, self.category, self.primary_key, self.identifiers))
|
||||
|
||||
def get_child(self, *keys: str) -> "IdentifierData":
|
||||
if not all(isinstance(i, str) for i in keys):
|
||||
raise ValueError("Identifiers must be strings.")
|
||||
|
||||
primary_keys = self.primary_key
|
||||
identifiers = self.identifiers
|
||||
num_missing_pkeys = self.primary_key_len - len(self.primary_key)
|
||||
if num_missing_pkeys > 0:
|
||||
primary_keys += keys[:num_missing_pkeys]
|
||||
if len(keys) > num_missing_pkeys:
|
||||
identifiers += keys[num_missing_pkeys:]
|
||||
|
||||
return IdentifierData(
|
||||
self.cog_name,
|
||||
self.uuid,
|
||||
self.category,
|
||||
primary_keys,
|
||||
identifiers,
|
||||
self.primary_key_len,
|
||||
self.is_custom,
|
||||
)
|
||||
|
||||
def add_identifier(self, *identifier: str) -> "IdentifierData":
|
||||
if not all(isinstance(i, str) for i in identifier):
|
||||
raise ValueError("Identifiers must be strings.")
|
||||
|
||||
Reference in New Issue
Block a user