seitime-frappe/pyproject.toml
Gavin D'souza 9f941e9312 build: Declarative builds via pyproject.toml
There was an attempt to switch to declarative setup, which was to use
setup.cfg. However, we've made more progress in the "world of packaging"
since. Also, given we're using a pyproject file already to govern
certain aspects of our project maintenance, it's probably a good time to
bring these things together. bye-bye to clutter and confusion in
maintaining multiple files and formats.

We've used setuptools to package frappe for the longest time. Maybe
since the first editable installation. Howver setuptools doesn't support
PEP 660 yet which supports editable installs via pyproject file.

So why now? Primarily because I wanted to start tracking system
dependencies for Frappe. Doing so through pyproject file made the most
sense. This change seemed to be the obvious pre-requisite for the
upcoming changes to our packaging systems.

Sys deps tracking: https://github.com/frappe/frappe/issues/13811
Flit docs: https://flit.pypa.io/en/latest/pyproject_toml.html
Previous attempt: https://github.com/frappe/frappe/pull/10773
Which build tool: https://stackoverflow.com/a/69711730/10309266
PEP 660: https://peps.python.org/pep-0660/
2022-06-14 13:29:36 +05:30

105 lines
2.4 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.8"
readme = "README.md"
dynamic = ["version"]
dependencies = [
# core dependencies
"Babel~=2.9.0",
"Click~=7.1.2",
"GitPython~=3.1.14",
"Jinja2~=3.1.2",
"Pillow~=9.1.1",
"PyJWT~=2.0.1",
"PyMySQL~=1.0.2",
"PyPDF2~=2.1.0",
"PyPika~=0.48.9",
"PyQRCode~=1.2.1",
"PyYAML~=5.4.1",
"RestrictedPython~=5.1",
"WeasyPrint==52.5",
"Werkzeug~=2.1.2",
"Whoosh~=2.7.4",
"beautifulsoup4~=4.9.3",
"bleach-allowlist~=1.0.3",
"bleach~=3.3.0",
"cairocffi==1.2.0",
"chardet~=4.0.0",
"croniter~=1.3.5",
"cryptography~=37.0.2",
"email-reply-parser~=0.5.12",
"git-url-parse~=1.2.2",
"gitdb~=4.0.7",
"gunicorn~=20.1.0",
"html2text==2020.1.16",
"html5lib~=1.1",
"ipython~=8.4.0",
"ldap3~=2.9",
"markdown2~=2.4.0",
"maxminddb-geolite2==2018.703",
"num2words~=0.5.10",
"oauthlib~=3.1.0",
"openpyxl~=3.0.7",
"parse~=1.19.0",
"passlib~=1.7.4",
"pdfkit~=1.0.0",
"phonenumbers==8.12.40",
"premailer~=3.8.0",
"psutil~=5.9.1",
"psycopg2-binary~=2.9.1",
"pyOpenSSL~=20.0.1",
"pyasn1~=0.4.8",
"pycryptodome~=3.10.1",
"pyotp~=2.6.0",
"pypng~=0.0.20",
"python-dateutil~=2.8.1",
"pytz==2022.1",
"rauth~=0.7.3",
"redis~=3.5.3",
"requests-oauthlib~=1.3.0",
"requests~=2.27.1",
"rq~=1.10.1",
"rsa>=4.1",
"schedule~=1.1.0",
"semantic-version~=2.10.0",
"sqlparse~=0.4.1",
"tenacity~=8.0.1",
"terminaltables~=3.1.0",
"traceback-with-variables~=2.0.4",
"urllib3~=1.26.4",
"xlrd~=2.0.1",
"zxcvbn-python~=4.4.24",
# integration dependencies
"boto3~=1.17.53",
"braintree~=4.8.0",
"dropbox~=11.7.0",
"google-api-python-client~=2.2.0",
"google-auth-httplib2~=0.1.0",
"google-auth-oauthlib~=0.4.4",
"google-auth~=1.29.0",
"googlemaps~=4.4.5",
"paytmchecksum~=1.7.0",
"razorpay~=1.2.0",
"stripe~=2.56.0",
]
[build-system]
requires = ["flit_core >=3.4,<4"]
build-backend = "flit_core.buildapi"
[tool.black]
line-length = 99
[tool.isort]
line_length = 99
multi_line_output = 3
include_trailing_comma = true
force_grid_wrap = 0
use_parentheses = true
ensure_newline_before_comments = true
indent = "\t"