Skip to main content

Accelerating Reproducible Mahjong Research

CI Open In Colab Kaggle PyPI - Version crates.io License


✨ Features

  • High Performance: Core logic implemented in Rust for lightning-fast state transitions and rollouts.
  • Gym-style API: Intuitive interface designed specifically for reinforcement learning.
  • Mortal Compatibility: Seamlessly interface with the Mortal Bot using the MJAI protocol.
  • Rule Flexibility: Support for diverse rule sets, including three-player mahjong (sanma).
  • Game Visualization: Integrated replay viewer for Jupyter Notebooks.

📦 Installation

uv add riichienv
# Or
pip install riichienv

Currently, building from source requires the Rust toolchain.

uv sync --dev
uv run maturin develop --release

🚀 Usage

Gym-style API

from riichienv import RiichiEnv
from riichienv.agents import RandomAgent

agent = RandomAgent()
env = RiichiEnv()
obs_dict = env.reset()
while not env.done():
    actions = {player_id: agent.act(obs)
               for player_id, obs in obs_dict.items()}
    obs_dict = env.step(actions)

scores, ranks = env.scores(), env.ranks()
print(scores, ranks)

env.reset() initializes the game state and returns the initial observations. The returned obs_dict maps each active player ID to their respective Observation object.

>>> from riichienv import RiichiEnv
>>> env = RiichiEnv()
>>> obs_dict = env.reset()
>>> obs_dict
{0: <riichienv._riichienv.Observation object at 0x7fae7e52b6e0>}

Use env.done() to check if the game has concluded.

>>> env.done()
False

By default, the environment runs a single round (kyoku). For game rules supporting sudden death or standard match formats like East-only or Half-round, the environment continues until the game-end conditions are met.

Observation

The Observation object provides all relevant information to a player, including the current game state and available legal actions.

obs.new_events() -> list[str] returns a list of MJAI JSON events that are new for that player since their previous observation. On a player's first observation in a hand, this can include start_game, start_kyoku, and earlier events from the hand. The full history for that observation window is accessible via obs.events.

>>> obs = obs_dict[0]
>>> obs.new_events()
['{"id":0,"type":"start_game"}', '{"bakaze":"E","dora_marker":"S", ...}', '{"actor":0,"pai":"6p","type":"tsumo"}']

obs.legal_actions() -> list[Action] provides the list of all valid moves the player can make.

>>> obs.legal_actions()
[Action(action_type=Discard, tile=Some(1), ...), ...]

If your agent communicates via the MJAI protocol, you can easily map an MJAI response to a valid Action object using obs.select_action_from_mjai().

>>> obs.select_action_from_mjai({"type":"dahai","pai":"1m","tsumogiri":False,"actor":0})
Action(action_type=Discard, tile=Some(1), consume_tiles=[])

Compatibility with Mortal

RiichiEnv is fully compatible with the Mortal MJAI bot processing flow. I have confirmed that MortalAgent can execute matches without errors in over 1,000,000+ hanchan games on RiichiEnv.

from riichienv import RiichiEnv, Action, GameRule
from model import load_model

class MortalAgent:
    def __init__(self, player_id: int):
        self.player_id = player_id
        # Initialize your libriichi.mjai.Bot or equivalent
        self.model = load_model(player_id, "./mortal_v4.pth")

    def act(self, obs) -> Action:
        resp = None
        for event in obs.new_events():
            resp = self.model.react(event)

        action = obs.select_action_from_mjai(resp)
        assert action is not None, "Mortal must return a legal action"
        return action

env = RiichiEnv(game_mode="4p-red-half", rule=GameRule.default_tenhou())
agents = {pid: MortalAgent(pid) for pid in range(4)}
obs_dict = env.reset()
while not env.done():
    actions = {pid: agents[pid].act(obs) for pid, obs in obs_dict.items()}
    obs_dict = env.step(actions)

print(env.scores(), env.ranks())

Game Rules and Modes

