Repository: joke2k/faker

Issue:
Documentation mistype
* Faker version:5.5.0
* OS: NA

In [Multiple Locale Mode](https://faker.readthedocs.io/en/stable/fakerclass.html#multiple-locale-mode) session
```
from collections import OrderedDict
from faker import Faker

locale_list = ['en-US', 'ja-JP', 'en_US']
fake1 = Faker(locale_list)

# Will return ['en_US', 'ja_JP']
fake1.locales

locale_odict = OrderedDict([
    ('en-US', 1),
    ('ja-JP', 2),
    ('en_US', 2),
])
fake2 = Faker(odict)

# Will return ['en_US', 'ja_JP']
fake1.locales
```

### Should be changed to

```
from collections import OrderedDict
from faker import Faker

locale_list = ['en-US', 'ja-JP', 'en_US']
fake1 = Faker(locale_list)

# Will return ['en_US', 'ja_JP']
fake1.locales

locale_odict = OrderedDict([
    ('en-US', 1),
    ('ja-JP', 2),
    ('en_US', 2),
])
fake2 = Faker(locale_odict)  ------------- Changed

# Will return ['en_US', 'ja_JP']
fake2.locales ------------- Changed
```



Comments:

Patch:
diff --git a/.bumpversion.cfg b/.bumpversion.cfg
index cd0db80d..8c5bff51 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 5.5.0
+current_version = 5.5.1
 files = VERSION faker/__init__.py docs/conf.py
 commit = True
 tag = True
diff --git a/CHANGELOG.md b/CHANGELOG.md
index eea29449..dd98dce2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 ## Changelog
 
+### [5.5.1 - 2021-01-12](https://github.com/joke2k/faker/compare/v5.5.0...v5.5.1)
+
+* Fix lorem provider ``sentence`` method.
+
 ### [5.5.0 - 2021-01-11](https://github.com/joke2k/faker/compare/v5.4.1...v5.5.0)
 
 * Add elements caching and other optimizations. Thanks @prescod.
diff --git a/VERSION b/VERSION
index d50359de..7acd1cb0 100644
--- a/VERSION
+++ b/VERSION
@@ -1,1 +1,1 @@
-5.5.0
+5.5.1
diff --git a/docs/conf.py b/docs/conf.py
index 5a21619d..27fb8200 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -51,9 +51,9 @@ copyright = '2014, Daniele Faraglia'
 # built documents.
 #
 # The short X.Y version.
-version = '5.5.0'
+version = '5.5.1'
 # The full version, including alpha/beta/rc tags.
-release = '5.5.0'
+release = '5.5.1'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/docs/fakerclass.rst b/docs/fakerclass.rst
index 656b4c8b..0ef8b2be 100644
--- a/docs/fakerclass.rst
+++ b/docs/fakerclass.rst
@@ -183,10 +183,10 @@ OrderedDict with more than one valid locale, post-normalization. For example:
         ('ja-JP', 2),
         ('en_US', 2),
     ])
-    fake2 = Faker(odict)
+    fake2 = Faker(locale_odict)
 
     # Will return ['en_US', 'ja_JP']
-    fake1.locales
+    fake2.locales
 
 In this mode, calling a prospective provider method from the new ``Faker`` instance will run
 factory/selection logic in this order:
diff --git a/faker/__init__.py b/faker/__init__.py
index 3fd38102..b1af3b77 100644
--- a/faker/__init__.py
+++ b/faker/__init__.py
@@ -2,6 +2,6 @@ from faker.factory import Factory
 from faker.generator import Generator
 from faker.proxy import Faker
 
-VERSION = '5.5.0'
+VERSION = '5.5.1'
 
 __all__ = ('Factory', 'Generator', 'Faker')
diff --git a/faker/providers/lorem/__init__.py b/faker/providers/lorem/__init__.py
index cc17fa47..42c4030f 100644
--- a/faker/providers/lorem/__init__.py
+++ b/faker/providers/lorem/__init__.py
@@ -22,7 +22,7 @@ class Provider(BaseProvider):
     sentence_punctuation = '.'
 
     def words(self, nb=3, ext_word_list=None, unique=False):
-        """Generate a list of words.
+        """Generate a tuple of words.
 
         The ``nb`` argument controls the number of words in the resulting list,
         and if ``ext_word_list`` is provided, words from that list will be used
@@ -82,7 +82,7 @@ class Provider(BaseProvider):
         if variable_nb_words:
             nb_words = self.randomize_nb_elements(nb_words, min=1)
 
-        words = self.words(nb=nb_words, ext_word_list=ext_word_list)
+        words = list(self.words(nb=nb_words, ext_word_list=ext_word_list))
         words[0] = words[0].title()
 
         return self.word_connector.join(words) + self.sentence_punctuation


Test patch:
diff --git a/tests/providers/test_lorem.py b/tests/providers/test_lorem.py
index 7ba59859..be45e8b5 100644
--- a/tests/providers/test_lorem.py
+++ b/tests/providers/test_lorem.py
@@ -88,6 +88,10 @@ class TestLoremProvider:
                 words = sentence.lower().replace('.', '').split()
                 assert all(isinstance(word, str) and word in self.custom_word_list for word in words)
 
+    def test_sentence_single_word(self, faker):
+        word = faker.sentence(1)
+        assert str.isupper(word[0])
+
     def test_paragraph_no_sentences(self, faker, num_samples):
         for _ in range(num_samples):
             assert faker.paragraph(0) == ''