# Getting specs using catalyst

**URL:** https://discuss.pennylane.ai/t/getting-specs-using-catalyst/3845
**Category:** PennyLane Development
**Created:** [December 22, 2023, 4:35pm UTC](https://discuss.pennylane.ai/t/getting-specs-using-catalyst/3845 "2023-12-22T16:35:35Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![Mushahid\_Khan](https://yyz2.discourse-cdn.com/flex012/user_avatar/discuss.pennylane.ai/mushahid_khan/32/1591_2.png) [@Mushahid\_Khan](https://discuss.pennylane.ai/u/Mushahid_Khan)
#### Post date: [December 22, 2023, 4:35pm UTC](https://discuss.pennylane.ai/t/getting-specs-using-catalyst/3845/1 "2023-12-22T16:35:36Z")

</div>

Hi,

I am trying to get the specs for a catalyst program but i am getting an error when i try to get the specs. Here is the code. What could be causing this?:

```auto
from catalyst import qjit, measure
import pennylane as qml
from jax import numpy as jnp
@qjit
@qml.qnode(qml.device("lightning.qubit", wires=5))
def circuit():
  qml.CNOT([0,1])
  measure(0)
  return qml.expval(qml.PauliZ(0))

qml.specs(circuit)()

```

* * *

AttributeError Traceback (most recent call last)  
 in \<cell line: 12\>()  
10 return qml.expval(qml.PauliZ(0))  
11  
—\> 12 qml.specs(circuit)()

/usr/local/lib/python3.10/dist-packages/pennylane/transforms/specs.py in specs\_qnode(\*args, \*\*kwargs)  
112 qnode.max\_expansion = initial\_max\_expansion if max\_expansion is None else max\_expansion  
113 qnode.expansion\_strategy = expansion\_strategy or initial\_expansion\_strategy  
 → 114 qnode.construct(args, kwargs)  
115 finally:  
116 qnode.max\_expansion = initial\_max\_expansion

AttributeError: ‘QJIT’ object has no attribute ‘construct’

---

<div class="post-metadata">

### Author: ![Ivana\_at\_Xanadu](https://yyz2.discourse-cdn.com/flex012/user_avatar/discuss.pennylane.ai/ivana_at_xanadu/32/1852_2.png) [@Ivana\_at\_Xanadu](https://discuss.pennylane.ai/u/Ivana_at_Xanadu)
#### Post date: [January 10, 2024, 10:39am UTC](https://discuss.pennylane.ai/t/getting-specs-using-catalyst/3845/2 "2024-01-10T10:39:19Z")

</div>

Hey, @Mushahid_Khan. So `qjit` gives you a [QJIT object](https://docs.pennylane.ai/projects/catalyst/en/stable/code/api/catalyst.qjit.html), but `qml.specs` needs to be run on a [QNode](https://docs.pennylane.ai/en/stable/code/api/pennylane.specs.html).  
I think the best you can do to get the specs is to forgo the qjit-ing on the circuit you’re looking at. With the most recent (this week’s) PennyLane and Catalyst versions ([v0.34 and v0.4](https://pennylane.ai/blog/2024/01/pennylane-release-0.34/)), you can do this:

```auto
import pennylane as qml
from catalyst import measure

@qml.qnode(qml.device("lightning.qubit", wires=5))
def circuit():
  qml.CNOT([0,1])
  qml.measure(0)
  return qml.expval(qml.PauliZ(0))

qml.specs(circuit)()

```

But if you’d want to qjit without getting to the specs, your circuit would look like this:

```auto
@qml.qjit
@qml.qnode(qml.device("lightning.qubit", wires=5))
def circuit():
  qml.CNOT([0,1])
  measure(0)
  return qml.expval(qml.PauliZ(0))

```

Is there a specific reason you’d want to have the specs while running qjit?
