Skip to main content

A High-Performance Research Environment for Riichi Mahjong

Project description


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, points, ranks = env.scores(), env.points(), env.ranks()
print(scores, points, 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 new events since the last step, encoded as JSON strings in the MJAI protocol. The full history of events 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
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")
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.points(), 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

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

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

🛠 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

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

riichienv-0.3.2.tar.gz (293.5 kB view details)

Uploaded Source

Built Distributions

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

riichienv-0.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

riichienv-0.3.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

riichienv-0.3.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl (1.8 MB view details)

Uploaded PyPymanylinux: glibc 2.5+ i686

riichienv-0.3.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

riichienv-0.3.2-cp314-cp314-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.14Windows x86-64

riichienv-0.3.2-cp314-cp314-win32.whl (1.3 MB view details)

Uploaded CPython 3.14Windows x86

riichienv-0.3.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

riichienv-0.3.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

riichienv-0.3.2-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl (1.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.5+ i686

riichienv-0.3.2-cp314-cp314-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

riichienv-0.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

riichienv-0.3.2-cp313-cp313-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.13Windows x86-64

riichienv-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

riichienv-0.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

riichienv-0.3.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl (1.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.5+ i686

riichienv-0.3.2-cp313-cp313-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

riichienv-0.3.2-cp312-cp312-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.12Windows x86-64

riichienv-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

riichienv-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

riichienv-0.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (1.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.5+ i686

riichienv-0.3.2-cp312-cp312-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

riichienv-0.3.2-cp311-cp311-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.11Windows x86-64

riichienv-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

riichienv-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

riichienv-0.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (1.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.5+ i686

riichienv-0.3.2-cp311-cp311-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

riichienv-0.3.2-cp310-cp310-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.10Windows x86-64

riichienv-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

riichienv-0.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

riichienv-0.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl (1.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.5+ i686

File details

Details for the file riichienv-0.3.2.tar.gz.

File metadata

  • Download URL: riichienv-0.3.2.tar.gz
  • Upload date:
  • Size: 293.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for riichienv-0.3.2.tar.gz
Algorithm Hash digest
SHA256 4d0596081434fa7853b5d75d89b809884cfe11f388b7009440edd4c171a9cfe0
MD5 17ee9f1a4cd454ceb04661753c3dd368
BLAKE2b-256 cf7093d0fe3a0c6b08bb3298ad69f57dedb9d46bac40906a73a0eef29cd04713

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2.tar.gz:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 15514b3cd211e78fa944783132fc7421dce693b01381edab20abb97a2587506a
MD5 8a7df90c988be54de2fe78d183b88063
BLAKE2b-256 135a81212a81b38fe1513756ea14132b83f4125e70e787ee2c2ea265672a237d

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6a7f492c5b6e52db8edf46bf453d1e9b3fb96921c542998cc219c09bdef71104
MD5 04c5bfd8fef259756f4f662be9859a36
BLAKE2b-256 4cb76cb6d87cee36ba00663283d934664dae7bce702bfcf2043cb559525537c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 e246bff698282ba39c277d8204de3bea226d2d80b118353aee97cb65382600bd
MD5 bfc07cb780bb96f6707b2529e503746f
BLAKE2b-256 e3d72e477028abdfa7cfb2c4ce15716043b542cf7198e29c1d3c39b222e118f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d37190ce21500abe19daa045fe2c07069fba72958e298da8b03ba3119ad1542e
MD5 140eab84d072d8622d4481f0d3c15fad
BLAKE2b-256 93cfa796bc352f283f699b4db112b76d12734c4af359ba703e2f6b97aa3122b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: riichienv-0.3.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for riichienv-0.3.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 058cde5972545a9302ffe52898ada14d23c2d4923aca8fe0bf4494d7c9dd38ff
MD5 c877d699d5f5b293fe5f90c465210267
BLAKE2b-256 c2bf537153aa728303fdb4d3e21c8e0981c042f48b3a27f4279475eddec520b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp314-cp314-win_amd64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp314-cp314-win32.whl.

File metadata

  • Download URL: riichienv-0.3.2-cp314-cp314-win32.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for riichienv-0.3.2-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 01e9a8a32b38c253e3e497fc6e9666a32117cdb4ea5f9c2d77da089020152005
MD5 c1b0be1a352bfe4d7a31c873b41d8dde
BLAKE2b-256 ba7a5baabf43ce6c84b73388e5af9d63a412bbbeea796276e281d3b0fbcd242b

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp314-cp314-win32.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0a5e9cd521756805dc4e9374f96eb77d01104b06c4289ec9311e0a50eb85ef56
MD5 ddef18c470c3f89c60542d9077c4bfd0
BLAKE2b-256 53958bc8dedbd3e2e328a4fb8d22652e17f9f3add3108219da7b61035b863d7d

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d4ba4e0533cfac7ca199b14e1b0648b670d3768d3e6ab450f3847ff635971585
MD5 e9b4b0938799f3ce6b2e66a51d51af5b
BLAKE2b-256 7bd81361eee262651144d2a0d805b4f4322c3ed312971bd9ebeb715431de48d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 19649c83de698a5085a0a117add722f527c32a81d8d71a4f3c7a523569d85d65
MD5 9a91dd00eace7337eea02641607fe63b
BLAKE2b-256 533bedc18210a686bf242a85d70664b7538fc2c2b70536ed85102dd17f853f80

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 de38b2478922a0de9617ac3a630947d40814885cc0bdc9d3f3fed7b9c8ce1654
MD5 81d6e9b7963baa34e06ba1285347afd0
BLAKE2b-256 ca25a44046f0b74241acb489c2b18addce29f7d935bb98e9286d5144fabecd1a

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ef7c81b784874002f32aee3c95ceb571647fab8199c2f5a5e6befe337161628b
MD5 7b7bf86489dae45cdf84e115dfe1538b
BLAKE2b-256 36855e510d9a673342431100125b73714b424de1e9e42dc7f4fe6cd7f884b2b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: riichienv-0.3.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for riichienv-0.3.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c53cf3335f10e7c318a0cfcf7071ae2916ea2f2d257e3218fd7bc8116b1cbf40
MD5 031773fb1c558f8ef340ecffdd9e2a7a
BLAKE2b-256 0ef20bfcfdb32662e4024a70e0e284be608163f4c249e1bd2c38132ad9da68b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp313-cp313-win_amd64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eb7e8c50025585be874eb49f69a34e3bdfaca67b8b314c16e3ed40d7c2c23a62
MD5 a95b4f5a79621469a7587d24974cb88d
BLAKE2b-256 0bee55e6bca60eddeb549f42883d99b0fa7f0103199fbcbe1bab301ed078006d

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 df99a6cb5488969672c6d3a40fa50cccb723f17de525ea1614f4d664ca8e5307
MD5 b38663cc16430253ddad6c3d97ac7109
BLAKE2b-256 1a16485c1721e441848fbd4b2e369c9604af75dce169d5efdd24d3ec192ddfa4

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 47cc359cb8c5241cd479c53377d545594850b7ffe6839d7e7e8dd7125f572215
MD5 d5115f1170b3a889d548bf40cba897b6
BLAKE2b-256 62da88500b44e684bfbdca04e1547a4688b9ee1e2c1307ce01597b610d151466

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9f1ddb1842d783d3a2ed5f003e066895a7b2147bd549453eb5a749c1d17e1d60
MD5 8a6ffa71bf4034b79eb3a8a1c7b6c0d1
BLAKE2b-256 27ac22664f724a3e564c81ab1c5af600ba7e709ac3cc059f92ce1e1b015d7f90

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: riichienv-0.3.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for riichienv-0.3.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e2137d8a7e1dae1c19a894807f4fe6777ec242bc9574544a9f72a99fcf84313b
MD5 50d9dabdb66cfd7adee0307072627509
BLAKE2b-256 0fe8dcf18b887619061fd7e45e3bae89db0aee7c696c4f8cb3fce60615a89d69

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp312-cp312-win_amd64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bf1fdecdeb0bf2230b1d8b3e1197d668639e2788933fde0a2b87c9d56bf8514c
MD5 4689cce7bfaa5659c2583eb8ab2cdf13
BLAKE2b-256 00f14e4569da8a407f477a6c8cf00a2d869b153de7cf6958d69d91135b05e59c

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5fe9c955c54a875536015e13004805a9297b2933a545bf5279b06056e271bea8
MD5 3e15fdfb12aa122deaf8c92f3a6467a9
BLAKE2b-256 d7c1001b2e0c88e97ded7fa2f52168ec848ed3e0d17e56c96ffa754f936a04bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 078811bbce53b4f6fdabb2ac54b130b1fff3865250f5b2e02179794de7410842
MD5 c62137e1cb45668bbc3fdb84d166dd3f
BLAKE2b-256 9583fca8d8b47ff9407d0547b4cf3bd4a951512a05c89f19459030c67a28f1cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c4f72d39ef2cddcd23afe7fdef3c86b562e4b1cc6fb63bed56888e67307c4665
MD5 f8e79e807423a850bba514a45979eeaa
BLAKE2b-256 666aeebdf8a887872edaf31be0eee84662320480057479edd4481335b835d2c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: riichienv-0.3.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for riichienv-0.3.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c35f779d05e625a2df1986d286cd38e97a3064c7336fd87afe6e410eaed6fab0
MD5 6947a68132554c702da6acfea9906762
BLAKE2b-256 d6780f5adaed4f25de1fa5c09acfdb1636c0ab9efaf7b22214f75e2530f6e84b

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp311-cp311-win_amd64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 16a54199849f669fe0ef79dad325622d4dc954c08996a3fe0d304cb37c7a2b3e
MD5 bb360f2a5051f16d4bef95ccb43e08a9
BLAKE2b-256 d1a79436b8585567c76b721134e0c2a7656e3d941e92b1c6d99f0c110a70e663

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 db0aab9afd6db311a216797817fc6623876497b32fc732c05a56ab74b7586341
MD5 6a346293f448f92b134e1b3b9f97c64c
BLAKE2b-256 30f2679ffa0129b20a3389bd95d3b976c6e0a48d48ef8bd1ca12d02c208f9270

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 9968b3086a795d473fb29167318a486eba5908f22115248c36083916f3c571b1
MD5 d58d1dfa308472de7c8fb823f9aa8bc2
BLAKE2b-256 416a46d8d9ab3ab2ab504da27c60ba0be37ad4a16e29c1719d81722d17a52305

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aeb51983b8d0d7f6730e7ef346dddb1f885f35523c79e192b330646f89340571
MD5 3bb559e3ad803b55892799f468671050
BLAKE2b-256 7dda3d54de7debd1b942fb4e73aed0c3e2a134f5d4d61e287ebdb5562d7b411d

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: riichienv-0.3.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for riichienv-0.3.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 981e82c98209e821f74278a982ad4c491a19f356749b31b7fb3fcac8e9ee1e99
MD5 17497e028efc6192c1cc223d6e04f4d2
BLAKE2b-256 e163f684bc972fb062d27910304c1058e32748527f40470a9c527807b855af56

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp310-cp310-win_amd64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c25764e126fcd520033272546b818bf9e3a6fc2348edd9ff71a9ba5995da5693
MD5 b978491d67c16cc985f7c5186105f0b8
BLAKE2b-256 0fc1cf1a7e9e6ee153c90cb633c297ad90a4758081e6fd016773bb635885b7df

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 751f76ac42aa713e6a690023d2474e61bcdf1d2bcc4ae11b0e0c37051cd7f177
MD5 933c247879e6c3ea5160f9a589fd72b3
BLAKE2b-256 5edbe1d0a880e54b8bbf406be2bebfda8f7a80a40e9c9ceead5f77f4cf2e9974

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file riichienv-0.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for riichienv-0.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 66e556a247cb432d55d031ad92f2d8a0e02029ef4a71b4b3dd19fe2476992616
MD5 4f4972a4426346806375e7ad1e7b1a4e
BLAKE2b-256 a99d28528436a85a796682e14a687d663e2d724100bd25af1260f176193089a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for riichienv-0.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl:

Publisher: release.yml on smly/RiichiEnv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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