1+ [build-system ]
2+ requires = [" setuptools" ]
3+ build-backend = " setuptools.build_meta"
4+
5+ [project ]
6+ name = " scancodeio"
7+ version = " 35.1.0"
8+ description = " Automate software composition analysis pipelines"
9+ readme = " README.rst"
10+ requires-python = " >=3.10,<3.14"
11+ license = " Apache-2.0"
12+ license-files = [" LICENSE" , " NOTICE" , " scan.NOTICE" ]
13+ authors = [
14+ {
name =
" nexB Inc." ,
email =
" [email protected] " }
15+ ]
16+ keywords = [
17+ " open source" , " scan" , " license" , " package" , " dependency" ,
18+ " copyright" , " filetype" , " author" , " extract" , " licensing" ,
19+ " scancode" , " scanpipe" , " docker" , " rootfs" , " vm" ,
20+ " virtual machine" , " pipeline" , " code analysis" , " container"
21+ ]
22+ classifiers = [
23+ " Development Status :: 5 - Production/Stable" ,
24+ " Intended Audience :: Developers" ,
25+ " Intended Audience :: Information Technology" ,
26+ " Intended Audience :: Legal Industry" ,
27+ " Programming Language :: Python" ,
28+ " Programming Language :: Python :: 3 :: Only" ,
29+ " Programming Language :: Python :: 3.10" ,
30+ " Programming Language :: Python :: 3.11" ,
31+ " Programming Language :: Python :: 3.12" ,
32+ " Programming Language :: Python :: 3.13" ,
33+ " Topic :: Utilities"
34+ ]
35+ dependencies = [
36+ " importlib-metadata==8.7.0" ,
37+ " setuptools==80.9.0" ,
38+ # Django related
39+ " Django==5.1.11" ,
40+ " django-environ==0.12.0" ,
41+ " django-crispy-forms==2.4" ,
42+ " crispy-bootstrap3==2024.1" ,
43+ " django-filter==25.1" ,
44+ " djangorestframework==3.16.0" ,
45+ " django-taggit==6.1.0" ,
46+ # Database
47+ " psycopg[binary]==3.2.9" ,
48+ # wait_for_database Django management command
49+ " django-probes==1.7.0" ,
50+ # Task queue
51+ " rq==2.4.0" ,
52+ " django-rq==3.0.1" ,
53+ " redis==6.2.0" ,
54+ # WSGI server
55+ " gunicorn==23.0.0" ,
56+ # Docker
57+ " container-inspector==33.0.0" ,
58+ # ScanCode-toolkit
59+ " scancode-toolkit[packages]==32.4.0" ,
60+ " extractcode[full]==31.0.0" ,
61+ " commoncode==32.3.0" ,
62+ " Beautifulsoup4[chardet]==4.13.4" ,
63+ " packageurl-python==0.17.1" ,
64+ # FetchCode
65+ " fetchcode-container==1.2.3.210512; sys_platform == 'linux'" ,
66+ # Inspectors
67+ " elf-inspector==0.0.3" ,
68+ " go-inspector==0.5.0" ,
69+ " rust-inspector==0.1.0" ,
70+ " binary-inspector==0.1.2" ,
71+ " python-inspector==0.14.0" ,
72+ " source-inspector==0.7.0; sys_platform != 'darwin' and platform_machine != 'arm64'" ,
73+ " aboutcode-toolkit==11.1.1" ,
74+ # Utilities
75+ " XlsxWriter==3.2.5" ,
76+ " openpyxl==3.1.5" ,
77+ " requests==2.32.4" ,
78+ " GitPython==3.1.44" ,
79+ # Profiling
80+ " pyinstrument==5.0.2" ,
81+ # CycloneDX
82+ " cyclonedx-python-lib==10.2.0" ,
83+ " jsonschema==4.24.0" ,
84+ # MatchCode-toolkit
85+ " matchcode-toolkit==7.2.2" ,
86+ # Univers
87+ " univers==31.0.0" ,
88+ # Markdown
89+ " markdown-it-py==3.0.0" ,
90+ " bleach==6.2.0" ,
91+ # Antivirus
92+ " clamd==1.0.2" ,
93+ # FederatedCode
94+ " aboutcode.hashid==0.2.0" ,
95+ # AboutCode pipeline
96+ " aboutcode.pipeline==0.2.1" ,
97+ " scipy==1.15.3"
98+ ]
99+
100+ [project .optional-dependencies ]
101+ dev = [
102+ # Validation
103+ " ruff==0.12.0" ,
104+ " doc8==2.0.0" ,
105+ # Debug
106+ " django-debug-toolbar==5.2.0" ,
107+ # Documentation
108+ " Sphinx==8.1.3" ,
109+ " sphinx-rtd-theme==3.0.2" ,
110+ " sphinx-rtd-dark-mode==1.3.0" ,
111+ " sphinxcontrib-django==2.5" ,
112+ ]
113+ android_analysis = [
114+ " android_inspector==0.0.1"
115+ ]
116+
117+ [project .urls ]
118+ Homepage = " https://github.com/aboutcode-org/scancode.io"
119+ Documentation = " https://scancodeio.readthedocs.io/"
120+ Repository = " https://github.com/aboutcode-org/scancode.io.git"
121+ Issues = " https://github.com/aboutcode-org/scancode.io/issues"
122+ Changelog = " https://github.com/aboutcode-org/scancode.io/blob/main/CHANGELOG.rst"
123+
124+ [project .scripts ]
125+ scanpipe = " scancodeio:command_line"
126+ run = " scancodeio:combined_run"
127+
128+ [project .entry-points ."scancodeio_pipelines" ]
129+ analyze_docker_image = " scanpipe.pipelines.analyze_docker:Docker"
130+ analyze_root_filesystem_or_vm_image = " scanpipe.pipelines.analyze_root_filesystem:RootFS"
131+ analyze_windows_docker_image = " scanpipe.pipelines.analyze_docker_windows:DockerWindows"
132+ collect_strings_gettext = " scanpipe.pipelines.collect_strings_gettext:CollectStringsGettext"
133+ collect_symbols_ctags = " scanpipe.pipelines.collect_symbols_ctags:CollectSymbolsCtags"
134+ collect_symbols_pygments = " scanpipe.pipelines.collect_symbols_pygments:CollectSymbolsPygments"
135+ collect_symbols_tree_sitter = " scanpipe.pipelines.collect_symbols_tree_sitter:CollectSymbolsTreeSitter"
136+ enrich_with_purldb = " scanpipe.pipelines.enrich_with_purldb:EnrichWithPurlDB"
137+ find_vulnerabilities = " scanpipe.pipelines.find_vulnerabilities:FindVulnerabilities"
138+ inspect_elf_binaries = " scanpipe.pipelines.inspect_elf_binaries:InspectELFBinaries"
139+ inspect_packages = " scanpipe.pipelines.inspect_packages:InspectPackages"
140+ load_inventory = " scanpipe.pipelines.load_inventory:LoadInventory"
141+ load_sbom = " scanpipe.pipelines.load_sbom:LoadSBOM"
142+ map_deploy_to_develop = " scanpipe.pipelines.deploy_to_develop:DeployToDevelop"
143+ match_to_matchcode = " scanpipe.pipelines.match_to_matchcode:MatchToMatchCode"
144+ populate_purldb = " scanpipe.pipelines.populate_purldb:PopulatePurlDB"
145+ publish_to_federatedcode = " scanpipe.pipelines.publish_to_federatedcode:PublishToFederatedCode"
146+ resolve_dependencies = " scanpipe.pipelines.resolve_dependencies:ResolveDependencies"
147+ scan_codebase = " scanpipe.pipelines.scan_codebase:ScanCodebase"
148+ scan_for_virus = " scanpipe.pipelines.scan_for_virus:ScanForVirus"
149+ scan_single_package = " scanpipe.pipelines.scan_single_package:ScanSinglePackage"
150+
151+ [tool .setuptools .packages .find ]
152+ where = [" ." ]
153+
1154[tool .ruff ]
2155line-length = 88
3156extend-exclude = [" migrations" , " var" ]
@@ -11,9 +164,12 @@ select = [
11164 " D" , # pydocstyle
12165 " F" , # Pyflakes
13166 " UP" , # pyupgrade
167+ " DJ" , # flake8-django
14168 " S" , # flake8-bandit
15169 " I" , # isort
16170 " C9" , # McCabe complexity
171+ " FIX" , # flake8-fix
172+ " FURB" , # refurb
17173]
18174ignore = [" D1" , " D203" , " D205" , " D212" , " D400" , " D415" ]
19175
@@ -35,6 +191,5 @@ max-complexity = 10
35191[tool .ruff .lint .per-file-ignores ]
36192# Allow the usage of assert in the test_spdx file.
37193"**/test_spdx.py*" = [" S101" ]
38- "scanpipe/pipes/spdx.py" = [" UP006" , " UP035" ]
39194# Allow complexity in management commands
40195"scanpipe/management/commands/*" = [" C901" ]
0 commit comments