Files
upstream-frappe-crm/pyproject.toml
upstream-mirror db69de1c11
Some checks failed
Frontend / Unit Tests & Coverage (push) Has been skipped
Regenerate POT file (translatable strings) / Regenerate POT file (develop) (push) Failing after 1m13s
Regenerate POT file (translatable strings) / Regenerate POT file (main-hotfix) (push) Failing after 6s
Server / Tests (frappe ${{ matrix.frappe-branch }}) (push) Has been skipped
Server / Resolve frappe matrix (push) Failing after 1s
Frontend / Lint (push) Failing after 1s
Frontend / Production Build (push) Failing after 1s
Server / Coverage Wrap Up (push) Has been skipped
Frontend / Coverage Wrap Up (push) Has been skipped
snapshot of https://github.com/frappe/crm.git (develop, 2026-09-18; blobs > 131072B omitted)
2026-09-18 01:36:01 +05:00

86 lines
2.7 KiB
TOML

[project]
name = "crm"
authors = [
{ name = "Frappe Technologies Pvt. Ltd.", email = "shariq@frappe.io"}
]
description = "Kick-ass Open Source CRM"
requires-python = ">=3.10"
readme = "README.md"
dynamic = ["version"]
dependencies = [
# "frappe~=15.0.0" # Installed and managed by bench.
"twilio==8.5.0",
"requests>=2.28.0",
# Public Suffix List lookups for the enrichment crawler's same-site scoping
# (registrable_domain). Pinned to its bundled PSL snapshot at runtime -- no
# network fetch (see crawler._tld_extractor).
"tldextract>=5.0.0",
# beautifulsoup4 is a hard dependency of frappe -- do not re-declare it here (the
# enrichment crawler imports `from bs4 import BeautifulSoup` and uses only the
# stdlib html.parser backend, so no extra dependency is needed).
]
[build-system]
requires = ["flit_core >=3.4,<4"]
build-backend = "flit_core.buildapi"
# These dependencies are only installed when developer mode is enabled
[tool.bench.dev-dependencies]
# package_name = "~=1.1.0"
[tool.bench.frappe-dependencies]
frappe = ">=16.0.0-dev,<=17.0.0-dev"
[tool.bench.assets]
build_dir = "./frontend"
out_dir = "../crm/public/frontend"
index_html_path = "../crm/www/crm.html"
[tool.ruff]
line-length = 110
target-version = "py310"
exclude = [
"**/doctype/*/boilerplate/*.py" # boilerplate are template strings, not valid python
]
[tool.ruff.lint]
select = [
"F",
"E",
"W",
"I",
"UP",
"B",
"RUF",
]
ignore = [
"B017", # assertRaises(Exception) - should be more specific
"B018", # useless expression, not assigned to anything
"B023", # function doesn't bind loop variable - will have last iteration's value
"B904", # raise inside except without from
"E101", # indentation contains mixed spaces and tabs
"E402", # module level import not at top of file
"E501", # line too long
"E741", # ambiguous variable name
"F401", # "unused" imports
"F403", # can't detect undefined names from * import
"F405", # can't detect undefined names from * import
"F722", # syntax error in forward type annotation
"W191", # indentation contains tabs
"RUF001", # string contains ambiguous unicode character
"UP030", # Use implicit references for positional format fields (translations)
"UP031", # Use format specifiers instead of percent format
"UP032", # Use f-string instead of `format` call (translations)
]
typing-modules = ["frappe.types.DF"]
[tool.ruff.format]
quote-style = "double"
indent-style = "tab"
docstring-code-format = true
[project.urls]
Homepage = "https://frappe.io/crm"
Repository = "https://github.com/frappe/crm.git"
"Bug Reports" = "https://github.com/frappe/crm/issues"