Skip to content

jojoee/wordcookies

Repository files navigation

Word Cookies

Word Cookies helper

continuous integration PyPI version fury.io License: MIT codecov

Docker Stars Docker Pulls Image

Demo

Demo Demo

Usage

Library

Install the package then

from wordcookies import game
from pprint import pprint

word = "word"
chars = game.clean(word)
answers = game.get_possible_answers(chars)
g = game.group(answers)
pprint(g, width=120)

"""
{2: ['do', 'dr', 'dw', 'od', 'or', 'ow', 'rd', 'ro', 'rw', 'wd', 'wo', 'wr'],
 3: ['dor', 'dow', 'ord', 'owd', 'owr', 'rod', 'row', 'rwd', 'wod', 'wro'],
 4: ['drow', 'word']}
"""

CLI

Install the package then

python -m wordcookies cli
python -m wordcookies cli --word="word"
python -m wordcookies cli --word="word" --exit

Web (Docker)

Install Docker then run the jojoee/wordcookies Docker image by the command below

docker run -p 8082:9001 --name ctn_wordcookies jojoee/wordcookies
curl localhost:8082

Web (Docker Compose)

Install Docker and Docker Compose then

cd ./web
docker-compose -f docker-compose.yaml up

Installation

pip install wordcookies

# or
git clone https://github.com/jojoee/wordcookies
cd wordcookies
python setup.py install

Features

  • [demo] Add cli demo gif
  • [demo] Add web demo gif
  • [ci] setup continuous integration
  • [cd] setup continuous delivery
  • [pypi] Deploy to https://pypi.org/project/wordcookies/
  • [test] Add more test
  • [cli] add Usage section
  • [web][docker] use Python base image instead of current
  • [web][docker] generate dict while building a Docker image
  • [web] add web version
  • [web][docker] add Docker support
  • [web][cache] with file and Redis
  • [web][cache] pre-caching most common word
  • [web] enhance UI
  • [dict] using nltk data is not good enough, so need to combine with "ahmadly/WordCookiesCheat" (you can try with beginner level, some word is missing)
  • [web] add e2e test
  • [web] compress data when saving into Redis

Development

conda -V
conda deactivate
conda remove --name wordcookies --all
conda create --name wordcookies python=3.7.5
conda activate wordcookies
python -V
pip list

# lib, dev
pip install -r requirements.txt
PYTHONPATH="$PWD" python wordcookies/cli.py
pip freeze > requirements.txt

# lib, test
conda remove --name wordcookies_test --all
conda create --name wordcookies_test python=3.7.5
conda activate wordcookies_test
pip install -r requirements.txt
python -m flake8 --ignore=E501 wordcookies tests
python -m pytest tests --cov=./ --cov-report=xml
pip install .
python -m wordcookies cli
python -m wordcookies cli --word="word"
python -m wordcookies cli --word="word" --exit

# lib, test pypi
pip install twine # package for publishing
python setup.py sdist bdist_wheel # build the package

# web
cd ./web
conda remove --name wordcookies_web --all
conda create --name wordcookies_web python=3.7.5
conda activate wordcookies_web
pip install -r requirements.txt
uvicorn main:app --reload --port 9002 # dev + hot reload
uvicorn main:app --port 9002 & # dev
python main.py # run on prod

# web, util
lsof -i -n -P | grep 9002
docker run -p 6379:6379 --name ctn_redis -d redis:6.0.8

# web, Cocker
cd ./web
docker build -f Dockerfile -t jojoee/wordcookies:dev .
docker run -p 8082:9001 --name ctn_wordcookies jojoee/wordcookies:dev
docker run -p 8082:9001 --name ctn_wordcookies jojoee/wordcookies
docker start ctn_wordcookies
https://localhost:8082/healthcheck
https://localhost:8082/404

# web, Docker Compose
docker-compose -f docker-compose.yaml up
docker-compose -f docker-compose.dev.yaml up --build
docker-compose -f docker-compose.dev.yaml up

Reference