Skip to main content

Python ctypes bindings for reliq

Project description

reliq-python

A python module for reliq library.

Requirements

Installation

pip install reliq

Import

from reliq import reliq

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].attribs['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 &amp; &lt &tdot; &#212')

#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 not enforced, so incorrect script will raise exceptions from json.loads()

Import

Everything is contained inside one class

from reliq import reliq

Initialization

reliq object takes a single 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

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 occured)
  • 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__

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

attribsl -> int number of attributes


attribs -> 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

Same as search() but returns dict().

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 &nbsp; 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 &amp; &lt &tdot; &#212")
# "loop & <  ⃛⃛ Ô"

reliq.decode(r"text &amp; &lt &tdot; &#212",True)
# b'text & <  \xe2\x83\x9b\xe2\x83\x9b \xc3\x94'

reliq.decode(r"text &amp; &lt &tdot; &#212",raw=True)
# b'text & <  \xe2\x83\x9b\xe2\x83\x9b \xc3\x94'

reliq.decode('ex&nbsp;t')
# "ex t"

reliq.decode('ex&nbsp;t',no_nbsp=False)
# 'ex\xa0t'

reliq.decode('ex&nbsp;t',True,no_nbsp=False)
# b'ex\xc2\xa0t'

reliq.encode("<p>li &amp; \t 'seq' \n </p>")
# '&lt;p&gt;li &amp;amp; \t &#x27;seq&#x27; \n &lt;/p&gt;'

reliq.encode("<p>li &amp; \t 'seq' \n </p>",True)
# b'&lt;p&gt;li &amp;amp; \t &#x27;seq&#x27; \n &lt;/p&gt;'

reliq.encode("<p>li &amp; \t 'seq' \n </p>",raw=True)
# b'&lt;p&gt;li &amp;amp; \t &#x27;seq&#x27; \n &lt;/p&gt;'

reliq.encode("<p>li &amp; \t 'seq' \n </p>",full=True)
# '&lt;p&gt;li &amp;amp&semi; &Tab; &#x27;seq&#x27; &NewLine; &lt;&sol;p&gt;'

reliq.encode("<p>li &amp; \t 'seq' \n </p>",True,full=True)
# b'&lt;p&gt;li &amp;amp&semi; &Tab; &#x27;seq&#x27; &NewLine; &lt;&sol;p&gt;'

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)
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

