This commit is contained in:
Iliyan Angelov
2025-12-01 06:50:10 +02:00
parent 91f51bc6fe
commit 62c1fe5951
4682 changed files with 544807 additions and 31208 deletions

View File

@@ -0,0 +1,213 @@
Metadata-Version: 2.4
Name: safety
Version: 3.7.0
Summary: Scan dependencies for known vulnerabilities and licenses.
Project-URL: homepage, https://safetycli.com
Project-URL: source, https://github.com/pyupio/safety
Project-URL: issues, https://github.com/pyupio/safety/issues
Project-URL: changelog, https://github.com/pyupio/safety/blob/main/CHANGELOG.md
Project-URL: documentation, https://docs.safetycli.com/safety-docs
Author-email: Safety <cli@safetycli.com>
License-Expression: MIT
License-File: LICENSES/MIT.txt
License-File: LICENSES/NOTICE.md
Keywords: dependencies,licenses,safety,scan,vulnerabilities
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Telecommunications Industry
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Security
Requires-Python: >=3.9
Requires-Dist: authlib>=1.2.0
Requires-Dist: click>=8.0.2
Requires-Dist: dparse>=0.6.4
Requires-Dist: filelock<4.0,>=3.16.1
Requires-Dist: httpx
Requires-Dist: jinja2>=3.1.0
Requires-Dist: marshmallow>=3.15.0
Requires-Dist: nltk>=3.9
Requires-Dist: packaging>=21.0
Requires-Dist: pydantic>=2.6.0
Requires-Dist: requests
Requires-Dist: ruamel-yaml>=0.17.21
Requires-Dist: safety-schemas==0.0.16
Requires-Dist: tenacity>=8.1.0
Requires-Dist: tomli; python_version < '3.11'
Requires-Dist: tomlkit
Requires-Dist: typer>=0.16.0
Requires-Dist: typing-extensions>=4.7.1
Provides-Extra: github
Requires-Dist: pygithub>=1.43.3; extra == 'github'
Provides-Extra: gitlab
Requires-Dist: python-gitlab>=1.3.0; extra == 'gitlab'
Provides-Extra: spdx
Requires-Dist: spdx-tools>=0.8.2; extra == 'spdx'
Description-Content-Type: text/markdown
[![safety](https://cdn.safetycli.com/images/cli_readme_header.png)](https://docs.safetycli.com/)
[![Downloads](https://static.pepy.tech/badge/safety/month)](https://pepy.tech/project/safety)
![CI Status](https://github.com/pyupio/safety/actions/workflows/ci.yml/badge.svg)
![License](https://img.shields.io/github/license/pyupio/safety)
![PyPI Version](https://img.shields.io/pypi/v/safety)
![Python Versions](https://img.shields.io/pypi/pyversions/safety)
![Coverage](https://img.shields.io/codecov/c/github/pyupio/safety)
> [!NOTE]
> [Come and join us at SafetyCLI](https://apply.workable.com/safety/). We are hiring for various roles.
# Table of Contents
- [Table of Contents](#table-of-contents)
- [Introduction](#introduction)
- [Key Features](#key-features)
- [Getting Started](#getting-started)
- [GitHub Action](#github-action)
- [Command Line Interface](#command-line-interface)
- [1. Installation](#1-installation)
- [2. Log In or Register](#2-log-in-or-register)
- [3. Running Your First Scan](#3-running-your-first-scan)
- [Basic Commands](#basic-commands)
- [Service-Level Agreement (SLA)](#service-level-agreement-sla)
- [Detailed Documentation](#detailed-documentation)
- [License](#license)
- [Supported Python Versions](#supported-python-versions)
- [Resources](#resources)
# Introduction
Safety CLI is a Python dependency vulnerability scanner designed to enhance software supply chain security by detecting packages with known vulnerabilities and malicious packages in local development environments, CI/CD, and production systems.
Safety CLI can be deployed in minutes and provides clear, actionable recommendations for remediation of detected vulnerabilities.
Leveraging the industry's most comprehensive database of vulnerabilities and malicious packages, Safety CLI Scanner allows teams to detect vulnerabilities at every stage of the software development lifecycle.
# Key Features
- Versatile, comprehensive dependency security scanning for Python packages.
- Leverages Safety DB, the most comprehensive vulnerability data available for Python.
- Clear output with detailed recommendations for vulnerability remediation.
- Automatically updates requirements files to secure versions of dependencies where available, guided by your project's policy settings.
- Scanning of individual requirements files and project directories or system-wide scans on developer machines, CI/CD pipelines, and Production systems to detect vulnerable or malicious dependencies.
- JSON, SBOM, HTML and text output.
- Easy integration with CI/CD pipelines, including GitHub Actions.
- Enterprise Ready: Safety CLI can be deployed to large teams with complex project setups with ease, on-premise or as a SaaS product.
# Getting Started
## GitHub Action
- Test Safety CLI in CI/CD using our [GitHub Action](https://github.com/pyupio/safety-action).
- Full documentation on the [GitHub Action](https://github.com/pyupio/safety-action) is available on our [Documentation Hub](https://docs.safetycli.com).
## Command Line Interface
### 1. Installation
- Install Safety on your development machine.
- Run `pip install safety`.
### 2. Log In or Register
- Run your first scan using `safety scan`.
- If not authenticated, Safety will prompt for account creation or login.
- Use `safety auth` to check authentication status.
### 3. Running Your First Scan
- Navigate to a project directory and run `safety scan`.
- Safety will perform a scan and present results in the Terminal.
## Basic Commands
- `safety --help`: Access help and display all available commands.
- `safety auth`: Start authentication flow or display status.
- `safety scan`: Perform a vulnerability scan in the current directory.
- `safety system-scan`: Perform a scan across the entire development machine.
- `safety scan --apply-fixes`: Update vulnerable dependencies.
# Service-Level Agreement (SLA)
We are committed to maintaining a high level of responsiveness and transparency in managing issues reported in our codebases. This SLA outlines our policies and procedures for handling issues to ensure timely resolutions and effective communication with our community.
- [Read our full SLA](./SLA.md)
# Detailed Documentation
Full documentation is available at [https://docs.safetycli.com](https://docs.safetycli.com).
Included in the documentation are the following key topics:
**Safety CLI 3**
- [Introduction to Safety CLI 3](https://docs.safetycli.com/safety-docs/safety-cli-3/introduction-to-safety-cli-scanner)
- [Quick Start Guide](https://docs.safetycli.com/safety-docs/safety-cli-3/quick-start-guide)
- [Installation and Authentication](https://docs.safetycli.com/safety-docs/safety-cli-3/installation-and-authentication)
- [Scanning for Vulnerable and Malicious Packages](https://docs.safetycli.com/safety-docs/safety-cli-3/scanning-for-vulnerable-and-malicious-packages)
- [System-Wide Developer Machine Scanning](https://docs.safetycli.com/safety-docs/safety-cli-3/system-wide-developer-machine-scanning)
- [Viewing Scan Results](https://docs.safetycli.com/safety-docs/safety-cli-3/viewing-scan-results)
- [Available Commands and Inputs](https://docs.safetycli.com/safety-docs/safety-cli-3/available-commands-and-inputs)
- [Scanning in CI/CD](https://docs.safetycli.com/safety-docs/safety-cli-3/scanning-in-ci-cd)
- [License Scanning](https://docs.safetycli.com/safety-docs/safety-cli-3/license-scanning)
- [Exit Codes](https://docs.safetycli.com/safety-docs/safety-cli-3/exit-codes)
**Vulnerability Remediation**
- [Applying Fixes](https://docs.safetycli.com/safety-docs/vulnerability-remediation/applying-fixes)
**Integration**
- [Securing Git Repositories](https://docs.safetycli.com/safety-docs/installation/securing-git-repositories)
- [GitHub](https://docs.safetycli.com/safety-docs/installation/github)
- [GitHub Actions](https://docs.safetycli.com/safety-docs/installation/github-actions)
- [GitLab](https://docs.safetycli.com/safety-docs/installation/gitlab)
- [Git Post-Commit Hooks](https://docs.safetycli.com/safety-docs/installation/git-post-commit-hooks)
- [BitBucket](https://docs.safetycli.com/safety-docs/installation/bitbucket)
- [Pipenv](https://docs.safetycli.com/safety-docs/installation/pipenv)
- [Docker Containers](https://docs.safetycli.com/safety-docs/installation/docker-containers)
**Administration**
- [Policy Management](https://docs.safetycli.com/safety-docs/administration/policy-management)
**Output**
- [Output Options and Recommendations](https://docs.safetycli.com/safety-docs/output/output-options-and-recommendations)
- [JSON Output](https://docs.safetycli.com/safety-docs/output/json-output)
- [SBOM Output](https://docs.safetycli.com/safety-docs/output/sbom-output)
- [HTML Output](https://docs.safetycli.com/safety-docs/output/html-output)
**Miscellaneous**
- [Release Notes](https://docs.safetycli.com/safety-docs/miscellaneous/release-notes)
- [Breaking Changes in Safety 3](https://docs.safetycli.com/safety-docs/miscellaneous/release-notes/breaking-changes-in-safety-3)
- [Safety 2.x Documentation](https://docs.safetycli.com/safety-2)
- [Support](https://docs.safetycli.com/safety-docs/miscellaneous/support)
System status is available at [https://status.safetycli.com](https://status.safetycli.com)
Further support is available by emailing support@safetycli.com.
# License
Safety is released under the MIT License.
Upon creating an account, a 7-day free trial of our Team plan is offered to new users, after which they will be downgraded to our Free plan. This plan is limited to a single user and is not recommended for commercial purposes.
Our paid [plans for commercial use](https://safetycli.com/resources/plans) begin at just $25 per seat per month and allow scans to be performed using our full vulnerability database, complete with 3x more tracked vulnerabilities and malicious packages than our free plan and other providers. To learn more about our Team and Enterprise plans, please visit [https://safetycli.com/resources/plans](https://safetycli.com/resources/plans) or email sales@safetycli.com.
# Supported Python Versions
Safety CLI 3 supports Python versions >=3.9. Further details on supported versions, as well as options to run Safety CLI on versions <3.9 using a Docker image are available in our [Documentation Hub](https://docs.safetycli.com).
We maintain a policy of supporting all maintained and secure versions of Python, plus one minor version below the oldest maintained and secure version. Details on Python versions that meet these criteria can be found here: https://endoflife.date/python.
# Resources
- [Safety Cybersecurity website](https://safetycli.com)
- [Safety Login Page](https://safetycli.com/login)
- [Documentation](https://docs.safetycli.com)
- [Careers/Hiring](https://apply.workable.com/safety/)
- [Security Research and Blog](https://safetycli.com/blog)
- [GitHub Action](https://github.com/safetycli/action)
- [Support](mailto:support@safetycli.com)
- [Status Page](https://status.safetycli.com)

View File

@@ -0,0 +1,292 @@
../../../bin/safety,sha256=zFuaJ0cUdabWNlPPgIeAFqtel6OZckKiNcYjFk41FIQ,219
safety-3.7.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
safety-3.7.0.dist-info/METADATA,sha256=mmeb4xnYhfnxZn7ZbqKF2w8wyw4JiWsSWWcLPdZvf_I,11365
safety-3.7.0.dist-info/RECORD,,
safety-3.7.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
safety-3.7.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
safety-3.7.0.dist-info/entry_points.txt,sha256=eXnC376Y8wcbE54MtfD4aMp1si58WnqzDy-aWTqz81Q,42
safety-3.7.0.dist-info/licenses/LICENSES/MIT.txt,sha256=8MUwhwOgbPdaPSpxiF1MlaSz96_1Mrj60Ku5nB7Qbj0,1094
safety-3.7.0.dist-info/licenses/LICENSES/NOTICE.md,sha256=8trOZnMhj_3m0EMv4pAvy8YIv6cV7jRh0DJ7Qt9T28E,1663
safety/__init__.py,sha256=a5NtGqVDDPATKhju22zrTeJzVIyWfsatt0kDqMa40wk,90
safety/__main__.py,sha256=DyEZj5_I5xLub5pZnSSgtS5lfMObmPsBP05yzK2q7Gs,168
safety/__pycache__/__init__.cpython-312.pyc,,
safety/__pycache__/__main__.cpython-312.pyc,,
safety/__pycache__/asyncio_patch.cpython-312.pyc,,
safety/__pycache__/cli.cpython-312.pyc,,
safety/__pycache__/cli_util.cpython-312.pyc,,
safety/__pycache__/cli_utils.cpython-312.pyc,,
safety/__pycache__/codebase_utils.cpython-312.pyc,,
safety/__pycache__/console.cpython-312.pyc,,
safety/__pycache__/constants.cpython-312.pyc,,
safety/__pycache__/decorators.cpython-312.pyc,,
safety/__pycache__/emoji.cpython-312.pyc,,
safety/__pycache__/encoding.cpython-312.pyc,,
safety/__pycache__/error_handlers.cpython-312.pyc,,
safety/__pycache__/errors.cpython-312.pyc,,
safety/__pycache__/formatter.cpython-312.pyc,,
safety/__pycache__/meta.cpython-312.pyc,,
safety/__pycache__/output_utils.cpython-312.pyc,,
safety/__pycache__/safety.cpython-312.pyc,,
safety/__pycache__/util.cpython-312.pyc,,
safety/alerts/__init__.py,sha256=vU1Qiu3zDEEY5IgZ_OFT_ywVfWlqoslrCKgoOxGgy2Q,2951
safety/alerts/__pycache__/__init__.cpython-312.pyc,,
safety/alerts/__pycache__/github.cpython-312.pyc,,
safety/alerts/__pycache__/requirements.cpython-312.pyc,,
safety/alerts/__pycache__/utils.cpython-312.pyc,,
safety/alerts/github.py,sha256=4jpnFHt3OpGWrnSjDOv2x9-X179vL4UaJxDOjJpta1E,24461
safety/alerts/requirements.py,sha256=84pkC9YEi-2cRCy2T3fm8jHjd2dtPryhlpbyxfBe_cI,17714
safety/alerts/templates/issue.jinja2,sha256=ndgcwPHvI9-2wrZrQBxIX26YEL6EiRtdoXPxHrwZsG0,2373
safety/alerts/templates/pr.jinja2,sha256=Vl8iSdIk50_7B_527F4eDF67Gl_DsUb1I99letSU5YU,2070
safety/alerts/utils.py,sha256=aRR8prLkoZyGqzjg43o9-6Hgkp_gBjUzE0PTtCFeDks,11366
safety/asyncio_patch.py,sha256=L-gxDulrDVFm7W_EKPDOx7fr9QJE7MeNS9chzL0FUO0,2948
safety/auth/__init__.py,sha256=yXgSiHvYDwRefrPwUqpF_55gnaT0FNOLOPECdzZeytM,229
safety/auth/__pycache__/__init__.cpython-312.pyc,,
safety/auth/__pycache__/cli.cpython-312.pyc,,
safety/auth/__pycache__/cli_utils.cpython-312.pyc,,
safety/auth/__pycache__/constants.cpython-312.pyc,,
safety/auth/__pycache__/main.cpython-312.pyc,,
safety/auth/__pycache__/models.cpython-312.pyc,,
safety/auth/__pycache__/server.cpython-312.pyc,,
safety/auth/__pycache__/utils.cpython-312.pyc,,
safety/auth/cli.py,sha256=idfQ27-H8kIMu0iiWWQek-I6kkJPK7UT_JPiSCwqGIc,11933
safety/auth/cli_utils.py,sha256=6ZN4HV7Cwy4dx3VJdPrQLpkSGv5FgN1-hEA5P3sCvcE,8343
safety/auth/constants.py,sha256=s7K8PLg0RMPiRuDwQuj1QJzxf5bFUDRZR6c0mGRLQpA,1391
safety/auth/main.py,sha256=uqstnXulpnU-Val3M946erUOfb8UpeeFsNXSjYw5vBk,8937
safety/auth/models.py,sha256=Dv9BmLe6TV3q7jYsW_3mwDkr2JHcRAm5aTNRzEwl8Oc,2464
safety/auth/server.py,sha256=ogAMHpbche4IuRl4lCO6A975M7qJ4jgvcba7DJWqSc4,10069
safety/auth/utils.py,sha256=XZnssc7khe0vnxANXCtKdaPfjsbNJSzsPHyHeOUwL60,22311
safety/cli.py,sha256=jpl-PS86ZS7N5WU_0XyXe5rpvRcioCtPVXLJXsn_xW4,41631
safety/cli_util.py,sha256=MbcHbt5zfmHS_7Zyv6rnrxST3SXmWyIKs7d6-McGeEc,30492
safety/cli_utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
safety/codebase/__pycache__/command.cpython-312.pyc,,
safety/codebase/__pycache__/constants.cpython-312.pyc,,
safety/codebase/__pycache__/main.cpython-312.pyc,,
safety/codebase/__pycache__/render.cpython-312.pyc,,
safety/codebase/command.py,sha256=3riJNIMODbKSEVdsFhXLSqsmuaaFxMm3Jlut2mT6kfY,5273
safety/codebase/constants.py,sha256=9UdTNmp9J7qiyNV7EQouuMFuT5eKHJoJjEuYlORiPQY,2140
safety/codebase/main.py,sha256=_I85g0A0ihCfczQ25NoxczfgT3-5_bwy8AfSkorbcMY,3702
safety/codebase/render.py,sha256=TOCt1FO9bubG4lG3bFHI2ouTNtLgqnYzbn4_L46dPUc,951
safety/codebase_utils.py,sha256=bPODHdxDg983cjmoTZIpuChjNgwFZ3-YGucn9FnZol4,2624
safety/console.py,sha256=8bMliz1qIKLaX6XqbbFQ3VQ7v9Bo_nDWU1DxvOxFmr4,4063
safety/constants.py,sha256=7fyhGUhi3_EAXslouT63thNgFGB-8fgnZ8xXY3hkf3s,8903
safety/decorators.py,sha256=F5tX8PjjJrsa9OMJ4JM8SiD0E4hJlsa5UlIT-9D9dks,1191
safety/emoji.py,sha256=VSJyzAg1CXk05tZ4xeMxGb054mtXuaKbQJHc_gIKvBQ,2908
safety/encoding.py,sha256=ztnjpd0gDX53tbtiaYALlH_azyF3zLCJc9l8PBPFHvI,776
safety/error_handlers.py,sha256=tIoDmbHdBo0euPA-9C89-ll-sbVFRL5AHBhHQAshMR4,2574
safety/errors.py,sha256=eqBw0Z-eGch0kFy5FlfqZ31dtRsy7Nh8QXwtMMgbeOQ,8760
safety/events/__init__.py,sha256=nAIe_StwA8euFUAHG_P44306PEZ5phe7cbfl5D-pbK0,599
safety/events/__pycache__/__init__.cpython-312.pyc,,
safety/events/event_bus/__init__.py,sha256=cniaOhzsQFumZiZTLSMFoRugcrdvIC2DiBDDmtsaw6M,115
safety/events/event_bus/__pycache__/__init__.cpython-312.pyc,,
safety/events/event_bus/__pycache__/bus.cpython-312.pyc,,
safety/events/event_bus/__pycache__/utils.cpython-312.pyc,,
safety/events/event_bus/bus.py,sha256=86H5soz7xOKtfdbPcbCJqzKzPgKJfo18YNy70yEy0Rc,11099
safety/events/event_bus/utils.py,sha256=GpZfZJar-HzXIz074RYjFSbwjHJ465CO_oE9z3jBSqc,1914
safety/events/handlers/__init__.py,sha256=8Is24tRkBcd300lk9h7rCimj9b1YjocoYgPYpZZ1IQw,127
safety/events/handlers/__pycache__/__init__.cpython-312.pyc,,
safety/events/handlers/__pycache__/base.cpython-312.pyc,,
safety/events/handlers/__pycache__/common.cpython-312.pyc,,
safety/events/handlers/base.py,sha256=mNVu0ncw3t1W-sp_71NqNYf1sj-wufKgJLPG_KbFOKs,701
safety/events/handlers/common.py,sha256=yOsxE7wraBfPDXqCs22IteJ4ddOCQtuu0Tby12gQlOE,10708
safety/events/types/__init__.py,sha256=Wc-1KAz9H9N_z5K3uAvkvQlu7wfJpVDYXG_EtDa100s,697
safety/events/types/__pycache__/__init__.cpython-312.pyc,,
safety/events/types/__pycache__/aliases.cpython-312.pyc,,
safety/events/types/__pycache__/base.cpython-312.pyc,,
safety/events/types/aliases.py,sha256=1GyaNJC8L5lJcmmUNMfhyMdf_LAuJcI4xENgBk2Vjro,2712
safety/events/types/base.py,sha256=A6oL_9EG4V-aNm6gJSoJcOATjaHMw7qpmZXFqjstfyo,618
safety/events/utils/__init__.py,sha256=J05FBAiDC6NOMuQLMhrjoFvN8vSsxYfE8asWKU7ZpXM,770
safety/events/utils/__pycache__/__init__.cpython-312.pyc,,
safety/events/utils/__pycache__/conditions.cpython-312.pyc,,
safety/events/utils/__pycache__/context.cpython-312.pyc,,
safety/events/utils/__pycache__/creation.cpython-312.pyc,,
safety/events/utils/__pycache__/data.cpython-312.pyc,,
safety/events/utils/__pycache__/emission.cpython-312.pyc,,
safety/events/utils/conditions.py,sha256=59C_jJzs0UDobcrnib7U2k0nx9JWkqiJBTQxocfQKWc,2139
safety/events/utils/context.py,sha256=lpdnBQgrAS-0VZALvO8lW-CpMM9JUcppd7kaCT0eaSI,4736
safety/events/utils/creation.py,sha256=NAgtzAfuVuPXsKsm8gf0RVKjjFKoBoNmPqoQ0sJJuWo,1231
safety/events/utils/data.py,sha256=4Lhd5a9fvFdL55JiVLM_yNq-McjoPljJ6j0vgBOcQ0A,3025
safety/events/utils/emission.py,sha256=y6S9WQtXF7Jez8couj4vq_NrBYlxwjhXA22F-Zbx4mc,18287
safety/firewall/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
safety/firewall/__pycache__/__init__.cpython-312.pyc,,
safety/firewall/__pycache__/command.cpython-312.pyc,,
safety/firewall/__pycache__/constants.cpython-312.pyc,,
safety/firewall/command.py,sha256=UE6MWBpjUqavosi2KX55kIjqGCeKQ41yHp5gShUu6Mo,5109
safety/firewall/constants.py,sha256=anteskMpuNCCVXCBa9f0_MyHlAUIZGCsVt8Nu-iHI3A,1286
safety/firewall/events/__init__.py,sha256=UrlhJG6AU3UwJzlw2EMpiy_4cOjZchLooXhY0whB6r8,83
safety/firewall/events/__pycache__/__init__.cpython-312.pyc,,
safety/firewall/events/__pycache__/handlers.cpython-312.pyc,,
safety/firewall/events/__pycache__/utils.cpython-312.pyc,,
safety/firewall/events/handlers.py,sha256=t5hQtASE9_qaUfwxSeVc-DmcvpULpcxkXmay6l8yRc4,851
safety/firewall/events/utils.py,sha256=cgJXLkrUqx4tOmPXaSlF7LBWd_RZeixNOCWqxiU_MlE,1509
safety/formatter.py,sha256=WGNJM_v19u3XpleCEvyE1gRbS1L648Y-eQLWRXz610s,5369
safety/formatters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
safety/formatters/__pycache__/__init__.cpython-312.pyc,,
safety/formatters/__pycache__/bare.cpython-312.pyc,,
safety/formatters/__pycache__/html.cpython-312.pyc,,
safety/formatters/__pycache__/json.cpython-312.pyc,,
safety/formatters/__pycache__/screen.cpython-312.pyc,,
safety/formatters/__pycache__/text.cpython-312.pyc,,
safety/formatters/bare.py,sha256=HAUFY5Ioj7xL6lXUgPNzCdTcwcRSx7ZllKVGMeCOPdk,2867
safety/formatters/html.py,sha256=ZAQ8tq_Ncnrz_Xstb0LAZua9lNqUuZfMByR6_nN9Mqo,2009
safety/formatters/json.py,sha256=KoZJCq7YyJ3MGaC64JcuOd4A-OZsHrJLoQz9FzNHUI0,7872
safety/formatters/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
safety/formatters/schemas/__pycache__/__init__.cpython-312.pyc,,
safety/formatters/schemas/__pycache__/zero_five.cpython-312.pyc,,
safety/formatters/schemas/zero_five.py,sha256=PTiNo3fqtgrlCltkRb7alkNHVXjoaHVzhEEStcZ1gw4,2903
safety/formatters/screen.py,sha256=WozS9ND6voBDyu3tlzyiK_qUsQyU0v-eB_g4DUhwg_M,10195
safety/formatters/text.py,sha256=ecefgZEk6BeVLz2zO-ioiPm1TlV_BkGPxjCqN11Ii4Y,8186
safety/init/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
safety/init/__pycache__/__init__.cpython-312.pyc,,
safety/init/__pycache__/command.cpython-312.pyc,,
safety/init/__pycache__/constants.cpython-312.pyc,,
safety/init/__pycache__/main.cpython-312.pyc,,
safety/init/__pycache__/models.cpython-312.pyc,,
safety/init/__pycache__/render.cpython-312.pyc,,
safety/init/__pycache__/types.cpython-312.pyc,,
safety/init/command.py,sha256=TP_bMCT-zv66pK3vdJQ0Vd60zeS0NmiIEJKIKPdmFgg,25179
safety/init/constants.py,sha256=_QhhJ4Fqf_Sf3vn0sKLWjhCAgIu-kK9SJOphKTrXFfg,5643
safety/init/main.py,sha256=xjjRhV-8cnO0StSSodwpUia5YmzA5KPibTUls0XhlhI,16161
safety/init/models.py,sha256=5FRZ5BZKF_SAEwe8KmlNZpSfz22ZNfMt85jcK6Yuw58,171
safety/init/render.py,sha256=Rq7DgkOmrg17nuDta2rkgLiM5PUDHYE5En5VSZLB9s4,4397
safety/init/types.py,sha256=v_6lDD3TKR6m-1tcc1XBTELIbi55Fz85HvLmBg3mbgk,339
safety/meta.py,sha256=NypTENvT5YsiFaDWpy1rhA6tsOaYyNK_WM2cyrHe-rs,2038
safety/models/__init__.py,sha256=E_9E7-pi8EvRr8gFxxLav5LzDVFR7yWG61PRXi7paAQ,487
safety/models/__pycache__/__init__.cpython-312.pyc,,
safety/models/__pycache__/obj.cpython-312.pyc,,
safety/models/__pycache__/requirements.cpython-312.pyc,,
safety/models/__pycache__/tools.cpython-312.pyc,,
safety/models/__pycache__/vulnerabilities.cpython-312.pyc,,
safety/models/obj.py,sha256=pcVnsITdXdU_hQMz8t9RSPH10YCTLAtUmmfxdebA_SI,1272
safety/models/requirements.py,sha256=riYywjZ2QbK1qfUumBoW2PcaHwysN0ZCydpGNrvIPKg,510
safety/models/tools.py,sha256=D9sxdjrXeIMrXmL3y2nTQkroIfY4eKoglr0Hei4U1QM,175
safety/models/vulnerabilities.py,sha256=M2-oR9ZNynRcBGNnAUE4T425JWq_0gMUz6ER7lrCuSY,13712
safety/output_utils.py,sha256=sJc9j9slhU02xRJk1EGbcZaJw3RnVf3bK5zhzdGmZ5U,48155
safety/safety-policy-template.yml,sha256=klCvNsPi_HeLbN22Aph1UiA-9boxSO_c83S7yJzG858,4850
safety/safety.py,sha256=BOsdDFrMZ5o8eBuLbQIGUyx9DV9VgobgS_cQIw5I_bw,65875
safety/scan/__init__.py,sha256=ELirpq6gfKU6WGsw4F97HP7wCL1JQs9yFVgn88MBVDg,232
safety/scan/__pycache__/__init__.cpython-312.pyc,,
safety/scan/__pycache__/command.cpython-312.pyc,,
safety/scan/__pycache__/constants.cpython-312.pyc,,
safety/scan/__pycache__/decorators.cpython-312.pyc,,
safety/scan/__pycache__/init_scan.cpython-312.pyc,,
safety/scan/__pycache__/main.cpython-312.pyc,,
safety/scan/__pycache__/models.cpython-312.pyc,,
safety/scan/__pycache__/render.cpython-312.pyc,,
safety/scan/__pycache__/util.cpython-312.pyc,,
safety/scan/__pycache__/validators.cpython-312.pyc,,
safety/scan/command.py,sha256=gJdNDJ4DI2yCEf3qDWnnnO84mE139fOUZN7rTSJmFI4,52155
safety/scan/constants.py,sha256=cu4Sxn_vJdSTvQcRsMogcy_X2eUdaZE7ZCDQX7rPfzg,8696
safety/scan/decorators.py,sha256=mmHm8aYy20gnvMFAxGqxjcVj67QZ0z33xpkCEMrqbLU,11124
safety/scan/ecosystems/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
safety/scan/ecosystems/__pycache__/__init__.cpython-312.pyc,,
safety/scan/ecosystems/__pycache__/base.cpython-312.pyc,,
safety/scan/ecosystems/__pycache__/target.cpython-312.pyc,,
safety/scan/ecosystems/base.py,sha256=rhLzC54pYU259tIPeVe3lcaZCamKf9ROjD-k2i_mnAU,1633
safety/scan/ecosystems/python/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
safety/scan/ecosystems/python/__pycache__/__init__.cpython-312.pyc,,
safety/scan/ecosystems/python/__pycache__/dependencies.cpython-312.pyc,,
safety/scan/ecosystems/python/__pycache__/main.cpython-312.pyc,,
safety/scan/ecosystems/python/dependencies.py,sha256=LJQrUIZN0395mNF7nkD4nKDFy_2lQthuY_KPyVxI5mI,9034
safety/scan/ecosystems/python/main.py,sha256=NFO8l4InlcqKWHjiWvKTSO8uXdj8UZiacG6JNe6ONXY,19276
safety/scan/ecosystems/target.py,sha256=cjo8AWQ_4LtJVAhl8fb0au6WohvgvngNQq0NfzCZvjU,2727
safety/scan/finder/__init__.py,sha256=VJuTsL7UGiIGJuFbM2z9vpS9bNwpoxa6VLRTeQzmgeM,132
safety/scan/finder/__pycache__/__init__.cpython-312.pyc,,
safety/scan/finder/__pycache__/file_finder.cpython-312.pyc,,
safety/scan/finder/__pycache__/handlers.cpython-312.pyc,,
safety/scan/finder/file_finder.py,sha256=bTSu26FTF3h3hxFyLM_-viEKc7pX1zN6TGAuYdx68Sw,5870
safety/scan/finder/handlers.py,sha256=xbxC1j_PDyJmVSIveFJO5Wv18-3nDm3lgNoAYP_p9Bc,4088
safety/scan/fun_mode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
safety/scan/fun_mode/__pycache__/__init__.cpython-312.pyc,,
safety/scan/fun_mode/__pycache__/celebration_effects.cpython-312.pyc,,
safety/scan/fun_mode/__pycache__/easter_eggs.cpython-312.pyc,,
safety/scan/fun_mode/celebration_effects.py,sha256=nlrzkxsFmYpkSVnxhlcTris_-6Wg8BvhBPw0LnZbLts,6848
safety/scan/fun_mode/easter_eggs.py,sha256=2TdrUGHGL2fN7PAtF01j21q30Is1WOua0s00W6YJq0M,6763
safety/scan/init_scan.py,sha256=cV4kSp8Fc8o7vifET53Vf9ndEg8AnwIE5CI1rmi30XA,15943
safety/scan/main.py,sha256=1Y4tVjUIGRHcJXcUFZ8Q-PkorSZb7sq71tVMfRk8teQ,8880
safety/scan/models.py,sha256=S0KCTYeC7neDE2-kyqWkkNmxk6F_X17-wQrLjWPe048,3109
safety/scan/render.py,sha256=h2qjSHySbT2b9_lwiC6MPvtxcb0xoXGEi45_bxsyZRw,27919
safety/scan/util.py,sha256=WHWOQ2Uyil8rwvKvhrgxB-neOuLru_oV5M0x8eDwBHI,6806
safety/scan/validators.py,sha256=k6hCbrvWpENQITeLL3stcMmuLdvjbKqc_rr0WjmxF7M,2280
safety/templates/index.html,sha256=ZfxEEmOoeamjug4vJ42fUCHAUkbKeLsLU8HC0AchTK0,20510
safety/templates/scan/index.html,sha256=cvxSbODLiwYw-W0y9F9rerKOxqVFJw_Rych3v8kC47g,23780
safety/tool/__init__.py,sha256=iAt0NaqLVi4UD_-ZSdiAqKQOQrnjRmLVw4PdXYjoWdU,281
safety/tool/__pycache__/__init__.cpython-312.pyc,,
safety/tool/__pycache__/auth.cpython-312.pyc,,
safety/tool/__pycache__/base.cpython-312.pyc,,
safety/tool/__pycache__/constants.cpython-312.pyc,,
safety/tool/__pycache__/decorators.cpython-312.pyc,,
safety/tool/__pycache__/definitions.cpython-312.pyc,,
safety/tool/__pycache__/environment_diff.cpython-312.pyc,,
safety/tool/__pycache__/factory.cpython-312.pyc,,
safety/tool/__pycache__/intents.cpython-312.pyc,,
safety/tool/__pycache__/main.cpython-312.pyc,,
safety/tool/__pycache__/mixins.cpython-312.pyc,,
safety/tool/__pycache__/resolver.cpython-312.pyc,,
safety/tool/__pycache__/tool_inspector.cpython-312.pyc,,
safety/tool/__pycache__/typosquatting.cpython-312.pyc,,
safety/tool/__pycache__/utils.cpython-312.pyc,,
safety/tool/auth.py,sha256=f-RYZSJ36AL-ZJTkqeldp9ALl2rJWjeAGNIjb8tXt8U,1821
safety/tool/base.py,sha256=3o4LBmK2GkXwUP_T0oHcVDVZKfIyJC4BxBuKCcvednY,20119
safety/tool/constants.py,sha256=5rLQCdB7oQvfj3JY2qxg4PJaZnsJ3wbFW3I-lrkp4II,91690
safety/tool/decorators.py,sha256=yo1qUozCp8aT3YVgLq00i1R0mnlorlJNLaLM-Iuqkuw,1830
safety/tool/definitions.py,sha256=6-9c7ioPIEAMrFg-NyYD9ruIPRSTrhc5gOV-9wP0f6o,2943
safety/tool/environment_diff.py,sha256=RMS8xIhsFYdq8e9v6YOh-HscPWQ_96n9aOmyyMqkzlU,5382
safety/tool/factory.py,sha256=4UKZB1YjkLKCyNRD27PgPxQlDg74TAz231duUmTZ1T8,5900
safety/tool/intents.py,sha256=nW3Hmz4Qr1Og76NAnnfphO9kOL7HQsiDGsdvdjwFlpA,1884
safety/tool/interceptors/__init__.py,sha256=wYBGrs2bj_TpnyV463lOOIozy8doW72r_PnWNTjlsC4,128
safety/tool/interceptors/__pycache__/__init__.cpython-312.pyc,,
safety/tool/interceptors/__pycache__/base.cpython-312.pyc,,
safety/tool/interceptors/__pycache__/factory.cpython-312.pyc,,
safety/tool/interceptors/__pycache__/types.cpython-312.pyc,,
safety/tool/interceptors/__pycache__/unix.cpython-312.pyc,,
safety/tool/interceptors/__pycache__/windows.cpython-312.pyc,,
safety/tool/interceptors/base.py,sha256=lNL_-ko5DcWyow5kitWVnHRT-TDZgZKPNubVRCE4vmY,3119
safety/tool/interceptors/factory.py,sha256=B_kaJvF0hIZIXcl17NFpbe4xnqJZQ048jiUr1rsGRwo,967
safety/tool/interceptors/types.py,sha256=Mez6Dj9V6a28NN3n2s5a84AX6W8ilkuwg_EyuWLVsK4,108
safety/tool/interceptors/unix.py,sha256=6y1yWw-0ZxMtxoJMPIE6Pr6K-RcoapNEv0uFNfM_CE0,6666
safety/tool/interceptors/windows.py,sha256=oUjszr5dVxEkllWnWfriq6IcOBLyLxVPfNQMkyphz1s,20200
safety/tool/main.py,sha256=ikie92gw0ZJnRl9qmKdrIFZny4XJb9t7cveDSemW5mc,3204
safety/tool/mixins.py,sha256=yCmXp5D_TD3XPR0L49hj6BUISXxoODF2TCU4dk3JAV4,6863
safety/tool/npm/__init__.py,sha256=mJjMqoaqluYGuAvWmXIXrSitytwFU1tTgSE8yOD1a2M,48
safety/tool/npm/__pycache__/__init__.cpython-312.pyc,,
safety/tool/npm/__pycache__/command.cpython-312.pyc,,
safety/tool/npm/__pycache__/main.cpython-312.pyc,,
safety/tool/npm/__pycache__/parser.cpython-312.pyc,,
safety/tool/npm/command.py,sha256=TokJket7knqJ5u_85_ZmRa0iV_W9eVuT5acgrt6phn8,5395
safety/tool/npm/main.py,sha256=pwG-iTl8VCMSF6E7zSH2FUlI9DvXHUXgqjBcXk4oQL8,5030
safety/tool/npm/parser.py,sha256=U6rp3QSByYaELOeK3Ou4rfzmSwJRoGqNJWm-4p4NBBM,4548
safety/tool/pip/__init__.py,sha256=NBVGL6AbO1IPyeUlF30ZhyCm3Tvk9sbVcj1mwPJHZhc,41
safety/tool/pip/__pycache__/__init__.cpython-312.pyc,,
safety/tool/pip/__pycache__/command.cpython-312.pyc,,
safety/tool/pip/__pycache__/main.cpython-312.pyc,,
safety/tool/pip/__pycache__/parser.cpython-312.pyc,,
safety/tool/pip/command.py,sha256=RsIqe1BLSCNsTbnDfjQvKARjvp5HzdOAogehfJel6Cg,3504
safety/tool/pip/main.py,sha256=ROX9ZeclMv2p1Ja86zTU8M1s3W6I1oKi_8woFRkwLyg,4524
safety/tool/pip/parser.py,sha256=Wkmqg5bu8kQL1U1W0TUQ_pZfM4kTKIxt_ymsGCtH698,3127
safety/tool/poetry/__init__.py,sha256=Hedr7B1sVWA1g_z6imi9lZFsqHRlxtM3Y_6g5YDsKO4,54
safety/tool/poetry/__pycache__/__init__.cpython-312.pyc,,
safety/tool/poetry/__pycache__/command.cpython-312.pyc,,
safety/tool/poetry/__pycache__/constants.cpython-312.pyc,,
safety/tool/poetry/__pycache__/main.cpython-312.pyc,,
safety/tool/poetry/__pycache__/parser.cpython-312.pyc,,
safety/tool/poetry/command.py,sha256=fyetJPzHz2rMiqoNt3rP2lAeUffsn1lNXnwKW0TjMdw,5750
safety/tool/poetry/constants.py,sha256=lKj86FvtNBTOVaErpu-Z7o4p9ES_SFEcpahy1ocfTlA,324
safety/tool/poetry/main.py,sha256=EHTtGIAShkT4GyDQ_KbnIYOUzgA97_Yy6nMGE90cEdg,2875
safety/tool/poetry/parser.py,sha256=srDit34soQDtHvgHVsPLBp6yShFeallJaNH-WJ2kDc8,4077
safety/tool/resolver.py,sha256=tbzKucdUobKCldvPmF2jreknrYf8q7Mvvi5KLAy-2_c,2140
safety/tool/tool_inspector.py,sha256=3qx8YSjYBb6_e9z21kiMXndIX_Ep27peIMYmT6zz7Gw,9072
safety/tool/typosquatting.py,sha256=fYEwzMtcJ56GkZ_m0l2Et_fsLxAsvmHYMZrjSPZwJfw,2547
safety/tool/utils.py,sha256=dK0VQ4sMTjklImgDMn5N5B0polXRdp2GtwBOykxStug,4551
safety/tool/uv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
safety/tool/uv/__pycache__/__init__.cpython-312.pyc,,
safety/tool/uv/__pycache__/command.cpython-312.pyc,,
safety/tool/uv/__pycache__/list_pkgs.cpython-312.pyc,,
safety/tool/uv/__pycache__/main.cpython-312.pyc,,
safety/tool/uv/__pycache__/parser.cpython-312.pyc,,
safety/tool/uv/command.py,sha256=KvZucrZRy56BAz5-sSfFeiObZ4mQqLXP5f63Qb2ntLo,4397
safety/tool/uv/list_pkgs.py,sha256=TDBojGuFVeR0Zcpma-8CpNytrbsVcT5uBseuFMkmHtM,934
safety/tool/uv/main.py,sha256=m35Tz-0p3wWbwOu-Px8C4pd_RWzEI9UU5GLoaLarHWc,7715
safety/tool/uv/parser.py,sha256=RVK4UdMrsplnOm4efn-UxRFX5wqTy5y0qtEumo_TCcU,3231
safety/util.py,sha256=i4e2M3AUWE89c22tBkc2_L48sEfTijz4MzyyJAS3Jwc,47053
safety/utils/__pycache__/pyapp_utils.cpython-312.pyc,,
safety/utils/pyapp_utils.py,sha256=7ugrHfsF8nqbsxVSMzh3q_822fDUz_osW7vY34nkYe0,2072

View File

@@ -0,0 +1,4 @@
Wheel-Version: 1.0
Generator: hatchling 1.27.0
Root-Is-Purelib: true
Tag: py3-none-any

View File

@@ -0,0 +1,2 @@
[console_scripts]
safety = safety.cli:cli

View File

@@ -0,0 +1,18 @@
MIT License
Copyright (c) 2016 Safety CLI Cybersecurity Inc
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial
portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -0,0 +1,49 @@
# Package Licenses
| Name | Version | License |
|------|---------|----------|
| annotated-types | 0.7.0 | MIT License |
| anyio | 4.5.2 | MIT |
| authlib | 1.3.2 | BSD-3-Clause |
| certifi | 2025.1.31 | MPL-2.0 |
| cffi | 1.17.1 | MIT |
| charset-normalizer | 3.4.1 | MIT |
| click | 8.1.8 | BSD License |
| cryptography | 44.0.2 | Apache-2.0 OR BSD-3-Clause |
| dparse | 0.6.4 | MIT license |
| exceptiongroup | 1.2.2 | MIT License |
| filelock | 3.16.1 | Unlicense |
| h11 | 0.14.0 | MIT |
| httpcore | 1.0.8 | BSD-3-Clause |
| httpx | 0.28.1 | BSD-3-Clause |
| idna | 3.10 | BSD License |
| jinja2 | 3.1.6 | BSD License |
| joblib | 1.4.2 | BSD 3-Clause |
| markdown-it-py | 3.0.0 | MIT License |
| markupsafe | 2.1.5 | BSD-3-Clause |
| marshmallow | 3.22.0 | MIT License |
| mdurl | 0.1.2 | MIT License |
| nltk | 3.9.1 | Apache License, Version 2.0 |
| packaging | 25.0 | Apache Software License |
| pip | 23.0.1 | MIT |
| psutil | 6.1.1 | BSD-3-Clause |
| pycparser | 2.22 | BSD-3-Clause |
| pydantic | 2.9.2 | MIT |
| pydantic-core | 2.23.4 | MIT |
| pygments | 2.19.1 | BSD-2-Clause |
| regex | 2024.11.6 | Apache Software License |
| requests | 2.32.3 | Apache-2.0 |
| rich | 14.0.0 | MIT |
| ruamel-yaml | 0.18.10 | MIT license |
| ruamel-yaml-clib | 0.2.8 | MIT |
| safety-schemas | 0.0.14 | MIT |
| setuptools | 75.3.2 | MIT License |
| shellingham | 1.5.4 | ISC License |
| sniffio | 1.3.1 | MIT OR Apache-2.0 |
| tenacity | 9.0.0 | Apache 2.0 |
| tomli | 2.2.1 | MIT License |
| tomlkit | 0.13.2 | MIT |
| tqdm | 4.67.1 | MPL-2.0 AND MIT |
| typer | 0.15.2 | MIT License |
| typing-extensions | 4.13.2 | PSF-2.0 |
| urllib3 | 2.2.3 | MIT License |