seitime-frappe/pyproject.toml
Christopher McKay 4e39f2f108 fix: Update phonenumber library to handle new GY phone number format
The phonenumber library was updated from version 8.13.13 to 8.13.55 to address an issue where new Guyanese (GY) phone numbers starting with +592 7 were being incorrectly marked as invalid.  Previously, only numbers starting with +592 6 were recognized. This change ensures that users can now correctly submit phone numbers with the updated format in forms.
2025-02-20 07:36:29 +00:00

302 lines
7.1 KiB
TOML

[project]
name = "frappe"
authors = [
{ name = "Frappe Technologies Pvt Ltd", email = "developers@frappe.io"}
]
description = "Metadata driven, full-stack low code web framework"
requires-python = ">=3.10,<3.14"
readme = "README.md"
dynamic = ["version"]
dependencies = [
# core dependencies
"Babel~=2.13.1",
"Click~=8.1.7",
"filelock~=3.13.1",
"filetype~=1.2.0",
"GitPython~=3.1.34",
"Jinja2~=3.1.2",
"Pillow~=11.0.0",
"PyJWT~=2.8.0",
# We depend on internal attributes,
# do NOT add loose requirements on PyMySQL versions.
"PyMySQL==1.1.1",
"pypdf~=3.17.0",
"PyPika==0.48.9",
"PyQRCode~=1.2.1",
"PyYAML~=6.0.1",
"RestrictedPython~=8.0",
"WeasyPrint==59.0",
"pydyf==0.10.0",
"Werkzeug==3.0.6",
"Whoosh~=2.7.4",
"beautifulsoup4~=4.12.2",
"bleach-allowlist~=1.0.3",
"bleach[css]~=6.0.0",
"chardet~=5.1.0",
"croniter~=2.0.1",
"cryptography~=44.0.1",
"cssutils~=2.9.0",
"email-reply-parser~=0.5.12",
"gunicorn @ git+https://github.com/frappe/gunicorn@72c1e495d89259151e73947a057432d528b06bb0",
"html5lib~=1.1",
"ipython~=8.15.0",
"ldap3~=2.9",
"markdown2~=2.4.8",
"MarkupSafe>=2.1.0,<3",
"num2words~=0.5.12",
"oauthlib~=3.2.2",
"openpyxl~=3.1.2",
"passlib~=1.7.4",
"pdfkit~=1.0.0",
"phonenumbers==8.13.55",
"premailer~=3.10.0",
"psutil~=5.9.5",
"psycopg2-binary~=2.9.1",
"pyOpenSSL~=25.0.0",
"pydantic~=2.10.2",
"pyotp~=2.8.0",
"python-dateutil~=2.8.2",
"pytz==2023.3",
"rauth~=0.7.3",
"redis~=5.2.0",
"hiredis~=3.0.0",
"setproctitle~=1.3.3",
"requests-oauthlib~=1.3.1",
"requests~=2.32.0",
# We depend on internal attributes of RQ.
# Do NOT add loose requirements on RQ versions.
# Audit the code changes w.r.t. background_jobs.py before updating.
"rq==2.1.0",
"rsa>=4.1",
"semantic-version~=2.10.0",
"sentry-sdk~=1.37.1",
"sqlparse~=0.5.0",
"sql_metadata~=2.11.0",
"tenacity~=8.2.2",
"terminaltables~=3.1.10",
"traceback-with-variables~=2.0.4",
"typing_extensions>=4.6.1,<5",
"tomli~=2.0.1",
"uuid-utils~=0.10.0",
"xlrd~=2.0.1",
"zxcvbn~=4.4.28",
"markdownify~=0.11.6",
# integration dependencies
"boto3~=1.34.143",
"dropbox~=11.36.2",
"google-api-python-client~=2.2.0",
"google-auth-oauthlib~=0.4.4",
"google-auth~=1.29.0",
"posthog~=3.0.1",
"vobject~=0.9.7",
"pycountry~=24.6.1",
]
[project.urls]
Homepage = "https://frappeframework.com/"
Repository = "https://github.com/frappe/frappe.git"
"Bug Reports" = "https://github.com/frappe/frappe/issues"
[project.optional-dependencies]
dev = [
"pyngrok~=6.0.0",
"watchdog~=3.0.0",
"responses==0.23.1",
# typechecking
"basedmypy",
"types-PyMySQL",
"types-PyYAML",
"types-Pygments",
"types-beautifulsoup4",
"types-bleach",
"types-cffi",
"types-colorama",
"types-croniter",
"types-decorator",
"types-ldap3",
"types-oauthlib",
"types-openpyxl",
"types-passlib",
"types-psutil",
"types-psycopg2",
"types-python-dateutil",
"types-pytz",
"types-requests",
"types-six",
"types-vobject",
"types-zxcvbn",
"pypika-stubs", # contributed
]
test = [
"unittest-xml-reporting~=3.2.0",
"coverage~=6.5.0",
"Faker~=18.10.1",
"hypothesis~=6.77.0",
"freezegun~=1.5.1",
"pdbpp~=0.10.3",
]
[build-system]
requires = ["flit_core >=3.4,<4"]
build-backend = "flit_core.buildapi"
[tool.frappe.testing.function_type_validation]
max_module_depth = 0
skip_namespaces = [
"frappe.deprecation_dumpster",
"frappe.utils.typing_validations",
]
[tool.bench.dev-dependencies]
coverage = "~=6.5.0"
Faker = "~=18.10.1"
pyngrok = "~=6.0.0"
unittest-xml-reporting = "~=3.2.0"
watchdog = "~=3.0.0"
hypothesis = "~=6.77.0"
responses = "==0.23.1"
freezegun = "~=1.2.2"
pdbpp = "~=0.10.3"
[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
[tool.frappix]
# use identifier from https://search.nixos.org/packages
nixpkgs-deps = [
"mariadb",
"restic",
"wkhtmltopdf-bin",
"which",
"gzip",
"bash",
"redis",
"nodejs_20",
"python312",
]
[tool.mypy]
strict = false
pretty = true
incremental = true
sqlite_cache = true
files = [
# start small, with a lot of multiplication potential
"frappe/types/__init__.py",
"frappe/types/DF.py",
"frappe/types/docref.py",
"frappe/types/frappedict.py",
"frappe/types/filter.py",
]
exclude = [
# permanent excludes
"^frappe/patches",
'/test_.+\.py$',
"^frappe/tests/ui_test_helpers.py",
"^frappe/parallel_test_runner.py",
"^frappe/deprecation_dumpster.py",
]
disable_error_code = [
]
[[tool.mypy.overrides]]
module = "frappe"
# Too many for a start
disable_error_code = [
"no-any-expr",
"no-untyped-def",
"no-untyped-call",
"no-untyped-usage",
]
# External libraries without types
[[tool.mypy.overrides]]
module = [
"apiclient.http",
"bleach_allowlist",
"boto3",
"botocore.exceptions",
"cssutils",
"cups",
"dropbox",
"email_reply_parser",
"filetype",
"google",
"googleapiclient.discovery",
"googleapiclient.errors",
"google.oauth2",
"google.oauth2.credentials",
"markdown2",
"markdownify",
"num2words",
"pdfkit",
"premailer",
"pyngrok",
"pypika",
"pypika.dialects",
"pypika.functions",
"pypika.queries",
"pypika.terms",
"pypika.utils",
"pyqrcode",
"rauth",
"requests_oauthlib",
"RestrictedPython",
"RestrictedPython.Guards",
"RestrictedPython.transformer",
"semantic_version",
"sql_metadata",
"sqlparse",
"terminaltables",
"traceback_with_variables",
"weasyprint",
"whoosh.fields",
"whoosh.index",
"whoosh.qparser",
"whoosh.query",
"whoosh.writing",
"xlrd",
"xmlrunner",
]
ignore_missing_imports = true