Repository: joke2k/faker
Pull request #2118 (2024-10-12 20:07:25)

Added Providers for `uz_UZ` language
### What does this change
New providers have been added for `uz_UZ` language.

### What was wrong
The support for Uzbek language did not exist.

### How this fixes it
I've added following providers:
* date_time
* color
* person
* currency
* phone_number

### Checklist

- [x] I have read the documentation about [CONTRIBUTING](https://github.com/joke2k/faker/blob/master/CONTRIBUTING.rst)
- [x] I have read the documentation about [Coding style](https://github.com/joke2k/faker/blob/master/docs/coding_style.rst)
- [x] I have run `make lint`



Patch:
diff --git a/.bumpversion.cfg b/.bumpversion.cfg
index e073e37a..13622cc4 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 30.3.0
+current_version = 30.8.2
 files = VERSION faker/__init__.py docs/conf.py
 commit = True
 tag = True
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 5bffacfa..e6e915bc 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -256,7 +256,7 @@ jobs:
     - name: Set up Python
       uses: actions/setup-python@v5
       with:
-        python-version: '3.x'
+        python-version: '3.12'
     - name: Install dependencies
       run: |
         python -m pip install tox==3.27.1 setuptools
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e69f7edc..9b912c36 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,34 @@
 ## Changelog
 
+### [v30.8.2 - 2024-10-31](https://github.com/joke2k/faker/compare/v30.8.1...v30.8.2)
+
+* Revert "Add decorator to optionally format dates as string.".
+
+### [v30.8.1 - 2024-10-24](https://github.com/joke2k/faker/compare/v30.8.0...v30.8.1)
+
+* Fix `month_in_guj`.
+
+### [v30.8.0 - 2024-10-21](https://github.com/joke2k/faker/compare/v30.7.0...v30.8.0)
+
+* Update city names for `uk_UA`. Thanks @lexxai.
+
+### [v30.7.0 - 2024-10-21](https://github.com/joke2k/faker/compare/v30.6.0...v30.7.0)
+
+* Add person provider for `gu_IN` locale. Thanks @debjeetsingha.
+* Add `datetime` provider for `gu_IN` locale. Thanks @wh0th3h3llam1.
+
+### [v30.6.0 - 2024-10-16](https://github.com/joke2k/faker/compare/v30.5.0...v30.6.0)
+
+* Add passport provider for `ru_RU` locale. Thanks @Abdujabbar.
+
+### [v30.5.0 - 2024-10-16](https://github.com/joke2k/faker/compare/v30.4.0...v30.5.0)
+
+* Add Providers for `ka_GE` locale. Thanks @onesch.
+
+### [v30.4.0 - 2024-10-15](https://github.com/joke2k/faker/compare/v30.3.0...v30.4.0)
+
+* Add separate male/female names along with prefix/suffix for `hi_IN` locale. Thanks @wh0th3h3llam1.
+
 ### [v30.3.0 - 2024-10-07](https://github.com/joke2k/faker/compare/v30.2.0...v30.3.0)
 
 * Add decorator to optionally format dates as string. Thanks @browniebroke.
@@ -268,7 +297,7 @@
 
 ### [v22.0.0 - 2023-12-29](https://github.com/joke2k/faker/compare/v21.0.1...v22.0.0)
 
-* Remove dot from `file_name` when `extention` is the empty string. Thanks @gotofritz
+* Remove dot from `file_name` when `extension` is the empty string. Thanks @gotofritz
 * Allow extension in `file_path` to take a list of allowed extensions, or empty for "no extension". Thanks @gotofritz
 
 ### [v21.0.1 - 2023-12-29](https://github.com/joke2k/faker/compare/v21.0.0...v21.0.1)
@@ -2076,7 +2105,7 @@
 * Localized providers
 * Updated ``ko_KR`` provider. Thanks Lee Yeonjae.
 * Added ``pt_PT`` provider. Thanks João Delgado.
-* Fixed mispellings for ``en_US`` company provider. Thanks Greg Meece.
+* Fixed misspellings for ``en_US`` company provider. Thanks Greg Meece.
 * Added currency provider. Thanks Wiktor Ślęczka
 * Ensure choice_distribution always uses floats. Thanks Katy Lavallee.
 * Added ``uk_UA`` provider. Thanks Cyril Tarasenko.
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 3f939bfd..bd47b86f 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -13,6 +13,13 @@ Getting Started
 -  Fork the repository on GitHub
 -  Please only make changes or add data to locales you're familiar with.
 
+Adding Providers
+----------------
+
+We only accept providers that are useful for general use. If you want to add a
+domain-specific provider, you can package it independently, and we'll be happy to
+add it to our `community providers`_ page.
+
 Making Changes
 --------------
 
@@ -51,3 +58,5 @@ Additional Resources
 
 
 .. _`coding style`: https://github.com/joke2k/faker/blob/master/docs/coding_style.rst
+.. _`community providers`: https://github.com/joke2k/faker/blob/master/docs/communityproviders.rst
+
diff --git a/VERSION b/VERSION
index 96332141..8114ddf6 100644
--- a/VERSION
+++ b/VERSION
@@ -1,1 +1,1 @@
-30.3.0
+30.8.2
diff --git a/build-alpine.sh b/build-alpine.sh
index 7fac5b44..e5d4642b 100755
--- a/build-alpine.sh
+++ b/build-alpine.sh
@@ -5,7 +5,7 @@ if [[ -z "${TEST_ALPINE}" ]]; then
     exit 0
 fi
 
-docker run -v ${PWD}:/code -e INSTALL_REQUIREMENTS=${INSTALL_REQUIREMENTS} python:3-alpine sh -c "
+docker run -v ${PWD}:/code -e INSTALL_REQUIREMENTS=${INSTALL_REQUIREMENTS} python:3.12-alpine sh -c "
     apk update \
     && apk add git build-base jpeg-dev zlib-dev \
     && pip install tox coveralls \
diff --git a/docs/coding_style.rst b/docs/coding_style.rst
index 95f88ac2..de611d6b 100644
--- a/docs/coding_style.rst
+++ b/docs/coding_style.rst
@@ -58,6 +58,13 @@ included in other parts of the code. If you add a generic type, please specify i
    * - ``typing.GenderType``
      - String variable that can only have values ``"F"`` (female) and ``"M"`` (male)
 
+Tests
+-----
+
+Please add tests for all new providers.
+
+When adding a new test class, please find its place in alphabetical order.
+
 .. _`tox.ini`: https://github.com/joke2k/faker/blob/master/tox.ini
 .. _`pep 8`: https://python.org/dev/peps/pep-0008
 .. _`pep 263`: https://python.org/dev/peps/pep-0263
diff --git a/docs/conf.py b/docs/conf.py
index 08f8e7a1..9d8fb1d3 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -51,9 +51,9 @@ copyright = f"2014-{datetime.now().year}, Daniele Faraglia"
 # built documents.
 #
 # The short X.Y version.
-version = "30.3.0"
+version = "30.8.2"
 # The full version, including alpha/beta/rc tags.
-release = "30.3.0"
+release = "30.8.2"
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/faker/__init__.py b/faker/__init__.py
index e866a61b..fe5087fb 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 = "30.3.0"
+VERSION = "30.8.2"
 
 __all__ = ("Factory", "Generator", "Faker")
diff --git a/faker/providers/address/uk_UA/__init__.py b/faker/providers/address/uk_UA/__init__.py
index 1ec0c999..10e65f34 100644
--- a/faker/providers/address/uk_UA/__init__.py
+++ b/faker/providers/address/uk_UA/__init__.py
@@ -23,7 +23,7 @@ class Provider(AddressProvider):
         "Амвросіївка",
         "Ананьїв",
         "Андрушівка",
-        "Антрацит ",
+        "Антрацит",
         "Апостолове",
         "Армянськ",
         "Арциз",
@@ -42,7 +42,7 @@ class Provider(AddressProvider):
         "Бердянськ",
         "Берегове",
         "Бережани",
-        "Березань ",
+        "Березань",
         "Березівка",
         "Березне",
         "Берестечко",
@@ -72,17 +72,17 @@ class Provider(AddressProvider):
         "Бровари",
         "Броди",
         "Брянка",
-        "Бунге ",
+        "Бунге",
         "Буринь",
-        "Бурштин ",
+        "Бурштин",
         "Буськ",
         "Буча",
         "Бучач",
-        "Валки ",
+        "Валки",
         "Вараш",
-        "Василівка ",
+        "Василівка",
         "Васильків",
-        "Ватутіне",
+        "Багачеве",
         "Вашківці",
         "Великі Мости",
         "Верхівцеве",
@@ -92,7 +92,7 @@ class Provider(AddressProvider):
         "Винники",
         "Виноградів",
         "Вишгород",
-        "Вишневе ",
+        "Вишневе",
         "Вільногірськ",
         "Вільнянськ",
         "Вінниця",
@@ -110,9 +110,8 @@ class Provider(AddressProvider):
         "Гайсин",
         "Галич",
         "Генічеськ",
-        "Географія Вільнянська",
         "Герца",
-        "Гірник ",
+        "Гірник",
         "Гірське",
         "Глиняни",
         "Глобине",
@@ -123,7 +122,7 @@ class Provider(AddressProvider):
         "Горішні Плавні",
         "Горлівка",
         "Городенка",
-        "Городище ",
+        "Городище",
         "Городня",
         "Городок",
         "Горохів",
@@ -133,17 +132,17 @@ class Provider(AddressProvider):
         "Деражня",
         "Дергачі",
         "Джанкой",
-        "Дніпро ",
+        "Дніпро",
         "Дніпрорудне",
         "Добромиль",
         "Добропілля",
         "Довжанськ",
         "Докучаєвськ",
-        "Долина ",
+        "Долина",
         "Долинська",
         "Донецьк",
         "Дрогобич",
-        "Дружба ",
+        "Хутір-Михайлівський",
         "Дружківка",
         "Дубляни",
         "Дубно",
@@ -191,7 +190,7 @@ class Provider(AddressProvider):
         "Ічня",
         "Кагарлик",
         "Кадіївка",
-        "Калинівка ",
+        "Калинівка",
         "Калуш",
         "Кальміуське",
         "Кам'янець-Подільський",
@@ -228,7 +227,7 @@ class Provider(AddressProvider):
         "Краматорськ",
         "Красилів",
         "Красногорівка",
-        "Красноград",
+        "Берестин",
         "Красноперекопськ",
         "Кременець",
         "Кременчук",
@@ -241,10 +240,10 @@ class Provider(AddressProvider):
         "Ладижин",
         "Ланівці",
         "Лебедин",
-        "Лиман ",
+        "Лиман",
         "Липовець",
         "Лисичанськ",
-        "Лозова ",
+        "Лозова",
         "Лохвиця",
         "Лубни",
         "Луганськ",
@@ -257,19 +256,19 @@ class Provider(AddressProvider):
         "Мала Виска",
         "Малин",
         "Мар'їнка",
-        "Марганець ",
+        "Марганець",
         "Маріуполь",
         "Мелітополь",
-        "Мена ",
+        "Мена",
         "Мерефа",
         "Миколаїв",
-        "Миколаївка ",
+        "Миколаївка",
         "Миргород",
         "Мирноград",
         "Миронівка",
         "Міусинськ",
         "Могилів-Подільський",
-        "Молодогвардійськ",
+        "Отаманівка",
         "Молочанськ",
         "Монастириська",
         "Монастирище",
@@ -296,7 +295,7 @@ class Provider(AddressProvider):
         "Новодністровськ",
         "Новодружеськ",
         "Новомиргород",
-        "Новомосковськ",
+        "Самар",
         "Новоселиця",
         "Новоукраїнка",
         "Новояворівськ",
@@ -309,30 +308,30 @@ class Provider(AddressProvider):
         "Олександрія",
         "Олешки",
         "Оріхів",
-        "Остер ",
+        "Остер",
         "Острог",
         "Охтирка",
         "Очаків",
         "П'ятихатки",
         "Павлоград",
-        "Первомайськ",
-        "Первомайський ",
+        "Сокологірськ",
+        "Златопіль",
         "Перевальськ",
         "Перемишляни",
         "Перечин",
         "Перещепине",
         "Переяслав",
-        "Першотравенськ",
+        "Шахтарське",
         "Петрово-Красносілля",
         "Пирятин",
-        "Південне ",
+        "Південне",
         "Підгайці",
         "Підгородне",
         "Погребище",
         "Подільськ",
         "Покров",
         "Покровськ",
-        "Пологи ",
+        "Пологи",
         "Полонне",
         "Полтава",
         "Помічна",
@@ -340,8 +339,8 @@ class Provider(AddressProvider):
         "Почаїв",
         "Привілля",
         "Прилуки",
-        "Приморськ (Україна)",
-        "Прип'ять ",
+        "Приморськ",
+        "Прип'ять",
         "Пустомити",
         "Путивль",
         "Рава-Руська",
@@ -361,7 +360,7 @@ class Provider(AddressProvider):
         "Ромни",
         "Рубіжне",
         "Рудки",
-        "Саки ",
+        "Саки",
         "Самбір",
         "Сарни",
         "Свалява",
@@ -373,7 +372,7 @@ class Provider(AddressProvider):
         "Селидове",
         "Семенівка",
         "Середина-Буда",
-        "Сєвєродонецьк",
+        "Сіверськодонецьк",
         "Синельникове",
         "Сіверськ",
         "Сімферополь",
@@ -393,7 +392,7 @@ class Provider(AddressProvider):
         "Сокиряни",
         "Соледар",
         "Сорокине",
-        "Соснівка ",
+        "Соснівка",
         "Старий Крим",
         "Старий Самбір",
         "Старобільськ",
@@ -401,9 +400,8 @@ class Provider(AddressProvider):
         "Стебник",
         "Сторожинець",
         "Стрий",
-        "Судак ",
+        "Судак",
         "Судова Вишня",
-        "Сулимівка (Слов'янськ)",
         "Суми",
         "Суходільськ",
         "Таврійськ",
@@ -412,7 +410,7 @@ class Provider(AddressProvider):
         "Татарбунари",
         "Теплодар",
         "Теребовля",
-        "Тернівка ",
+        "Тернівка",
         "Тернопіль",
         "Тетіїв",
         "Тиврів",
@@ -428,7 +426,7 @@ class Provider(AddressProvider):
         "Угнів",
         "Ужгород",
         "Узин",
-        "Українка ",
+        "Українка",
         "Українськ",
         "Умань",
         "Устилуг",
@@ -442,7 +440,7 @@ class Provider(AddressProvider):
         "Хмельницький",
         "Хмільник",
         "Ходорів",
-        "Хорол ",
+        "Хорол",
         "Хоростків",
         "Хотин",
         "Хрестівка",
@@ -450,8 +448,7 @@ class Provider(AddressProvider):
         "Хрустальний",
         "Хуст",
         "Часів Яр",
-        "Червоноград",
-        "Червоносів",
+        "Шептицький",
         "Черкаси",
         "Чернівці",
         "Чернігів",
@@ -469,7 +466,7 @@ class Provider(AddressProvider):
         "Шостка",
         "Шпола",
         "Шумськ",
-        "Щастя ",
+        "Щастя",
         "Щолкіне",
         "Южне",
         "Южноукраїнськ",
@@ -727,27 +724,27 @@ class Provider(AddressProvider):
         "1-ша Лінія 4-ї ст. Люстдорфської дороги",
         "1-ша Лінія 6-й ст. Люстдорфської дороги",
         "1-ша Лінія Марії Демченко",
-        "1-ша Суворовська",
+        "Олександра Болдирєва",
         "1-й Академічний тупик",
         "10-та Лінія 6-й ст. Люстдорфської дороги",
         "10-та Лінія Марії Демченко",
-        "10-та Суворовська",
+        "Олександра Богомольця",
         "11-ша Лінія 6-й ст. Люстдорфської дороги",
         "11-та Лінія Марії Демченко",
         "11-та ст. Великого Фонтану пляж",
-        "11-та Суворовська",
+        "Яна Длугоша",
         "12-та Лінія 6-й ст. Люстдорфської дороги",
         "12-та ст. Великого Фонтану пляж",
-        "12-та Суворовська",
+        "Юрія Кондратюка",
         "13-та Лінія 6-й ст. Люстдорфської дороги",
         "13-та ст. Великого Фонтану пляж",
-        "13-та Суворовська",
+        "Миколи Костомарова",
         "14-та Лінія 6-й ст. Люстдорфської дороги",
         "14-та ст. Великого Фонтану пляж",
-        "14-та Суворовська",
+        "Марка Крейна",
         "15-та Лінія 6-й ст. Люстдорфської дороги",
         "15-та ст. Великого Фонтану пляж",
-        "15-та Суворовська",
+        "Скліфосовського",
         "16-та Лінія 6-й ст. Люстдорфської дороги",
         "17-та Лінія 6-й ст. Люстдорфської дороги",
         "18-та Лінія 6-й ст. Люстдорфської дороги",
@@ -756,36 +753,36 @@ class Provider(AddressProvider):
         "2-га Лінія 4-ї ст. Люстдорфської дороги",
         "2-га Лінія 6-й ст. Люстдорфської дороги",
         "2-га Лінія Марії Демченко",
-        "2-га Суворовська",
+        "Бардаха",
         "2-й Академічний тупик",
         "21-й км Старокиївської дороги",
         "3-тя Лінія 4-ї ст. Люстдорфської дороги",
         "3-тя Лінія 6-й ст. Люстдорфської дороги",
         "3-тя Лінія Марії Демченко",
-        "3-тя Суворовська",
+        "Миколи Пильчикова",
         "4-та Лінія 6-й ст. Люстдорфської дороги",
         "4-та Лінія Марії Демченко",
-        "4-та Суворовська",
+        "Йосипа Фішера",
         "40-річчя оборони Одеси",
         "411-ї батареї",
         "5-та Лінія 6-й ст. Люстдорфської дороги",
         "5-та Лінія Марії Демченко",
-        "5-та Суворовська",
+        "Цесевича",
         "6-та Лінія 6-й ст. Люстдорфської дороги",
         "6-та Лінія Марії Демченко",
-        "6-та Суворовська",
+        "Баринштейна",
         "7-ма Лінія 6-й ст. Люстдорфської дороги",
         "7-ма Лінія Дачі Ковалевського",
-        "7-ма Суворовська",
+        "Євгена Крамаренка",
         "8-ма Лінія 6-й ст. Люстдорфської дороги",
         "8-ма Лінія Дачі Ковалевського",
-        "8-ма Суворовська",
+        "Володимира Антоновича",
         "9-та Лінія Дачі Ковалевського",
-        "9-та Суворовська",
+        "Квітки-Основ’яненка",
         "Абрикосова",
         "Абрикосовий",
         "Авангардна",
-        "Авдєєва-Чорноморського",
+        "Одеської громади",
         "Авіаторів",
         "Авіаційна",
         "Аграрна",
@@ -806,17 +803,15 @@ class Provider(AddressProvider):
         "Азербайджан",
         "Азовський",
         "Академіка Богатського",
-        "Академіка Вавилова",
+        "Сергія Єфремова",
         "Академіка Векслера",
-        "Академіка Вільямса",
-        "Академіка Вільямса",
-        "Академіка Вільямса",
-        "Академіка Воробйова",
-        "Академіка Гаркавого",
-        "Академіка Глушка",
+        "Карпенка-Карого",
+        "Віталія Нестеренка",
+        "Житомирська",
+        "Князя Ярослава Мудрого",
         "Академіка Заболотного",
         "Академіка Корольова",
-        "Академіка Панкратової",
+        "Дмитра Сигаревича",
         "Академіка Сахарова",
         "Академіка Філатова",
         "Академіка Ясиновського",
@@ -832,18 +827,18 @@ class Provider(AddressProvider):
         "Амундсена, 1-й",
         "Амундсена, 2-й",
         "Амундсена, 3-й",
-        "Амурська",
-        "Амурський 1-й",
-        "Амурський 2-й",
-        "Амурський 3-й",
-        "Амурський 4-й",
+        "Острозька",
+        "Кам’янецький",
+        "Глухівський",
+        "Волинський",
+        "Кременецький",
         "Ананьївська",
-        "Ангарська",
+        "Буджацька",
         "Андреєвського",
-        "Андрійця Олега",
+        "Олега Андрійця",
         "Андросовський",
-        "Анни Ахматової",
-        "Аполона Скальковського",
+        "Ганни Ахматової",
+        "Зої Пасічної",
         "Аптекарський",
         "Аркадіївський",
         "Аркадійська",
@@ -854,18 +849,17 @@ class Provider(AddressProvider):
         "Артилерійський 2-й",
         "Архітекторська",
         "Архітектурна",
-        "Асєєва Юрія",
-        "Асташкіна",
+        "Юрія Асєєва",
         "Асташкіна",
         "Астрономічна",
         "Астрономічний",
         "Ашгабатська",
-        "Бабеля",
+        "Дмитра Іванова",
         "Багрицького",
         "Базарна",
         "Байдарочний",
         "Байкал тупик",
-        "Байкальська",
+        "Юрія Єгорова",
         "Балківська",
         "Балтська дорога",
         "Балтський 1-й",
@@ -892,29 +886,29 @@ class Provider(AddressProvider):
         "Березовий",
         "Бернардацці",
         "Бессарабська",
-        "Бехтерєва",
+        "Данила Самойловича",
         "Бібліотечна",
-        "Білоруська",
-        "Більшовицький",
+        "Кастуся Калиновського",
+        "Савранський",
         "Біляївська",
-        "Бірюкова",
+        "Ігоря Іванова",
         "Бісквітний",
         "Бітумна",
-        "Благовидової",
+        "Ольги Благовидової",
         "Богдана Хмельницького",
         "Богуна",
         "Бодаревського",
-        "Бокаріуса Миколи",
+        "Бокаріуса",
         "Болгарська",
         "Болградська",
         "Бориса Дерев'янка",
         "Бориса Літвака",
-        "Бородінська",
+        "Героїв Зміїного",
         "Ботанічний",
-        "Братів Поджіо",
-        "Братська",
-        "Брестська",
-        "Бреуса",
+        "Василя Фащенка",
+        "Вінницька",
+        "Берестейська",
+        "Бреуса Якова",
         "Бригадна",
         "Бугаївська",
         "Будівельна",
@@ -923,13 +917,14 @@ class Provider(AddressProvider):
         "Бузковий",
         "Бузковий 1-й",
         "Бузковий 2-й",
-        "Буніна",
+        "Ніни Строкатої",
         "Бучми",
+        "Кінбурнський",
         "В’ячеслава Чорновола",
         "Валіховський",
         "Ванний",
-        "Ванцетті",
-        "Ванцетті",
+        "Миколи Куліша",
+        "Гіацинтовий",
         "Вапняна",
         "Вапняне селище",
         "Вапняний 1-й",
@@ -944,13 +939,13 @@ class Provider(AddressProvider):
         "Василя Кандинського 5-й",
         "Василя Симоненка",
         "Василя Стуса",
-        "Васнецова",
-        "Васнецова",
+        "Ждахи",
+        "Михайла Слабченка",
         "Ватманський",
         "Велика Арнаутська",
         "Велика Садова",
         "Венгера",
-        "Верещагіна",
+        "Академіка Липського",
         "Вернидуба",
         "Верстатобудівна",
         "Вертелецького",
@@ -960,8 +955,8 @@ class Provider(AddressProvider):
         "Весела",
         "Весняна",
         "Ветеранів праці",
-        "Вєтрова",
-        "Вєтрогонова",
+        "Назарівська",
+        "Ігоря Ветрогонова",
         "Виїзна",
         "Виноградна",
         "Виноградна 1-ша",
@@ -971,7 +966,7 @@ class Provider(AddressProvider):
         "Виноградний тупик",
         "Висока",
         "Високий",
-        "Висоцького",
+        "Ярослава Баїса",
         "Виставочна",
         "Вишнева",
         "Вишневий",
@@ -979,12 +974,12 @@ class Provider(AddressProvider):
         "Військовий узвіз",
         "Вільгельма Габсбурга",
         "Віри Інбер",
-        "Віри Фігнер",
+        "Буковецького",
         "Віри Холодної",
         "Вірського",
         "Вітчизняна",
-        "Віцеадмірала Азарова",
-        "Віцеадмірала Жукова",
+        "Андрія Гулого-Гуленка",
+        "Івана Луценка",
         "Водний",
         "Водопровідна",
         "Водопровідний 1-й",
@@ -993,47 +988,41 @@ class Provider(AddressProvider):
         "Вознесенський",
         "Вокзальна",
         "Вокзальний",
-        "Волзький",
-        "Волна тупик",
-        "Волниста",
+        "Олександрійський",
+        "тупик Хвиля",
+        "Хвиляста",
         "Володимира Вінниченка",
         "Володимира Хавкіна",
         "Володі Дубініна",
-        "Волоколамська",
-        "Воронезька",
-        "Воронцовський",
+        "Батуринська",
+        "Ізюмська",
+        "Байгородський",
         "Восьмого березня",
         "Восьмого березня 1-й",
         "Восьмого березня 2-й",
         "Восьмого березня 3-й",
         "Восьмого березня 4-й",
-        "Восьмого березня 5-й",
+        "Кодимський",
         "Восьмого березня 6-й",
-        "Восьмого березня 7-й",
+        "Бейтельсбахера",
         "Восьмого березня 8-й",
-        "Восьмого березня 9-й",
+        "Волтона",
         "Восьмого Березня Лінія 1-ша",
-        "Восьмого Березня Лінія 2-га",
-        "Восьмого Березня Лінія 3-тя",
-        "Восьмого Березня Лінія 4-та",
-        "Восьмого Березня Лінія 5-та",
-        "Восьмого березня узвіз",
-        "Восьмого березня узвіз",
+        "Килимова",
+        "Гобеленова",
+        "Фахова",
+        "Бондарна",
+        "Віктора Скаржинського узвіз",
         "Вузький",
         "Вчительська",
         "Вчительської, 2-й",
         "Гаванна",
-        "Гагаріна",
-        "Гагаріна",
-        "Гагаріна",
-        "Гагарінське плато",
         "Газова",
         "Газовий",
-        "Гаріна",
-        "Гаршина",
-        "Гаршина",
-        "Гастелло",
-        "Гвардійська",
+        "Павла Клепацького",
+        "Давида Бурлюка",
+        "Соні Делоне",
+        "Андрія Музичка",
         "Гвоздична",
         "Гвоздичний",
         "Гена Іоганна",
@@ -1045,14 +1034,14 @@ class Provider(AddressProvider):
         "Героїв Небесної Сотні",
         "Героїв оборони Одеси",
         "Героїв прикордонників",
-        "Герцена",
+        "Галини Могильницької",
         "Гетьманський",
         "Гілельса",
         "Гімназична",
-        "Гладкова",
-        "Глазунова",
-        "Глазунова 1-й",
-        "Глазунова 2-й",
+        "Каменярів",
+        "Бориса Нечерди",
+        "Дмитра Годзенка",
+        "Кафедральна",
         "Глиняна",
         "Глухий міст",
         "Гоголя",
@@ -1064,37 +1053,38 @@ class Provider(AddressProvider):
         "Горизонтальна",
         "Горіхова",
         "Городня",
+        "Хортицька",
+        "Марка Твена",
         "Госпітальний",
-        "Градоначальницька",
+        "Тараса Кузьміна",
         "Гранатна",
         "Гранатний",
         "Грецька",
         "Грецька",
         "Грецький",
-        "Грибоєдова",
+        "Джинестрівська",
         "Грузинська",
         "Грузовий",
         "Давида Ойстраха",
-        "Далекосхідна",
+        "Трусовська",
         "Дальницька",
         "Дальницьке",
         "Дальній",
         "Дальня",
         "Данила Крижанівського",
-        "Данькевича",
+        "Проектуєма",
         "Дача Ковалевського",
         "Дачна",
         "Дачний",
         "Дачний 1-й",
         "Дачний 2-й",
-        "Дворянська",
+        "Всеволода Змієнка",
         "Дев’ята",
         "Деволанівська",
         "Деволанівський узвіз",
-        "Дежньова",
-        "Декабристів",
+        "Миргородський",
         "Дельфін",
-        "Дем’янова",
+        "Грушева",
         "Демократична",
         "Депутатський",
         "Деревообробна",
@@ -1103,8 +1093,8 @@ class Provider(AddressProvider):
         "Деревообробний 3-й",
         "Деревообробний 4-й",
         "Деревообробний 5-й",
-        "Державіна",
-        "Державіна",
+        "Глаубермана",
+        "Квантовий",
         "Дерибасівська",
         "Десантний",
         "Десята",
@@ -1116,12 +1106,12 @@ class Provider(AddressProvider):
         "Дігтярна",
         "Дідріхсона",
         "Діхтієвського Віктора",
-        "Дмитрія Донського",
-        "Дмитрія Донського",
+        "Дмитріївська",
+        "Лазурського",
         "Дніпровська",
         "Дніпропетровська дорога",
         "Дністровська",
-        "Добровольського",
+        "Князя Володимира Великого ",
         "Довга",
         "Довженка",
         "Докова",
@@ -1130,19 +1120,16 @@ class Provider(AddressProvider):
         "Донцова Дмитра",
         "Дорбуду",
         "Дорожня",
-        "Достоєвського",
-        "Достоєвського",
         "Друга",
         "Дружний",
         "Дубова",
         "Дубовий гай",
         "Дукова",
-        "Думська",
-        "Дунаєва",
-        "Дунаєвського",
-        "Дунаєвського 1-й",
-        "Дунаєвського 2-й",
-        "Дунаєвського 3-й",
+        "Біржова",
+        "Панаса Саксаганського",
+        "Мирослава Скорика",
+        "Олександра Кошиця",
+        "Лятошинського",
         "Дунайська",
         "Дюківська",
         "Дюківський сад",
@@ -1152,23 +1139,22 @@ class Provider(AddressProvider):
         "Естонська",
         "Естонський",
         "Єврейська",
-        "Єлисаветградський",
-        "Єліна",
-        "Єлісаветинська",
-        "Єнісейська",
-        "Єрмака",
+        "Халайджогло",
+        "Ференца Ліста",
+        "Юрія Коваленка",
+        "Охтирський",
         "Єфімова",
         "Жаботинського",
         "Жасминна",
         "Жевахова",
-        "Желябова",
-        "Житкова",
+        "Владислава Домбровського",
+        "Братів Малакових",
         "Житомирська",
         "Житомирський 3-й",
         "Житомирський 4-й",
         "Жоліо-Кюрі",
         "Жолкова Бориса",
-        "Жуковського",
+        "Леопольда Ященка",
         "Заводська",
         "Заводська 1-ша",
         "Заводська 2-га",
@@ -1193,45 +1179,41 @@ class Provider(AddressProvider):
         "Зернова",
         "Злакова",
         "Змієнка Всеволода",
-        "Зої Космодем’янської",
         "Золотий берег",
         "Зоопаркова",
-        "Зоринська",
+        "Караїмська",
         "Зоряна",
         "Івана Вазова",
         "Івана Микитенка",
         "Івана Франка",
-        "Івана Франка",
         "Іванівська",
         "Іванівський переїзд",
-        "Іванова",
-        "Іванова 1-й",
-        "Іванова 2-й",
+        "Бутишів",
+        "Мерло",
+        "Каберне",
         "Іванова Ігоря",
         "Івасюка Володимира",
         "Івахненка Петра",
-        "Ільфа і Петрова",
-        "ім. С.Ю. Вітте",
-        "ім. К.Г. Паустовського",
+        "Сім'ї Глодан",
         "Інглезі",
         "Індійська",
-        "Інтернаціональний",
+        "Сергія Коновалова",
         "Іподромний",
         "Іспанська",
         "Іспанський",
         "Історія Футболу",
         "Італійський",
-        "Іцхака Рабіна",
+        "Рабіна Іцхака",
         "Йосипа Тимченка",
         "Кавказька",
         "Кавказький",
         "Кавунова",
-        "Казанська",
+        "Ізмаїльська",
         "Казковий",
         "Калинова",
-        "Калнишевського Петра",
-        "Каманіна",
-        "Каманіна",
+        "Петра Калнишевського",
+        "Валерія Самофалова",
+        "Кортацці",
         "Камишова",
         "Канатна",
         "Канатний",
@@ -1245,13 +1227,9 @@ class Provider(AddressProvider):
         "Карпатська",
         "Картамишевська",
         "Картамишевський",
-        "Касима Юрія",
-        "Каспійський",
-        "Катаєва",
-        "Катерининська",
-        "Катерининська",
+        "Європейська",
         "Каховський",
-        "Качалова",
+        "Симфонічна",
         "Каштанова",
         "Квіткова",
         "Квітковий",
@@ -1261,7 +1239,7 @@ class Provider(AddressProvider):
         "Керченський 1-й",
         "Керченський 2-й",
         "Керченський 3-й",
-        "Кибальчича",
+        "Луїджі Іоріні",
         "Київське",
         "Килимовий",
         "Кипарисний 1-й",
@@ -1270,12 +1248,12 @@ class Provider(AddressProvider):
         "Китобійна",
         "Китобійний 1-й",
         "Китобійний 2-й",
-        "Кифоренка Бориса",
+        "Бориса Кифоренка",
         "Кишинівська",
         "Кільовий",
         "Кільцева",
         "Кінна",
-        "Кісельова Ігоря",
+        "Ігоря Кисельова",
         "Кладовищенська",
         "Кладовищний",
         "Кленова",
@@ -1285,57 +1263,52 @@ class Provider(AddressProvider):
         "Книжковий",
         "Князівська",
         "Князівський",
-        "Коблевська",
-        "Ковалевського",
-        "Ковалевського узвіз",
+        "Павла Зеленого",
+        "Пішонівська",
         "Ковиловий",
         "Колективний",
         "Колекційна",
         "Колонічна",
         "Колонтаївська",
-        "Комітетська",
+        "Василя Капніста",
         "Компасний",
-        "Композитора Глинки",
-        "Композитора Глинки",
-        "Композитора Ніщинського",
+        "Музична",
+        "Мелодійний",
+        "Ніщинського Композитора",
         "Кондрашина",
-        "Кондренка",
         "Конструкторський",
-        "Контрадмірала Луніна",
+        "Віталія Гуляєва",
         "Кордонна",
         "Кордонний",
         "Корнюшина",
-        "Короленка",
+        "Ігоря Балмагії",
         "Короткий",
-        "Косвена",
+        "Кобзаря",
         "Косий",
-        "Космонавта Комарова",
+        "Любомира Гузара",
         "Космонавтів",
         "Косовська",
         "Косовський",
         "Костанді",
         "Костанді 2-й",
         "Костанді 3-й",
-        "Кострова",
-        "Косяченка Олексія",
+        "Ольги Благовидової",
+        "Олексія Косяченко",
         "Котляревського",
-        "Коцебу міст",
         "Коцюбинського",
         "Кощового отамана",
         "Крайня",
         "Красива",
-        "Красна",
         "Красний",
-        "Красних Зорь",
         "Краснова",
-        "Красносільська",
+        "Ольвійська",
         "Краснослобідська",
         "Краснослобідський",
         "Кредитний",
-        "Кренкеля",
+        "Дур'янівський",
         "Кривобалківська",
         "Крижанівський",
-        "Крилова",
+        "Юзефа Крашевського",
         "Кримська",
         "Кримський",
         "Кристаловського",
@@ -1351,14 +1324,14 @@ class Provider(AddressProvider):
         "Куликовський 2-й",
         "Куниці",
         "Купріна",
-        "Курганська",
+        "Сотника Лугіна",
         "Курортний",
         "Курортний 6-й",
-        "Курська",
+        "Бахмутська",
         "Кустанайська",
         "Кустанайський 2-й",
         "Кутова",
-        "Кутузова",
+        "Генерала Алмазова",
         "Куяльницький міст",
         "Лавкова",
         "Лазурний 1-й",
@@ -1373,18 +1346,15 @@ class Provider(AddressProvider):
         "Ланжеронівський узвіз",
         "Латвійський узвіз",
         "Левадна",
-        "Леваневського",
-        "Леваневського",
-        "Леваневського",
-        "Леваневського тупик",
-        "Левітана",
+        "Гонсіоровського",
+        "Толвінського",
+        "Миколи Бурачека",
         "Левкоєва",
-        "Лейтенанта Шмідта",
-        "Леонова",
+        "Олександра Станкова",
+        "Олешківська",
         "Леонтовича",
-        "Лермонтовський",
-        "Лермонтовський 2-й",
-        "Лесі Українки",
+        "Джевецького",
+        "Госпітальєрів",
         "Лесі Українки",
         "Леха Качинського",
         "Лиманна",
@@ -1397,14 +1367,14 @@ class Provider(AddressProvider):
         "Лиманчик 2-й Лінія 5-та",
         "Лиманчик 2-й Лінія 8-ма",
         "Лиманчик 2-й Лінія 9-та",
-        "Лип Івана та Юрія",
+        "Ф. Пішеніна",
         "Липнева",
         "Листяна",
         "Листяний",
         "Литовська",
         "Ліверпульський",
-        "Лідерсівський",
-        "Лізи Чайкіної",
+        "Гетьмана Сагайдачного",
+        "Шевальових",
         "Лінійна",
         "Лінійний",
         "Лїнія 1-ша",
@@ -1453,7 +1423,6 @@ class Provider(AddressProvider):
         "Локомотивний 2-й",
         "Локомотивний 3-й",
         "Локомотивний 4-й",
-        "Ломоносова",
         "Луганська",
         "Лугова",
         "Лузанівка",
@@ -1462,13 +1431,12 @@ class Provider(AddressProvider):
         "Лузанівський",
         "Лузанівський 1-й",
         "Лузанівський 2-й",
-        "Лунний",
+        "Місячний",
         "Луценка Івана",
         "Луцька",
         "Лучиста",
         "Льва Симиренка",
-        "Льва Толстого",
-        "Льва Толстого",
+        "Менделе Сфоріма",
         "Львівська",
         "Львівський",
         "Любашівський",
@@ -1479,61 +1447,53 @@ class Provider(AddressProvider):
         "Лютнева",
         "Лютневий 1-й",
         "Лютневий 2-й",
-        "Лядова",
-        "Ляпідевського",
-        "Ляпунова",
+        "Хортицька",
+        "Остапа Вишні",
+        "Олександра Ройтбурда",
         "М’ясоєдовська",
         "Магістральна",
-        "Магнітогорська",
-        "Магнітогорський",
-        "Магнітогорський 2-й",
-        "Магнітогорський 3-й",
-        "Мазараті",
+        "Михайла Врубеля",
+        "Адольфа Лози",
+        "Сергія Параджанова",
         "Мазепи Івана",
         "Майстерний",
-        "Макаренка",
-        "Макарова",
+        "Лігінська",
+        "Контрадмірала Остроградського",
         "Макова",
         "Маковий",
         "Мала",
         "Мала Арнаутська",
         "Мала Садова",
         "Маланова",
-        "Малиновський",
+        "Хаджибейський",
         "Маловського",
         "Манежна",
         "Манежний",
         "Маразліївська",
-        "Марата",
-        "Марата 1-й",
-        "Марата 2-й",
-        "Маринеско узвіз",
+        "Фруктова",
+        "Сливовий",
+        "Чорничний",
+        "узвіз Віталія Блажка",
         "Мариністів",
-        "Марії Демченко",
-        "Марії Демченко",
-        "Марії Демченко 2-й",
-        "Маріїнська",
+        "Дениса Максишка",
+        "Михайла Омеляновича-Павленка",
         "Марсельська",
-        "Маршала Бабаджаняна",
-        "Маршала Говорова",
-        "Маршала Малиновського",
+        "Добровольців",
         "Маршрутна",
         "Матеріальний 1-й",
-        "Матроська Слобідка",
-        "Матроська Слобідка",
+        "Матроська Слободка ",
         "Матроський узвіз",
         "Матюшенка",
-        "Махачкалинська",
+        "Віталія Блажка",
         "Мацієвської",
         "Мацієвської узвіз",
         "Машинобудівний",
-        "Маяковського",
         "Маячний",
         "Мелітопольська",
         "Мельницька",
         "Металістів",
-        "Метрополітенівський",
-        "Мечникова",
+        "Флейтовий",
+        "Петра Болбочана",
         "Мечникова",
         "Мигдальна",
         "Миколаївська дорога",
@@ -1541,7 +1501,7 @@ class Provider(AddressProvider):
         "Миколи Бажана",
         "Миколи Боровського",
         "Миколи Вороного",
-        "Миколи Гефта",
+        "Ганса Германа",
         "Миколи Гумільова",
         "Миколи Огренича",
         "Миколи Плигуна",
@@ -1550,24 +1510,19 @@ class Provider(AddressProvider):
         "Митракова",
         "Михайла Божія",
         "Михайла Грушевського",
-        "Михайла Жванецького",
-        "Михайлівська",
+        "Військово-морських сил",
         "Михайлівська",
-        "Мінська",
+        "Йозефа Прибіка",
         "Місячна",
-        "Місячна",
-        "Міхновського Миколи",
+        "Миколи Міхновського",
         "Міцкевича",
-        "Мічманський 1-й",
-        "Мічманський 2-й",
-        "Мічуріна",
-        "Мічуріна",
-        "Мічуріна",
+        "Матроський",
+        "Бєлякова",
+        "Волова",
         "Могилівська",
         "Молоді",
         "Молодіжна",
-        "Молодіжна",
-        "Молодогвардійська",
+        "Чайкова",
         "Молокова",
         "Монастирський",
         "Монгольська",
@@ -1576,7 +1531,7 @@ class Provider(AddressProvider):
         "Морська",
         "Морський",
         "Морський 2-й",
-        "Москвіна",
+        "Литавровий",
         "Москеті",
         "Мостовий",
         "Моторна",
@@ -1595,7 +1550,7 @@ class Provider(AddressProvider):
         "Нафтовиків 1-й",
         "Нафтовиків 2-й",
         "Нафтовиків 3-й",
-        "Нахімова",
+        "Миколи Кравченка",
         "Наявний 1-й",
         "Наявний 2-й",
         "Наявний 3-й",
@@ -1604,33 +1559,30 @@ class Provider(AddressProvider):
         "Наявний 6-й",
         "Наявний 7-й",
         "Небесної Сотні",
-        "Недєліна",
-        "Нежданової",
-        "Нежданової",
+        "Анатолія Бачинського",
+        "Заможна",
+        "Ромський",
         "Незалежності",
-        "Некрасова",
+        "Отонівський",
         "Немировича-Данченка",
         "Неплія",
         "Нерубайська",
         "Нескучна",
         "Нечипуренка",
         "Ніжинська",
-        "Нікітіна",
-        "Нова",
-        "Нова",
+        "Шполянська",
         "Нова",
         "Новаторів",
-        "Новгородська",
-        "Новгородський",
-        "Новгородський 2-й",
+        "Михайла Жука",
+        "Дворникова",
+        "Теофіла Фраєрмана",
         "Новий",
         "Новиков міст",
-        "Новикова",
-        "Новікова 2-га",
+        "Ірини Жиленко",
+        "Родоканакі",
         "Новобазарний",
         "Новоберегова",
-        "Новомосковська дорога",
-        "Новоселів",
+        "Чигиринська",
         "Новоселів",
         "Новосельского",
         "Новоукраїнський",
@@ -1639,7 +1591,6 @@ class Provider(AddressProvider):
         "Обільна",
         "Обільний 1-й",
         "Обільний 2-й",
-        "Оборони Ленінграду",
         "Обривиста",
         "Обсерваторний",
         "Овідіопольська",
@@ -1653,28 +1604,28 @@ class Provider(AddressProvider):
         "Озерна",
         "Окружна",
         "Олександра Блока",
-        "Олександра Вронського",
+        "Композитора Вербицького",
         "Олександра Кутузакія",
-        "Олександра Матросова",
-        "Олександра Невського",
-        "Олександра Невського 1-й",
-        "Олександра Невського 2-й",
-        "Олександра Невського 3-й",
-        "Олександра Невського 4-й",
-        "Олександра Невського 5-й",
-        "Олександра Стурдзи",
+        "Валерія Лобановського",
+        "Сергія Шелухина",
+        "Климовича",
+        "Чехівського",
+        "Василя Кричевського",
+        "Павла Чубинського",
+        "Майка Йогансена",
+        "Леоніда Осики",
         "Олександра Тимошенка",
-        "Олександрівський",
+        "Українських Героїв",
         "Олексіївська",
         "Ольгіївська",
         "Ольгіївський узвіз",
-        "Омська",
-        "Онезька",
+        "Василя Берладяну",
+        "Евлії Челебі",
         "Онілової",
         "Оранжерейний",
         "Орликова",
-        "Орловська",
-        "Орловський",
+        "Олешківська",
+        "Надії Пучковської",
         "Осипова",
         "Осіння",
         "Остапа Вишні",
@@ -1701,17 +1652,16 @@ class Provider(AddressProvider):
         "Паркова",
         "Парковий",
         "Партизанська",
-        "Партизанської Слави",
+        "Партизанської слави",
         "Парусна",
         "Пассіонарії",
         "Пастера",
         "Патріотична",
-        "Паустовського",
         "Педагогічна",
         "Педагогічний",
         "Пейзажна",
-        "Перемоги",
-        "Перемоги",
+        "Добровольців",
+        "Рятувальників",
         "Перепечка",
         "Пересипський міст",
         "Пересипська 1-ша",
@@ -1730,16 +1680,14 @@ class Provider(AddressProvider):
         "Перлинна",
         "Перша",
         "Перший Кришталевий",
-        "Першотравневий 1-й",
-        "Першотравневий 2-й",
-        "Першотравневий 3-й",
-        "Пестеля",
-        "Пестеля",
+        "Миколи Леонтовича",
+        "Саймона Літмана",
+        "Цукровий",
         "Петра Лещенка",
-        "Петрашевського",
+        "Леся Курбаса",
         "Пироговська",
         "Пироговський",
-        "Писарева",
+        "Бориса Едуардса",
         "Південна",
         "Південна дорога",
         "Південно-Санаторний",
@@ -1752,31 +1700,29 @@ class Provider(AddressProvider):
         "Пішонівська",
         "Планетна",
         "Платанова",
-        "Плієва",
+        "Бродська",
         "Пляжна",
         "Побратимів",
         "Подільська",
         "Поїзна",
         "Покровський",
-        "Ползунова 1-й",
-        "Ползунова 2-й",
-        "Політкаторжан",
+        "Буковинська",
+        "Хотинський",
         "Політкаторжан",
         "Полтавська",
         "Полуничний",
         "Польова",
-        "Польова",
         "Польовий 1-й",
         "Польська",
         "Польський узвіз",
         "Поперечний",
         "Посівна",
-        "Посмітного",
+        "Балтиморська",
         "Поштова",
         "Поштовий",
         "Преображенська",
         "Пресича Олександра",
-        "Пржевальського",
+        "Стрийський",
         "Прибережний",
         "Привозна",
         "Привокзальна",
@@ -1794,13 +1740,14 @@ class Provider(AddressProvider):
         "Проїзний 2-й",
         "Проїзний 3-й",
         "Прокатна",
-        "Пролетарський 3-й",
+        "Іони Отаманського",
+        "Географічний",
         "Промислова",
         "Промисловий",
         "Прорізна",
         "Прорізний",
         "Просвіти",
-        "Просьолочна",
+        "Путівна",
         "Проточний",
         "Професора Каришковського",
         "Професора Коровицького",
@@ -1809,12 +1756,13 @@ class Provider(AddressProvider):
         "Прохоровський",
         "Прохоровський",
         "Проценка",
-        "Псковська",
-        "Псковський",
-        "Пугачова",
+        "Почаївська",
+        "Опішнянський",
+        "Персикова",
         "Путьова",
-        "Пушкінська",
-        "ПшеничнаРадищева",
+        "Рози вітрів",
+        "Пшенична",
+        "Прилуцький",
         "Радіальна",
         "Радіальний",
         "Радіо",
@@ -1849,14 +1797,14 @@ class Provider(AddressProvider):
         "Розкидайлівська",
         "Розумовський 1-й",
         "Розумовський 2-й",
-        "Романа Кармена",
+        "Решата Аметова",
         "Романтиків",
         "Романтичний",
         "Ромашкова",
-        "Ростовська",
-        "Рощева",
+        "Маріупольська",
+        "Гайова",
         "Рульовий",
-        "Сабанєєв",
+        "Миколи Савича",
         "Сабанський",
         "Савицький",
         "Савранська",
@@ -1871,8 +1819,8 @@ class Provider(AddressProvider):
         "Садовий",
         "Садовського",
         "Саксаганського",
-        "Салтикова-Щедріна",
-        "Самарська",
+        "Пилипа Орлика",
+        "Обліпихова",
         "Самодіяльна",
         "Санаторний",
         "Санітарна",
@@ -1897,17 +1845,17 @@ class Provider(AddressProvider):
         "Середньофонтанська",
         "Середньофонтанський",
         "Середня",
-        "Сєрова",
+        "Сірожупанників",
         "Сєрогодського",
-        "Сєченова",
-        "Сибірська",
+        "Зої Бутенко",
+        "Поліська",
         "Сирітський",
         "Сирітський 2-й",
         "Сільська",
         "Сільськогосподарський",
         "Сімферопольська",
         "Сінна",
-        "Скворцова",
+        "Новопланівська",
         "Скидановська",
         "Скидановський узвіз",
         "Складська",
@@ -1918,14 +1866,14 @@ class Provider(AddressProvider):
         "Скрипковий",
         "Слави",
         "Слави",
-        "Слєпньова",
+        "Донорська",
         "Сливова",
         "Слобідська",
         "Слобідський узвіз",
         "Слов'янська",
         "Сміливий",
-        "Смоленська",
-        "Собінова",
+        "Почаївська",
+        "Павла Вірського",
         "Соборна",
         "Совіньйонівський",
         "Солонцюватий",
@@ -1939,15 +1887,14 @@ class Provider(AddressProvider):
         "Соляний 6-й",
         "Соляний 7-й",
         "Сонячна",
-        "Сонячна",
         "Сортувальна 1-ша",
         "Сортувальна 2-га",
         "Сосюри",
         "Софії Перовської",
         "Софіївська",
         "Соціальна",
-        "Спартаківська",
-        "Спартаківський",
+        "Бахчисарайська",
+        "Ярмарковий",
         "Спаський",
         "Спиридонівська",
         "Спортивна",
@@ -1963,20 +1910,20 @@ class Provider(AddressProvider):
         "Старопортофранківська",
         "Старорізнична",
         "Старосінна",
-        "Стахановський 4-й",
+        "Школярський",
         "Стельмаха",
         "Степана Олійника узвіз",
-        "Степана Разіна",
+        "Малинова",
         "Степна",
         "Степний 2-й",
         "Степова",
         "Стеценко",
-        "Стєклова",
+        "Томатна",
         "Стовпова",
         "Стороженка Олега",
         "Стражеска Миколи",
         "Строганов міст",
-        "Строганова",
+        "Максима Чайки",
         "Студена",
         "Студентський",
         "Студентський 1-й",
@@ -1984,16 +1931,15 @@ class Provider(AddressProvider):
         "Студентський 3-й",
         "Студентський 4-й",
         "Студентський 5-й",
-        "Суворовська",
+        "Петра Біциллі",
         "Суднобудівна",
         "Суднобудівний",
         "Сумська",
         "Сумський",
         "Суперфосфатна",
         "Супутників",
-        "Сурикова",
-        "Сурикова 1-й",
-        "Сурикова 2-й",
+        "Лірний",
+        "Бандурний",
         "Сухолиманна",
         "Східний",
         "Східний 1-й",
@@ -2003,39 +1949,31 @@ class Provider(AddressProvider):
         "Східчастий",
         "Сьома",
         "Таїрова",
-        "Таїрова",
         "Танкерна",
         "Танкістів",
         "Танфільєва",
         "Тарутинська",
         "Творча",
         "Текстильників",
-        "Теліги Олени",
+        "Олени Теліги",
         "Тепла",
         "Теплична",
         "Тепличний 1-й",
         "Тепличний 2-й",
-        "Терещенка Володимира",
+        "Володимира Терещенка",
         "Тетяни Тесс",
         "Технічний",
         "Тещин міст",
-        "Тимірязєва",
-        "Тимірязєва",
-        "Тимірязєва 3-й",
-        "Тимірязєва 4-й",
-        "Тимірязєва 5-й",
-        "Тираспольська",
+        "Айвазовського",
         "Тираспольська",
-        "Тираспольське",
         "Тиха",
         "Тіниста",
         "Тінистий",
-        "Тінистий",
         "Ткачова",
         "Товарний",
-        "Толбухіна",
-        "Толбухіна",
-        "Толбухіна",
+        "Трибуни героїв",
+        "Георгія Липського",
+        "Василя Данилевича",
         "Тополина",
         "Тополиний",
         "Топольського",
@@ -2052,18 +1990,17 @@ class Provider(AddressProvider):
         "Транспортна",
         "Траса Здоров'я",
         "Троїцька",
-        "Троїцького Миколи",
+        "Миколи Троїцького",
         "Тролейбусна",
         "Трояндова",
         "Трудова",
         "Трудовий",
-        "Трудових резервів",
-        "Тульська",
-        "Тульська",
+        "Олександра Білостінного",
+        "Героїв УПА",
         "Тупиковий",
         "Тупиковий 1-й",
         "Тупиковий 2-й",
-        "Тургенєва",
+        "Андрія Сови",
         "Туристська",
         "Туристський",
         "Тюльпанний",
@@ -2073,7 +2010,7 @@ class Provider(AddressProvider):
         "Український 1-й",
         "Український 2-й",
         "Український 3-й",
-        "Улітіна",
+        "Улицька",
         "Уманська",
         "Умова",
         "Університетський",
@@ -2083,13 +2020,13 @@ class Provider(AddressProvider):
         "Усатівська",
         "Успенська",
         "Успенський",
-        "Утьосова",
+        "Ніли Крюкової",
         "Училищна",
         "Учительський",
         "Учнівська",
-        "Ушакова",
+        "Багринова",
         "Ушинського",
-        "Уютна",
+        "Затишна",
         "Ф. Пішеніна",
         "Фабрична",
         "Фестивальний",
@@ -2125,23 +2062,18 @@ class Provider(AddressProvider):
         "Центральний аеропорт",
         "Церковна",
         "Цимлянська",
-        "Ціолковського",
-        "Чайковського",
-        "Чапаєва",
-        "Чапаєва",
-        "Чапаєва",
-        "Чапаєва 2-й",
-        "Черепанових",
-        "Черепанових 2-й",
+        "Йоганна Ансельма",
+        "Театральний",
+        "Барвінковий",
         "Черешнева",
         "Черкаська",
         "Чернишевського",
         "Чернівецький",
         "Чернігівська",
         "Чернігівський",
-        "Черняховського",
+        "Артура Савельєва",
         "Четверта",
-        "Чехова",
+        "Журавлина",
         "Чорноморка",
         "Чорноморська",
         "Чорноморський",
@@ -2168,23 +2100,19 @@ class Provider(AddressProvider):
         "Шебелінський",
         "Шевченка",
         "Шевченка парк",
-        "Шептицікого",
+        "Шептицького",
         "Шефська",
         "Шилова",
-        "Ширшова",
+        "В'ячеслава Липинського",
         "Ширяївський",
-        "Шишкіна",
-        "Шишкіна",
-        "Шишкіна 1-й",
-        "Шишкіна 2-й",
-        "Шишкіна 3-й",
+        "Незамаївська",
+        "Олександра Мурашка",
         "Шкільний",
         "Шкільний аеродром",
         "Шкіперська",
         "Шкодова гора",
         "Шовкуненка",
-        "Шовкуненка",
-        "Шолохова",
+        "Волокидіна",
         "Шоста",
         "Шостої 1-й",
         "Шостої 2-й",
@@ -2197,31 +2125,31 @@ class Provider(AddressProvider):
         "Щіпний",
         "Щоглова",
         "Щоголєва",
-        "Щукіна",
+        "Медовий",
         "Ювілейний 1-й",
         "Ювілейний 2-й",
         "Юннатів",
         "Юннатів 1-й",
         "Юннатів 2-й",
         "Юннатів 3-й",
-        "Юрженка Олександра",
+        "Олександра Юрженка",
         "Юрія Олеші",
         "Юрія Яновського",
         "Юхима Геллера",
         "Юхима Фесенка",
-        "Яблочкіної",
+        "Альтовий",
         "Яблунева",
         "Яблучна",
         "Якірний",
-        "Якутська",
+        "Ігоря Бедзая",
         "Ялинкова",
         "Ялинковий",
-        "Ямська",
+        "Ігоря Бедзая",
         "Ямчитського",
         "Ярморочна площа",
         "Яружний",
         "Ясна",
-        "Яхненка Семена",
+        "Семена Яхненка",
         "Яші Гордієнка",
     ]
 
diff --git a/faker/providers/color/ka_GE/__init__.py b/faker/providers/color/ka_GE/__init__.py
new file mode 100644
index 00000000..c1ed2236
--- /dev/null
+++ b/faker/providers/color/ka_GE/__init__.py
@@ -0,0 +1,92 @@
+from collections import OrderedDict
+
+from .. import Provider as ColorProvider
+
+localized = True
+
+
+class Provider(ColorProvider):
+    """Implement color provider for ``ka_GE`` locale."""
+
+    all_colors = OrderedDict(
+        (
+            ("ანტიკური თეთრი", "#FAEBD7"),
+            ("აკვამარინი", "#7FFFD4"),
+            ("ლურჯი", "#F0FFFF"),
+            ("ბეჟი", "#F5F5DC"),
+            ("შავი", "#000000"),
+            ("ცისფერი", "#0000FF"),
+            ("საზღვაო ლურჯი", "#8A2BE2"),
+            ("ყავისფერი", "#A52A2A"),
+            ("შოკოლადისფერი", "#D2691E"),
+            ("კორალისფერი", "#FF7F50"),
+            ("ვერცხლისფერი", "#6495ED"),
+            ("ჟოლოსფერი", "#DC143C"),
+            ("მუქი ლურჯი", "#00008B"),
+            ("მუქი ცისფერი", "#008B8B"),
+            ("მუქი ნაცრისფერი", "#A9A9A9"),
+            ("მუქი მწვანე", "#006400"),
+            ("მუქი ხაკისფერი", "#BDB76B"),
+            ("მუქი ნარინჯისფერი", "#FF8C00"),
+            ("მუქი წითელი", "#8B0000"),
+            ("მუქი ზღვისფერი", "#00CED1"),
+            ("მუქი იასამნისფერი", "#9400D3"),
+            ("მუქი ვარდისფერი", "#FF1493"),
+            ("მკვდარი ნაცრისფერი", "#696969"),
+            ("ფუქსია", "#FF00FF"),
+            ("ოქროსფერი", "#FFD700"),
+            ("ნაცრისფერი", "#808080"),
+            ("მწვანე", "#008000"),
+            ("ყვითელ-მწვანე", "#ADFF2F"),
+            ("ინტენსიური ვარდისფერი", "#FF69B4"),
+            ("ინდიგო", "#4B0082"),
+            ("სპილოს ძვალი", "#FFFFF0"),
+            ("ხაკისფერი", "#F0E68C"),
+            ("ლავანდისფერი ვარდისფერი", "#FFF0F5"),
+            ("ღია ლურჯი", "#ADD8E6"),
+            ("ღია ცისფერი", "#E0FFFF"),
+            ("ღია ნაცრისფერი", "#D3D3D3"),
+            ("ღია მწვანე", "#90EE90"),
+            ("ღია ვარდისფერი", "#FFB6C1"),
+            ("ღია ცისფერი", "#87CEFA"),
+            ("ღია ყვითელი", "#FFFFE0"),
+            ("მეწამული", "#800000"),
+            ("ნარინჯისფერი", "#FFA500"),
+            ("ნარინჯისფერი წითელი", "#FF4500"),
+            ("ღია მწვანე", "#98FB98"),
+            ("ღია ზღვისფერი", "#AFEEEE"),
+            ("ვარდისფერი", "#FFC0CB"),
+            ("ქლიავისფერი", "#DDA0DD"),
+            ("იასამნისფერი", "#800080"),
+            ("წითელი", "#FF0000"),
+            ("ზღვისფერი", "#2E8B57"),
+            ("ვერცხლისფერი", "#C0C0C0"),
+            ("თურქული ლურჯი", "#40E0D0"),
+            ("იისფერი", "#EE82EE"),
+            ("თეთრი", "#FFFFFF"),
+            ("ყვითელი", "#FFFF00"),
+            ("ყვითელ-მწვანე", "#9ACD32"),
+            ("ბრინჯაოსფერი", "#CD7F32"),
+            ("მსხლისფერი", "#D1E231"),
+            ("თითბერისფერი", "#D5A642"),
+            ("მანდარინისფერი", "#FF8800"),
+            ("ფიჭვისფერი", "#01796F"),
+            ("ზეთისხილისფერი", "#808000"),
+        )
+    )
+
+    safe_colors = (
+        "შავი",
+        "მუქი წითელი",
+        "მწვანე",
+        "ხაკისფერი",
+        "იასამნისფერი",
+        "თურმანჯურა",
+        "ცაცხვისფერი",
+        "ცისფერი",
+        "ვერცხლისფერი",
+        "ნაცრისფერი",
+        "ყვითელი",
+        "ფუქსია",
+        "თეთრი",
+    )
diff --git a/faker/providers/color/uz_UZ/__init__.py b/faker/providers/color/uz_UZ/__init__.py
new file mode 100644
index 00000000..cb0f1177
--- /dev/null
+++ b/faker/providers/color/uz_UZ/__init__.py
@@ -0,0 +1,69 @@
+from collections import OrderedDict
+
+from .. import Provider as ColorProvider
+
+localized = True
+
+
+class Provider(ColorProvider):
+    """Implement color provider for ``uz_UZ`` locale."""
+
+    # Source: https://uz.wiktionary.org/wiki/Vikilug%E2%80%98at:Ranglar
+    all_colors = OrderedDict(
+        (
+            ("Akvamarin", "#7FFFD4"),
+            ("Anor", "#800000"),
+            ("Apelsin", "#FFA000"),
+            ("Bej", "#F5F5DC"),
+            ("Binafsha", "#8B00FF"),
+            ("Bodom", "#FFEBCD"),
+            ("Bordo rang", "#800000"),
+            ("Doimiy sariq", "#FFBF00"),
+            ("Hantal", "#120A8F"),
+            ("Havo rang", "#000080"),
+            ("Indigo", "#4B0082"),
+            ("Jigar rang", "#964B00"),
+            ("Kul", "#808080"),
+            ("Kumush", "#C0C0C0"),
+            ("Koʻk", "#0000FF"),
+            ("Kremi", "#FFFDD0"),
+            ("Magenta", "#FF00FF"),
+            ("Malina", "#DC143C"),
+            ("Marjon", "#FF7F50"),
+            ("Moshrang", "#C3B091"),
+            ("Oq", "#FFFFFF"),
+            ("Oxra", "#CC7722"),
+            ("Oltin", "#FFD700"),
+            ("Pushti", "#FFC0CB"),
+            ("Qizil", "#FF0000"),
+            ("Qizgʻish binafsharang", "#E0B0FF"),
+            ("Qora", "#000000"),
+            ("Qizil-sariq", "#FF8C69"),
+            ("Samoviy", "#87CEFF"),
+            ("Sariq", "#FFFF00"),
+            ("Siyohrang", "#660099"),
+            ("Sepya", "#705714"),
+            ("Siena", "#FF8247"),
+            ("Suv", "#00FFFF"),
+            ("Terrakota", "#E2725B"),
+            ("Turkuaz", "#30D5C8"),
+            ("Ultramarin", "#120A8F"),
+            ("Yashil", "#00FF00"),
+            ("Zumrad", "#50C878"),
+        )
+    )
+
+    safe_colors = (
+        "Oq",
+        "Qora",
+        "Yashil",
+        "Ko'k",
+        "Qizil",
+        "Sariq",
+        "Pushti",
+        "Olov",
+        "Qaymoq",
+        "Laym",
+        "Kumush",
+        "Kulrang",
+    )
diff --git a/faker/providers/currency/uz_UZ/__init__.py b/faker/providers/currency/uz_UZ/__init__.py
new file mode 100644
index 00000000..418ff138
--- /dev/null
+++ b/faker/providers/currency/uz_UZ/__init__.py
@@ -0,0 +1,178 @@
+from .. import Provider as CurrencyProvider
+
+
+class Provider(CurrencyProvider):
+    # Format: (code, name)
+    currencies = (
+        ("AED", "BAA Dirhami"),
+        ("AFN", "Afg‘oni"),
+        ("ALL", "Lek"),
+        ("AMD", "Arman dramasi"),
+        ("ANG", "Niderlandiya Antil guldeni"),
+        ("AOA", "Kvanza"),
+        ("ARS", "Argentina pesosi"),
+        ("AUD", "Avstraliya dollari"),
+        ("AWG", "Aruba florini"),
+        ("AZN", "Ozarbayjon manati"),
+        ("BAM", "Bosniya va Gertsegovina konvertatsiya qilinadigan markasi"),
+        ("BBD", "Barbados dollari"),
+        ("BDT", "Taka"),
+        ("BGN", "Bolgariya levi"),
+        ("BHD", "Bahrayn dinori"),
+        ("BIF", "Burundi franki"),
+        ("BMD", "Bermuda dollari"),
+        ("BND", "Bruney dollari"),
+        ("BOB", "Boliviano"),
+        ("BRL", "Braziliya reali"),
+        ("BSD", "Bagama dollari"),
+        ("BTN", "Ngultrum"),
+        ("BWP", "Pula"),
+        ("BYR", "Belarus rubli"),
+        ("BZD", "Beliz dollari"),
+        ("CAD", "Kanada dollari"),
+        ("CDF", "Kongo franki"),
+        ("CHF", "Shveytsariya franki"),
+        ("CLP", "Chili pesosi"),
+        ("CNY", "Yuan"),
+        ("COP", "Kolumbiya pesosi"),
+        ("CRC", "Kosta-Rika koloni"),
+        ("CUC", "Kuba konvertatsiya qilinadigan pesosi"),
+        ("CUP", "Kuba pesosi"),
+        ("CVE", "Kabo-Verde eskudosi"),
+        ("CZK", "Chex kronasi"),
+        ("DJF", "Jibuti franki"),
+        ("DKK", "Daniya kronasi"),
+        ("DOP", "Dominikan pesosi"),
+        ("DZD", "Jazoir dinori"),
+        ("EGP", "Misr funti"),
+        ("ERN", "Nakfa"),
+        ("ETB", "Efiopiya biri"),
+        ("EUR", "Yevro"),
+        ("FJD", "Fiji dollari"),
+        ("FKP", "Folklend orollari funti"),
+        ("GBP", "Funt sterling"),
+        ("GEL", "Lari"),
+        ("GGP", "Gernsi funti"),
+        ("GHS", "Gana sedi"),
+        ("GIP", "Gibraltar funti"),
+        ("GMD", "Dalasi"),
+        ("GNF", "Gvineya franki"),
+        ("GTQ", "Ketsal"),
+        ("GYD", "Gayana dollari"),
+        ("HKD", "Gonkong dollari"),
+        ("HNL", "Lempira"),
+        ("HRK", "Xorvatiya kunasi"),
+        ("HTG", "Gurda"),
+        ("HUF", "Forint"),
+        ("IDR", "Indoneziya rupiyasi"),
+        ("ILS", "Yangi Isroil shekeli"),
+        ("NIS", "Yangi Isroil shekeli"),
+        ("IMP", "Men oroli funti"),
+        ("INR", "Hind rupiyasi"),
+        ("IQD", "Iroq dinori"),
+        ("IRR", "Eron riali"),
+        ("ISK", "Islandiya kronasi"),
+        ("JEP", "Jersi funti"),
+        ("JMD", "Yamayka dollari"),
+        ("JOD", "Iordaniya dinori"),
+        ("JPY", "Yena"),
+        ("KES", "Keniya shillingi"),
+        ("KGS", "Som"),
+        ("KHR", "Riyel"),
+        ("KMF", "Komor franki"),
+        ("KPW", "Shimoliy Koreya voni"),
+        ("KRW", "Janubiy Koreya voni"),
+        ("KWD", "Kuvayt dinori"),
+        ("KYD", "Kayman orollari dollari"),
+        ("KZT", "Tenge"),
+        ("LAK", "Kip"),
+        ("LBP", "Livan funti"),
+        ("LKR", "Shri-Lanka rupiyasi"),
+        ("LRD", "Liberiya dollari"),
+        ("LSL", "Loti"),
+        ("LTL", "Litva liti"),
+        ("LYD", "Liviya dinori"),
+        ("MAD", "Marokash dirhami"),
+        ("MDL", "Moldaviya leyi"),
+        ("MGA", "Malagasi ariari"),
+        ("MKD", "Denar"),
+        ("MMK", "Kyat"),
+        ("MNT", "Tugrik"),
+        ("MOP", "Pataka"),
+        ("MRO", "Ugiyya"),
+        ("MUR", "Mavrikiy rupiyasi"),
+        ("MVR", "Rufiya"),
+        ("MWK", "Kvacha"),
+        ("MXN", "Meksika pesosi"),
+        ("MYR", "Malayziya ringgiti"),
+        ("MZN", "Mozambik metikali"),
+        ("NAD", "Namibiya dollari"),
+        ("NGN", "Nayra"),
+        ("NIO", "Kordoba"),
+        ("NOK", "Norvegiya kronasi"),
+        ("NPR", "Nepal rupiyasi"),
+        ("NZD", "Yangi Zelandiya dollari"),
+        ("OMR", "Ummon riali"),
+        ("PAB", "Balboa"),
+        ("PEN", "Sol"),
+        ("PGK", "Kina"),
+        ("PHP", "Filippin pesosi"),
+        ("PKR", "Pokiston rupiyasi"),
+        ("PLN", "Zlotiy"),
+        ("PYG", "Guarani"),
+        ("QAR", "Qatar riali"),
+        ("RON", "Ruminiya leyi"),
+        ("RSD", "Serbiya dinori"),
+        ("RUB", "Rossiya rubli"),
+        ("RWF", "Ruanda franki"),
+        ("SAR", "Saudiya riyoli"),
+        ("SBD", "Solomon orollari dollari"),
+        ("SCR", "Seyshel rupiyasi"),
+        ("SDG", "Sudan funti"),
+        ("SEK", "Shvetsiya kronasi"),
+        ("SGD", "Singapur dollari"),
+        ("SHP", "Muqaddas Yelena funti"),
+        ("SLL", "Leone"),
+        ("SOS", "Somali shillingi"),
+        ("SPL", "Luigino"),
+        ("SRD", "Surinam dollari"),
+        ("STD", "Dobra"),
+        ("SVC", "Salvador koloni"),
+        ("SYP", "Suriya funti"),
+        ("SZL", "Lilangeni"),
+        ("THB", "Bat"),
+        ("TJS", "Somoniy"),
+        ("TMT", "Yangi Turkman manati"),
+        ("TND", "Tunis dinori"),
+        ("TOP", "Paanga"),
+        ("TRY", "Turk lirasi"),
+        ("TTD", "Trinidad va Tobago dollari"),
+        ("TVD", "Tuvalu dollari"),
+        ("TWD", "Yangi Tayvan dollari"),
+        ("TZS", "Tanzaniya shillingi"),
+        ("UAH", "Grivna"),
+        ("UGX", "Uganda shillingi"),
+        ("USD", "AQSh dollari"),
+        ("UYU", "Urugvay pesosi"),
+        ("UZS", "Oʻzbek so‘mi"),
+        ("VEF", "Suveren bolivar"),
+        ("VND", "Dong"),
+        ("VUV", "Vatu"),
+        ("WST", "Tala"),
+        ("XAF", "KFA franki BEAS"),
+        ("XCD", "Sharqiy Karib dollari"),
+        ("XDR", "SDR"),
+        ("XOF", "KFA franki BCEAO"),
+        ("XPF", "KFP franki"),
+        ("YER", "Yaman riali"),
+        ("ZAR", "Rand"),
+        ("ZMW", "Zambiya kvachasi"),
+        ("ZWD", "Zimbabve dollari"),
+    )
+
+    price_formats = ["#,##", "%#,##", "%##,##", "% ###,##", "%# ###,##"]
+
+    def pricetag(self) -> str:
+        return (
+            self.numerify(self.random_element(self.price_formats)) + "\N{no-break space}\N{cyrillic small letter er}."
+        )
diff --git a/faker/providers/date_time/__init__.py b/faker/providers/date_time/__init__.py
index 6dd8b3f7..0c67fb13 100644
--- a/faker/providers/date_time/__init__.py
+++ b/faker/providers/date_time/__init__.py
@@ -1,4 +1,3 @@
-import functools
 import platform
 import re
 
@@ -34,20 +33,6 @@ def timestamp_to_datetime(timestamp: Union[int, float], tzinfo: Optional[TzInfo]
     return convert_timestamp_to_datetime(timestamp, tzinfo)
 
 
-def maybe_format_as_string(func):
-    """Format date as string if a pattern is provided."""
-
-    @functools.wraps(func)
-    def wrapper(*args, **kwargs):
-        result: dtdate = func(*args, **kwargs)
-        pattern = kwargs.get("pattern")
-        if pattern:
-            return result.strftime(pattern)
-        return result
-
-    return wrapper
-
-
 def change_year(current_date: dtdate, year_diff: int) -> dtdate:
     """
     Unless the current_date is February 29th, it is fine to just subtract years.
@@ -2072,22 +2057,15 @@ class Provider(BaseProvider):
         else:
             return (datetime(1970, 1, 1, tzinfo=tzutc()) + timedelta(seconds=ts)).astimezone(tzinfo)
 
-    @maybe_format_as_string
-    def date_between(
-        self,
-        start_date: DateParseType = "-30y",
-        end_date: DateParseType = "today",
-        pattern: Optional[str] = None,
-    ) -> Union[dtdate, str]:
+    def date_between(self, start_date: DateParseType = "-30y", end_date: DateParseType = "today") -> dtdate:
         """
         Get a Date object based on a random date between two given dates.
         Accepts date strings that can be recognized by strtotime().
 
         :param start_date: Defaults to 30 years ago
         :param end_date: Defaults to "today"
-        :param pattern: optional pattern to format the date as string
-        :example: Date('1999-02-02') or '1999-02-02'
-        :return: Date or string
+        :example: Date('1999-02-02')
+        :return: Date
         """
 
         start_date = self._parse_date(start_date)
@@ -2107,13 +2085,7 @@ class Provider(BaseProvider):
         """
         return self.date_time_between(start_date="+1s", end_date=end_date, tzinfo=tzinfo)
 
-    @maybe_format_as_string
-    def future_date(
-        self,
-        end_date: DateParseType = "+30d",
-        tzinfo: Optional[TzInfo] = None,
-        pattern: Optional[str] = None,
-    ) -> Union[dtdate, str]:
+    def future_date(self, end_date: DateParseType = "+30d", tzinfo: Optional[TzInfo] = None) -> dtdate:
         """
         Get a Date object based on a random date between 1 day from now and a
         given date.
@@ -2121,7 +2093,6 @@ class Provider(BaseProvider):
 
         :param end_date: Defaults to "+30d"
         :param tzinfo: timezone, instance of datetime.tzinfo subclass
-        :param pattern: optional pattern to format the date as string
         :example: dtdate('2030-01-01')
         :return: dtdate
         """
@@ -2140,13 +2111,7 @@ class Provider(BaseProvider):
         """
         return self.date_time_between(start_date=start_date, end_date="-1s", tzinfo=tzinfo)
 
-    @maybe_format_as_string
-    def past_date(
-        self,
-        start_date: DateParseType = "-30d",
-        tzinfo: Optional[TzInfo] = None,
-        pattern: Optional[str] = None,
-    ) -> Union[dtdate, str]:
+    def past_date(self, start_date: DateParseType = "-30d", tzinfo: Optional[TzInfo] = None) -> dtdate:
         """
         Get a Date object based on a random date between a given date and 1 day
         ago.
@@ -2154,9 +2119,8 @@ class Provider(BaseProvider):
 
         :param start_date: Defaults to "-30d"
         :param tzinfo: timezone, instance of datetime.tzinfo subclass
-        :param pattern: optional pattern to format the date as string
         :example: dtdate('1999-02-02')
-        :return: dtdate or string
+        :return: dtdate
         """
         return self.date_between(start_date=start_date, end_date="-1d")
 
@@ -2203,21 +2167,18 @@ class Provider(BaseProvider):
             )
         return pick
 
-    @maybe_format_as_string
     def date_between_dates(
         self,
         date_start: Optional[DateParseType] = None,
         date_end: Optional[DateParseType] = None,
-        pattern: Optional[str] = None,
-    ) -> Union[dtdate, str]:
+    ) -> dtdate:
         """
         Takes two Date objects and returns a random date between the two given dates.
         Accepts Date or datetime objects
 
         :param date_start: Date
         :param date_end: Date
-        :param pattern: optional pattern to format the date as string
-        :return: Date or string
+        :return: Date
         """
         return self.date_time_between_dates(date_start, date_end).date()
 
@@ -2333,21 +2294,14 @@ class Provider(BaseProvider):
         else:
             return now
 
-    @maybe_format_as_string
-    def date_this_century(
-        self,
-        before_today: bool = True,
-        after_today: bool = False,
-        pattern: Optional[str] = None,
-    ) -> Union[dtdate, str]:
+    def date_this_century(self, before_today: bool = True, after_today: bool = False) -> dtdate:
         """
         Gets a Date object for the current century.
 
         :param before_today: include days in current century before today
         :param after_today: include days in current century after today
-        :param pattern: optional pattern to format the date as string
         :example: Date('2012-04-04')
-        :return: Date or string
+        :return: Date
         """
         today = dtdate.today()
         this_century_start = dtdate(today.year - (today.year % 100), 1, 1)
@@ -2362,21 +2316,14 @@ class Provider(BaseProvider):
         else:
             return today
 
-    @maybe_format_as_string
-    def date_this_decade(
-        self,
-        before_today: bool = True,
-        after_today: bool = False,
-        pattern: Optional[str] = None,
-    ) -> Union[dtdate, str]:
+    def date_this_decade(self, before_today: bool = True, after_today: bool = False) -> dtdate:
         """
         Gets a Date object for the decade year.
 
         :param before_today: include days in current decade before today
         :param after_today: include days in current decade after today
-        :param pattern: optional pattern to format the date as string
         :example: Date('2012-04-04')
-        :return: Date or string
+        :return: Date
         """
         today = dtdate.today()
         this_decade_start = dtdate(today.year - (today.year % 10), 1, 1)
@@ -2391,19 +2338,12 @@ class Provider(BaseProvider):
         else:
             return today
 
-    @maybe_format_as_string
-    def date_this_year(
-        self,
-        before_today: bool = True,
-        after_today: bool = False,
-        pattern: Optional[str] = None,
-    ) -> Union[dtdate, str]:
+    def date_this_year(self, before_today: bool = True, after_today: bool = False) -> dtdate:
         """
         Gets a Date object for the current year.
 
         :param before_today: include days in current year before today
         :param after_today: include days in current year after today
-        :param pattern: optional pattern to format the date as string
         :example: Date('2012-04-04')
         :return: Date
         """
@@ -2420,21 +2360,14 @@ class Provider(BaseProvider):
         else:
             return today
 
-    @maybe_format_as_string
-    def date_this_month(
-        self,
-        before_today: bool = True,
-        after_today: bool = False,
-        pattern: Optional[str] = None,
-    ) -> Union[dtdate, str]:
+    def date_this_month(self, before_today: bool = True, after_today: bool = False) -> dtdate:
         """
         Gets a Date object for the current month.
 
         :param before_today: include days in current month before today
         :param after_today: include days in current month after today
-        :param pattern: optional pattern to format the date as string
         :example: dtdate('2012-04-04')
-        :return: dtdate or string
+        :return: dtdate
         """
         today = dtdate.today()
         this_month_start = today.replace(day=1)
@@ -2524,14 +2457,12 @@ class Provider(BaseProvider):
         """
         return gettz(self.timezone(*args, **kwargs))  # type: ignore
 
-    @maybe_format_as_string
     def date_of_birth(
         self,
         tzinfo: Optional[TzInfo] = None,
         minimum_age: int = 0,
         maximum_age: int = 115,
-        pattern: Optional[str] = None,
-    ) -> Union[dtdate, str]:
+    ) -> dtdate:
         """
         Generate a random date of birth represented as a Date object,
         constrained by optional miminimum_age and maximum_age
@@ -2540,7 +2471,6 @@ class Provider(BaseProvider):
         :param tzinfo: Defaults to None.
         :param minimum_age: Defaults to 0.
         :param maximum_age: Defaults to 115.
-        :param pattern: optional pattern to format the date as string
 
         :example: Date('1979-02-02')
         :return: Date
diff --git a/faker/providers/date_time/gu_IN/__init__.py b/faker/providers/date_time/gu_IN/__init__.py
new file mode 100644
index 00000000..61028b76
--- /dev/null
+++ b/faker/providers/date_time/gu_IN/__init__.py
@@ -0,0 +1,76 @@
+from .. import Provider as DateTimeProvider
+
+
+class Provider(DateTimeProvider):
+
+    DAY_NAMES = {
+        "0": "Ravivar",
+        "1": "Somvar",
+        "2": "Mangalvar",
+        "3": "Budhvar",
+        "4": "Guruvar",
+        "5": "Shukravar",
+        "6": "Shanivar",
+    }
+
+    DAY_NAMES_IN_GUJARATI = {
+        "0": "રવિવાર",
+        "1": "સોમવાર",
+        "2": "મંગળવાર",
+        "3": "બુધવાર",
+        "4": "ગુરુવાર",
+        "5": "શુક્રવાર",
+        "6": "શનિવાર",
+    }
+
+    MONTH_NAMES = {
+        "01": "Kartak",
+        "02": "Magshar",
+        "03": "Posh",
+        "04": "Maha",
+        "05": "Fagan",
+        "06": "Chaitra",
+        "07": "Vaishakh",
+        "08": "Jeth",
+        "09": "Ashadh",
+        "10": "Shravan",
+        "11": "Bhadarvo",
+        "12": "Aaso",
+    }
+
+    MONTH_NAMES_IN_GUJARATI = {
+        "01": "કારતક",
+        "02": "માગશર",
+        "03": "પોષ",
+        "04": "મહા",
+        "05": "ફાગણ",
+        "06": "ચૈત્ર",
+        "07": "વૈશાખ",
+        "08": "જેઠ",
+        "09": "અષાઢ",
+        "10": "શ્રાવણ",
+        "11": "ભાદરવો",
+        "12": "આસો",
+    }
+
+    def day_of_week(self) -> str:
+        day = self.date("%w")
+        return self.DAY_NAMES[day]
+
+    def month_name(self) -> str:
+        month = self.month()
+        return self.MONTH_NAMES[month]
+
+    def day_of_week_in_guj(self) -> str:
+        """Returns day of the week in `Gujarati`"""
+        day = self.date("%w")
+        return self.DAY_NAMES_IN_GUJARATI[day]
+
+    def month_name_in_guj(self) -> str:
+        """Returns month name in `Gujarati`"""
+        month = self.month()
+        return self.MONTH_NAMES_IN_GUJARATI[month]
+
+    def month_in_guj(self) -> str:
+        """Returns month name in `Gujarati`"""
+        return self.month_name_in_guj()
diff --git a/faker/providers/date_time/ka_GE/__init__.py b/faker/providers/date_time/ka_GE/__init__.py
new file mode 100644
index 00000000..dff9764d
--- /dev/null
+++ b/faker/providers/date_time/ka_GE/__init__.py
@@ -0,0 +1,37 @@
+from .. import Provider as DateTimeProvider
+
+
+class Provider(DateTimeProvider):
+    # Sourse: https://www.ganmarteba.ge/
+    DAY_NAMES = {
+        "0": "კვირა",
+        "1": "ორშაბათი",
+        "2": "სამშაბათი",
+        "3": "ოთხშაბათი",
+        "4": "ხუთშაბათი",
+        "5": "პარასკევი",
+        "6": "შაბათი",
+    }
+
+    MONTH_NAMES = {
+        "01": "იანვარი",
+        "02": "თებერვალი",
+        "03": "მარტი",
+        "04": "აპრილი",
+        "05": "მაისი",
+        "06": "ივნისი",
+        "07": "ივლისი",
+        "08": "აგვისტო",
+        "09": "სექტემბერი",
+        "10": "ოქტომბერი",
+        "11": "ნოემბერი",
+        "12": "დეკემბერი",
+    }
+
+    def day_of_week(self):
+        day = self.date("%w")
+        return self.DAY_NAMES[day]
+
+    def month_name(self):
+        month = self.month()
+        return self.MONTH_NAMES[month]
diff --git a/faker/providers/date_time/uz_UZ/__init__.py b/faker/providers/date_time/uz_UZ/__init__.py
new file mode 100644
index 00000000..ad0fe0ef
--- /dev/null
+++ b/faker/providers/date_time/uz_UZ/__init__.py
@@ -0,0 +1,36 @@
+from .. import Provider as DateTimeProvider
+
+
+class Provider(DateTimeProvider):
+    DAY_NAMES = {
+        "0": "Dushanba",
+        "1": "Seshanba",
+        "2": "Chorshanba",
+        "3": "Payshanba",
+        "4": "Juma",
+        "5": "Shanba",
+        "6": "Yakshanba",
+    }
+
+    MONTH_NAMES = {
+        "01": "Yanvar",
+        "02": "Fevral",
+        "03": "Mart",
+        "04": "Aprel",
+        "05": "May",
+        "06": "Iyun",
+        "07": "Iyul",
+        "08": "Avgust",
+        "09": "Sentabr",
+        "10": "Oktabr",
+        "11": "Noyabr",
+        "12": "Dekabr",
+    }
+
+    def day_of_week(self) -> str:
+        day = self.date("%w")
+        return self.DAY_NAMES[day]
+
+    def month_name(self) -> str:
+        month = self.month()
+        return self.MONTH_NAMES[month]
diff --git a/faker/providers/job/ka_GE/__init__.py b/faker/providers/job/ka_GE/__init__.py
new file mode 100644
index 00000000..e98bdd56
--- /dev/null
+++ b/faker/providers/job/ka_GE/__init__.py
@@ -0,0 +1,392 @@
+from .. import Provider as BaseProvider
+
+
+class Provider(BaseProvider):
+    # Sourse: https://www.ganmarteba.ge/
+    jobs = [
+        "ავიადისპეტჩერი",
+        "ამწე ოპერატორი",
+        "ავიატექნიკოსი",
+        "ავიაციის ტექნიკოსი",
+        "აეროპლანის მფრინავი",
+        "აკუსტიკის ინჟინერი",
+        "აღმზრდელი",
+        "აღმოსავლეთმცოდნე",
+        "ავტოელექტრიკოსი",
+        "აგრონომი",
+        "არტისტი",
+        "აგრონომ-ნიადაგმცოდნე",
+        "ადვოკატი",
+        "აკუმულატორების სპეციალისტი",
+        "აქტუარი",
+        "ალერგოლოგი",
+        "ანალიტიკოსი",
+        "ანდროლოგი",
+        "ანთროპოლოგი",
+        "არტილერისტი",
+        "არქეოლოგი",
+        "არქივარიუსი",
+        "არქიტექტორი",
+        "ასტრონომი",
+        "ასტрофიზიკოსი",
+        "ასტროქიმიკოსი",
+        "ბაქტერიოლოგი",
+        "ბალერინა",
+        "ბალეტმაისტერი",
+        "ბანკირი",
+        "ბარმენი",
+        "ბატალერი",
+        "ბიბლიოთეკარი",
+        "ბიბლიოთეკმცოდნე",
+        "ბიონჟინერი",
+        "ბიოლოგი",
+        "ბიოფიზიკოსი",
+        "ბიოქიმიკოსი",
+        "ბლოგერი",
+        "ბორტ-ინჟინერი",
+        "ბორტ-მექანიკოსი",
+        "ბორტ-რადისტი",
+        "ბოტანიკოსი",
+        "ბრეიდერი",
+        "ბროკერი",
+        "პურის მცხობელი",
+        "ბულდოზერისტი",
+        "ბუღალტერი",
+        "გასტროენტეროლოგი",
+        "გემის კაპიტანი",
+        "გაუპვახტის უფროსი",
+        "გამომძიებელი",
+        "გალვანიკური ინჟინერი",
+        "გამომცემელი",
+        "გამომგონებელი",
+        "გენეტიკოსი",
+        "გეოგრაფი",
+        "გეოდეზისტი",
+        "გამყიდველი",
+        "გეოლოგი",
+        "გინეკოლოგი",
+        "გიტარისტი",
+        "გლაციოლოგი",
+        "გრანატომტყორცნელი",
+        "გრეიდერის ოპერატორი",
+        "გრენადერი",
+        "გრიმიორი",
+        "გამომცემელი რედაქტორი",
+        "დიზაინის ინჟინერი",
+        "დეკანი",
+        "დეკორატორი",
+        "დურგალი",
+        "დერმატოლოგი",
+        "დეტექტივი",
+        "დეფექტოლოგი",
+        "დიჯეი",
+        "დიეტოლოგი",
+        "დიზაინერი",
+        "დიზაინერი-კონსტრუქტორი",
+        "დიქტორი",
+        "დილერი",
+        "დიპლომატი",
+        "დიპლომატიური მუშაკი",
+        "დირიჟორი",
+        "დრეპერი",
+        "დამლაგებელი",
+        "ეკოლოგი",
+        "ეკონომისტი",
+        "ექსპედიტორი",
+        "ექიმი ულტრაბგერითი დიაგნოსტიკის",
+        "ეგვიპტოლოგი",
+        "ექსპერტ-კრიმინალისტი",
+        "ელექტრიკოსი",
+        "ელექტროინჟინერი",
+        "ენერგეტიკის ინჟინერი",
+        "ენდოკრინოლოგი",
+        "ენდოსკოპისტი",
+        "ენტომოლოგი",
+        "ეპიდემიოლოგი",
+        "ეფერენტოლოგი",
+        "ვებ-ინტეგრატორი",
+        "ვებ-მასტერი",
+        "ვებ-პროგრამისტი",
+        "ვეტერინარი",
+        "ვიზაჟისტი",
+        "ვაზის მეღვინე",
+        "ვირუსოლოგი",
+        "ვოკალისტი",
+        "ზეინკალი",
+        "ზოოლოგი",
+        "თეოლოგი",
+        "თერაპევტი",
+        "თერიოლოგი",
+        "თიფლოპედაგოგი",
+        "თორაკალური ქირურგი",
+        "თარჯიმანი",
+        "ილუსტრატორი",
+        "იმიჯმეიკერი",
+        "იმუნოლოგი",
+        "იუველირი",
+        "იურიდიული მრჩეველი",
+        "იურისტი",
+        "ინჟინერი",
+        "ინკასატორი",
+        "ინტენდანტი",
+        "ინფექციონისტი",
+        "ისტორიკოსი",
+        "იქთიოლოგი",
+        "კომპიუტერული ინჟინერი",
+        "კინოსა და ტელევიზიის ოპერატორი",
+        "კარდიოლოგი",
+        "კარდიოქირურგი",
+        "კასკადიორი",
+        "კომპიუტერის ოპერატორი",
+        "კასირი",
+        "კინოლოგი",
+        "კრიპტოგრაფი",
+        "კინომექანიკოსი",
+        "კინოოპერატორი",
+        "კინორეჟისორი",
+        "კლიენტთა ურთიერთობის მენეჯერი",
+        "კოდერი",
+        "კომენდანტი",
+        "კომერციული დირექტორი",
+        "კომპოზიტორი",
+        "კონდიტერი",
+        "კონდუქტორი",
+        "კონტენტის მენეჯერი",
+        "კოპირაიტერი",
+        "კორექტორ-მთავარი",
+        "კორექტორი",
+        "კოსმეტოლოგი",
+        "კოსმონავტი",
+        "კრიპტოზოოლოგი",
+        "კრიტიკოსი",
+        "კულტუროლოგი",
+        "ლაბორანტი",
+        "ლიმფოლოგი",
+        "ლინგვისტი",
+        "ლოგოპედი",
+        "ლოცმანი",
+        "ლაბორანტი-ინჟინერი",
+        "ლოკომოტივის მძღოლი",
+        "ლექტორი",
+        "მალარი",
+        "მამმოლოგი",
+        "მხატვარი",
+        "მცხობელი",
+        "მანუალისტი",
+        "მარკეტოლოგი",
+        "მასაჟისტი",
+        "მწყემსი",
+        "მანიკიურის ოსტატი",
+        "მათემატიკოსი",
+        "მატარებლის მძღოლი",
+        "მცენარეთა სპეციალისტი",
+        "მეწარმე",
+        "მექანიზაციის ინჟინერი",
+        "მოცეკვავე",
+        "მძღოლი",
+        "მსახიობი",
+        "მეანე",
+        "მესაზღვრე",
+        "მეხანძრე",
+        "მეხორბლე",
+        "მიმტანი",
+        "მეფუტკრე",
+        "მწერალი",
+        "მენეჯერი",
+        "მეტალურგი",
+        "მეტეოროლოგი",
+        "მჭედელი",
+        "მებაჟე",
+        "მექანიკოსი",
+        "მეცხოველეობის სპეციალისტი",
+        "მეტყევე-ინჟინერი",
+        "მედესანტე",
+        "მექანიკის ინჟინერი",
+        "მცენარეთა დაცვის აგრონომი",
+        "მკერავი",
+        "მტვირთავი",
+        "მიკრობიოლოგი",
+        "მინისტრი",
+        "მოდელი",
+        "მოდელიერი",
+        "მებაღე",
+        "მასწავლებელი",
+        "მაღაროელი",
+        "მეცნიერი",
+        "მეწაღე",
+        "მოქანდაკე",
+        "მთამსვლელი",
+        "მყვინთავი",
+        "მეურნე",
+        "მონტაჟნიკი",
+        "მსაჯი",
+        "მონაცემთა ბაზის ადმინისტრატორი",
+        "მუსიკოსი",
+        "მშენებელი",
+        "ნარკოლოგი",
+        "ნევროლოგი",
+        "ნევროპათოლოგი",
+        "ნეიროქირურგი",
+        "ნეონატოლოგი",
+        "ნეფროლოგი",
+        "ნოტარიუსი",
+        "ოკეანოლოგი",
+        "ონკოლოგი",
+        "ორნითოლოგი",
+        "ორთოდონტი",
+        "ორთოპედი",
+        "ოტორინოლარინგოლოგი",
+        "ოფთალმოლოგი",
+        "ოჯახის ექიმი",
+        "პილოტი",
+        "პალეონტოლოგი",
+        "პედიკიურის ოსტატი",
+        "პარფიუმერი",
+        "პასტორალისტი",
+        "პათოლოგანატომი",
+        "პედაგოგი",
+        "პედიატრი",
+        "პლასტიკური ქირურგი",
+        "პოლიტოლოგი",
+        "პოლიციელი",
+        "პოეტი",
+        "პროგრამისტი",
+        "პროდიუსერი",
+        "პირადი მცველი",
+        "პროქტოლოგი",
+        "პროფესიული პათოლოგი",
+        "პულმონოლოგი",
+        "ჟურნალისტი",
+        "რეკლამის დიზაინერი",
+        "რადიოლოგი",
+        "რადიომექანიკოსი",
+        "რადიოტელეფონისტი",
+        "რადისტი",
+        "რადიოლოკაციური სისტემის ოპერატორი",
+        "რეანიმატოლოგი",
+        "რევმატოლოგი",
+        "რედაქტორი",
+        "რეჟისორი",
+        "რელიგიური მეცნიერი",
+        "რენტგენოლოგი",
+        "რესტავრატორი",
+        "რეფლექსოთერაპევტი",
+        "რიხტოვშიკი",
+        "რობოტოტექნიკოსი",
+        "სანიტარი",
+        "სანტექნიკოსი",
+        "საპიორი",
+        "სასულიერო პირი",
+        "სექსოლოგი",
+        "სექსოპათოლოგი",
+        "სერპენტოლოგი",
+        "სისტემური ადმინისტრატორი",
+        "სნაიპერი",
+        "სომელიე",
+        "სასაქონლო ექსპერტი",
+        "სპილენძის მჭედელი",
+        "სომნოლოგი",
+        "სოციოლოგი",
+        "სპორტული ექიმი",
+        "სახელმწიფო აღმასრულებელი",
+        "სამხედრო ქირურგი",
+        "სამხედრო მოსამსახურე",
+        "სამხედრო გამომძიებელი",
+        "სამხედრო კონსულტანტი",
+        "სამხედრო მთარგმნელი",
+        "სამხედრო პოლიციელი",
+        "საგადასახადო ინსპექტორი",
+        "საწყობის უფროსი",
+        "სამხედრო პროკურორი",
+        "სამხედრო მოსამართლე",
+        "სამედიცინო და სოციალური ექსპერტიზის ექიმი",
+        "სამხედრო ინჟინერი",
+        "საკრედიტო კონსულტანტი",
+        "სამხედრო იურისტი",
+        "სასწრაფო დახმარების ექიმი",
+        "სტიუარდი",
+        "სტომატოლოგი",
+        "სამართალმცოდნე",
+        "სადაზღვევო აგენტი",
+        "სასამართლო აღსრულების სპეციალისტი",
+        "სტილისტი",
+        "სამხედრო ორკესტრის უფროსი",
+        "სურდოლოგი",
+        "სურდოპედაგოგი",
+        "სცენარისტი",
+        "სისტემატიკის ინჟინერი",
+        "სამშენებლო ინჟინერი",
+        "ტაქსის მძღოლი",
+        "ტალმანი",
+        "ტანატოლოგი",
+        "ტანკისტი",
+        "ტატუს ოსტატი",
+        "ტელეგრაფისტი",
+        "ტელეჟურნალისტი",
+        "ტელევიზიის ოსტატი",
+        "ტესტირების სპეციალისტი",
+        "ტექნიკოსი",
+        "ტექნოლოგი",
+        "ტიპოგრაფი",
+        "ტექნოლოგიური ინჟინერი",
+        "ტოქსიკოლოგი",
+        "ტოპოგრაფი",
+        "ტრავმატოლოგი",
+        "ტრაქტორისტი",
+        "ტრანსფუზიოლოგი",
+        "ტრედერი",
+        "ტრენდ-ვოჩერი",
+        "უროლოგი",
+        "უმუშევარი",
+        "უსაფრთხოების ტექნიკის ინჟინერი",
+        "უჯრედული ტექნოლოგიების სპეციალისტი",
+        "ფიზიკის ინჟინერი",
+        "ფოსტალიონი",
+        "ფსიქიატრი",
+        "ფარმაცევტი",
+        "ფიზიკოსი",
+        "ფიზიოთერაპევტი",
+        "ფილოლოგი",
+        "ფილოსოფოსი",
+        "ფინანსისტი",
+        "ფლებოლოგი",
+        "ფლორისტი",
+        "ფოტოგრაფი",
+        "ფოტომოდელი",
+        "ფურაჟირი",
+        "ფუტუროლოგი",
+        "ფოლადის მწარმოებელი",
+        "ფსიქონევროპათოლოგი",
+        "ფუნქციური დიაგნოსტიკის ექიმი",
+        "ფსიქოთერაპევტი",
+        "ფსიქოლოგი",
+        "ქვისმთლელი",
+        "ქიმიის ინჟინერი",
+        "ქიმიკოსი",
+        "ქიმიკოს-ტექნოლოგი",
+        "ქირურგი",
+        "ქორეოგრაფი",
+        "ქოლცენტრის ოპერატორი",
+        "ქორწილების ორგანიზატორი",
+        "ქვაფენილი",
+        "ქუჩის დამლაგებელი",
+        "ყველის მწარმოებელი",
+        "შტაბის უფროსი",
+        "შემკრებავი",
+        "შემდუღებელი",
+        "ცხვრის მჭრელი სპეციალისტი",
+        "ცირკის არტისტი",
+        "ცხენმშენებელი",
+        "ციხის ზედამხედველი",
+        "ძიძა",
+        "ხარატი",
+        "ხმის ინჟინერი",
+        "ხელოვნებათმცოდნე",
+        "ჯალათი",
+        "ჰემატოლოგი",
+        "ჰეპატოლოგი",
+        "ჰიდროლოგი",
+        "ჰომეოპათი",
+        "ჰირუდოთერაპევტი",
+        "ჰიდრავლიკის ინჟინერი",
+    ]
diff --git a/faker/providers/misc/__init__.py b/faker/providers/misc/__init__.py
index 240249cb..287c3065 100644
--- a/faker/providers/misc/__init__.py
+++ b/faker/providers/misc/__init__.py
@@ -11,6 +11,8 @@ import zipfile
 
 from typing import Any, Callable, Dict, List, Optional, Sequence, Set, Tuple, Type, Union
 
+from typing_extensions import TypeAlias
+
 from faker.exceptions import UnsupportedFeature
 
 from .. import BaseProvider
@@ -21,6 +23,10 @@ localized = True
 csv.register_dialect("faker-csv", csv.excel, quoting=csv.QUOTE_ALL)
 
 
+ColumnSpec: TypeAlias = Union[Tuple[int, str], Tuple[int, str, Dict[str, Any]]]
+DataColumns: TypeAlias = List[ColumnSpec]
+
+
 class Provider(BaseProvider):
     def boolean(self, chance_of_getting_true: int = 50) -> bool:
         """Generate a random boolean value based on ``chance_of_getting_true``.
@@ -643,7 +649,7 @@ class Provider(BaseProvider):
         _dict = {self.generator.word(): _dict}
         return xmltodict.unparse(_dict)
 
-    def fixed_width(self, data_columns: Optional[list] = None, num_rows: int = 10, align: str = "left") -> str:
+    def fixed_width(self, data_columns: Optional[DataColumns] = None, num_rows: int = 10, align: str = "left") -> str:
         """
         Generate random fixed width values.
 
@@ -683,7 +689,8 @@ class Provider(BaseProvider):
             (20, "name"),
             (3, "pyint", {"max_value": 20}),
         ]
-        data_columns = data_columns if data_columns else default_data_columns
+        if data_columns is None:
+            data_columns: DataColumns = default_data_columns  # type: ignore
         align_map = {
             "left": "<",
             "middle": "^",
@@ -694,7 +701,7 @@ class Provider(BaseProvider):
         for _ in range(num_rows):
             row = []
 
-            for width, definition, *arguments in data_columns:
+            for width, definition, *arguments in data_columns:  # type: ignore
                 kwargs = arguments[0] if arguments else {}
 
                 if not isinstance(kwargs, dict):
diff --git a/faker/providers/passport/__init__.py b/faker/providers/passport/__init__.py
index 0641ed71..31f14ed3 100644
--- a/faker/providers/passport/__init__.py
+++ b/faker/providers/passport/__init__.py
@@ -4,6 +4,8 @@ import re
 from string import ascii_uppercase
 from typing import Tuple
 
+from faker.typing import SexLiteral
+
 from .. import BaseProvider, ElementsType
 
 localized = True
@@ -19,7 +21,7 @@ class Provider(BaseProvider):
         birthday = self.generator.date_of_birth()
         return birthday
 
-    def passport_owner(self, gender: str = "X") -> Tuple[str, str]:
+    def passport_owner(self, gender: SexLiteral = "X") -> Tuple[str, str]:
         """Generate a given_name and surname for a passport owner
         The ``gender`` argument is the gender marker of a passport owner, which is a one character string
         that is either male, female, or non-binary.
diff --git a/faker/providers/passport/en_US/__init__.py b/faker/providers/passport/en_US/__init__.py
index b0afb53c..419eac8a 100644
--- a/faker/providers/passport/en_US/__init__.py
+++ b/faker/providers/passport/en_US/__init__.py
@@ -3,6 +3,8 @@ import random
 from datetime import date, timedelta
 from typing import Tuple
 
+from faker.typing import SexLiteral
+
 from .. import Provider as PassportProvider
 
 
@@ -64,7 +66,7 @@ class Provider(PassportProvider):
         expiry_date_format = expiry_date.strftime("%d ") + expiry_date.strftime("%b ") + expiry_date.strftime("%Y")
         return birth_date, issue_date_format, expiry_date_format
 
-    def passport_gender(self, seed: int = 0) -> str:
+    def passport_gender(self, seed: int = 0) -> SexLiteral:
         """Generates a string representing the gender displayed on a passport
 
         Sources:
@@ -75,7 +77,7 @@ class Provider(PassportProvider):
             random.seed(seed)
 
         genders = ["M", "F", "X"]
-        gender = random.choices(genders, weights=[0.493, 0.493, 0.014], k=1)[0]
+        gender: SexLiteral = random.choices(genders, weights=[0.493, 0.493, 0.014], k=1)[0]  # type: ignore
         return gender
 
     def passport_full(self) -> str:
diff --git a/faker/providers/passport/ru_RU/__init__.py b/faker/providers/passport/ru_RU/__init__.py
new file mode 100644
index 00000000..e29ecad8
--- /dev/null
+++ b/faker/providers/passport/ru_RU/__init__.py
@@ -0,0 +1,11 @@
+from typing import Tuple
+
+from faker.typing import SexLiteral
+
+from .. import Provider as PassportProvider
+
+
+class Provider(PassportProvider):
+    def passport_owner(self, gender: SexLiteral = "M") -> Tuple[str, str]:
+        given_name, surname = super().passport_owner(gender)
+        return surname, given_name
diff --git a/faker/providers/person/gu_IN/__init__.py b/faker/providers/person/gu_IN/__init__.py
new file mode 100644
index 00000000..fffd4aa0
--- /dev/null
+++ b/faker/providers/person/gu_IN/__init__.py
@@ -0,0 +1,157 @@
+from .. import Provider as PersonProvider
+
+
+class Provider(PersonProvider):
+
+    formats_male = (
+        "{{first_name_male}} {{last_name}}",
+        "{{prefix_male}} {{first_name_male}} {{last_name}}",
+    )
+
+    formats_female = (
+        "{{first_name_female}} {{last_name}}",
+        "{{prefix_female}} {{first_name_female}} {{last_name}}",
+    )
+
+    formats = (
+        "{{first_name}} {{last_name}}",
+        "{{prefix}} {{first_name}} {{last_name}}",
+    )
+
+    # names taken from https://www.behindthename.com/names/gender/feminine/usage/gujarati
+    first_names_female = (
+        "અંકિતા",
+        "અવની",
+        "હીરા",
+        "કાજલ",
+        "કિરણ",
+        "નેહા",
+        "નિશા",
+        "પૂજા",
+        "પ્રાચી",
+        "પ્રીતિ",
+        "પ્રીતિ",
+        "પૂજા",
+        "રચના",
+        "રાધીકા",
+        "શ્રેયા",
+        "શ્વેતા",
+        "સોનલ",
+        "તન્વી",
+        "તેજલ",
+        "ઉર્વી",
+        "વર્ષા",
+    )
+
+    # names taken from https://www.behindthename.com/names/gender/masculine/usage/gujarati
+    first_names_male = (
+        "અભિષેક",
+        "અજય",
+        "અક્ષય",
+        "આનંદ",
+        "અનિલ",
+        "અંકિત",
+        "અર્જુન",
+        "અરુણ",
+        "આશિષ",
+        "અશોક",
+        "ભારત",
+        "બ્રિજેશ",
+        "ચેતન",
+        "ચિરાગ",
+        "દર્શન",
+        "દીપા",
+        "દીપક",
+        "ધવલ",
+        "દિલીપ",
+        "દિનેશ",
+        "દીપા",
+        "દીપક",
+        "હરીશ",
+        "હર્ષ",
+        "હર્ષલ",
+        "હીરા",
+        "જગદીશ",
+        "જય",
+        "જયેશ",
+        "જિતેન્દ્ર",
+        "કાજલ",
+        "કમલ",
+        "કરણ",
+        "કિરણ",
+        "કિશન",
+        "કૃષ્ણ",
+        "કુમાર",
+        "કુનાલ",
+        "મહેન્દ્ર",
+        "મહેશ",
+        "મનોજ",
+        "મયૂર",
+        "મિતુલ",
+        "મુકેશ",
+        "નરેન્દ્ર",
+        "નીરજ",
+        "નિખિલ",
+        "નીરજ",
+        "નીરવ",
+        "નિશાંત",
+        "નિતિન",
+        "પંકજ",
+        "પાર્થ",
+        "પ્રકાશ",
+        "પ્રણવ",
+        "પ્રતિક",
+        "પ્રતિક",
+        "પ્રવીણ",
+        "પ્રવીણ",
+        "રાહુલ",
+        "રાજ",
+        "રાજેન્દ્ર",
+        "રાજેશ",
+        "રાકેશ",
+        "રમેશ",
+        "રવિ",
+        "રોહિત",
+        "સચિન",
+        "સમીર",
+        "સમીર",
+        "સંદિપ",
+        "સંદિપ",
+        "સંજય",
+        "સંજીવ",
+        "સંજીવ",
+        "શેખર",
+        "સિદ્ધાર્થ",
+        "સુભાષ",
+        "સુનીલ",
+        "સૂરજ",
+        "તુષાર",
+        "વસંત",
+        "વિક્રમ",
+        "વિપુલ",
+        "વિરાજ",
+        "વિશાલ",
+        "વિવેક",
+        "યશ",
+    )
+
+    first_names = first_names_female + first_names_male
+
+    # last names taken from https://surnames.behindthename.com/names/usage/gujarati
+    last_names = (
+        "ચૌધરી",
+        "ચૌધરી",
+        "ગઢવી",
+        "ગુપ્તા",
+        "જૈન",
+        "જોષી",
+        "કુમાર",
+        "પટેલ",
+        "શર્મા",
+    )
+
+    prefixes_female = ("શ્રીમતી", "કુમારી")
+
+    prefixes_male = ("શ્રી", "શ્રીમન")
+
+    prefixes = prefixes_female + prefixes_male
diff --git a/faker/providers/person/hi_IN/__init__.py b/faker/providers/person/hi_IN/__init__.py
index d5aebad4..9937fc82 100644
--- a/faker/providers/person/hi_IN/__init__.py
+++ b/faker/providers/person/hi_IN/__init__.py
@@ -2,239 +2,524 @@ from .. import Provider as PersonProvider
 
 
 class Provider(PersonProvider):
+
+    formats_male = (
+        "{{first_name_male}} {{last_name}}",
+        "{{prefix_male}} {{first_name_male}} {{last_name}}",
+        "{{first_name_male}} {{last_name}}{{suffix}}",
+        "{{prefix}} {{first_name_male}} {{last_name}}",
+    )
+    formats_female = (
+        "{{first_name_female}} {{last_name}}",
+        "{{prefix_female}} {{first_name_female}} {{last_name}}",
+        "{{first_name_female}} {{last_name}}{{suffix}}",
+        "{{prefix}} {{first_name_female}} {{last_name}}",
+    )
+
     formats = (
         "{{first_name}} {{last_name}}",
-        "{{first_name}} {{last_name}}",
-        "{{last_name}}, {{first_name}}",
+        "{{prefix}} {{first_name}} {{last_name}}",
+        "{{first_name}} {{last_name}}{{suffix}}",
     )
 
-    # First 20 names from here
-    # https://www.babycenter.in/l25020672/top-20-indian-boys-names-of-2016-photos
-    # Next 20 names from here
-    # https://www.babycenter.in/l25020674/top-20-indian-girls-names-of-2016-photos
-    first_names = (
-        "मुहम्मद",
-        "आरव",
-        "अर्जुन",
-        "रायन",
-        "आद्विक",
-        "अथर्व",
-        "रेयांश",
-        "अयान",
-        "विहान",
-        "साई",
-        "अद्वैत",
-        "शौर्य",
-        "विआन",
-        "आरुष",
-        "इशान",
-        "अयांश",
-        "पार्थ",
-        "देन्यल",
-        "किआन",
-        "विवान",
-        "आद्या",
-        "अनन्या",
-        "शनाया",
-        "फ़ातिमा",
-        "श्री",
-        "अनाया",
-        "अनिका",
-        "मायरा",
-        "इनाया",
-        "अमायरा",
-        "आन्वी",
-        "स्वरा",
-        "ज़ारा",
-        "मरियम",
-        "आराध्या",
-        "तन्वी",
-        "दीया",
-        "अद्विका",
-        "ईवा",
-        "आव्या",
+    # http://www.20000-names.com/male_hindi_names.htm
+    first_names_male = (
         "अभय",
         "आदित्य",
         "अजित",
+        "आकाङ्क्षा",
+        "अकबर",
         "अखिल",
         "अमर",
+        "अमित",
+        "अमृत",
         "आनन्द",
+        "अनन्‍त",
+        "अनिल",
+        "अनिरुद्ध",
+        "अनिश",
         "अंकुर",
+        "अनुज",
         "अनुपम",
+        "अरविन्द",
+        "अर्जुन",
+        "अरुण",
+        "अरुणा",
+        "असीम",
         "अशोक",
+        "बल",
+        "बलदेव",
+        "बलराम",
+        "भारत",
+        "ब्रह्मा",
+        "बृजेश",
+        "चण्ड",
         "चन्दना",
+        "चन्द्रकान्त",
+        "दामोदर",
+        "दर्शन",
+        "दयाराम",
+        "देवदान",
+        "दीपक",
+        "देवदान",
+        "देवदास",
+        "देवराज",
+        "धनञ्जय",
+        "धवल",
+        "दिलीप",
+        "दिनेश",
+        "दीपक",
+        "दिलीप",
         "गणेश",
         "गौतम",
+        "गोपाल",
+        "गोतम",
         "गोविंदा",
+        "गुलज़ार",
         "हनुमान्",
+        "हरेन्द्र",
+        "हरि",
+        "हरीश",
+        "हर्श",
+        "हर्शद",
+        "हर्शल",
+        "इला",
+        "इन्द्र",
         "इन्द्रजित",
         "ईश",
         "जगन्नाथ",
         "जगदीश",
+        "जगजीत",
         "जयदेव",
+        "ज़स्विन्देर्",
+        "जय",
+        "जयन्त",
+        "जयेन्द्र",
         "जितेन्द्र",
+        "जौहर",
+        "ज्योतिष",
         "कैलाश",
         "कालिदास",
+        "काम",
+        "कमल",
         "कम्बोज",
+        "कपिल",
+        "कर्ण",
+        "ख़ान",
         "किरण",
+        "कशोर",
+        "कृष्ण",
+        "कुमार",
+        "कुणाल",
+        "लक्ष्मण",
+        "लाल",
         "ललित",
+        "लोचन",
+        "माधव",
+        "मधुकर",
+        "महात्मा",
+        "महावीर",
+        "महेन्द्रा",
         "मानदीप",
+        "मनीश",
+        "मणि",
+        "मणीन्द्र",
+        "मनीश",
+        "मञ्जुनाथ",
         "मोहन",
         "मुकेश",
-        "नरेन्द्र",
+        "नंद",
         "नारायण",
+        "नरेन्द्र",
+        "नवीन",
         "निखिल",
+        "नीरव",
+        "िनशा",
+        "ओम",
+        "पद्म",
+        "पल्लव",
+        "पीताम्बर",
         "प्रभाकर",
+        "प्रभात",
+        "प्रभु",
         "प्रबोध",
         "प्रदीप",
+        "प्रकाश",
+        "प्रमोद",
         "प्रणव",
+        "प्रणय",
+        "प्रसाद",
+        "प्रसन्न",
+        "प्रताप",
         "प्रेम",
+        "पुरुषोत्तम",
+        "रघु",
+        "राहुल",
+        "राज",
+        "राजन",
+        "रजनीकांत",
         "राजीव",
+        "राजेन्द्र",
+        "राजेश",
+        "राजीव",
+        "राकेश",
+        "राम",
+        "रामचन्द्र",
+        "रामकृष्ण",
+        "रञ्जित",
         "रतन",
+        "रत्नम",
+        "रावण",
+        "रवि",
+        "ऋषि",
         "रोहन",
-        "विष्णु",
-        "विक्रम",
-        "विजया",
+        "सचिन",
+        "संदीप",
+        "शनि",
+        "संजय",
+        "संजित",
+        "संजीव",
+        "शंकर",
+        "सरल",
+        "सतीश",
+        "सवितृ",
+        "शेखर",
+        "सेठ",
+        "शनि",
+        "शंकर",
+        "शङ्कर",
+        "शंतनु",
+        "शर्म",
+        "शशि",
+        "शेखर",
+        "शेष",
+        "शिव",
+        "श्रेष्ठ",
+        "श्रीपति",
+        "श्याम",
+        "श्यामल",
+        "सिद्धार्थ",
+        "सिकन्दर",
+        "सोहेल",
+        "सुभाष",
+        "सुदर्शन",
+        "सुधीर",
+        "सुमन",
+        "सुमन्त्र",
+        "सुन्दर",
+        "सुनील",
+        "सुरज",
+        "सुरेन्द्र",
+        "सुरेश",
+        "सूर्य",
+        "सुशील",
+        "स्वपन",
+        "स्वप्निल",
+        "स्वर्ण",
+        "उत्तम",
+        "वसन्त",
+        "वासिष्ठ",
+        "भरत",
         "विजय",
+        "विजया",
+        "विक्रम",
+        "विमल",
+        "विनय",
+        "विपिन",
+        "विपुल",
+        "विशाल",
+        "विष्णु",
         "विवेक",
         "यश",
+    )
+
+    # http://www.20000-names.com/female_hindi_names.htm
+    first_names_female = (
+        "आभा",
         "अभिलाषा",
         "अदिती",
         "ऐश्वर्या",
+        "आकाङ्क्षा",
+        "अमला",
         "अमिता",
+        "अमृता",
+        "आनन्दा",
+        "अनिला",
+        "अणिमा",
         "अंकिता",
+        "अनुष्का",
+        "अनुजा",
+        "अर्चना",
+        "अरुंधती",
         "आशा",
         "अवनी",
+        "अवन्ती",
+        "बल",
         "भरत",
+        "चण्डा",
+        "चन्दना",
+        "चन्द्रकान्ता",
         "चेतना",
+        "दमयंती",
+        "दर्शना",
+        "दीपाली",
+        "दीप्ति",
+        "देवी",
+        "दीपाली",
+        "दीप्ति",
         "दिव्या",
+        "दुर्गा",
         "एषा",
+        "गौहर",
+        "गौरी",
+        "गीता",
+        "गोपीनाथ",
+        "गुलज़ार",
+        "इला",
+        "इन्दिरा",
+        "इन्द्रजित",
         "इन्दु",
+        "ज़स्विन्देर्",
         "जया",
         "जयन्ती",
         "ज्योत्सना",
+        "ज्योत्स्ना",
+        "कैलाश",
+        "कला",
+        "काली",
+        "कल्पना",
+        "कमला",
+        "कान्ता",
         "कान्ती",
+        "करिश्मा",
+        "काशी",
+        "कौशल्या",
+        "िकशोरी",
+        "क्षितिज",
         "कुमारी",
+        "कुंती",
+        "लक्ष्मी",
         "लता",
+        "लावण्या",
+        "लक्ष्मी",
+        "लीला",
+        "लीलावती",
+        "लीला",
         "लीला",
+        "लीलावती",
+        "लीना",
+        "माधवी",
+        "मधु",
+        "मधुर",
+        "माला",
         "मालती",
+        "मनीषा",
+        "मञ्जु",
+        "मञ्जुला",
+        "मञ्जूषा",
+        "माया",
+        "मीरा",
+        "मोहना",
         "मोहिनी",
+        "मुक्ता",
+        "नेहा",
+        "निखिला",
         "निशा",
+        "नित्य",
+        "पद्म",
+        "पद्मावती",
+        "पद्मिनी",
+        "पार्वती",
+        "परवीन",
+        "पूर्णिमा",
+        "प्रतिभा",
+        "प्रतिमा",
+        "प्रेमा",
+        "प्रिया",
         "पूर्णिमा",
         "पुष्पा",
         "रचना",
+        "राधा",
         "रजनी",
+        "राज्य",
+        "रानी",
         "रश्मी",
+        "रति",
+        "रत्न",
+        "रेशमी",
+        "रीतिका",
         "रिया",
+        "रोहना",
+        "रुक्मिणी",
+        "रुपिन्द्र",
+        "संजना",
         "सरला",
         "सरस्वती",
+        "सारिका",
+        "सती",
         "सावित्री",
+        "सीमा",
+        "सीता",
         "शक्ति",
+        "शकुन्तला",
         "शान्ता",
+        "शान्ती",
         "शर्मिला",
+        "शशी",
+        "शीला",
+        "शिवाली",
+        "शोभा",
         "श्यामा",
+        "श्यामला",
+        "सीमा",
+        "सीता",
+        "सितारा",
+        "सोनल",
+        "श्री",
+        "सुदर्शना",
         "सुलभा",
+        "सुमना",
+        "सुमती",
+        "सुनीता",
+        "सुनीती",
+        "सुशीला",
+        "स्वर्ण",
+        "तारा",
         "तृष्णा",
+        "उमा",
+        "उषा",
+        "वसन्ता",
         "विद्या",
-        "अली",
-        "हासन",
-        "हुसैन",
-        "ज़ाकिर",
-        "रिज़वान",
-        "फ़रहान",
-        "ज़ोया",
+        "विजया",
+        "विमला",
     )
 
+    first_names = first_names_male + first_names_female
+
+    # https://blogs.transparent.com/hindi/common-surnames-in-india/
     last_names = (
-        "पाटिल",
+        # Common Surnames in North India (Delhi, Haryana, Punjab,etc)
         "शर्मा",
-        "आचार्य",
-        "अग्रवाल",
+        "भट",
+        "वर्मा",
+        "कुमार",
+        "गुप्ता",
+        "मल्होत्रा",
+        "भटनागर",
+        "सक्सेना",
+        "कपूर",
         "सिंह",
-        "अहलुवालिया",
+        "महरा",
+        "चोपरा",
+        "सरीन",
+        "मालिक",
+        "सैनी",
+        "जैन",
+        "कौल",
+        "खत्री",
+        "गोयल",
+        "तिवारी",
+        "भरद्वाज",
+        "चोपरा",
+        "प्रसाद",
+        "आचार्य",
+        "अगरवाल",
+        "अहलूवालिया",
+        "टंडन",
         "आहूजा",
-        "पुष्कर",
-        "शिरोळे",
-        "गायकवाड",
-        "गावित",
-        "शिरोळे",
-        "बापट",
-        "अरोड़ा",
-        "बाबू",
-        "बादामी",
-        "जमानत",
-        "बजाज",
-        "बक्षी",
-        "बालकृष्णन",
-        "बालासुब्रमणियम",
-        "बसु",
-        "भंडारी",
-        "चौधरी",
-        "चौहान",
-        "छाबरा",
-        "दादा",
-        "डानी",
-        "डार",
-        "दारा",
-        "दत्ता",
-        "दवे",
-        "दयाल",
-        "धालीवाल",
-        "दीक्षित",
-        "दोषी",
-        "दुआ",
-        "दूबे",
-        "ढींगरा",
-        "वाल",
-        "साया",
-        "बना",
-        "ड़ाल",
-        "गर्ग",
-        "गणेश",
-        "गांगुली",
-        "गुप्ता",
-        "हेगडे",
-        "जोशी",
-        "काले",
-        "कृष्णा",
-        "कृष्णमूर्ति",
-        "कृष्णन",
-        "कुलकर्णी",
-        "कुमार",
-        "कुण्डा",
-        "नाम",
-        "रामलला",
-        "लता",
-        "लोदी",
-        "लोकनाट्यों",
-        "विकावि",
-        "लाल",
-        "लाला",
-        "वफादार",
-        "लूथरा",
-        "मदन",
-        "मगर",
-        "भारत",
-        "महावीर",
-        "महादेव",
-        "महाजन",
-        "महाराज",
+        "अरोरा",
+        # Common Surnames in East India: (Bengal, Orrisa, etc.)
+        "चटर्जी",
+        "चतुर्वेदी",
+        "सेन",
+        "बोस",
+        "सेनगुप्ता",
+        "दास",
+        "दासगुप्ता",
+        "मुख़र्जी",
+        "दुत्ता",
+        "बनर्जी",
+        "चक्रवर्ती",
+        "भट्टाचार्य",
+        "घोष",
+        "मित्रा",
+        "गुहा",
+        "सरकार",
+        "साहा",
+        "रॉय",
+        "चोधरी",
+        "रॉय चौधरी",
         "मजूमदार",
-        "मल्लिक",
-        "सेनाधीश",
-        "माने",
-        "मंगल",
-        "मंगत",
-        "रामशर्मा",
-        "मणि",
-        "मान",
-        "श्रीविमल",
-        "कुमार",
         "मंडल",
-        "अली",
-        "हासन",
-        "हुसैन",
+        "मैती",
+        "कलिता",
+        "हजारिका",
+        "नाथ",
+        "बुरुाह",
+        "थापा",
+        "गुरुंग",
+        "राय",
+        "प्रधान",
+        "तमांग",
+        "छेत्री",
+        # Common Surnames in South India (Karnataka, Tamil Nadu, Kerala, etc.)
+        "नायर",
+        "मेनन",
+        "पिल्लई",
+        "वेंकटएसन",
+        "बलासुब्रमानियम",
+        "राव",
+        "जयरामन",
+        "सुब्रमण्यम",
+        "रंगन",
+        "रंगराजन",
+        "नारायण",
+        "रेड्डी",
+        # Common Surnames in Central India (Bihar/ Uttar Pradesh, Madhya Pradesh, etc)
+        "सिंह",
+        "द्विवेदी",
+        "मिश्रा",
+        "त्रिवेदी",
+        "झा",
+        "शुक्ला",
+        "यादव",
+        "सिन्हा",
+        "पाण्डेय",
+        "झादव",
+        "जेटली",
+        "चौहान",
+        "जोशी",
+        "मिस्त्री",
         "खान",
-        "अब्बासी",
-        "नूरानी",
+        "श्रीवास्तव",
+        # Common Surnames in West India (Maharashtra, Gujarat, Goa etc)
+        "शाह",
+        "देशपांडे",
+        "गावडे",
+        "कदम",
+        "ताम्बे",
+        "मेहता",
+        "पटेल",
+        "पाटिल",
+        "पवार",
+        "चवन",
+        "डी’सोउज़ा",
+        "लोबो",
+        "रोद्रिगुएस",
+        "डी’कोस्टा",
     )
+
+    prefixes_male = ("श्री", "श्रीमान")
+
+    prefixes_female = ("श्री", "श्रीमती")
+
+    prefixes = (
+        "माननीय",
+        "आदरसूचक",
+        "सम्मानसूचक",
+        "संमानित",
+        "आदरवाचक",
+        "सम्मानात्मक",
+    )
+
+    suffixes = ("जी",)
diff --git a/faker/providers/person/uz_UZ/__init__.py b/faker/providers/person/uz_UZ/__init__.py
new file mode 100644
index 00000000..e23a2074
--- /dev/null
+++ b/faker/providers/person/uz_UZ/__init__.py
@@ -0,0 +1,433 @@
+from .. import Provider as PersonProvider
+
+
+class Provider(PersonProvider):
+    # Source: https://ismlar.com/top100
+
+    formats_female = (
+        "{{first_name_female}} {{last_name_female}}",
+        "{{last_name_female}} {{first_name_female}}",
+    )
+
+    formats_male = (
+        "{{first_name_male}} {{last_name_male}}",
+        "{{last_name_male}} {{first_name_male}}",
+    )
+
+    formats = formats_male + formats_female
+
+    first_names_female = (
+        "Sa’diya",
+        "Sumayya",
+        "Safiya",
+        "Yasmina",
+        "Hadicha",
+        "Samiya",
+        "Maryam",
+        "Asma",
+        "Mursalina",
+        "Mubina",
+        "Rayyona",
+        "Safina",
+        "Madina",
+        "Oysha",
+        "Yasina",
+        "Aylin",
+        "Musfira",
+        "Sabina",
+        "Muslima",
+        "Osiyo",
+        "Soliha",
+        "Imona",
+        "Farzona",
+        "Humayra",
+        "Samira",
+        "Maftuna",
+        "Ifora",
+        "Farangiz",
+        "Sakina",
+        "Robiya",
+        "Elif",
+        "Bibisora",
+        "Omina",
+        "Asmira",
+        "Marjona",
+        "Sabrina",
+        "Zahro",
+        "Malak",
+        "Sevinch",
+        "Afruza",
+        "Sadia",
+        "Jasmina",
+        "Mushtariy",
+        "Nuriya",
+        "Muzayyana",
+        "Anisa",
+        "Fotima",
+        "Diyora",
+        "Ruhshona",
+        "Mehrimoh",
+        "Shahina",
+        "Muxlisa",
+        "Shukrona",
+        "Milana",
+        "Dilnur",
+        "Iymona",
+        "Mohinur",
+        "Sarvinoz",
+        "Shahnoza",
+        "Alzina",
+        "Munisa",
+        "Charos",
+        "Aliya",
+        "Odina",
+        "Durdona",
+        "Malika",
+        "E’zoza",
+        "Rayhona",
+        "Roziya",
+        "Samina",
+        "Feruza",
+        "Asila",
+        "Fariza",
+        "Muzdalifa",
+        "Hadija",
+        "Mohlaroyim",
+        "Laylo",
+        "Rumaysa",
+        "Kumush",
+        "Nilufar",
+        "Saida",
+        "Bonu",
+        "Zarina",
+        "Aziza",
+        "Ansora",
+        "Muizza",
+        "Dilnoz",
+        "Amira",
+        "Dildora",
+        "Ruqiya",
+        "Dunyo",
+        "Zinnura",
+        "Nozima",
+        "Zaynab",
+        "Muhsina",
+        "Habiba",
+        "Sevara",
+        "Amina",
+        "Zakiyaxon",
+        "Mumtoz"
+    )
+
+    first_names_male = (
+        "Zubayr",
+        "Mustafo",
+        "Muhammad",
+        "Umar",
+        "Ali",
+        "Imron",
+        "Muhammadyusuf",
+        "Ayub",
+        "Abubakr",
+        "Muhammadali",
+        "Muhammadamin",
+        "Usmon",
+        "Ibrohim",
+        "Bilol",
+        "Zayd",
+        "Muhammadyasin",
+        "Yasin",
+        "Aziz",
+        "Samir",
+        "Firdavs",
+        "Abdulloh",
+        "Behruz",
+        "Shohrux",
+        "Amir",
+        "Yahyo",
+        "Asad",
+        "Kamron",
+        "Mironshoh",
+        "Islom",
+        "Halid",
+        "Habib",
+        "Jamshid",
+        "Shahzoda",
+        "Akbar",
+        "Abduaziz",
+        "Sardor",
+        "Javohir",
+        "Abdurahmon",
+        "Ja’far",
+        "Muhammadziyo",
+        "Muhammadumar",
+        "Muhammadayub",
+        "Akobir",
+        "Jahongir",
+        "Yusuf",
+        "Diyor",
+        "Salohiddin",
+        "Farhod",
+        "Humoyun",
+        "Bobur",
+        "Abror",
+        "Samandar",
+        "Asilbek",
+        "Sarvar",
+        "Muhammadrizo",
+        "Shohjahon",
+        "Ahmad",
+        "Yunus",
+        "Sanjar",
+        "Doniyor",
+        "Daler",
+        "Shahzod",
+        "Said",
+        "Muhammadsafo",
+        "Ismoil",
+        "Nurmuhammad",
+        "Muhammadamir",
+        "Otabek",
+        "Ulug‘bek",
+        "Miron",
+        "Xolid",
+        "Dovud",
+        "Damir",
+        "Abbos",
+        "Gabriel",
+        "Zakariyo",
+        "Abdulhamid",
+        "Jalol",
+        "Mahmud",
+        "Shahriyor",
+        "Saddam",
+        "Fuzayl",
+        "Akmal",
+        "Alinur",
+        "Hasan",
+        "Murod",
+        "Isfandiyor",
+        "Miran",
+        "Temir",
+        "Muhammadaziz",
+        "Abdumalik",
+        "Muhammadsodiq",
+        "Muslim",
+        "Abduboriy",
+        "Laziz",
+        "Fariz",
+        "Jasur",
+        "Muhammadsolih",
+        "Mahdi",
+        "Anvar"
+    )
+
+    first_names = first_names_male + first_names_female
+
+    last_names_female = (
+        "Sadiyeva",
+        "Sumayyeva",
+        "Safiyeva",
+        "Yasminova",
+        "Hadichayeva",
+        "Samiyeva",
+        "Maryamova",
+        "Asmanova",
+        "Mursalinaeva",
+        "Mubinova",
+        "Rayyonova",
+        "Safinayeva",
+        "Madinaeva",
+        "Oyshayeva",
+        "Yasinaeva",
+        "Aylinova",
+        "Musfirayeva",
+        "Sabinova",
+        "Muslimaeva",
+        "Osiyeva",
+        "Solihayeva",
+        "Imonova",
+        "Farzonova",
+        "Humayrova",
+        "Samirova",
+        "Maftunova",
+        "Iforayeva",
+        "Farangizova",
+        "Sakinayeva",
+        "Robiyayeva",
+        "Elifova",
+        "Bibisorayeva",
+        "Ominova",
+        "Asmiraeva",
+        "Marjonova",
+        "Sabrinova",
+        "Zahroyeva",
+        "Malakova",
+        "Sevinchova",
+        "Afruzova",
+        "Sadiyeva",
+        "Jasminova",
+        "Mushtariyeva",
+        "Nuriyeva",
+        "Muzayyanova",
+        "Anisayeva",
+        "Fotimayeva",
+        "Diyorayeva",
+        "Ruhshonova",
+        "Mehrimohova",
+        "Shahinova",
+        "Muxlisayeva",
+        "Shukronova",
+        "Milanova",
+        "Dilnurova",
+        "Iymonova",
+        "Mohinurova",
+        "Sarvinozova",
+        "Shahnozova",
+        "Alzinova",
+        "Munisayeva",
+        "Charosova",
+        "Aliyeva",
+        "Odinaeva",
+        "Durdonova",
+        "Malikova",
+        "E’zozova",
+        "Rayhonova",
+        "Roziyayeva",
+        "Saminova",
+        "Feruzova",
+        "Asilayeva",
+        "Farizayeva",
+        "Muzdalifayeva",
+        "Hadijayeva",
+        "Mohlaroyimova",
+        "Laylova",
+        "Rumaysayeva",
+        "Kumushova",
+        "Nilufarova",
+        "Saidova",
+        "Bonueva",
+        "Zarinova",
+        "Azizova",
+        "Ansorova",
+        "Muizzova",
+        "Dilnozova",
+        "Amirayeva",
+        "Dildorova",
+        "Ruqiyayeva",
+        "Dunyoeva",
+        "Zinnurova",
+        "Nozimova",
+        "Zaynabova",
+        "Muhsinova",
+        "Habibova",
+        "Sevarova",
+        "Aminova",
+        "Zakiyaxonova",
+        "Mumtozova"
+    )
+
+    last_names_male = (
+        "Zubayrov",
+        "Mustafayev",
+        "Muhammadov",
+        "Umarov",
+        "Aliyev",
+        "Imronov",
+        "Muhammadyusupov",
+        "Ayubov",
+        "Abubakrov",
+        "Muhammadaliyev",
+        "Muhammadaminov",
+        "Usmonov",
+        "Ibrohimov",
+        "Bilolov",
+        "Zayidov",
+        "Muhammadyasinov",
+        "Yasinov",
+        "Azizov",
+        "Samirov",
+        "Firdavsev",
+        "Abdullohov",
+        "Behruzov",
+        "Shohruxov",
+        "Amirov",
+        "Yahyoev",
+        "Asadov",
+        "Kamronov",
+        "Mironshohov",
+        "Islomov",
+        "Halidov",
+        "Habibov",
+        "Jamshidov",
+        "Shahzodov",
+        "Akbarov",
+        "Abduazizov",
+        "Sardorov",
+        "Javohirov",
+        "Abdurahmonov",
+        "Ja’farov",
+        "Muhammadziyoev",
+        "Muhammadumarov",
+        "Muhammadayubov",
+        "Akobirov",
+        "Jahongirov",
+        "Yusupov",
+        "Diyorov",
+        "Salohiddinov",
+        "Farhodov",
+        "Humoyunov",
+        "Boburov",
+        "Abrorov",
+        "Samandarov",
+        "Asilbekov",
+        "Sarvarov",
+        "Muhammadrizoyev",
+        "Shohjahonov",
+        "Ahmadov",
+        "Yunusov",
+        "Sanjarov",
+        "Doniyorov",
+        "Dalerov",
+        "Shahzodov",
+        "Saidov",
+        "Muhammadsafoev",
+        "Ismoilov",
+        "Nurmuhammadov",
+        "Muhammadamirov",
+        "Otabekov",
+        "Ulug‘bekov",
+        "Mironov",
+        "Xolidov",
+        "Dovudov",
+        "Damirov",
+        "Abbosov",
+        "Gabriyelov",
+        "Zakariyoev",
+        "Abdulhamidov",
+        "Jalolov",
+        "Mahmudov",
+        "Shahriyorov",
+        "Saddamov",
+        "Fuzaylov",
+        "Akmalov",
+        "Alinurov",
+        "Hasanov",
+        "Murodov",
+        "Isfandiyorov",
+        "Miranov",
+        "Temirov",
+        "Muhammadazizov",
+        "Abdumalikov",
+        "Muhammadsodiqov",
+        "Muslimov",
+        "Abduboriyov",
+        "Lazizov",
+        "Farizov",
+        "Mehrojov",
+        "Muhammadsolihov",
+        "Mahdiev",
+        "Anvarov"
+    )
+
+    last_names = last_names_female + last_names_male
diff --git a/faker/providers/phone_number/ka_GE/__init__.py b/faker/providers/phone_number/ka_GE/__init__.py
new file mode 100644
index 00000000..74e5bfc2
--- /dev/null
+++ b/faker/providers/phone_number/ka_GE/__init__.py
@@ -0,0 +1,16 @@
+from .. import Provider as PhoneNumberProvider
+
+
+class Provider(PhoneNumberProvider):
+    # Sourse: https://en.wikipedia.org/wiki/Telephone_numbers_in_Georgia_(country)
+    formats = (
+        "+995 ### ### ###",
+        "+995 (###) ### ###",
+        "+995#########",
+        "0 ### ### ###",
+        "+995 32 ### ## ##",
+        "+995 34# ### ###",
+        "+995 (34#) ### ###",
+        "0 32 ### ## ##",
+        "0 34# ### ###",
+    )
diff --git a/faker/providers/phone_number/uk_UA/__init__.py b/faker/providers/phone_number/uk_UA/__init__.py
index c3b57762..1e48bb35 100644
--- a/faker/providers/phone_number/uk_UA/__init__.py
+++ b/faker/providers/phone_number/uk_UA/__init__.py
@@ -56,7 +56,6 @@ class Provider(PhoneNumberProvider):
         "+38071",
         "+38072",
         "+38073",
-        "+3800",
         "+38090",
         "+38091",
         "+38092",
diff --git a/faker/providers/phone_number/uz_UZ/__init__.py b/faker/providers/phone_number/uz_UZ/__init__.py
new file mode 100644
index 00000000..eb6dc41c
--- /dev/null
+++ b/faker/providers/phone_number/uz_UZ/__init__.py
@@ -0,0 +1,15 @@
+from .. import Provider as PhoneNumberProvider
+
+
+class Provider(PhoneNumberProvider):
+    formats = (
+        "+998 (##) ###-##-##",
+        "+998 (##) ### ## ##",
+        "+998 (##) ### ####",
+        "+998 (##) ###-####",
+        "+998 ## ###-##-##",
+        "+998 ## ### ## ##",
+        "+998 ## ### ####",
+        "+998 ## ###-####",
+        "+998#########",
+    )
diff --git a/faker/proxy.pyi b/faker/proxy.pyi
index 56782d25..1f3484fd 100644
--- a/faker/proxy.pyi
+++ b/faker/proxy.pyi
@@ -970,17 +970,15 @@ class Faker:
         self,
         start_date: Union[datetime.date, datetime.datetime, datetime.timedelta, str, int] = ...,
         end_date: Union[datetime.date, datetime.datetime, datetime.timedelta, str, int] = ...,
-        pattern: Optional[str] = ...,
-    ) -> Union[datetime.date, str]:
+    ) -> datetime.date:
         """
         Get a Date object based on a random date between two given dates.
         Accepts date strings that can be recognized by strtotime().
 
         :param start_date: Defaults to 30 years ago
         :param end_date: Defaults to "today"
-        :param pattern: optional pattern to format the date as string
-        :example: Date('1999-02-02') or '1999-02-02'
-        :return: Date or string
+        :example: Date('1999-02-02')
+        :return: Date
         """
         ...
 
@@ -988,16 +986,14 @@ class Faker:
         self,
         date_start: Union[datetime.date, datetime.datetime, datetime.timedelta, str, int, None] = ...,
         date_end: Union[datetime.date, datetime.datetime, datetime.timedelta, str, int, None] = ...,
-        pattern: Optional[str] = ...,
-    ) -> Union[datetime.date, str]:
+    ) -> datetime.date:
         """
         Takes two Date objects and returns a random date between the two given dates.
         Accepts Date or datetime objects
 
         :param date_start: Date
         :param date_end: Date
-        :param pattern: optional pattern to format the date as string
-        :return: Date or string
+        :return: Date
         """
         ...
 
@@ -1010,12 +1006,8 @@ class Faker:
         ...
 
     def date_of_birth(
-        self,
-        tzinfo: Optional[datetime.tzinfo] = ...,
-        minimum_age: int = ...,
-        maximum_age: int = ...,
-        pattern: Optional[str] = ...,
-    ) -> Union[datetime.date, str]:
+        self, tzinfo: Optional[datetime.tzinfo] = ..., minimum_age: int = ..., maximum_age: int = ...
+    ) -> datetime.date:
         """
         Generate a random date of birth represented as a Date object,
         constrained by optional miminimum_age and maximum_age
@@ -1024,64 +1016,51 @@ class Faker:
         :param tzinfo: Defaults to None.
         :param minimum_age: Defaults to 0.
         :param maximum_age: Defaults to 115.
-        :param pattern: optional pattern to format the date as string
 
         :example: Date('1979-02-02')
         :return: Date
         """
         ...
 
-    def date_this_century(
-        self, before_today: bool = ..., after_today: bool = ..., pattern: Optional[str] = ...
-    ) -> Union[datetime.date, str]:
+    def date_this_century(self, before_today: bool = ..., after_today: bool = ...) -> datetime.date:
         """
         Gets a Date object for the current century.
 
         :param before_today: include days in current century before today
         :param after_today: include days in current century after today
-        :param pattern: optional pattern to format the date as string
         :example: Date('2012-04-04')
-        :return: Date or string
+        :return: Date
         """
         ...
 
-    def date_this_decade(
-        self, before_today: bool = ..., after_today: bool = ..., pattern: Optional[str] = ...
-    ) -> Union[datetime.date, str]:
+    def date_this_decade(self, before_today: bool = ..., after_today: bool = ...) -> datetime.date:
         """
         Gets a Date object for the decade year.
 
         :param before_today: include days in current decade before today
         :param after_today: include days in current decade after today
-        :param pattern: optional pattern to format the date as string
         :example: Date('2012-04-04')
-        :return: Date or string
+        :return: Date
         """
         ...
 
-    def date_this_month(
-        self, before_today: bool = ..., after_today: bool = ..., pattern: Optional[str] = ...
-    ) -> Union[datetime.date, str]:
+    def date_this_month(self, before_today: bool = ..., after_today: bool = ...) -> datetime.date:
         """
         Gets a Date object for the current month.
 
         :param before_today: include days in current month before today
         :param after_today: include days in current month after today
-        :param pattern: optional pattern to format the date as string
         :example: dtdate('2012-04-04')
-        :return: dtdate or string
+        :return: dtdate
         """
         ...
 
-    def date_this_year(
-        self, before_today: bool = ..., after_today: bool = ..., pattern: Optional[str] = ...
-    ) -> Union[datetime.date, str]:
+    def date_this_year(self, before_today: bool = ..., after_today: bool = ...) -> datetime.date:
         """
         Gets a Date object for the current year.
 
         :param before_today: include days in current year before today
         :param after_today: include days in current year after today
-        :param pattern: optional pattern to format the date as string
         :example: Date('2012-04-04')
         :return: Date
         """
@@ -1215,8 +1194,7 @@ class Faker:
         self,
         end_date: Union[datetime.date, datetime.datetime, datetime.timedelta, str, int] = ...,
         tzinfo: Optional[datetime.tzinfo] = ...,
-        pattern: Optional[str] = ...,
-    ) -> Union[datetime.date, str]:
+    ) -> datetime.date:
         """
         Get a Date object based on a random date between 1 day from now and a
         given date.
@@ -1224,7 +1202,6 @@ class Faker:
 
         :param end_date: Defaults to "+30d"
         :param tzinfo: timezone, instance of datetime.tzinfo subclass
-        :param pattern: optional pattern to format the date as string
         :example: dtdate('2030-01-01')
         :return: dtdate
         """
@@ -1270,8 +1247,7 @@ class Faker:
         self,
         start_date: Union[datetime.date, datetime.datetime, datetime.timedelta, str, int] = ...,
         tzinfo: Optional[datetime.tzinfo] = ...,
-        pattern: Optional[str] = ...,
-    ) -> Union[datetime.date, str]:
+    ) -> datetime.date:
         """
         Get a Date object based on a random date between a given date and 1 day
         ago.
@@ -1279,9 +1255,8 @@ class Faker:
 
         :param start_date: Defaults to "-30d"
         :param tzinfo: timezone, instance of datetime.tzinfo subclass
-        :param pattern: optional pattern to format the date as string
         :example: dtdate('1999-02-02')
-        :return: dtdate or string
+        :return: dtdate
         """
         ...
 
@@ -2008,7 +1983,12 @@ class Faker:
         """
         ...
 
-    def fixed_width(self, data_columns: Optional[list] = ..., num_rows: int = ..., align: str = ...) -> str:
+    def fixed_width(
+        self,
+        data_columns: Optional[List[Union[Tuple[int, str], Tuple[int, str, Dict[str, Any]]]]] = ...,
+        num_rows: int = ...,
+        align: str = ...,
+    ) -> str:
         """
         Generate random fixed width values.
 
@@ -2363,7 +2343,7 @@ class Faker:
         """
         ...
 
-    def passport_gender(self, seed: int = ...) -> str:
+    def passport_gender(self, seed: int = ...) -> Literal["M", "F", "X"]:
         """
         Generates a string representing the gender displayed on a passport
 
@@ -2379,7 +2359,7 @@ class Faker:
         """
         ...
 
-    def passport_owner(self, gender: str = ...) -> Tuple[str, str]:
+    def passport_owner(self, gender: Literal["M", "F", "X"] = ...) -> Tuple[str, str]:
         """
         Generate a given_name and surname for a passport owner
         The ``gender`` argument is the gender marker of a passport owner, which is a one character string
@@ -2428,7 +2408,7 @@ class Faker:
 
     def phone_number(self) -> str: ...
     def profile(
-        self, fields: Optional[List[str]] = ..., sex: Optional[Literal["M", "F"]] = ...
+        self, fields: Optional[List[str]] = ..., sex: Optional[Literal["M", "F", "X"]] = ...
     ) -> Dict[str, Union[str, Tuple[Decimal, Decimal], List[str], datetime.date]]:
         """
         Generates a complete profile.
@@ -2437,8 +2417,8 @@ class Faker:
         ...
 
     def simple_profile(
-        self, sex: Optional[Literal["M", "F"]] = ...
-    ) -> Dict[str, Union[str, datetime.date, Literal["M", "F"]]]:
+        self, sex: Optional[Literal["M", "F", "X"]] = ...
+    ) -> Dict[str, Union[str, datetime.date, Literal["M", "F", "X"]]]:
         """
         Generates a basic profile with personal informations
         """
