Repository: MasoniteFramework/orm (language: python)

Issue:
Update to Pendulum 3
**Describe the bug**
I'm trying to use the package with Python 3.12 but the pendulum dependencie doesn't allow it. 
Is there any reason why it is locked at pendulum>=2.1,<2.2? I think it could be updated without any major change.

**To Reproduce**
Steps to reproduce the behavior:
1. Use Python 3.12
2. pip install masonite-orm
3. See error

**Expected behavior**
Be able to use Masonite with Python 3.12

**Desktop (please complete the following information):**
 - OS: Mac OS
 - Version 14.3.1
 - 
**What database are you using?**
 - Type: MySQL
 - Version 8
 - Masonite ORM v2.20.0

**Additional context**
Any other steps you are doing or any other related information that will help us debug the problem please put here.



Discussion / hints:
Pendulum 3 i believe is a breaking change. so to fix this ill need to fix this and then upgrade the package to from version 2.x to version 3.x.

although this needs to be solved its not as simple as just bumping the pendulum version

Fix patch:
diff --git a/requirements.txt b/requirements.txt
index a2188f67..aba4fd5b 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,6 +1,6 @@
 inflection==0.3.1
 psycopg2-binary
 pyodbc
-pendulum>=2.1,<2.2
+pendulum>=2.1,<3.1
 cleo>=0.8.0,<0.9
 python-dotenv==0.14.0
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 8c55fd2b..f1334781 100644
--- a/setup.py
+++ b/setup.py
@@ -30,7 +30,7 @@
     # https://packaging.python.org/en/latest/requirements.html
     install_requires=[
         "inflection>=0.3,<0.6",
-        "pendulum>=2.1,<2.2",
+        "ppendulum>=2.1,<3.1",
         "faker>=4.1.0,<14.0",
         "cleo>=0.8.0,<0.9",
     ],


Test patch:
diff --git a/tests/models/test_models.py b/tests/models/test_models.py
index a842a265..c2586b24 100644
--- a/tests/models/test_models.py
+++ b/tests/models/test_models.py
@@ -191,8 +191,8 @@ def test_only_method(self):
             {"id": 1, "username": "joe", "name": "Joe", "admin": True}
         )
 
-        self.assertEquals({"username": "joe"}, model.only("username"))
-        self.assertEquals({"username": "joe"}, model.only(["username"]))
+        self.assertEqual({"username": "joe"}, model.only("username"))
+        self.assertEqual({"username": "joe"}, model.only(["username"]))
 
     def test_model_update_without_changes_at_all(self):
         model = ModelTest.hydrate(