RiichiEnv separates high-level game flow configuration (Mode) from detailed game mechanics (Rules).

  • Game Mode (game_mode): Configuration for game length (e.g., East-only, Hanchan), player count, and termination conditions (e.g., Tobi/bust, sudden death).
  • Game Rules (rule): Configuration for specific game mechanics (e.g., handling of Chankan (Robbing the Kan) for Kokushi Musou, Kuitan availability, etc.).

1. Game Mode Presets (game_mode)

You can select a standard game mode using the game_mode argument in the constructor. This configures the basic flow of the game.

game_mode Players Mode Mechanics
4p-red-single 4 Single Round No sudden death
4p-red-east 4 East-only (東風; Tonpuu) Standard (Tenhou rule)
4p-red-half 4 Hanchan (半荘) Standard (Tenhou rule)
3p-red-single 3 Single Round No sudden death
3p-red-east 3 East-only (東風; Tonpuu) Standard (Tenhou sanma rule)
3p-red-half 3 Hanchan (半荘) Standard (Tenhou sanma rule)
# Initialize a standard 4-player Hanchan game
env = RiichiEnv(game_mode="4p-red-half")

2. Customizing Game Rules (GameRule)

For detailed rule customization, you can pass a GameRule object to the RiichiEnv constructor. RiichiEnv provides presets for popular platforms (Tenhou, MJSoul) and allows granular configuration.

from riichienv import RiichiEnv, GameRule

# Example 1: Use MJSoul rules (allows Ron on Ankan for Kokushi Musou)
rule_mjsoul = GameRule.default_mjsoul()
env = RiichiEnv(game_mode="4p-red-half", rule=rule_mjsoul)

# Example 2: Fully custom rules based on Tenhou preset
rule_custom = GameRule.default_tenhou()
rule_custom.allows_ron_on_ankan_for_kokushi_musou = True  # Enable Kokushi Chankan
rule_custom.length_of_game_in_rounds = 8  # Force 8 rounds? (Note: Length is mainly controlled by game_mode logic usually)

env = RiichiEnv(game_mode="4p-red-half", rule=rule_custom)

Detailed mechanic flags (like allows_ron_on_ankan_for_kokushi_musou) are defined in the GameRule struct. See RULES.md for a full list of configurable options.

Tile Conversion & Hand Parsing

Standardize between various tile formats (136-tile, MPSZ, MJAI) and easily parse hand strings.

>>> import riichienv.convert as cvt
>>> cvt.mpsz_to_tid("1z")
108

>>> from riichienv import parse_hand
>>> parse_hand("123m406m789m777z")
([0, 4, 8, 12, 16, 20, 24, 28, 32, 132, 133, 134], [])

See DATA_REPRESENTATION.md for more details.

Hand Evaluation

HandEvaluator evaluates a hand for tenpai status, waiting tiles, and winning results. Create an instance with HandEvaluator(tiles, melds) or HandEvaluator.hand_from_text(text).

  • is_tenpai() — returns whether the hand is in tenpai.
  • get_waits() — returns the list of winning tile IDs (34-tile format, 0–33).
  • calc(win_tile, dora_indicators, ura_indicators, conditions) — evaluates the hand with the given winning tile and returns a WinResult.
>>> from riichienv import HandEvaluator
>>> import riichienv.convert as cvt

>>> he = HandEvaluator.hand_from_text("111m33p12s111666z")
>>> he.is_tenpai()
True
>>> he.calc(cvt.mpsz_to_tid("3s"), dora_indicators=[], ura_indicators=[])
WinResult(is_win=True, yakuman=False, ron_agari=12000, tsumo_agari_oya=0, tsumo_agari_ko=0, yaku=[8, 11, 10, 22], han=5, fu=60)

The yaku field contains raw yaku IDs. Use yaku_list() to get detailed Yaku objects with Japanese/English names and platform-specific IDs.

>>> result = he.calc(cvt.mpsz_to_tid("3s"), dora_indicators=[], ura_indicators=[])
>>> for y in result.yaku_list():
...     print(y)
Yaku(id=8, name='役牌 發', name_en='Yakuhai (hatsu)', tenhou_id=19, mjsoul_id=8)
Yaku(id=11, name='場風牌', name_en='Yakuhai (round wind)', tenhou_id=14, mjsoul_id=11)
Yaku(id=10, name='自風牌', name_en='Yakuhai (seat wind)', tenhou_id=10, mjsoul_id=10)
Yaku(id=22, name='三暗刻', name_en='San Ankou', tenhou_id=29, mjsoul_id=22)

Shanten Number Calculation

Calculate the shanten number (minimum number of tiles away from tenpai) using lookup tables based on Cryolite/nyanten. Both 4-player and 3-player mahjong are supported.

4-player mahjong:

>>> from riichienv import parse_hand, calculate_shanten
>>> tiles, _ = parse_hand("123m456p789s11z")
>>> calculate_shanten(tiles)
-1  # complete hand

>>> tiles, _ = parse_hand("123m456p78s11z")
>>> calculate_shanten(tiles)
0  # tenpai

3-player mahjong:

In 3-player mahjong (sanma), tiles 2m-8m do not exist. calculate_shanten_3p correctly handles this by treating manzu tiles (1m, 9m) as honor-like tiles with no sequence potential, using the nyanten lookup tables.

>>> from riichienv import parse_hand, calculate_shanten, calculate_shanten_3p
>>> tiles, _ = parse_hand("111m123456789s11z")
>>> calculate_shanten_3p(tiles)
-1  # complete hand (111m koutsu + souzu shuntsu)

>>> tiles, _ = parse_hand("19m19p19s1234567z")
>>> calculate_shanten_3p(tiles)
0   # kokushi tenpai

>>> # Corner case: 3P shanten can differ from 4P
>>> tiles, _ = parse_hand("1111m111122233z")
>>> calculate_shanten(tiles), calculate_shanten_3p(tiles)
(1, 2)  # 4P tenpai path requires drawing 2m/3m, which don't exist in 3P

Game Visualization

GameViewer renders an interactive 3D replay viewer in Jupyter Notebooks. Use env.get_viewer() to create a viewer from a RiichiEnv instance, or GameViewer.from_jsonl() / GameViewer.from_list() to load from files or event lists.

from riichienv import RiichiEnv
from riichienv.agents import RandomAgent

agent = RandomAgent()
env = RiichiEnv(game_mode="4p-red-half")
obs_dict = env.reset()
while not env.done():
    actions = {pid: agent.act(obs) for pid, obs in obs_dict.items()}
    obs_dict = env.step(actions)

env.get_viewer().show()  # displays the 3D viewer in Jupyter

The returned GameViewer object also provides methods for programmatic inspection:

viewer = env.get_viewer()
viewer.show(step=100, perspective=0)  # show() accepts optional display parameters
viewer.summary()        # list of round info dicts (bakaze, kyoku, honba, oya, scores)
viewer.get_results(0)   # list[WinResult] for round 0

See demos/README.md for full API details and notebook examples.

Event-driven API for Online Inference

RiichiEnv provides two methods for applying MJAI events, designed for different use cases:

Method Signature Returns Use case
apply_event apply_event(event) None Replay parsing, training data generation
observe_event observe_event(event, player_id) Observation | None Online inference (bot play)

Why two methods? apply_event is minimal — it only updates state, leaving observation timing to the caller. This is ideal for batch replay where all events are pre-determined. observe_event combines state update with observation retrieval in a single call, and encapsulates the logic of which events can produce legal actions. This avoids the caller having to manually skip non-action events (start_game, dora, hora, etc.) and separately call get_observation().

apply_event(event) — State update only

Applies an MJAI event dict to advance the game state. Observations must be retrieved separately via get_observation(player_id). This is the right choice when replaying full game logs for training data generation, where all events are already known and observation timing is managed externally (e.g., by KyokuStepIterator).