@@ -3550,6 +3530,24 @@ class Faker:
 
     def area_code_with_separator(self) -> str: ...
     def area_code_without_separator(self) -> str: ...
+    def day_of_week_in_guj(self) -> str:
+        """
+        Returns day of the week in `Gujarati`
+        """
+        ...
+
+    def month_in_guj(self) -> str:
+        """
+        Returns month name in `Gujarati`
+        """
+        ...
+
+    def month_name_in_guj(self) -> str:
+        """
+        Returns month name in `Gujarati`
+        """
+        ...
+
     def street_title(self) -> str: ...
     def city_part(self) -> str: ...
     def frequent_street_name(self) -> str: ...
@@ -4177,7 +4175,7 @@ class Faker:
         """
         ...
 
-    def full_name(self, gender: Optional[Literal["M", "F"]] = ..., short: Optional[bool] = ...) -> str:
+    def full_name(self, gender: Optional[Literal["M", "F", "X"]] = ..., short: Optional[bool] = ...) -> str:
         """
         Generate Full Name
             - gender = 'M' or 'F' optional params
diff --git a/faker/typing.py b/faker/typing.py
index 7f5c2eeb..7d020943 100644
--- a/faker/typing.py
+++ b/faker/typing.py
@@ -37,7 +37,7 @@ BasicNumber = Union[float, int]
 CardType = TypeVar("CardType", "CreditCard", str)
 DateParseType = Union[date, datetime, timedelta, str, int]
 HueType = Union[str, float, int, Sequence[int]]
