Repository: joke2k/faker (python)

Issue:
TypeError: timezone() missing required argument 'offset' when using date_time provider
Hej all,
With faker v36.2.2 on Python 3.12.0 I have an issue that might originate from the recent datetime refactoring. 

The following code works
```python
from faker import Faker, providers
from datetime import timezone

fk = Faker()
Faker.seed(4321)
# fk.add_provider(providers.date_time)
# print(timezone is fk.timezone)
print(fk.timezone())
```

But when umcommenting the line with add_provider, the error indicated in the title happens. 

As a workaround I can drop the date_time provider but it still might be confusing to users.

As a hint I found that `timezone is fk.timezone` weirdly is True when the provider is added, maybe something mixed up in the imports.

Pull request:
Fix timezone import name clash
### What does this change

Fixes #2183

### What was wrong

I couldn't use `add_provider()` with the `date_time` provider and the `timezone()` method.

I found out that the built-in timezone module is identical to the object returned from the `timezone()` method.

git-bisect showed me that 604e1ed6 is the culprit commit.

### How this fixes it

Use a renaming of the built-in timezone module at import time.

Fixes #2183

### 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 6c1e5c8a..e291da50 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 37.0.0
+current_version = 37.1.0
 files = VERSION faker/__init__.py docs/conf.py
 commit = True
 tag = True
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c116e09e..55a3bc48 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,18 @@
 ## Changelog
 
+### [v37.1.0 - 2025-03-24](https://github.com/joke2k/faker/compare/v37.0.2...v37.1.0)
+
+* Add `ng_NG` currency provider. Thanks @Theocode12.
+
+### [v37.0.2 - 2025-03-19](https://github.com/joke2k/faker/compare/v37.0.1...v37.0.2)
+
+* Fix type annotiation
+
+### [v37.0.1 - 2025-03-18](https://github.com/joke2k/faker/compare/v37.0.0...v37.0.1)
+
+* Fix last names from `en_PK` provider. Thanks @bradenkwebb.
+* fix Belgium IBAN incorrect checksum. Thanks @xeirzo.
+
 ### [v37.0.0 - 2025-03-07](https://github.com/joke2k/faker/compare/v36.2.3...v37.0.0)
 
 * Fix: `es_ES` `doi()` to use standard DOI format. Thanks @jasur-py.
diff --git a/VERSION b/VERSION
index 09374235..b16ec85c 100644
--- a/VERSION
+++ b/VERSION
@@ -1,1 +1,1 @@
-37.0.0
+37.1.0
diff --git a/docs/conf.py b/docs/conf.py
index 482b72cf..e9530405 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 = "37.0.0"
+version = "37.1.0"
 # The full version, including alpha/beta/rc tags.
-release = "37.0.0"
+release = "37.1.0"
 
 # 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 acb4fc36..f3a4551b 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 = "37.0.0"
+VERSION = "37.1.0"
 
 __all__ = ("Factory", "Generator", "Faker")
diff --git a/faker/providers/bank/nl_BE/__init__.py b/faker/providers/bank/nl_BE/__init__.py
index 54334866..2d586478 100644
--- a/faker/providers/bank/nl_BE/__init__.py
+++ b/faker/providers/bank/nl_BE/__init__.py
@@ -85,12 +85,12 @@ class Provider(BankProvider):
 
     def _calculate_mod97(self, account_number: str) -> str:
         """Calculate the mod 97 check digits for a given account number."""
-        check_digits = 97 - (int(account_number) % 97)
-        return str(check_digits).zfill(2)
+        remainder = int(account_number) % 97
+        return str(remainder).zfill(2) if remainder != 0 else "97"
 
     def _calculate_iban_check_digits(self, bban: str) -> str:
         """Calculate the IBAN check digits using mod 97 algorithm."""
-        raw_iban = f"{self.country_code}00{bban}"
+        raw_iban = f"{bban}{self.country_code}00"
         numeric_iban = "".join(str(ord(char) - 55) if char.isalpha() else char for char in raw_iban)
         check_digits = 98 - (int(numeric_iban) % 97)
         return str(check_digits).zfill(2)
diff --git a/faker/providers/currency/ng_NG/__init__.py b/faker/providers/currency/ng_NG/__init__.py
new file mode 100644
index 00000000..38e839b6
--- /dev/null
+++ b/faker/providers/currency/ng_NG/__init__.py
@@ -0,0 +1,8 @@
+from .. import Provider as CurrencyProvider
+
+
+class Provider(CurrencyProvider):
+    price_formats = ["#.##", "%#.##", "%##.##", "%,###.##"]
+
+    def pricetag(self) -> str:
+        return "\N{NAIRA SIGN}" + "\N{NO-BREAK SPACE}" + self.numerify(self.random_element(self.price_formats))
diff --git a/faker/providers/date_time/__init__.py b/faker/providers/date_time/__init__.py
index f05538ed..dc9533ab 100644
--- a/faker/providers/date_time/__init__.py
+++ b/faker/providers/date_time/__init__.py
@@ -7,7 +7,8 @@ from datetime import MAXYEAR
 from datetime import date as dtdate
 from datetime import datetime
 from datetime import time as dttime
