@nxlv/python
Supply chain provenance
Status for the latest visible version.
Maintainers
Accepted risks
Findings the reviewer chose to accept rather than block on.
| Source | Rule | Reason | Accepted by | When |
|---|---|---|---|---|
| semgrep | semgrep:env-spread | AI (semgrep): All instances are in .spec.ts test files; spreading process.env for subprocess test fixtures is standard and not a runtime risk. | ai | |
| phantom-deps | phantom-dep:tslib | AI (phantom-deps): tslib is a known implicit TypeScript runtime dependency; declared in package.json dependencies. | ai | |
| semgrep | semgrep:child-process-import | AI (semgrep): NX executor package legitimately spawns child processes to run Python tooling; stable pattern across versions. | ai |
Versions (showing 17 of 17)
| Version | Deps | Published |
|---|---|---|
| 22.2.0 | 17 / 0 | |
| 22.1.4 | 14 / 0 | |
| 22.1.3 | 14 / 0 | |
| 22.1.2 | 14 / 0 | |
| 22.1.1 | 14 / 0 | |
| 22.1.0 | 14 / 0 | |
| 22.0.5 | 14 / 0 | |
| 22.0.4 | 14 / 0 | |
| 22.0.3 | 14 / 0 | |
| 22.0.2 | 14 / 0 | |
| 22.0.1 | 14 / 0 | |
| 22.0.0 | 14 / 0 | |
| 21.3.1 | 16 / 0 | |
| 21.3.0 | 16 / 0 | |
| 21.2.3 | 15 / 0 | |
| 21.2.2 | 15 / 0 | |
| 21.2.1 | 15 / 0 |
v22.2.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v22.1.4
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v22.1.3
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v22.1.2
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v22.1.1
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v22.1.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v22.0.5
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v22.0.4
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v22.0.3
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v22.0.2
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v22.0.1
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v22.0.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v21.3.1
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v21.3.0
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v21.2.3
1 findingPublished via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v21.2.2
16 findingsSpreading entire process.env into an object — may capture all secrets 182 | cwd: 'apps/app', 183 | shell: false, > 184 | env: { 185 | ...process.env, 186 | POETRY_CACHE_DIR: path.resolve('apps/app/.cache/pypoetry'),
Spreading entire process.env into an object — may capture all secrets 208 | shell: false, 209 | cwd: 'apps/app', > 210 | env: { 211 | ...process.env, 212 | POETRY_CACHE_DIR: path.resolve('apps/app/.cache/pypoetry'),
Spreading entire process.env into an object — may capture all secrets 208 | cwd: 'apps/app', 209 | shell: false, > 210 | env: { 211 | ...process.env, 212 | POETRY_CACHE_DIR: path.resolve('apps/app/.cache/pypoetry'),
Spreading entire process.env into an object — may capture all secrets 281 | shell: false, 282 | cwd: 'apps/app', > 283 | env: { 284 | ...process.env, 285 | POETRY_CACHE_DIR: path.resolve('apps/app/.cache/pypoetry'),
Spreading entire process.env into an object — may capture all secrets 188 | expect(childProcessMocks.spawn).toHaveBeenCalledWith('poetry publish', { 189 | cwd: 'tmp', > 190 | env: { ...process.env, FORCE_COLOR: 'true' }, 191 | shell: true, 192 | stdio: ['inherit', 'pipe', 'pipe'],
Spreading entire process.env into an object — may capture all secrets 237 | { 238 | cwd: 'tmp', > 239 | env: { ...process.env, FORCE_COLOR: 'true' }, 240 | shell: true, 241 | stdio: ['inherit', 'pipe', 'pipe'],
Spreading entire process.env into an object — may capture all secrets 287 | { 288 | cwd: 'tmp', > 289 | env: { ...process.env, FORCE_COLOR: 'true' }, 290 | shell: true, 291 | stdio: ['inherit', 'pipe', 'pipe'],
Spreading entire process.env into an object — may capture all secrets 340 | expect(childProcessMocks.spawn).toHaveBeenCalledWith('poetry publish', { 341 | cwd: 'tmp', > 342 | env: { ...process.env, FORCE_COLOR: 'true' }, 343 | shell: true, 344 | stdio: ['inherit', 'pipe', 'pipe'],
Spreading entire process.env into an object — may capture all secrets 392 | expect(childProcessMocks.spawn).toHaveBeenCalledWith('poetry publish', { 393 | cwd: 'tmp', > 394 | env: { ...process.env, FORCE_COLOR: 'true' }, 395 | shell: true, 396 | stdio: ['inherit', 'pipe', 'pipe'],
Spreading entire process.env into an object — may capture all secrets 194 | cwd: 'apps/app', 195 | shell: false, > 196 | env: { 197 | ...process.env, 198 | POETRY_CACHE_DIR: path.resolve('apps/app/.cache/pypoetry'),
Spreading entire process.env into an object — may capture all secrets 238 | shell: false, 239 | cwd: 'apps/app', > 240 | env: { 241 | ...process.env, 242 | POETRY_CACHE_DIR: path.resolve('apps/app/.cache/pypoetry'),
Spreading entire process.env into an object — may capture all secrets 16 | return new Promise((resolve, reject) => { 17 | console.log(`Running command: ${command}`); > 18 | const env: Record<string, string> = { 19 | ...process.env, 20 | ...(envVars ?? {}),
Spreading entire process.env into an object — may capture all secrets 515 | 516 | if (options?.cacheDir) { > 517 | execOpts.env = { 518 | ...process.env, 519 | POETRY_CACHE_DIR: path.resolve(options.cacheDir),
Spreading entire process.env into an object — may capture all secrets 593 | 594 | if (options.cacheDir) { > 595 | execOptions.env = { 596 | ...process.env, 597 | POETRY_CACHE_DIR: path.resolve(options.cacheDir),
Spreading entire process.env into an object — may capture all secrets 666 | 667 | if (options?.cacheDir) { > 668 | execOptions.env = { 669 | ...process.env, 670 | POETRY_CACHE_DIR: path.resolve(options.cacheDir),
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.
v21.2.1
16 findingsSpreading entire process.env into an object — may capture all secrets 182 | cwd: 'apps/app', 183 | shell: false, > 184 | env: { 185 | ...process.env, 186 | POETRY_CACHE_DIR: path.resolve('apps/app/.cache/pypoetry'),
Spreading entire process.env into an object — may capture all secrets 208 | shell: false, 209 | cwd: 'apps/app', > 210 | env: { 211 | ...process.env, 212 | POETRY_CACHE_DIR: path.resolve('apps/app/.cache/pypoetry'),
Spreading entire process.env into an object — may capture all secrets 208 | cwd: 'apps/app', 209 | shell: false, > 210 | env: { 211 | ...process.env, 212 | POETRY_CACHE_DIR: path.resolve('apps/app/.cache/pypoetry'),
Spreading entire process.env into an object — may capture all secrets 281 | shell: false, 282 | cwd: 'apps/app', > 283 | env: { 284 | ...process.env, 285 | POETRY_CACHE_DIR: path.resolve('apps/app/.cache/pypoetry'),
Spreading entire process.env into an object — may capture all secrets 188 | expect(childProcessMocks.spawn).toHaveBeenCalledWith('poetry publish', { 189 | cwd: 'tmp', > 190 | env: { ...process.env, FORCE_COLOR: 'true' }, 191 | shell: true, 192 | stdio: ['inherit', 'pipe', 'pipe'],
Spreading entire process.env into an object — may capture all secrets 237 | { 238 | cwd: 'tmp', > 239 | env: { ...process.env, FORCE_COLOR: 'true' }, 240 | shell: true, 241 | stdio: ['inherit', 'pipe', 'pipe'],
Spreading entire process.env into an object — may capture all secrets 287 | { 288 | cwd: 'tmp', > 289 | env: { ...process.env, FORCE_COLOR: 'true' }, 290 | shell: true, 291 | stdio: ['inherit', 'pipe', 'pipe'],
Spreading entire process.env into an object — may capture all secrets 340 | expect(childProcessMocks.spawn).toHaveBeenCalledWith('poetry publish', { 341 | cwd: 'tmp', > 342 | env: { ...process.env, FORCE_COLOR: 'true' }, 343 | shell: true, 344 | stdio: ['inherit', 'pipe', 'pipe'],
Spreading entire process.env into an object — may capture all secrets 392 | expect(childProcessMocks.spawn).toHaveBeenCalledWith('poetry publish', { 393 | cwd: 'tmp', > 394 | env: { ...process.env, FORCE_COLOR: 'true' }, 395 | shell: true, 396 | stdio: ['inherit', 'pipe', 'pipe'],
Spreading entire process.env into an object — may capture all secrets 194 | cwd: 'apps/app', 195 | shell: false, > 196 | env: { 197 | ...process.env, 198 | POETRY_CACHE_DIR: path.resolve('apps/app/.cache/pypoetry'),
Spreading entire process.env into an object — may capture all secrets 238 | shell: false, 239 | cwd: 'apps/app', > 240 | env: { 241 | ...process.env, 242 | POETRY_CACHE_DIR: path.resolve('apps/app/.cache/pypoetry'),
Spreading entire process.env into an object — may capture all secrets 16 | return new Promise((resolve, reject) => { 17 | console.log(`Running command: ${command}`); > 18 | const env: Record<string, string> = { 19 | ...process.env, 20 | ...(envVars ?? {}),
Spreading entire process.env into an object — may capture all secrets 515 | 516 | if (options?.cacheDir) { > 517 | execOpts.env = { 518 | ...process.env, 519 | POETRY_CACHE_DIR: path.resolve(options.cacheDir),
Spreading entire process.env into an object — may capture all secrets 593 | 594 | if (options.cacheDir) { > 595 | execOptions.env = { 596 | ...process.env, 597 | POETRY_CACHE_DIR: path.resolve(options.cacheDir),
Spreading entire process.env into an object — may capture all secrets 666 | 667 | if (options?.cacheDir) { > 668 | execOptions.env = { 669 | ...process.env, 670 | POETRY_CACHE_DIR: path.resolve(options.cacheDir),
Published via CI/CD with Sigstore attestation (predicate: https://slsa.dev/provenance/v1). This is the strongest supply chain integrity signal.