-SexLiteral = Literal["M", "F"]
+SexLiteral = Literal["M", "F", "X"]
 SeedType = Union[int, float, str, bytes, bytearray, None]
 
 


Test patch:
diff --git a/tests/providers/test_color.py b/tests/providers/test_color.py
index 609c4cf7..58c4f3a6 100644
--- a/tests/providers/test_color.py
+++ b/tests/providers/test_color.py
@@ -16,7 +16,9 @@ from faker.providers.color.fa_IR import Provider as FaIrColorProvider
 from faker.providers.color.he_IL import Provider as HeILColorProvider
 from faker.providers.color.hy_AM import Provider as HyAmColorProvider
 from faker.providers.color.id_ID import Provider as IdIdColorProvider
+from faker.providers.color.ka_GE import Provider as KaGEColorProvider
 from faker.providers.color.sk_SK import Provider as SkSkColorProvider
+from faker.providers.color.uz_UZ import Provider as UzUzColorProvider
 from faker.providers.color.vi_VN import Provider as ViVNColorProvider
 
 
@@ -446,6 +448,22 @@ class TestIdId:
             assert safe_color_name in IdIdColorProvider.safe_colors
 
 
+class TestKaGe:
+    """Test Ka_GE color provider methods"""
+
+    def test_color_name(self, faker, num_samples):
+        for _ in range(num_samples):
+            color_name = faker.color_name()
+            assert isinstance(color_name, str)
+            assert color_name in KaGEColorProvider.all_colors.keys()
+
+    def test_safe_color_name(self, faker, num_samples):
+        for _ in range(num_samples):
+            safe_color_name = faker.safe_color_name()
+            assert isinstance(safe_color_name, str)
+            assert safe_color_name in KaGEColorProvider.safe_colors
+
+
 class TestViVn:
     """Test vi_VN color provider methods"""
 