env = RiichiEnv(game_mode="4p-red-half")
env.apply_event({"type": "start_game"})
env.apply_event({"type": "start_kyoku", "bakaze": "E", ...})
env.apply_event({"type": "tsumo", "actor": 0, "pai": "5m"})
# Manually check for actions:
obs = env.get_observation(player_id=0)
if obs.legal_actions():
    ...

observe_event(event, player_id) — State update + observation

Applies the event and returns an Observation if player_id has legal actions available. Returns None for events that never require decisions (start_game, start_kyoku, dora, hora, ryukyoku, etc.) and when the tracked player has no actions.

This is the recommended API for online inference — feed events one at a time and act whenever a non-None observation is returned.

env = RiichiEnv(game_mode="3p-red-half")
my_seat = 0

for event in mjai_events:
    obs = env.observe_event(event, my_seat)
    if obs is not None:
        # This player needs to act
        action = select_action(obs)  # your model logic
        ...

The key advantage of observe_event is that it handles all the complexity of determining when a player needs to act — including reaction phases (pon, chi, ron) after an opponent's discard. A simple loop over events is sufficient for a fully functional bot:

# 4P example: P1 can pon after P0's discard
env = RiichiEnv(game_mode="default")
env.observe_event({"type": "start_game"}, player_id=1)
env.observe_event({"type": "start_kyoku", ...}, player_id=1)
env.observe_event({"type": "tsumo", "actor": 0, "pai": "?"}, player_id=1)

obs = env.observe_event(
    {"type": "dahai", "actor": 0, "pai": "5m", "tsumogiri": True},
    player_id=1,
)
# obs is not None if player 1 can pon/ron the discarded tile
if obs is not None:
    for a in obs.legal_actions():
        print(a.to_mjai())  # e.g. pon, pass

🛠 Development

For more architectural details and contribution guidelines, see CONTRIBUTING.md and DEVELOPMENT_GUIDE.md.

Check our Milestones for the future roadmap and development plans.

📄 License

Apache License 2.0

Metadata

Release files for riichienv 0.4.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for riichienv 0.4.9
File Size Uploaded
riichienv-0.4.9.tar.gz 501.0 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for riichienv 0.4.9
File
riichienv-0.4.9-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.17+ x86-64 Details
riichienv-0.4.9-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.17+ ARM64 Details
riichienv-0.4.9-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.5+ x86-32 Details
riichienv-0.4.9-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Details
riichienv-0.4.9-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 Details
riichienv-0.4.9-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.5+ x86-32 Details
riichienv-0.4.9-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
riichienv-0.4.9-cp314-cp314-win32.whl CPython 3.14 CPython 3.14 Windows x86-32 Details
riichienv-0.4.9-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
riichienv-0.4.9-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64 Details
riichienv-0.4.9-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl CPython 3.14 CPython 3.14 Linux glibc 2.5+ x86-32 Details
riichienv-0.4.9-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
riichienv-0.4.9-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
riichienv-0.4.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
riichienv-0.4.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
riichienv-0.4.9-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl CPython 3.13 CPython 3.13 Linux glibc 2.5+ x86-32 Details
riichienv-0.4.9-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
riichienv-0.4.9-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
riichienv-0.4.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
riichienv-0.4.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
riichienv-0.4.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl CPython 3.12 CPython 3.12 Linux glibc 2.5+ x86-32 Details
riichienv-0.4.9-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
riichienv-0.4.9-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
riichienv-0.4.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
riichienv-0.4.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
riichienv-0.4.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl CPython 3.11 CPython 3.11 Linux glibc 2.5+ x86-32 Details
riichienv-0.4.9-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
riichienv-0.4.9-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
riichienv-0.4.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
riichienv-0.4.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details
riichienv-0.4.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl CPython 3.10 CPython 3.10 Linux glibc 2.5+ x86-32 Details

Total release size: 49.3 MB

Release files / riichienv-0.4.9.tar.gz

