"""Config for PyPI."""

from setuptools import find_packages
from setuptools import setup


setup(
    author='Kyle P. Johnson',
    author_email='kyle@kyle-p-johnson.com',
    classifiers=[
        'Intended Audience :: Education',
        'Intended Audience :: Science/Research',
        'License :: OSI Approved :: MIT License',
        'Natural Language :: Chinese (Traditional)',
        'Natural Language :: English',
        'Natural Language :: Greek',
        'Natural Language :: Latin',
        'Operating System :: POSIX',
        'Programming Language :: Python :: 3.6',
        'Topic :: Scientific/Engineering :: Artificial Intelligence',
        'Topic :: Text Processing',
        'Topic :: Text Processing :: General',
        'Topic :: Text Processing :: Linguistic',
    ],
    description='NLP for the ancient world',
    install_requires=['gitpython',
                      'nltk',
                      'python-crfsuite',
                      'pyuca',
                      'pyyaml',
                      'regex',
                      'whoosh'],
    keywords=['nlp', 'nltk', 'greek', 'latin', 'chinese', 'sanskrit', 'pali', 'tibetan'],
    license='MIT',
    long_description='The Classical Language Toolkit (CLTK) is a framework for natural language processing for Classical languages.',  # pylint: disable=C0301,
    name='cltk',
    packages=find_packages(),
    url='https://github.com/cltk/cltk',
    version='0.1.63',
    zip_safe=True,
    test_suite='cltk.tests.test_cltk',
)

setup.py
"""Config for PyPI."""

from setuptools import find_packages
from setuptools import setup


setup(
    author='Kyle P. Johnson',
    author_email='kyle@kyle-p-johnson.com',
    classifiers=[
        'Intended Audience :: Education',
        'Intended Audience :: Science/Research',
        'License :: OSI Approved :: MIT License',
        'Natural Language :: Chinese (Traditional)',
        'Natural Language :: English',
        'Natural Language :: Greek',
        'Natural Language :: Latin',
        'Operating System :: POSIX',
        'Programming Language :: Python :: 3.6',
        'Topic :: Scientific/Engineering :: Artificial Intelligence',
        'Topic :: Text Processing',
        'Topic :: Text Processing :: General',
        'Topic :: Text Processing :: Linguistic',
    ],
    description='NLP for the ancient world',
    install_requires=['gitpython',
                      'nltk',
                      'python-crfsuite',
                      'pyuca',
                      'pyyaml',
                      'regex',
                      'whoosh'],
    keywords=['nlp', 'nltk', 'greek', 'latin', 'chinese', 'sanskrit', 'pali', 'tibetan'],
    license='MIT',
    long_description='The Classical Language Toolkit (CLTK) is a framework for natural language processing for Classical languages.',  # pylint: disable=C0301,
    name='cltk',
    packages=find_packages(),
    url='https://github.com/cltk/cltk',
    version='0.1.64',
    zip_safe=True,
    test_suite='cltk.tests.test_cltk',
)

setup.py
diff --git a/docs/french.rst b/docs/french.rst
index 00d02f29f..27d84b0dc 100644
--- a/docs/french.rst
+++ b/docs/french.rst
@@ -11,9 +11,9 @@ The lemmatizer takes as its input a list of tokens, previously tokenized and mad
 .. It first seeks a match between each token and a list of potential lemmas taken from Godefroy (1901)’s Lexique, the Tobler-Lommatszch, and the DECT. If a match is not found, the lemmatizer then seeks a match between the forms different lemmas have been known to take and the token (this at present only applies to lemmas from A-D and W-Z). If no match is returned at this stage, a set of rules is applied to the token. These rules are similar to those applied by the stemmer but aim to bring forms in line with lemmas rather than truncating them. Finally, if no match is found between the modified token and the list of lemmas, a result of ‘None’ is returned.
 
 .. References:
-..- Godefroy. 1901. Lexique de l'Ancien Français. Paris & Leipzig : Welter.
-..- Tobler, Adolf and Erhard Lommatzsch. 1915. Altfranzösisches Wörterbuch. Adolf Toblers nachgelassene Materialen, bearbeitet und herausgegeben von Erhard Lommatzsch, wietergeführt von Hans Helmut Christmann. Stuttgart: Franz Steiner Verlag.
-..- DÉCT : Dictionnaire Électronique de Chrétien de Troyes, http://www.atilf.fr/dect, LFA/Université d'Ottawa - ATILF/CNRS & Université de Lorraine. 2014.
+..  Godefroy. 1901. Lexique de l'Ancien Français. Paris & Leipzig : Welter.
+..  Tobler, Adolf and Erhard Lommatzsch. 1915. Altfranzösisches Wörterbuch. Adolf Toblers nachgelassene Materialen, bearbeitet und herausgegeben von Erhard Lommatzsch, wietergeführt von Hans Helmut Christmann. Stuttgart: Franz Steiner Verlag.
+..  DÉCT : Dictionnaire Électronique de Chrétien de Troyes, http://www.atilf.fr/dect, LFA/Université d'Ottawa - ATILF/CNRS & Université de Lorraine. 2014.
 
 
 .. code-block:: python