@@ -460,3 +478,19 @@ class TestViVn:
             safe_color_name = faker.safe_color_name()
             assert isinstance(safe_color_name, str)
             assert safe_color_name in ViVNColorProvider.safe_colors
+
+
+class TestUzUz:
+    """Test uz_UZ color provider methods"""
+
+    def test_color_name(self, faker, num_samples):
+        for _ in range(num_samples):
+            color_name = faker.color_name()
+            assert isinstance(color_name, str)
+            assert color_name in UzUzColorProvider.all_colors.keys()
+
+    def test_safe_color_name(self, faker, num_samples):
+        for _ in range(num_samples):
+            safe_color_name = faker.safe_color_name()
+            assert isinstance(safe_color_name, str)
+            assert safe_color_name in UzUzColorProvider.safe_colors
diff --git a/tests/providers/test_currency.py b/tests/providers/test_currency.py
index 30699c1f..c8644711 100644
--- a/tests/providers/test_currency.py
+++ b/tests/providers/test_currency.py
@@ -508,3 +508,26 @@ class TestViVn:
         for _ in range(num_samples):
             pricetag = faker.pricetag()
             assert isinstance(pricetag, str)
+
+
+class TestUzUz:
+    """Test uz_UZ currency provider"""
+
+    num_samples = 100
+
+    @classmethod
+    def setup_class(cls):
+        from faker.providers.currency.uz_UZ import Provider as UzUzCurrencyProvider
+
+        cls.provider = UzUzCurrencyProvider
+        cls.currencies = cls.provider.currencies
+
+    def test_currency(self, faker, num_samples):
+        for _ in range(num_samples):
+            cur = faker.currency()
+            assert isinstance(cur, tuple) and cur in self.currencies
+
+    def test_pricetag(self, faker, num_samples):
+        for _ in range(num_samples):
+            pricetag = faker.pricetag()
+            assert isinstance(pricetag, str)
diff --git a/tests/providers/test_date_time.py b/tests/providers/test_date_time.py
index 9d221c6c..a03546a8 100644
--- a/tests/providers/test_date_time.py
+++ b/tests/providers/test_date_time.py
@@ -26,9 +26,11 @@ from faker.providers.date_time.de_DE import Provider as DeDeProvider
 from faker.providers.date_time.el_GR import Provider as ElGrProvider
 from faker.providers.date_time.es_ES import Provider as EsEsProvider
 from faker.providers.date_time.fr_FR import Provider as FrFrProvider
