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

from collections.abc import Iterator
from os import PathLike
from typing import Any, AnyStr, Literal, TypeVar, final

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


# ==============================================================================
# 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() -> 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,
) -> 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: Literal[True, False, "all", "keys", "none"] = "all",
  partial_mode: Literal[True, False, "off", "on", "trailing-strings"] = False,
  catch_duplicate_keys: bool = False,
  float_mode: Literal["float", "decimal", "lossless-float"] = "float",
) -> JsonValue: ...


def parse_json_bytes(
  data: bytes,
  /,
  *,
  allow_inf_nan: bool = True,
  cache_mode: Literal[True, False, "all", "keys", "none"] = "all",
  partial_mode: Literal[True, False, "off", "on", "trailing-strings"] = False,
  catch_duplicate_keys: bool = False,
  float_mode: Literal["float", "decimal", "lossless-float"] = "float",
) -> JsonValue: ...


def parse_json_str(
  data: str,
  /,
  *,
  allow_inf_nan: bool = True,
  cache_mode: Literal[True, False, "all", "keys", "none"] = "all",
  partial_mode: Literal[True, False, "off", "on", "trailing-strings"] = False,
  catch_duplicate_keys: bool = False,
  float_mode: 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: AnyStr) -> 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
# ==============================================================================
@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: ...


@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: ...


@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 = 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: ...

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.12.tar.gz (81.5 kB view details)

Uploaded Source

Built Distributions

ry-0.0.12-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