-from datetime import timedelta, timezone
+from datetime import timedelta
+from datetime import timezone as dttimezone
 from datetime import tzinfo as TzInfo
 from typing import Any, Callable, Dict, Iterator, Optional, Tuple, Union
 
@@ -30,14 +31,14 @@ def _get_next_month_start(dt: Union[dtdate, datetime]) -> Union[dtdate, datetime
 
 def datetime_to_timestamp(dt: Union[dtdate, datetime]) -> int:
     if isinstance(dt, datetime) and getattr(dt, "tzinfo", None) is not None:
-        dt = dt.astimezone(timezone.utc)
+        dt = dt.astimezone(dttimezone.utc)
     return timegm(dt.timetuple())
 
 
 def timestamp_to_datetime(timestamp: Union[int, float], tzinfo: Optional[TzInfo]) -> datetime:
     if tzinfo is None:
         pick = convert_timestamp_to_datetime(timestamp, _get_local_timezone())
-        return pick.astimezone(timezone.utc).replace(tzinfo=None)
+        return pick.astimezone(dttimezone.utc).replace(tzinfo=None)
     return convert_timestamp_to_datetime(timestamp, tzinfo)
 
 
@@ -2108,7 +2109,7 @@ class Provider(BaseProvider):
         if tzinfo is None:
             return datetime(1970, 1, 1, tzinfo=tzinfo) + timedelta(seconds=ts)
         else:
-            return (datetime(1970, 1, 1, tzinfo=timezone.utc) + timedelta(seconds=ts)).astimezone(tzinfo)
+            return (datetime(1970, 1, 1, tzinfo=dttimezone.utc) + timedelta(seconds=ts)).astimezone(tzinfo)
 
     def date_between(self, start_date: DateParseType = "-30y", end_date: DateParseType = "today") -> dtdate:
         """
@@ -2212,7 +2213,7 @@ class Provider(BaseProvider):
             if tzinfo is None:
                 pick = convert_timestamp_to_datetime(timestamp, _get_local_timezone())
                 try:
-                    pick = pick.astimezone(timezone.utc).replace(tzinfo=None)
+                    pick = pick.astimezone(dttimezone.utc).replace(tzinfo=None)
                 except OSError:
                     pass
             else:
diff --git a/faker/providers/passport/en_US/__init__.py b/faker/providers/passport/en_US/__init__.py
index 419eac8a..c17b5ed2 100644
--- a/faker/providers/passport/en_US/__init__.py
+++ b/faker/providers/passport/en_US/__init__.py
@@ -35,7 +35,7 @@ class Provider(PassportProvider):
 
         -https://travel.state.gov/content/travel/en/passports/passport-help/faqs.html
         """
-        birth_date = birthday.strftime("%d ") + birthday.strftime("%b ") + birthday.strftime("%Y")
+        birth_date = f"{birthday:%d %b %Y}"
         today = date.today()
         age = (today - birthday).days // 365
         if age < 16:
@@ -62,8 +62,8 @@ class Provider(PassportProvider):
             issue_date -= timedelta(days=1)
         expiry_date = issue_date.replace(year=issue_date.year + expiry_years)
 
-        issue_date_format = issue_date.strftime("%d ") + issue_date.strftime("%b ") + issue_date.strftime("%Y")
-        expiry_date_format = expiry_date.strftime("%d ") + expiry_date.strftime("%b ") + expiry_date.strftime("%Y")
+        issue_date_format = f"{issue_date:%d %b %Y}"
+        expiry_date_format = f"{expiry_date:%d %b %Y}"
         return birth_date, issue_date_format, expiry_date_format
 
     def passport_gender(self, seed: int = 0) -> SexLiteral:
diff --git a/faker/providers/person/en_PK/__init__.py b/faker/providers/person/en_PK/__init__.py
index 38ee0a08..1b3511a3 100644
--- a/faker/providers/person/en_PK/__init__.py
+++ b/faker/providers/person/en_PK/__init__.py
@@ -115,7 +115,6 @@ class Provider(PersonProvider):
         "Zewad",
         "Zimran",
         "Zuwayhir",
-        "Name",
         "Adil",
         "Aaaqil",
         "Aaban",
@@ -155,7 +154,6 @@ class Provider(PersonProvider):
         "Aayan",
         "Aazim",
         "Abaan",
-        "Name",
         "Baahir",
         "Baaizeed",
         "Baaqee",
@@ -195,7 +193,6 @@ class Provider(PersonProvider):
         "Bazam",
         "Bilaal",
         "Bilal",
-        "Name",
         "Dawud",
         "Daamin",
         "Daanish",
@@ -210,7 +207,6 @@ class Provider(PersonProvider):
         "Damurah",
         "Daniel",
         "Danish",
-        "Name",
         "Eesaa",
         "Ehan",
         "Ehsaas",
@@ -220,7 +216,6 @@ class Provider(PersonProvider):
         "El-Amin",
         "Emran",
         "Eshan",
-        "Name",
         "Ghaalib",
         "Ghaazi",
         "Ghaffaar",
@@ -254,7 +249,6 @@ class Provider(PersonProvider):
         "Gulfam",
         "Gulshan",
         "Gulzar",
-        "Name",
         "Izaaz",
         "Ibaad",
         "Ibn",
@@ -282,7 +276,6 @@ class Provider(PersonProvider):
         "Ikrimah",
         "Ikrimah",
         "Ilan",
-        "Name",
         "Jafar",
         "Jaabir",
         "Jaabir",
@@ -311,7 +304,6 @@ class Provider(PersonProvider):
         "Jamal",
         "Jameel",
         "Jameel",
-        "Name",
         "Kaamil",
         "Kaamil",
         "Kaamil",
@@ -347,7 +339,6 @@ class Provider(PersonProvider):
         "Kazim",
         "Keyaan",
         "Khaalid",
-        "Name",
         "Laeeq",
         "Labeeb",
         "Labeeb",
@@ -375,7 +366,6 @@ class Provider(PersonProvider):
         "Lutf",
         "Lutfi",
         "Lutfi",
-        "Name",
         "Maawiya",
         "Mad",
         "Mamun",
@@ -415,7 +405,6 @@ class Provider(PersonProvider):
         "Majdy",
         "Majeed",
         "Makeen",
-        "Name",
         "Nail",
         "Naail",
         "Naadir",
@@ -455,7 +444,6 @@ class Provider(PersonProvider):
         "Najeeb",
         "Najeeb",
         "Najeeb",
-        "Name",
         "Obaid",
         "Omair",
         "Omar",
@@ -465,11 +453,9 @@ class Provider(PersonProvider):
         "Osama",
         "Ossama",
         "Owais",
-        "Name",
         "Parsa",
         "Parvez",
         "Pervaiz",
-        "Name",
         "Qaadir",
         "Qaadir",
         "Qaasim",
@@ -507,7 +493,6 @@ class Provider(PersonProvider):
         "Qutaybah",
         "Qutb",
         "Qutub",
-        "Name",
         "Raed",
         "Raid",
         "Raaghib",
@@ -545,7 +530,6 @@ class Provider(PersonProvider):
         "Rahat",
         "Raheel",
         "Raheem",
-        "Name",
         "Sad",
         "Sadan",
         "Said",
@@ -585,7 +569,6 @@ class Provider(PersonProvider):
         "Sadan",
         "Sadaqat",
         "Sadeed",
-        "Name",
         "Taahaa",
         "Taahir",
         "Taahir",
@@ -623,7 +606,6 @@ class Provider(PersonProvider):
         "Talib",
         "Tamam",
         "Tamanna",
-        "Name",
         "Ubaadah",
         "Ubaadah",
         "Ubaadah",
@@ -656,7 +638,6 @@ class Provider(PersonProvider):
         "Umar",
         "Umar",
         "Umar",
-        "Name",
         "Waail",
         "Waail",
         "Waahid",
@@ -676,7 +657,6 @@ class Provider(PersonProvider):
         "Waheed",
         "Wahhaab",
         "Wahhaaj",
-        "Name",
         "Yaaseen",
         "Yafi",
         "Yaghnam",
@@ -697,7 +677,6 @@ class Provider(PersonProvider):
         "Yathrib",
         "Yawar",
         "Yawer",
-        "Name",
         "Zaafir",
         "Zaahid",
         "Zaahid",
@@ -721,304 +700,296 @@ class Provider(PersonProvider):
     )
 
     last_names = (
-        "Lajlaj"
-        "Aarif"
-        "Urrab"
-        "Tabassum"
-        "Ubadah"
-        "Daniel"
-        "Umaarah"
-        "Omair"
-        "Jalil"
-        "Aatiq"
-        "Karaamat"
-        "Lut"
-        "Karam"
-        "Aasif"
-        "Aadam"
-        "Mahbeer"
-        "Saalim"
-        "Ubayd"
-        "Naail"
-        "Mahfuz"
-        "Ghazzal"
-        "Aamir"
-        "Ubaydullah"
-        "Umaarah"
-        "Rabiah"
-        "Maawiya"
-        "Yasir"
-        "Raaghib"
-        "Daamin"
-        "Rabb"
-        "Bashaar"
-        "Taanish"
-        "Yafir"
-        "Baaree"
-        "Talib"
-        "Rafi"
-        "Luqman"
-        "Qaasim"
-        "Ubaidah"
-        "Saajid"
-        "Yaman"
-        "Ubaadah"
-        "Baaqir"
-        "Sadan"
-        "Zarar"
-        "Saafir"
-        "Zafar"
-        "Mahmoud"
-        "Zayyir"
-        "Ubay"
-        "Fidvi"
-        "Mahfuj"
-        "Awmar"
-        "Yawer"
-        "Ayaan"
-        "Taimur"
-        "Rabbani"
-        "Ayyubi"
-        "Waahid"
-        "Ijli"
-        "Baleegh"
-        "Bilaal"
-        "Radi"
-        "Ali"
-        "Tadeen"
-        "Souma"
-        "Layth"
-        "Kashif"
-        "Labeeb"
-        "Talhah"
-        "Sabir"
-        "Dabir"
-        "Yaghnam"
-        "Zackariya"
-        "Ibrahim"
-        "Rafeek"
-        "Qadeer"
-        "Luqmaan"
-        "Jahdari"
-        "Qabeel"
-        "Kaamil"
-        "Ilan"
-        "Omeir"
-        "Ubaid"
-        "Majd"
-        "Aadil"
-        "Ghafoor"
-        "Zahrun"
-        "Tabassum"
-        "Lutf"
-        "Aamir"
-        "Iftikhaar"
-        "Naeem"
-        "Ghauth"
-        "Eshan"
-        "Raid"
-        "Qasif"
-        "Ihsaan"
-        "Bambad"
-        "Aaaqil"
-        "Nabeel"
-        "Jamaal"
-        "Awj"
-        "Wahhaaj"
-        "Nabih"
-        "Jalaal"
-        "Yahyaa"
-        "Aalam"
-        "Ghayoor"
-        "Aarif"
-        "Tahir"
-        "Batal"
-        "Talha"
-        "Uhban"
-        "Aryan"
-        "Najam"
-        "Darain"
-        "Qusay"
-        "Vahar"
-        "Aabid"
-        "Ihtiram"
-        "Umar"
-        "Mahbub"
-        "Qaim"
-        "Name"
-        "Saajid"
-        "Owais"
-        "Maheen"
-        "Raashid"
-        "Limazah"
-        "Zaafir"
-        "Wadood"
-        "Aariz"
-        "Aalam"
-        "Ihab"
-        "Umair"
-        "Zahri"
-        "Aazim"
-        "Jad"
-        "Omar"
-        "Majeed"
-        "Qaseem"
-        "Rafay"
-        "Ghanee"
-        "Gulshan"
-        "Babar"
-        "Baasim"
-        "Ghunayn"
-        "Jaabir"
-        "Nadeem"
-        "Lahiah"
-        "Sair"
-        "Saaqib"
-        "Esfandyar"
-        "Zaheer"
-        "Sabil"
-        "Qutaybah"
-        "Azban"
-        "Zafrul"
-        "Awani"
-        "Tajammul"
-        "Auraq"
-        "Man"
-        "Name"
-        "Tafazal"
-        "Raed"
-        "Baseer"
-        "Quadir"
-        "Dawud"
-        "Talal"
-        "Sabah"
-        "Baashir"
-        "Damurah"
-        "Ibraaheem"
-        "Faizan"
-        "Zaakir"
-        "Ghutayf"
-        "Ehsaas"
-        "Sadeed"
-        "Mad"
-        "Jabir"
-        "Mourib"
-        "Aamil"
-        "Sabeeh"
-        "Bizhan"
-        "Barr"
-        "Basaam"
-        "Ghasaan"
-        "Nail"
-        "Kasim"
-        "Taaj"
-        "Omran"
-        "Madiyan"
-        "Taheem"
-        "Saad"
-        "Kamal"
-        "Raatib"
-        "Taj"
-        "Yadid"
-        "Basheerah"
-        "Aasim"
-        "Zahur"
-        "Saabir"
-        "Kasam"
-        "Naeem"
-        "Tawkeel"
-        "Ghannam"
-        "Tahmaseb"
-        "Awadil"
-        "Liyaaqat"
-        "Tahaw-wur"
-        "Tamanna"
-        "Zafir"
-        "Ghauth"
-        "Ubay"
-        "Zaahid"
-        "Awamil"
-        "Talat"
-        "Maalik"
-        "Name"
-        "Qadar"
-        "Waajid"
-        "Aamirah"
-        "Ayamin"
-        "Kamran"
-        "Kaleem"
-        "Wadi"
-        "Zaahid"
-        "Umar"
-        "Bashaarat"
-        "Saal"
-        "Najeeb"
-        "Kachela"
-        "Sabur"
-        "Buraid"
-        "Rabee"
-        "Najeeb"
-        "Yar"
-        "Umar"
-        "Ossama"
-        "Tahawwur"
-        "Zaahir"
-        "Raashid"
-        "Name"
-        "Tali"
-        "Batool"
-        "Umair"
-        "Ihsaan"
-        "Name"
-        "Majd Udeen"
-        "Kaamil"
-        "Raheel"
-        "Abaan"
-        "Rabah"
-        "Jameel"
-        "Gohar"
-        "Aabid"
-        "Zuwayhir"
-        "Name"
-        "Sadan"
-        "Idris"
-        "Qais"
-        "Sadaqat"
-        "Barraq"
-        "Ejlaal"
-        "Luay"
-        "Jahdami"
-        "Wafeeq"
-        "Wafa"
-        "Rabar"
-        "Aasif"
-        "Dakhil"
-        "Jalaal"
-        "Gulfam"
-        "Saahir"
-        "Name"
-        "Maroof"
-        "Baasit"
-        "Kabeer"
-        "Jameel"
-        "Latif"
-        "Badr Udeen"
-        "Qahtan"
-        "Liyaqat"
-        "Jabr"
-        "Kaleema"
-        "Fazli"
-        "Name"
-        "Huzaifa"
-        "Man"
-        "Rohaan"
-        "Ubadah"
-        "Saburah"
-        "Saariyah"
-        "Kaysan"
-        "Raakin"
-        "Sabiq"
-        "Saboor"
-        "Zahaar"
-        "Jaabir"
+        "Lajlaj",
+        "Aarif",
+        "Urrab",
+        "Tabassum",
+        "Ubadah",
+        "Daniel",
+        "Umaarah",
+        "Omair",
+        "Jalil",
+        "Aatiq",
+        "Karaamat",
+        "Lut",
+        "Karam",
+        "Aasif",
+        "Aadam",
+        "Mahbeer",
+        "Saalim",
+        "Ubayd",
+        "Naail",
+        "Mahfuz",
+        "Ghazzal",
+        "Aamir",
+        "Ubaydullah",
+        "Umaarah",
+        "Rabiah",
+        "Maawiya",
+        "Yasir",
+        "Raaghib",
+        "Daamin",
+        "Rabb",
+        "Bashaar",
+        "Taanish",
+        "Yafir",
+        "Baaree",
+        "Talib",
+        "Rafi",
+        "Luqman",
+        "Qaasim",
+        "Ubaidah",
+        "Saajid",
+        "Yaman",
+        "Ubaadah",
+        "Baaqir",
+        "Sadan",
+        "Zarar",
+        "Saafir",
+        "Zafar",
+        "Mahmoud",
+        "Zayyir",
+        "Ubay",
+        "Fidvi",
+        "Mahfuj",
+        "Awmar",
+        "Yawer",
+        "Ayaan",
+        "Taimur",
+        "Rabbani",
+        "Ayyubi",
+        "Waahid",
+        "Ijli",
+        "Baleegh",
+        "Bilaal",
+        "Radi",
+        "Ali",
+        "Tadeen",
+        "Souma",
+        "Layth",
+        "Kashif",
+        "Labeeb",
+        "Talhah",
+        "Sabir",
+        "Dabir",
+        "Yaghnam",
+        "Zackariya",
+        "Ibrahim",
+        "Rafeek",
+        "Qadeer",
+        "Luqmaan",
+        "Jahdari",
+        "Qabeel",
+        "Kaamil",
+        "Ilan",
+        "Omeir",
+        "Ubaid",
+        "Majd",
+        "Aadil",
+        "Ghafoor",
+        "Zahrun",
+        "Tabassum",
+        "Lutf",
+        "Aamir",
+        "Iftikhaar",
+        "Naeem",
+        "Ghauth",
+        "Eshan",
+        "Raid",
+        "Qasif",
+        "Ihsaan",
+        "Bambad",
+        "Aaaqil",
+        "Nabeel",
+        "Jamaal",
+        "Awj",
+        "Wahhaaj",
+        "Nabih",
+        "Jalaal",
+        "Yahyaa",
+        "Aalam",
+        "Ghayoor",
+        "Aarif",
+        "Tahir",
+        "Batal",
+        "Talha",
+        "Uhban",
+        "Aryan",
+        "Najam",
+        "Darain",
+        "Qusay",
+        "Vahar",
+        "Aabid",
+        "Ihtiram",
+        "Umar",
+        "Mahbub",
+        "Qaim",
+        "Saajid",
+        "Owais",
+        "Maheen",
+        "Raashid",
+        "Limazah",
+        "Zaafir",
+        "Wadood",
+        "Aariz",
+        "Aalam",
+        "Ihab",
+        "Umair",
+        "Zahri",
+        "Aazim",
+        "Jad",
+        "Omar",
+        "Majeed",
+        "Qaseem",
+        "Rafay",
+        "Ghanee",
+        "Gulshan",
+        "Babar",
+        "Baasim",
+        "Ghunayn",
+        "Jaabir",
+        "Nadeem",
+        "Lahiah",
+        "Sair",
+        "Saaqib",
+        "Esfandyar",
+        "Zaheer",
+        "Sabil",
+        "Qutaybah",
+        "Azban",
+        "Zafrul",
+        "Awani",
+        "Tajammul",
+        "Auraq",
+        "Man",
+        "Tafazal",
+        "Raed",
+        "Baseer",
+        "Quadir",
+        "Dawud",
+        "Talal",
+        "Sabah",
+        "Baashir",
+        "Damurah",
+        "Ibraaheem",
+        "Faizan",
+        "Zaakir",
+        "Ghutayf",
+        "Ehsaas",
+        "Sadeed",
+        "Mad",
+        "Jabir",
+        "Mourib",
+        "Aamil",
+        "Sabeeh",
+        "Bizhan",
+        "Barr",
+        "Basaam",
+        "Ghasaan",
+        "Nail",
+        "Kasim",
+        "Taaj",
+        "Omran",
+        "Madiyan",
+        "Taheem",
+        "Saad",
+        "Kamal",
+        "Raatib",
+        "Taj",
+        "Yadid",
+        "Basheerah",
+        "Aasim",
+        "Zahur",
+        "Saabir",
+        "Kasam",
+        "Naeem",
+        "Tawkeel",
+        "Ghannam",
+        "Tahmaseb",
+        "Awadil",
+        "Liyaaqat",
+        "Tahaw-wur",
+        "Tamanna",
+        "Zafir",
+        "Ghauth",
+        "Ubay",
+        "Zaahid",
+        "Awamil",
+        "Talat",
+        "Maalik",
+        "Qadar",
+        "Waajid",
+        "Aamirah",
+        "Ayamin",
+        "Kamran",
+        "Kaleem",
+        "Wadi",
+        "Zaahid",
+        "Umar",
+        "Bashaarat",
+        "Saal",
+        "Najeeb",
+        "Kachela",
+        "Sabur",
+        "Buraid",
+        "Rabee",
+        "Najeeb",
+        "Yar",
+        "Umar",
+        "Ossama",
+        "Tahawwur",
+        "Zaahir",
+        "Raashid",
+        "Tali",
+        "Batool",
+        "Umair",
+        "Ihsaan",
+        "Majd Udeen",
+        "Kaamil",
+        "Raheel",
+        "Abaan",
+        "Rabah",
+        "Jameel",
+        "Gohar",
+        "Aabid",
+        "Zuwayhir",
+        "Sadan",
+        "Idris",
+        "Qais",
+        "Sadaqat",
+        "Barraq",
+        "Ejlaal",
+        "Luay",
+        "Jahdami",
+        "Wafeeq",
+        "Wafa",
+        "Rabar",
+        "Aasif",
+        "Dakhil",
+        "Jalaal",
+        "Gulfam",
+        "Saahir",
+        "Maroof",
+        "Baasit",
+        "Kabeer",
+        "Jameel",
+        "Latif",
+        "Badr Udeen",
+        "Qahtan",
+        "Liyaqat",
+        "Jabr",
+        "Kaleema",
+        "Fazli",
+        "Huzaifa",
+        "Man",
+        "Rohaan",
+        "Ubadah",
+        "Saburah",
+        "Saariyah",
+        "Kaysan",
+        "Raakin",
+        "Sabiq",
+        "Saboor",
+        "Zahaar",
+        "Jaabir",
     )