+from faker.providers.date_time.gu_IN import Provider as GuINProvider
 from faker.providers.date_time.hy_AM import Provider as HyAmProvider
 from faker.providers.date_time.it_IT import Provider as ItItProvider
 from faker.providers.date_time.ja_JP import Provider as JaJpProvider
+from faker.providers.date_time.ka_GE import Provider as KaGeProvider
 from faker.providers.date_time.nl_NL import Provider as NlProvider
 from faker.providers.date_time.no_NO import Provider as NoNoProvider
 from faker.providers.date_time.pl_PL import Provider as PlProvider
@@ -40,6 +42,7 @@ from faker.providers.date_time.sk_SK import Provider as SkSkProvider
 from faker.providers.date_time.sl_SI import Provider as SlSiProvider
 from faker.providers.date_time.ta_IN import Provider as TaInProvider
 from faker.providers.date_time.tr_TR import Provider as TrTrProvider
+from faker.providers.date_time.uz_UZ import Provider as UzUzProvider
 from faker.providers.date_time.vi_VN import Provider as ViVNProvider
 from faker.providers.date_time.zh_CN import Provider as ZhCnProvider
 from faker.providers.date_time.zh_TW import Provider as ZhTwProvider
@@ -115,14 +118,6 @@ class TestDateTime(unittest.TestCase):
         past_date = self.fake.past_date()
         assert past_date < date.today()
 
