pyproject.toml•3.84 kB
[tool.poetry]
name = "cycode"
version = "0.0.0" # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
description = "Boost security in your dev lifecycle via SAST, SCA, Secrets & IaC scanning."
keywords=["secret-scan", "cycode", "devops", "token", "secret", "security", "cycode", "code"]
authors = ["Cycode <support@cycode.com>"]
license = "MIT"
repository = "https://github.com/cycodehq/cycode-cli"
readme = "README.md"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]
[tool.poetry.scripts]
cycode = "cycode.cli.app:app"
[tool.poetry.dependencies]
python = ">=3.9,<3.14"
click = ">=8.1.0,<8.2.0"
colorama = ">=0.4.3,<0.5.0"
pyyaml = ">=6.0,<7.0"
marshmallow = ">=3.15.0,<3.23.0" # 3.23 dropped support for Python 3.8
gitpython = ">=3.1.30,<3.2.0"
arrow = ">=1.0.0,<1.4.0"
binaryornot = ">=0.4.4,<0.5.0"
requests = ">=2.32.4,<3.0"
urllib3 = "1.26.19" # lock v1 to avoid issues with openssl and old Python versions (<3.9.11) on macOS
sentry-sdk = ">=2.8.0,<3.0"
pyjwt = ">=2.8.0,<3.0"
rich = ">=13.9.4, <14"
patch-ng = "1.18.1"
typer = "^0.15.3"
tenacity = ">=9.0.0,<9.1.0"
mcp = { version = ">=1.9.3,<2.0.0", markers = "python_version >= '3.10'" }
pydantic = ">=2.11.5,<3.0.0"
pathvalidate = ">=3.3.1,<4.0.0"
[tool.poetry.group.test.dependencies]
mock = ">=4.0.3,<4.1.0"
pytest = ">=7.3.1,<7.4.0"
pytest-mock = ">=3.10.0,<3.11.0"
coverage = ">=7.2.3,<7.3.0"
responses = ">=0.23.1,<0.24.0"
pyfakefs = ">=5.7.2,<5.8.0"
[tool.poetry.group.executable.dependencies]
pyinstaller = {version=">=5.13.2,<5.14.0", python=">=3.8,<3.13"}
dunamai = ">=1.18.0,<1.22.0"
[tool.poetry.group.dev.dependencies]
ruff = "0.11.7"
[tool.pytest.ini_options]
log_cli = true
[tool.poetry-dynamic-versioning]
# poetry self add "poetry-dynamic-versioning[plugin]"
enable = true
strict = true
bump = true
metadata = false
fix-shallow-repository=true
vcs = "git"
style = "pep440"
[tool.ruff]
line-length = 120
target-version = "py39"
[tool.ruff.lint]
extend-select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # Pyflakes
"I", # isort
"N", # pep8 naming
"C90", # flake8-comprehensions
"B", # flake8-bugbear
"Q", # flake8-quotes
"S", # flake8-bandit
"ASYNC", # flake8-async
"ANN", # flake8-annotations
"C",
"BLE",
"ERA",
"ICN",
"INP",
"ISC",
"NPY",
"PGH",
"PIE",
"RET",
"RSE",
"RUF",
"SIM",
"T10",
"T20",
"TID",
"YTT",
"LOG",
"G",
"UP",
"DTZ",
"PYI",
"PT",
"SLOT",
"TC",
]
ignore = [
"ANN002", # Missing type annotation for `*args`
"ANN003", # Missing type annotation for `**kwargs`
"ANN401", # Dynamically typed expressions (typing.Any)
"ISC001", # Conflicts with ruff format
"S105", # False positives
"PT012", # `pytest.raises()` block should contain a single simple statement
]
[tool.ruff.lint.flake8-quotes]
docstring-quotes = "double"
multiline-quotes = "double"
inline-quotes = "single"
[tool.ruff.lint.flake8-tidy-imports]
ban-relative-imports = "all"
[tool.ruff.lint.per-file-ignores]
"tests/*.py" = ["S101", "S105"]
"cycode/*.py" = ["BLE001"]
[tool.ruff.format]
quote-style = "single"
[build-system]
requires = ["poetry-core>=1.0.0", "poetry-dynamic-versioning>=1.0.0,<2.0.0"]
build-backend = "poetry_dynamic_versioning.backend"