diff --git a/faker/providers/ssn/de_AT/__init__.py b/faker/providers/ssn/de_AT/__init__.py
index 8bd2002d..4c29dd99 100644
--- a/faker/providers/ssn/de_AT/__init__.py
+++ b/faker/providers/ssn/de_AT/__init__.py
@@ -37,7 +37,7 @@ class Provider(BaseProvider):
         :return: a random valid Austrian social security number
         """
         _birthdate = birthdate or self.generator.date_object()
-        format: str = f"%##{_birthdate.strftime('%d%m%y')}"
+        format: str = f"%##{_birthdate:%d%m%y}"
         ssn: str = self.numerify(format)
         check_digit: int = self.__get_check_digit(ssn)
 
diff --git a/faker/providers/ssn/de_DE/__init__.py b/faker/providers/ssn/de_DE/__init__.py
index 14af05f3..82a3eaea 100644
--- a/faker/providers/ssn/de_DE/__init__.py
+++ b/faker/providers/ssn/de_DE/__init__.py
@@ -66,7 +66,7 @@ class Provider(BaseProvider):
         :return: A valid German pension insurance number
         """
         _birthdate = birthdate or self.generator.date_object()
-        format: str = f"##{_birthdate.strftime('%d%m%y')}?##"
+        format: str = f"##{_birthdate:%d%m%y}?##"
         rvnr: str = self.bothify(format, letters=ascii_uppercase)
 
         return rvnr + self.__get_rvnr_checkdigit(rvnr)
