Python ctypes bindings for reliq
Project description
reliq-python
A python bindings for reliq library.
Installation
pip install reliq
Benchmark
Benchmarks were inspired by selectolax and performed on 355MB, 896 files sample of most popular websites. You can find the benchmark script here.
Parsing
bs4: 121.615s
html5_parser: 22.424s
lxml: 4.955s
modest: 2.901s
lexbor: 1.200s
reliq: 0.310s
Collective memory usage of parsed trees
bs4: 2234MB
lexbor: 1666MB
modest: 1602MB
lxml: 1274MB
html5_parser: 1262MB
reliq: 58MB
Parsing and processing
bs4: 230.661s
html5_parser: 31.138s
lxml: 14.010s
modest: 4.291s
reliq: 2.974s
lexbor: 2.628s
Usage
Code
from reliq import reliq
html = ""
with open('index.html','r') as f:
html = f.read()
rq = reliq(html) #parse html
expr = reliq.expr(r"""
div .user; {
a href; {
.name @ | "%i",
.link @ | "%(href)v"
},
.score.u span .score,
.info dl; {
.key dt | "%i",
.value dd | "%i"
} |,
.achievements.a li class=b>"achievement-" | "%i\n"
}
""") #expressions can be compiled
users = []
links = []
for i in rq.filter(r'table; { tr, text@ iw>lisp }')[:-2]:
# ignore comments and text nodes
if i.type is not reliq.Type.tag:
continue
first_child = i[0]
if first_child.child_count < 3 and first_child.name == "div" and first_child.starttag == '<div>':
continue
link = first_child[2].attrib['href']
if re.match('^https://$',link):
links.append(link)
continue
#make sure that object is an ancestor of <main> tag
for j in i.ancestors():
if j.name == "main":
break
else:
continue
#search() returns str, in this case expression is already compiled
# but can be also passed as a str() or bytes(). If Path() is passed
# file will be read
user = json.loads(i.search(expr))
users.append(user)
try: #handle errors
reliq.search('p / /','<p></p>')
except reliq.ScriptError: # all errors inherit from reliq.Error
print("error")
#get text from all text nodes that are descendants of object
print(rq[2].text_recursive)
#get text from all text nodes that are children of object
print(rq[2].text)
#decode html entities
reliq.decode('loop & < ⃛ Ô')
#execute and convert to json
rq.json(r"""
.files * #files; ( li )( span .head ); {
.type i class child@ | "%(class)v" / sed "s/^flaticon-//",
.name @ | "%Dt" / trim sed "s/ ([^)]* [a-zA-Z][Bb])$//",
.size @ | "%t" / sed 's/.* \(([^)]* [a-zA-Z][Bb])\)$/\1/; s/,//g; /^[0-9].* [a-zA-Z][bB]$/!d' "E"
} |
""") #json format is enforced and any incompatible expressions will raise reliq.ScriptError
Import
Most is contained inside reliq class
from reliq import reliq, RQ
Initialization
reliq object takes an argument representing html, this can be str(), bytes(), Path() (file is read as bytes), reliq() or None.
rq = reliq('<p>Example</p>') #passed directly
rq2 = reliq(Path('index.html')) #passed from file
rq3 = reliq(None) # empty object
rq4 = reliq() # empty object
If optional argument ref is a string it'll set url to the first base tag in html structure, and in case there isn't any it'll be set to ref.
rq = reliq('<p>Example</p>')
rq.ref # None
rq2 = reliq(b'<p>Second example</p>',ref="http://en.wikipedia.org")
rq2.ref # http://en.wikipedia.org
rq3 = reliq(b'<base href="https://wikipedia.org"><p>Second example</p>',ref="http://en.wikipedia.org")
rq3.ref # https://wikipedia.org
rq4 = reliq(b'<base href="https://wikipedia.org"><p>Second example</p>',ref="")
rq4.ref # https://wikipedia.org
Types
reliq can have 5 types that change the behaviour of methods.
Calling type property on object e.g. rq.type returns instance of reliq.Type(Flag).
empty
Gets returned from either reliq(None) or reliq.filter() that matches nothing, makes all methods return default values.
unknown
Similar to empty but should never happen
struct
Returned by successful initialization e.g.
reliq('<p>Example</p>')
list
Returned by reliq.filter() that succeeds
single
Returned by axis methods or by accessing the object like a list.
The type itself is a grouping of more specific types:
- tag
- comment
- textempty (text made only of whitespaces)
- texterr (text where an html error occurred)
- text
- textall (grouping of text types)
get_data(raw=False) -> str|bytes
Returns the same html from which the object was compiled.
If first argument is True or raw=True returns bytes.
data = Path('index.html').read_bytes
rq = reliq(data)
x = rq[0][2][1][8]
# if both objects are bytes() then their ids should be the same
x.get_data(True) is data
special methods
__bytes__ and __str__
Full string representation of current object
rq = reliq("""
<h1><b>H</b>1</h1>
<h2>N2</h2>
<h2>N3</h2>
""")
str(rq) # struct
# '\n <h1><b>H</b>1</h1>\n <h2>N2</h2>\n <h2>N3</h2>\n'
str(rq.filter('h2')) # list
# '<h2>N2</h2><h2>N3</h2>'
str(rq[0]) # single
# '<h1><b>H</b>1</h1>'
str(reliq()) # empty
# ''
__getitem__
For single indexes results from children() axis, otherwise from self() axis
rq = reliq('<div><p>1</p> Text <b>H</b></div>')
first = rq[0] # struct
# <div>
first[1] # single
# <b>
r = first.filter('( text@ * )( * ) child@')
r[1] # list
# " Text " obj
r[2] == first[1]
__len__
Amount of objects returned from __getitem__
ref and ref_raw
ref -> str
ref_raw -> bytes
They return saved reference url at initialization.
rq = reliq('',ref="http://en.wikipedia.org")
rq.ref # "http://en.wikipedia.org"
rq.ref_raw # b"http://en.wikipedia.org"
properties of single
Calling these properties for types other than single returns their default values.
lvl -> int level in html structure
rlvl -> int level in html structure, relative to parent
position -> int position in html structure
rposition -> int position in html structure, relative to parent
Calling some properties makes sense only for certain types.
tag
tag_count -> int count of tags
text_count -> int count of text
comment_count -> int count of comments
desc_count -> int count of descendants
attribl -> int number of attributes
attrib -> dict dictionary of attributes
These return None only if called from empty type. They also have _raw counterparts that return bytes e.g. text_recursive_raw -> Optional[bytes], name_raw -> Optional[bytes]
insides -> Optional[str] string containing contents inside tag or comment
name -> Optional[str] tag name e.g. 'div'
starttag -> Optional[str] head of the tag e.g. '<div class="user">'
endtag -> Optional[str] tail of the tag e.g. '</div>'
endtag_strip -> Optional[str] tail of the tag, stripped of < and > e.g. '/div'
text -> Optional[str] text of children
text_recursive -> Optional[str] text of descendants
rq = reliq("""
<main>
<ul>
<a>
<li>L1</li>
</a>
<li>L2</li>
</ul>
</main>
""")
ul = rq[0][0]
a = ul[0]
li1 = a[0]
li2 = ul[1]
ul.name
# 'ul'
ul.name_raw
# b'ul'
ul.lvl
# 1
li1.lvl
# 3
ul.text
# '\n \n \n '
ul.text_recursive
# '\n \n L1\n \n L2\n '
a.insides
# '\n <li>L1</li>\n '
comment
Comments can either return their string representation or insides by insides property.
c = reliq('<!-- Comment -->').self(type=None)[0]
c.insides
# ' Comment '
bytes(c)
# b'<!-- Comment -->'
str(c)
# '<!-- Comment -->'
text
Text can only be converted to string
t = reliq('Example').self(type=None)[0]
str(t)
# 'Example'
axes
Convert reliq objects into a list or a generator of single type objects.
If their first argument is set to True or gen=True is passed, a generator is returned, otherwise a list.
By default they filter node types to only reliq.Type.tag, this can be changed by setting the type argument e.g. type=reliq.Type.comment|reliq.Type.texterr. If type is set to None all types are matched.
If rel=True is passed returned objects will be relative to object from which they were matched.
rq = reliq("""
<!DOCTYPE html>
<head>
<title>Title</title>
</head>
<body>
<section>
<h1>Title</h1>
<p>A</p>
</section>
<h2>List</h2>
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
</ul>
<section>
TEXT
</section>
</body>
""")
everything
everything() gets all elements in structure, no matter the previous context.
#traverse everything through generator
for i in rq.everything(True):
print(str(i))
self
self() gets the context itself, single element for single type, list of the list type and elements with .lvl == 0 for struct type.
By default filtered type depends on object type it was called for, for single and list types are unfiltered, only struct type enforces type=reliq.Type.tag.
# rq is a reliq.Type.struct object
rq.self()
# [<tag head>, <tag body>]
rq.self(type=None)
# [<textempty>, <comment>, <textempty>, <tag head>, <textempty>, <tag body>]
rq.self(type=reliq.Type.tag|reliq.Type.comment)
# [<comment>,<tag head>, <tag body>]
# ls is a reliq.Type.list object that has comments and text types
ls = rq.filter('[:3] ( comment@ * )( text@ * )')
ls.self()
# [<comment>, <text>, <text>, <text>]
ls.self(type=reliq.Type.tag|reliq.Type.comment)
# [<comment>]
# body is a reliq.Type.single object
body = rq[1].self()
len(body.self())
# 1
body.self()[0].name
# "body"
children
children() gets all nodes of the context that have level relative to them equal to 1.
# struct
rq.children()
# [<tag title>, <tag section>, <tag h2>, <tag ul>, <tag section>]
# list
rq.filter('head, ul').children()
# [<tag title>, <tag li>, <tag li>, <tag li>]
# single
first_section = rq[1][0]
first_section.children()
# [<tag h1>, <tag p>]
descendants
descendants() gets all nodes of the context that have level relative to them greater or equal to 1.
# struct
rq.descendants()
# [<tag title>, <tag section>, <tag h1>, <tag p>, <tag h2>, <tag ul>, <tag li>, <tag li>, <tag li>, <tag section>]
# list
rq.filter('[0] section').descendants()
# [<tag h1>, <tag p>]
# single
rq[1][0].descendants()
# [<tag h1>, <tag p>]
full
full() gets all nodes of the context and all nodes below them (like calling self() and descendants() at once).
# struct
rq.full()
# [<tag head>, <tag title>, <tag body>, <tag section>, <tag h1>, <tag p>, <tag h2>, <tag ul>, <tag li>, <tag li>, <tag li>, <tag section>]
# list
rq.filter('[0] section').descendants()
# [<tag section>, <tag h1>, <tag p>]
# single
rq[1][0].descendants()
# [<tag section>, <tag h1>, <tag p>]
parent
parent() gets parent of context nodes. Doesn't work for struct type.
# list
rq.filter('li').parent()
# [<tag ul>, <tag ul>, <tag ul>]
# single
rq[1][2][0].parent()
# [<tag li>]
# single
rq[0].parent() # top level nodes don't have parents
# []
rparent
rparent() behaves like parent() but returns the parent to which the current object is relative to. Doesn't work for struct type.
It doesn't take rel argument, returned objects are always relative.
ancestors
ancestors() gets ancestors of context nodes. Doesn't work for struct type.
# list
rq.filter('li').ancestors()
# [<tag ul>, <tag body>, <tag ul>, <tag body>, <tag ul>, <tag body>]
# single
rq[1][2][0].ancestors()
# [<tag ul>, <tag body>]
# first element of ancestors() should be the same as for parent()
rq[1][2][0].ancestors()[0].name == rq[1][2][0].parent()[0].name
# single
rq[0].ancestors() # top level nodes don't have ancestors
# []
before
before() gets all nodes that have lower .position property than context nodes. Doesn't work for struct type.
# list
rq.filter('[0] title, [1] section').before()
# [<tag head>, <tag li>, <tag li>, <tag li>, <tag ul>, <tag h2>, <tag p>, <tag h1>, <tag section>, <tag body>, <tag title>, <tag head>]
# single
title = rq[0][0]
title.before()
# [<tag head>]
# single
second_section = rq[1][3]
second_section.before()
# [<tag li>, <tag li>, <tag li>, <tag ul>, <tag h2>, <tag p>, <tag h1>, <tag section>, <tag body>, <tag title>, <tag head>]
# single
head = rq[0]
head.before() #first element doesn't have any nodes before it
# []
preceding
preceding() is similar to before() but ignores ancestors. Doesn't work for struct type.
# list
rq.filter('[0] title, [1] section').preceding()
# [<tag li>, <tag li>, <tag li>, <tag ul>, <tag h2>, <tag p>, <tag h1>, <tag section>, <tag title>, <tag head>]
# single
title = rq[0][0]
title.preceding() # all tags before it are it's ancestors
# []
# single
second_section = rq[1][3]
second_section.preceding()
# [<tag li>, <tag li>, <tag li>, <tag ul>, <tag h2>, <tag p>, <tag h1>, <tag section>, <tag title>, <tag head>]
after
after() gets all nodes that have higher .position property than context nodes. Doesn't work for struct type.
# list
rq.filter('h2, ul').after()
# [<tag ul>, <tag li>, <tag li>, <tag li>, <tag section>, <tag li>, <tag li>, <tag li>, <tag section>]
# single
h2 = rq[1][1]
h2.after()
# [<tag ul>, <tag li>, <tag li>, <tag li>, <tag section>]
# single
ul = rq[1][2]
ul.after()
# [<tag li>, <tag li>, <tag li>, <tag section>]
# single
third_section = rq[1][3] # last element
third_section.after()
# []
subsequent
subsequent() is similar to after() but ignores descendants. Doesn't work for struct type.
# list
rq.filter('h2, ul').subsequent()
# [<tag ul>, <tag li>, <tag li>, <tag li>, <tag section>, <tag section>]
# single
h2 = rq[1][1]
h2.subsequent()
# [<tag ul>, <tag li>, <tag li>, <tag li>, <tag section>]
# single
ul = rq[1][2]
ul.subsequent()
# [<tag section>]
siblings_preceding
siblings_preceding() gets nodes on the same level as context nodes but before them and limited to their parent. Doesn't work for struct type.
If full=True is passed descendants of siblings will also be matched.
# list
rq.filter('ul, h2').siblings_preceding()
# [<tag h2>, <tag section>, <tag section>]
# single
h2 = rq[1][1]
h2.siblings_preceding()
# [<tag section>]
h2.siblings_preceding(full=True)
# [<tag p>, <tag h1>, <tag section>]
# single
ul = rq[1][2]
ul.siblings_preceding()
# [<tag h2>, <tag section>]
ul.siblings_preceding(full=True)
# [<tag h2>, <tag p>, <tag h1>, <tag section>]
siblings_subsequent
siblings_preceding() gets nodes on the same level as context nodes but after them and limited to their parent. Doesn't work for struct type.
If full=True is passed descendants of siblings will also be matched.
# list
rq.filter('ul, h2').siblings_subsequent()
# [<tag h2>, <tag section>, <tag section>]
# single
h2 = rq[1][1]
h2.siblings_subsequent()
# [<tag ul>, <tag section>]
h2.siblings_subsequent(full=True)
# [<tag ul>, <tag li>, <tag li>, <tag li>, <tag section>]
# single
ul = rq[1][2]
ul.siblings_subsequent()
# [<tag section>]
ul.siblings_subsequent(full=True)
# [<tag section>]
siblings
siblings() returns merged output of siblings_preceding() and siblings_subsequent().
expr
reliq.expr is a class that compiles expressions, it accepts only one argument that can be a str(), bytes() or Path().
If Path() argument is specified, file under it will be read with Path.read_bytes().
# str
reliq.expr(r'table; { tr .name; li | "%(title)v\n", th }')
# bytes
reliq.expr(rb'li')
# file from Path
reliq.expr(Path('expression.reliq'))
search
search() executes expression in the first argument and returns str() or bytes if second argument is True or raw=True.
Expression can be passed both as compiled object of reliq.expr or its representation in str(), bytes() or Path() that will be compiled in function.
rq = reliq('<span class=name data-user-id=1282>User</span><p>Title: N1ase</p>')
rq.search(r'p')
# '<p>Title: N1ase</p>\n'
rq.search(r'p', True)
# b'<p>Title: N1ase</p>\n'
rq.search(r'p', raw=True)
# b'<p>Title: N1ase</p>\n'
rq.search(r"""
span .name; {
.id.u @ | "%(data-user-id)v",
.name @ | "%t"
},
.title p | "%i" sed "s/^Title: //"
""",True)
# b'{"id":1282,"name":"User","title":"N1ase"}'
rq.search(Path('expression.reliq'))
json
Similar to search() but returns dict() while validating expression.
filter
filter() executes expression in the first argument and returns reliq object of list type or empty type if nothing has been found.
If second argument is True or independent=True then returned object will be completely independent from the one the function was called on. A new HTML string representation will be created, and structure will be copied and shifted to new string, levels will also change.
Expression can be passed both as compiled object of reliq.expr or its representation in str(), bytes() or Path() that will be compiled in function.
Any field, formatting or string conversion in expression will be ignored, only objects used in them will be returned.
rq = reliq('<span class=name data-user-id=1282>User</span><p>Title: N1ase</p>')
rq.filter(r'p').self()
# [<tag p>]
rq.filter(r'p').type
# reliq.Type.list
rq.filter(r'p').get_data()
# '<span class=name data-user-id=1282>User</span><p>Title: N1ase</p>'
rq.filter(r'p',True).get_data()
# '<p>Title: N1ase</p>'
rq.filter(r'nothing').type
# reliq.Type.empty
rq.filter(r"""
span .name; {
.id.u @ | "%(data-user-id)v",
.name @ | "%t"
},
.title p | "%i" sed "s/^Title: //"
""")
# [<tag span>, <tag span>, <tag p>]
rq.filter(Path('expression.reliq'))
Encoding and decoding html entities
decode() decodes html entities in first argument of str() or bytes(), and returns str() or bytes() if second argument is True or raw=True.
By default is translated to space, this can be changed by setting no_nbsp=False.
encode() does the opposite of decode() in the same fashion.
By default only special characters are encoded i.e. <, >, ", ', &. If full=True is set everything possible will be converted to html entities (quite slow approach).
reliq.decode(r"text & < ⃛ Ô")
# "loop & < ⃛⃛ Ô"
reliq.decode(r"text & < ⃛ Ô",True)
# b'text & < \xe2\x83\x9b\xe2\x83\x9b \xc3\x94'
reliq.decode(r"text & < ⃛ Ô",raw=True)
# b'text & < \xe2\x83\x9b\xe2\x83\x9b \xc3\x94'
reliq.decode('ex t')
# "ex t"
reliq.decode('ex t',no_nbsp=False)
# 'ex\xa0t'
reliq.decode('ex t',True,no_nbsp=False)
# b'ex\xc2\xa0t'
reliq.encode("<p>li & \t 'seq' \n </p>")
# '<p>li &amp; \t 'seq' \n </p>'
reliq.encode("<p>li & \t 'seq' \n </p>",True)
# b'<p>li &amp; \t 'seq' \n </p>'
reliq.encode("<p>li & \t 'seq' \n </p>",raw=True)
# b'<p>li &amp; \t 'seq' \n </p>'
reliq.encode("<p>li & \t 'seq' \n </p>",full=True)
# '<p>li &amp; 	 'seq' 
 </p>'
