[build-system] requires = ["setuptools>=68", "wheel"] build-backend = "setuptools.build_meta" [project] name = "ministack" version = "1.3.6" description = "Free, open-source local AWS emulator — drop-in LocalStack replacement" readme = "README.md" license = { file = "LICENSE" } requires-python = ">=3.10" keywords = ["aws", "localstack", "testing", "s3", "sqs", "dynamodb", "local-dev"] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Software Development :: Testing", "Topic :: Internet", ] dependencies = [ "hypercorn>=0.18.0", "pyyaml>=6.0", "defusedxml>=0.7", ] [project.optional-dependencies] full = [ "duckdb>=0.10.0", "docker>=7.0.0", "cryptography>=41.0", "psycopg2-binary>=2.9", "pymysql>=1.1", ] dev = [ "boto3>=1.34", "pytest>=8.0", "pytest-xdist>=3.6", "pytest-cov>=5.0", "duckdb>=0.10.0", "docker>=7.0.0", "cryptography>=41.0", "psycopg2-binary>=2.9", "pymysql>=1.1", "ruff>=0.4", "mypy-boto3-lambda (>=1.42.85,<2.0.0)", ] [project.urls] Homepage = "https://github.com/ministackorg/ministack" Repository = "https://github.com/ministackorg/ministack" Issues = "https://github.com/ministackorg/ministack/issues" [project.scripts] ministack = "ministack.app:main" [tool.setuptools.packages.find] include = ["ministack*"] [tool.pytest.ini_options] testpaths = ["tests"] python_files = ["test_*.py"] python_functions = ["test_*"] addopts = "--dist=loadfile" markers = [ "serial: tests that mutate global server state and must run alone", ] [tool.ruff] line-length = 120 target-version = "py310" [tool.ruff.lint] select = ["E", "F", "I"] ignore = [ "E501", # line too long — XML templates and service tables make this impractical "E402", # module import not at top — intentional lazy imports in service files "F401", # unused import — needs manual review; some are re-exports "F811", # redefined while unused — needs manual review "F841", # unused variable — needs manual review "E741", # ambiguous variable name — too noisy for emulator code "F601", # multi-value repeated key — needs manual review ] [tool.ruff.lint.per-file-ignores] "ministack/services/dynamodb.py" = ["E701", "E702"] # compact tokenizer style is intentional [tool.coverage.run] source = ["ministack"] omit = ["tests/*"]