diff --git a/faker/providers/ssn/et_EE/__init__.py b/faker/providers/ssn/et_EE/__init__.py
index 8bcf86ed..f7eaf4f0 100644
--- a/faker/providers/ssn/et_EE/__init__.py
+++ b/faker/providers/ssn/et_EE/__init__.py
@@ -56,8 +56,7 @@ class Provider(SsnProvider):
         else:
             ik = self.generator.random.choice(("7", "8"))
 
-        ik += "%02d%02d%02d" % ((birthday.year % 100), birthday.month, birthday.day)
-        ik += str(self.generator.random.randrange(0, 999)).zfill(3)
+        ik = f"{birthday:%y%m%d}{self.generator.random.randrange(999):03}"
         return ik + str(checksum([int(ch) for ch in ik]))
 
     vat_id_formats = ("EE#########",)
diff --git a/faker/providers/ssn/fi_FI/__init__.py b/faker/providers/ssn/fi_FI/__init__.py
index 016782c0..f5f778c2 100644
--- a/faker/providers/ssn/fi_FI/__init__.py
+++ b/faker/providers/ssn/fi_FI/__init__.py
@@ -31,11 +31,7 @@ class Provider(SsnProvider):
         else:
             age = datetime.timedelta(days=self.generator.random.randrange(min_age * 365, max_age * 365))
         birthday = datetime.date.today() - age
