Functionalities for playing cards
Project description
cardspy
A Python library for modeling and manipulating playing cards, decks, suits, and ranks. Provides utilities for games, simulations, and card-based logic.
Features
- Full 52-card deck modeling
- Card, Suit, and Rank objects with rich properties
- Deck operations: shuffle, deal, add/remove cards, reset, clear
- Bitmask utilities for efficient card set operations
- 100% test coverage
Installation
pip install cardspy
Quick Start
from cardspy.deck import Deck
from cardspy.card import Card, C2C, C3D, sort_cards, cards_mask, extract_cards, rank_mask_from_cards
from cardspy.suit import CLUB, DIAMOND, HEART, SPADE
from cardspy.rank import R2, R3, R4, R5, R6, R7, R8, R9, RT, RJ, RQ, RK, RA
# Create a new deck
deck = Deck()
print(f"Deck has {deck.count()} cards") # 52
# Shuffle and deal 5 cards
deck.shuffle()
cards_mask_val = deck.deal_cards(5) # Bitmask of 5 cards
dealt_cards = extract_cards(cards_mask_val)
print("Dealt:", [str(card) for card in dealt_cards])
# Remove a card
deck.remove_card(C2C.key)
print(deck.contains(C2C.key)) # False
# Add a card back
deck.add_card(C2C.key)
print(deck.contains(C2C.key)) # True
# Sort cards
sorted_cards = sort_cards(dealt_cards)
print("Sorted:", [str(card) for card in sorted_cards])
# Bitmask utilities
mask = cards_mask([C2C, C3D])
print(mask)
print(extract_cards(mask))
print(rank_mask_from_cards(mask))
API Reference
Card
Card(key, rank, suit, code, name, symbol)- Predefined constants:
C2C,C2D, ...,CAS(all 52 cards) - Methods:
__str__(),__repr__()
Suit
Suit(key, code, name, symbol)- Predefined:
CLUB,DIAMOND,HEART,SPADE
Rank
Rank(key, code, name)- Predefined:
R2,R3, ...,RA
Deck
Deck()— creates a new deck (full 52 cards)deck.shuffle()— shuffle deckdeck.clear()— remove all cardsdeck.reset()— restore to full deckdeck.count()— number of cardsdeck.get_cards()— list ofCardobjects in deckdeck.add_card(card_key)— add a card by keydeck.add_cards(cards_key)— add multiple cards by bitmaskdeck.remove_card(card_key)— remove a card by keydeck.remove_cards(cards_key)— remove multiple cards by bitmaskdeck.deal_cards(count, shuffle=True)— deal N cards, returns bitmaskdeck.deal_specific_card(card_key)— deal a specific carddeck.deal_specific_cards(cards_key)— deal specific cards by bitmaskdeck.contains(card_key)— check if card is present
Utility Functions (in cardspy.card)
sort_cards(cards)— sort by rankcards_mask(cards)— get bitmask from list of cardsextract_cards(mask)— get list of cards from bitmaskextract_cards_key(mask)— get list of card keys from bitmaskrank_mask_from_cards(mask)— get rank bitmask from card bitmask
Example: Poker Hand Evaluation
from cardspy.card import C2C, C3C, C4C, C5C, C6C, cards_mask, extract_cards
# Create a straight flush
hand = [C2C, C3C, C4C, C5C, C6C]
mask = cards_mask(hand)
print("Hand mask:", mask)
print("Extracted:", extract_cards(mask))
Testing
To run the tests and check coverage:
pytest --cov=cardspy --cov-report=term-missing
License
MIT
For more details, see the source code and tests in the cardspy and tests directories.
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
cardspy-1.0.1.tar.gz
(4.9 kB
view details)
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 cardspy-1.0.1.tar.gz.
File metadata
- Download URL: cardspy-1.0.1.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.10.12 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e743d6ac3afc92835ca8b4fd1c38d937be9dcac914ffe4513e1426a59011232
|
|
| MD5 |
28140e5d144acc6080aaf3de2d85ea3e
|
|
| BLAKE2b-256 |
a69961d2064ba785d8822e1f36926b09249899bc15f0f94872bdd06b1a100ca1
|
File details
Details for the file cardspy-1.0.1-py3-none-any.whl.
File metadata
- Download URL: cardspy-1.0.1-py3-none-any.whl
- Upload date:
- Size: 6.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.10.12 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c74fe49d86f75b8b9f1c52463a8f05c3aedf0e0be114e5d7d877e122b0bbb504
|
|
| MD5 |
35bfb6b663bda31badb4d71f2e9f5737
|
|
| BLAKE2b-256 |
7e273c0b3a8759f7f9b25a3e91cfe20ed28905b19c2c9ba2c623b2b531f65bee
|