Skip to content

Add option to output the number of unique dependency #386

@MarcBresson

Description

@MarcBresson

Describe the feature

This would give the number of library we could lose if we delete one dependency. For instance:

captum==0.7.0 (unique, 10 unique dependencies)
├── matplotlib [required: Any, installed: 3.8.4] (unique, 6 unique dependencies)
│   ├── contourpy [required: >=1.0.1, installed: 1.2.1] (unique)
│   │   └── numpy [required: >=1.20, installed: 1.24.4]
│   ├── cycler [required: >=0.10, installed: 0.12.1] (unique)
│   ├── fonttools [required: >=4.22.0, installed: 4.53.0] (unique)
│   ├── kiwisolver [required: >=1.3.1, installed: 1.4.5] (unique)
│   ├── numpy [required: >=1.21, installed: 1.24.4]
│   ├── packaging [required: >=20.0, installed: 24.1]
│   ├── Pillow [required: >=8, installed: 9.5.0] (unique)
│   ├── pyparsing [required: >=2.3.1, installed: 3.1.2] (unique)
│   └── python-dateutil [required: >=2.7, installed: 2.9.0.post0]
│       └── six [required: >=1.5, installed: 1.16.0]
├── numpy [required: Any, installed: 1.24.4]
├── torch [required: >=1.6, installed: 1.13.0] (unique, 1 unique dependency)
│   └── typing_extensions [required: Any, installed: 4.12.2] (unique)
└── tqdm [required: Any, installed: 4.66.4] (unique)
category-encoders==2.6.0 (unique, 8 unique dependencies)  # patsy, pytz, pandas, scipy are only defined in this one
├── numpy [required: >=1.14.0, installed: 1.24.4]
├── pandas [required: >=1.0.5, installed: 1.5.3]
│   ├── numpy [required: >=1.21.0, installed: 1.24.4]
│   ├── python-dateutil [required: >=2.8.1, installed: 2.9.0.post0]
│   │   └── six [required: >=1.5, installed: 1.16.0]
│   └── pytz [required: >=2020.1, installed: 2024.1]
├── patsy [required: >=0.5.1, installed: 0.5.6]
│   ├── numpy [required: >=1.4, installed: 1.24.4]
│   └── six [required: Any, installed: 1.16.0]
├── scikit-learn [required: >=0.20.0, installed: 1.1.3] (unique, 2 unique dependencies)
│   ├── joblib [required: >=1.0.0, installed: 1.2.0] (unique)
│   ├── numpy [required: >=1.17.3, installed: 1.24.4]
│   ├── scipy [required: >=1.3.2, installed: 1.8.1]
│   │   └── numpy [required: >=1.17.3,<1.25.0, installed: 1.24.4]
│   └── threadpoolctl [required: >=2.0.0, installed: 3.5.0] (unique)
├── scipy [required: >=1.0.0, installed: 1.8.1]
│   └── numpy [required: >=1.17.3,<1.25.0, installed: 1.24.4]
└── statsmodels [required: >=0.9.0, installed: 0.14.2] (unique)
    ├── numpy [required: >=1.22.3, installed: 1.24.4]
    ├── packaging [required: >=21.3, installed: 24.1]
    ├── pandas [required: >=1.4,!=2.1.0, installed: 1.5.3]
    │   ├── numpy [required: >=1.21.0, installed: 1.24.4]
    │   ├── python-dateutil [required: >=2.8.1, installed: 2.9.0.post0]
    │   │   └── six [required: >=1.5, installed: 1.16.0]
    │   └── pytz [required: >=2020.1, installed: 2024.1]
    ├── patsy [required: >=0.5.6, installed: 0.5.6]
    │   ├── numpy [required: >=1.4, installed: 1.24.4]
    │   └── six [required: Any, installed: 1.16.0]
    └── scipy [required: >=1.8,!=1.9.2, installed: 1.8.1]
        └── numpy [required: >=1.17.3,<1.25.0, installed: 1.24.4]

It can be simply calculated : at each node, we take the set of libraries under the node and we subtract it to the set of libraries in the other nodes. The difference in length between the result of the operation and the length of the set of libraries under the node gives the number of unique dependencies.

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions