Qiskit / qiskit-metapackage

Qiskit is an open-source SDK for working with quantum computers at the level of circuits, algorithms, and application modules.
https://qiskit.org
Apache License 2.0
3.03k stars 749 forks source link

add documentation about dependencies #270

Closed ajavadia closed 5 years ago

ajavadia commented 5 years ago

We should have a central place in the documentation that lists all the packages on which Qiskit depends on. This info should be consolidated from the requirements.txt files of terra, ignis, aer, aqua. It should be updated with each release.

The requirements-dev.txt files list the extra dependencies needed for developers of qiskit, we can list those separately.

mtreinish commented 5 years ago

You want to have a doc that includes a list of requirements? That doesn't seem like something that should be written in a doc, it will go stale very quickly. It's also a really big list (mostly because of aqua):

qiskit-terra==0.8.0                Software for developing quantum computing programs
├── jsonschema<2.7,>=2.6           An implementation of JSON Schema validation for Python
├── marshmallow-polyfield<4,>=3.2  An unofficial extension to Marshmallow to allow for polymorphic fields
│   └── marshmallow>=2.0.0         A lightweight library for converting complex datatypes to and from native Python datatypes.
├── marshmallow<3,>=2.17.0         A lightweight library for converting complex datatypes to and from native Python datatypes.
├── networkx>=2.2                  Python package for creating and manipulating graphs and networks
│   └── decorator>=4.3.0           Better living through Python with decorators
├── numpy>=1.13                    NumPy is the fundamental package for array computing with Python.
├── pillow>=4.2.1                  Python Imaging Library (Fork)
├── ply>=3.10                      Python Lex & Yacc
├── psutil>=5                      Cross-platform lib for process and system monitoring in Python.
├── pylatexenc>=1.4                Python library for encoding unicode to latex and for parsing LaTeX to generate unicode text
├── scipy>=1.0                     SciPy: Scientific Library for Python
│   └── numpy>=1.8.2               NumPy is the fundamental package for array computing with Python.
└── sympy>=1.3                     Computer algebra system (CAS) in Python
    └── mpmath>=0.19               Python library for arbitrary-precision floating-point arithmetic

qiskit-aer==0.2.0  Qiskit Aer - High performance simulators for Qiskit
└── numpy>=1.13    NumPy is the fundamental package for array computing with Python.

qiskit-ibmq-provider==0.2.1            Qiskit provider for accessing the quantum devices and simulators at IBMQ
├── qiskit-terra>=0.8.0                Software for developing quantum computing programs
├── requests-ntlm>=1.1.0               This package allows for HTTP NTLM authentication using the requests library.
│   ├── cryptography>=1.3              cryptography is a package which provides cryptographic recipes and primitives to Python developers.
│   │   ├── asn1crypto>=0.21.0         Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP
│   │   ├── cffi!=1.11.3,>=1.8         Foreign Function Interface for Python calling C code.
│   │   │   └── pycparser              C parser in Python
│   │   └── six>=1.4.1                 Python 2 and 3 compatibility utilities
│   ├── ntlm-auth>=1.0.2               Creates NTLM authentication structures
│   └── requests>=2.0.0                Python HTTP for Humans.
│       ├── certifi>=2017.4.17         Python package for providing Mozilla's CA Bundle.
│       ├── chardet<3.1.0,>=3.0.2      Universal encoding detector for Python 2 and 3
│       ├── idna<2.9,>=2.5             Internationalized Domain Names in Applications (IDNA)
│       └── urllib3<1.25,>=1.21.1      HTTP library with thread-safe connection pooling, file post, and more.
├── requests>=2.19                     Python HTTP for Humans.
│   ├── certifi>=2017.4.17             Python package for providing Mozilla's CA Bundle.
│   ├── chardet<3.1.0,>=3.0.2          Universal encoding detector for Python 2 and 3
│   ├── idna<2.9,>=2.5                 Internationalized Domain Names in Applications (IDNA)
│   └── urllib3<1.25,>=1.21.1          HTTP library with thread-safe connection pooling, file post, and more.
└── websockets<8,>=7                   An implementation of the WebSocket Protocol (RFC 6455 & 7692)

qiskit-ignis==0.1.1                    Qiskit tools for quantum information science
├── numpy>=1.13                        NumPy is the fundamental package for array computing with Python.
├── qiskit-terra>=0.8.0                Software for developing quantum computing programs
└── scipy!=0.19.1,>=0.19               SciPy: Scientific Library for Python
    └── numpy>=1.8.2                   NumPy is the fundamental package for array computing with Python.