Projects using reliq in python

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reliq-0.0.39.tar.gz (31.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

reliq-0.0.39-cp313-cp313-win_amd64.whl (177.8 kB view details)

Uploaded CPython 3.13Windows x86-64

reliq-0.0.39-cp313-cp313-manylinux2014_x86_64.whl (146.3 kB view details)

Uploaded CPython 3.13

reliq-0.0.39-cp313-cp313-manylinux2014_armv7l.whl (114.5 kB view details)

Uploaded CPython 3.13

reliq-0.0.39-cp313-cp313-manylinux2014_aarch64.whl (142.0 kB view details)

Uploaded CPython 3.13

reliq-0.0.39-cp313-cp313-macosx_14_0_arm64.whl (110.3 kB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

reliq-0.0.39-cp313-cp313-macosx_13_0_arm64.whl (115.7 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

reliq-0.0.39-cp312-cp312-win_amd64.whl (177.8 kB view details)

Uploaded CPython 3.12Windows x86-64

reliq-0.0.39-cp312-cp312-manylinux2014_x86_64.whl (146.3 kB view details)

Uploaded CPython 3.12

reliq-0.0.39-cp312-cp312-manylinux2014_armv7l.whl (114.5 kB view details)

Uploaded CPython 3.12

reliq-0.0.39-cp312-cp312-manylinux2014_aarch64.whl (142.0 kB view details)

Uploaded CPython 3.12

reliq-0.0.39-cp312-cp312-macosx_14_0_arm64.whl (110.3 kB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

reliq-0.0.39-cp312-cp312-macosx_13_0_arm64.whl (115.7 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

reliq-0.0.39-cp311-cp311-win_amd64.whl (177.8 kB view details)

Uploaded CPython 3.11Windows x86-64

reliq-0.0.39-cp311-cp311-manylinux2014_x86_64.whl (146.3 kB view details)

Uploaded CPython 3.11

reliq-0.0.39-cp311-cp311-manylinux2014_armv7l.whl (114.5 kB view details)

Uploaded CPython 3.11

reliq-0.0.39-cp311-cp311-manylinux2014_aarch64.whl (142.0 kB view details)

Uploaded CPython 3.11

reliq-0.0.39-cp311-cp311-macosx_14_0_arm64.whl (110.3 kB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

reliq-0.0.39-cp311-cp311-macosx_13_0_arm64.whl (115.7 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

reliq-0.0.39-cp310-cp310-win_amd64.whl (177.8 kB view details)

Uploaded CPython 3.10Windows x86-64

reliq-0.0.39-cp310-cp310-manylinux2014_x86_64.whl (146.3 kB view details)

Uploaded CPython 3.10

reliq-0.0.39-cp310-cp310-manylinux2014_armv7l.whl (114.5 kB view details)

Uploaded CPython 3.10

reliq-0.0.39-cp310-cp310-manylinux2014_aarch64.whl (142.0 kB view details)

Uploaded CPython 3.10

reliq-0.0.39-cp310-cp310-macosx_14_0_arm64.whl (110.3 kB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

reliq-0.0.39-cp310-cp310-macosx_13_0_arm64.whl (115.7 kB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

reliq-0.0.39-cp39-cp39-win_amd64.whl (177.8 kB view details)

Uploaded CPython 3.9Windows x86-64

reliq-0.0.39-cp39-cp39-manylinux2014_x86_64.whl (146.3 kB view details)

Uploaded CPython 3.9

reliq-0.0.39-cp39-cp39-manylinux2014_armv7l.whl (114.5 kB view details)

Uploaded CPython 3.9

reliq-0.0.39-cp39-cp39-manylinux2014_aarch64.whl (142.0 kB view details)

Uploaded CPython 3.9

reliq-0.0.39-cp39-cp39-macosx_14_0_arm64.whl (110.3 kB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

reliq-0.0.39-cp39-cp39-macosx_13_0_arm64.whl (115.7 kB view details)

Uploaded CPython 3.9macOS 13.0+ ARM64

reliq-0.0.39-cp38-cp38-win_amd64.whl (177.8 kB view details)

Uploaded CPython 3.8Windows x86-64

reliq-0.0.39-cp38-cp38-manylinux2014_x86_64.whl (146.3 kB view details)

Uploaded CPython 3.8

reliq-0.0.39-cp38-cp38-manylinux2014_armv7l.whl (114.5 kB view details)

Uploaded CPython 3.8

reliq-0.0.39-cp38-cp38-manylinux2014_aarch64.whl (142.0 kB view details)

Uploaded CPython 3.8

reliq-0.0.39-cp38-cp38-macosx_14_0_arm64.whl (110.3 kB view details)

Uploaded CPython 3.8macOS 14.0+ ARM64

reliq-0.0.39-cp38-cp38-macosx_13_0_arm64.whl (115.7 kB view details)

Uploaded CPython 3.8macOS 13.0+ ARM64

reliq-0.0.39-cp37-cp37-win_amd64.whl (177.8 kB view details)

Uploaded CPython 3.7Windows x86-64

reliq-0.0.39-cp37-cp37-manylinux2014_x86_64.whl (146.3 kB view details)

Uploaded CPython 3.7

reliq-0.0.39-cp37-cp37-manylinux2014_armv7l.whl (114.5 kB view details)

Uploaded CPython 3.7

reliq-0.0.39-cp37-cp37-manylinux2014_aarch64.whl (142.0 kB view details)

Uploaded CPython 3.7

reliq-0.0.39-cp37-cp37-macosx_14_0_arm64.whl (110.3 kB view details)

Uploaded CPython 3.7macOS 14.0+ ARM64

reliq-0.0.39-cp37-cp37-macosx_13_0_arm64.whl (115.7 kB view details)

Uploaded CPython 3.7macOS 13.0+ ARM64

File details

Details for the file reliq-0.0.39.tar.gz.

File metadata

  • Download URL: reliq-0.0.39.tar.gz
  • Upload date:
  • Size: 31.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for reliq-0.0.39.tar.gz
Algorithm Hash digest
SHA256 fc08328050e033e7c4b66a614deb05f2b931ee17986e11113eb57f7d44378e04
MD5 dc132d8e3ee0525cfe80025c84759bd3
BLAKE2b-256 9b3835ebacafacd6d38744fd0f33e4877d282b6f5d54936cff032eb69f2425c5

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: reliq-0.0.39-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 177.8 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

Hashes for reliq-0.0.39-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 57a4ebfc4abfb69a08229dc7fd718a76ec143fb743e4f7cd5110291081668196
MD5 a10d12996240b074f7b14378706ec791
BLAKE2b-256 cc90bbf81e5d85157756715ba98089abfd4617a502f3fd592e944128bd42275c

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp313-cp313-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp313-cp313-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4971b244465cc16ccb0fa4906dda12c4198a04009ef4d7adc72314083b15dc86
MD5 d058f1dc6743dd3608d4fabe140a2bd3
BLAKE2b-256 f1da3e27071de45f2c701efe398dbc6f7449114ba69dce6c8cdda9101387fa89

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp313-cp313-manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp313-cp313-manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 fee37d9475fafd3d891a0cabd581948fbc25b2e4e9975a37643268a74e128ced
MD5 22c2f3e59398cfc02fc39141e672b07f
BLAKE2b-256 134dacfa8c4074ec7c9843829b2d8ece1a969f7c773fb762e6a046c11989eb34

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp313-cp313-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp313-cp313-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e3ad5925545ad53cf10c5d8d1c010b2f9277bcd7ec702d4e4ae4b151a01ef2c7
MD5 e91baf21f3fff03a7c9a4a24b362a86c
BLAKE2b-256 eca0ba5a9f51db1d95c4ab4ae57cd90788951fd3f6d574115f0d435615262865

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 54fd4ecefc5a67f6d91a2e941ba8b3690724d908717b97549357372b276b962e
MD5 98a1d2228ca1b923ebedd585dd9e0cdc
BLAKE2b-256 16bdf4be1af32b968cd2f9859b69dd4a818489206dcdc6ddf3eb9d117e827951

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp313-cp313-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 7bb55452df1de8da20a7361b2b50930079f57d51b1790bb97311eea409797840
MD5 d76d5ccb2767776b429f8914b50ac042
BLAKE2b-256 d6a39038f2ce47884246336036bb5b6a5c5fb66ba0a9f631844cbc810b6fd0ff

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: reliq-0.0.39-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 177.8 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

Hashes for reliq-0.0.39-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 880541411cf885cdab60e263e13b6b2cf25e419ee638fb40a56a6e8482994a87
MD5 6a0aa6874318cecdaffce96e3f8401b0
BLAKE2b-256 252de4ae2d41c1a69453fac1ee1e278bab61af3431f93b9946d3a2bcc8926e01

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp312-cp312-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp312-cp312-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 970478cb8c77f3d88f61e96e854b2a07930e75e82f4edb2297361e46607ae992
MD5 43ad66a281ba2df8525375658726a174
BLAKE2b-256 64dc468710b1fcfa9dfa0b08fa2d06b1e434aab939f5c8ece40ac53437ff1d5a

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp312-cp312-manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp312-cp312-manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 6d2892fbd2a5ab4a15f7bbb569bf07ac356e3358e6e8804f27dd7ea8ad755f12
MD5 9c77d81fb03c0a291a89c6627848bf28
BLAKE2b-256 3a346a7c91db38c58cbd014d2bbcb0cfba77212862bbbfb957591964a5b609c2

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp312-cp312-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp312-cp312-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e7fcccc7de6f707a2b8f60cdd9e061f33fa871001d21a0479b158da63a488a30
MD5 ce0ee76ff092ea6bc05647d26ef866cf
BLAKE2b-256 076afb74442185cb73530b7c2a9d5ea0aa7577747306221e1204fbbadfe5a732

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 fe28fce382cd0bbe2edfb16ef08b41fbd341aa53841d3e7c9ffc8b2d15a8f985
MD5 d118d103bdd850b6c78a8849ce2ce289
BLAKE2b-256 63ae5e808cc612e1b25fcdb7968ecc0317a375000b82a23e671ea3a498415e93

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp312-cp312-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 bfd362563c812c90aff8a1ae3876ace11b854aeb9a0ffcab3e6174d4e2b85ba2
MD5 b312a2312cc61be9c570bfc2f3c13f1a
BLAKE2b-256 0fa5b859983c2c0230a8de893c67a274db4aef0c982a753db10960b89f404235

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: reliq-0.0.39-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 177.8 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

Hashes for reliq-0.0.39-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 af6c22c5999e4c0ffcec81a5072f939cd077fcd9936d40096b45b85956e760f7
MD5 3dd4866267ac4307448324120e34827e
BLAKE2b-256 3f15e991f108cae14a1acd8b1aaf873ceefaf84a06da2f17e4e1868ff0a117f4

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp311-cp311-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7417885ee12607214c61cfa22a4d9dc63e85555cdf5f2c247125ee5f1d5ad4fa
MD5 b7ccb6400219a935247f9b7c61b054ff
BLAKE2b-256 66abe8935174733ac674b62da44f153bfbbe5a90b7587c63c6037b2f9e31ceee

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp311-cp311-manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp311-cp311-manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 137c5e34472ba7f25be9869043d40637e72dc4b7a06013f4f6780e8cff88a03c
MD5 2ef69dcf6420d5147d19de6c0cd73c5c
BLAKE2b-256 339c5323abc3bfcf00ed6e1ee7d9021fd6671d606478c14da6f8a7ea45b84ffe

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp311-cp311-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp311-cp311-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8496223341c7d9808b17a959695c0f1d5860fe1ff21dcb7c5df47eb9e270f867
MD5 5b81364801cb2174144725c2f7dcc2b2
BLAKE2b-256 3c9f1c49563c40e059abaacd4e25edbe85bba25a3053fa085e86b51b4685847c

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7b5fcc6b2422d81d4a7716348ba1ba6d1d47552afad2bfe52b0f310a79c85566
MD5 0dd6e649cfe027326efd342ab8359aa9
BLAKE2b-256 6d26b8e59f1b8b27771be932c6a5fa745cdb82552f47d54551ff61ef8e3353c1

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 c2834785745b550eb3ea60c1e100b255d67c29aa40b7a820d712904e522a4408
MD5 adc0cd992d06b88003f15a6a99fb3f4c
BLAKE2b-256 c9f25d093b7b81ac101d1fee0986f24f8cace2d4075e9dfe62de789314be0373

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: reliq-0.0.39-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 177.8 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

Hashes for reliq-0.0.39-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ef877a04787208fac5585c6b3faf2d8c7ea478855e812daa4584c9c0c5ad07f1
MD5 d5e904b53098f835d7d02dc1bacd989c
BLAKE2b-256 f43180f39169c47be8fc414800f96784e315431382527db4c2c8f82e6b6d9ea7

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp310-cp310-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp310-cp310-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d14aa998841456481076c39b9d8896ce9d380049a2480ef0e8b482049d703156
MD5 8ccf0c9057341afa737584bb424b6a6e
BLAKE2b-256 44de09172caf7deee836047c0219949ba15501d3b8f6bf053e04186d2f0724a7

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp310-cp310-manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp310-cp310-manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 d25ed224ffbe2841a270b80c5cd9e341d02a923177a32ebf99c7a4356e63a34e
MD5 37a2e566e1cf0e551ecd125c4db94f2c
BLAKE2b-256 56aafed6dcb273a25ece0aa60c625e64d5c0ad31afd3749905e474ef9c45d23b

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp310-cp310-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp310-cp310-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fdeed4a62a05a2e563205941ace38fcda7df78fe8d3a8161722c49e8b4c30d5f
MD5 8ab0d4b05e278521f2eff28552883cc2
BLAKE2b-256 314cb384456316f70788e58808d387bd12685cda03580f93652c56a1fa5ff569

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7148a0ad56d25baeecdf41788fd07aa58ee3bd2b99d5f1caefad0b771d7f608c
MD5 fc6d9f190e2e7132b9cd42707ba498b3
BLAKE2b-256 27c2d2e10694b8c19a2e6c9fa01eaad23e9d942825118c4012668eb3295a8c5d

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp310-cp310-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 d00855a824f8a35acbbdb61e88e8f3fa24ec53be500720831fc429d3cdc5ff4c
MD5 4fd2e58cbfd7dfbebbfa8079722d68d7
BLAKE2b-256 aacf3a6da4ac8e2d83d2fdd7657e2c64de76e1b473d77628a65966c45a050814

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: reliq-0.0.39-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 177.8 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

Hashes for reliq-0.0.39-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 36ae751e369e06ef43bc03b61c526e6d5123612b82c49efc8e826707335ca210
MD5 34febce65adbff634941bbb18ebc8d24
BLAKE2b-256 3a67fc9dc8e7fdf6517716d700b90da17f3e699fb857a6001ade87273da1310e

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d11deb9365212c9a0d76f490ad108ee98486fbde0a92a69672a28f47cdb7ecb5
MD5 6ce1928b9dafc5117b2c54a64968e305
BLAKE2b-256 fb628244624214b6c5ab583b661ba01d4ed1e7c43dd17935ab29e9c653b46510

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp39-cp39-manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp39-cp39-manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 dfb422a94903ae80c54995eedf02925d37beb950150a66ba03a96f22e6eee9f1
MD5 6a80357e7243504ae20b62a4b5ea112d
BLAKE2b-256 99f2bef254652e6d9e9ceafaabaeccee4f1c48174476fcc33dfef2c847eb537b

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp39-cp39-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp39-cp39-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 be6206836712538801ee2ef70b84b4efae113abfba781d7c49ec3de02e7dd56b
MD5 1319081dc666c53998eef42914897bbc
BLAKE2b-256 ae07c552c4160fd9a8117c5b36ea5ddd39a59d92414f629a378549b5270dd862

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 5ca9d8cb26af1579829b8ebbfe5a10b760af628815e5b590f8efce58a884698b
MD5 4bd0cffecaa02b99e579fbcbd6332def
BLAKE2b-256 ff156373bc230f53c78a4456ef67fb052ba27c819d77ff08c18d987ee5cff743

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp39-cp39-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp39-cp39-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 9f182fda4fe242eb1989e4c7134329ede300d49d6b2a834bb5988cb2b0565821
MD5 05e62808608c101c72d0482986454cdc
BLAKE2b-256 e7ab1c7f2df3c070e11a7e7fbf1c1efc2924d6faa32b17b2284e9ea89c171598

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: reliq-0.0.39-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 177.8 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

Hashes for reliq-0.0.39-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 61f18a2e1a0a75d8f28ed3e57cc1266584e7947575e1bcae43e2c03391353040
MD5 f62f223480c90df5677bb3f7d6f9eb30
BLAKE2b-256 a82936acb8390f6b3b27c39590d2c7d26dfc976c7e116552bf5ff6ff55d45b0f

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 667596ecc09854906173bf0035793d624f0a8fb8ace45e83b6080db3d65d7f95
MD5 d55bfe12ffd4d22622c46da4044d5c84
BLAKE2b-256 2dd3054d89e2cdb52ff46ee3c30defa8c036a28cf27076f352e232f0b07455d6

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp38-cp38-manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp38-cp38-manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 acbe72e60a57ad0ac4b8cb7013619b3f9098d75e2d48a2551e059d0ea3f98e3b
MD5 5c169d53f5a5275036145da2960a2acc
BLAKE2b-256 6604e09bd26806e9d414be53dc74a25f3daa3f222a0a1c92a29b7b63bcbaf4f4

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp38-cp38-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp38-cp38-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f5e540ae009856ba317daa45fb9ba029baa49a15c76bdd27ad07706da21765cf
MD5 fc4fd1b0118ed0615446aeda72bb000c
BLAKE2b-256 b4634ccef6e37450a5207d392b623e2c960af15ffe59b4523e4b387fa6d172b6

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp38-cp38-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp38-cp38-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 ab0f0eb479f3037d4c1d9f313c5814e2dc9d7d59f0ac608f292d3e0113c99d9b
MD5 8b2114c6b5c68a0a5d49ab678b15248e
BLAKE2b-256 024b1d95c463f60e0de1d675c789e53452f2abab4a11a1f0d7cbdfde3021ff40

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp38-cp38-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp38-cp38-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 049614ff25370547b71cdb40adc5af79179d03292c8bf8c8a5a16b4ff8417279
MD5 79a049d1bcdb8a4358566e54c77d9308
BLAKE2b-256 e0c313f4d5c513a06237391711f0ba411988e78c19ed4efb4311fefea22f01ca

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp37-cp37-win_amd64.whl.

File metadata

  • Download URL: reliq-0.0.39-cp37-cp37-win_amd64.whl
  • Upload date:
  • Size: 177.8 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

Hashes for reliq-0.0.39-cp37-cp37-win_amd64.whl
Algorithm Hash digest
SHA256 347b61d972bf24c844f2cbdfdb7f2ca3fadb91320c227506dd98fb602ddba246
MD5 6c9f75473a981b7abcecaee41266695b
BLAKE2b-256 71e717685cd910ec6706fa9775dbeaf01b6924f38d339d39a1abb1f0f5a0d666

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp37-cp37-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp37-cp37-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c16c5ebcdd22419c60c44622f68d08ea885c2465216d9387028d4dd04381bd22
MD5 f5c970fd2e55638d0aafc7a117d2ae2f
BLAKE2b-256 db8baa99631f14e605cda6d3d18cc0de8106640553ce484b270af0770285deb1

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp37-cp37-manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp37-cp37-manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 3423603546a659084d0e04b3a93d4d880a4ffaf13cbc4b5ebb9fc28447b88250
MD5 a66abbf3ca92f8d7818323d4f5113d7f
BLAKE2b-256 def1e07e082a976191796883aa22f051a6d86570157929d03d380952317bb80b

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp37-cp37-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp37-cp37-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0c6e4894c97ee5c2e8067aebc91cdd49a2cd281c10f51386ace5554b885df635
MD5 6b9a04265aadf24e94f17dc11113ce61
BLAKE2b-256 a4946db7d02bbf5fb10492b10d96174009f19c4a66854587021bc7ddb27edf07

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp37-cp37-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp37-cp37-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 39ce6f47a045350dd2275f58870dbd4ea4ffce07368f4dc6d9d1f22ff6b37910
MD5 2df66cea800e9eb7bdbcc11617c5d6aa
BLAKE2b-256 e499e0412f44d3ea114ed74460d5685dca8a079e9207ee99c75646ca9e4f5649

See more details on using hashes here.

File details

Details for the file reliq-0.0.39-cp37-cp37-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for reliq-0.0.39-cp37-cp37-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 ced7187b848e3a171b0890fbc9772407fea31451e0c8037bc10fc68d5070d929
MD5 dfb1623854dcbeea82fd9a5d968eab4f
BLAKE2b-256 c1b06e9e9d14604cc7e9cbc7323eb5e3c8265453d0e56d6161e62f073a8c1b84

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page