Download URL riichienv-0.4.9.tar.gz
Size 501.0 kB
Tags Source
SHA-256 checksum
How to use checksums
b2d0f09333ca3f041ccde3664ec210fd153b3fa857f00d9583c67410f70a9cc0
BLAKE2b-256 checksum
How to use checksums
9ede79c685daabfb955c366cd6afe0d2e48f76459bcc2037e296df35cc1410b8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL riichienv-0.4.9-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
861aaaf2ca557f567cf6088d8384144c0771f04a59f69c9cf5a7819daca6aefc
BLAKE2b-256 checksum
How to use checksums
fb20ac590007190ce2944927a5e6962f695f468b44e55a2a3f1f91c79c0cfc12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL riichienv-0.4.9-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.6 MB
Tags Linux glibc 2.17+ ARM64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
d89b8415d50489172fbcc03ba37a5eb2686b02df0c941679e055f34abdb6cd4c
BLAKE2b-256 checksum
How to use checksums
207b940a0495ec618b3f880f5f770c72fd8a1c4e68431a7e2250c4f2c3b3790d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl

Download URL riichienv-0.4.9-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl
Size 1.7 MB
Tags Linux glibc 2.5+ x86-32 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
3d182dd2087e6323a5af4412796e3a195b91a5a6d606a039c210f188b07b05be
BLAKE2b-256 checksum
How to use checksums
0c77928ba15ce5a9f365170511da624a00b70ea8c1efa469208994feb44be55f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL riichienv-0.4.9-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d4bd5b4b1023222bfd9150b4d3a7575ac91288a1cae50511bbd4aa84004ac4a1
BLAKE2b-256 checksum
How to use checksums
38fa6011a09104854c4300c281bf37c97cabf6a175e66230b81b4b41ab05f539
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL riichienv-0.4.9-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.6 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
2b359416c4d2326faca9a7bb5e7ff31527c279d326731f0a223c43ccf6faaf85
BLAKE2b-256 checksum
How to use checksums
74425c05c1281727f8753fa6f60567e8892d00164fc8c633c7f6a3750c9d6f57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl

Download URL riichienv-0.4.9-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl
Size 1.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
cdde3fc6179f62d4f3b18ebe779f76db5038e127c9be71a7f3272c89b8214f49
BLAKE2b-256 checksum
How to use checksums
cf36dc9a46d3a0243142902465003eb7a2c5cb5ab172172662ad448d5d2ebcb9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp314-cp314-win_amd64.whl

Download URL riichienv-0.4.9-cp314-cp314-win_amd64.whl
Size 1.4 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
4290f9c1a41de61486d6b19ed98e705c578b69063899e1c0372ad8947eee03c9
BLAKE2b-256 checksum
How to use checksums
59d276bcffaa6307b2d48b2071fc8eb7cb85198769e899d8bfaf9a3840898feb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp314-cp314-win32.whl

Download URL riichienv-0.4.9-cp314-cp314-win32.whl
Size 1.3 MB
Tags CPython 3.14 Windows x86-32
SHA-256 checksum
How to use checksums
c871e2332eb8ae5ddbd33da926329189460bf2b4be140391b8d75c93dfa81e9c
BLAKE2b-256 checksum
How to use checksums
006ef13c170fe298c2fff1e9a7d2ee71a744ac1f7201867a462363c943b0c7ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL riichienv-0.4.9-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
34e31c5add5a68dd5dd34f7995d428282d1718a72c8ad9c4dd8c35152c45f46f
BLAKE2b-256 checksum
How to use checksums
2ffc9934d234ce10982d7194de972c710647f3d3f2c26ffcb715e7160cfc2d26
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL riichienv-0.4.9-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.6 MB
Tags CPython 3.14 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
28ccc8be9e002f07b74c7f4fd61df79c44786b98709ac931031575fcafe3eb72
BLAKE2b-256 checksum
How to use checksums
4fe7ebb81dde7920a6e5a759c191078b301e67e5d6fa8fe7c58547bf7b4d76ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl

Download URL riichienv-0.4.9-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl
Size 1.7 MB
Tags CPython 3.14 Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
8c992c98deff0172de42eabb149213f2e0f7bebf4e623976cbb73fac3833f3bd
BLAKE2b-256 checksum
How to use checksums
82d680b4b32462b3fc28d33a51b446c7aab5148e72a1756b97ea7b5bf70a90b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp314-cp314-macosx_11_0_arm64.whl

Download URL riichienv-0.4.9-cp314-cp314-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b15c12b0eacd18341cd09b64d5e54dfc911ce8824717d4abc1922eb1a8d63594
BLAKE2b-256 checksum
How to use checksums
66eda35e4b475165b45ab8338badb26acf0ac1a2d6ddf283b84afdee5433a978
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp313-cp313-win_amd64.whl

Download URL riichienv-0.4.9-cp313-cp313-win_amd64.whl
Size 1.4 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
60e02b3f5d4467f119afd195af8c9b5b4fe2021002e4b6f3917e1640b1d6d1d0
BLAKE2b-256 checksum
How to use checksums
d0c3992b1ec2f1da470a6296633d7a0f57920d952fdbbd6bd109f8d79d2afae1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL riichienv-0.4.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
68b0dd3856d5d2137f8e9b306c9f522724993956810ce47814839fedfafb44ba
BLAKE2b-256 checksum
How to use checksums
d8f1017916ba05bd9716cd6d0307ea5fa4a6b128fee02fc8f7803c2580f85b43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL riichienv-0.4.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.6 MB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
99fbcb6758a6c994b3c5f9f6dd9c840dba531d95cdd1478ab11e36c8e8ee5d61
BLAKE2b-256 checksum
How to use checksums
900ecfa901a3043b112f12d20de078ed9b77e6099fb00f6ecb3e9b1e773bce2c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl

Download URL riichienv-0.4.9-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl
Size 1.7 MB
Tags CPython 3.13 Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
75fd8ab17722b807950dbcb923a7ac62d28d320628f2d6b1eb4425c51fdd4bb1
BLAKE2b-256 checksum
How to use checksums
a244d0ec625b099e1a927299cec95781e3ca6a3c18fed04ffbc6f2ee9bcd036b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp313-cp313-macosx_11_0_arm64.whl

Download URL riichienv-0.4.9-cp313-cp313-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b545b18f29c24747ab5d481a38a4b95b460a457c15647712bf12774157f597aa
BLAKE2b-256 checksum
How to use checksums
269a116015871337088310c05458dff6c8c0182feb699e881d885109d9d8179f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp312-cp312-win_amd64.whl

Download URL riichienv-0.4.9-cp312-cp312-win_amd64.whl
Size 1.4 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
528933917b5973c5bd1eb0fbb717a994503d95a545dd7f4a0166b3f3f8899a5e
BLAKE2b-256 checksum
How to use checksums
5b141acc61a03a0e025f53fb132024d19b0b704db1728bc00ecb3bbdfeb04fd8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL riichienv-0.4.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
46472ad25eddfcdadd81ab4e2915e0888c6a7fc1b76e34ecda48ecc40358849d
BLAKE2b-256 checksum
How to use checksums
6d8413178088669c525f38bb980d6cd6c2c9af76d98cb9477a25f194e0a85767
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL riichienv-0.4.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.6 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
3c4a1d7a807b813ccca797c7b56923b747ef7df74f208050c5eb2370408d0d6f
BLAKE2b-256 checksum
How to use checksums
b303679d010099748dd3ab46e879957f30e39e02e69a408c759ac5bb53c16a53
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl

Download URL riichienv-0.4.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl
Size 1.7 MB
Tags CPython 3.12 Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
c08e6d99be8519e8b3c766072b2b8d968c54b4814aea557802332fd6fc10ef37
BLAKE2b-256 checksum
How to use checksums
f803e54304b76fe48eac8723fb1a51a55d5ed676f87dd04b7c207479cb27a1a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp312-cp312-macosx_11_0_arm64.whl