-    def test_past_date_string(self):
-        date_format = "%Y-%m-%d"
-        date_string = self.fake.past_date(pattern=date_format)
-        assert isinstance(date_string, str)
-        past_date = datetime.strptime(date_string, date_format).date()
-        assert isinstance(past_date, date)
-        assert past_date < date.today()
-
     def test_future_datetime(self):
         future_datetime, now = self.fake.future_datetime(), datetime.now()
         assert future_datetime > now
@@ -131,14 +126,6 @@ class TestDateTime(unittest.TestCase):
         future_date = self.fake.future_date()
         assert future_date > date.today()
 
-    def test_future_date_string(self):
-        date_format = "%Y-%m-%d"
-        date_string = self.fake.future_date(pattern=date_format)
-        assert isinstance(date_string, str)
-        future_date = datetime.strptime(date_string, date_format).date()
-        assert isinstance(future_date, date)
-        assert future_date > date.today()
-
     def test_parse_date_time(self):
         timestamp = DatetimeProvider._parse_date_time("+30d")
         now = DatetimeProvider._parse_date_time("now")
@@ -288,15 +275,6 @@ class TestDateTime(unittest.TestCase):
         assert date_start <= random_date
         assert date_end >= random_date
 
-    def test_date_string_between_dates(self):
-        date_end = date.today()
-        date_start = date_end - timedelta(days=10)
-        date_format = "%Y-%m-%d"
-
-        date_string = self.fake.date_between_dates(date_start, date_end, pattern=date_format)
-        assert isinstance(date_string, str)
-        assert isinstance(datetime.strptime(date_string, date_format), datetime)
-
     def test_date_time_between_long_past_dates(self):
         random_date = self.fake.date_between("-100y", "-50y")
         assert random_date
