Skip to content

Commit

Permalink
Embed dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
alexey-medvedchikov committed Mar 15, 2023
1 parent 67b64c7 commit 52e356f
Show file tree
Hide file tree
Showing 90 changed files with 29,316 additions and 39 deletions.
1 change: 1 addition & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ commands:
environment:
PIP_VER: << parameters.pip_version >>
PYTHON_VER: << parameters.python_version >>
PYTHONPATH: ~/snyk-python-plugin

jobs:
install:
Expand Down
1 change: 1 addition & 0 deletions dev-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ pipenv==2018.11.26; python_version == '2.7'
virtualenv==20.15.1; python_version >= '3.6'
virtualenv==16.2.0; python_version == '2.7'
mock
railroad
27 changes: 6 additions & 21 deletions lib/dependencies/inspect-implementation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import * as fs from 'fs';
import * as path from 'path';
import * as tmp from 'tmp';

import PySrcContents from './pysrc';
import * as subProcess from './sub-process';
import { DepGraph } from '@snyk/dep-graph';
import { buildDepGraph, PartialDepTree } from './build-dep-graph';
Expand Down Expand Up @@ -38,7 +39,10 @@ export function getMetaData(
const pythonEnv = getPythonEnv(targetFile);

return subProcess
.execute(command, [...baseargs, '--version'], { cwd: root, env: pythonEnv })
.execute(command, [...baseargs, '--version'], {
cwd: root,
env: pythonEnv,
})
.then((output) => {
return {
name: 'snyk-python-plugin',
Expand All @@ -51,26 +55,7 @@ export function getMetaData(
// path.join calls have to be exactly in this format, needed by "pkg" to build a standalone Snyk CLI binary:
// https://www.npmjs.com/package/pkg#detecting-assets-in-source-code
function createAssets() {
return [
path.join(__dirname, '../../pysrc/pip_resolve.py'),
path.join(__dirname, '../../pysrc/distPackage.py'),
path.join(__dirname, '../../pysrc/package.py'),
path.join(__dirname, '../../pysrc/pipfile.py'),
path.join(__dirname, '../../pysrc/reqPackage.py'),
path.join(__dirname, '../../pysrc/setup_file.py'),
path.join(__dirname, '../../pysrc/utils.py'),

path.join(__dirname, '../../pysrc/requirements/fragment.py'),
path.join(__dirname, '../../pysrc/requirements/parser.py'),
path.join(__dirname, '../../pysrc/requirements/requirement.py'),
path.join(__dirname, '../../pysrc/requirements/vcs.py'),
path.join(__dirname, '../../pysrc/requirements/__init__.py'),

path.join(__dirname, '../../pysrc/pytoml/__init__.py'),
path.join(__dirname, '../../pysrc/pytoml/core.py'),
path.join(__dirname, '../../pysrc/pytoml/parser.py'),
path.join(__dirname, '../../pysrc/pytoml/writer.py'),
];
return PySrcContents;
}

function writeFile(writeFilePath: string, contents: string) {
Expand Down
103 changes: 103 additions & 0 deletions lib/dependencies/pysrc.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
import * as path from 'path';

const PySrcContents = [
path.join(__dirname, '../../pysrc/README.md'),
path.join(__dirname, '../../pysrc/__init__.py'),
path.join(__dirname, '../../pysrc/_vendor/importlib_resources/LICENSE'),
path.join(__dirname, '../../pysrc/_vendor/importlib_resources/__init__.py'),
path.join(__dirname, '../../pysrc/_vendor/importlib_resources/_adapters.py'),
path.join(__dirname, '../../pysrc/_vendor/importlib_resources/_common.py'),
path.join(__dirname, '../../pysrc/_vendor/importlib_resources/_compat.py'),
path.join(__dirname, '../../pysrc/_vendor/importlib_resources/_itertools.py'),
path.join(__dirname, '../../pysrc/_vendor/importlib_resources/_legacy.py'),
path.join(__dirname, '../../pysrc/_vendor/importlib_resources/abc.py'),
path.join(__dirname, '../../pysrc/_vendor/importlib_resources/py.typed'),
path.join(__dirname, '../../pysrc/_vendor/importlib_resources/readers.py'),
path.join(__dirname, '../../pysrc/_vendor/importlib_resources/simple.py'),
path.join(__dirname, '../../pysrc/_vendor/jaraco.context.LICENSE'),
path.join(__dirname, '../../pysrc/_vendor/jaraco.functools.LICENSE'),
path.join(__dirname, '../../pysrc/_vendor/jaraco.pyi'),
path.join(__dirname, '../../pysrc/_vendor/jaraco.text.LICENSE'),
path.join(__dirname, '../../pysrc/_vendor/jaraco/context.py'),
path.join(__dirname, '../../pysrc/_vendor/jaraco/functools.py'),
path.join(__dirname, '../../pysrc/_vendor/jaraco/text/Lorem ipsum.txt'),
path.join(__dirname, '../../pysrc/_vendor/jaraco/text/__init__.py'),
path.join(__dirname, '../../pysrc/_vendor/more_itertools/LICENSE'),
path.join(__dirname, '../../pysrc/_vendor/more_itertools/__init__.py'),
path.join(__dirname, '../../pysrc/_vendor/more_itertools/__init__.pyi'),
path.join(__dirname, '../../pysrc/_vendor/more_itertools/more.py'),
path.join(__dirname, '../../pysrc/_vendor/more_itertools/more.pyi'),
path.join(__dirname, '../../pysrc/_vendor/more_itertools/py.typed'),
path.join(__dirname, '../../pysrc/_vendor/more_itertools/recipes.py'),
path.join(__dirname, '../../pysrc/_vendor/more_itertools/recipes.pyi'),
path.join(__dirname, '../../pysrc/_vendor/packaging/LICENSE'),
path.join(__dirname, '../../pysrc/_vendor/packaging/LICENSE.APACHE'),
path.join(__dirname, '../../pysrc/_vendor/packaging/LICENSE.BSD'),
path.join(__dirname, '../../pysrc/_vendor/packaging/__about__.py'),
path.join(__dirname, '../../pysrc/_vendor/packaging/__init__.py'),
path.join(__dirname, '../../pysrc/_vendor/packaging/_manylinux.py'),
path.join(__dirname, '../../pysrc/_vendor/packaging/_musllinux.py'),
path.join(__dirname, '../../pysrc/_vendor/packaging/_structures.py'),
path.join(__dirname, '../../pysrc/_vendor/packaging/markers.py'),
path.join(__dirname, '../../pysrc/_vendor/packaging/py.typed'),
path.join(__dirname, '../../pysrc/_vendor/packaging/requirements.py'),
path.join(__dirname, '../../pysrc/_vendor/packaging/specifiers.py'),
path.join(__dirname, '../../pysrc/_vendor/packaging/tags.py'),
path.join(__dirname, '../../pysrc/_vendor/packaging/utils.py'),
path.join(__dirname, '../../pysrc/_vendor/packaging/version.py'),
path.join(__dirname, '../../pysrc/_vendor/pkg_resources.pyi'),
path.join(__dirname, '../../pysrc/_vendor/pkg_resources/LICENSE'),
path.join(__dirname, '../../pysrc/_vendor/pkg_resources/__init__.py'),
path.join(__dirname, '../../pysrc/_vendor/platformdirs/LICENSE'),
path.join(__dirname, '../../pysrc/_vendor/platformdirs/__init__.py'),
path.join(__dirname, '../../pysrc/_vendor/platformdirs/__main__.py'),
path.join(__dirname, '../../pysrc/_vendor/platformdirs/android.py'),
path.join(__dirname, '../../pysrc/_vendor/platformdirs/api.py'),
path.join(__dirname, '../../pysrc/_vendor/platformdirs/macos.py'),
path.join(__dirname, '../../pysrc/_vendor/platformdirs/py.typed'),
path.join(__dirname, '../../pysrc/_vendor/platformdirs/unix.py'),
path.join(__dirname, '../../pysrc/_vendor/platformdirs/version.py'),
path.join(__dirname, '../../pysrc/_vendor/platformdirs/windows.py'),
path.join(__dirname, '../../pysrc/_vendor/pyparsing/LICENSE'),
path.join(__dirname, '../../pysrc/_vendor/pyparsing/__init__.py'),
path.join(__dirname, '../../pysrc/_vendor/pyparsing/actions.py'),
path.join(__dirname, '../../pysrc/_vendor/pyparsing/common.py'),
path.join(__dirname, '../../pysrc/_vendor/pyparsing/core.py'),
path.join(__dirname, '../../pysrc/_vendor/pyparsing/exceptions.py'),
path.join(__dirname, '../../pysrc/_vendor/pyparsing/helpers.py'),
path.join(__dirname, '../../pysrc/_vendor/pyparsing/py.typed'),
path.join(__dirname, '../../pysrc/_vendor/pyparsing/results.py'),
path.join(__dirname, '../../pysrc/_vendor/pyparsing/testing.py'),
path.join(__dirname, '../../pysrc/_vendor/pyparsing/unicode.py'),
path.join(__dirname, '../../pysrc/_vendor/pyparsing/util.py'),
path.join(__dirname, '../../pysrc/_vendor/typing_extensions.LICENSE'),
path.join(__dirname, '../../pysrc/_vendor/typing_extensions.py'),
path.join(__dirname, '../../pysrc/_vendor/typing_extensions.pyi'),
path.join(__dirname, '../../pysrc/_vendor/vendor.txt'),
path.join(__dirname, '../../pysrc/_vendor/zipp.LICENSE'),
path.join(__dirname, '../../pysrc/_vendor/zipp.py'),
path.join(__dirname, '../../pysrc/_vendor/zipp.pyi'),
path.join(__dirname, '../../pysrc/distPackage.py'),
path.join(__dirname, '../../pysrc/package.py'),
path.join(__dirname, '../../pysrc/pip_resolve.py'),
path.join(__dirname, '../../pysrc/pipfile.py'),
path.join(__dirname, '../../pysrc/pytoml/LICENSE'),
path.join(__dirname, '../../pysrc/pytoml/README.txt'),
path.join(__dirname, '../../pysrc/pytoml/__init__.py'),
path.join(__dirname, '../../pysrc/pytoml/core.py'),
path.join(__dirname, '../../pysrc/pytoml/parser.py'),
path.join(__dirname, '../../pysrc/pytoml/writer.py'),
path.join(__dirname, '../../pysrc/reqPackage.py'),
path.join(__dirname, '../../pysrc/requirements/LICENSE'),
path.join(__dirname, '../../pysrc/requirements/README.txt'),
path.join(__dirname, '../../pysrc/requirements/__init__.py'),
path.join(__dirname, '../../pysrc/requirements/fragment.py'),
path.join(__dirname, '../../pysrc/requirements/parser.py'),
path.join(__dirname, '../../pysrc/requirements/requirement.py'),
path.join(__dirname, '../../pysrc/requirements/vcs.py'),
path.join(__dirname, '../../pysrc/setup_file.py'),
path.join(__dirname, '../../pysrc/test_pip_resolve.py'),
path.join(__dirname, '../../pysrc/utils.py'),
];

export default PySrcContents;
30 changes: 30 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
[tool.vendoring]
destination = "src/pip/_vendor/"
requirements = "src/pip/_vendor/vendor.txt"
namespace = "pysrc._vendor"

protected-files = ["__init__.py", "vendor.txt"]
patches-dir = "tools/vendoring"

[tool.vendoring.transformations]
substitute = [
{ match='pkg_resources\.extern', replace="pysrc._vendor" },
{ match='from \.extern', replace="from pysrc._vendor" },
]
drop = [
"bin/",
"setuptools/",
"importlib_resources/tests/",
"pkg_resources/_vendor/",
"pkg_resources/extern/",
"pyparsing/diagram",
"_distutils_hack",
"distutils-precedence.pth",
]

[tool.vendoring.typing-stubs]
six = ["six.__init__", "six.moves.__init__", "six.moves.configparser"]
distro = []

[tool.vendoring.license.directories]
setuptools = "pkg_resources"
Empty file added pysrc/__init__.py
Empty file.
Loading

0 comments on commit 52e356f

Please sign in to comment.