Interface da API C em Python
qiskit.capi
Este módulo oferece interações entre o espaço de dados do Python e a API C pública do Qiskit.
Para obter documentação sobre a própria API C, consulte a API C do Qiskit.
Interação com o sistema de compilação
O pacote Python qiskit contém todos os arquivos de cabeçalho da API C do Qiskit e uma biblioteca de objetos compartilhados compilada que inclui todas as funções da API C. Você pode acessar as localizações desses dois objetos usando as funções get_include() e, get_lib() respectivamente.
Normalmente, você não deve vincular diretamente à saída de get_lib(), a menos que saiba o que está fazendo. Em particular, a vinculação direta a esse objeto não é uma maneira segura de criar um módulo de extensão distribuível para o Python que utilize a API C do Qiskit.
No entanto, se você compreender todas as ressalvas relacionadas à ligação direta, poderá usar essa função para obter a localização da biblioteca.
get_include
qiskit.capi.get_include()
Obtenha o diretório que contém o arquivo de qiskit.h cabeçalho C e os arquivos auxiliares qiskit/*.h internos.
Ao usar o Qiskit como dependência de compilação, geralmente é recomendável incluir esse diretório no caminho de busca de inclusões do seu compilador, como por exemplo:
qiskit_include=$(python -c 'import qiskit.capi; print(qiskit.capi.get_include())')
gcc -I "$qiskit_include" my_bin.c -o my_binA localização desse diretório dentro dos dados do pacote Qiskit não é fixa e pode variar entre as versões do Qiskit. Você deve sempre usar essa função para recuperar o diretório.
Retorna
um caminho absoluto para o diretório de arquivos de inclusão do pacote.
Tipo de retorno
get_lib
qiskit.capi.get_lib()
Obtenha o caminho para uma biblioteca de objeto compartilhado que contenha todos os símbolos exportados da API C.
Normalmente, você não deve criar uma ligação direta com este objeto. Em particular, vincular diretamente a esse objeto não é uma maneira segura de criar um módulo de extensão do Python que utilize a API C do Qiskit.
Se desejar, você pode usar ctypes para acessar os símbolos da API C contidos neste objeto; no entanto, esteja ciente de que os tipos da API C declarados no arquivo de cabeçalho não são intercambiáveis com os objetos do Python que lhes correspondem.
A localização e o nome deste arquivo dentro dos dados do pacote Qiskit não são fixos e podem mudar entre as versões do Qiskit.
Retorna
um caminho absoluto para a biblioteca de objeto compartilhado que contém os símbolos exportados da API C.
Tipo de retorno
Ligações nativas à API C
Além disso, este módulo contém ctypes ligações a todos os tipos e funções da API C do Qiskit. Eles estão disponíveis como atributos de módulo, qiskit.capi com o mesmo nome que possuem na API C. Por exemplo, qiskit.capi.qk_circuit_new corresponde a qk_circuit_new().
qiskit.capi.LIB
Tipo: ctypes.PyDLL
Um ctypes wrapper em torno da biblioteca que contém a API C do Qiskit.
Isso é fornecido para fins de completude, embora você possa acessar todas as funções, estruturas e enumerações diretamente a partir do qiskit.capi objeto do módulo.
Estruturas
Os tipos de concreto struct utilizados na API C são declarados como tipos correspondentes ctypes.Structure com o atributo “completo _fields_ ”. É possível instanciá-los e inspecioná-los diretamente.
Os ponteiros opacos são representados por um ctypes.Structure tipo sem nenhum _fields_ atributo definido e não podem ser instanciados. Normalmente, eles são retornados por funções envoltas em um ctypes.POINTER wrapper de tipo.
Enumerações
Nos casos em que a API C possui uma enumeração, este módulo declara uma Pythonenum.Enum cujos valores correspondem a ctypes um tipo inteiro primitivo. O objeto do tipo Python -space Enum ainda é um objeto de encapsulamento Python; portanto, ctypes funções que retornam uma enumeração retornarão o valor numérico bruto, e não o valor no Enum. Os objetos do espaço Enum Python são declarados para facilitar a construção de chamadas.
Funções
Todas as funções da biblioteca pública na API C do Qiskit são totalmente tipadas e reexportadas na raiz do módulo com o mesmo nome que possuem em C. Você também pode acessar as funções a partir de LIB, se preferir.
Observe que funções apenas de cabeçalho, como qk_import(), não são exportadas, pois não fazem parte do objeto da biblioteca da API C.