diff --git a/packages/jsii-pacmak/lib/targets/python.ts b/packages/jsii-pacmak/lib/targets/python.ts index 22f85650c6..241e1657ec 100644 --- a/packages/jsii-pacmak/lib/targets/python.ts +++ b/packages/jsii-pacmak/lib/targets/python.ts @@ -10,7 +10,7 @@ import { Generator, GeneratorOptions } from '../generator'; import { warn } from '../logging'; import { md2rst } from '../markdown'; import { Target } from '../target'; -import { shell } from '../util'; +import { shell, nextMajorVersion } from '../util'; /* eslint-disable @typescript-eslint/no-var-requires */ const spdxLicenseList = require('spdx-license-list'); @@ -1140,18 +1140,7 @@ class Package { const expectedDeps = this.metadata.dependencies || {}; for (const depName of Object.keys(expectedDeps)) { const depInfo = expectedDeps[depName]; - // We need to figure out what our version range is. - // Basically, if it starts with Zero we want to restrict things to - // ~=X.Y.Z. If it does not start with zero, then we want to do ~=X.Y,>=X.Y.Z. - const versionParts = depInfo.version.split('.'); - let versionSpecifier: string; - if (versionParts[0] === '0') { - versionSpecifier = `~=${versionParts.slice(0, 3).join('.')}`; - } else { - versionSpecifier = `~=${versionParts.slice(0, 2).join('.')},>=${versionParts.slice(0, 3).join('.')}`; - } - - dependencies.push(`${depInfo.targets!.python!.distName}${versionSpecifier}`); + dependencies.push(`${depInfo.targets!.python!.distName}==${depInfo.version}`); } code.openFile('README.md'); @@ -1159,7 +1148,8 @@ class Package { code.closeFile('README.md'); // Strip " (build abcdef)" from the jsii version - const jsiiVersionSimple = this.metadata.jsiiVersion.replace(/ .*$/, ''); + const jsiiVersion = this.metadata.jsiiVersion.replace(/ .*$/, ''); + const jsiiNextMajor = nextMajorVersion(jsiiVersion); /* eslint-disable @typescript-eslint/camelcase */ const setupKwargs = { @@ -1179,7 +1169,7 @@ class Package { packages: modules.map(m => m.pythonName), package_data: packageData, python_requires: '>=3.6', - install_requires: [`jsii~=${jsiiVersionSimple}`, 'publication>=0.0.3'].concat(dependencies), + install_requires: [`jsii~=${jsiiVersion},<${jsiiNextMajor}`, 'publication>=0.0.3'].concat(dependencies), classifiers: [ 'Intended Audience :: Developers', 'Operating System :: OS Independent', diff --git a/packages/jsii-pacmak/test/expected.jsii-calc-base-of-base/python/setup.py b/packages/jsii-pacmak/test/expected.jsii-calc-base-of-base/python/setup.py index 863ee9311e..76032bd07b 100644 --- a/packages/jsii-pacmak/test/expected.jsii-calc-base-of-base/python/setup.py +++ b/packages/jsii-pacmak/test/expected.jsii-calc-base-of-base/python/setup.py @@ -30,7 +30,7 @@ }, "python_requires": ">=3.6", "install_requires": [ - "jsii~=0.20.2", + "jsii~=0.20.2,<0.21.0", "publication>=0.0.3" ], "classifiers": [ diff --git a/packages/jsii-pacmak/test/expected.jsii-calc-base/python/setup.py b/packages/jsii-pacmak/test/expected.jsii-calc-base/python/setup.py index 640c735d1b..a0ed5d0a27 100644 --- a/packages/jsii-pacmak/test/expected.jsii-calc-base/python/setup.py +++ b/packages/jsii-pacmak/test/expected.jsii-calc-base/python/setup.py @@ -30,9 +30,9 @@ }, "python_requires": ">=3.6", "install_requires": [ - "jsii~=0.20.2", + "jsii~=0.20.2,<0.21.0", "publication>=0.0.3", - "scope.jsii-calc-base-of-base~=0.20.2" + "scope.jsii-calc-base-of-base==0.20.2" ], "classifiers": [ "Intended Audience :: Developers", diff --git a/packages/jsii-pacmak/test/expected.jsii-calc-lib/python/setup.py b/packages/jsii-pacmak/test/expected.jsii-calc-lib/python/setup.py index dd04aa7091..486fe8b499 100644 --- a/packages/jsii-pacmak/test/expected.jsii-calc-lib/python/setup.py +++ b/packages/jsii-pacmak/test/expected.jsii-calc-lib/python/setup.py @@ -30,9 +30,9 @@ }, "python_requires": ">=3.6", "install_requires": [ - "jsii~=0.20.2", + "jsii~=0.20.2,<0.21.0", "publication>=0.0.3", - "scope.jsii-calc-base~=0.20.2" + "scope.jsii-calc-base==0.20.2" ], "classifiers": [ "Intended Audience :: Developers", diff --git a/packages/jsii-pacmak/test/expected.jsii-calc/python/setup.py b/packages/jsii-pacmak/test/expected.jsii-calc/python/setup.py index e0a801490c..137dce5e4e 100644 --- a/packages/jsii-pacmak/test/expected.jsii-calc/python/setup.py +++ b/packages/jsii-pacmak/test/expected.jsii-calc/python/setup.py @@ -30,11 +30,11 @@ }, "python_requires": ">=3.6", "install_requires": [ - "jsii~=0.20.2", + "jsii~=0.20.2,<0.21.0", "publication>=0.0.3", - "scope.jsii-calc-base~=0.20.2", - "scope.jsii-calc-base-of-base~=0.20.2", - "scope.jsii-calc-lib~=0.20.2" + "scope.jsii-calc-base==0.20.2", + "scope.jsii-calc-base-of-base==0.20.2", + "scope.jsii-calc-lib==0.20.2" ], "classifiers": [ "Intended Audience :: Developers",