- PEP 8, when sensible.
- Conventions and configuration.
- TextBlob wraps functionality in NLTK and pattern.en. Anything outside of that should be written as an extension.
- Test ruthlessly. Write docs for new features.
- Even more important than Test-Driven Development–Human-Driven Development.
- These guidelines may–and probably will–change.
Questions, Feature Requests, Bug Reports, and Feedback. . .¶
. . .should all be reported on the Github Issue Tracker .
Setting Up for Local Development¶
Fork TextBlob on Github.
$ git clone https://github.com/sloria/TextBlob.git $ cd TextBlob
Install development requirements. It is highly recommended that you use a virtualenv.
# After activating your virtualenv $ pip install -r dev-requirements.txt
Install TextBlob in develop mode.
$ python setup.py develop
Extensions are packages with the name
textblob-something, where “something” is the name of your extension. Extensions should be imported with
To create a new extension for a part-of-speech tagger, sentiment analyzer, noun phrase extractor, classifier, tokenizer, or parser, simply create a module that has a class that implements the correct interface from
textblob.base. For example, a tagger might look like this:
from textblob.base import BaseTagger class MyTagger(BaseTagger): def tag(self, text): # Your implementation goes here
The process for developing language extensions is the same as developing model extensions. Create your part-of-speech taggers, tokenizers, parsers, etc. in the language of your choice. Packages should be named
textblob-xx where “xx” is the two- or three-letter language code (Language code reference).
To see examples of existing extensions, visit the Extensions page.
Check out the API reference for more info on the model interfaces.
Git Branch Structure¶
TextBlob loosely follows Vincent Driessen’s Successful Git Branching Model . In practice, the following branch conventions are used:
- The next release branch.
- Current production release on PyPI.
1. Create a new local branch.
$ git checkout -b name-of-feature
2. Commit your changes. Write good commit messages.
$ git commit -m "Detailed commit message" $ git push origin name-of-feature
- Before submitting a pull request, check the following:
- If the pull request adds functionality, it is tested and the docs are updated.
- If you’ve developed an extension, it is on the Extensions List.
- The pull request works on Python 2.7, 3.4, 3.5, 3.6, and PyPy. Use
toxto verify that it does.
- You’ve added yourself to
- Submit a pull request to the
To run all the tests:
$ python run_tests.py
To skip slow tests:
$ python run_tests.py fast
To skip tests that require internet:
$ python run_tests.py no-internet
To get test coverage reports (must have coverage installed):
$ python run_tests.py cover
To run tests on Python 2.7, 3.4, 3.5, and 3.6 virtual environments (must have each interpreter installed):
To build docs:
$ invoke docs -b
-b (for “browse”) automatically opens up the docs in your browser after building.