diff --git a/lib/versioning/poetry/index.spec.ts b/lib/versioning/poetry/index.spec.ts
index b6d0f96a6091ecea865ad8b68f0ca0cb7f342a04..94862bfad48da9f7faa13a87ef8ec1742f386e04 100644
--- a/lib/versioning/poetry/index.spec.ts
+++ b/lib/versioning/poetry/index.spec.ts
@@ -457,4 +457,14 @@ describe('semver.getNewValue()', () => {
       })
     ).toEqual('~2');
   });
+  it('widens range', () => {
+    expect(
+      semver.getNewValue({
+        currentValue: '^2.2',
+        rangeStrategy: 'widen',
+        fromVersion: '2.2.0',
+        toVersion: '3.0.0',
+      })
+    ).toEqual('^2.2 || ^3.0.0');
+  });
 });
diff --git a/lib/versioning/poetry/index.ts b/lib/versioning/poetry/index.ts
index 898184883ec7cc9086e988a811e4403c533988c1..19adea10d45a120d98283038558c033e74f9b22d 100644
--- a/lib/versioning/poetry/index.ts
+++ b/lib/versioning/poetry/index.ts
@@ -40,7 +40,7 @@ function npm2poetry(input: string): string {
       res.splice(i, 2, newValue);
     }
   }
-  return res.join(', ');
+  return res.join(', ').replace(/\s*,?\s*\|\|\s*,?\s*/, ' || ');
 }
 
 const isLessThanRange = (version: string, range: string): boolean =>