reliq.encode("<p>li & \t 'seq' \n </p>",True,full=True)
# b'<p>li &amp; 	 'seq' 
 </p>'
URLS
urljoin work like urllib.parse.urljoin but it can take argument's in bytes and returns str or bytes depending on raw argument.
ujoin works the same way as urljoin but ref argument is set to default reference url in structure.
Errors
All errors are instances of reliq.Error.
reliq.SystemError is raised when kernel fails (you should assume it doesn't happen).
reliq.HtmlError is raised when html structure exceeds limits.
reliq.ScriptError is raised when incorrect script is compiled.
try:
reliq('<div>'*8193) # 8192 passes :D
except reliq.HtmlError:
print('html depth limit exceeded')
try:
reliq.expr('| |')
except reliq.ScriptError:
print('incorrect expression')
Relativity
list and single type object also stores a pointer to node that object is relative to in context i.e. rq.filter(r'body; nav') will return nav objects that were found in body tags, nav objects might not be direct siblings of body tags but because of relativity their relation is not lost.
reliq.filter() always keeps the relativity.
By default axis functions don't change relativity unless rel=True is passed.
rq = reliq("""
<body>
<nav>
<ul>
<li> A </li>
<li> B </li>
<li> C </li>
</ul>
</nav>
</body>
""")
li = rq[0][0][0][1] # not relative
li_self = rq.filter('li i@w>"B"')[0] # relative to itself
li_rel = rq.filter('nav; li i@w>"B"')[0] # relative to nav
# .rlvl and .rposition for non relative objects return same values as .lvl and .position
li.lvl
# 3
li_rel.lvl
# 3
li.rlvl
# 3
li_rel.rlvl
# 2
li.position
# 10
li_rel.position
# 10
li.rposition
# 10
li_rel.rposition
# 9
nav = rq[0][0]
for i in nav.descendants(rel=True):
if i.rlvl == 2 and i.name == 'li':
print(i.lvl,i.rlvl)
# 3 2
break
nav_rel = li_rel.rparent()[0] # nav element relative to li
nav_rel.rlvl
# -2
nav_rel.rposition
# -7
Project wrapper
Expressions can grow into considerable sizes so it's beneficial to save them in separate directories and cache them. RQ function returns a new reliq type that keeps track of cache and directory of the script that has called this function.
from reliq import RQ
reliq = RQ(cached=True)
rq = reliq('<p>Alive!</p>')
print(rq)
It takes two optional arguments def RQ(path="", cached=False). If cached is set, compiled expressions will be saved and reused.
If path is not an absolute path it will be merged with directory of the calling function. When in any function that takes expression argument a Path() is passed it will be relative to first declared path argument. Exceptions to that are paths that are absolute or begin with ./ or ../.
This function should be used by packages to save reliq expressions under their directories without polluting the general reliq object space. After the first declaration of this type it should be reused everywhere in project.
Projects using reliq in python
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file reliq-0.0.42.tar.gz.
File metadata
- Download URL: reliq-0.0.42.tar.gz
- Upload date:
- Size: 35.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de4dff166b03f494ced87e7217580d6b7efd27e431d946e0c7faf9854f17e831
|
|
| MD5 |
80f2437a51423dae37cd4d74b4646de8
|
|
| BLAKE2b-256 |
517ebb48680d097707e3551fa5b69d5bc9077797647cc84797b39562eb363d06
|
File details
Details for the file reliq-0.0.42-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: reliq-0.0.42-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 181.9 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e69f15c652751babb543ee7a0dfc31132052cb303767752a5cb525fc724c3bc0
|
|
| MD5 |
c3c0d5b7f4416bd756c8eda32c8fa489
|
|
| BLAKE2b-256 |
19a17588b7b45e6bb42dd378dd73d77afe57a33c55214a2cc8f966f8384d13a8
|
File details
Details for the file reliq-0.0.42-cp313-cp313-manylinux2014_x86_64.whl.
File metadata
- Download URL: reliq-0.0.42-cp313-cp313-manylinux2014_x86_64.whl
- Upload date:
- Size: 151.0 kB
- Tags: CPython 3.13
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b06182d7ebe5bc3989f8492532b06cc033e2df8764e53fc7945d58ea430cc6ce
|
|
| MD5 |
274d16cff5e4d0721f062b297864dfab
|
|
| BLAKE2b-256 |
d8b1e2b6d543298492d81fcc8645224cd50b16faefb73a49995f6f59f82c5734
|
File details
Details for the file reliq-0.0.42-cp313-cp313-manylinux2014_armv7l.whl.
File metadata
- Download URL: reliq-0.0.42-cp313-cp313-manylinux2014_armv7l.whl
- Upload date:
- Size: 120.0 kB
- Tags: CPython 3.13
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d86e91df7c1d01a1790f96130c3a88d2639782b4acbdbfec31ea10563001a0b
|
|
| MD5 |
ffc0b1fcf6ccd03d5dd40e53a29ddf97
|
|
| BLAKE2b-256 |
41ce8c78e73126cc16793519d9cf3b755eb8617aadc21aa1fbc4b16a4f296116
|
File details
Details for the file reliq-0.0.42-cp313-cp313-manylinux2014_aarch64.whl.
File metadata
- Download URL: reliq-0.0.42-cp313-cp313-manylinux2014_aarch64.whl
- Upload date:
- Size: 146.9 kB
- Tags: CPython 3.13
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
000c524c1870119b2c03fb4991fac8bb19e004e471c2a60deef92e5558ebdeb2
|
|
| MD5 |
3de9f16794f21b9b73e0ed613214692c
|
|
| BLAKE2b-256 |
6fa1ac7cbf8552f1e31ca9ef76d1d7b474ad2e6d3dc00cab4350f6fe7f0aa262
|
File details
Details for the file reliq-0.0.42-cp313-cp313-macosx_14_0_arm64.whl.
File metadata
- Download URL: reliq-0.0.42-cp313-cp313-macosx_14_0_arm64.whl
- Upload date:
- Size: 115.2 kB
- Tags: CPython 3.13, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db52be0160b3eee9aa247d5944eb9c9f42c44ebc9b9b5fb2f10a2283d3355801
|
|
| MD5 |
ad34bdf93705bd75109b92a60c5db67d
|
|
| BLAKE2b-256 |
980f20e78c86dd95741c7ca36a790c1beaf26b3c224580bb53a384fdb6e9c8a8
|
File details
Details for the file reliq-0.0.42-cp313-cp313-macosx_13_0_arm64.whl.
File metadata
- Download URL: reliq-0.0.42-cp313-cp313-macosx_13_0_arm64.whl
- Upload date:
- Size: 121.1 kB
- Tags: CPython 3.13, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87fcfe04f94133e25af05d2ab365155dbcc2b62b6b22728df95aee152fa1e1d2
|
|
| MD5 |
33ab4865099ee5e442070f2d2cc20183
|
|
| BLAKE2b-256 |
8a7d30a8dd0be0858be30f404c8a89b34d0d7ad9f12ab5a9dd19d216ccad080d
|
File details
Details for the file reliq-0.0.42-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: reliq-0.0.42-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 181.9 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba332fa7804aba8335e78cb6b19c5a9482da21e5d38af54b685cc2b8fe7ece5f
|
|
| MD5 |
8c22cbf11aecedfadaf88f59bfaadf06
|
|
| BLAKE2b-256 |
4fabb8519d2bc32635d622b91a595e1a686c3715ccbebd1045ff7297ef96836f
|
File details
Details for the file reliq-0.0.42-cp312-cp312-manylinux2014_x86_64.whl.
File metadata
- Download URL: reliq-0.0.42-cp312-cp312-manylinux2014_x86_64.whl
- Upload date:
- Size: 151.0 kB
- Tags: CPython 3.12
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
014ca42fd633931cc9eaadf0794fa4a1207b470c3822e6a850a1229748f63311
|
|
| MD5 |
49279faeff7217085e44582db2237205
|
|
| BLAKE2b-256 |
0619642fe2fa6c135bb77beef640517be607f2e56f55b6db26df7901c14bb77f
|
File details
Details for the file reliq-0.0.42-cp312-cp312-manylinux2014_armv7l.whl.
File metadata
- Download URL: reliq-0.0.42-cp312-cp312-manylinux2014_armv7l.whl
- Upload date:
- Size: 120.0 kB
- Tags: CPython 3.12
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0497b283d1736e27ce258b7d1bb7db104c569336e4caf1fe38590f7a7b8fbb2b
|
|
| MD5 |
d3e5c557ba8d0066fd5d11c7f520d5f2
|
|
| BLAKE2b-256 |
1bf0b9000a4f1861db6feadc79177049b6930a916752214549a35ec5b7ea01ef
|
File details
Details for the file reliq-0.0.42-cp312-cp312-manylinux2014_aarch64.whl.
File metadata
- Download URL: reliq-0.0.42-cp312-cp312-manylinux2014_aarch64.whl
- Upload date:
- Size: 146.9 kB
- Tags: CPython 3.12
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80063dd39a6eb62dd54107928dc544ad9b4a9aca56bd3566c6b17ec3e0bc35c9
|
|
| MD5 |
a0ed82cd37513715af6c72781cfe75fa
|
|
| BLAKE2b-256 |
7345dda17e39161f4297e03e19432a332856556abcc6bad8ff223ca450ba7cae
|
File details
Details for the file reliq-0.0.42-cp312-cp312-macosx_14_0_arm64.whl.
File metadata
- Download URL: reliq-0.0.42-cp312-cp312-macosx_14_0_arm64.whl
- Upload date:
- Size: 115.2 kB
- Tags: CPython 3.12, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d1c250f6926c5e6769ace59e452ccedd1b285d91f2cea085b0f56dfd02c3849
|
|
| MD5 |
199d2301b58ab5487ece264240753bcc
|
|
| BLAKE2b-256 |
2913017609ba2a788839876d9dea22f5e113814c1b3f8a446136affa29966e3a
|
File details
Details for the file reliq-0.0.42-cp312-cp312-macosx_13_0_arm64.whl.
File metadata
- Download URL: reliq-0.0.42-cp312-cp312-macosx_13_0_arm64.whl
- Upload date:
- Size: 121.1 kB
- Tags: CPython 3.12, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6463e3fd0a1dca3ad05e929f25f71cf19c917073ca0937b20044d98f3e31b6a
|
|
| MD5 |
b4ad4dfadfd3489aceeaed05ffe02934
|
|
| BLAKE2b-256 |
d31e4fdcd6336c491683dfcbcd479054cf3058a586ac7d282582ac9f9f966ab1
|
File details
Details for the file reliq-0.0.42-cp312-cp312-android_21_arm64_v8a.whl.
File metadata
- Download URL: reliq-0.0.42-cp312-cp312-android_21_arm64_v8a.whl
- Upload date:
- Size: 146.8 kB
- Tags: Android API level 21+ ARM64 v8a, CPython 3.12
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
936cb88836c35a35d7d5a3503ad000cfd0de45839167984462bb01117ca34fbf
|
|
| MD5 |
f3f9e2185618650cd5c5b3e487a58f7d
|
|
| BLAKE2b-256 |
01bcd0e36613594dcf07dc00162ff950c69994da0baba65b0aa9a6d5cf841a62
|
File details
Details for the file reliq-0.0.42-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: reliq-0.0.42-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 181.9 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15e15d3f0796dc9d5785eb782ac8c73a3832bfd2ad2c67fe34de38fe17b8fdda
|
|
| MD5 |
2ca1b96b828cce3d632b9eee48fb7a02
|
|
| BLAKE2b-256 |
c0e380d2ce08499a9bd70891372de02e97ad78fdf09fcafd904f40733dc60c58
|
File details
Details for the file reliq-0.0.42-cp311-cp311-manylinux2014_x86_64.whl.
File metadata
- Download URL: reliq-0.0.42-cp311-cp311-manylinux2014_x86_64.whl
- Upload date:
- Size: 151.0 kB
- Tags: CPython 3.11
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ca98e7b955d127f9a0ab6e38ca7c4d62c51126d54d856a5aef006267ee85192
|
|
| MD5 |
832f377fd749f06d72f0c9c74b1cb0d7
|
|
| BLAKE2b-256 |
4a58da61f1fa77e82c6aead659e8a9fdd425e22be7e3fe59cb107fef6bc75893
|
File details
Details for the file reliq-0.0.42-cp311-cp311-manylinux2014_armv7l.whl.
File metadata
- Download URL: reliq-0.0.42-cp311-cp311-manylinux2014_armv7l.whl
- Upload date:
- Size: 120.0 kB
- Tags: CPython 3.11
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb8d4c0f98c7b6c7cb110edcda726f1292a930a129d9a0d2b689483d54923016
|
|
| MD5 |
ad0a7bbc4c5e971328684cbcb52488af
|
|
| BLAKE2b-256 |
ec18a59d94055e0c9a47ab6a8cadff9b7c28b02e2bf92b9f28bef035c1d6a066
|
File details
Details for the file reliq-0.0.42-cp311-cp311-manylinux2014_aarch64.whl.
File metadata
- Download URL: reliq-0.0.42-cp311-cp311-manylinux2014_aarch64.whl
- Upload date:
- Size: 146.9 kB
- Tags: CPython 3.11
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be768019ed88429d3b5e0d27a2db3a0288be12a489cfa68776bc36df203c452c
|
|
| MD5 |
508b6e0a05c464cfba91a408f9bbc0cc
|
|
| BLAKE2b-256 |
699b60fefe0493460ed48ae90a85f90c039d724919b1c5b6f9ed6a19a3012c92
|
File details
Details for the file reliq-0.0.42-cp311-cp311-macosx_14_0_arm64.whl.
File metadata
- Download URL: reliq-0.0.42-cp311-cp311-macosx_14_0_arm64.whl
- Upload date:
- Size: 115.2 kB
- Tags: CPython 3.11, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56e36a22fe4e2edbdeddf49679f0eb26cfe4b9326161b6b7e5ba4bfbeacffe44
|
|
| MD5 |
59cbc16678db975cce8a296c8b7a47ec
|
|
| BLAKE2b-256 |
82b43ddb684855373f244027648134b4c0bc095516558203e380900a334d7351
|
File details
Details for the file reliq-0.0.42-cp311-cp311-macosx_13_0_arm64.whl.
File metadata
- Download URL: reliq-0.0.42-cp311-cp311-macosx_13_0_arm64.whl
- Upload date:
- Size: 121.1 kB
- Tags: CPython 3.11, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4366d0af1af349c93817ab90f7c2a487a77cd441c287a03f15917fd8c38cb99b
|
|
| MD5 |
cbf63e3793fe61da326f722723a8c809
|
|
| BLAKE2b-256 |
80ffaf7ba0175b8d3293ec42d69112fc62358a092c0717f30b30e0268937f9c1
|
File details
Details for the file reliq-0.0.42-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: reliq-0.0.42-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 181.9 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
adc6ed435d680595cb50f399f402d727b2feb4450828c0fcfce9bf12498a6a13
|
|
| MD5 |
b719247c76381eb4c50f0e7c6467f0ed
|
|
| BLAKE2b-256 |
61925a200a0813f9612f3165ce32998b2ff90089a287a918073583813ba1efd5
|
File details
Details for the file reliq-0.0.42-cp310-cp310-manylinux2014_x86_64.whl.
File metadata
- Download URL: reliq-0.0.42-cp310-cp310-manylinux2014_x86_64.whl
- Upload date:
- Size: 151.0 kB
- Tags: CPython 3.10
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc9e154d76e4a77eefb3693f328e5a4b84d9ebf56c9515d8f97d8f8b921baa74
|
|
| MD5 |
d1ac160fe67541a5c6385220fb40c6e6
|
|
| BLAKE2b-256 |
6485ca4ca52e773b04fd16917eb07431b9ffe15c25a8966019693fc283cb0641
|
File details
Details for the file reliq-0.0.42-cp310-cp310-manylinux2014_armv7l.whl.
File metadata
- Download URL: reliq-0.0.42-cp310-cp310-manylinux2014_armv7l.whl
- Upload date:
- Size: 120.0 kB
- Tags: CPython 3.10
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82527d996a823fc9e6782d238e08ee8a9609e2680333ba2c762b8362e5ca8fad
|
|
| MD5 |
5f071edca3121097a91c80039aa1242d
|
|
| BLAKE2b-256 |
f4739513e315c654f001e300e19259abb12f0121989e9a19d6c574744ffcbf7d
|
File details
Details for the file reliq-0.0.42-cp310-cp310-manylinux2014_aarch64.whl.
File metadata
- Download URL: reliq-0.0.42-cp310-cp310-manylinux2014_aarch64.whl
- Upload date:
- Size: 146.9 kB
- Tags: CPython 3.10
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5556ef58f6d39880a6c744c58d736198c7e2a13d75f455e60463bfd5526d25e1
|
|
| MD5 |
646a1cb0b2814ad9040089fc0ff129eb
|
|
| BLAKE2b-256 |
5d95ae3735e9d4c1b9562bebea39a4d9caa2d187a80aa83f8fad7bbd23ac28b8
|
File details
Details for the file reliq-0.0.42-cp310-cp310-macosx_14_0_arm64.whl.
File metadata
- Download URL: reliq-0.0.42-cp310-cp310-macosx_14_0_arm64.whl
- Upload date:
- Size: 115.2 kB
- Tags: CPython 3.10, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90f1c92cec3a169269004e20155987022211dd267639322b415af9739fe90434
|
|
| MD5 |
782d1060e4e46b38d4226e42a3093994
|
|
| BLAKE2b-256 |
f8681e20f88f75fa45bf6faf84a8f697c213a5a79a20eb268271572b3ce7a2ab
|
File details
Details for the file reliq-0.0.42-cp310-cp310-macosx_13_0_arm64.whl.
File metadata
- Download URL: reliq-0.0.42-cp310-cp310-macosx_13_0_arm64.whl
- Upload date:
- Size: 121.1 kB
- Tags: CPython 3.10, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
844357c9e55c2c1374e5569af212be872010ce9d70dcb597a4fd5881b7e5d6e8
|
|
| MD5 |
f46e6feebb8aab00d8f2fefd7f1e8e28
|
|
| BLAKE2b-256 |
29f1e566730d666aec372c419be2d4396c69b5c373996a3e56d5a6530f2bf796
|
File details
Details for the file reliq-0.0.42-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: reliq-0.0.42-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 181.9 kB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b817595f41e2826888b34fe7abe543125b52e241e1d7ed76c2191e2b25f5afb8
|
|
| MD5 |
306e26efc9f16c5249c410fbc77aabdb
|
|
| BLAKE2b-256 |
ab71a44967e134337f3a960ee45ef7c1058bd9e10f45bd8866399ff8645b75e2
|
File details
Details for the file reliq-0.0.42-cp39-cp39-manylinux2014_x86_64.whl.
File metadata
- Download URL: reliq-0.0.42-cp39-cp39-manylinux2014_x86_64.whl
- Upload date:
- Size: 151.0 kB
- Tags: CPython 3.9
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
014e9bc59814d594d2d1828ce097acbe9621bf9e759c8d127b94abcfc8293f11
|
|
| MD5 |
396ea324319181216b8411646fc3875b
|
|
| BLAKE2b-256 |
313bd0cd92914377e628a447bd8ed7d0187af269c9e2d8eab62da18aee2cc7b9
|
File details
Details for the file reliq-0.0.42-cp39-cp39-manylinux2014_armv7l.whl.
File metadata
- Download URL: reliq-0.0.42-cp39-cp39-manylinux2014_armv7l.whl
- Upload date:
- Size: 120.0 kB
- Tags: CPython 3.9
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c98d3c8ede2adaad8d8efdedf28b6a97369a2fbc3502ddf614d0904376d837ec
|
|
| MD5 |
4d596db38b59967b440d1ab1c6098d7d
|
|
| BLAKE2b-256 |
2b20aaa78dec7aa4b23735e2aafd610403f8ce7897a1fafcaa3435502c3e9752
|
File details
Details for the file reliq-0.0.42-cp39-cp39-manylinux2014_aarch64.whl.
File metadata
- Download URL: reliq-0.0.42-cp39-cp39-manylinux2014_aarch64.whl
- Upload date:
- Size: 146.9 kB
- Tags: CPython 3.9
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1839f43a78eb1492def7ed34471a804b8a31ad742c365288f6c3631172b6d3a8
|
|
| MD5 |
4c857db6397c5c0c063f4063128cc052
|
|
| BLAKE2b-256 |
5b6b67c815bc415d0588841414be578c6b3af33651edf78549d0afa13827c4dc
|
File details
Details for the file reliq-0.0.42-cp39-cp39-macosx_14_0_arm64.whl.
File metadata
- Download URL: reliq-0.0.42-cp39-cp39-macosx_14_0_arm64.whl
- Upload date:
- Size: 115.2 kB
- Tags: CPython 3.9, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a8dad40b8e71b6a07970b07c1abd75c0e7ef5b222ea775104049205722d691b
|
|
| MD5 |
46c04deca7a380cd7627176f2f7a1c14
|
|
| BLAKE2b-256 |
7992616d8275308eecf29b8450a0c58ad921d450c67d9bc5fd43b2259d19c678
|
File details
Details for the file reliq-0.0.42-cp39-cp39-macosx_13_0_arm64.whl.
File metadata
- Download URL: reliq-0.0.42-cp39-cp39-macosx_13_0_arm64.whl
- Upload date:
- Size: 121.1 kB
- Tags: CPython 3.9, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4b0eee7e2bb769ddfb05c545dc95041560d0e86c6852d8b606f970a12e00b9e
|
|
| MD5 |
5ae437379f6e0e4c1fc7d0fab5887ad4
|
|
| BLAKE2b-256 |
5da43f25057aca5463b75521083330d8818ac0d6002a95c049954881b9ec3b84
|
File details
Details for the file reliq-0.0.42-cp38-cp38-win_amd64.whl.
File metadata
- Download URL: reliq-0.0.42-cp38-cp38-win_amd64.whl
- Upload date:
- Size: 181.9 kB
- Tags: CPython 3.8, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7605a340c929ec8c0ac7083542455a31268308d2559297560d679cf646ac2a55
|
|
| MD5 |
fd38d30a8ef8e55da69f219dcc49c39d
|
|
| BLAKE2b-256 |
5fcd4f824c85b39b5bc693b76edc10d413e35631b6ccc6cfcb604ab9f6dfc6db
|
File details
Details for the file reliq-0.0.42-cp38-cp38-manylinux2014_x86_64.whl.
File metadata
- Download URL: reliq-0.0.42-cp38-cp38-manylinux2014_x86_64.whl
- Upload date:
- Size: 151.0 kB
- Tags: CPython 3.8
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32380f79323e28c5ae594449b78f00cfe2d1bb2c60580e21c2560473125ad329
|
|
| MD5 |
b41a1063384be67671d2a5c61655fa62
|
|
| BLAKE2b-256 |
44e61a1fd44b8bc38a6a17613f16b05b71e7f5d14e9e087d65f18a5f45168025
|
File details
Details for the file reliq-0.0.42-cp38-cp38-manylinux2014_armv7l.whl.
File metadata
- Download URL: reliq-0.0.42-cp38-cp38-manylinux2014_armv7l.whl
- Upload date:
- Size: 120.0 kB
- Tags: CPython 3.8
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa4e76fcbe3493a9cd5126dd9edad15038bcaa590a625de36fdcff355a8a90cf
|
|
| MD5 |
cc656cd76bc6147d18139c04663acfa5
|
|
| BLAKE2b-256 |
e4bbcea856f7bf19f74dd795bb39b99807356100f83f02d8ea1c74a58a7f6140
|
File details
Details for the file reliq-0.0.42-cp38-cp38-manylinux2014_aarch64.whl.
File metadata
- Download URL: reliq-0.0.42-cp38-cp38-manylinux2014_aarch64.whl
- Upload date:
- Size: 146.9 kB
- Tags: CPython 3.8
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
777bdf49334e9d63f0031fd550359e892f94def8df77319b6dc52a0768b8ed10
|
|
| MD5 |
3f3bb13d96e43411aac81cce7b06bdd4
|
|
| BLAKE2b-256 |
a2c27eb52b48bdb0f647d82c3fb9486ea50f0bab83c2556f8caece0c693f39c7
|
File details
Details for the file reliq-0.0.42-cp38-cp38-macosx_14_0_arm64.whl.
File metadata
- Download URL: reliq-0.0.42-cp38-cp38-macosx_14_0_arm64.whl
- Upload date:
- Size: 115.2 kB
- Tags: CPython 3.8, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91538e64268182109202b5abbcc9802d6aeedd21b429c31042acdfde7846dd85
|
|
| MD5 |
d87b28459ccd8b9bb95512b2287b7377
|
|
| BLAKE2b-256 |
861db60dfc79a18cfe93ef945963d25e655ace8a1963fe9cbba853777b9c11bc
|
File details
Details for the file reliq-0.0.42-cp38-cp38-macosx_13_0_arm64.whl.
File metadata
- Download URL: reliq-0.0.42-cp38-cp38-macosx_13_0_arm64.whl
- Upload date:
- Size: 121.1 kB
- Tags: CPython 3.8, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
251cdda22f643f8a9908447703170988b731c1576966073ead037df7e55aa276
|
|
| MD5 |
d15277b6683a58b03dcc653024fe327e
|
|
| BLAKE2b-256 |
62755f9fee17b97f8a24125878a5f4fa667dcf72cc4a9f44f7e5e83b37177410
|
File details
Details for the file reliq-0.0.42-cp37-cp37-win_amd64.whl.
File metadata
- Download URL: reliq-0.0.42-cp37-cp37-win_amd64.whl
- Upload date:
- Size: 181.9 kB
- Tags: CPython 3.7, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64ec426e305278bb2fafe0b18616a4d06a91d4555e023fbe67930eb13c245b53
|
|
| MD5 |
3c2f42d25288a885806bb26146b3ecf7
|
|
| BLAKE2b-256 |
e73619fc0df562b142472cf6e814cdc7b52bafd211f98dddb6c893b61963f438
|
File details
Details for the file reliq-0.0.42-cp37-cp37-manylinux2014_x86_64.whl.
File metadata
- Download URL: reliq-0.0.42-cp37-cp37-manylinux2014_x86_64.whl
- Upload date:
- Size: 151.0 kB
- Tags: CPython 3.7
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea7b85b3c5daa6213addec8b0f632b0d0176fea27e8b0415502c2125ed3a0ae1
|
|
| MD5 |
73d47334cde8f6b456d88b8d0e2502c8
|
|
| BLAKE2b-256 |
e9f69e6126cf6b3d557a8c7f0c656450112fc989c6d3ddfb85ceecbccce0ad0b
|
File details
Details for the file reliq-0.0.42-cp37-cp37-manylinux2014_armv7l.whl.
File metadata
- Download URL: reliq-0.0.42-cp37-cp37-manylinux2014_armv7l.whl
- Upload date:
- Size: 120.0 kB
- Tags: CPython 3.7
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24647baf7e8fac54b61237059c63ee6a457a22496de8684de6a851f70a1a236b
|
|
| MD5 |
066d495d7a3d20caaec77998f1dce5cf
|
|
| BLAKE2b-256 |
fd4adaf6707de7637cbfd52e2b0cdecd67da9b82118af42a55901d9dec6f0778
|
File details
Details for the file reliq-0.0.42-cp37-cp37-manylinux2014_aarch64.whl.
File metadata
- Download URL: reliq-0.0.42-cp37-cp37-manylinux2014_aarch64.whl
- Upload date:
- Size: 146.9 kB
- Tags: CPython 3.7
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0047786b17655abcbf96852eb8330dac63eae61c436943ea9fc483c1d71f189e
|
|
| MD5 |
233dfbe381cb682020fbedf77ef93ca0
|
|
| BLAKE2b-256 |
5e470902a1f056e8128f3dc85df8060a835be13a0d0ecdd7403069a24eae66c6
|
File details
Details for the file reliq-0.0.42-cp37-cp37-macosx_14_0_arm64.whl.
File metadata
- Download URL: reliq-0.0.42-cp37-cp37-macosx_14_0_arm64.whl
- Upload date:
- Size: 115.2 kB
- Tags: CPython 3.7, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8543adff0766cc84893075544a4525473b0cd6ccfd08243e714212f581ba527
|
|
| MD5 |
ea385a62011f3be29b60baba55e0ac55
|
|
| BLAKE2b-256 |
74e26a2ac5ae665fc79139f02250aa526ecefbf74bebb79759afb4799b0aa1ec
|
File details
Details for the file reliq-0.0.42-cp37-cp37-macosx_13_0_arm64.whl.
File metadata
- Download URL: reliq-0.0.42-cp37-cp37-macosx_13_0_arm64.whl
- Upload date:
- Size: 121.1 kB
- Tags: CPython 3.7, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49cef58f7242528188bde92504f9a2f8cf86715fac3db477d845623754b78822
|
|
| MD5 |
07383be465e9c5306a0611be9ce000c4
|
|
| BLAKE2b-256 |
2e9a0b3464bee5655bfbe59314fda45f49c893bb89a479934da3886e33fd5900
|