ry-0.0.12-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (2.5 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686

ry-0.0.12-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

ry-0.0.12-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

ry-0.0.12-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

ry-0.0.12-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

ry-0.0.12-cp312-none-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.12 Windows x86-64

ry-0.0.12-cp312-none-win32.whl (2.1 MB view details)

Uploaded CPython 3.12 Windows x86

ry-0.0.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

ry-0.0.12-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (2.5 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

ry-0.0.12-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

ry-0.0.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

ry-0.0.12-cp312-cp312-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

ry-0.0.12-cp312-cp312-macosx_10_12_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.12 macOS 10.12+ x86-64

ry-0.0.12-cp311-none-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.11 Windows x86-64

ry-0.0.12-cp311-none-win32.whl (2.1 MB view details)

Uploaded CPython 3.11 Windows x86

ry-0.0.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

ry-0.0.12-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (2.5 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

ry-0.0.12-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

ry-0.0.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

ry-0.0.12-cp311-cp311-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

ry-0.0.12-cp311-cp311-macosx_10_12_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.11 macOS 10.12+ x86-64

ry-0.0.12-cp310-none-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.10 Windows x86-64

ry-0.0.12-cp310-none-win32.whl (2.1 MB view details)

Uploaded CPython 3.10 Windows x86

ry-0.0.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

ry-0.0.12-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (2.5 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

ry-0.0.12-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

ry-0.0.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

ry-0.0.12-cp310-cp310-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

ry-0.0.12-cp310-cp310-macosx_10_12_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.10 macOS 10.12+ x86-64

ry-0.0.12-cp39-none-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.9 Windows x86-64

ry-0.0.12-cp39-none-win32.whl (2.1 MB view details)

Uploaded CPython 3.9 Windows x86

ry-0.0.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

ry-0.0.12-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (2.5 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

ry-0.0.12-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

ry-0.0.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

ry-0.0.12-cp39-cp39-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

ry-0.0.12-cp39-cp39-macosx_10_12_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.9 macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ry-0.0.12.tar.gz
Algorithm Hash digest
SHA256 d23f9607141b8055b4475346ad2165c9515c8927269d05ff6129ad2e44c61681
MD5 eac2e5c526d9b5dc699bc34059bcedbe
BLAKE2b-256 11a4936f57057d0efc7cf9cd85c07e47418e58ac7cb14c8dc023996ba6d01a5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3b9be09f1f00acf6ae1046970bdb0d26849e9d8f3edaafac8c2584d467467529
MD5 38b77ae49dfd2c0d9bd31625c66c0a77
BLAKE2b-256 0d0cc34516debe885fb19343a5f73b06f721f7c9a9c638a23072a382200b005d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0ce07a79171be79ac730732dc91bbf02866a26915c8585303ed34f7632bde85a
MD5 96e2bc13ef84064907fa017c60f5c376
BLAKE2b-256 0b9d88475a2658c55017ec71d59e813813ecd770681ec3fd5377ecb06d735caa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 af9930ede82a67a15e07b9fe1fe11a32a77e635e6f7e5392f16aa80bc4068482
MD5 2b3bea205d164c793d583714aea552f8
BLAKE2b-256 b75cdcac8547b26643439ffc2af8bb2ffe06b501d036bc4273ad4b682495653e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e161bc60c55ec6c5b0e8c3ce1c0217178142c668e72ba5e7d179343d6fe5c5d2
MD5 8c84e0da1425f0aa043140abc2d624bf
BLAKE2b-256 a64da9429fdd3689b268269eabae5a3e4a9f0e158a7d2a3aeaa575a6d8597875

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 17b37cffe744e2b47c7610fe4ee4925ab33c2bc84c6020a5d5f69422fbb9878c
MD5 cdc9ba0da8a971ad30c200f48d5b9217
BLAKE2b-256 fa8ba72fdb0afb6db69bf5f3dd4e841ef450f105639524bd61c727ebb380895a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ab89834fbde73ced5286b2afd9556066e3c011ebc32d5bc841c2364fc6d96b6b
MD5 e83351aadb9ac0598f505a0aedb043e7
BLAKE2b-256 47937b0267efdd15a707bea4a00e4e8cb0ba96e333561707d2d5fd0d084e099c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ry-0.0.12-cp312-none-win_amd64.whl
  • Upload date:
  • Size: 2.3 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.12-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 96cad3654719592afaca74c3e5d918c55534a8633a6eb7a1e46a7e236f341e78
MD5 d5569a1d0d2af3f3dfb03ba9d63f464a
BLAKE2b-256 3b4f674bd1f20108f8b84f40a1d64b2d9423f25532d3bc777ea8d8dd4545aee4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ry-0.0.12-cp312-none-win32.whl
  • Upload date:
  • Size: 2.1 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.12-cp312-none-win32.whl
Algorithm Hash digest
SHA256 ad5bd6c1b982856473b8c40dfa9e5799f2b54a78a9ef7c0d4e786966265c0859
MD5 95ec89f42655d2c709f67c3c0ecc14da
BLAKE2b-256 1f793be522e6838db177815effccafb5520e7461a1ed01afc5eb35643990f0b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3f9d1c28e436b476ba38897bbe714d462adf8bed306420a5b079f2277cd38df8
MD5 5316c09be0ccad51358a05691216d01f
BLAKE2b-256 9bcdfb393682d25f6def56017d1e898b54aa9d64b092c030065879bfc5ecbd98

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 acf042bf66383326e7171a38bf5a9afecf0e80f8239ae6c40c35ef2ea38539e1
MD5 fb27bb73ed01d3fb6cca7913ab37588b
BLAKE2b-256 0485f08bd0de0cb59374f504577f760affd8d8255a0498304e7b752f1bff3568

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 6820414e116a963956b84ca4d3490f6181f8e14928a3120f8fc41c03b52f3e94
MD5 368392409d456e091118964afe3c84f6
BLAKE2b-256 17de12844e5d0fe83ab2cb7f4c48f4b2cfcd8ed5009e618be541655b97c801fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2a49edb611d49beed1d767788c935cbe165fcd802f05c15277c0fc6720b969e6
MD5 c76bc5d799c0fb34db739688f810ca4c
BLAKE2b-256 90d3032ace672a92ea1cf9c0b8cc4f1989bb1e0ce81b43d02d3e05bf3d4804fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d12400fb7037c4cb0e6a969efc09bd0afb397988d8b277fae586453a7c198dad
MD5 0b987c187af5bebe546ff64f9ce011e1
BLAKE2b-256 4d5462b4918aecbae707b99b41af887fc10022c769a30525fd881a8c12674566

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6cf2aeb828aae80630725e684ff2802beea0e40a8bcc0bd36a8e7ff59589dc32
MD5 92c016a92dfdd3c055fa544460c02554
BLAKE2b-256 df844128439df0cd5e5b4eff148badd0c1880f44361084301d4af34fe2ed0ba6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ry-0.0.12-cp311-none-win_amd64.whl
  • Upload date:
  • Size: 2.3 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.12-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 dd1568b58d7092e297f3a99f45b5a857f399fc0493ed820a3f45619f2e992a8a
MD5 cb738e7043bbeac12b272a9e52802381
BLAKE2b-256 d376add61554ffcf7af395d4d58fe16de6c66089687b9c1fc066c314632c781a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ry-0.0.12-cp311-none-win32.whl
  • Upload date:
  • Size: 2.1 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.12-cp311-none-win32.whl
Algorithm Hash digest
SHA256 38e18495bccfd2601345060652ce1a5e3004d6222378eb2b2784c0241a5e1377
MD5 de6934d66db5a2647081abf41241b2f8
BLAKE2b-256 a81a054ac7c4b7331f1e41856630e50545d8080f1390dac4d3a3a7c8af914457

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8a9c40b30478524d3b75db0662b0d90f865c26a9aa9111277c48d95c39417456
MD5 70256c39672db7825491f449633bd846
BLAKE2b-256 2eea2f934730237a7f2cd5ef99fbec908a9f24ba3cf1cfbe630d5477aba8f1ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4e6f0dde25439dc07d7e20a68352a6978f861a5306b52f11ec4a9aba3cdd7e1a
MD5 f94887793f386808460ef69f6e30ce53
BLAKE2b-256 6d143f0943ced3b299fd117e83fe32e935596bbf1c4c40866c1f4d495dafad1e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 8ee1be2ab35127e588a2f719e9e40c29804470a853bbe899d5949a74a9392c99
MD5 cc83fd3a160d0240e0b073c02cf4d43c
BLAKE2b-256 d3dc1d38fc56221b6097a11b9cdc8d527ad77184275194b6e12ff8709434dd66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 592debbfcc93be44d4d274c107fac0d60cc084ebd8271c195a02b3e8538b92d6
MD5 360aeaa26f1139807d71ab8ef3820651
BLAKE2b-256 8f659361d4b7acbc0758db3393d5ad316fe223c4ef9775103596989bc6b01f7f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2a44867f15fa2177c24eb73c47bb57d13f0281a137beb8f04a78bbc03f3c9915
MD5 e98e582770304689e286802e3498eb1f
BLAKE2b-256 ef3880e3d0be03087e595231beeb932bf12272e2348abd188c66c935ccef9bb3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d13635842771763cac1ba99f7a1968f67b30f0eecdf6394ab4c91cac8f084d3b
MD5 ace19b53c44afc85526848d594964e13
BLAKE2b-256 cfcedac3100dbd14a456a95514d2b2f6f813df0bf9409a70671b3a754ca6d8d9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ry-0.0.12-cp310-none-win_amd64.whl
  • Upload date:
  • Size: 2.3 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.12-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 9201ff86f012bf18093a15f4102f49a6bf7d31fbfc7d19bad1b6eac7057ac6ce
MD5 d48431a401e3a9a5e112e7f80bb048bc
BLAKE2b-256 7ff4360040e2b1c5dece8e4dbd82c312421ba39b346d1f65a3e6b9ccfbfbef23

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ry-0.0.12-cp310-none-win32.whl
  • Upload date:
  • Size: 2.1 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.12-cp310-none-win32.whl
Algorithm Hash digest
SHA256 ba3973497f33754860c360d35d718b84ce8ee73daa22e24d8312b3e2f3615f99
MD5 df5e9732c6b65113b7312d221c3659a3
BLAKE2b-256 91216fae95b03c9829c02f73dbecfb993b51ab2c3b377d684a40cb7916d8de03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0ca3212411294ad4bd9590439935548f0400b07f6305f2331403c8a051f81873
MD5 7161136dea6c19f185921a380742300c
BLAKE2b-256 00f745867d42ec29abe2d52d5f69d42d57a749d8c0647408b059f8b8fba0ec09

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e23a199de22a78a535bff97bdc5f7d26ae03c8ec0ac60f9be3569bd62cc31640
MD5 e05ad43d7580900c5841b379c3a093ba
BLAKE2b-256 124a22546684b1124a649eb0e12ed8965e607199aa06648d87a0b449ff9a6e1a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 bf5235fe50d8ed6cf238d3e34fea6ba3c94b929c6b8a56796ae3986c058cb2ee
MD5 93af5c1bcc09e80feedb1daa69b51829
BLAKE2b-256 889af6475d3af0228d9b1c25eb20a8b8c32f6f5ec3e07c390b749d65be23903c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 638406496fa876192bab67cacbdec035a0684fc0ce23d9cba4911f31a53bba75
MD5 b3b5b36a39cc96a0519a66401cf966f9
BLAKE2b-256 c81672f1b8ecbc10374d48d1d36c4e410560433f8b7269bc70dc1af003c2da0e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7f271481a103a5a8051fe32474dedd96dc3ec99a4c69284fa151d0848056d2ca
MD5 7d6c89dd043f61664979dc728cb37acb
BLAKE2b-256 0c3bf85e9ed5708c4abc613dc5a10fbc75289d89bc1ba0507232f4f88c7c5beb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f6d76d652fe59657d2bcc1ffa4065f55d005ec236cffa96630e49adc7f033fed
MD5 254565ad01e533840bb5d01bf15ed27b
BLAKE2b-256 3b7e196e6179d442af59144c5ea8caacd597cd7a33053bdae9545685ee0a4ec2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ry-0.0.12-cp39-none-win_amd64.whl
  • Upload date:
  • Size: 2.3 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.12-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 5eb77bb1967d1d81556238c58b2b34e92174cd1c43ad8392fbac62a5dc28a5ea
MD5 7e1d9b887c27e724671f50f74e69948d
BLAKE2b-256 b5e6d4976db119ad384fd45307107282a2de221ae7bac48f132b8423c88d055d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ry-0.0.12-cp39-none-win32.whl
  • Upload date:
  • Size: 2.1 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.12-cp39-none-win32.whl
Algorithm Hash digest
SHA256 a624bcdffd1e91375110bbd09378fa28fb18f837664cd9b50103bbc5326e977a
MD5 9c30ebbcc23e2c4ed34510ab947a08c0
BLAKE2b-256 f38e011f1edd94c8e2c55e52b79b0d33532c2e7956369c457f8ddd63f7787ebf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8175a83fb76462670b3c15193574fdb10158d465551394122d1972b9b3f22765
MD5 3de86f2919a30adc99d76cab83566168
BLAKE2b-256 491c6003967cec2342ed43aefaae502a9db54b94316c051d8ec74c20dc596775

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b4f387a0da33776a973c7a50aa14b473d792c7431e8bfade912679823e5ffccb
MD5 9e5627ca1dfbbfb44ccdadeb119db118
BLAKE2b-256 b2560791b99fcc8271554c7e7cd6417fa34ec3577d2d340d9780f94ec9c1ed41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 094ed5d93089070aad3a9a19b733351aa136aedecdcff2cbb24fd124e0e18193
MD5 6c0778f71ebe632aa03dd180c1f92a12
BLAKE2b-256 268ae0db3bbf10754a964f53ccd0d0f9dc0f42633c6830ddb3fb4aa9cb12f458

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 343412f6d368bc13a790e25a22e639806a7340e4292472bac3277497c483e3dd
MD5 b41bacc8d88817c0834a0c316469c088
BLAKE2b-256 cdb5e1ef56a8d949706ab48f8b7ffb4c7498c8ae5fe597a3caa4eec94060f033

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ed7c12ce25d2189ea7453453d3aa2df9f06a14f3a9f68855a31ea2f27c5358c6
MD5 778ee81e1cf58b774377bd10c2c30bb7
BLAKE2b-256 273436d84d7dac5626d0cdcd6bd1c5c7c7dcaa9328b89e2fce35d153399600ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ry-0.0.12-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 82fc06a203c31a337b52df7c616a44e453d46c2ad2b4579c8af616faecf5aedc
MD5 c74f1786cf23366c1f8b0aa56282a246
BLAKE2b-256 3a08922196011368ff3d6a05a5e49f3dbb473daef2faa13da292ba9bc009c695

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