Rename recordKeys to rKey

Changed files
+134 -8
src
atpasser
tests
+25 -2
src/atpasser/recordKeys/__init__.py src/atpasser/rKey/__init__.py
···
-
class RecordKey:
"""
A class representing a RecordKey.
Attributes:
recordKey (str): The RecordKey URI.
"""
def __init__(self, recordKey: str) -> None:
"""
Initalizes an RecordKey object.
Parameters:
recordKey (str): The RecordKey.
"""
if recordKey == "" or len(recordKey) > 512:
raise ValueError("null record key or record key longer than 512 chars")
if recordKey == ".." or recordKey == ".":
raise ValueError("reserved value . and ..")
if not set(recordKey).issubset(
set("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-_:~")
):
raise ValueError("invalid char")
self.recordKey = recordKey
def __str__(self) -> str:
"""
Convert the RecordKey to a string by given the URI.
"""
return self.recordKey
def __eq__(self, value: object, /) -> bool:
"""
Check if the 2 values are exactly the same.
"""
-
if isinstance(value, RecordKey):
return str(self) == str(value)
else:
return False
···
+
class RKey:
"""
+
A class representing a RecordKey.
+
Attributes:
+
recordKey (str): The RecordKey URI.
"""
+
def __init__(self, recordKey: str) -> None:
"""
+
Initalizes an RecordKey object.
+
Parameters:
+
recordKey (str): The RecordKey.
"""
+
if recordKey == "" or len(recordKey) > 512:
+
raise ValueError("null record key or record key longer than 512 chars")
+
if recordKey == ".." or recordKey == ".":
+
raise ValueError("reserved value . and ..")
+
if not set(recordKey).issubset(
+
set("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-_:~")
):
+
raise ValueError("invalid char")
+
self.recordKey = recordKey
+
def __str__(self) -> str:
"""
+
Convert the RecordKey to a string by given the URI.
"""
return self.recordKey
+
def __eq__(self, value: object, /) -> bool:
"""
+
Check if the 2 values are exactly the same.
"""
+
+
if isinstance(value, RKey):
+
return str(self) == str(value)
else:
+
return False
+
+26 -2
src/atpasser/uri/restricted.py
···
-
from atpasser import uri, handle, nsid, recordKeys
class RestrictedURI(uri.URI):
"""
A class representing a restricted URI.
Attributes:
collection (atpasser.nsid.NSID): Collection as NSID.
rkey (atpasser.rKey.RKey): Record key as a RKey object.
"""
def __init__(self, uri: str) -> None:
"""
Initalizes a restricted URI.
Parameters:
uri (str): The AT URI.
"""
super().__init__(uri)
if self.query != None and self.fragment != None:
raise ValueError("has query and/or fragments")
if self.authority == None:
raise ValueError("invalid DID or handle")
if len(self.path) == 0:
self.collection, self.rkey = None, None
elif len(self.path) == 1:
self.collection = nsid.NSID(self.path[0])
self.rkey = None
elif len(self.path) == 2:
self.collection = nsid.NSID(self.path[0])
-
self.rkey = recordKeys.RecordKey(self.path[1])
else:
raise ValueError("ttoo much path segments")
···
+
from atpasser import uri, handle, nsid, rKey
+
class RestrictedURI(uri.URI):
"""
+
A class representing a restricted URI.
+
Attributes:
+
collection (atpasser.nsid.NSID): Collection as NSID.
+
rkey (atpasser.rKey.RKey): Record key as a RKey object.
"""
+
def __init__(self, uri: str) -> None:
"""
+
Initalizes a restricted URI.
+
Parameters:
+
uri (str): The AT URI.
"""
+
super().__init__(uri)
+
if self.query != None and self.fragment != None:
+
raise ValueError("has query and/or fragments")
+
if self.authority == None:
+
raise ValueError("invalid DID or handle")
+
if len(self.path) == 0:
+
self.collection, self.rkey = None, None
+
elif len(self.path) == 1:
+
self.collection = nsid.NSID(self.path[0])
+
self.rkey = None
+
elif len(self.path) == 2:
+
self.collection = nsid.NSID(self.path[0])
+
+
self.rkey = rKey.RKey(self.path[1])
else:
+
raise ValueError("ttoo much path segments")
+
+83 -4
tests/_strings.py
···
-
from atpasser import did, handle, nsid, recordKeys, uri
testStrings, testMethods = {}, {}
testStrings[
"did"
] = """did:plc:z72i7hdynmk6r22z27h6tvur
did:web:blueskyweb.xyz
did:method:val:two
did:m:v
did:method::::val
did:method:-:_:.
did:key:zQ3shZc2QzApp2oymGvQbzP8eKheVshBHbU4ZYjeXqwSKEn6N
did:METHOD:val
did:m123:val
DID:method:val
did:method:
did:method:val/two
did:method:val?two
did:method:val#two"""
testMethods["did"] = did.DID
testStrings[
"handle"
] = """jay.bsky.social
8.cn
name.t--t
XX.LCS.MIT.EDU
a.co
xn--notarealidn.com
xn--fiqa61au8b7zsevnm8ak20mc4a87e.xn--fiqs8s
xn--ls8h.test
example.t
jo@hn.test
-
💩.test
john..test
xn--bcher-.tld
john.0
cn.8
www.masełkowski.pl.com
org
name.org.
2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion
laptop.local
blah.arpa"""
testMethods["handle"] = handle.Handle
testStrings[
"nsid"
] = """com.example.fooBar
net.users.bob.ping
a-0.b-1.c
a.b.c
com.example.fooBarV2
cn.8.lex.stuff
-
com.exa💩ple.thing
com.example
com.example.3"""
testMethods["nsid"] = nsid.NSID
testStrings[
"rkey"
] = """3jui7kd54zh2y
self
example.com
~1.2-3_
dHJ1ZQ
pre:fix
_
alpha/beta
.
..
#extra
@handle
any space
any+space
number[3]
number(3)
"quote"
dHJ1ZQ=="""
-
testMethods["rkey"] = recordKeys.RecordKey
testStrings[
"uri"
] = """at://foo.com/com.example.foo/123
at://foo.com/example/123
at://computer
at://example.com:3000
at://foo.com/
at://user:pass@foo.com"""
testMethods["uri"] = uri.URI
for item in testMethods:
print(f"START TEST {item}")
for value in testStrings[item].splitlines():
print(f"Value: {value}")
try:
print(f"str(): {str(testMethods[item](value))}")
except Exception as e:
print(f"× {e}")
···
+
from atpasser import did, handle, nsid, rKey, uri
+
testStrings, testMethods = {}, {}
+
testStrings[
"did"
+
] = """did:plc:z72i7hdynmk6r22z27h6tvur
+
did:web:blueskyweb.xyz
+
did:method:val:two
+
did:m:v
+
did:method::::val
+
did:method:-:_:.
+
did:key:zQ3shZc2QzApp2oymGvQbzP8eKheVshBHbU4ZYjeXqwSKEn6N
+
did:METHOD:val
+
did:m123:val
+
DID:method:val
did:method:
+
did:method:val/two
+
did:method:val?two
+
did:method:val#two"""
+
testMethods["did"] = did.DID
+
testStrings[
"handle"
+
] = """jay.bsky.social
+
8.cn
+
name.t--t
+
XX.LCS.MIT.EDU
a.co
+
xn--notarealidn.com
+
xn--fiqa61au8b7zsevnm8ak20mc4a87e.xn--fiqs8s
+
xn--ls8h.test
example.t
+
jo@hn.test
+
+
💩.tes
+
t
john..test
+
xn--bcher-.tld
+
john.0
+
cn.8
+
www.masełkowski.pl.com
+
org
+
name.org.
+
2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion
laptop.local
+
blah.arpa"""
+
testMethods["handle"] = handle.Handle
+
testStrings[
"nsid"
+
] = """com.example.fooBar
+
net.users.bob.ping
+
a-0.b-1.c
+
a.b.c
+
com.example.fooBarV2
+
cn.8.lex.stuff
+
+
com.exa💩ple.thin
com.example
+
com.example.3"""
+
testMethods["nsid"] = nsid.NSID
+
testStrings[
+
"rkey"
+
] = """3jui7kd54zh2y
self
example.com
+
~1.2-3_
+
dHJ1ZQ
pre:fix
+
_
+
alpha/beta
.
..
+
#extra
+
@handle
+
any space
+
any+space
+
number[3]
+
number(3)
+
"quote"
+
dHJ1ZQ=="""
+
+
testMethods["rkey"] = rKey.RKey
+
testStrings[
"uri"
+
] = """at://foo.com/com.example.foo/123
+
at://foo.com/example/123
+
at://computer
+
at://example.com:3000
+
at://foo.com/
+
at://user:pass@foo.com"""
+
testMethods["uri"] = uri.URI
+
for item in testMethods:
+
print(f"START TEST {item}")
+
for value in testStrings[item].splitlines():
+
print(f"Value: {value}")
+
try:
+
print(f"str(): {str(testMethods[item](value))}")
+
except Exception as e:
+
print(f"× {e}")
+