[project] name = "yunohost" description = "An operating system aiming to simplify as much as possible the administration of a server" readme = "README.md" dynamic = ["version"] authors = [ { name = "YunoHost", email = "yunohost@yunohost.org" } ] requires-python = ">=3.11" # These dependencies might not be up to date, please see debian/control instead dependencies = [ "moulinette @ git+https://github.com/yunohost/moulinette@dev", "bottle", "cryptography", # "dbus-python", "python-debian", "dnspython", "email-validator", "jinja2", "pyjwt>=1.7,<2.0", "lexicon", "miniupnpc", "packaging", "passlib", "psutil", "publicsuffix2", "pydantic>=1.0,<2.0", "pyopenssl", # "python-ldap", "python-magic", "pyyaml", "requests", "sdbus", "sortedcollections", "toml", "zeroconf", "zmq", ] [dependency-groups] tests = [ "mypy", "types-gevent", "types-passlib", "types-psutil", "types-pyOpenSSL", "types-pyYAML", "types-requests", "types-toml", "pytest", "mock", ] [tool.mypy] follow_imports = "skip" exclude = [ "acme_tiny", "migrations", "tests" ] [[tool.mypy.overrides]] # We don't provide (yet) typing in moulinette module = "moulinette.*" ignore_missing_imports = true [[tool.mypy.overrides]] # Those are the public, external modules that don't provide typing module = ["jwt", "sortedcollections", "IPython", "ldap.*", "dbus", "sdbus.*", "psutil", "bottle", "miniupnpc", "lexicon.*", "publicsuffix2"] ignore_missing_imports = true [tool.isort] profile = "black" [tool.black] [tool.ty] environment.root = ["."] [tool.pytest.ini_options] # for --cov-config see https://github.com/nedbat/coveragepy/issues/512 addopts = "-v --cov-config=pyproject.toml" norecursedirs = ["dist", "doc", "build", ".tox", ".eggs"] testpaths = ["tests/"] markers = [ "with_system_archive_from_3p8", "with_backup_recommended_app_installed", "clean_opt_dir", "with_wordpress_archive_from_3p8", "with_legacy_app_installed", "with_backup_recommended_app_installed_with_ynh_restore", "with_permission_app_installed", "other_domains", "with_custom_domain", ] filterwarnings = [ "ignore::urllib3.exceptions.InsecureRequestWarning", ] [tool.coverage.run] relative_files = true branch = true source = ["src/"] [tool.coverage.report] omit = [ "src/vendor/*", "/usr/lib/moulinette/yunohost/*", "/usr/lib/python3/dist-packages/yunohost/vendor/*", ] [tool.tox] env_list = ["py311-lint", "py311-invalidcode", "py311-black-check", "py311-black-run"] [tool.tox.env_run_base] skip_install = true allowlist_externals = ["black"] [tool.tox.env.py311-lint] deps = ["flake8"] commands = [[ "flake8", "src", "doc", "maintenance", "--ignore", "E402,E501,E203,W503,E741", "--exclude", "src/vendor,tests" ]] [tool.tox.env.py311-invalidcode] deps = ["flake8"] commands = [[ "flake8", "src", "bin", "maintenance", "--select", "F,E722,W605", "--exclude", "src/vendor,tests" ]] [tool.tox.env.py311-mypy] skip_install = false deps = ["mypy>=1.17"] dependency_groups = ["tests"] commands = [["mypy", "--install-types", "--non-interactive", "src/",]] [tool.tox.env.py311-black-check] deps = ["flake8"] commands = [["black", "bin", "src", "doc", "maintenance", "tests", "--check", "--diff"]] [tool.tox.env.py311-black-run] deps = ["black"] commands = [["black", "bin", "src", "doc", "maintenance", "tests"]]