mirror of
https://github.com/mvt-project/mvt.git
synced 2026-09-03 00:21:07 +02:00
register_cli_plugins() ran while mvt.ios and mvt.android were being imported, so importing any part of MVT executed the entry points of every installed command package. That made plugin loading depend on import order: a plugin importing from MVT while MVT was still initializing got an ImportError and was quietly demoted to a broken command, and the same plugin worked when MVT happened to be imported first. Move the call into a main() function in each CLI module and point the console scripts at it, so registration happens once when the program starts and importing MVT no longer runs third-party code. For packagers: mvt.ios:cli and mvt.android:cli stay importable, but a wrapper invoking cli() directly no longer registers the installed plugin commands and should call main() instead.
125 lines
3.1 KiB
TOML
125 lines
3.1 KiB
TOML
[project]
|
|
name = "mvt"
|
|
dynamic = ["version"]
|
|
authors = [{ name = "Claudio Guarnieri", email = "nex@nex.sx" }]
|
|
maintainers = [
|
|
{ name = "Etienne Maynier", email = "tek@randhome.io" },
|
|
{ name = "Donncha Ó Cearbhaill", email = "donncha.ocearbhaill@amnesty.org" },
|
|
{ name = "Rory Flynn", email = "rory.flynn@amnesty.org" },
|
|
]
|
|
description = "Mobile Verification Toolkit"
|
|
readme = "README.md"
|
|
keywords = ["security", "mobile", "forensics", "malware"]
|
|
classifiers = [
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Intended Audience :: Information Technology",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python",
|
|
]
|
|
dependencies = [
|
|
"click==8.4.2",
|
|
"rich==15.0.0",
|
|
"tld==0.13.2",
|
|
"requests==2.34.2",
|
|
"simplejson==4.1.1",
|
|
"packaging==26.3",
|
|
"appdirs==1.4.4",
|
|
"iOSbackup==0.9.925",
|
|
"adb-shell[usb]==0.4.4",
|
|
"libusb1==3.4.0",
|
|
"cryptography==50.0.0",
|
|
"PyYAML>=6.0.2",
|
|
"pyahocorasick==2.3.1",
|
|
"betterproto2==0.10.0",
|
|
"pydantic==2.13.4",
|
|
"pydantic-settings==2.15.0",
|
|
"NSKeyedUnArchiver==1.5.2",
|
|
"python-dateutil==2.9.0.post0",
|
|
"tzdata==2026.3",
|
|
]
|
|
requires-python = ">= 3.10"
|
|
|
|
[project.urls]
|
|
homepage = "https://docs.mvt.re/en/latest/"
|
|
repository = "https://github.com/mvt-project/mvt"
|
|
|
|
[project.scripts]
|
|
mvt-ios = "mvt.ios:main"
|
|
mvt-android = "mvt.android:main"
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"requests>=2.31.0",
|
|
"pytest>=7.4.3",
|
|
"pytest-cov>=4.1.0",
|
|
"pytest-github-actions-annotate-failures>=0.2.0",
|
|
"pytest-mock>=3.14.0",
|
|
"stix2>=3.0.1",
|
|
"ruff>=0.1.6",
|
|
"mypy>=1.7.1",
|
|
"betterproto2-compiler",
|
|
"types-PyYAML>=6.0.12.20250516",
|
|
"types-python-dateutil>=2.9.0.20250822",
|
|
"types-requests>=2.32.4.20250913",
|
|
]
|
|
docs = [
|
|
"mkdocs==1.6.1",
|
|
"mkdocs-autorefs==1.4.4",
|
|
"mkdocs-material==9.7.7",
|
|
"mkdocs-material-extensions==1.3.1",
|
|
"mkdocstrings==1.0.6",
|
|
]
|
|
|
|
[build-system]
|
|
requires = ["setuptools>=61.0"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[tool.coverage.run]
|
|
omit = ["tests/*"]
|
|
|
|
[tool.coverage.html]
|
|
directory = "htmlcov"
|
|
|
|
[tool.mypy]
|
|
install_types = false
|
|
ignore_missing_imports = true
|
|
packages = "src"
|
|
|
|
[tool.pytest.ini_options]
|
|
addopts = "-ra -q --cov=mvt --cov-report html --junitxml=pytest.xml --cov-report=term-missing:skip-covered"
|
|
testpaths = ["tests"]
|
|
|
|
[tool.ruff]
|
|
lint.select = ["C90", "E", "F", "W"] # flake8 default set
|
|
lint.ignore = [
|
|
"E501", # don't enforce line length violations
|
|
"C901", # complex-structure
|
|
|
|
# These were previously ignored but don't seem to be required:
|
|
# "E265", # no-space-after-block-comment
|
|
# "F401", # unused-import
|
|
# "E127", # not included in ruff
|
|
# "W503", # not included in ruff
|
|
# "E226", # missing-whitespace-around-arithmetic-operator
|
|
# "E203", # whitespace-before-punctuation
|
|
]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
"__init__.py" = ["F401"] # unused-import
|
|
|
|
[tool.ruff.lint.mccabe]
|
|
max-complexity = 10
|
|
|
|
[tool.setuptools]
|
|
include-package-data = true
|
|
package-dir = { "" = "src" }
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["src"]
|
|
|
|
[tool.setuptools.package-data]
|
|
mvt = ["ios/data/*.json"]
|
|
|
|
[tool.setuptools.dynamic]
|
|
version = { attr = "mvt.common.version.MVT_VERSION" }
|