2025-11-01 14:36:40 -05:00
|
|
|
[project]
|
2022-11-30 20:20:28 -09:00
|
|
|
name = "mealie"
|
2025-11-14 18:22:32 +00:00
|
|
|
version = "3.5.0"
|
2025-11-01 14:36:40 -05:00
|
|
|
description = "A Recipe Manager"
|
|
|
|
|
authors = [{ name = "Hayden", email = "hay-kot@pm.me" }]
|
|
|
|
|
license = "AGPL-3.0-only"
|
|
|
|
|
requires-python = ">=3.12,<3.13"
|
|
|
|
|
dependencies = [
|
2025-11-29 17:04:14 +00:00
|
|
|
"Jinja2==3.1.6",
|
|
|
|
|
"Pillow==12.0.0",
|
|
|
|
|
"PyYAML==6.0.3",
|
|
|
|
|
"SQLAlchemy==2.0.44",
|
|
|
|
|
"aiofiles==25.1.0",
|
|
|
|
|
"alembic==1.17.1",
|
2025-11-01 14:36:40 -05:00
|
|
|
"aniso8601==10.0.1",
|
|
|
|
|
"appdirs==1.4.4",
|
2025-11-29 17:04:14 +00:00
|
|
|
"apprise==1.9.5",
|
|
|
|
|
"bcrypt==5.0.0",
|
|
|
|
|
"extruct==0.18.0",
|
|
|
|
|
"fastapi==0.120.3",
|
|
|
|
|
"httpx==0.28.1",
|
|
|
|
|
"lxml==6.0.2",
|
|
|
|
|
"orjson==3.11.4",
|
|
|
|
|
"pydantic==2.12.3",
|
|
|
|
|
"pyhumps==3.8.0",
|
|
|
|
|
"python-dateutil==2.9.0.post0",
|
|
|
|
|
"python-dotenv==1.2.1",
|
|
|
|
|
"python-ldap==3.4.5",
|
|
|
|
|
"python-multipart==0.0.20",
|
|
|
|
|
"python-slugify==8.0.4",
|
2025-11-29 17:32:40 +00:00
|
|
|
"recipe-scrapers==15.10.0",
|
2025-11-29 17:04:14 +00:00
|
|
|
"requests==2.32.5",
|
|
|
|
|
"tzdata==2025.2",
|
|
|
|
|
"uvicorn[standard]==0.38.0",
|
|
|
|
|
"beautifulsoup4==4.14.2",
|
|
|
|
|
"isodate==0.7.2",
|
|
|
|
|
"text-unidecode==1.3",
|
|
|
|
|
"rapidfuzz==3.14.2",
|
|
|
|
|
"authlib==1.6.5",
|
|
|
|
|
"html2text==2025.4.15",
|
|
|
|
|
"paho-mqtt==1.6.1",
|
|
|
|
|
"pydantic-settings==2.11.0",
|
|
|
|
|
"pillow-heif==1.1.1",
|
|
|
|
|
"pyjwt==2.10.1",
|
|
|
|
|
"openai==2.6.1",
|
|
|
|
|
"typing-extensions==4.15.0",
|
|
|
|
|
"itsdangerous==2.2.0",
|
|
|
|
|
"ingredient-parser-nlp==2.4.0",
|
2025-02-12 01:28:40 +10:00
|
|
|
]
|
2021-05-08 18:29:31 -08:00
|
|
|
|
2025-11-01 14:36:40 -05:00
|
|
|
[project.scripts]
|
2025-02-12 01:28:40 +10:00
|
|
|
mealie = "mealie.main:main"
|
2021-05-08 18:29:31 -08:00
|
|
|
|
2025-11-01 14:36:40 -05:00
|
|
|
[project.optional-dependencies]
|
|
|
|
|
pgsql = [
|
2025-11-29 17:04:14 +00:00
|
|
|
"psycopg2-binary==2.9.11"
|
2025-11-01 14:36:40 -05:00
|
|
|
]
|
2022-07-09 23:57:09 -05:00
|
|
|
|
2025-11-01 14:36:40 -05:00
|
|
|
[dependency-groups]
|
|
|
|
|
dev = [
|
2025-11-29 17:04:14 +00:00
|
|
|
"coverage==7.11.0",
|
|
|
|
|
"coveragepy-lcov==0.1.2",
|
|
|
|
|
"mkdocs-material==9.6.22",
|
|
|
|
|
"mypy==1.18.2",
|
|
|
|
|
"pre-commit==4.3.0",
|
|
|
|
|
"pylint==4.0.2",
|
|
|
|
|
"pytest==9.0.1",
|
|
|
|
|
"pytest-asyncio==1.3.0",
|
|
|
|
|
"rich==14.2.0",
|
|
|
|
|
"ruff==0.14.3",
|
|
|
|
|
"types-PyYAML==6.0.12.20250915",
|
|
|
|
|
"types-python-dateutil==2.9.0.20251008",
|
|
|
|
|
"types-python-slugify==8.0.2.20240310",
|
|
|
|
|
"types-requests==2.32.4.20250913",
|
|
|
|
|
"types-urllib3==1.26.25.14",
|
|
|
|
|
"pydantic-to-typescript2==1.0.6",
|
2025-11-01 14:36:40 -05:00
|
|
|
]
|
2023-01-29 01:43:27 +01:00
|
|
|
|
2021-05-08 18:29:31 -08:00
|
|
|
[build-system]
|
2025-11-29 17:04:14 +00:00
|
|
|
requires = ["setuptools==80.9.0"]
|
2025-11-01 14:36:40 -05:00
|
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
|
|
|
|
|
|
[tool.setuptools]
|
|
|
|
|
include-package-data = true
|
2021-05-08 18:29:31 -08:00
|
|
|
|
2025-11-01 14:36:40 -05:00
|
|
|
[tool.setuptools.packages.find]
|
|
|
|
|
include = ["mealie*"]
|
|
|
|
|
|
|
|
|
|
[tool.setuptools.package-data]
|
|
|
|
|
"*" = ["*"]
|
2021-08-28 14:27:56 -08:00
|
|
|
|
2021-05-08 18:29:31 -08:00
|
|
|
[tool.pytest.ini_options]
|
2022-11-30 20:20:28 -09:00
|
|
|
addopts = "-ra -q"
|
2024-10-17 10:35:39 -05:00
|
|
|
asyncio_default_fixture_loop_scope = "function"
|
2021-05-08 18:29:31 -08:00
|
|
|
minversion = "6.0"
|
|
|
|
|
python_classes = '*Tests'
|
2022-11-30 20:20:28 -09:00
|
|
|
python_files = 'test_*'
|
2021-05-08 18:29:31 -08:00
|
|
|
python_functions = 'test_*'
|
2023-10-07 16:02:15 -05:00
|
|
|
testpaths = ["tests"]
|
2021-05-08 18:29:31 -08:00
|
|
|
|
|
|
|
|
[tool.coverage.report]
|
2021-06-12 07:30:06 +08:00
|
|
|
skip_empty = true
|
|
|
|
|
|
2022-03-15 15:01:56 -08:00
|
|
|
[tool.mypy]
|
|
|
|
|
follow_imports = "skip"
|
2022-11-30 20:20:28 -09:00
|
|
|
ignore_missing_imports = true
|
2022-10-18 14:49:41 -08:00
|
|
|
plugins = "pydantic.mypy"
|
2024-12-04 22:31:26 -06:00
|
|
|
python_version = "3.12"
|
2022-11-30 20:20:28 -09:00
|
|
|
strict_optional = true
|
|
|
|
|
|
|
|
|
|
[tool.ruff]
|
2025-11-01 14:36:40 -05:00
|
|
|
target-version = "py312"
|
2022-11-30 20:20:28 -09:00
|
|
|
line-length = 120
|
2024-03-09 12:40:08 -06:00
|
|
|
output-format = "concise"
|
2022-11-30 20:20:28 -09:00
|
|
|
|
|
|
|
|
# Exclude a variety of commonly ignored directories.
|
|
|
|
|
exclude = [
|
|
|
|
|
".bzr",
|
|
|
|
|
".direnv",
|
|
|
|
|
".eggs",
|
|
|
|
|
".git",
|
|
|
|
|
".hg",
|
|
|
|
|
".mypy_cache",
|
|
|
|
|
".nox",
|
|
|
|
|
".pants.d",
|
|
|
|
|
".ruff_cache",
|
|
|
|
|
".svn",
|
|
|
|
|
".tox",
|
|
|
|
|
".venv",
|
|
|
|
|
"__pypackages__",
|
|
|
|
|
"_build",
|
|
|
|
|
"buck-out",
|
|
|
|
|
"build",
|
|
|
|
|
"dist",
|
|
|
|
|
"node_modules",
|
|
|
|
|
"venv",
|
|
|
|
|
]
|
|
|
|
|
|
2025-01-13 10:19:49 -06:00
|
|
|
[tool.ruff.lint.isort]
|
|
|
|
|
known-third-party = ["alembic"]
|
|
|
|
|
|
2024-03-09 12:40:08 -06:00
|
|
|
[tool.ruff.lint]
|
|
|
|
|
# Enable Pyflakes `E` and `F` codes by default.
|
|
|
|
|
ignore = ["F403", "TID252", "B008"]
|
|
|
|
|
select = [
|
2024-08-12 17:09:30 +02:00
|
|
|
"B", # flake8-bugbear
|
|
|
|
|
"C4", # McCabe complexity
|
|
|
|
|
"C90", # flake8-comprehensions
|
|
|
|
|
"DTZ", # flake8-datetimez
|
2024-03-09 12:40:08 -06:00
|
|
|
"E", # pycodestyles
|
|
|
|
|
"F", # pyflakes
|
|
|
|
|
"I", # isort
|
|
|
|
|
"T", # flake8-print
|
|
|
|
|
"UP", # pyupgrade
|
|
|
|
|
# "ANN", # flake8-annotations
|
|
|
|
|
# "BLE", # blind-except
|
2024-08-12 17:09:30 +02:00
|
|
|
# "RUF", # Ruff specific
|
2024-03-09 12:40:08 -06:00
|
|
|
]
|
|
|
|
|
|
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
2023-10-07 16:02:15 -05:00
|
|
|
"__init__.py" = ["E402", "E501"]
|
2025-01-13 10:19:49 -06:00
|
|
|
"mealie/alembic/versions/*" = ["E501", "I001"]
|
2024-08-12 17:09:30 +02:00
|
|
|
"dev/scripts/all_recipes_stress_test.py" = ["E501"]
|
2024-03-10 13:51:36 -05:00
|
|
|
"ldap_provider.py" = ["UP032"]
|
2024-08-12 17:09:30 +02:00
|
|
|
"tests/conftest.py" = ["E402"]
|
|
|
|
|
"tests/utils/routes/__init__.py" = ["F401"]
|
2022-11-30 20:20:28 -09:00
|
|
|
|
2024-03-09 12:40:08 -06:00
|
|
|
[tool.ruff.lint.mccabe]
|
2022-11-30 20:20:28 -09:00
|
|
|
# Unlike Flake8, default to a complexity level of 10.
|
2024-08-12 17:09:30 +02:00
|
|
|
max-complexity = 24 # Default is 10.
|