Module for creating match links on Lichess that players can join
Project description
play-lichess
Python module for creating match links on Lichess that two players can join
Note: Until version 0.1.3, the requests were done synchronously using
requests. Starting with version 1.0.0, all requests are done asynchronously usingaiohttp.
📥 Installation
pip install play-lichess
🧑💻 Usage
Start a real-time match
from play_lichess import RealTimeMatch
async def create_match():
match = await RealTimeMatch.create()
print(match.challenge_id) # e.g. 'f1S4BBYW'
print(match.challenge_url) # e.g. 'https://lichess.org/f1S4BBYW'
print(match.status) # 'created'
print(match.variant) # Variant.STANDARD
print(match.rated) # False
print(match.speed) # TimeMode.BLITZ
print(match.time_control.show) # '5+0'
print(match.color) # Color.RANDOM
print(match.url_white) # e.g. 'https://lichess.org/f1S4BBYW?color=white'
print(match.url_black) # e.g. 'https://lichess.org/f1S4BBYW?color=black'
print(match.name) # None
asyncio.run(create_match()) # import asyncio to call async functions outside event loop
Start a correspondence match
from play_lichess import CorrespondenceMatch
async def correspondence_match():
match = await CorrespondenceMatch.create()
print(match.challenge_id) # e.g. 'KGO4ICDn'
print(match.challenge_url) # e.g. 'https://lichess.org/KGO4ICDn'
print(match.status) # 'created'
print(match.variant) # Variant.STANDARD
print(match.rated) # False
print(match.speed) # TimeMode.CORRESPONDENCE
print(match.time_control.type) # TimeControlType.CORRESPONDENCE
print(match.time_control.days_per_turn) # 1
print(match.color) # Color.RANDOM
print(match.url_white) # e.g. 'https://lichess.org/KGO4ICDn?color=white'
print(match.url_black) # e.g. 'https://lichess.org/KGO4ICDn?color=black'
print(match.name) # None
Start an unlimited time match
from play_lichess import UnlimitedMatch
async def unlimited_correspondence_match():
match = await UnlimitedMatch.create()
print(match.challenge_id) # e.g. 'JLA868mV'
print(match.challenge_url) # e.g. 'https://lichess.org/JLA868mV'
print(match.status) # 'created'
print(match.variant) # Variant.STANDARD
print(match.rated) # False
print(match.speed) # TimeMode.CORRESPONDENCE
print(match.time_control.type) # TimeControlType.UNLIMITED
print(match.color) # Color.RANDOM
print(match.url_white) # e.g. 'https://lichess.org/JLA868mV?color=white'
print(match.url_black) # e.g. 'https://lichess.org/JLA868mV?color=black'
print(match.name) # None
Specify game options
from play_lichess import RealTimeMatch, Variant
async def create_match_options():
match: RealTimeMatch = await RealTimeMatch.create(
rated=False,
clock_limit=180,
clock_increment=0,
variant=Variant.ANTICHESS,
name="Test match",
)
print(match.challenge_id) # e.g. 'cuZGwbcO'
print(match.challenge_url) # e.g. 'https://lichess.org/cuZGwbcO'
print(match.status) # 'created'
print(match.variant) # Variant.ANTICHESS
print(match.rated) # False
print(match.speed) # TimeMode.BLITZ
print(match.time_control.show) # '3+0'
print(match.color) # Color.RANDOM
print(match.url_white) # e.g. 'https://lichess.org/cuZGwbcO?color=white'
print(match.url_black) # e.g. 'https://lichess.org/cuZGwbcO?color=black'
print(match.name) # 'Test match'
Alternate syntax
from play_lichess import Match
async def create_any_match():
# real-time
match1 = await Match.create(clock_limit=180, clock_increment=0)
# unlimited time
match2 = await Match.create(clock_limit=None, clock_increment=None)
# correspondence
match3 = await Match.create(days=1, clock_limit=None, clock_increment=None)
🔧 Options
Real-time
| Argument | Type | Default | Description |
|---|---|---|---|
rated |
bool |
False |
Whether the match is rated or not. |
clock_limit |
int |
300 |
The time limit in seconds. |
clock_increment |
int |
0 |
The time increment in seconds. |
variant |
Variant |
STANDARD |
The variant of the match (STANDARD, CHESS960, etc.) |
fen |
str |
Start position | The FEN string of the starting position. |
name |
str |
None |
The name of the match displayed when joining. |
Correspondence
| Argument | Type | Default | Description |
|---|---|---|---|
rated |
bool |
False |
Whether the match is rated or not. |
days |
int |
1 |
The number of days for each player. |
variant |
Variant |
STANDARD |
The variant of the match (STANDARD, CHESS960, etc.) |
fen |
str |
Start position | The FEN string of the starting position. |
name |
str |
None |
The name of the match displayed when joining. |
Unlimited
| Argument | Type | Default | Description |
|---|---|---|---|
variant |
Variant |
STANDARD |
The variant of the match (STANDARD, CHESS960, etc.) |
fen |
str |
Start position | The FEN string of the starting position. |
name |
str |
None |
The name of the match displayed when joining. |
Variants
Variants are defined in the Variant enum and include:
Variant.STANDARD(default)Variant.CRAZYHOUSEVariant.CHESS960Variant.KING_OF_THE_HILLVariant.THREE_CHECKVariant.ANTICHESSVariant.ATOMICVariant.HORDEVariant.RACING_KINGS
🧰 Development
To run tests (pytest/tox)
# Install tox
pip install -U tox
# Run tests
tox
To lint (pyright)
# Install pyright
pip install -U pyright
# Run pyright
pyright
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file play-lichess-1.1.1.tar.gz.
File metadata
- Download URL: play-lichess-1.1.1.tar.gz
- Upload date:
- Size: 10.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82f8aa1fcd6b3d0c34ef737354def713c3dfb641a4fd688cc9a116ee4dc16a55
|
|
| MD5 |
45bdc6fb6681ca71b3c469313dd986fe
|
|
| BLAKE2b-256 |
f69c9337793ab98e940bf54d488ea82efc17bb5f5f937293d9755b7c2954e0da
|
File details
Details for the file play_lichess-1.1.1-py3-none-any.whl.
File metadata
- Download URL: play_lichess-1.1.1-py3-none-any.whl
- Upload date:
- Size: 9.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0dc33d03d64d22693dc798af8831f336f892619beb2497c2aca0cbba6ef0b533
|
|
| MD5 |
4b1a16e8e60a51f5242d14b414073d47
|
|
| BLAKE2b-256 |
41978e804e6adf62bb900c1ce022d14b7ebac8c68d7ca440234c46fad1d762ec
|