https://github.com/projectweekend/pycards
Playing Cards
https://github.com/projectweekend/pycards
Last synced: 10 months ago
JSON representation
Playing Cards
- Host: GitHub
- URL: https://github.com/projectweekend/pycards
- Owner: projectweekend
- License: mit
- Created: 2015-08-29T20:23:29.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2022-12-26T19:54:45.000Z (over 3 years ago)
- Last Synced: 2025-07-11T14:47:12.840Z (12 months ago)
- Language: Python
- Size: 16.6 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://build.exitcodezero.io/projectweekend/PyCards)
### Install it
```
pip install PyCards
```
### Base Card Class
This is a generic base class with no defined constructor method. It only includes helper methods for converting to and from dict/json.
```python
from pycards import BaseCard
# Create a card instance from a dictionary
card_dict = {'rank': 'ACE', 'suit': 'SPADES'}
card = BaseCard.from_dict(card_dict=card_dict)
# Create a card instance from JSON
card_json = '{"rank": "ACE", "suit": "SPADES"}'
card = BaseCard.from_json(card_json=card_json)
card.rank
# 'ACE'
card.suit
# 'SPADES'
card.to_dict()
# {'rank': 'ACE', 'suit': 'SPADES'}
card.to_json()
# '{"rank": "ACE", "suit": "SPADES"}'
# Create a list of cards from JSON or a list of dictionaries
cards_config_json = '[{"rank": "ACE", "suit": "SPADES"}]'
cards = BaseCard.generate_cards(config=cards_config_json)
for card in cards:
print(card.rank)
# 'ACE'
print(card.suit)
# 'SPADES'
```
### Base Deck Class
This is a generic base class for interacting with a list of card objects.
```python
# Create a list of cards from JSON or a list of dictionaries
cards_config_json = '[{"rank": "ACE", "suit": "SPADES"}]'
cards = BaseCard.generate_cards(config=cards_config_json)
# Create a deck instance with a list of cards
deck = BaseDeck(cards=cards)
card = deck.draw_card()
card.rank
# 'ACE'
card.suit
# 'SPADES'
deck.cards_remaining
# 0
deck.cards_removed
# 1
# Shuffle all removed cards back into deck
deck.shuffle()
deck.cards_remaining
# 1
deck.cards_removed
# 0
deck.to_dict()
# {'cards_remaining': [{'rank': 'ACE', 'suit': 'SPADES'}], 'cards_removed': []}
deck.to_json()
# '{"cards_remaining": [{"rank": "ACE", "suit": "SPADES"}], "cards_removed": []}'
deck_dict = {'cards_remaining': [{'rank': 'ACE', 'suit': 'SPADES'}], 'cards_removed': []}
deck = BaseDeck.from_dict(card_cls=BaseCard, deck_dict=deck_dict)
deck_json = '{"cards_remaining": [{"rank": "ACE", "suit": "SPADES"}], "cards_removed": []}'
deck = BaseDeck.from_json(card_cls=BaseCard, deck_json=deck_json)
```
### Run Tests
After cloning this repo:
```
pip install -r requirements.txt
```
```
nosetests -v --with-coverage --cover-erase --cover-package=pycards --cover-html
```