@@ -436,18 +414,6 @@ class TestDateTime(unittest.TestCase):
         assert self.fake.date_this_month(before_today=False, after_today=True) >= date.today()
         assert self.fake.date_this_month(before_today=False, after_today=False) == date.today()
 
-    @unittest.skipUnless(is64bit(), "requires 64bit")
-    def test_date_string_this_period(self):
-        date_format = "%Y-%m-%d"
-        # test century
-        assert isinstance(self.fake.date_this_century(pattern=date_format), str)
-        # test decade
-        assert isinstance(self.fake.date_this_decade(pattern=date_format), str)
-        # test year
-        assert isinstance(self.fake.date_this_year(pattern=date_format), str)
-        # test month
-        assert isinstance(self.fake.date_this_month(pattern=date_format), str)
-
     def test_date_time_between(self):
         now = datetime.now()
         _30_years_ago = change_year(now, -30)
@@ -485,19 +451,6 @@ class TestDateTime(unittest.TestCase):
         assert isinstance(random_date, date)
         self.assertBetween(random_date, _9_months_ago, _2_months_ago)
 
-    def test_date_string_between(self):
-        today = date.today()
-        _30_years_ago = change_year(today, -30)
-        _20_years_ago = change_year(today, -20)
-        date_format = "%Y-%m-%d"
-
-        date_string = self.fake.date_between(start_date="-30y", end_date="-20y", pattern=date_format)
-
-        assert isinstance(date_string, str)
-        date_ = datetime.strptime(date_string, date_format).date()
-        assert isinstance(date_, date)
-        self.assertBetween(date_, _30_years_ago, _20_years_ago)
-
     def test_parse_timedelta(self):
         from faker.providers.date_time import Provider
 
@@ -727,10 +680,6 @@ class DatesOfBirth(unittest.TestCase):
         dob = self.fake.date_of_birth()
         assert isinstance(dob, date)
 