-        hetu_date = "%02d%02d%s" % (
-            birthday.day,
-            birthday.month,
-            str(birthday.year)[-2:],
-        )
+        hetu_date = f"{birthday:%d%m%y}"
         range = (900, 999) if artificial is True else (2, 899)
         suffix = str(self.generator.random.randrange(*range)).zfill(3)
         checksum = _checksum(hetu_date + suffix)
diff --git a/faker/providers/ssn/lv_LV/__init__.py b/faker/providers/ssn/lv_LV/__init__.py
index 49e7d4aa..dee57d75 100644
--- a/faker/providers/ssn/lv_LV/__init__.py
+++ b/faker/providers/ssn/lv_LV/__init__.py
@@ -27,11 +27,7 @@ class Provider(SsnProvider):
 
         age = datetime.timedelta(days=self.generator.random.randrange(min_age * 365, max_age * 365))
         birthday = datetime.date.today() - age
-        ssn_date = "%02d%02d%s" % (
-            birthday.day,
-            birthday.month,
-            str(birthday.year)[-2:],
-        )
+        ssn_date = f"{birthday:%d%m%y}"
         century = self._get_century_code(birthday.year)  # Century
         suffix = self.generator.random.randrange(111, 999)
         checksum = _checksum(f"{ssn_date}{century:01d}{suffix:03d}")
