> **Backwards compatibility note:** `python -m textattack <args>` is renamed to `python -m textattack attack <args>`. Or, better yet, `textattack attack <args>`!
Big improvements
- add `textattack` command (132)
- add `textattack augment`, `textattack eval`, `textattack attack`, `textattack list` (132)
- add `textattack train`, `textattack peek-dataset`, and lots of infrastructure for training models (139)
- Move all datasets to [`nlp`](https://github.com/huggingface/nlp/) format; temporarily remove non-NLP datasets (AGNews, English->German translation) (#134)
Smaller improvements
- Better output formatted -- show labels ("Positive", "Entailment") and confidence score (91%) in output (142)
- add `MaxLengthModification` constraint that prevents modifications beyond tokenizer max_length (143)
- Add `pytest` tests and code formatting with `black`; run tests on Python 3.6, 3.7, 3.8 with Travis CI (127, 136)
- Update NLTK part-of-speech constraint and support part-of-speech tagging with FLAIR instead (135)
- add `BERTScore` constrained based on ["BERTScore: Evaluating Text Generation with BERT" (Zhang et al, 2019)](https://arxiv.org/abs/1904.09675) (#146)
- make logging to file optional (145)
- Updates to `Checkpoint` class; track attack results in a worklist; attack resume fixes (128, 141)
- Silence Weights & Biases warning message when not being used (130)
- Optionally point all cache directories to a universal cache directory, `TA_CACHE_DIR` (150)
Bug fixes
- Fix a bug that can be encountered when resuming attacks from checkpoints (149)
- Fix a bug in Greedy word-importance-ranking deletion (152)
- Documentation updates and fixes (153)