qiskit-aqua==0.5.0                         Qiskit Aqua: An extensible library of quantum computing algorithms
├── cvxopt                                 Convex optimization package
├── dlx                                    Implementation of Donald Knuth's Dancing Links algorithm.
├── docplex                                The IBM Decision Optimization CPLEX Modeling for Python
│   ├── docloud>=1.0.315                   The IBM Decision Optimization on Cloud Python client
│   │   ├── requests                       Python HTTP for Humans.
│   │   │   ├── certifi>=2017.4.17         Python package for providing Mozilla's CA Bundle.
│   │   │   ├── chardet<3.1.0,>=3.0.2      Universal encoding detector for Python 2 and 3
│   │   │   ├── idna<2.9,>=2.5             Internationalized Domain Names in Applications (IDNA)
│   │   │   └── urllib3<1.25,>=1.21.1      HTTP library with thread-safe connection pooling, file post, and more.
│   │   └── six                            Python 2 and 3 compatibility utilities
│   ├── requests                           Python HTTP for Humans.
│   │   ├── certifi>=2017.4.17             Python package for providing Mozilla's CA Bundle.
│   │   ├── chardet<3.1.0,>=3.0.2          Universal encoding detector for Python 2 and 3
│   │   ├── idna<2.9,>=2.5                 Internationalized Domain Names in Applications (IDNA)
│   │   └── urllib3<1.25,>=1.21.1          HTTP library with thread-safe connection pooling, file post, and more.
│   └── six                                Python 2 and 3 compatibility utilities
├── fastdtw                                Dynamic Time Warping (DTW) algorithm with an O(N) time and memory complexity.
│   └── numpy                              NumPy is the fundamental package for array computing with Python.
├── jsonschema<2.7,>=2.6                   An implementation of JSON Schema validation for Python
├── numpy>=1.13                            NumPy is the fundamental package for array computing with Python.
├── psutil>=5                              Cross-platform lib for process and system monitoring in Python.
├── pyeda                                  Python Electronic Design Automation
├── qiskit-ignis<0.2,>=0.1.0               Qiskit tools for quantum information science
├── qiskit-terra<0.9,>=0.8.0               Software for developing quantum computing programs
├── quandl                                 Package for quandl API access
│   ├── inflection>=0.3.1                  A port of Ruby on Rails inflector to Python
│   ├── more-itertools<=5.0.0              More routines for operating on iterables, beyond itertools
│   │   └── six<2.0.0,>=1.0.0              Python 2 and 3 compatibility utilities
│   ├── ndg-httpsclient                    Provides enhanced HTTPS support for httplib and urllib2 using PyOpenSSL
│   │   ├── PyOpenSSL                      Python wrapper module around the OpenSSL library
│   │   │   ├── cryptography>=2.3          cryptography is a package which provides cryptographic recipes and primitives to Python developers.
│   │   │   │   ├── asn1crypto>=0.21.0     Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP
│   │   │   │   ├── cffi!=1.11.3,>=1.8     Foreign Function Interface for Python calling C code.
│   │   │   │   │   └── pycparser          C parser in Python
│   │   │   │   └── six>=1.4.1             Python 2 and 3 compatibility utilities
│   │   │   └── six>=1.5.2                 Python 2 and 3 compatibility utilities
│   │   └── pyasn1>=0.1.1                  ASN.1 types and codecs
│   ├── numpy>=1.8                         NumPy is the fundamental package for array computing with Python.
│   ├── pandas>=0.14                       Powerful data structures for data analysis, time series, and statistics
│   │   ├── numpy>=1.12.0                  NumPy is the fundamental package for array computing with Python.
│   │   ├── python-dateutil>=2.5.0         Extensions to the standard Python datetime module
│   │   │   └── six>=1.5                   Python 2 and 3 compatibility utilities
│   │   └── pytz>=2011k                    World timezone definitions, modern and historical
│   ├── pyOpenSSL                          Python wrapper module around the OpenSSL library
│   │   ├── cryptography>=2.3              cryptography is a package which provides cryptographic recipes and primitives to Python developers.
│   │   │   ├── asn1crypto>=0.21.0         Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP
│   │   │   ├── cffi!=1.11.3,>=1.8         Foreign Function Interface for Python calling C code.
│   │   │   │   └── pycparser              C parser in Python
│   │   │   └── six>=1.4.1                 Python 2 and 3 compatibility utilities
│   │   └── six>=1.5.2                     Python 2 and 3 compatibility utilities
│   ├── pyasn1                             ASN.1 types and codecs
│   ├── python-dateutil                    Extensions to the standard Python datetime module
│   │   └── six>=1.5                       Python 2 and 3 compatibility utilities
│   ├── requests>=2.7.0                    Python HTTP for Humans.
│   │   ├── certifi>=2017.4.17             Python package for providing Mozilla's CA Bundle.
│   │   ├── chardet<3.1.0,>=3.0.2          Universal encoding detector for Python 2 and 3
│   │   ├── idna<2.9,>=2.5                 Internationalized Domain Names in Applications (IDNA)
│   │   └── urllib3<1.25,>=1.21.1          HTTP library with thread-safe connection pooling, file post, and more.
│   └── six                                Python 2 and 3 compatibility utilities
├── scikit-learn>=0.20.0                   A set of python modules for machine learning and data mining
│   ├── joblib>=0.11                       Lightweight pipelining: using Python functions as pipeline jobs.
│   ├── numpy>=1.11.0                      NumPy is the fundamental package for array computing with Python.
│   └── scipy>=0.17.0                      SciPy: Scientific Library for Python
│       └── numpy>=1.8.2                   NumPy is the fundamental package for array computing with Python.
├── scipy!=0.19.1,>=0.19                   SciPy: Scientific Library for Python
│   └── numpy>=1.8.2                       NumPy is the fundamental package for array computing with Python.
├── setuptools>=40.1.0                     Easily download, build, install, upgrade, and uninstall Python packages
├── sympy>=1.3                             Computer algebra system (CAS) in Python
│   └── mpmath>=0.19                       Python library for arbitrary-precision floating-point arithmetic
└── torch                                  Tensors and Dynamic neural networks in Python with strong GPU acceleration
    └── numpy                              NumPy is the fundamental package for array computing with Python.

There are overlaps but I only removed the qiskit sub-dependencies when there is a cross project dependency (ie ignis depends on terra). It's also worth pointing out that pip still doesn't have a dep solver so overlaps are a potential point of concern with a list this big.

ajavadia commented 5 years ago

Yeah you're right. This is going to be hard to maintain. This was an external request, but I now agree that the docs aren't the right place. Something like pydeptree might be an option