diff --git a/faker/providers/ssn/no_NO/__init__.py b/faker/providers/ssn/no_NO/__init__.py
index 05ce2f78..ff0d8386 100644
--- a/faker/providers/ssn/no_NO/__init__.py
+++ b/faker/providers/ssn/no_NO/__init__.py
@@ -60,18 +60,18 @@ class Provider(SsnProvider):
 
         while True:
             if 1900 <= birthday.year <= 1999:
-                suffix = str(self.generator.random.randrange(0, 49))
+                suffix = self.generator.random.randrange(0, 49)
             elif 1854 <= birthday.year <= 1899:
-                suffix = str(self.generator.random.randrange(50, 74))
+                suffix = self.generator.random.randrange(50, 74)
             elif 2000 <= birthday.year <= 2039:
-                suffix = str(self.generator.random.randrange(50, 99))
+                suffix = self.generator.random.randrange(50, 99)
             elif 1940 <= birthday.year <= 1999:
-                suffix = str(self.generator.random.randrange(90, 99))
+                suffix = self.generator.random.randrange(90, 99)
             if gender == "F":
                 gender_num = self.generator.random.choice((0, 2, 4, 6, 8))
             elif gender == "M":
                 gender_num = self.generator.random.choice((1, 3, 5, 7, 9))