Download URL riichienv-0.4.9-cp312-cp312-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9eb276bc8bd500f92263140132ec8a6845bc5d8d4c2d9d0386bcff47173c09de
BLAKE2b-256 checksum
How to use checksums
aa44997ac7161c6cf1de97f7b753e4a091b1b294f79a95b7bbae50d22b68d9ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp311-cp311-win_amd64.whl

Download URL riichienv-0.4.9-cp311-cp311-win_amd64.whl
Size 1.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
8267d35a3ad52e1597d002ee67dcb79ae7f0e521dcc28f5b2163d6fc6064eb5d
BLAKE2b-256 checksum
How to use checksums
a87d5c179b43b1bf77f3e10f7edb618b269e481d73189f5c1c6d4f774442d134
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL riichienv-0.4.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e24942a1c1da75621089308f62fa7182d6d20b5a290312d98c885a7117d229af
BLAKE2b-256 checksum
How to use checksums
fc70a28f5bac885c97114eadb364841112691b7514dd04d56745933f6770a269
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL riichienv-0.4.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.6 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
6c94d9dc5507ae2b65aa0e22bf83032506cc22692e3e229d9bc47cc2a0aaf8fb
BLAKE2b-256 checksum
How to use checksums
ca3b76de6a4d8355e995c6d5d49063795c96a0dd8e72b371421ce7e54b1359d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl

Download URL riichienv-0.4.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl
Size 1.7 MB
Tags CPython 3.11 Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
3b2489856692d042eb19db718059acf12d341af43462329d609437d4f3cb5ac3
BLAKE2b-256 checksum
How to use checksums
64c4d5d1455c7831f92bda0223cf65f315cd817340b7281cb7ad95e1f14402bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp311-cp311-macosx_11_0_arm64.whl

Download URL riichienv-0.4.9-cp311-cp311-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
40a762697591b3ffc8a505bdf55c28e179a925039926ccc591d78d7f6df3f82b
BLAKE2b-256 checksum
How to use checksums
c42f88dc3ed95cddfcb507f197f3946132300ca7e9371f12948f92d7b5dcb34d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp310-cp310-win_amd64.whl

Download URL riichienv-0.4.9-cp310-cp310-win_amd64.whl
Size 1.4 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
0bfeacf167af332727b012d28afa48ca3c1710155e50ee39f0d5f8d98c2ac424
BLAKE2b-256 checksum
How to use checksums
244329b7556ecf918107bb9e3fb18124161a7186a3225947d81636c579dcc8a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL riichienv-0.4.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
6f269a254b3d2afb42f4bb476805e978eadbfee42cdfbe873e8fa29f2a1f8fc8
BLAKE2b-256 checksum
How to use checksums
14d3ba1d450d83224a8bd83e61544029be9302865cbd9b9a49ed4d1311d24673
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL riichienv-0.4.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.6 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
7a4be391e8e0fc8e13171d7a07111b02f280d65fe1962a9e941386cb3d9b3a28
BLAKE2b-256 checksum
How to use checksums
8a1696f0f9cb23f9acfb74649ecc5cc67645833386dc64e5e48bb4b310bedbb3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / riichienv-0.4.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl

Download URL riichienv-0.4.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl
Size 1.7 MB
Tags CPython 3.10 Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
8d70bdf5f255de8d2e626c0b3c114d9f78919beaa8aef008bcb5e1da36ea1f5d
BLAKE2b-256 checksum
How to use checksums
cacef813fe2da717aaa9dd4daa9ce373a867249bb64d12b352af086887e21b1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.9 This release

32 release files

0.4.8

31 release files

0.4.7

31 release files

0.4.6

31 release files

0.4.5

31 release files

0.4.4

31 release files

0.4.3

31 release files

0.3.4

31 release files

0.3.3

31 release files

0.3.2

31 release files

0.3.1

31 release files

0.3.0

31 release files

0.2.1

31 release files

0.2.0

31 release files

0.1.3

31 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page