mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-10-27 00:04:23 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			178 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			TOML
		
	
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			TOML
		
	
	
	
	
	
| [tool.poetry]
 | |
| authors = ["Hayden <hay-kot@pm.me>"]
 | |
| description = "A Recipe Manager"
 | |
| license = "AGPL"
 | |
| name = "mealie"
 | |
| version = "3.3.0"
 | |
| include = [
 | |
|     # Explicit include to override .gitignore when packaging the frontend
 | |
|     { path = "mealie/frontend/**/*", format = ["sdist", "wheel"] }
 | |
| ]
 | |
| 
 | |
| [tool.poetry.scripts]
 | |
| mealie = "mealie.main:main"
 | |
| 
 | |
| [tool.poetry.dependencies]
 | |
| Jinja2 = "^3.1.2"
 | |
| Pillow = "^11.3.0"
 | |
| PyYAML = "^6.0.1"
 | |
| SQLAlchemy = "^2"
 | |
| aiofiles = "^24.0.0"
 | |
| alembic = "^1.11.3"
 | |
| aniso8601 = "10.0.1"
 | |
| appdirs = "1.4.4"
 | |
| apprise = "^1.4.5"
 | |
| bcrypt = "^5.0.0"
 | |
| extruct = "^0.18.0"
 | |
| fastapi = "^0.118.0"
 | |
| httpx = "^0.28.0"
 | |
| lxml = "^6.0.0"
 | |
| orjson = "^3.8.0"
 | |
| psycopg2-binary = { version = "^2.9.1", optional = true }
 | |
| pydantic = "^2.6.1"
 | |
| pyhumps = "^3.5.3"
 | |
| python = ">=3.12,<3.13"
 | |
| python-dateutil = "^2.8.2"
 | |
| python-dotenv = "^1.0.0"
 | |
| python-ldap = "^3.3.1"
 | |
| python-multipart = "^0.0.20"
 | |
| python-slugify = "^8.0.0"
 | |
| recipe-scrapers = "^15.0.0"
 | |
| requests = "^2.31.0"
 | |
| tzdata = "^2024.1"
 | |
| uvicorn = { extras = ["standard"], version = "^0.37.0" }
 | |
| beautifulsoup4 = "^4.11.2"
 | |
| isodate = "^0.7.0"
 | |
| text-unidecode = "^1.3"
 | |
| rapidfuzz = "^3.2.0"
 | |
| authlib = "^1.3.0"
 | |
| html2text = "^2025.0.0"
 | |
| paho-mqtt = "^1.6.1"
 | |
| pydantic-settings = "^2.1.0"
 | |
| pillow-heif = "^1.0.0"
 | |
| pyjwt = "^2.8.0"
 | |
| openai = "^2.0.0"
 | |
| typing-extensions = "^4.12.2"
 | |
| itsdangerous = "^2.2.0"
 | |
| ingredient-parser-nlp = "^2.0.0"
 | |
| 
 | |
| [tool.poetry.group.postgres.dependencies]
 | |
| psycopg2-binary = { version = "^2.9.1" }
 | |
| 
 | |
| [tool.poetry.group.dev.dependencies]
 | |
| coverage = "^7.0"
 | |
| coveragepy-lcov = "^0.1.1"
 | |
| mkdocs-material = "^9.0.0"
 | |
| mypy = "^1.5.1"
 | |
| pre-commit = "^4.0.0"
 | |
| pylint = "^3.0.0"
 | |
| pytest = "^8.0.0"
 | |
| pytest-asyncio = "^1.0.0"
 | |
| rich = "^14.0.0"
 | |
| ruff = "^0.13.0"
 | |
| types-PyYAML = "^6.0.4"
 | |
| types-python-dateutil = "^2.8.18"
 | |
| types-python-slugify = "^6.0.0"
 | |
| types-requests = "^2.27.12"
 | |
| types-urllib3 = "^1.26.11"
 | |
| pydantic-to-typescript2 = "^1.0.4"
 | |
| freezegun = "^1.5.1"
 | |
| 
 | |
| 
 | |
| [build-system]
 | |
| build-backend = "poetry.core.masonry.api"
 | |
| requires = ["poetry-core>=1.0.0"]
 | |
| 
 | |
| [tool.vulture]
 | |
| exclude = ["**/models/**/*.py", "dir/"]
 | |
| ignore_decorators = ["@*router.*", "@app.on_event", "@field_validator", "@controller"]
 | |
| make_whitelist = true
 | |
| min_confidence = 60
 | |
| paths = ["mealie"]
 | |
| sort_by_size = true
 | |
| 
 | |
| [tool.pytest.ini_options]
 | |
| addopts = "-ra -q"
 | |
| asyncio_default_fixture_loop_scope = "function"
 | |
| minversion = "6.0"
 | |
| python_classes = '*Tests'
 | |
| python_files = 'test_*'
 | |
| python_functions = 'test_*'
 | |
| testpaths = ["tests"]
 | |
| 
 | |
| [tool.coverage.report]
 | |
| skip_empty = true
 | |
| 
 | |
| [tool.poetry.extras]
 | |
| pgsql = ["psycopg2-binary"]
 | |
| 
 | |
| [tool.mypy]
 | |
| follow_imports = "skip"
 | |
| ignore_missing_imports = true
 | |
| plugins = "pydantic.mypy"
 | |
| python_version = "3.12"
 | |
| strict_optional = true
 | |
| 
 | |
| [tool.ruff]
 | |
| line-length = 120
 | |
| output-format = "concise"
 | |
| 
 | |
| # 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",
 | |
| ]
 | |
| 
 | |
| # Assume Python 3.12.
 | |
| target-version = "py312"
 | |
| 
 | |
| [tool.ruff.lint.isort]
 | |
| known-third-party = ["alembic"]
 | |
| 
 | |
| [tool.ruff.lint]
 | |
| # Enable Pyflakes `E` and `F` codes by default.
 | |
| ignore = ["F403", "TID252", "B008"]
 | |
| select = [
 | |
|   "B",  # flake8-bugbear
 | |
|   "C4", # McCabe complexity
 | |
|   "C90", # flake8-comprehensions
 | |
|   "DTZ", # flake8-datetimez
 | |
|   "E",  # pycodestyles
 | |
|   "F",  # pyflakes
 | |
|   "I",  # isort
 | |
|   "T",  # flake8-print
 | |
|   "UP", # pyupgrade
 | |
|   # "ANN", # flake8-annotations
 | |
|   # "BLE", # blind-except
 | |
|   # "RUF", # Ruff specific
 | |
| ]
 | |
| 
 | |
| [tool.ruff.lint.per-file-ignores]
 | |
| "__init__.py" = ["E402", "E501"]
 | |
| "mealie/alembic/versions/*" = ["E501", "I001"]
 | |
| "dev/scripts/all_recipes_stress_test.py" = ["E501"]
 | |
| "ldap_provider.py" = ["UP032"]
 | |
| "tests/conftest.py" = ["E402"]
 | |
| "tests/utils/routes/__init__.py" = ["F401"]
 | |
| 
 | |
| [tool.ruff.lint.mccabe]
 | |
| # Unlike Flake8, default to a complexity level of 10.
 | |
| max-complexity = 24  # Default is 10.
 |