-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Deprecation Notice: Make safety an optional dependency via extras #6365
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR removes the vendored safety module and its associated files from Pipenv and makes safety an optional dependency via extras. Key changes include:
- Deletion of all files under pipenv/patched/safety (formatter, errors, constants, cli, alerts, etc.)
- Introduction of new flags (--auto-install and --scan) in pipenv/cli/command.py and updated documentation to reflect usage of the new scan command.
- Removal of safety from the patched dependency list in pipenv/patched/patched.txt.
Reviewed Changes
Copilot reviewed 28 out of 33 changed files in this pull request and generated 1 comment.
File | Description |
---|---|
pipenv/patched/safety/* | Removal of the vendored safety code to shift to an optional installation via extras. |
pipenv/cli/command.py | New flags added for auto-installation and scanning; deprecation notice updated for check command. |
docs/cli.md & docs/commands.md | Documentation updated to reflect the new scan command and auto-install flag. |
pipenv/patched/patched.txt | Safety dependency removed from the vendor list. |
Files not reviewed (5)
- news/safety-command.bugfix.rst: Language not supported
- news/safety-extras.feature.rst: Language not supported
- pipenv/patched/pip/LICENSE-HEADER: Language not supported
- pipenv/patched/safety/LICENSE: Language not supported
- pipenv/patched/safety/VERSION: Language not supported
Comments suppressed due to low confidence (1)
pipenv/cli/command.py:560
- New flags '--auto-install' and '--scan' have been introduced; please add or update unit tests to ensure these options correctly trigger the intended safety installation and scanning behavior.
auto_install=auto_install,
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
prefix=f"{project.virtualenv_name}", | ||
suffix="_requirements.txt", | ||
delete=False, | ||
"""Create a temporary requirements file that safety can access.""" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This step is not necessary as safety can directly work with pipfiles.
We can remove it in the future.
@@ -43,6 +43,10 @@ optional-dependencies.dev = [ | |||
"sphinx", | |||
"towncrier", | |||
] | |||
optional-dependencies.safety = [ | |||
"safety>=3.0.0", | |||
"typer>=0.9.0", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
isnt' typer pulled automatically with safety?
@pytest.mark.parametrize("category", ["CVE", "packages"]) | ||
def test_pipenv_check_check_lockfile_categories(pipenv_instance_pypi, category): | ||
with pipenv_instance_pypi() as p: | ||
c = p.pipenv(f"install wheel==0.37.1 --categories={category}") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why remove this test?
Thank you for contributing to Pipenv!
Make safety an optional dependency via extras
Problem
Currently, pipenv vendors the safety package and its dependencies directly in the
pipenv/patched/
directory. This approach has several drawbacks:Solution
This PR makes safety an optional dependency via extras:
pipenv/patched/
pipenv[safety]
)Implementation Details
safety>=3.0.0
andtyper>=0.9.0
as optional dependencies underoptional-dependencies.safety
in pyproject.tomlTesting
To test this change:
pipenv check
without safety installed - it should prompt to install safetypipenv check
again to verify it works with the installed safetypip install pipenv[safety]
and verify check works without promptingImpact
The checklist
news/
directory to describe this fix with the extension.bugfix.rst
,.feature.rst
,.behavior.rst
,.doc.rst
..vendor.rst
. or.trivial.rst
(this will appear in the release changelog). Use semantic line breaks and name the file after the issue number or the PR #.