Skip to main content

ry = rust + python kitchen sink utils (WIP)

Project description

ry

PyPI PyPI - Python Version PyPI - Wheel PyPI - Downloads PyPI - Status PyPI - License

python bindings for rust crates I wish existed in python

THIS IS A WORK IN PROGRESS

Install

pip install ry
poetry add ry
pdm add ry
rye add ry

Check install: python -m ry

What and why?

This is a collection of pyo3-wrappers for rust crates I wish existed in python.

It all started with me wanting a fast python xxhash and fnv-64

Who?

FAQ

(aka: questions that I have been asking myself)

  • Q: Why?
    • A: I (jesse) needed several hashing functions for python and then kept adding things as I needed them
  • Q: Does this have anything to do with the (excellent) package manager rye?
    • A: short answer: no. long answer: no, it does not.
  • Q: Why is the repo split into ry and ryo3?
    • A: ry is the python package, ryo3 is a rust crate setup to let you "register" functions you may want if you were writing your own pyo3-python bindings library; maybe someday the ryo3::libs module will be split up into separate packages

Crate bindings

  • brotli
  • bzip2
  • flate2
  • fnv
  • shlex
  • walkdir
  • which
  • xxhash
  • globset (formerly globsters)
  • zstd
  • sqlformat
  • TBD:
    • subprocess.redo (subprocesses that are lessy finicky and support tee-ing)
    • regex
    • tokio (fs + process)
    • tracing (could be nicer than python's awful logging lib -- currently a part of ry/ryo3 for my dev purposes - currently has impl thingy in utiles)
    • reqwest (async http client / waiting on pyo3 asyncio to stablize and for me to have more time)

API

"""ry api ~ type annotations"""

import datetime as pydatetime
import typing as t
from collections.abc import Iterator
from os import PathLike

from ry._types.jiff import JIFF_ROUND_MODE_STRING, JIFF_UNIT_STRING

__version__: str
__authors__: str
__build_profile__: str
__build_timestamp__: str
__pkg_name__: str
__description__: str

# ==============================================================================
# TYPE ALIASES
# ==============================================================================
JsonPrimitive = None | bool | int | float | str
JsonValue = (
  JsonPrimitive | dict[str, JsonPrimitive | JsonValue] | list[JsonPrimitive | JsonValue]
)

# ==============================================================================
# STD
# ==============================================================================


class Duration:
  def __init__(self, seconds: int, nanoseconds: int) -> None: ...
  def __str__(self) -> str: ...
  def __repr__(self) -> str: ...


# ==============================================================================
# RY03-CORE
# ==============================================================================


class FsPath:
  def __init__(self, path: PathLike[str] | str | None = None) -> None: ...
  def __fspath__(self) -> str: ...
  def __str__(self) -> str: ...
  def __repr__(self) -> str: ...
  def __eq__(self, other: object) -> bool: ...
  def __ne__(self, other: object) -> bool: ...
  def read_text(self) -> str: ...
  def read_bytes(self) -> bytes: ...
  def absolute(self) -> FsPath: ...
  @property
  def parent(self) -> FsPath: ...


FsPathLike = str | FsPath | PathLike[str]


def pwd() -> str: ...
def home() -> str: ...
def cd(path: FsPathLike) -> None: ...
def ls(path: FsPathLike | None = None) -> list[FsPath]: ...
def quick_maths() -> t.Literal[3]:
  """Performs quick-maths

  Implements the algorithm for performing "quick-maths" as described by
  Big Shaq in his PHD thesis, 2017, in which he states:

  > "2 plus 2 is 4, minus one that's 3, quick maths." (Big Shaq et al., 2017)

  Reference:
      https://youtu.be/3M_5oYU-IsU?t=60

  Example:
      >>> result = quick_maths()
      >>> assert result == 3

  NOTE: THIS IS FROM MY TEMPLATE RY03-MODULE
  """


# ==============================================================================
# SLEEP
# ==============================================================================
def sleep(seconds: float) -> float: ...


# ==============================================================================
# FILESYSTEM
# ==============================================================================
def read_text(path: FsPathLike) -> str: ...
def read_bytes(path: FsPathLike) -> bytes: ...
def write_text(path: FsPathLike, data: str) -> None: ...
def write_bytes(path: FsPathLike, data: bytes) -> None: ...


# ==============================================================================
# SUBPROCESS (VERY MUCH WIP)
# ==============================================================================
def run(
  *args: str | list[str],
  capture_output: bool = True,
  input: bytes | None = None,
) -> t.Any: ...


# ==============================================================================
# DEV
# ==============================================================================


def string_noop(s: str) -> str: ...
def bytes_noop(s: bytes) -> bytes: ...


# ------------------------------------------------------------------------------
# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
# /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
# ------------------------------------------------------------------------------
# ~ LIBS ~ LIBS ~ LIBS ~ LIBS ~ LIBS ~ LIBS ~ LIBS ~ LIBS ~ LIBS ~ LIBS ~ LIBS ~
# ------------------------------------------------------------------------------
# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
# /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
# ------------------------------------------------------------------------------


# ==============================================================================
# WHICH
# ==============================================================================
def which(cmd: str, path: None | str = None) -> str | None: ...
def which_all(cmd: str, path: None | str = None) -> list[str]: ...
def whicha(cmd: str, path: None | str = None) -> list[str]:
  """Alias for which_all (may go away in the future)"""


# ==============================================================================
# GLOBSET
# ==============================================================================
class Glob:
  """globset::Glob wrapper"""

  def __init__(
    self,
    pattern: str,
    /,
    *,
    case_insensitive: bool | None = None,
    literal_separator: bool | None = None,
    backslash_escape: bool | None = None,
  ) -> None: ...
  def regex(self) -> str: ...
  def is_match(self, path: str) -> bool: ...
  def __call__(self, path: str) -> bool: ...
  def __invert__(self) -> Glob: ...
  def __str__(self) -> str: ...
  def __repr__(self) -> str: ...


class GlobSet:
  """globset::GlobSet wrapper"""

  def __init__(
    self,
    patterns: list[str],
    /,
    *,
    case_insensitive: bool | None = None,
    literal_separator: bool | None = None,
    backslash_escape: bool | None = None,
  ) -> None: ...
  def is_empty(self) -> bool: ...
  def is_match(self, path: str) -> bool: ...
  def matches(self, path: str) -> list[int]: ...
  def __call__(self, path: str) -> bool: ...
  def __invert__(self) -> GlobSet: ...
  def __str__(self) -> str: ...
  def __repr__(self) -> str: ...


class Globster:
  """Globster is a matcher with claws!

  Note: The north american `Globster` is similar to the european `Globset`
        but allows for negative patterns (prefixed with '!')

  """

  def __init__(
    self,
    patterns: list[str],
    /,
    *,
    case_insensitive: bool | None = None,
    literal_separator: bool | None = None,
    backslash_escape: bool | None = None,
  ) -> None: ...
  def is_empty(self) -> bool: ...
  def is_match(self, path: str) -> bool: ...
  def __call__(self, path: str) -> bool: ...
  def __invert__(self) -> GlobSet: ...
  def __str__(self) -> str: ...
  def __repr__(self) -> str: ...


def glob(
  pattern: str,
  /,
  *,
  case_insensitive: bool | None = None,
  literal_separator: bool | None = None,
  backslash_escape: bool | None = None,
) -> Glob: ...
def globs(
  patterns: list[str],
  /,
  *,
  case_insensitive: bool | None = None,
  literal_separator: bool | None = None,
  backslash_escape: bool | None = None,
) -> Globster: ...


# ==============================================================================
# WALKDIR
# ==============================================================================


class WalkdirGen:
  """walkdir::Walkdir iterable wrapper"""

  files: bool
  dirs: bool

  def __next__(self) -> str: ...
  def __iter__(self) -> Iterator[str]: ...


class FspathsGen:
  """walkdir iterable that yields FsPath objects"""

  files: bool
  dirs: bool

  def __next__(self) -> FsPath: ...
  def __iter__(self) -> Iterator[FsPath]: ...


def walkdir(
  path: FsPathLike | None = None,
  files: bool = True,
  dirs: bool = True,
  contents_first: bool = False,
  min_depth: int = 0,
  max_depth: int | None = None,
  follow_links: bool = False,
  same_file_system: bool = False,
) -> WalkdirGen: ...
def fspaths(
  path: FsPathLike | None = None,
  files: bool = True,
  dirs: bool = True,
  contents_first: bool = False,
  min_depth: int = 0,
  max_depth: int | None = None,
  follow_links: bool = False,
  same_file_system: bool = False,
) -> WalkdirGen: ...


# ==============================================================================
# SHLEX
# ==============================================================================
def shplit(s: str) -> list[str]:
  """shlex::split wrapper much like python's stdlib shlex.split but faster"""
  ...


# ==============================================================================
# JSON
# ==============================================================================
def parse_json(
  data: bytes | str,
  /,
  *,
  allow_inf_nan: bool = True,
  cache_mode: t.Literal[True, False, "all", "keys", "none"] = "all",
  partial_mode: t.Literal[True, False, "off", "on", "trailing-strings"] = False,
  catch_duplicate_keys: bool = False,
  float_mode: t.Literal["float", "decimal", "lossless-float"] = "float",
) -> JsonValue: ...
def parse_json_bytes(
  data: bytes,
  /,
  *,
  allow_inf_nan: bool = True,
  cache_mode: t.Literal[True, False, "all", "keys", "none"] = "all",
  partial_mode: t.Literal[True, False, "off", "on", "trailing-strings"] = False,
  catch_duplicate_keys: bool = False,
  float_mode: t.Literal["float", "decimal", "lossless-float"] = "float",
) -> JsonValue: ...
def parse_json_str(
  data: str,
  /,
  *,
  allow_inf_nan: bool = True,
  cache_mode: t.Literal[True, False, "all", "keys", "none"] = "all",
  partial_mode: t.Literal[True, False, "off", "on", "trailing-strings"] = False,
  catch_duplicate_keys: bool = False,
  float_mode: t.Literal["float", "decimal", "lossless-float"] = "float",
) -> JsonValue: ...
def jiter_cache_clear() -> None: ...
def jiter_cache_usage() -> int: ...


# ==============================================================================
# FORMATTING
# ==============================================================================
def fmt_nbytes(nbytes: int) -> str: ...


# ==============================================================================
# FNV
# ==============================================================================
class FnvHasher:
  def __init__(self, input: bytes | None = None) -> None: ...
  def update(self, input: bytes) -> None: ...
  def digest(self) -> int: ...
  def hexdigest(self) -> str: ...
  def copy(self) -> FnvHasher: ...
  def __str__(self) -> str: ...
  def __repr__(self) -> str: ...


def fnv1a(input: bytes) -> FnvHasher: ...


# ==============================================================================
# DEV
# ==============================================================================
def anystr_noop(s: t.AnyStr) -> t.AnyStr: ...


# ==============================================================================
# BROTLI
# ==============================================================================
def brotli_encode(
  input: bytes, quality: int = 11, magic_number: bool = False
) -> bytes: ...
def brotli_decode(input: bytes) -> bytes: ...
def brotli(input: bytes, quality: int = 11, magic_number: bool = False) -> bytes:
  """Alias for brotli_encode"""


# ==============================================================================
# BZIP2
# ==============================================================================
def bzip2_encode(input: bytes, quality: int = 9) -> bytes: ...
def bzip2_decode(input: bytes) -> bytes: ...
def bzip2(input: bytes, quality: int = 9) -> bytes:
  """Alias for bzip2_encode"""


# ==============================================================================
# GZIP
# ==============================================================================
def gzip_encode(input: bytes, quality: int = 9) -> bytes: ...
def gzip_decode(input: bytes) -> bytes: ...
def gzip(input: bytes, quality: int = 9) -> bytes:
  """Alias for gzip_encode"""


def gunzip(input: bytes) -> bytes:
  """Alias for gzip_decode"""


# ==============================================================================
# ZSTD
# ==============================================================================
def zstd_encode(input: bytes, level: int = 3) -> bytes: ...
def zstd(input: bytes, level: int = 3) -> bytes:
  """Alias for zstd_encode"""


def zstd_decode(input: bytes) -> bytes: ...


# ==============================================================================
# XXHASH
# ==============================================================================
@t.final
class Xxh32:
  def __init__(self, input: bytes = ..., seed: int | None = ...) -> None: ...
  def update(self, input: bytes) -> None: ...
  def digest(self) -> bytes: ...
  def hexdigest(self) -> str: ...
  def intdigest(self) -> int: ...
  def copy(self) -> Xxh32: ...
  def reset(self, seed: int | None = ...) -> None: ...
  @property
  def name(self) -> str: ...
  @property
  def seed(self) -> int: ...


@t.final
class Xxh64:
  def __init__(self, input: bytes = ..., seed: int | None = ...) -> None: ...
  def update(self, input: bytes) -> None: ...
  def digest(self) -> bytes: ...
  def hexdigest(self) -> str: ...
  def intdigest(self) -> int: ...
  def copy(self) -> Xxh32: ...
  def reset(self, seed: int | None = ...) -> None: ...
  @property
  def name(self) -> str: ...
  @property
  def seed(self) -> int: ...


@t.final
class Xxh3:
  def __init__(
    self, input: bytes = ..., seed: int | None = ..., secret: bytes | None = ...
  ) -> None: ...
  def update(self, input: bytes) -> None: ...
  def digest(self) -> bytes: ...
  def hexdigest(self) -> str: ...
  def intdigest(self) -> int: ...
  @property
  def name(self) -> str: ...
  @property
  def seed(self) -> int: ...
  def digest128(self) -> bytes: ...
  def hexdigest128(self) -> str: ...
  def intdigest128(self) -> int: ...
  def copy(self) -> Xxh3: ...
  def reset(self) -> None: ...


def xxh32(input: bytes | None = None, seed: int | None = None) -> Xxh32: ...
def xxh64(input: bytes | None = None, seed: int | None = None) -> Xxh64: ...
def xxh3(
  input: bytes | None = None, seed: int | None = None, secret: bytes | None = None
) -> Xxh3: ...


# xxh32
def xxh32_digest(input: bytes, seed: int | None = None) -> bytes: ...
def xxh32_hexdigest(input: bytes, seed: int | None = None) -> str: ...
def xxh32_intdigest(input: bytes, seed: int | None = None) -> int: ...


# xxh64
def xxh64_digest(input: bytes, seed: int | None = None) -> bytes: ...
def xxh64_hexdigest(input: bytes, seed: int | None = None) -> str: ...
def xxh64_intdigest(input: bytes, seed: int | None = None) -> int: ...


# xxh128
def xxh128_digest(input: bytes, seed: int | None = None) -> bytes: ...
def xxh128_hexdigest(input: bytes, seed: int | None = None) -> str: ...
def xxh128_intdigest(input: bytes, seed: int | None = None) -> int: ...


# xxh3
def xxh3_64_digest(input: bytes, seed: int | None = None) -> bytes: ...
def xxh3_64_intdigest(input: bytes, seed: int | None = None) -> int: ...
def xxh3_64_hexdigest(input: bytes, seed: int | None = None) -> str: ...
def xxh3_digest(input: bytes, seed: int | None = None) -> bytes: ...
def xxh3_intdigest(input: bytes, seed: int | None = None) -> int: ...
def xxh3_hexdigest(input: bytes, seed: int | None = None) -> str: ...


# xxh128
def xxh3_128_digest(input: bytes, seed: int | None = None) -> bytes: ...
def xxh3_128_intdigest(input: bytes, seed: int | None = None) -> int: ...
def xxh3_128_hexdigest(input: bytes, seed: int | None = None) -> str: ...


# ==============================================================================
# SQLFORMAT
# ==============================================================================
SqlfmtParamValue = str | int | float
TSqlfmtParamValue_co = t.TypeVar(
  "TSqlfmtParamValue_co", str, int, float, covariant=True
)
TSqlfmtParamsLike = (
  dict[str, TSqlfmtParamValue_co]
  | list[tuple[str, TSqlfmtParamValue_co]]
  | list[TSqlfmtParamValue_co]
)
# This maddness for mypy while TSqlfmtParamValue does not work...
# TODO: FIX THIS MADDNESS
SqlfmtParamsLikeExpanded = (
  dict[str, int]
  | dict[str, str]
  | dict[str, float]
  | dict[str, int | str]
  | dict[str, int | float]
  | dict[str, str | float]
  | dict[str, str | int | float]
  | list[tuple[str, int]]
  | list[tuple[str, str]]
  | list[tuple[str, float]]
  | list[tuple[str, int | str]]
  | list[tuple[str, int | float]]
  | list[tuple[str, str | float]]
  | list[tuple[str, str | int | float]]
  | list[int]
  | list[str]
  | list[float]
  | list[int | str]
  | list[int | float]
  | list[str | float]
  | list[str | int | float]
)


class SqlfmtQueryParams:
  def __init__(self, params: SqlfmtParamsLikeExpanded) -> None: ...
  def __str__(self) -> str: ...
  def __repr__(self) -> str: ...


def sqlfmt_params(
  params: SqlfmtParamsLikeExpanded | SqlfmtQueryParams,
) -> SqlfmtQueryParams: ...
def sqlfmt(
  sql: str,
  params: SqlfmtParamsLikeExpanded | SqlfmtQueryParams | None = None,
  *,
  indent: int = 2,  # -1 or any negative value will use tabs
  uppercase: bool | None = True,
  lines_between_statements: int = 1,
) -> str: ...


# ==============================================================================
# JIFF
# ==============================================================================


class Date:
  def __init__(self, year: int, month: int, day: int) -> None: ...
  def __str__(self) -> str: ...
  def __repr__(self) -> str: ...
  def at(self, hour: int, minute: int, second: int, nanosecond: int) -> DateTime: ...
  def year(self) -> int: ...
  def month(self) -> int: ...
  def day(self) -> int: ...
  def to_pydate(self) -> pydatetime.date: ...
  @classmethod
  def from_pydate(cls: type[Date], date: pydatetime.date) -> Date: ...
  def astuple(self) -> tuple[int, int, int]: ...
  def asdict(self) -> dict[str, int]: ...


class Time:
  def __init__(
    self, hour: int = 0, minute: int = 0, second: int = 0, nanosecond: int = 0
  ) -> None: ...
  def __str__(self) -> str: ...
  def __repr__(self) -> str: ...
  def second(self) -> int: ...
  def millisecond(self) -> int: ...
  def microsecond(self) -> int: ...
  def nanosecond(self) -> int: ...
  def to_pytime(self) -> pydatetime.time: ...
  @classmethod
  def from_pytime(cls: type[Time], time: pydatetime.time) -> Time: ...
  def astuple(self) -> tuple[int, int, int, int]: ...
  def asdict(self) -> dict[str, int]: ...


class DateTime:
  def __init__(
    self,
    year: int,
    month: int,
    day: int,
    hour: int = 0,
    minute: int = 0,
    second: int = 0,
    nanosecond: int = 0,
  ) -> None: ...
  def __str__(self) -> str: ...
  def __repr__(self) -> str: ...
  def intz(self, tz: str) -> Zoned: ...


class TimeZone:
  def __init__(self, name: str) -> None: ...
  def __str__(self) -> str: ...
  def __repr__(self) -> str: ...


class SignedDuration:
  def __init__(self, secs: int, nanos: int) -> None: ...


class Span:
  def __init__(
    self,
  ) -> None: ...
  def __str__(self) -> str: ...
  def string(self) -> str: ...
  def __repr__(self) -> str: ...
  def __neg__(self) -> Span: ...
  def __invert__(self) -> Span: ...
  @classmethod
  def parse(cls: type[Span], s: str) -> Span: ...
  def years(self, years: int) -> Span: ...
  def months(self, months: int) -> Span: ...
  def weeks(self, weeks: int) -> Span: ...
  def days(self, days: int) -> Span: ...
  def hours(self, hours: int) -> Span: ...
  def minutes(self, minutes: int) -> Span: ...
  def seconds(self, seconds: int) -> Span: ...
  def to_jiff_duration(self, relative: Zoned | Date | DateTime) -> SignedDuration: ...


class Timestamp:
  """
  A representation of a timestamp with second and nanosecond precision.
  """

  def __init__(
    self, second: int | None = None, nanosecond: int | None = None
  ) -> None: ...
  @classmethod
  def now(cls: type[Timestamp]) -> Timestamp: ...
  @classmethod
  def parse(cls: type[Timestamp], s: str) -> Timestamp: ...
  @classmethod
  def from_millisecond(cls: type[Timestamp], millisecond: int) -> Timestamp: ...
  def to_zoned(self, time_zone: TimeZone) -> Zoned: ...
  def string(self) -> str: ...
  def as_second(self) -> int: ...
  def as_microsecond(self) -> int: ...
  def as_millisecond(self) -> int: ...
  def as_nanosecond(self) -> int: ...
  def __str__(self) -> str: ...
  def __repr__(self) -> str: ...
  def __richcmp__(self, other: Timestamp, op: int) -> bool: ...


class Zoned:
  def __init__(self, timestamp: Timestamp, time_zone: TimeZone) -> None: ...
  @classmethod
  def now(cls: type[Zoned]) -> Zoned: ...
  @classmethod
  def parse(cls: type[Zoned], s: str) -> Zoned: ...
  def __str__(self) -> str: ...
  def string(self) -> str: ...
  @classmethod
  def strptime(cls: type[Zoned], format: str, input: str) -> Zoned: ...
  def strftime(self, format: str) -> str: ...
  def __richcmp__(self, other: Zoned, op: int) -> bool: ...
  def __eq__(self, other: object) -> bool: ...
  def __ne__(self, other: object) -> bool: ...
  def __lt__(self, other: object) -> bool: ...
  def __le__(self, other: object) -> bool: ...
  def __gt__(self, other: object) -> bool: ...
  def __ge__(self, other: object) -> bool: ...
  def __hash__(self) -> int: ...
  def __sub__(self, other: Zoned) -> Span: ...
  def intz(self, tz: str) -> Zoned: ...
  def checked_add(self, span: Span) -> Zoned: ...
  def round(self, options: JIFF_UNIT_STRING | DateTimeRound) -> Zoned: ...


class DateTimeRound:
  def __init__(
    self,
    smallest: JIFF_UNIT_STRING | None = None,
    mode: JIFF_ROUND_MODE_STRING | None = None,
    increment: int = 1,
  ) -> None: ...
  def __str__(self) -> str: ...
  def __repr__(self) -> str: ...
  def __eq__(self, other: object) -> bool: ...
  def mode(self, mode: JIFF_ROUND_MODE_STRING) -> DateTimeRound: ...
  def smallest(self, smallest: JIFF_UNIT_STRING) -> DateTimeRound: ...
  def increment(self, increment: int) -> DateTimeRound: ...
  def _smallest(self) -> JIFF_UNIT_STRING: ...
  def _mode(self) -> JIFF_ROUND_MODE_STRING: ...
  def _increment(self) -> int: ...
  def replace(
    self,
    smallest: JIFF_UNIT_STRING | None,
    mode: JIFF_ROUND_MODE_STRING | None,
    increment: int | None,
  ) -> DateTimeRound: ...


def date(year: int, month: int, day: int) -> Date: ...
def time(
  hour: int = 0, minute: int = 0, second: int = 0, nanosecond: int = 0
) -> Time: ...
def datetime(
  year: int,
  month: int,
  day: int,
  hour: int = 0,
  minute: int = 0,
  second: int = 0,
  nanosecond: int = 0,
) -> DateTime: ...

DEV

  • just is used to run tasks
  • Do not use the phrase blazing fast or any emojis in any PRs or issues or docs
  • type annotations are required
  • ruff used for formatting and linting

SEE ALSO

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

ry-0.0.14.tar.gz (96.1 kB view details)

Uploaded Source

Built Distributions

ry-0.0.14-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

ry-0.0.14-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (3.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686

ry-0.0.14-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.9 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

ry-0.0.14-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.8 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

ry-0.0.14-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.9 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

ry-0.0.14-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.8 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

ry-0.0.14-cp312-none-win_amd64.whl (2.9 MB view details)

Uploaded CPython 3.12 Windows x86-64

ry-0.0.14-cp312-none-win32.whl (2.8 MB view details)

Uploaded CPython 3.12 Windows x86

ry-0.0.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

ry-0.0.14-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (3.2 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

ry-0.0.14-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.9 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

ry-0.0.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

ry-0.0.14-cp312-cp312-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

ry-0.0.14-cp312-cp312-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.12 macOS 10.12+ x86-64

ry-0.0.14-cp311-none-win_amd64.whl (2.9 MB view details)

Uploaded CPython 3.11 Windows x86-64

ry-0.0.14-cp311-none-win32.whl (2.8 MB view details)

Uploaded CPython 3.11 Windows x86

ry-0.0.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

ry-0.0.14-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (3.2 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

ry-0.0.14-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.9 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

ry-0.0.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

ry-0.0.14-cp311-cp311-macosx_11_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

ry-0.0.14-cp311-cp311-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.11 macOS 10.12+ x86-64

ry-0.0.14-cp310-none-win_amd64.whl (2.9 MB view details)

Uploaded CPython 3.10 Windows x86-64

ry-0.0.14-cp310-none-win32.whl (2.8 MB view details)

Uploaded CPython 3.10 Windows x86

ry-0.0.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

ry-0.0.14-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (3.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

ry-0.0.14-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.9 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

ry-0.0.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

ry-0.0.14-cp310-cp310-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

ry-0.0.14-cp310-cp310-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.10 macOS 10.12+ x86-64

ry-0.0.14-cp39-none-win_amd64.whl (2.9 MB view details)

Uploaded CPython 3.9 Windows x86-64

ry-0.0.14-cp39-none-win32.whl (2.8 MB view details)

Uploaded CPython 3.9 Windows x86

ry-0.0.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

ry-0.0.14-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (3.2 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

ry-0.0.14-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

ry-0.0.14-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

ry-0.0.14-cp39-cp39-macosx_11_0_arm64.whl (2.7 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

ry-0.0.14-cp39-cp39-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.9 macOS 10.12+ x86-64

File details

Details for the file ry-0.0.14.tar.gz.

File metadata

  • Download URL: ry-0.0.14.tar.gz
  • Upload date:
  • Size: 96.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for ry-0.0.14.tar.gz
Algorithm Hash digest
SHA256 fdd990ffd92a0954578901b6d453779e8f73546d1376205b17c3205d29b7adf4
MD5 a0dc4d33b972585be3f724695bc483bb
BLAKE2b-256 b6b42d678a0e2a201ac48410d32fb64d44e643c517e19151bd937e525e49b12c

See more details on using hashes here.

File details

Details for the file ry-0.0.14-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a020dbdd2a9b61ccb05e6fa65845e1eddf135d90974f76708e4e7fa41453cf71
MD5 111f0a3cc7bdac61e36e6ebe5b1f2bc1
BLAKE2b-256 74cef2af98c7a21ee848724d362403a3700a4332c251949ee150912a4f6c095f

See more details on using hashes here.

File details

Details for the file ry-0.0.14-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ry-0.0.14-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c9f313f35c4b420d97db7c791114d9c8472a48b7e4ac8870a884722d6e9f67c8
MD5 a6b512450dafd79e38eac1b33086ac3c
BLAKE2b-256 a2d6225f98cffdbdc18719851961037c3167e4149d73dd504d1598dc76139022

See more details on using hashes here.

File details

Details for the file ry-0.0.14-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for ry-0.0.14-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 430b8012596dcd4e24209078fc7e026503bb5e32cb2fed26f2730c865190dfff
MD5 30f2e5930302d09f26a35def3e33dce3
BLAKE2b-256 7a41cbb7d504875ea773b130b4b2bb081792b0ed13d27866eaa80df3d6f32db4

See more details on using hashes here.

File details

Details for the file ry-0.0.14-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d52d81783c152e39536fb5c126c0c086ef3f8f544a9ae2b984e3060bdb9efab2
MD5 ac8eff899b6c3456406490da9aa58164
BLAKE2b-256 7b492cfcf84a18a216ba32d32e3a88dafcc8ad270207d094c70f6b12c0700bb8

See more details on using hashes here.

File details

Details for the file ry-0.0.14-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for ry-0.0.14-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 046b9d360132cfea65971cd3d2e66691816bf6d587145737278ea5a9e616bf1f
MD5 ed901a66b498c078e84c24a8fce7b953
BLAKE2b-256 ad04972655faa3e286664e651dfef072a8a24c90bc229eedfa58936298d83386

See more details on using hashes here.

File details

Details for the file ry-0.0.14-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c2efa20a90f81bbe15d448331944bd3e42b986d882ab652dc380754fb9f6f900
MD5 2af07b96ca5326f7d5051790bf3b9663
BLAKE2b-256 246f01d2a1598174ae3469b5fc04f504acbe8e3da00666ec84bf21dc7e63f71d

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp312-none-win_amd64.whl.

File metadata

  • Download URL: ry-0.0.14-cp312-none-win_amd64.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for ry-0.0.14-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 a0b0386b23d01ca9e2257d5a031e789e26c2fa500957e36bca3eb0b7db9abdbc
MD5 b4b521719e51a0d6d84c6c2c08b70135
BLAKE2b-256 8b0cd868e84a352053fbdc449f1a236ff776292fd597c5c404e7e3860e02a127

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp312-none-win32.whl.

File metadata

  • Download URL: ry-0.0.14-cp312-none-win32.whl
  • Upload date:
  • Size: 2.8 MB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for ry-0.0.14-cp312-none-win32.whl
Algorithm Hash digest
SHA256 44395c5c670012663a1fae5bc5ee37a07ce0f0eccee214c59229ca74ee4b220d
MD5 b8ead28cc8a2bfeccd8616bb610a7d2d
BLAKE2b-256 f4172b00cd5edb0d47e8f5c25da13b1e72419d273927f6b0cd6e65845b7171f5

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 619854b81cbb9893f3a4f6015404733903205ad08550e53c183608bbe4380be2
MD5 88195cc148ace880a28141a267949b6c
BLAKE2b-256 0cbfa38825ad97ff5a5c09a5dc111a2ba5798089dbe1965fdad89d1237b085cd

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4daf0638367f50e9fad39d3a6eda5bb2bdf305580b0d475dd3541cc11e52c138
MD5 622c89556a89d12fd906a1ea7f350259
BLAKE2b-256 ecb62ea7e963bc9bd6cacecc628b499a7115abcdf445e71b41db4351e29cc9fd

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 d49ed836ced41ac0dc31ad513b5e9cbdfb8701111faaaf46c8f62d163473bd5a
MD5 13eb8c8a06fa66de125377a9dad7f20a
BLAKE2b-256 87cc2c1e2a35088756f1659f2748cfde47e32fdbd7052a1ee763c59d8659ef90

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2b2f1fc4bfb5b5d55fb76cd8a1a8f1d3bc84737ecbe8ed7a25e267458a6e6487
MD5 f4dbffb0e233650ba6d19f9f853396f8
BLAKE2b-256 eac74d3063bee494d6dd804bf17aa45b089e93186595d52970d6da6211433b5d

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d6af6df6984911f8fd022eaf69530d64c179aa3aefa5f7a57d02cebdbaf42e4
MD5 5d3c07fe53181b15e145872969fd73d2
BLAKE2b-256 099ac487d3069f27b59c7f8e3dbc6b18bf06bf3793055c5fe849d05d5111bd21

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dc3c0d3229158e801939587ae1adf06f67f6ba4976656d91d30c4c101b37c3bd
MD5 2ea4b4160e66420739304239648eb371
BLAKE2b-256 b41b3af00e069190e36505b9ea968de4f979cf6638e8ece0d8c6838e539b1a7b

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp311-none-win_amd64.whl.

File metadata

  • Download URL: ry-0.0.14-cp311-none-win_amd64.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for ry-0.0.14-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 04a44f26dfde8ab5b186886d291b87e00f3afbee9946c4f33e68a6afff55f330
MD5 4555d5c4e3f6943a1c6d5b74cafbe3e9
BLAKE2b-256 eb458f7e49a8608733fee9d232a3e8c451d600400b002bf04bee671bbda3a84e

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp311-none-win32.whl.

File metadata

  • Download URL: ry-0.0.14-cp311-none-win32.whl
  • Upload date:
  • Size: 2.8 MB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for ry-0.0.14-cp311-none-win32.whl
Algorithm Hash digest
SHA256 ac519fdf63b0f34c8e81e7f862a8a149ce699ddbf518d9cec4bee2113c0b8e72
MD5 426deae22cc03c9b71a3c896dd375703
BLAKE2b-256 d971d0034af225752a0643d978f9cd6e30fec184163bcc145997b27843b1bd35

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1ba52b1280f5218098b7494bbf0b90908ad5dc8985058b6a4196078f69ace332
MD5 e71adf411a988bcf516b3bcef0b3e3e6
BLAKE2b-256 636b0f3185269898653944022a14a53240fadb5b594bb6e08d0ced0506b61369

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 597c2405e81fae9ce19413aeef37e5c44444620a29d4d34571765e1437312c64
MD5 f5dcf900154b4c49f33131231c0fa4f3
BLAKE2b-256 d814d81c1bfd60fafb5e0cebbb5b7f305866facb52e19afbb7766d01d6697bb8

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 b3257556b28df310ecc2c7c177e60fa8652c52210f24428914b99bbd104183d7
MD5 646ea9e52f90636dca750a64f3293678
BLAKE2b-256 83d21fde45207d2beb4830e9e6afd4f5e61c6abd954ef257ee7c9c285d5561d3

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 584086815544286368a656f9d443eed1701c994a80e9791bdf0a856c910b3373
MD5 1ee4d27f98a595b835cc85bd1874f545
BLAKE2b-256 ce9b1f7142d4c069897d6d7a02969ae476f1f6b7e2830db56b0854fbef0ff24d

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9c9366e216caac9f380d112956cc8dc07bf9be5b8f78a3ad48efef2e5de5de03
MD5 d1ce88c43d45b8ed725e5212ffd705a3
BLAKE2b-256 391940b5eab62432235bf0f8558bd5162693fa8cbfc05bc82d1b616fe8cb4ee0

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1ae03aa5bf0b948d39feb2d54e5992835ad1ee42f63fb3dcb26ba74a705e46db
MD5 f70a8ac509179c96ee30be4e4c1af7fe
BLAKE2b-256 9c99a6f9ffbdff70704409b505508e16945324a2eabff4919b35361676ad1fc0

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp310-none-win_amd64.whl.

File metadata

  • Download URL: ry-0.0.14-cp310-none-win_amd64.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for ry-0.0.14-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 e0a42281d13d002b02ce631e7140ba48d105d148ba29dab31d8075658478171c
MD5 337b83f2b702a8459937fc16b3d01dcf
BLAKE2b-256 b6e4ee674f122899484606b65ccab8850d36727f292d4388d57f194c73add6af

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp310-none-win32.whl.

File metadata

  • Download URL: ry-0.0.14-cp310-none-win32.whl
  • Upload date:
  • Size: 2.8 MB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for ry-0.0.14-cp310-none-win32.whl
Algorithm Hash digest
SHA256 69107976156abf88f1dde33f70a7286ab81fadd3a21ef4bc28a5d287eea1754e
MD5 3090ee8dec98e95e6156c7589fad026f
BLAKE2b-256 d2e0f6180f6191b7bce1e75b123b1a2c67b59c3c0bb0a266f8eaa0bd61ae25b2

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1d7f45e08b0305a014bd2e0b0e217db7e9c62b9b731157295cf480ab3fbfa28b
MD5 886f1efc27095790939071d6e3d8f470
BLAKE2b-256 509fd096a9125812291dfd4ecc68092b73df578b4ce20aa388d222eb65bd309d

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 24b053a17add7a40366e10a97c587b095ee7fd10274de96a3819845e96be1c61
MD5 e5cea09a8c2c742706ce360896118e87
BLAKE2b-256 e8d3d45f5f9d5a8967c7d6c79625f8e5cf6d330db2f2631812b5e70b3e805d6a

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 550dc6e21e33505d70baf17e7aee256c2760f3511ae3e007f1e4dd35fd78577b
MD5 9d03f6a755781eef73444f5d4c3817f2
BLAKE2b-256 0bb64d3db3a3155c0f7c63921e6f9f9ea3d38a11192d8e603b73fdfed43dff61

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 34e02ed69f3445cca7e4e6caaea661ce5b9a95ba9fca02f5aea2669f01cbe525
MD5 6644f0042c6decc4f8d2ae16bba26959
BLAKE2b-256 32296a46fb058870295de642b893addb9f0c205466f8d6ad0ccaeed13b87c986

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6698ce5139d5f2c1add7f227ea1640b7abf9a044610e1a1f1eb0216a3670970e
MD5 6ecc9b99223d2f508553d6db9ae0d7e5
BLAKE2b-256 70314cab710f8bea2591dc420589186f3d81b80e729e32627dd470d76ebb26bf

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 679d7731521c3f3f16f801c0849c7a053bb71cabcde555703ddf3fc8dc90696c
MD5 14263878f16e412801ea207897c9b4c7
BLAKE2b-256 a3435483cb010949ac210cc7f511c1a8286ddcc55f267659d602863ca6752320

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp39-none-win_amd64.whl.

File metadata

  • Download URL: ry-0.0.14-cp39-none-win_amd64.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for ry-0.0.14-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 eb9260b98ffc79a556cd16c3e5fa567075f3ffd403a3480a5df1a4341e2d02c3
MD5 59f7c8c4d1276aaaed9b19e65621ee84
BLAKE2b-256 ebd866ba9570946f12bc376d2d16884e5e91b6ee32cd044ac272f4a252633e56

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp39-none-win32.whl.

File metadata

  • Download URL: ry-0.0.14-cp39-none-win32.whl
  • Upload date:
  • Size: 2.8 MB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for ry-0.0.14-cp39-none-win32.whl
Algorithm Hash digest
SHA256 1af41f06c0412234b879b1b70446ab9e5dfd1469e1e211ecbdd2966a926f89f0
MD5 7514e0a7fbc96f7bdebc3930b98f0598
BLAKE2b-256 5dea477b0af7da3a043a6c5f0e071339d2c230f77a1dfdad8c2e5254bea649d1

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 297ec9e73f2862b711914b520ef296d34c2daf6a2d890c47f05a7be9d97fcd1f
MD5 15993a137338839aa27a71f38425c8f2
BLAKE2b-256 5fa93041dd568f40b0f5bef3fff5c6676cfe3ddcdb34808daa716b36e7c1c08b

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 71e66462dd97a8e84c88bd8480f3b66ab7e18549d2486c0eeed5b442c933e635
MD5 c618cb5dd2a62904216bdfbae52ecdc8
BLAKE2b-256 62ad41525c60db0c2fc41d50cac472ac34f95bccd9ab41909a2f82ee1be1deec

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 ef8321cb2bbe8ca95789da3292a4c21d87b07f3a1c0d7d9e8ca4aacdaa0f10ca
MD5 68ff2837ba9873147b689d0aa9e79a02
BLAKE2b-256 7655312b12eeebceb0baf089691e2ee97318da98ecbebef575632b534d8954e0

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 79e9f1352968d6ab857857e303b9d4f9774f3fdbb29805fd9f1ba21d21dbc1a5
MD5 d9f40b4b939cf5994d3f142eb51de1f3
BLAKE2b-256 2448553f8293677b456b4ba648360e0c28bbb81f0892ef3e53fbc39a8809cb84

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 95872ef8a073464c7a286abdbd7d9f07d2b479443789552e5b73e753cb0b91f0
MD5 00ca34d5fefc4c2b6380172e6cb2d21e
BLAKE2b-256 6bbe40bfe9d5b314fbae0106e0f8584dbe71d195927d91fd70a0fc3e3f38dd78

See more details on using hashes here.

File details

Details for the file ry-0.0.14-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ry-0.0.14-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e2e7d81dba5ca30a7db0c4b74eb75506aca63207ff6f5e56ece88ef7785d442f
MD5 ee321e3524b1570ed2984b1f2d6798e1
BLAKE2b-256 666103a4a979ce07d23fe4ae717ab0e7de53314b40d439dedae37f81c45d9c43

See more details on using hashes here.

Supported by

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