-    def test_date_of_birth_string(self):
-        dob_str = self.fake.date_of_birth(pattern="%Y-%m-%d")
-        assert isinstance(dob_str, str)
-
     @freezegun.freeze_time("2020-02-29")
     def test_date_of_birth_on_leap_day(self):
         """
@@ -1356,6 +1305,35 @@ class TestFrCa(unittest.TestCase):
         assert day in FrFrProvider.MONTH_NAMES.values()
 
 
+class TestGuIN(unittest.TestCase):
+    """Test `gu_IN` (Gujarati) provider for date_time"""
+
+    def setUp(self):
+        self.fake = Faker("gu_IN")
+        Faker.seed(0)
+
+    def test_day(self):
+        day = self.fake.day_of_week()
+        assert day in GuINProvider.DAY_NAMES.values()
+
+    def test_month(self):
+        month = self.fake.month_name()
+        assert month in GuINProvider.MONTH_NAMES.values()
+
+    def test_day_in_guj(self):
+        day = self.fake.day_of_week_in_guj()
+        assert day in GuINProvider.DAY_NAMES_IN_GUJARATI.values()
+
+    def test_month_in_guj(self):
+        """Test `month_in_guj` and `month_names_in_guj` methods"""
+
+        month = self.fake.month_name_in_guj()
+        assert month in GuINProvider.MONTH_NAMES_IN_GUJARATI.values()
+
+        month = self.fake.month_in_guj()
+        assert month in GuINProvider.MONTH_NAMES_IN_GUJARATI.values()
+
+
 class TestJaJp(unittest.TestCase):
     def setUp(self):
         self.fake = Faker("ja_JP")
@@ -1374,6 +1352,24 @@ class TestJaJp(unittest.TestCase):
         assert month in JaJpProvider.TRADITIONAL_MONTH_NAMES.values()
 
 
+class TestKaGe(unittest.TestCase):
+    """Test Ka_GE date_time provider methods"""
+
+    def setUp(self):
+        self.fake = Faker("Ka_GE")
+        Faker.seed(0)
+
+    def test_day(self):
+        day = self.fake.day_of_week()
+        assert isinstance(day, str)
+        assert day in KaGeProvider.DAY_NAMES.values()
+
+    def test_month(self):
+        month = self.fake.month_name()
+        assert isinstance(month, str)
+        assert month in KaGeProvider.MONTH_NAMES.values()
+
+
 class TestViVn(unittest.TestCase):
     """Tests date_time in the vi_VN locale"""
 
@@ -1390,3 +1386,21 @@ class TestViVn(unittest.TestCase):
         month = self.fake.month_name()
         assert isinstance(month, str)
         assert month in ViVNProvider.MONTH_NAMES.values()
+
+
+class TestUzUz(unittest.TestCase):
+    """Tests date_time in the uz_UZ locale"""
+
+    def setUp(self):
+        self.fake = Faker("uz_UZ")
+        Faker.seed(0)
+
+    def test_day(self):
+        day = self.fake.day_of_week()
+        assert isinstance(day, str)
+        assert day in UzUzProvider.DAY_NAMES.values()
+
+    def test_month(self):
+        month = self.fake.month_name()
+        assert isinstance(month, str)
+        assert month in UzUzProvider.MONTH_NAMES.values()
diff --git a/tests/providers/test_job.py b/tests/providers/test_job.py
index 607fbe3c..76d3bffc 100644
--- a/tests/providers/test_job.py
+++ b/tests/providers/test_job.py
@@ -8,6 +8,7 @@ from faker.providers.job.fr_FR import Provider as FrFrJobProvider
 from faker.providers.job.hu_HU import Provider as HuHuJobProvider
 from faker.providers.job.hy_AM import Provider as HyAmJobProvider
 from faker.providers.job.ja_JP import Provider as JaJpJobProvider
+from faker.providers.job.ka_GE import Provider as KaGeJobProvider
 from faker.providers.job.ko_KR import Provider as KoKrJobProvider
 from faker.providers.job.pt_BR import Provider as PtBrJobProvider
 from faker.providers.job.pt_PT import Provider as PtPtJobProvider
@@ -26,6 +27,14 @@ class TestJobProvider:
             assert faker.job() in JobProvider.jobs
 
 
+class TestAzAz:
+    """Test az_AZ job provider"""
+
+    def test_job(self, faker, num_samples):
+        for _ in range(num_samples):
+            assert faker.job() in AzAzJobProvider.jobs
+
+
 class TestCsCz:
     """Test cs_CZ job provider"""
 
@@ -36,28 +45,36 @@ class TestCsCz:
             assert job in CsCzJobProvider.jobs
 
 
-class TestAzAz:
-    """Test az_AZ job provider"""
+class TestDeDe:
+    """Test de_DE job provider"""
 
     def test_job(self, faker, num_samples):
         for _ in range(num_samples):
-            assert faker.job() in AzAzJobProvider.jobs
+            assert faker.job() in DeDeJobProvider.jobs
 
 
-class TestJaJp:
-    """Test ja_JP job provider"""
+class TestElGr:
+    """Test el_GR job provider"""
 
     def test_job(self, faker, num_samples):
         for _ in range(num_samples):
-            assert faker.job() in JaJpJobProvider.jobs
+            assert faker.job() in ElGrJobProvider.jobs
 
 
-class TestKoKr:
-    """Test ko_KR job provider"""
+class TestEsEs:
+    """Test es job provider"""
 
     def test_job(self, faker, num_samples):
         for _ in range(num_samples):
-            assert faker.job() in KoKrJobProvider.jobs
+            assert faker.job() in EsEsJobProvider.jobs
+
+
+class TestFrFr:
+    """Test fr_FR job provider"""
+
+    def test_job(self, faker, num_samples):
+        for _ in range(num_samples):
+            assert faker.job() in FrFrJobProvider.jobs
 
 
 class TestHuHu:
@@ -76,36 +93,38 @@ class TestHyAm:
             assert faker.job() in HyAmJobProvider.jobs
 
 
-class TestDeDe:
-    """Test de_DE job provider"""
+class TestJaJp:
+    """Test ja_JP job provider"""
 
     def test_job(self, faker, num_samples):
         for _ in range(num_samples):
-            assert faker.job() in DeDeJobProvider.jobs
+            assert faker.job() in JaJpJobProvider.jobs
 
 
-class TestFrFr:
-    """Test fr_FR job provider"""
+class TestKaGe:
+    """Test ka_GE job provider"""
 
     def test_job(self, faker, num_samples):
         for _ in range(num_samples):
-            assert faker.job() in FrFrJobProvider.jobs
+            job = faker.job()
+            assert isinstance(job, str)
+            assert job in KaGeJobProvider.jobs
 
 
-class TestElGr:
-    """Test el_GR job provider"""
+class TestKoKr:
+    """Test ko_KR job provider"""
 
     def test_job(self, faker, num_samples):
         for _ in range(num_samples):
-            assert faker.job() in ElGrJobProvider.jobs
+            assert faker.job() in KoKrJobProvider.jobs
 
 
-class TestEsEs:
-    """Test es job provider"""
+class TestPtBr:
+    """Test pt_BR job provider"""
 
     def test_job(self, faker, num_samples):
         for _ in range(num_samples):
-            assert faker.job() in EsEsJobProvider.jobs
+            assert faker.job() in PtBrJobProvider.jobs
 
 
 class TestPtPt:
@@ -116,12 +135,11 @@ class TestPtPt:
             assert faker.job() in PtPtJobProvider.jobs
 
 
-class TestPtBr:
-    """Test pt_BR job provider"""
+class TestRoRo:
+    """Test Ro_RO job provider"""
 
     def test_job(self, faker, num_samples):
-        for _ in range(num_samples):
-            assert faker.job() in PtBrJobProvider.jobs
+        assert faker.job() in RoRoJobProvider.jobs
 
 
 class TestSkSk:
@@ -148,13 +166,6 @@ class TestTrTr:
         assert faker.job() in TrTrJobProvider.jobs
 
 
-class TestRoRo:
-    """Test tr_TR job provider"""
-
-    def test_job(self, faker, num_samples):
-        assert faker.job() in RoRoJobProvider.jobs
-
-
 class TestViVn:
     """Test vi_VN job provider"""
 
diff --git a/tests/providers/test_person.py b/tests/providers/test_person.py
index 9018aff3..d323801c 100644
--- a/tests/providers/test_person.py
+++ b/tests/providers/test_person.py
@@ -20,7 +20,9 @@ from faker.providers.person.et_EE import Provider as EtEEProvider
 from faker.providers.person.fi_FI import Provider as FiProvider
 from faker.providers.person.fr_BE import Provider as FrBEProvider
 from faker.providers.person.ga_IE import Provider as GaIEProvider
+from faker.providers.person.gu_IN import Provider as GuINProvider
 from faker.providers.person.he_IL import Provider as HeILProvider
+from faker.providers.person.hi_IN import Provider as HiINProvider
 from faker.providers.person.hy_AM import Provider as HyAmProvider
 from faker.providers.person.lv_LV import Provider as LvProvider
 from faker.providers.person.ne_NP import Provider as NeProvider
@@ -38,6 +40,7 @@ from faker.providers.person.ta_IN import Provider as TaINProvider
 from faker.providers.person.th_TH import Provider as ThThProvider
 from faker.providers.person.uk_UA import Provider as UkUAProvider
 from faker.providers.person.uk_UA import translit as UkUATranslit
+from faker.providers.person.uz_UZ import Provider as UzUzProvider
 from faker.providers.person.vi_VN import Provider as ViVNProvider
 from faker.providers.person.yo_NG import Provider as YoNGProvider
 from faker.providers.person.zh_CN import Provider as ZhCNProvider
@@ -331,7 +334,6 @@ class TestEnIN(unittest.TestCase):
 
 
 class TestEnPk(unittest.TestCase):
-
     def setUp(self):
         """Set up the Faker instance with the Pakistani locale."""
         self.fake = Faker("en_PK")
@@ -673,6 +675,68 @@ class TestGaIE(TestEnIE):
         Faker.seed(0)
 
 
+class TestGuIN(unittest.TestCase):
+    """Tests person in the gu_IN locale"""
+
+    def setUp(self):
+        self.fake = Faker("gu_IN")
+        Faker.seed(0)
+
+    """Verify that gender specific names are set correctly"""
+
+    def test_first_name(self):
+        name = self.fake.first_name()
+        self.assertIsInstance(name, str)
+        assert name in GuINProvider.first_names
+
+    def test_first_name_male(self):
+        name = self.fake.first_name_male()
+        self.assertIsInstance(name, str)
+        assert name in GuINProvider.first_names_male
+
+    def test_first_name_female(self):
+        name = self.fake.first_name_female()
+        self.assertIsInstance(name, str)
+        assert name in GuINProvider.first_names_female
+
+    def test_last_name(self):
+        last_name = self.fake.last_name()
+        self.assertIsInstance(last_name, str)
+        assert last_name in GuINProvider.last_names
+
+    def test_name(self):
+        name = self.fake.name().split()
+        assert all(isinstance(n, str) for n in name)
+        if len(name) == 3:
+            assert all(
+                [
+                    name[0] in GuINProvider.prefixes,
+                    name[1] in GuINProvider.first_names,
+                    name[2] in GuINProvider.last_names,
+                ]
+            )
+        else:
+            assert name[0] in GuINProvider.first_names
+            assert name[-1] in GuINProvider.last_names
+
+    """Verify that gender specific prefixes are set correctly"""
+
+    def test_prefix(self):
+        prefix = self.fake.prefix()
+        self.assertIsInstance(prefix, str)
+        assert prefix in GuINProvider.prefixes
+
+    def test_prefix_female(self):
+        prefix = self.fake.prefix_female()
+        self.assertIsInstance(prefix, str)
+        assert prefix in GuINProvider.prefixes_female
+
+    def test_prefix_male(self):
+        prefix = self.fake.prefix_male()
+        self.assertIsInstance(prefix, str)
+        assert prefix in GuINProvider.prefixes_male
+
+
 class TestHeIL(unittest.TestCase):
     """Tests person in the he_IL locale."""
 
@@ -697,6 +761,54 @@ class TestHeIL(unittest.TestCase):
         assert last_name in HeILProvider.last_names
 
 
+class TestHiIN(unittest.TestCase):
+    """Tests person in the hi_IN locale"""
+
+    def setUp(self):
+        self.fake = Faker("hi_IN")
+        Faker.seed(0)
+
+    def test_first_name(self):
+        """Verify that gender specific names are set correctly"""
+
+        name = self.fake.first_name_male()
+        assert name in HiINProvider.first_names_male
+
+        name = self.fake.first_name_female()
+        assert name in HiINProvider.first_names_female
+
+        name = self.fake.first_name()
+        assert name in HiINProvider.first_names_male
+
+    def test_last_name(self):
+        last_name = self.fake.last_name()
+        assert last_name in HiINProvider.last_names
+
+    def test_name(self):
+        name = self.fake.name().split()
+
+        assert all(isinstance(n, str) for n in name)
+
+        prefixes = HiINProvider.prefixes_male + HiINProvider.prefixes_female + HiINProvider.prefixes
+
+        # name should always be 2-3 words. If 3, first word should be a prefix.
+        if len(name) == 3:
+            assert all(
+                [
+                    name[0] in prefixes,
+                    name[1] in HiINProvider.first_names,
+                    name[2] in HiINProvider.last_names,
+                ]
+            )
+        else:
+            assert name[0] in HiINProvider.first_names
+            if name[-1].endswith(HiINProvider.suffixes):
+                assert name[-1][:-1] in HiINProvider.last_names
+                assert name[-1][-1] in HiINProvider.suffixes
+            else:
+                assert name[-1] in HiINProvider.last_names
+
+
 class TestHyAM(unittest.TestCase):
     """Tests person in the hy_AM locale"""
 
@@ -1166,6 +1278,11 @@ class TestRuRU(unittest.TestCase):
         language_name = self.fake.language_name()
         assert language_name in RuProvider.language_names
 
+    def test_passport_owner(self):
+        surname, given_name = self.fake.passport_owner()
+        assert surname in RuProvider.last_names
+        assert given_name in RuProvider.first_names
+
 
 class TestSvSE(unittest.TestCase):
     def setUp(self):
@@ -1798,5 +1915,32 @@ class TestZuZa(unittest.TestCase):
             raise AssertionError("Invalid number of name parts. Expected 2 or 3.")
 
 
+class TestUzUz(unittest.TestCase):
+    def setUp(self):
+        self.fake = Faker("uz_UZ")
+        Faker.seed(0)
+        self.provider = UzUzProvider
+
+    def test_male_first_names(self):
+        for _ in range(100):
+            res = self.fake.first_name_male()
+            assert res in self.provider.first_names_male
+
+    def test_female_first_names(self):
+        for _ in range(100):
+            res = self.fake.first_name_female()
+            assert res in self.provider.first_names_female
+
+    def test_male_last_names(self):
+        for _ in range(100):
+            res = self.fake.last_name_male()
+            assert res in self.provider.last_names_male
+
+    def test_female_last_names(self):
+        for _ in range(100):
+            res = self.fake.last_name_female()
+            assert res in self.provider.last_names_female
+
+
 if __name__ == "__main__":
     unittest.main()
diff --git a/tests/providers/test_phone_number.py b/tests/providers/test_phone_number.py
index 75608369..26d509f9 100644
--- a/tests/providers/test_phone_number.py
+++ b/tests/providers/test_phone_number.py
@@ -22,6 +22,50 @@ class TestPhoneNumber:
             assert msisdn.isdigit()
 
 
+class TestArAe:
+    """Test ar_AE phone number provider methods"""
+
+    cellphone_pattern: str = r"(?:\+|00)971\s?5[024568]\s?\d{3}\s?\d{4}|" r"05[024568]\s?\d{3}\s?\d{4}"
+    telephone_pattern: str = r"(?:\+|00)971\s?[1234679]\s?\d{3}\s?\d{4}|" r"0[1234679]\s?\d{3}\s?\d{4}"
+    toll_pattern: str = r"200\d{4}|" r"600\d{6}|" r"800\d{3,7}"
+    service_phone_pattern: str = r"9(?:9(?:9|8|7|6|1)|01|22)"
+
+    def test_cellphone_number(self, faker, num_samples):
+        pattern: Pattern = re.compile(self.cellphone_pattern)
+        for _ in range(num_samples):
+            cellphone = faker.cellphone_number()
+            assert pattern.fullmatch(cellphone)
+
+    def test_telephone_number(self, faker, num_samples):
+        pattern: Pattern = re.compile(self.telephone_pattern)
+        for _ in range(num_samples):
+            telephone = faker.telephone_number()
+            assert pattern.fullmatch(telephone)
+
+    def test_toll_number(self, faker, num_samples):
+        pattern: Pattern = re.compile(self.toll_pattern)
+        for _ in range(num_samples):
+            toll = faker.toll_number()
+            assert pattern.fullmatch(toll)
+
+    def test_service_phone_number(self, faker, num_samples):
+        pattern: Pattern = re.compile(self.service_phone_pattern)
+        for _ in range(num_samples):
+            service = faker.service_phone_number()
+            assert pattern.fullmatch(service)
+
+    def test_phone_number(self, faker, num_samples):
+        pattern: Pattern = re.compile(
+            rf"{self.cellphone_pattern}|"
+            rf"{self.telephone_pattern}|"
+            rf"{self.toll_pattern}|"
+            rf"{self.service_phone_pattern}",
+        )
+        for _ in range(num_samples):
+            phone = faker.phone_number()
+            assert pattern.fullmatch(phone)
+
+
 class TestAzAz:
     """Test az_AZ phone number provider methods"""
 
@@ -53,16 +97,6 @@ class TestAzAz:
             assert self.landline_patterns.fullmatch(landline_number)
 
 
-class TestJaJp:
-    """Test ja_JP phone number provider methods"""
-
-    def test_phone_number(self, faker, num_samples):
-        for _ in range(num_samples):
-            pattern: Pattern = re.compile(r"(?:0[789]0|\d{2})-\d{4}-\d{4}")
-            phone_number = faker.phone_number()
-            assert pattern.fullmatch(phone_number)
-
-
 class TestCsCz:
     """Test cs_CZ phone number provider methods"""
 
@@ -73,98 +107,6 @@ class TestCsCz:
             assert pattern.fullmatch(phone_number)
 
 
-class TestSkSk:
-    """Test sk_SK phone number provider methods"""
-
-    def test_phone_number(self, faker, num_samples):
-        pattern: Pattern = re.compile(
-            r"(^(00421|\+421)? ?[2] ?[0-9]{8}$)|"
-            r"(^(00421|\+421)? ?[3-5][0-9] ?[0-9]{3} ?[0-9]{4}$)|"
-            r"(^(00421|\+421)? ?[9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$)"
-        )
-
-        for _ in range(num_samples):
-            phone_number = faker.phone_number()
-            assert pattern.fullmatch(phone_number)
-
-
-class TestPtBr:
-    """Test pt_BR phone number provider methods"""
-
-    def test_phone_number(self, faker, num_samples):
-        pattern: Pattern = re.compile(
-            r"(?:\+55 )?" r"(?:[1-8]1|84|\((?:0[1-8]1|084)\))" r" \d{4}[ -]\d{4}|" r"\d{4}?[ -]\d{3}[ -]\d{4}",
-        )
-        for _ in range(num_samples):
-            phone_number = faker.phone_number()
-            assert pattern.fullmatch(phone_number)
-
-    def test_msisdn(self, faker, num_samples):
-        pattern: Pattern = re.compile(r"55(?:[1-8]19|849)\d{8}")
-        for _ in range(num_samples):
-            msisdn = faker.msisdn()
-            assert pattern.fullmatch(msisdn)
-
-    def test_cellphone(self, faker, num_samples):
-        pattern: Pattern = re.compile(
-            r"(?:\+55 )?" r"(?:\d{2}|\(0?\d{2}\))" r" 9 ?\d{4}[ -]\d{4}",
-        )
-        for _ in range(num_samples):
-            cellphone = faker.cellphone_number()
-            assert pattern.fullmatch(cellphone)
-
-    def test_service_phone(self, faker, num_samples):
-        pattern: Pattern = re.compile(r"1(?:0|2|5|8|9)?(?:[0-9])")
-        for _ in range(num_samples):
-            service = faker.service_phone_number()
-            assert pattern.fullmatch(service)
-
-
-class TestHuHu:
-    """Test hu_HU phone number provider methods"""
-
-    def test_phone_number(self, faker, num_samples):
-        pattern: Pattern = re.compile(
-            r"(?:" r"\+36 \d{2} |" r"\(06\)\d{2}/|" r"\(\d{2}\)/|" r"\d{2}/|" r"06-\d{1,2}/" r")\d{3}[- ]\d{4}",
-        )
-        for _ in range(num_samples):
-            phone_number = faker.phone_number()
-            assert isinstance(phone_number, str)
-            assert pattern.fullmatch(phone_number)
-
-
-class TestThTh:
-    """Test th_TH phone number provider methods"""
-
-    def test_phone_number(self, faker, num_samples):
-        pattern: Pattern = re.compile(
-            # leading zero or internaional code
-            r"((\+66)|\+66[ -]?\(0\)|0)[ -]?"
-            # landline or mobile
-            r"([23457][ -]?(\d[ -]?){6}\d|[689][ -]?(\d[ -]?){7}\d)"
-            # extension
-            r"([ ]?(x|ext|ต่อ)[\.]?[ ]?\d{1,5})?",
-            re.IGNORECASE,
-        )
-        for _ in range(num_samples):
-            phone_number = faker.phone_number()
-            assert isinstance(phone_number, str)
-            assert pattern.fullmatch(phone_number)
-
-
-class TestHyAm:
-    """Test hy_AM phone number provider methods"""
-
-    def test_phone_number(self, faker, num_samples):
-        pattern: Pattern = re.compile(
-            r"(?:[23]\d{2}-|\([23]\d{2}\) |[23]\d{2}\.)\d{5}|" r"(?:(?:10|9\d)-|\((?:10|9\d)\) |(?:10|9\d)\.)\d{6}",
-        )
-        for _ in range(num_samples):
-            phone_number = faker.phone_number()
-            assert isinstance(phone_number, str)
-            assert pattern.fullmatch(phone_number)
-
-
 class TestEnPh:
     """Test en_PH phone number provider methods"""
 
@@ -269,28 +211,25 @@ class TestEnPh:
                 assert non_area2_match.group(1) in self.non_area2_landline_area_codes
 
 
-class TestFilPh(TestEnPh):
-    """Test fil_PH phone number provider methods"""
-
-    pass
-
-
-class TestTlPh(TestEnPh):
-    """Test tl_PH phone number provider methods"""
-
-    pass
-
-
-class TestTaIn:
-    """Test ta_IN phone number provider methods"""
+class TestEnUs:
+    """Test En_US phone provider methods"""
 
-    def test_phone_number(self, faker, num_samples):
-        pattern: Pattern = re.compile(
-            r"\+91 \d{3} ?\d{7}|" r"0\d{2}(-)?\d{2}(?(1)| ?)\d{6}",
+    def test_basic_phone_number(self, faker, num_samples):
+        pattern_no_whitespaces: Pattern = re.compile(
+            r"\d{9}",
         )
+        pattern_dashes: Pattern = re.compile(r"\d{3}-\d{3}-\d{4}")
+        pattern_parens: Pattern = re.compile(r"\(\d{3}\)\d{3}-\d{4}")
+        patterns = [pattern_no_whitespaces, pattern_dashes, pattern_parens]
         for _ in range(num_samples):
-            phone_number = faker.phone_number()
-            assert pattern.fullmatch(phone_number)
+            phone_number = faker.basic_phone_number()
+
+            pattern_is_found = False
+            for pattern in patterns:
+                if re.match(pattern, phone_number):
+                    pattern_is_found = True
+                    break
+            assert pattern_is_found
 
 
 class TestEsCo:
@@ -322,48 +261,10 @@ class TestEsEs:
             assert pattern.fullmatch(phone_number)
 
 
-class TestArAe:
-    """Test ar_AE phone number provider methods"""
-
-    cellphone_pattern: str = r"(?:\+|00)971\s?5[024568]\s?\d{3}\s?\d{4}|" r"05[024568]\s?\d{3}\s?\d{4}"
-    telephone_pattern: str = r"(?:\+|00)971\s?[1234679]\s?\d{3}\s?\d{4}|" r"0[1234679]\s?\d{3}\s?\d{4}"
-    toll_pattern: str = r"200\d{4}|" r"600\d{6}|" r"800\d{3,7}"
-    service_phone_pattern: str = r"9(?:9(?:9|8|7|6|1)|01|22)"
-
-    def test_cellphone_number(self, faker, num_samples):
-        pattern: Pattern = re.compile(self.cellphone_pattern)
-        for _ in range(num_samples):
-            cellphone = faker.cellphone_number()
-            assert pattern.fullmatch(cellphone)
-
-    def test_telephone_number(self, faker, num_samples):
-        pattern: Pattern = re.compile(self.telephone_pattern)
-        for _ in range(num_samples):
-            telephone = faker.telephone_number()
-            assert pattern.fullmatch(telephone)
-
-    def test_toll_number(self, faker, num_samples):
-        pattern: Pattern = re.compile(self.toll_pattern)
-        for _ in range(num_samples):
-            toll = faker.toll_number()
-            assert pattern.fullmatch(toll)
-
-    def test_service_phone_number(self, faker, num_samples):
-        pattern: Pattern = re.compile(self.service_phone_pattern)
-        for _ in range(num_samples):
-            service = faker.service_phone_number()
-            assert pattern.fullmatch(service)
+class TestFilPh(TestEnPh):
+    """Test fil_PH phone number provider methods"""
 
-    def test_phone_number(self, faker, num_samples):
-        pattern: Pattern = re.compile(
-            rf"{self.cellphone_pattern}|"
-            rf"{self.telephone_pattern}|"
-            rf"{self.toll_pattern}|"
-            rf"{self.service_phone_pattern}",
-        )
-        for _ in range(num_samples):
-            phone = faker.phone_number()
-            assert pattern.fullmatch(phone)
+    pass
 
 
 class TestFrFr:
@@ -398,25 +299,148 @@ class TestFrFr:
             assert pattern_is_found
 
 
-class TestEnUs:
-    """Test En_US phone provider methods"""
+class TestHuHu:
+    """Test hu_HU phone number provider methods"""
 
-    def test_basic_phone_number(self, faker, num_samples):
-        pattern_no_whitespaces: Pattern = re.compile(
-            r"\d{9}",
+    def test_phone_number(self, faker, num_samples):
+        pattern: Pattern = re.compile(
+            r"(?:" r"\+36 \d{2} |" r"\(06\)\d{2}/|" r"\(\d{2}\)/|" r"\d{2}/|" r"06-\d{1,2}/" r")\d{3}[- ]\d{4}",
         )
-        pattern_dashes: Pattern = re.compile(r"\d{3}-\d{3}-\d{4}")
-        pattern_parens: Pattern = re.compile(r"\(\d{3}\)\d{3}-\d{4}")
-        patterns = [pattern_no_whitespaces, pattern_dashes, pattern_parens]
         for _ in range(num_samples):
-            phone_number = faker.basic_phone_number()
+            phone_number = faker.phone_number()
+            assert isinstance(phone_number, str)
+            assert pattern.fullmatch(phone_number)
 
-            pattern_is_found = False
-            for pattern in patterns:
-                if re.match(pattern, phone_number):
-                    pattern_is_found = True
-                    break
-            assert pattern_is_found
+
+class TestHyAm:
+    """Test hy_AM phone number provider methods"""
+
+    def test_phone_number(self, faker, num_samples):
+        pattern: Pattern = re.compile(
+            r"(?:[23]\d{2}-|\([23]\d{2}\) |[23]\d{2}\.)\d{5}|" r"(?:(?:10|9\d)-|\((?:10|9\d)\) |(?:10|9\d)\.)\d{6}",
+        )
+        for _ in range(num_samples):
+            phone_number = faker.phone_number()
+            assert isinstance(phone_number, str)
+            assert pattern.fullmatch(phone_number)
+
+
+class TestJaJp:
+    """Test ja_JP phone number provider methods"""
+
+    def test_phone_number(self, faker, num_samples):
+        for _ in range(num_samples):
+            pattern: Pattern = re.compile(r"(?:0[789]0|\d{2})-\d{4}-\d{4}")
+            phone_number = faker.phone_number()
+            assert pattern.fullmatch(phone_number)
+
+
+class TestKaGe:
+    """Test ka_GE phone number provider methods"""
+
+    pattern = re.compile(
+        r"(?:"
+        r"\+995 \d{3} \d{3} \d{3}|"  # Example: +995 123 456 789
+        r"\+995 \(\d{3}\) \d{3} \d{3}|"  # Example: +995 (123) 456 789
+        r"\+995\d{9}|"  # Example: +995123456789
+        r"0 \d{3} \d{3} \d{3}|"  # Example: 0 123 456 789
+        r"\+995 32 \d{3} \d{2} \d{2}|"  # Example: +995 32 123 12 12
+        r"\+995 34\d \d{3} \d{3}|"  # Example: +995 34x 123 456
+        r"\+995 \(34\d\) \d{3} \d{3}|"  # Example: +995 (34x) 123 456
+        r"0 32 \d{3} \d{2} \d{2}|"  # Example: 0 32 123 12 12
+        r"0 34\d \d{3} \d{3}"  # Example: 0 34x 123 456
+        r")"
+    )
+
+    def test_phone_number(self, faker, num_samples):
+        for _ in range(num_samples):
+            phone_number = faker.phone_number()
+            assert isinstance(phone_number, str)
+            assert self.pattern.fullmatch(phone_number)
+
+
+class TestPtBr:
+    """Test pt_BR phone number provider methods"""
+
+    def test_phone_number(self, faker, num_samples):
+        pattern: Pattern = re.compile(
+            r"(?:\+55 )?" r"(?:[1-8]1|84|\((?:0[1-8]1|084)\))" r" \d{4}[ -]\d{4}|" r"\d{4}?[ -]\d{3}[ -]\d{4}",
+        )
+        for _ in range(num_samples):
+            phone_number = faker.phone_number()
+            assert pattern.fullmatch(phone_number)
+
+    def test_msisdn(self, faker, num_samples):
+        pattern: Pattern = re.compile(r"55(?:[1-8]19|849)\d{8}")
+        for _ in range(num_samples):
+            msisdn = faker.msisdn()
+            assert pattern.fullmatch(msisdn)
+
+    def test_cellphone(self, faker, num_samples):
+        pattern: Pattern = re.compile(
+            r"(?:\+55 )?" r"(?:\d{2}|\(0?\d{2}\))" r" 9 ?\d{4}[ -]\d{4}",
+        )
+        for _ in range(num_samples):
+            cellphone = faker.cellphone_number()
+            assert pattern.fullmatch(cellphone)
+
+    def test_service_phone(self, faker, num_samples):
+        pattern: Pattern = re.compile(r"1(?:0|2|5|8|9)?(?:[0-9])")
+        for _ in range(num_samples):
+            service = faker.service_phone_number()
+            assert pattern.fullmatch(service)
+
+
+class TestSkSk:
+    """Test sk_SK phone number provider methods"""
+
+    def test_phone_number(self, faker, num_samples):
+        pattern: Pattern = re.compile(
+            r"(^(00421|\+421)? ?[2] ?[0-9]{8}$)|"
+            r"(^(00421|\+421)? ?[3-5][0-9] ?[0-9]{3} ?[0-9]{4}$)|"
+            r"(^(00421|\+421)? ?[9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$)"
+        )
+
+        for _ in range(num_samples):
+            phone_number = faker.phone_number()
+            assert pattern.fullmatch(phone_number)
+
+
+class TestTaIn:
+    """Test ta_IN phone number provider methods"""
+
+    def test_phone_number(self, faker, num_samples):
+        pattern: Pattern = re.compile(
+            r"\+91 \d{3} ?\d{7}|" r"0\d{2}(-)?\d{2}(?(1)| ?)\d{6}",
+        )
+        for _ in range(num_samples):
+            phone_number = faker.phone_number()
+            assert pattern.fullmatch(phone_number)
+
+
+class TestThTh:
+    """Test th_TH phone number provider methods"""
+
+    def test_phone_number(self, faker, num_samples):
+        pattern: Pattern = re.compile(
+            # leading zero or internaional code
+            r"((\+66)|\+66[ -]?\(0\)|0)[ -]?"
+            # landline or mobile
+            r"([23457][ -]?(\d[ -]?){6}\d|[689][ -]?(\d[ -]?){7}\d)"
+            # extension
+            r"([ ]?(x|ext|ต่อ)[\.]?[ ]?\d{1,5})?",
+            re.IGNORECASE,
+        )
+        for _ in range(num_samples):
+            phone_number = faker.phone_number()
+            assert isinstance(phone_number, str)
+            assert pattern.fullmatch(phone_number)
+
+
+class TestTlPh(TestEnPh):
+    """Test tl_PH phone number provider methods"""
+
+    pass
 
 
 class TestViVn:
@@ -438,3 +462,26 @@ class TestViVn:
             phone_number = faker.phone_number()
             assert isinstance(phone_number, str)
             assert pattern.fullmatch(phone_number)
+
+
+class TestUzUz:
+    """Test uz_UZ phone number provider methods"""
+
+    def test_phone_number(self, faker, num_samples):
+        pattern: Pattern = re.compile(
+            r"(?:"  # Non-capturing group
+            r"\+998 \(\d{2}\) \d{3}-\d{2}-\d{2}|"  # Example: +998 (93) 123-45-67
+            r"\+998 \(\d{2}\) \d{3} \d{2} \d{2}|"  # Example: +998 (93) 123 45 67
+            r"\+998 \(\d{2}\) \d{3} \d{4}|"  # Example: +998 (93) 123 4567
+            r"\+998 \(\d{2}\) \d{3}-\d{4}|"  # Example: +998 (93) 123-4567
+            r"\+998 \d{2} \d{3}-\d{2}-\d{2}|"  # Example: +998 93 123-45-67
+            r"\+998 \d{2} \d{3} \d{2} \d{2}|"  # Example: +998 93 123 45 67
+            r"\+998 \d{2} \d{3} \d{4}|"  # Example: +998 93 123 4567
+            r"\+998 \d{2} \d{3}-\d{4}|"  # Example: +998 93 123-4567
+            r"\+998\d{9}"  # Example: +998881234567
+            r")"  # Closing non-capturing group
+        )
+        for _ in range(num_samples):
+            phone_number = faker.phone_number()
+            assert isinstance(phone_number, str)
+            assert pattern.fullmatch(phone_number)