===============
VulnerableCode
===============
|Build Status| |Code License| |Data License| |Python 3.8+| |stability-wip| |Gitter chat|
.. |Build Status| image:: https://github.com/nexB/vulnerablecode/actions/workflows/main.yml/badge.svg?branch=main
:target: https://github.com/nexB/vulnerablecode/actions?query=workflow%3ACI
.. |Code License| image:: https://img.shields.io/badge/Code%20License-Apache--2.0-green.svg
:target: https://opensource.org/licenses/Apache-2.0
.. |Data License| image:: https://img.shields.io/badge/Data%20License-CC--BY--SA--4.0-green.svg
:target: https://creativecommons.org/licenses/by-sa/4.0/legalcode
.. |Python 3.8+| image:: https://img.shields.io/badge/python-3.8+-green.svg
:target: https://www.python.org/downloads/release/python-380/
.. |stability-wip| image:: https://img.shields.io/badge/stability-work_in_progress-lightgrey.svg
.. |Gitter chat| image:: https://badges.gitter.im/gitterHQ/gitter.png
:target: https://gitter.im/aboutcode-org/vulnerablecode
VulnerableCode is a free and open database of open source software package
vulnerabilities **because open source software vulnerabilities data and tools
should be free and open source themselves**:
we are trying to change this and evolve the status quo in a few other areas!
- Vulnerability databases have been **traditionally proprietary** even though they
are mostly about free and open source software.
- Vulnerability databases also often contain a lot of lesser value data which
means a lot of false positive signals that require extensive expert reviews.
- Vulnerability databases are also mostly about vulnerabilities first and software
package second, making it difficult to find if and when a vulnerability applies
to a piece of code. VulnerableCode focus is on software package first where
a Package URL is a key and natural identifier for packages; this is making it
easier to find a package and whether it is vulnerable.
Package URL themselves were designed first in ScanCode and VulnerableCode
and are now a de-facto standard for vulnerability management and package references.
See https://github.com/package-url/purl-spec
The VulnerableCode project is a FOSS community resource to help improve the
security of the open source software ecosystem and its users at large.
VulnerableCode consists of a database and the tools to collect, refine and keep
the database current.
.. pull-quote::
**Warning**
VulnerableCode is under active development and is not yet fully
usable.
Read more about VulnerableCode https://vulnerablecode.readthedocs.org/
VulnerableCode tech stack is Python, Django, PostgreSQL, nginx and Docker and
several libraries.
Getting started
===============
Run with Docker
---------------
First install docker, then run
.. code:: bash
git clone https://github.com/nexB/vulnerablecode.git && cd vulnerablecode
make envfile
docker compose build
docker compose up -d
docker compose run vulnerablecode ./manage.py import --list
Then run an importer for nginx advisories (which is small)
.. code:: bash
docker compose exec vulnerablecode ./manage.py import nginx_importer
docker compose exec vulnerablecode ./manage.py improve --all
At this point, the VulnerableCode app and API should be up and running with
some data at http://localhost
Populate VulnerableCode database
--------------------------------
VulnerableCode data collection works in two steps: importing data from multiple
sources and then refining and improving how package and software vulnerabilities
are related.
To run all importers and improvers use this
.. code:: bash
./manage.py import --all
.. code:: bash
./manage.py improve --all
Local development installation
------------------------------
On a Debian system, use this
.. code:: bash
sudo apt-get install python3-venv python3-dev postgresql libpq-dev build-essential
git clone https://github.com/nexB/vulnerablecode.git && cd vulnerablecode
make dev envfile postgres
make test
source venv/bin/activate
./manage.py import nginx_importer
./manage.py improve --all
make run
At this point, the VulnerableCode app and API is up at http://127.0.0.1:8001/
License
========
Copyright (c) nexB Inc. and others. All rights reserved.
VulnerableCode is a trademark of nexB Inc.
SPDX-License-Identifier: Apache-2.0 AND CC-BY-SA-4.0
VulnerableCode software is licensed under the Apache License version 2.0.
VulnerableCode data is licensed collectively under CC-BY-SA-4.0.
See https://www.apache.org/licenses/LICENSE-2.0 for the license text.
See https://creativecommons.org/licenses/by-sa/4.0/legalcode for the license text.
See https://github.com/nexB/vulnerablecode for support or download.
See https://aboutcode.org for more information about nexB OSS projects.
Acknowledgements, Funding, Support and Sponsoring
=================================================
This project is funded, supported and sponsored by:
- Generous support and contributions from users like you!
- the European Commission NGI programme
- the NLnet Foundation
- the Swiss State Secretariat for Education, Research and Innovation (SERI)
- Google, including the Google Summer of Code and the Google Seasons of Doc programmes
- Mercedes-Benz Group
- Microsoft and Microsoft Azure
- AboutCode ASBL
- nexB Inc.
|europa| |dgconnect|
|ngi| |nlnet|
|aboutcode| |nexb|
This project was funded through the NGI0 PET Fund, a fund established by NLnet with financial
support from the European Commission's Next Generation Internet programme, under the aegis of DG
Communications Networks, Content and Technology under grant agreement No 825310.
|ngizeropet| https://nlnet.nl/project/VulnerableCode/
This project was funded through the NGI0 Discovery Fund, a fund established by NLnet with financial
support from the European Commission's Next Generation Internet programme, under the aegis of DG
Communications Networks, Content and Technology under grant agreement No 825322.
|ngidiscovery| https://nlnet.nl/project/vulnerabilitydatabase/
This project was funded through the NGI0 Core Fund, a fund established by NLnet with financial
support from the European Commission's Next Generation Internet programme, under the aegis of DG
Communications Networks, Content and Technology under grant agreement No 101092990.
|ngizerocore| https://nlnet.nl/project/VulnerableCode-enhancements/
This project is funded through the NGI0 Entrust Fund, a fund established by NLnet with financial
support from the European Commission's Next Generation Internet programme, under the aegis of DG
Communications Networks, Content and Technology under grant agreement No 101069594.
|ngizeroentrust| https://nlnet.nl/project/FederatedSoftwareMetadata/
This project was funded through the NGI0 Commons Fund, a fund established by NLnet with financial
support from the European Commission's Next Generation Internet programme, under the aegis of DG
Communications Networks, Content and Technology under grant agreement No 101135429. Additional
funding is made available by the Swiss State Secretariat for Education, Research and Innovation
(SERI).
|ngizerocommons| |swiss| https://nlnet.nl/project/FederatedCodeNext/
This project was funded through the NGI0 Entrust Fund, a fund established by NLnet with financial
support from the European Commission's Next Generation Internet programme, under the aegis of DG
Communications Networks, Content and Technology under grant agreement No 101069594.
|ngizeroentrust| https://nlnet.nl/project/CRAVEX/
.. |nlnet| image:: https://nlnet.nl/logo/banner.png
:target: https://nlnet.nl
:height: 50
:alt: NLnet foundation logo
.. |ngi| image:: https://ngi.eu/wp-content/uploads/thegem-logos/logo_8269bc6efcf731d34b6385775d76511d_1x.png
:target: https://ngi.eu35
:height: 50
:alt: NGI logo
.. |nexb| image:: https://nexb.com/wp-content/uploads/2022/04/nexB.svg
:target: https://nexb.com
:height: 30
:alt: nexB logo
.. |europa| image:: https://ngi.eu/wp-content/uploads/sites/77/2017/10/bandiera_stelle.png
:target: http://ec.europa.eu/index_en.htm
:height: 40
:alt: Europa logo
.. |aboutcode| image:: https://aboutcode.org/wp-content/uploads/2023/10/AboutCode.svg
:target: https://aboutcode.org/
:height: 30
:alt: AboutCode logo
.. |swiss| image:: https://www.sbfi.admin.ch/sbfi/en/_jcr_content/logo/image.imagespooler.png/1493119032540/logo.png
:target: https://www.sbfi.admin.ch/sbfi/en/home/seri/seri.html
:height: 40
:alt: Swiss logo
.. |dgconnect| image:: https://commission.europa.eu/themes/contrib/oe_theme/dist/ec/images/logo/positive/logo-ec--en.svg
:target: https://commission.europa.eu/about-european-commission/departments-and-executive-agencies/communications-networks-content-and-technology_en
:height: 40
:alt: EC DG Connect logo
.. |ngizerocore| image:: https://nlnet.nl/image/logos/NGI0_tag.svg
:target: https://nlnet.nl/core
:height: 40
:alt: NGI Zero Core Logo
.. |ngizerocommons| image:: https://nlnet.nl/image/logos/NGI0_tag.svg
:target: https://nlnet.nl/commonsfund/
:height: 40
:alt: NGI Zero Commons Logo
.. |ngizeropet| image:: https://nlnet.nl/image/logos/NGI0PET_tag.svg
:target: https://nlnet.nl/PET
:height: 40
:alt: NGI Zero PET logo
.. |ngizeroentrust| image:: https://nlnet.nl/image/logos/NGI0Entrust_tag.svg
:target: https://nlnet.nl/entrust
:height: 38
:alt: NGI Zero Entrust logo
.. |ngiassure| image:: https://nlnet.nl/image/logos/NGIAssure_tag.svg
:target: https://nlnet.nl/image/logos/NGIAssure_tag.svg
:height: 32
:alt: NGI Assure logo
.. |ngidiscovery| image:: https://nlnet.nl/image/logos/NGI0Discovery_tag.svg
:target: https://nlnet.nl/discovery/
:height: 40
:alt: NGI Discovery logo
Raw data
{
"_id": null,
"home_page": "https://github.com/nexB/vulnerablecode",
"name": "vulnerablecode",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "open source, vulnerability, security, cve, purl, packageurl, dependency, package, vulnerability-db, SBOM, sca",
"author": "nexB. Inc. and others",
"author_email": "info@aboutcode.org",
"download_url": "https://files.pythonhosted.org/packages/b0/9a/de437f1091777a5d1b40146026cdb3e750a8826e0c5f1c2abd6b93f525c7/vulnerablecode-35.1.0.tar.gz",
"platform": null,
"description": "===============\nVulnerableCode\n===============\n\n|Build Status| |Code License| |Data License| |Python 3.8+| |stability-wip| |Gitter chat|\n\n\n.. |Build Status| image:: https://github.com/nexB/vulnerablecode/actions/workflows/main.yml/badge.svg?branch=main\n :target: https://github.com/nexB/vulnerablecode/actions?query=workflow%3ACI\n.. |Code License| image:: https://img.shields.io/badge/Code%20License-Apache--2.0-green.svg\n :target: https://opensource.org/licenses/Apache-2.0\n.. |Data License| image:: https://img.shields.io/badge/Data%20License-CC--BY--SA--4.0-green.svg\n :target: https://creativecommons.org/licenses/by-sa/4.0/legalcode \n.. |Python 3.8+| image:: https://img.shields.io/badge/python-3.8+-green.svg\n :target: https://www.python.org/downloads/release/python-380/\n.. |stability-wip| image:: https://img.shields.io/badge/stability-work_in_progress-lightgrey.svg\n.. |Gitter chat| image:: https://badges.gitter.im/gitterHQ/gitter.png\n :target: https://gitter.im/aboutcode-org/vulnerablecode\n\n\nVulnerableCode is a free and open database of open source software package\nvulnerabilities **because open source software vulnerabilities data and tools\nshould be free and open source themselves**:\n\nwe are trying to change this and evolve the status quo in a few other areas!\n\n- Vulnerability databases have been **traditionally proprietary** even though they\n are mostly about free and open source software. \n\n- Vulnerability databases also often contain a lot of lesser value data which\n means a lot of false positive signals that require extensive expert reviews.\n\n- Vulnerability databases are also mostly about vulnerabilities first and software\n package second, making it difficult to find if and when a vulnerability applies\n to a piece of code. VulnerableCode focus is on software package first where\n a Package URL is a key and natural identifier for packages; this is making it\n easier to find a package and whether it is vulnerable.\n\nPackage URL themselves were designed first in ScanCode and VulnerableCode\nand are now a de-facto standard for vulnerability management and package references.\nSee https://github.com/package-url/purl-spec\n\nThe VulnerableCode project is a FOSS community resource to help improve the\nsecurity of the open source software ecosystem and its users at large.\n\nVulnerableCode consists of a database and the tools to collect, refine and keep\nthe database current. \n\n\n.. pull-quote::\n **Warning**\n\n VulnerableCode is under active development and is not yet fully\n usable.\n\n\nRead more about VulnerableCode https://vulnerablecode.readthedocs.org/\n\nVulnerableCode tech stack is Python, Django, PostgreSQL, nginx and Docker and\nseveral libraries.\n\n\nGetting started\n===============\n\nRun with Docker\n---------------\n\nFirst install docker, then run\n\n.. code:: bash\n\n git clone https://github.com/nexB/vulnerablecode.git && cd vulnerablecode\n make envfile\n docker compose build\n docker compose up -d\n docker compose run vulnerablecode ./manage.py import --list\n\nThen run an importer for nginx advisories (which is small)\n\n.. code:: bash\n\n docker compose exec vulnerablecode ./manage.py import nginx_importer\n docker compose exec vulnerablecode ./manage.py improve --all\n\nAt this point, the VulnerableCode app and API should be up and running with\nsome data at http://localhost\n\n\nPopulate VulnerableCode database\n--------------------------------\n\nVulnerableCode data collection works in two steps: importing data from multiple\nsources and then refining and improving how package and software vulnerabilities\nare related.\n\nTo run all importers and improvers use this\n\n.. code:: bash\n\n ./manage.py import --all\n\n.. code:: bash\n\n ./manage.py improve --all\n\n\nLocal development installation\n------------------------------\n\nOn a Debian system, use this\n\n.. code:: bash\n\n sudo apt-get install python3-venv python3-dev postgresql libpq-dev build-essential\n git clone https://github.com/nexB/vulnerablecode.git && cd vulnerablecode\n make dev envfile postgres\n make test\n source venv/bin/activate\n ./manage.py import nginx_importer\n ./manage.py improve --all\n make run\n\nAt this point, the VulnerableCode app and API is up at http://127.0.0.1:8001/\n\n\nLicense\n========\n\nCopyright (c) nexB Inc. and others. All rights reserved.\n\nVulnerableCode is a trademark of nexB Inc.\n\nSPDX-License-Identifier: Apache-2.0 AND CC-BY-SA-4.0\n\nVulnerableCode software is licensed under the Apache License version 2.0.\n\nVulnerableCode data is licensed collectively under CC-BY-SA-4.0.\n\nSee https://www.apache.org/licenses/LICENSE-2.0 for the license text.\n\nSee https://creativecommons.org/licenses/by-sa/4.0/legalcode for the license text.\n\nSee https://github.com/nexB/vulnerablecode for support or download. \n\nSee https://aboutcode.org for more information about nexB OSS projects.\n\n\nAcknowledgements, Funding, Support and Sponsoring\n=================================================\n\nThis project is funded, supported and sponsored by:\n\n- Generous support and contributions from users like you!\n- the European Commission NGI programme\n- the NLnet Foundation \n- the Swiss State Secretariat for Education, Research and Innovation (SERI)\n- Google, including the Google Summer of Code and the Google Seasons of Doc programmes\n- Mercedes-Benz Group\n- Microsoft and Microsoft Azure\n- AboutCode ASBL\n- nexB Inc. \n\n\n\n|europa| |dgconnect| \n\n|ngi| |nlnet| \n\n|aboutcode| |nexb|\n\n\n\nThis project was funded through the NGI0 PET Fund, a fund established by NLnet with financial\nsupport from the European Commission's Next Generation Internet programme, under the aegis of DG\nCommunications Networks, Content and Technology under grant agreement No 825310.\n\n|ngizeropet| https://nlnet.nl/project/VulnerableCode/\n\n\nThis project was funded through the NGI0 Discovery Fund, a fund established by NLnet with financial\nsupport from the European Commission's Next Generation Internet programme, under the aegis of DG\nCommunications Networks, Content and Technology under grant agreement No 825322.\n\n|ngidiscovery| https://nlnet.nl/project/vulnerabilitydatabase/\n\n\nThis project was funded through the NGI0 Core Fund, a fund established by NLnet with financial\nsupport from the European Commission's Next Generation Internet programme, under the aegis of DG\nCommunications Networks, Content and Technology under grant agreement No 101092990.\n\n|ngizerocore| https://nlnet.nl/project/VulnerableCode-enhancements/\n\n\nThis project is funded through the NGI0 Entrust Fund, a fund established by NLnet with financial\nsupport from the European Commission's Next Generation Internet programme, under the aegis of DG\nCommunications Networks, Content and Technology under grant agreement No 101069594.\n\n|ngizeroentrust| https://nlnet.nl/project/FederatedSoftwareMetadata/\n\n\nThis project was funded through the NGI0 Commons Fund, a fund established by NLnet with financial\nsupport from the European Commission's Next Generation Internet programme, under the aegis of DG\nCommunications Networks, Content and Technology under grant agreement No 101135429. Additional\nfunding is made available by the Swiss State Secretariat for Education, Research and Innovation\n(SERI). \n\n|ngizerocommons| |swiss| https://nlnet.nl/project/FederatedCodeNext/\n\nThis project was funded through the NGI0 Entrust Fund, a fund established by NLnet with financial\nsupport from the European Commission's Next Generation Internet programme, under the aegis of DG\nCommunications Networks, Content and Technology under grant agreement No 101069594. \n\n|ngizeroentrust| https://nlnet.nl/project/CRAVEX/\n\n\n\n.. |nlnet| image:: https://nlnet.nl/logo/banner.png\n :target: https://nlnet.nl\n :height: 50\n :alt: NLnet foundation logo\n\n.. |ngi| image:: https://ngi.eu/wp-content/uploads/thegem-logos/logo_8269bc6efcf731d34b6385775d76511d_1x.png\n :target: https://ngi.eu35\n :height: 50\n :alt: NGI logo\n\n.. |nexb| image:: https://nexb.com/wp-content/uploads/2022/04/nexB.svg\n :target: https://nexb.com\n :height: 30\n :alt: nexB logo\n\n.. |europa| image:: https://ngi.eu/wp-content/uploads/sites/77/2017/10/bandiera_stelle.png\n :target: http://ec.europa.eu/index_en.htm\n :height: 40\n :alt: Europa logo\n\n.. |aboutcode| image:: https://aboutcode.org/wp-content/uploads/2023/10/AboutCode.svg\n :target: https://aboutcode.org/\n :height: 30\n :alt: AboutCode logo\n\n.. |swiss| image:: https://www.sbfi.admin.ch/sbfi/en/_jcr_content/logo/image.imagespooler.png/1493119032540/logo.png\n :target: https://www.sbfi.admin.ch/sbfi/en/home/seri/seri.html\n :height: 40\n :alt: Swiss logo\n\n.. |dgconnect| image:: https://commission.europa.eu/themes/contrib/oe_theme/dist/ec/images/logo/positive/logo-ec--en.svg\n :target: https://commission.europa.eu/about-european-commission/departments-and-executive-agencies/communications-networks-content-and-technology_en\n :height: 40\n :alt: EC DG Connect logo\n\n.. |ngizerocore| image:: https://nlnet.nl/image/logos/NGI0_tag.svg\n :target: https://nlnet.nl/core\n :height: 40\n :alt: NGI Zero Core Logo\n\n.. |ngizerocommons| image:: https://nlnet.nl/image/logos/NGI0_tag.svg\n :target: https://nlnet.nl/commonsfund/\n :height: 40\n :alt: NGI Zero Commons Logo\n\n.. |ngizeropet| image:: https://nlnet.nl/image/logos/NGI0PET_tag.svg\n :target: https://nlnet.nl/PET\n :height: 40\n :alt: NGI Zero PET logo\n\n.. |ngizeroentrust| image:: https://nlnet.nl/image/logos/NGI0Entrust_tag.svg\n :target: https://nlnet.nl/entrust\n :height: 38\n :alt: NGI Zero Entrust logo\n\n.. |ngiassure| image:: https://nlnet.nl/image/logos/NGIAssure_tag.svg\n :target: https://nlnet.nl/image/logos/NGIAssure_tag.svg\n :height: 32\n :alt: NGI Assure logo\n\n.. |ngidiscovery| image:: https://nlnet.nl/image/logos/NGI0Discovery_tag.svg\n :target: https://nlnet.nl/discovery/\n :height: 40\n :alt: NGI Discovery logo\n",
"bugtrack_url": null,
"license": "Apache-2.0 AND CC-BY-SA-4.0",
"summary": "VulnerableCode is a free and open database of open source software package vulnerabilities because open source software vulnerabilities data and tools should be free and open source themselves.",
"version": "35.1.0",
"project_urls": {
"Homepage": "https://github.com/nexB/vulnerablecode"
},
"split_keywords": [
"open source",
" vulnerability",
" security",
" cve",
" purl",
" packageurl",
" dependency",
" package",
" vulnerability-db",
" sbom",
" sca"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "dc830fe5ca3bc96f9afc859b4640bac9d76cf822d449e18cf1ee0cd685c99422",
"md5": "e7ae67aabd3b9c9171da2e566599bb3a",
"sha256": "c7b6320769838c2df95311876db25c95de7ec866f9c0e3aeacba914d39595bc2"
},
"downloads": -1,
"filename": "vulnerablecode-35.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e7ae67aabd3b9c9171da2e566599bb3a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 2321684,
"upload_time": "2024-12-08T09:32:03",
"upload_time_iso_8601": "2024-12-08T09:32:03.448782Z",
"url": "https://files.pythonhosted.org/packages/dc/83/0fe5ca3bc96f9afc859b4640bac9d76cf822d449e18cf1ee0cd685c99422/vulnerablecode-35.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b09ade437f1091777a5d1b40146026cdb3e750a8826e0c5f1c2abd6b93f525c7",
"md5": "4b2a13d3d2b1dd2b5fda81e50c4efffc",
"sha256": "4c1669b82d80d282f614939cd6e19f7f68ce974ae2598a0c1afccee10a0c76a0"
},
"downloads": -1,
"filename": "vulnerablecode-35.1.0.tar.gz",
"has_sig": false,
"md5_digest": "4b2a13d3d2b1dd2b5fda81e50c4efffc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 12665827,
"upload_time": "2024-12-08T09:32:05",
"upload_time_iso_8601": "2024-12-08T09:32:05.457502Z",
"url": "https://files.pythonhosted.org/packages/b0/9a/de437f1091777a5d1b40146026cdb3e750a8826e0c5f1c2abd6b93f525c7/vulnerablecode-35.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-08 09:32:05",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nexB",
"github_project": "vulnerablecode",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "aboutcode.pipeline",
"specs": [
[
"==",
"0.1.0"
]
]
},
{
"name": "aiosignal",
"specs": [
[
"==",
"1.2.0"
]
]
},
{
"name": "alabaster",
"specs": [
[
"==",
"0.7.12"
]
]
},
{
"name": "asgiref",
"specs": [
[
"==",
"3.8.1"
]
]
},
{
"name": "asttokens",
"specs": [
[
"==",
"2.0.5"
]
]
},
{
"name": "async-timeout",
"specs": [
[
"==",
"4.0.2"
]
]
},
{
"name": "attrs",
"specs": [
[
"==",
"21.4.0"
]
]
},
{
"name": "Babel",
"specs": [
[
"==",
"2.9.1"
]
]
},
{
"name": "backcall",
"specs": [
[
"==",
"0.2.0"
]
]
},
{
"name": "bcrypt",
"specs": [
[
"==",
"3.2.0"
]
]
},
{
"name": "beautifulsoup4",
"specs": [
[
"==",
"4.10.0"
]
]
},
{
"name": "binaryornot",
"specs": [
[
"==",
"0.4.4"
]
]
},
{
"name": "black",
"specs": [
[
"==",
"22.3.0"
]
]
},
{
"name": "bleach",
"specs": [
[
"==",
"6.1.0"
]
]
},
{
"name": "boolean.py",
"specs": [
[
"==",
"4.0"
]
]
},
{
"name": "certifi",
"specs": [
[
"==",
"2024.7.4"
]
]
},
{
"name": "cffi",
"specs": [
[
"==",
"1.15.0"
]
]
},
{
"name": "chardet",
"specs": [
[
"==",
"4.0.0"
]
]
},
{
"name": "charset-normalizer",
"specs": [
[
"==",
"2.0.12"
]
]
},
{
"name": "click",
"specs": [
[
"==",
"8.1.2"
]
]
},
{
"name": "coreapi",
"specs": [
[
"==",
"2.3.3"
]
]
},
{
"name": "coreschema",
"specs": [
[
"==",
"0.0.4"
]
]
},
{
"name": "cryptography",
"specs": [
[
"==",
"43.0.1"
]
]
},
{
"name": "crispy-bootstrap4",
"specs": [
[
"==",
"2024.1"
]
]
},
{
"name": "cwe2",
"specs": [
[
"==",
"3.0.0"
]
]
},
{
"name": "dateparser",
"specs": [
[
"==",
"1.1.1"
]
]
},
{
"name": "decorator",
"specs": [
[
"==",
"5.1.1"
]
]
},
{
"name": "defusedxml",
"specs": [
[
"==",
"0.7.1"
]
]
},
{
"name": "distro",
"specs": [
[
"==",
"1.7.0"
]
]
},
{
"name": "Django",
"specs": [
[
"==",
"4.2.16"
]
]
},
{
"name": "django-crispy-forms",
"specs": [
[
"==",
"2.3"
]
]
},
{
"name": "django-environ",
"specs": [
[
"==",
"0.11.2"
]
]
},
{
"name": "django-filter",
"specs": [
[
"==",
"24.3"
]
]
},
{
"name": "django-widget-tweaks",
"specs": [
[
"==",
"1.5.0"
]
]
},
{
"name": "djangorestframework",
"specs": [
[
"==",
"3.15.2"
]
]
},
{
"name": "doc8",
"specs": [
[
"==",
"0.11.1"
]
]
},
{
"name": "docopt",
"specs": [
[
"==",
"0.6.2"
]
]
},
{
"name": "docutils",
"specs": [
[
"==",
"0.17.1"
]
]
},
{
"name": "drf-spectacular",
"specs": [
[
"==",
"0.24.2"
]
]
},
{
"name": "drf-spectacular-sidecar",
"specs": [
[
"==",
"2022.10.1"
]
]
},
{
"name": "executing",
"specs": [
[
"==",
"0.8.3"
]
]
},
{
"name": "fetchcode",
"specs": [
[
"==",
"0.6.0"
]
]
},
{
"name": "freezegun",
"specs": [
[
"==",
"1.2.1"
]
]
},
{
"name": "frozenlist",
"specs": [
[
"==",
"1.3.0"
]
]
},
{
"name": "gitdb",
"specs": [
[
"==",
"4.0.9"
]
]
},
{
"name": "GitPython",
"specs": [
[
"==",
"3.1.41"
]
]
},
{
"name": "gunicorn",
"specs": [
[
"==",
"23.0.0"
]
]
},
{
"name": "idna",
"specs": [
[
"==",
"3.3"
]
]
},
{
"name": "imagesize",
"specs": [
[
"==",
"1.3.0"
]
]
},
{
"name": "importlib-metadata",
"specs": [
[
"==",
"4.11.3"
]
]
},
{
"name": "iniconfig",
"specs": [
[
"==",
"1.1.1"
]
]
},
{
"name": "ipython",
"specs": [
[
"==",
"8.10.0"
]
]
},
{
"name": "isort",
"specs": [
[
"==",
"5.10.1"
]
]
},
{
"name": "itypes",
"specs": [
[
"==",
"1.2.0"
]
]
},
{
"name": "jedi",
"specs": [
[
"==",
"0.18.1"
]
]
},
{
"name": "Jinja2",
"specs": [
[
"==",
"3.1.4"
]
]
},
{
"name": "jsonschema",
"specs": [
[
"==",
"3.2.0"
]
]
},
{
"name": "license-expression",
"specs": [
[
"==",
"30.3.1"
]
]
},
{
"name": "lxml",
"specs": [
[
"==",
"4.9.1"
]
]
},
{
"name": "Markdown",
"specs": [
[
"==",
"3.3.4"
]
]
},
{
"name": "markdown-it-py",
"specs": [
[
"==",
"3.0.0"
]
]
},
{
"name": "MarkupSafe",
"specs": [
[
"==",
"2.1.1"
]
]
},
{
"name": "matplotlib-inline",
"specs": [
[
"==",
"0.1.3"
]
]
},
{
"name": "multidict",
"specs": [
[
"==",
"6.0.2"
]
]
},
{
"name": "mypy-extensions",
"specs": [
[
"==",
"0.4.3"
]
]
},
{
"name": "packageurl-python",
"specs": [
[
"==",
"0.15.6"
]
]
},
{
"name": "packaging",
"specs": [
[
"==",
"21.3"
]
]
},
{
"name": "paramiko",
"specs": [
[
"==",
"3.4.0"
]
]
},
{
"name": "parso",
"specs": [
[
"==",
"0.8.3"
]
]
},
{
"name": "pathspec",
"specs": [
[
"==",
"0.9.0"
]
]
},
{
"name": "pbr",
"specs": [
[
"==",
"5.8.1"
]
]
},
{
"name": "pexpect",
"specs": [
[
"==",
"4.8.0"
]
]
},
{
"name": "pickleshare",
"specs": [
[
"==",
"0.7.5"
]
]
},
{
"name": "platformdirs",
"specs": [
[
"==",
"2.5.1"
]
]
},
{
"name": "pluggy",
"specs": [
[
"==",
"1.0.0"
]
]
},
{
"name": "pprintpp",
"specs": [
[
"==",
"0.4.0"
]
]
},
{
"name": "prompt-toolkit",
"specs": [
[
"==",
"3.0.30"
]
]
},
{
"name": "psycopg2-binary",
"specs": [
[
"==",
"2.9.3"
]
]
},
{
"name": "ptyprocess",
"specs": [
[
"==",
"0.7.0"
]
]
},
{
"name": "pure-eval",
"specs": [
[
"==",
"0.2.2"
]
]
},
{
"name": "py",
"specs": [
[
"==",
"1.11.0"
]
]
},
{
"name": "pycodestyle",
"specs": [
[
"==",
"2.8.0"
]
]
},
{
"name": "pycparser",
"specs": [
[
"==",
"2.21"
]
]
},
{
"name": "Pygments",
"specs": [
[
"==",
"2.15.0"
]
]
},
{
"name": "PyNaCl",
"specs": [
[
"==",
"1.5.0"
]
]
},
{
"name": "pyparsing",
"specs": [
[
"==",
"3.0.7"
]
]
},
{
"name": "pyrsistent",
"specs": [
[
"==",
"0.18.1"
]
]
},
{
"name": "pytest",
"specs": [
[
"==",
"7.1.1"
]
]
},
{
"name": "pytest-django",
"specs": [
[
"==",
"4.5.2"
]
]
},
{
"name": "python-dateutil",
"specs": [
[
"==",
"2.8.2"
]
]
},
{
"name": "python-dotenv",
"specs": [
[
"==",
"0.20.0"
]
]
},
{
"name": "pytz",
"specs": [
[
"==",
"2022.1"
]
]
},
{
"name": "PyYAML",
"specs": [
[
"==",
"6.0.1"
]
]
},
{
"name": "requests",
"specs": [
[
"==",
"2.32.0"
]
]
},
{
"name": "restructuredtext-lint",
"specs": [
[
"==",
"1.4.0"
]
]
},
{
"name": "saneyaml",
"specs": [
[
"==",
"0.6.0"
]
]
},
{
"name": "semantic-version",
"specs": [
[
"==",
"2.9.0"
]
]
},
{
"name": "six",
"specs": [
[
"==",
"1.16.0"
]
]
},
{
"name": "smmap",
"specs": [
[
"==",
"5.0.0"
]
]
},
{
"name": "snowballstemmer",
"specs": [
[
"==",
"2.2.0"
]
]
},
{
"name": "soupsieve",
"specs": [
[
"==",
"2.3.2"
]
]
},
{
"name": "Sphinx",
"specs": [
[
"==",
"4.5.0"
]
]
},
{
"name": "sphinxcontrib-applehelp",
"specs": [
[
"==",
"1.0.2"
]
]
},
{
"name": "sphinx-autobuild",
"specs": [
[
"==",
"2024.10.3"
]
]
},
{
"name": "sphinxcontrib-devhelp",
"specs": [
[
"==",
"1.0.2"
]
]
},
{
"name": "sphinxcontrib-django2",
"specs": [
[
"==",
"1.5"
]
]
},
{
"name": "sphinxcontrib-htmlhelp",
"specs": [
[
"==",
"2.0.0"
]
]
},
{
"name": "sphinxcontrib-jsmath",
"specs": [
[
"==",
"1.0.1"
]
]
},
{
"name": "sphinxcontrib-qthelp",
"specs": [
[
"==",
"1.0.3"
]
]
},
{
"name": "sphinxcontrib-serializinghtml",
"specs": [
[
"==",
"1.1.5"
]
]
},
{
"name": "sphinx-rtd-theme",
"specs": [
[
"==",
"1.0.0"
]
]
},
{
"name": "sqlparse",
"specs": [
[
"==",
"0.5.0"
]
]
},
{
"name": "stack-data",
"specs": [
[
"==",
"0.2.0"
]
]
},
{
"name": "stevedore",
"specs": [
[
"==",
"3.5.0"
]
]
},
{
"name": "texttable",
"specs": [
[
"==",
"1.6.4"
]
]
},
{
"name": "toml",
"specs": [
[
"==",
"0.10.2"
]
]
},
{
"name": "tomli",
"specs": [
[
"==",
"2.0.1"
]
]
},
{
"name": "traitlets",
"specs": [
[
"==",
"5.1.1"
]
]
},
{
"name": "typing_extensions",
"specs": [
[
"==",
"4.1.1"
]
]
},
{
"name": "univers",
"specs": [
[
"==",
"30.12.0"
]
]
},
{
"name": "urllib3",
"specs": [
[
"==",
"1.26.19"
]
]
},
{
"name": "wcwidth",
"specs": [
[
"==",
"0.2.5"
]
]
},
{
"name": "websocket-client",
"specs": [
[
"==",
"0.59.0"
]
]
},
{
"name": "yarl",
"specs": [
[
"==",
"1.7.2"
]
]
},
{
"name": "zipp",
"specs": [
[
"==",
"3.19.1"
]
]
}
],
"lcname": "vulnerablecode"
}