[build-system] build-backend = "setuptools.build_meta" requires = [ "setuptools>=67", ] [project] name = "pipenv" description = "Python Development Workflow for Humans." readme = "README.md" license = {file = "LICENSE"} authors = [ {name = "Pipenv maintainer team", email = "distutils-sig@python.org"}, ] requires-python = ">=3.8" classifiers=[ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", ] dynamic = [ "version", ] dependencies = [ "certifi", "setuptools>=67", "virtualenv>=20.24.2", ] [project.optional-dependencies] dev = [ "beautifulsoup4", "black==23.3", "flake8<4.0,>=3.3", "invoke", "parver", "sphinx", "towncrier", ] tests = [ "flaky", "mock", "pytest>=5", "pytest-timeout", "pytest-xdist", ] [project.urls] Documentation = "https://pipenv.pypa.io/en/latest/" Homepage = "https://github.com/pypa/pipenv" Source = "https://github.com/pypa/pipenv.git" [project.scripts] pipenv = "pipenv:cli" pipenv-resolver = "pipenv.resolver:main" [tool.setuptools.packages.find] where = ["."] exclude = ["tests*", "tests.*", "tasks*", "tasks.*"] [tool.setuptools.package-data] "*" = ["LICENSE", "NOTICES"] "pipenv.patched.safety" = ["VERSION", "safety-policy-template.yml"] "pipenv.patched.pip._vendor.certifi" = ["*.pem"] "pipenv.patched.pip._vendor.requests" = ["*.pem"] "pipenv.patched.pip._vendor.distlib" = [ "t32.exe", "t64.exe", "w32.exe", "w64.exe", ] "pipenv.vendor.ruamel" = ["yaml"] [tool.setuptools.dynamic] version = {attr = "pipenv.__version__"} ## TESTING AND DEVELOPER CONFIGURATION BELOW ## [tool.black] line-length = 90 include = '\.pyi?$' exclude = ''' /( \.eggs | \.git | \.github | \.hg | \.mypy_cache | \.tox | \.pyre_configuration | \.venv | _build | buck-out | build | dist | pipenv/vendor | pipenv/patched | tests/pypi | tests/test_artifacts | get-pipenv.py | pyproject.toml ) ''' [tool.ruff] exclude = [ "pipenv/patched/*", "pipenv/vendor/*", ] select = [ "ASYNC", "B", "C4", "C90", "E", "F", "FLY", "G", "I", "ISC", "PERF", "PIE", "PL", "TID", "UP", "W", "YTT" ] ignore = [ "B904", "PIE790", "PLR5501", "PLW2901", ] line-length = 137 target-version = "py37" [tool.ruff.mccabe] max-complexity = 44 [tool.ruff.pylint] allow-magic-value-types = ["int", "str"] max-args = 20 max-branches = 38 max-returns = 9 max-statements = 155 [tool.ruff.per-file-ignores] "docs/conf.py" = ["E402", "E501"] "get-pipenv.py" = ["E402"] "pipenv/__init__.py" = ["E401"] "pipenv/cli/command.py" = ["TID252"] "pipenv/utils/internet.py" = ["PLW0603"] "pipenv/utils/resolver.py" = ["B018"] "tests/*" = ["E501", "F401", "I", "PLC1901", "S101"] "tests/integration/conftest.py" = ["B003", "PIE800", "PLW0603"] "tests/integration/test_pipenv.py" = ["E741"] "tests/integration/test_requirements.py" = ["E741"] "tests/unit/test_funktools.py" = ["B015"] "tests/unit/test_utils.py" = ["F811"] [tool.pytest.ini_options] addopts = "-ra" plugins = "xdist" testpaths = ["tests"] # Add vendor and patched in addition to the default list of ignored dirs # Additionally, ignore tasks, news, test subdirectories and peeps directory norecursedirs = [ ".*", "build", "dist", "CVS", "_darcs", "{arch}", "*.egg", "vendor", "patched", "news", "tasks", "docs", "tests/test_artifacts", "tests/pypi", "peeps", ] filterwarnings = [] # These are not all the custom markers, but most of the ones with repeat uses # `pipenv run pytest --markers` will list all markers including these markers = [ "install: tests having to do with `pipenv install`", "update: tests having to do with `pipenv update`", "needs_internet: integration tests that require internet to pass", "basic: basic pipenv tests grouping", "dev: tests having to do with dev and dev packages", "system: related or interacting with the os", "utils: grouping of pipenv utility functions", "cli: test grouping that relate to command line like `pipenv --flag args`", "requirements: tests that save and alter pip requirements", "run: tests that run or execute python through pipenv", "script: grouping of tests that execute scripts", "keep_outdated: when an activity is supposed to keep something out of date", "lock: tests that interact with pipenv lock", "markers: pipenv environment markers", "vcs: tests integration with pipenv and vertsion control systems", "project: tests with the project object", "sync: related to `pipenv sync`", "rrule: relating to rrules (as in recurring time)", "tzoffset: timezone offset", "gettz: tests with gettz (get timezone) from dateutil lib", "tzstr: timezone string", "extras", "extended", "ext: extra non-categorized tests", ] [tool.coverage.run] parallel = true [tool.mypy] ignore_missing_imports = true follow_imports = "skip" html_report = "mypyhtml" python_version = "3.7" mypy_path = "typeshed/pyi:typeshed/imports" [tool.towncrier] package = "pipenv" filename = "CHANGELOG.md" issue_format = "`#{issue} `_" directory = "news/" title_format = "{version} ({project_date})" template = "news/towncrier_template.rst" [[tool.towncrier.type]] directory = "feature" name = "Features & Improvements" showcontent = true [[tool.towncrier.type]] directory = "behavior" name = "Behavior Changes" showcontent = true [[tool.towncrier.type]] directory = "bugfix" name = "Bug Fixes" showcontent = true [[tool.towncrier.type]] directory = "vendor" name = "Vendored Libraries" showcontent = true [[tool.towncrier.type]] directory = "doc" name = "Improved Documentation" showcontent = true [[tool.towncrier.type]] directory = "trivial" name = "Trivial Changes" showcontent = false [[tool.towncrier.type]] directory = "removal" name = "Removals and Deprecations" showcontent = true [[tool.towncrier.type]] directory = "process" name = "Relates to dev process changes" showcontent = true