diff --git a/src/poetry/core/version/pep440/version.py b/src/poetry/core/version/pep440/version.py
index c1252a6f4..ab71c9e66 100644
--- a/src/poetry/core/version/pep440/version.py
+++ b/src/poetry/core/version/pep440/version.py
@@ -205,7 +205,7 @@ def next_major(self: T) -> T:
         release = self.release
         if self.is_stable() or Release(self.release.major, 0, 0) < self.release:
             release = self.release.next_major()
-        return self.__class__(epoch=self.epoch, release=release)
+        return self.__class__(epoch=self.epoch, release=release, local=self.local)
 
     def next_minor(self: T) -> T:
         release = self.release
@@ -214,12 +214,13 @@ def next_minor(self: T) -> T:
             or Release(self.release.major, self.release.minor, 0) < self.release
         ):
             release = self.release.next_minor()
-        return self.__class__(epoch=self.epoch, release=release)
+        return self.__class__(epoch=self.epoch, release=release, local=self.local)
 
     def next_patch(self: T) -> T:
         return self.__class__(
             epoch=self.epoch,
             release=self.release.next_patch() if self.is_stable() else self.release,
+            local=self.local,
         )
 
     def next_prerelease(self: T, next_phase: bool = False) -> PEP440Version:
@@ -228,7 +229,9 @@ def next_prerelease(self: T, next_phase: bool = False) -> PEP440Version:
             pre = self.pre.next_phase() if next_phase else self.pre.next()
         else:
             pre = ReleaseTag(RELEASE_PHASE_ID_ALPHA)
-        return self.__class__(epoch=self.epoch, release=self.release, pre=pre)
+        return self.__class__(
+            epoch=self.epoch, release=self.release, pre=pre, local=self.local
+        )
 
     def next_postrelease(self: T) -> T:
         if self.is_postrelease():
@@ -242,6 +245,7 @@ def next_postrelease(self: T) -> T:
             pre=self.pre,
             dev=self.dev,
             post=post,
+            local=self.local,
         )
 
     def next_devrelease(self: T) -> T:
@@ -256,6 +260,7 @@ def next_devrelease(self: T) -> T:
             pre=self.pre,
             post=self.post,
             dev=dev,
+            local=self.local,
         )
 
     def first_prerelease(self: T) -> T:
@@ -263,6 +268,7 @@ def first_prerelease(self: T) -> T:
             epoch=self.epoch,
             release=self.release,
             pre=ReleaseTag(RELEASE_PHASE_ID_ALPHA),
+            local=self.local,
         )
 
     def replace(self: T, **kwargs: Any) -> T:
diff --git a/tests/semver/test_parse_constraint.py b/tests/semver/test_parse_constraint.py
index ae6f2d3a1..9e8bbaf2d 100644
--- a/tests/semver/test_parse_constraint.py
+++ b/tests/semver/test_parse_constraint.py
@@ -246,6 +246,45 @@
                 include_min=True,
             ),
         ),
+        (
+            "^1.10+cu113",
+            VersionRange(
+                min=Version.from_parts(1, 10, local="cu113"),
+                max=Version.from_parts(2, 0, local="cu113"),
+                include_min=True,
+            ),
+        ),
+        (
+            "~1.10.0+cu113",
+            VersionRange(
+                min=Version.from_parts(1, 10, 0, local="cu113"),
+                max=Version.from_parts(1, 11, 0, local="cu113"),
+                include_min=True,
+            ),
+        ),
+        (
+            ">=1.10.0+cu113",
+            VersionRange(
+                min=Version.from_parts(1, 10, 0, local="cu113"),
+                include_min=True,
+            ),
+        ),
+        (
+            ">=1.10.0+cu113,<2.0",
+            VersionRange(
+                min=Version.from_parts(1, 10, 0, local="cu113"),
+                max=Version.from_parts(2, 0),
+                include_min=True,
+            ),
+        ),
+        (
+            ">=1.10.0+cu113,<2.0+cu113",
+            VersionRange(
+                min=Version.from_parts(1, 10, 0, local="cu113"),
+                max=Version.from_parts(2, 0, local="cu113"),
+                include_min=True,
+            ),
+        ),
     ],
 )
 @pytest.mark.parametrize(("with_whitespace_padding",), [(True,), (False,)])