@@ -49,7 +49,7 @@ The line tokenizer takes a string as its input and returns a list of strings.
     In [3]: untokenized_text = """Ki de bone matire traite,\nmult li peise, se bien n’est faite.\nOëz, seignur, que dit Marie,\nki en sun tens pas ne s’oblie."""
 
     In [4]: tokenizer.tokenize(untokenized_text)
-    Out[4]: ['Ki de bone matire traite,', 'mult li peise, se bien n’est faite.','Oëz, seignur, que dit Marie,', 'ki en sun tens pas ne s’oblie. ']
+    Out [4]: ['Ki de bone matire traite,', 'mult li peise, se bien n’est faite.','Oëz, seignur, que dit Marie,', 'ki en sun tens pas ne s’oblie. ']
 
 
 NAMED ENTITY RECOGNITION
@@ -79,7 +79,7 @@ Categories are modeled on those found in (`Moisan, 1986 <https://books.google.fr
     In [3]: ner_replacer = NamedEntityReplacer()
 
     In [4]: ner_replacer.tag_ner_fr(text_str)
-    Out[4]: [[('Berte', 'entity', 'CHI')], ('fu',), ('mere',), [('Charlemaine', 'entity', 'CHI')], (',',), ('qui',), ('pukis',), ('tint',), [('France', 'entity', 'LOC')], ('et',), ('tot',), ('le',), [('Maine', 'entity', 'LOC')], ('.',)]
+    Out [4]: [[('Berte', 'entity', 'CHI')], ('fu',), ('mere',), [('Charlemaine', 'entity', 'CHI')], (',',), ('qui',), ('pukis',), ('tint',), [('France', 'entity', 'LOC')], ('et',), ('tot',), ('le',), [('Maine', 'entity', 'LOC')], ('.',)]
 
 .. Reference: Moisan, A. 1986. Répertoire des noms propres de personnes et de lieux cités dans les Chansons de Geste françaises et les œuvres étrangères dérivées. Publications romanes et françaises CLXXIII. Geneva: Droz.
 
@@ -137,7 +137,9 @@ The stopword filterer removes the function words from a string of OF or MF text.
     In [6]: tokens = tokenizer.tokenize(text)
 
     In [7]: no_stops = [w for w in tokens if w not in FRENCH_STOPS]
-    Out [7]: ['pensé', 'talant', 'yonec', 'die', 'avant', 'dunt', 'nez', ',', 'pere', 'cum', 'primes', 'mere', '.']
+
+    In [8]: no_stops
+    Out [8]: ['pensé', 'talant', 'yonec', 'die', 'avant', 'dunt', 'nez', ',', 'pere', 'cum', 'primes', 'mere', '.']
 
 
 
@@ -152,7 +154,7 @@ WORD TOKENIZATION
     In [3]: text = "S'a table te veulz maintenir, Honnestement te dois tenir Et garder les enseignemens Dont cilz vers sont commancemens."
 
     In [4]: word_tokenizer.tokenize(text)
-    Out[4]: ["S'", 'a', 'table', 'te', 'veulz', 'maintenir', ',', 'Honnestement', 'te', 'dois', 'tenir', 'Et', 'garder', 'les', 'enseignemens', 'Dont', 'cilz', 'vers', 'sont', 'commancemens', '.']
+    Out [4]: ["S'", 'a', 'table', 'te', 'veulz', 'maintenir', ',', 'Honnestement', 'te', 'dois', 'tenir', 'Et', 'garder', 'les', 'enseignemens', 'Dont', 'cilz', 'vers', 'sont', 'commancemens', '.']
 
 
 Apostrophes are considered part of the first word of the two they separate. Apostrophes are also normalized from “’” to “'“.
diff --git a/docs/index.rst b/docs/index.rst
index e8093079d..35cbc0a60 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -23,6 +23,7 @@ Contents
    ancient_egyptian
    old_english
    middle_english
+   french
    greek
    hebrew
    hindi
diff --git a/setup.py b/setup.py
index 3000443fa..c374d6620 100644
--- a/setup.py
+++ b/setup.py
@@ -36,7 +36,7 @@
     name='cltk',
     packages=find_packages(),
     url='https://github.com/cltk/cltk',
-    version='0.1.63',
+    version='0.1.64',
     zip_safe=True,
     test_suite='cltk.tests.test_cltk',
 )

Double-check code and data for new French PR
This issue is for @nat1881 to follow up on her large PR #571 for Old and Middle French.

Natasha, I would like you to do the following steps, to be certain that the code works as you intended:

* Start a brand new clone of (this) cltk repo.
* Make a new virtual env
* Mk source tarball and install (this should install all dependencies, too): `python setup.py sdist install`
* Temporarily rename your `~/cltk_data` dir (eg, `mv ~/cltk_data ~/cltk_data_backup`)
* Import the french corpora and make sure they appear as they should
* Check in ipython all of your commands that you have added to the docs. Copy-paste these exactly as they are in the docs.
* Follow up on any bugs in your own updated branch ([this is what I recommend for updating your branch](https://github.com/cltk/cltk/wiki/Example-Git-and-Python-workflow))
* Bump the version in `setup.py` and make PR for this
* Then @diyclassics or I will push the code to PyPI

You may be tired of this, but you're getting close! :weary:

cc @mlj 