-            pnr = birthday.strftime("%d%m%y") + suffix.zfill(2) + str(gender_num)
+            pnr = f"{birthday:%d%m%y}{suffix:02}{gender_num}"
             pnr_nums = [int(ch) for ch in pnr]
             k1 = checksum(Provider.scale1, pnr_nums)
             k2 = checksum(Provider.scale2, pnr_nums + [k1])
diff --git a/faker/providers/ssn/pl_PL/__init__.py b/faker/providers/ssn/pl_PL/__init__.py
index a0d4199d..d56892b3 100644
--- a/faker/providers/ssn/pl_PL/__init__.py
+++ b/faker/providers/ssn/pl_PL/__init__.py
@@ -23,8 +23,7 @@ def calculate_month(birth_date: datetime) -> int:
     """
     Calculates and returns a month number basing on PESEL standard.
     """
-    year = int(birth_date.strftime("%Y"))
-    month = int(birth_date.strftime("%m")) + ((int(year / 100) - 14) % 5) * 20
+    month = birth_date.month + ((birth_date.year // 100 - 14) % 5) * 20
 
     return month
 
@@ -43,17 +42,10 @@ class Provider(SsnProvider):
         """
         birth_date = self.generator.date_time()
 
-        year_without_century = int(birth_date.strftime("%y"))
-        month = calculate_month(birth_date)
-        day = int(birth_date.strftime("%d"))
-
         pesel_digits = [
-            int(year_without_century / 10),
-            year_without_century % 10,
-            int(month / 10),
-            month % 10,
-            int(day / 10),
-            day % 10,
+            *divmod(birth_date.year % 100, 10),
+            *divmod(calculate_month(birth_date), 10),
+            *divmod(birth_date.day, 10),
         ]
 
         for _ in range(4):


Test patch:
diff --git a/tests/providers/test_bank.py b/tests/providers/test_bank.py
index a0692e68..12ccff56 100644
--- a/tests/providers/test_bank.py
+++ b/tests/providers/test_bank.py
@@ -467,17 +467,16 @@ class TestNlBe:
             assert re.fullmatch(r"\d{12}", bban)
             account_number = bban[:-2]
             check_digits = int(bban[-2:])
-            assert (97 - (int(account_number) % 97)) == check_digits or check_digits == 97
+            assert (int(account_number) % 97) == check_digits or check_digits == 97
 
     def test_iban(self, faker, num_samples):
         for _ in range(num_samples):
             iban = faker.iban()
             assert iban[:2] == NlBeBankProvider.country_code
             assert re.fullmatch(r"\d{2}\d{12}", iban[2:])
-            bban = iban[4:]
-            account_number = bban[:-2]
-            check_digits = int(bban[-2:])
-            assert (97 - (int(account_number) % 97)) == check_digits or check_digits == 97
+            rearranged_iban = iban[4:] + iban[:4]
+            numeric_iban = "".join(str(ord(char) - 55) if char.isalpha() else char for char in rearranged_iban)
+            assert int(numeric_iban) % 97 == 1
 
     def test_swift8_use_dataset(self, faker, num_samples):
         for _ in range(num_samples):
diff --git a/tests/providers/test_currency.py b/tests/providers/test_currency.py
index ec3e6431..b9ca42c4 100644
--- a/tests/providers/test_currency.py
+++ b/tests/providers/test_currency.py
@@ -391,6 +391,23 @@ class TestItIt:
             assert isinstance(pricetag, str)
 
 
+class TestNgNg:
+    """Test ng_NG currency provider"""
+
+    num_samples = 100
+
+    @classmethod
+    def setup_class(cls):
+        from faker.providers.currency.ng_NG import Provider as NgNgCurrencyProvider
+
+        cls.provider = NgNgCurrencyProvider
+
+    def test_pricetag(self, faker, num_samples):
+        for _ in range(num_samples):
+            pricetag = faker.pricetag()
+            assert isinstance(pricetag, str)
+
+
 class TestPlPl:
     """Test pl_PL currency provider"""
 
diff --git a/tests/providers/test_person.py b/tests/providers/test_person.py
index a47c6cca..64a10dfc 100644
--- a/tests/providers/test_person.py
+++ b/tests/providers/test_person.py
@@ -434,6 +434,7 @@ class TestEnPk(unittest.TestCase):
     def test_last_name(self):
         """Test if the last name is from the predefined list."""
         last_name = self.fake.last_name()
+        self.assertGreater(len(last_name), 1, "Last name should have more than 1 character.")
         self.assertIn(last_name, EnPKprovider.last_names)
 
     def test_full_name(self):
@@ -448,8 +449,20 @@ class TestEnPk(unittest.TestCase):
         name = self.fake.name()
         name_parts = name.split()
         self.assertGreaterEqual(len(name_parts), 2, "Full name should have at least a first and last name.")
-        self.assertIn(name_parts[0], EnPKprovider.first_names)
-        self.assertIn(name_parts[-1], EnPKprovider.last_names)
+        if len(name_parts) == 2:
+            self.assertIn(name_parts[0], EnPKprovider.first_names)
+            self.assertIn(name_parts[-1], EnPKprovider.last_names)
+        elif len(name_parts) == 4:
+            self.assertIn(name_parts[:2], EnPKprovider.first_names)
+            self.assertIn(name_parts[2:], EnPKprovider.last_names)
+        elif len(name_parts) == 3:
+            assert (
+                " ".join(name_parts[:2]) in EnPKprovider.first_names
+                and " ".join(name_parts[2]) in EnPKprovider.last_names
+            ) or (
+                " ".join(name_parts[:1]) in EnPKprovider.first_names
+                and " ".join(name_parts[1:]) in EnPKprovider.last_names
+            ), "Either first two name parts should be in first names, or last two should be in last names."
 
 
 class TestEnUS(unittest.TestCase):